diff --git a/app/ui/views/settings_view.py b/app/ui/views/settings_view.py index 350e5c9..94e1b7d 100644 --- a/app/ui/views/settings_view.py +++ b/app/ui/views/settings_view.py @@ -286,6 +286,14 @@ class SettingsPage(PageBase): ), ), self.create_folder_setting_row(self._["name_rules"]), + self.create_setting_row( + self._["remember_window_size"], + ft.Switch( + value=self.get_config_value("remember_window_size", False), + on_change=self.on_change, + data="remember_window_size", + ), + ), ], is_mobile, ), diff --git a/locales/en.json b/locales/en.json index 1146818..e667d4e 100644 --- a/locales/en.json +++ b/locales/en.json @@ -213,6 +213,7 @@ "time": "time", "title": "title", "proxy_settings": "Proxy Settings", + "remember_window_size": "Remember Window Size", "is_proxy_enabled": "Configuration for using proxy and related settings", "enable_proxy": "Enable Proxy", "proxy_address": "Proxy Address", diff --git a/locales/zh_CN.json b/locales/zh_CN.json index 1ce35ca..20294be 100644 --- a/locales/zh_CN.json +++ b/locales/zh_CN.json @@ -212,6 +212,7 @@ "author": "作者", "time": "时间", "title": "标题", + "remember_window_size": "退出时记住窗口大小", "proxy_settings": "代理设置", "is_proxy_enabled": "设置是否使用代理及相关配置", "enable_proxy": "开启代理", diff --git a/main.py b/main.py index 21bca8a..f2243eb 100644 --- a/main.py +++ b/main.py @@ -29,7 +29,7 @@ class GlobalState: global_state = GlobalState() -def setup_window(page: ft.Page, is_web: bool) -> None: +def setup_window(page: ft.Page, app: App, is_web: bool) -> None: page.window.icon = os.path.join(execute_dir, ASSETS_DIR, "icon.ico") page.window.center() page.window.to_front() @@ -39,6 +39,14 @@ def setup_window(page: ft.Page, is_web: bool) -> None: if not is_web: try: + if app.settings.user_config.get("remember_window_size"): + window_width = app.settings.user_config.get("window_width") + window_height = app.settings.user_config.get("window_height") + if window_width and window_height: + page.window.width = int(window_width) + page.window.height = int(window_height) + return + screen = get_monitors()[0] page.window.width = int(screen.width * WINDOW_SCALE) page.window.height = int(screen.height * WINDOW_SCALE) @@ -75,6 +83,10 @@ def handle_route_change(page: ft.Page, app: App) -> callable: def handle_window_event(page: ft.Page, app: App, save_progress_overlay: 'SaveProgressOverlay') -> callable: async def on_window_event(e: ft.ControlEvent) -> None: if e.data == "close": + if app.settings.user_config.get("remember_window_size"): + app.settings.user_config["window_width"] = page.window.width + app.settings.user_config["window_height"] = page.window.height + await app.config_manager.save_user_config(app.settings.user_config) await handle_app_close(page, app, save_progress_overlay) return on_window_event @@ -108,13 +120,13 @@ async def main(page: ft.Page) -> None: page.window.min_height = MIN_WIDTH * WINDOW_SCALE is_web = args.web or platform == "web" - setup_window(page, is_web) app = App(page) page.data = app app.is_web_mode = is_web app.is_mobile = False - + setup_window(page, app, is_web) + if not is_web: try: app.tray_manager = TrayManager(app)