summaryrefslogtreecommitdiff
path: root/raveos-center/raveos_center/oldalak/rendszer/driverek.py
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-center/raveos_center/oldalak/rendszer/driverek.py')
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/driverek.py159
1 files changed, 159 insertions, 0 deletions
diff --git a/raveos-center/raveos_center/oldalak/rendszer/driverek.py b/raveos-center/raveos_center/oldalak/rendszer/driverek.py
new file mode 100644
index 0000000..499e87a
--- /dev/null
+++ b/raveos-center/raveos_center/oldalak/rendszer/driverek.py
@@ -0,0 +1,159 @@
+from PyQt6.QtCore import Qt
+from PyQt6.QtWidgets import QHBoxLayout, QMessageBox, QVBoxLayout, QWidget
+
+from raveos_center import driverek, muveletek
+from raveos_center.elemek import Kartya, cimke, gomb
+from raveos_center.folyamat import FolyamatAblak
+from raveos_center.hatter import ervenytelenit, gyorsitott
+
+AZON = "driverek"
+CIM = "Driverek"
+
+
+class EszkozSor(QWidget):
+ def __init__(self, elem, telepit):
+ super().__init__()
+ self.setObjectName("appsor")
+ self.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True)
+ sor = QHBoxLayout(self)
+ sor.setContentsMargins(16, 12, 16, 12)
+ sor.setSpacing(16)
+ szovegek = QVBoxLayout()
+ szovegek.setSpacing(3)
+ nev = cimke(elem["nev"], tordel=True)
+ nev.setStyleSheet("font-size: 14px; font-weight: 600;")
+ szovegek.addWidget(nev)
+ szovegek.addWidget(cimke(f"Jelenlegi driver: {elem['jelenlegi'] or 'nincs betöltve'}", "monohalvany"))
+ if elem["hianyzik"]:
+ hiany = cimke(f"Hiányzó csomagok: {' '.join(elem['hianyzik'])}", "monohalvany", True)
+ hiany.setStyleSheet("color: #d9a441;")
+ szovegek.addWidget(hiany)
+ if elem["megjegyzes"]:
+ szovegek.addWidget(cimke(elem["megjegyzes"], "halvany", True))
+ sor.addLayout(szovegek, 1)
+ if elem["hianyzik"]:
+ g = gomb("Ajánlott telepítése", fo=True, kicsi=True)
+ g.setEnabled(muveletek.helper_elerheto())
+ g.clicked.connect(lambda: telepit([elem]))
+ sor.addWidget(g, 0, Qt.AlignmentFlag.AlignVCenter)
+ else:
+ rendben = cimke("RENDBEN", "allapotcimke")
+ rendben.setProperty("szin", "zold")
+ sor.addWidget(rendben, 0, Qt.AlignmentFlag.AlignVCenter)
+
+
+class Driverek(QWidget):
+ def __init__(self, kozpont):
+ super().__init__()
+ self.kozpont = kozpont
+ self.elemek = []
+ self.kapott = None
+ doboz = QVBoxLayout(self)
+ doboz.setContentsMargins(0, 20, 0, 0)
+ doboz.setSpacing(16)
+ fej = QHBoxLayout()
+ fej.addWidget(
+ cimke(
+ "A RaveOS felismeri a géped eszközeit, és megmutatja, melyikhez van ajánlott driver. "
+ "A videokártya drivere a telepítéskor is ugyanígy kerül fel.",
+ "masodlagos",
+ True,
+ ),
+ 1,
+ )
+ self.ujra = gomb("Újraellenőrzés", kicsi=True)
+ self.ujra.clicked.connect(self.frissit)
+ fej.addWidget(self.ujra, 0, Qt.AlignmentFlag.AlignTop)
+ self.mind = gomb("Minden ajánlott telepítése", fo=True, kicsi=True)
+ self.mind.clicked.connect(lambda: self._telepit([e for e in self.elemek if e["hianyzik"]]))
+ self.mind.hide()
+ fej.addWidget(self.mind, 0, Qt.AlignmentFlag.AlignTop)
+ doboz.addLayout(fej)
+ self.figyelem = cimke("", "figyelem", True)
+ self.figyelem.hide()
+ doboz.addWidget(self.figyelem)
+ self.lista = QVBoxLayout()
+ self.lista.setSpacing(20)
+ doboz.addLayout(self.lista)
+ doboz.addStretch(1)
+
+ def megjelenik(self, *_):
+ gyorsitott("driverek", driverek.allapot, kesz=self._kesz, hiba=self._hiba, kor=120)
+
+ def frissit(self):
+ self.ujra.setEnabled(False)
+ ervenytelenit("driverek")
+ gyorsitott("driverek", driverek.allapot, kesz=self._kesz, hiba=self._hiba)
+
+ def _hiba(self, uzenet):
+ self.ujra.setEnabled(True)
+ self.figyelem.setText(f"A hardver felismerése nem sikerült: {uzenet}")
+ self.figyelem.show()
+
+ def _kesz(self, elemek):
+ self.ujra.setEnabled(True)
+ if elemek == self.kapott:
+ return
+ self.kapott = elemek
+ self.elemek = elemek
+ while self.lista.count():
+ w = self.lista.takeAt(0).widget()
+ if w:
+ w.deleteLater()
+ if not muveletek.helper_elerheto():
+ self.figyelem.setText("A RaveOS Center rendszerhelpere nincs telepítve, ezért driver nem telepíthető.")
+ self.figyelem.show()
+ else:
+ self.figyelem.hide()
+ if driverek.szkript() is None:
+ self.figyelem.setText("A driverfelismerő szkript nincs telepítve.")
+ self.figyelem.show()
+ for azon, nev in driverek.KATEGORIAK:
+ sajat = [e for e in elemek if e["kategoria"] == azon]
+ if not sajat:
+ continue
+ csoport = QWidget()
+ cs = QVBoxLayout(csoport)
+ cs.setContentsMargins(0, 0, 0, 0)
+ cs.setSpacing(10)
+ cs.addWidget(cimke(nev.upper(), "h2"))
+ kartya = Kartya(terkoz=0, margo=0)
+ for i, e in enumerate(sajat):
+ sor = EszkozSor(e, self._telepit)
+ sor.setProperty("utolso", i == len(sajat) - 1)
+ kartya.elrendezes.addWidget(sor)
+ cs.addWidget(kartya)
+ self.lista.addWidget(csoport)
+ if not elemek:
+ self.lista.addWidget(cimke("Nem található kezelhető eszköz.", "halvany"))
+ hianyzo = [e for e in elemek if e["hianyzik"]]
+ self.mind.setVisible(len(hianyzo) > 1)
+ self.mind.setEnabled(muveletek.helper_elerheto())
+
+ def _telepit(self, elemek):
+ if not elemek:
+ return
+ lepesek = []
+ egyeb = []
+ if any(e["gpu"] for e in elemek):
+ lepesek.append(muveletek.Lepes("Videokártya driverek", muveletek.root("driverek")))
+ for e in elemek:
+ if not e["gpu"]:
+ egyeb += [p for p in e["hianyzik"] if p not in egyeb]
+ if egyeb:
+ lepesek.append(muveletek.Lepes("További driverek", muveletek.root("telepit", *egyeb)))
+ ablak = FolyamatAblak(self, "Driverek telepítése", lepesek, "A driverek telepítve.")
+ ablak.exec()
+ if ablak.rendben and any(driverek.ujrainditas_kell(e) for e in elemek):
+ doboz = QMessageBox(self)
+ doboz.setWindowTitle("Újraindítás szükséges")
+ doboz.setText("Az új videokártya-driver az újraindítás után töltődik be.")
+ most = doboz.addButton("Újraindítás most", QMessageBox.ButtonRole.AcceptRole)
+ doboz.addButton("Később", QMessageBox.ButtonRole.RejectRole)
+ doboz.exec()
+ if doboz.clickedButton() is most:
+ muveletek.Futtato(self).indit([muveletek.Lepes("Újraindítás", ["systemctl", "reboot"])])
+ self.frissit()
+
+
+FUL = Driverek