-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgui.py
65 lines (51 loc) · 2.06 KB
/
gui.py
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
from wizard.page1 import Page1
from wizard.page2 import Page2
from wizard.page3 import Page3
from dialogs.log import LogDialog
from PySide2.QtWidgets import QWizard, QMessageBox, QStatusBar
from PySide2.QtCore import Slot
import html
import modules
class MainWindow(QWizard):
__log = None
__status = None
def __init__(self):
super().__init__()
self.buildUI()
modules.load()
def __bogus_module(self, module_name):
errorMsg = QMessageBox(QMessageBox.Critical, "Bogus module", module_name + " module is not working properly", QMessageBox.Ok, self)
errorMsg.show()
@Slot(str)
def __add_log(self, msg, escape=True):
self.__status.setToolTip(msg)
if self.__log is not None:
return self.__log.append(html.escape(msg) if escape else msg)
@Slot(int)
def __page_changed(self):
if self.currentPage() is not None:
self.currentPage().children()[0].addWidget(self.__status)
self.currentPage().update()
self.currentPage().status.connect(lambda s: self.__status.showMessage(self.__add_log(s, True)))
def buildUI(self):
self.__status = QStatusBar(self)
self.__log = LogDialog(self)
self.setWizardStyle(QWizard.ClassicStyle)
self.setButtonLayout([QWizard.Stretch, QWizard.CustomButton1, QWizard.NextButton, QWizard.CancelButton])
self.setButtonText(QWizard.CustomButton1, "&Logs")
self.setOption(QWizard.HaveCustomButton1, True)
self.customButtonClicked.connect(self.__log.show)
self.currentIdChanged.connect(self.__page_changed)
page1 = Page1()
page1.log.connect(lambda msg: self.__add_log(msg, False))
self.addPage(page1)
page2 = Page2()
page2.log.connect(lambda msg: self.__add_log(msg, False))
self.addPage(page2)
page3 = Page3()
page3.log.connect(lambda msg: self.__add_log(msg, False))
self.addPage(page3)
# Show window
self.setWindowTitle('muSync')
self.show()
self.resize(self.sizeHint())