summaryrefslogtreecommitdiff
path: root/raveos-center/raveos_center/folyamat.py
blob: 586491fd2ea985673356b3d04d07e0a9c05e3251 (plain)
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
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QDialog, QHBoxLayout, QPlainTextEdit, QVBoxLayout

from raveos_center import hatter, muveletek
from raveos_center.elemek import cimke, gomb


class FolyamatAblak(QDialog):
    def __init__(self, szulo, cim, lepesek, siker_szoveg="Kész.", hiba_szoveg="A művelet nem sikerült."):
        super().__init__(szulo)
        self.setWindowTitle(cim)
        self.resize(760, 520)
        self.siker_szoveg = siker_szoveg
        self.hiba_szoveg = hiba_szoveg
        self.rendben = False
        doboz = QVBoxLayout(self)
        doboz.setContentsMargins(28, 24, 28, 20)
        doboz.setSpacing(12)
        self.felirat = cimke("FOLYAMATBAN", "eyebrow")
        doboz.addWidget(self.felirat)
        self.cim = cimke(cim.upper(), "h2", True)
        doboz.addWidget(self.cim)
        self.allapot = cimke("Indul...", "masodlagos", True)
        doboz.addWidget(self.allapot)
        self.naplo = QPlainTextEdit()
        self.naplo.setObjectName("naplo")
        self.naplo.setReadOnly(True)
        self.naplo.setMaximumBlockCount(5000)
        doboz.addWidget(self.naplo, 1)
        sor = QHBoxLayout()
        sor.addStretch(1)
        self.bezar = gomb("Bezárás", fo=True)
        self.bezar.setEnabled(False)
        self.bezar.clicked.connect(self.accept)
        sor.addWidget(self.bezar)
        doboz.addLayout(sor)
        self.futtato = muveletek.Futtato(self)
        self.futtato.sor.connect(self.naplo.appendPlainText)
        self.futtato.lepes_indul.connect(self.allapot.setText)
        self.futtato.kesz.connect(self._kesz)
        self.lepesek = lepesek

    def exec(self):
        self.futtato.indit(self.lepesek)
        return super().exec()

    def _kesz(self, rendben, hibasak):
        hatter.ervenytelenit()
        self.rendben = rendben
        self.felirat.setText("KÉSZ" if rendben else "HIBA")
        if rendben:
            self.allapot.setText(self.siker_szoveg)
        else:
            self.allapot.setText(f"{self.hiba_szoveg} Sikertelen lépés: {', '.join(hibasak)}")
            self.allapot.setObjectName("figyelem")
            self.allapot.style().unpolish(self.allapot)
            self.allapot.style().polish(self.allapot)
        self.bezar.setEnabled(True)

    def reject(self):
        if self.futtato.fut():
            return
        super().reject()

    def keyPressEvent(self, esemeny):
        if esemeny.key() == Qt.Key.Key_Escape and self.futtato.fut():
            return
        super().keyPressEvent(esemeny)