57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
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()
|