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]