-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAppletDialog.py
89 lines (61 loc) · 2.56 KB
/
AppletDialog.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
AppletDialog.py
MIT License (c) Faure Systems <dev at faure dot systems>
Main dialog of an applet.
"""
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QSettings, QPoint, QSize, QTimer
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.QtGui import QIcon
class AppletDialog(QDialog):
switchLed = pyqtSignal(str, str)
# __________________________________________________________________
def __init__(self, title, icon, logger):
super().__init__()
self._logger = logger
self._logger.info(self.tr("GUI started"))
QApplication.desktop().screenCountChanged.connect(self.restoreWindow)
QApplication.desktop().resized.connect(self.restoreWindow)
self.setWindowTitle(title)
self.setWindowIcon(QIcon(icon))
self._buildUi()
QTimer.singleShot(0, self.layoutLoadSettings);
# __________________________________________________________________
def _buildUi(self):
pass
# __________________________________________________________________
def closeEvent(self, event):
self._logger.info(self.tr("Done with GUI"))
# __________________________________________________________________
def layoutLoadSettings(self):
settings = QSettings("settings.ini", QSettings.IniFormat);
settings.setIniCodec("UTF-8");
settings.beginGroup("Layout")
pos = settings.value("position", QPoint(200, 200))
size = settings.value("size", QSize(400, 400))
settings.endGroup()
self.move(pos)
self.resize(size)
# __________________________________________________________________
def layoutSaveSettings(self):
settings = QSettings("settings.ini", QSettings.IniFormat);
settings.setIniCodec("UTF-8");
settings.beginGroup("Layout")
settings.setValue("position", self.pos())
settings.setValue("size", self.size())
settings.endGroup()
settings.sync()
# __________________________________________________________________
def moveEvent(self, event):
if self.isVisible():
QTimer.singleShot(0, self.layoutSaveSettings);
# __________________________________________________________________
@pyqtSlot()
def restoreWindow(self):
self.resize(QSize(400, 400))
self.move(QPoint(200, 200))
# __________________________________________________________________
def resizeEvent(self, event):
if self.isVisible():
QTimer.singleShot(0, self.layoutSaveSettings);