2025-07-11 14:33:17 +02:00

43 lines
2.2 KiB
Python

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())