From a64ef966534f8dba6af889ba4bfce15691bfc85b Mon Sep 17 00:00:00 2001 From: Nippy Date: Sun, 1 Nov 2026 18:13:54 +0100 Subject: új telepítő MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- raveos-center/raveos_center/alkalmazas.py | 192 ++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 raveos-center/raveos_center/alkalmazas.py (limited to 'raveos-center/raveos_center/alkalmazas.py') 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() -- cgit v1.3