from __future__ import annotations import sys from PySide6.QtGui import QIcon, QPalette, QColor from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget from ameba_control_panel import config from ameba_control_panel.controllers.device_tab_controller import DeviceTabController class MainWindow(QMainWindow): def __init__(self) -> None: super().__init__() self.setWindowTitle(config.APP_NAME) self._tabs = QTabWidget() self.setCentralWidget(self._tabs) self.controllers: list[DeviceTabController] = [] for profile in config.DEVICE_PROFILES: controller = DeviceTabController(profile) self.controllers.append(controller) self._tabs.addTab(controller.view, profile.label) def closeEvent(self, event) -> None: # noqa: N802 for c in self.controllers: c.shutdown() super().closeEvent(event) def _apply_light_palette(app: QApplication) -> None: palette = QPalette() palette.setColor(QPalette.Window, QColor(245, 245, 245)) palette.setColor(QPalette.WindowText, QColor(0, 0, 0)) palette.setColor(QPalette.Base, QColor(255, 255, 255)) palette.setColor(QPalette.AlternateBase, QColor(240, 240, 240)) palette.setColor(QPalette.ToolTipBase, QColor(255, 255, 255)) palette.setColor(QPalette.ToolTipText, QColor(0, 0, 0)) palette.setColor(QPalette.Text, QColor(0, 0, 0)) palette.setColor(QPalette.Button, QColor(240, 240, 240)) palette.setColor(QPalette.ButtonText, QColor(0, 0, 0)) palette.setColor(QPalette.BrightText, QColor(255, 0, 0)) app.setPalette(palette) def main() -> None: QApplication.setStyle("Fusion") app = QApplication(sys.argv) _apply_light_palette(app) window = MainWindow() window.resize(1200, 800) window.show() sys.exit(app.exec()) if __name__ == "__main__": main()