summaryrefslogtreecommitdiff
path: root/raveos-center/raveos_center/alkalmazas.py
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-center/raveos_center/alkalmazas.py')
-rw-r--r--raveos-center/raveos_center/alkalmazas.py192
1 files changed, 192 insertions, 0 deletions
diff --git a/raveos-center/raveos_center/alkalmazas.py b/raveos-center/raveos_center/alkalmazas.py
new file mode 100644
index 0000000..2c68777
--- /dev/null
+++ b/raveos-center/raveos_center/alkalmazas.py
@@ -0,0 +1,192 @@
+import importlib
+from pathlib import Path
+
+from PyQt6.QtCore import QSize, Qt
+from PyQt6.QtGui import QColor, QIcon, QPalette, QPixmap
+from PyQt6.QtWidgets import (
+ QApplication,
+ QFrame,
+ QHBoxLayout,
+ QLabel,
+ QMainWindow,
+ QPushButton,
+ QStackedWidget,
+ QVBoxLayout,
+ QWidget,
+)
+
+from raveos_center import VERZIO, hatter, oldalak, rendszerinfo, stilus
+from raveos_center.elemek import cimke, frissit_stilus
+from raveos_center.ikonok import ikon
+
+ADAT = Path(__file__).parent / "adat"
+
+
+class Menupont(QPushButton):
+ def __init__(self, modul):
+ super().__init__(modul.MENU)
+ self.modul = modul
+ self.setObjectName("menupont")
+ self.setCursor(Qt.CursorShape.PointingHandCursor)
+ self.setIconSize(QSize(18, 18))
+ sor = QHBoxLayout(self)
+ sor.setContentsMargins(0, 0, 12, 0)
+ sor.addStretch(1)
+ self.jelveny = cimke("", "jelveny")
+ self.jelveny.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents)
+ self.jelveny.setFixedHeight(18)
+ self.jelveny.setAlignment(Qt.AlignmentFlag.AlignCenter)
+ self.jelveny.hide()
+ sor.addWidget(self.jelveny, 0, Qt.AlignmentFlag.AlignVCenter)
+ self.beallit(False)
+
+ def beallit(self, aktiv):
+ self.setProperty("aktiv", aktiv)
+ self.setIcon(ikon(self.modul.IKON, stilus.ZOLD if aktiv else stilus.SZOVEG_MASOD))
+ frissit_stilus(self)
+
+ def szam(self, ertek):
+ self.jelveny.setText(str(ertek))
+ self.jelveny.setVisible(bool(ertek))
+
+
+class Kozpont:
+ def __init__(self, ablak):
+ self.ablak = ablak
+
+ def van(self, azon, *args):
+ oldal = self.ablak.oldalak.get(azon)
+ return bool(oldal) and oldal.elerheto(*args)
+
+ def mutat(self, azon, *args):
+ return self.ablak.mutat(azon, *args)
+
+ def jelveny(self, azon, szam):
+ pont = self.ablak.menupontok.get(azon)
+ if pont:
+ pont.szam(szam)
+
+
+class FoAblak(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.setWindowTitle("RaveOS Center")
+ self.setWindowIcon(QIcon(str(ADAT / "logo.png")))
+ self.resize(1280, 820)
+ self.setMinimumSize(760, 520)
+ self.kozpont = Kozpont(self)
+ self.oldalak = {}
+ self.menupontok = {}
+
+ alap = QWidget()
+ self.setCentralWidget(alap)
+ sor = QHBoxLayout(alap)
+ sor.setContentsMargins(0, 0, 0, 0)
+ sor.setSpacing(0)
+
+ self.oldalsav = QFrame()
+ self.oldalsav.setObjectName("oldalsav")
+ self.oldalsav.setFixedWidth(232)
+ sav = QVBoxLayout(self.oldalsav)
+ sav.setContentsMargins(16, 28, 16, 20)
+ sav.setSpacing(4)
+ sav.addLayout(self._marka())
+ sav.addSpacing(28)
+
+ self.verem = QStackedWidget()
+ sor.addWidget(self.oldalsav)
+ sor.addWidget(self.verem, 1)
+
+ for nev in oldalak.FENT:
+ self._betolt(nev, sav)
+ sav.addStretch(1)
+ vonal = QFrame()
+ vonal.setObjectName("elvalaszto")
+ sav.addWidget(vonal)
+ sav.addSpacing(12)
+ for nev in oldalak.LENT:
+ self._betolt(nev, sav)
+ sav.addWidget(cimke(f"{rendszerinfo.raveos_verzio()} · rp1.hu", "lablec"))
+
+ for oldal in self.oldalak.values():
+ oldal.indulaskor()
+ if oldalak.FENT:
+ self.mutat(oldalak.FENT[0])
+
+ def _marka(self):
+ sor = QHBoxLayout()
+ sor.setContentsMargins(8, 0, 8, 0)
+ sor.setSpacing(12)
+ logo = QLabel()
+ kep = QPixmap(str(ADAT / "logo.png"))
+ kep.setDevicePixelRatio(2)
+ logo.setPixmap(
+ kep.scaled(84, 78, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)
+ )
+ sor.addWidget(logo)
+ nevek = QVBoxLayout()
+ nevek.setSpacing(0)
+ nevek.addWidget(cimke("RAVEOS", "markanev"))
+ nevek.addWidget(cimke("CENTER", "markaalcim"))
+ sor.addLayout(nevek)
+ sor.addStretch(1)
+ return sor
+
+ def _betolt(self, nev, sav):
+ modul = importlib.import_module(f"raveos_center.oldalak.{nev}")
+ oldal = modul.OLDAL(self.kozpont)
+ self.oldalak[modul.AZON] = oldal
+ self.verem.addWidget(oldal)
+ pont = Menupont(modul)
+ pont.clicked.connect(lambda _=False, a=modul.AZON: self.mutat(a))
+ self.menupontok[modul.AZON] = pont
+ sav.addWidget(pont)
+
+ def mutat(self, azon, *args):
+ oldal = self.oldalak.get(azon)
+ if not oldal:
+ return False
+ for a, pont in self.menupontok.items():
+ pont.beallit(a == azon)
+ self.verem.setCurrentWidget(oldal)
+ oldal.megjelenik(*args)
+ return True
+
+
+def paletta():
+ p = QPalette()
+ szinek = {
+ QPalette.ColorRole.Window: stilus.HATTER,
+ QPalette.ColorRole.WindowText: stilus.SZOVEG,
+ QPalette.ColorRole.Base: stilus.HATTER,
+ QPalette.ColorRole.AlternateBase: stilus.FELULET,
+ QPalette.ColorRole.Text: stilus.SZOVEG,
+ QPalette.ColorRole.Button: stilus.FELULET,
+ QPalette.ColorRole.ButtonText: stilus.SZOVEG,
+ QPalette.ColorRole.Highlight: stilus.ZOLD,
+ QPalette.ColorRole.HighlightedText: stilus.ZOLDON_SZOVEG,
+ QPalette.ColorRole.ToolTipBase: stilus.FELULET,
+ QPalette.ColorRole.ToolTipText: stilus.SZOVEG,
+ QPalette.ColorRole.PlaceholderText: stilus.SZOVEG_HALVANY,
+ QPalette.ColorRole.Link: stilus.ZOLD,
+ QPalette.ColorRole.Mid: stilus.KERET,
+ QPalette.ColorRole.Dark: stilus.KERET_EROS,
+ }
+ for szerep, szin in szinek.items():
+ p.setColor(szerep, QColor(szin))
+ for szerep in (QPalette.ColorRole.WindowText, QPalette.ColorRole.Text, QPalette.ColorRole.ButtonText):
+ p.setColor(QPalette.ColorGroup.Disabled, szerep, QColor(stilus.SZOVEG_HALVANY))
+ return p
+
+
+def futtat(argv):
+ app = QApplication(argv)
+ app.setApplicationName("RaveOS Center")
+ app.setDesktopFileName("raveos-center")
+ app.setStyle("Fusion")
+ app.setPalette(paletta())
+ app.setStyleSheet(stilus.QSS)
+ app.aboutToQuit.connect(hatter.leallitas)
+ ablak = FoAblak()
+ ablak.show()
+ return app.exec()