from PyQt6.QtWidgets import QMainWindow from PyQt6.QtGui import QIcon from PyQt6.QtWidgets import QApplication from app.core.main_manager import MainManager, NotificationType from app.ui.widgets.tabs_widget import TabsWidget, MenuDirection, ButtonPosition, BorderSide from app.ui.windows.settings_window import SettingsWindow import app.utils.paths as paths class MainWindow(QMainWindow): def __init__(self): super().__init__() self.main_manager = MainManager() self.language_manager = self.main_manager.get_language_manager() self.theme_manager = self.main_manager.get_theme_manager() self.settings_manager = self.main_manager.get_settings_manager() 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 app = QApplication.instance() self.settings_manager.dpi = app.primaryScreen().devicePixelRatio() size = app.primaryScreen().size() self.settings_manager.minScreenSize = min(size.height(),size.width()) configWidth = int(self.settings_manager.get_fullscreen_size()["width"] if self.settings_manager.get_fullscreen() else self.settings_manager.get_window_size()["width"] /self.settings_manager.dpi) configHeight = int(self.settings_manager.get_fullscreen_size()["height"] if self.settings_manager.get_fullscreen() else self.settings_manager.get_window_size()["height"] /self.settings_manager.dpi) self.setMinimumSize(600, 400) self.resize(configWidth, configHeight) self.setWindowTitle(self.settings_manager.get_config("app_name")) self.setStyleSheet(self.theme_manager.get_sheet()) self.setWindowIcon(QIcon(paths.get_asset_path("icon"))) self.setup_ui() def setup_ui(self): self.side_menu = TabsWidget(self,MenuDirection.HORIZONTAL,70,None,10,1,BorderSide.TOP) self.settings_window = SettingsWindow(self) self.side_menu.add_widget(self.settings_window,"",paths.get_asset_svg_path("settings"), position=ButtonPosition.CENTER) self.setCentralWidget(self.side_menu) def update_theme(self): self.setStyleSheet(self.theme_manager.get_sheet())