From 508ba8461a8505b50ea645d0f0e2b5a6571db842 Mon Sep 17 00:00:00 2001 From: Louis Mazin Date: Mon, 28 Jul 2025 14:19:41 +0200 Subject: [PATCH] size saved --- BUILD.spec | 2 +- app/ui/main_window.py | 46 +++++++++++++++++++++----------------- config.json | 3 ++- data/assets/settings.svg | 2 +- data/assets/suggestion.svg | 4 ++-- main.py | 1 - requirements.txt | 3 ++- tools/build.bat | 4 ++-- 8 files changed, 35 insertions(+), 30 deletions(-) diff --git a/BUILD.spec b/BUILD.spec index 602f831..97a672a 100644 --- a/BUILD.spec +++ b/BUILD.spec @@ -59,7 +59,7 @@ exe = EXE( upx=True, upx_exclude=[], runtime_tmpdir=None, - console=False, + console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, diff --git a/app/ui/main_window.py b/app/ui/main_window.py index cc454fd..d530487 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -1,6 +1,5 @@ -from PyQt6.QtWidgets import QMainWindow +from PyQt6.QtWidgets import QApplication, QMainWindow from PyQt6.QtGui import QIcon -from PyQt6.QtWidgets import QApplication from PyQt6.QtCore import QSize from app.core.main_manager import MainManager, NotificationType from app.ui.widgets.tabs_widget import TabsWidget, MenuDirection, ButtonPosition, BorderSide @@ -12,7 +11,7 @@ class MainWindow(QMainWindow): def __init__(self): super().__init__() - self.main_manager = MainManager() + self.main_manager = MainManager.get_instance() self.language_manager = self.main_manager.get_language_manager() self.theme_manager = self.main_manager.get_theme_manager() @@ -20,7 +19,8 @@ class MainWindow(QMainWindow): self.observer_manager = self.main_manager.get_observer_manager() self.observer_manager.subscribe(NotificationType.THEME, self.update_theme) - # Configurer la fenêtre avant de créer les widgets + self.is_maximizing = False + app = QApplication.instance() size = app.primaryScreen().size() self.settings_manager.minScreenSize = min(size.height(),size.width()) @@ -30,45 +30,49 @@ class MainWindow(QMainWindow): self.setStyleSheet(self.theme_manager.get_sheet()) self.setWindowIcon(QIcon(paths.get_asset_path("icon"))) - # Apply saved window state - self.apply_saved_window_state() - self.setup_ui() + self.apply_saved_window_state() def apply_saved_window_state(self): """Apply saved window size and maximized state""" window_size = self.settings_manager.get_window_size() self.current_size = QSize(window_size["width"], window_size["height"]) - self.previous_size = self.current_size + self.previous_size = QSize(window_size["width"], window_size["height"]) self.resize(self.current_size) if self.settings_manager.get_maximized(): + self.is_maximizing = True self.showMaximized() - if hasattr(self, 'current_size'): - print(self.current_size) - def changeEvent(self, event): """Handle window state changes""" super().changeEvent(event) if event.type() == event.Type.WindowStateChange: - # Si on quitte le mode maximisé, sauvegarder la taille actuelle if self.isMaximized(): - self.current_size = self.previous_size + # On vient de maximiser + self.is_maximizing = False + else: + # On vient de dé-maximiser, restaurer la taille précédente + if hasattr(self, 'previous_size'): + self.current_size = self.previous_size self.settings_manager.set_maximized(self.isMaximized()) - if hasattr(self, 'current_size'): - print(self.current_size) def resizeEvent(self, a0): - self.previous_size = self.current_size - self.current_size = self.size() + # Ne pas sauvegarder la taille si on est en train de maximiser + if not self.isMaximized() and not self.is_maximizing: + self.previous_size = self.current_size + self.current_size = self.size() + + def closeEvent(self, event): + """Handle application close event""" + super().closeEvent(event) + # si la difference de taille est plus grande que 10 pixels, enregistrer previoussize + if abs(self.current_size.width() - self.previous_size.width()) > 10 or abs(self.current_size.height() - self.previous_size.height()) > 10: + self.current_size = self.previous_size self.settings_manager.set_window_size( self.current_size.width(), self.current_size.height() ) - - def closeEvent(self, event): - """Handle application close event""" - super().closeEvent(event) + def setup_ui(self): self.side_menu = TabsWidget(self,MenuDirection.HORIZONTAL,70,None,10,1,BorderSide.TOP) diff --git a/config.json b/config.json index c365fe7..ca2b23b 100644 --- a/config.json +++ b/config.json @@ -5,5 +5,6 @@ "app_version": "1.0.0", "architecture": "x64", "icon_path": "data/assets/icon.ico", - "main_script": "main.py" + "main_script": "main.py", + "git_repo": "https://gitea.louismazin.ovh/LouisMazin/HoDA" } \ No newline at end of file diff --git a/data/assets/settings.svg b/data/assets/settings.svg index c67bfb2..3bfe869 100644 --- a/data/assets/settings.svg +++ b/data/assets/settings.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/data/assets/suggestion.svg b/data/assets/suggestion.svg index f383c8a..6634fc4 100644 --- a/data/assets/suggestion.svg +++ b/data/assets/suggestion.svg @@ -1,8 +1,8 @@ - + - + diff --git a/main.py b/main.py index a539fcd..9a881ec 100644 --- a/main.py +++ b/main.py @@ -6,7 +6,6 @@ def main(): app = QApplication(sys.argv) window = MainWindow() - window.show() return app.exec() diff --git a/requirements.txt b/requirements.txt index 2fc62e6..390d828 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ PyQt6 pyinstaller -python-dotenv \ No newline at end of file +python-dotenv +requests \ No newline at end of file diff --git a/tools/build.bat b/tools/build.bat index 8e53c7b..205137f 100644 --- a/tools/build.bat +++ b/tools/build.bat @@ -48,11 +48,11 @@ if not exist "%VENV_PATH%\Scripts\activate.bat" ( REM === Run PyInstaller === "%PYTHON_IN_VENV%" -m PyInstaller ^ --distpath "%PARENT_DIR%\build" ^ - --workpath "%PARENT_DIR%\dist" ^ + --workpath "%PARENT_DIR%\build\dist" ^ --clean ^ "%PARENT_DIR%\BUILD.spec" REM === Clean build cache === -rmdir /s /q "%PARENT_DIR%\dist" +rmdir /s /q "%PARENT_DIR%\build\dist" endlocal