1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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
|