diff options
Diffstat (limited to 'raveos-center/raveos_center/oldalak/rendszer/driverek.py')
| -rw-r--r-- | raveos-center/raveos_center/oldalak/rendszer/driverek.py | 159 |
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 |