Philipp Hörist pushed to branch master at gajim / gajim


Commits:
3545b2bc by Philipp Hörist at 2025-03-15T11:13:18+01:00
feat: Store/Restore the size of dialogs

- - - - -


2 changed files:

- gajim/common/settings.py
- gajim/gtk/widgets.py


Changes:

=====================================
gajim/common/settings.py
=====================================
@@ -71,7 +71,7 @@
 
 log = logging.getLogger('gajim.c.settings')
 
-CURRENT_USER_VERSION = 6
+CURRENT_USER_VERSION = 7
 
 CREATE_SQL = '''
     CREATE TABLE settings (
@@ -90,6 +90,7 @@
     INSERT INTO settings(name, settings) VALUES ('proxies', '{proxies}');
     INSERT INTO settings(name, settings) VALUES ('plugins', '{{}}');
     INSERT INTO settings(name, settings) VALUES ('workspaces', '{workspaces}');
+    INSERT INTO settings(name, settings) VALUES ('window_sizes', '{{}}');
 
     PRAGMA user_version={version};
     '''.format(status=json.dumps(STATUS_PRESET_EXAMPLES),  # noqa: UP032
@@ -116,6 +117,7 @@ class SettingsDictT(TypedDict):
     soundevents: dict[str, dict[str, Any]]
     status_presets: dict[str, dict[str, str]]
     proxies: dict[str, dict[str, Any]]
+    window_sizes: dict[str, tuple[int, int]]
 
 
 class Settings:
@@ -401,6 +403,13 @@ def _migrate(self) -> None:
 
             self._set_user_version(6)
 
+        if version < 7:
+            sql = '''INSERT INTO settings(name, settings)
+                     VALUES ('window_sizes', '{}')'''
+            self._con.execute(sql)
+            self._settings['window_sizes'] = {}
+            self._set_user_version(7)
+
     def close(self) -> None:
         log.info('Close settings')
         self._con.commit()
@@ -535,6 +544,13 @@ def set_app_setting(self,
 
     set = set_app_setting
 
+    def set_window_size(self, window_name: str, width: int, height: int) -> 
None:
+        self._settings['window_sizes'][window_name] = (width, height)
+        self._commit_settings('window_sizes')
+
+    def get_window_size(self, window_name: str) -> tuple[int, int] | None:
+        return self._settings['window_sizes'].get(window_name)
+
     def get_plugin_setting(self, plugin: str, setting: str) -> SETTING_TYPE:
         if setting not in PLUGIN_SETTINGS:
             raise ValueError(f'Invalid plugin setting: {setting}')


=====================================
gajim/gtk/widgets.py
=====================================
@@ -42,6 +42,10 @@ def __init__(
 
         SignalManager.__init__(self)
 
+        window_size = app.settings.get_window_size(name)
+        if window_size is not None:
+            default_width, default_height = window_size
+
         self.window = Gtk.ApplicationWindow(
             application=app.app,
             resizable=True,
@@ -120,6 +124,7 @@ def __on_key_pressed(
 
     def __on_close_request(self, _widget: Gtk.ApplicationWindow) -> bool:
         log.debug("Initiate Cleanup: %s", self.window.get_name())
+        self._store_win_size()
         self._disconnect_all()
         self._cleanup()
         app.check_finalize(self.window)
@@ -132,6 +137,13 @@ def __on_close_request(self, _widget: 
Gtk.ApplicationWindow) -> bool:
 
         return Gdk.EVENT_PROPAGATE
 
+    def _store_win_size(self) -> None:
+        app.settings.set_window_size(
+            self.window.get_name(),
+            self.window.props.default_width,
+            self.window.props.default_height,
+        )
+
     def _cleanup(self) -> None:
         raise NotImplementedError
 



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/3545b2bc5c3bcfac03d465fe6ea82de9741ec4ba

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/3545b2bc5c3bcfac03d465fe6ea82de9741ec4ba
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to