WaitMessage moved to Frames module

This commit is contained in:
Balthasar Reuter
2018-06-04 21:55:26 +02:00
parent 66149060cb
commit 5c815ca629
2 changed files with 70 additions and 69 deletions

View File

@@ -129,7 +129,8 @@ class PyQt5Gui(Gui):
self._p.setCentralWidget(PyQt5PoseMessage())
elif isinstance(state, AssembleState):
self._p.setCentralWidget(PyQt5WaitMessage('Processing picture...'))
self._p.setCentralWidget(Frames.WaitMessage('Processing picture...'))
# self._p.setCentralWidget(PyQt5WaitMessage('Processing picture...'))
elif isinstance(state, PictureState):
img = ImageQt.ImageQt(state.picture)
@@ -198,7 +199,8 @@ class PyQt5Gui(Gui):
self._lastState = self.showStartPhotobooth
self._conn.send('start')
self._p.setCentralWidget(PyQt5WaitMessage('Starting the photobooth...'))
# self._p.setCentralWidget(PyQt5WaitMessage('Starting the photobooth...'))
self._p.setCentralWidget(Frames.WaitMessage('Starting the photobooth...'))
if cfg.getBool('Gui', 'hide_cursor'):
QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.BlankCursor)
@@ -311,70 +313,6 @@ class PyQt5MainWindow(QtWidgets.QMainWindow):
class PyQt5WaitMessage(QtWidgets.QFrame):
# With spinning wait clock, inspired by
# https://wiki.python.org/moin/PyQt/A%20full%20widget%20waiting%20indicator
def __init__(self, message):
super().__init__()
self._message = message
self.initFrame()
def initFrame(self):
self.setStyleSheet('background-color: black; color: white;')
def paintEvent(self, event):
painter = QtGui.QPainter(self)
f = self.font()
f.setPixelSize(self.height() / 8)
painter.setFont(f)
rect = QtCore.QRect(0, self.height() * 3 / 5, self.width(), self.height() * 3 / 10)
painter.drawText(rect, QtCore.Qt.AlignCenter, self._message)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
center = (self.width() / 2, self.height() / 2)
dots = 8
pos = self._counter % dots
for i in range(dots):
distance = (pos - i) % dots
color = (distance + 1) / (dots + 1) * 255
painter.setBrush(QtGui.QBrush(QtGui.QColor(color, color, color)))
painter.drawEllipse(
center[0] + 180 / dots * math.cos(2 * math.pi * i / dots) - 20,
center[1] + 180 / dots * math.sin(2 * math.pi * i / dots) - 20,
15, 15)
painter.end()
def showEvent(self, event):
self._counter = 0
self.startTimer(100)
def timerEvent(self, event):
self._counter += 1
self.update()
class PyQt5IdleMessage(QtWidgets.QFrame):
def __init__(self):

View File

@@ -3,6 +3,10 @@
from os.path import expanduser
import math
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from .. import modules
@@ -36,6 +40,65 @@ class Start(QtWidgets.QFrame):
self.setLayout(lay)
class WaitMessage(QtWidgets.QFrame):
# With spinning wait clock, inspired by
# https://wiki.python.org/moin/PyQt/A%20full%20widget%20waiting%20indicator
def __init__(self, message):
super().__init__()
self._message = message
def showEvent(self, event):
self._counter = 0
self.startTimer(100)
def timerEvent(self, event):
self._counter += 1
self.update()
def _paintMessage(self, painter):
f = self.font()
f.setPixelSize(self.height() / 8)
painter.setFont(f)
rect = QtCore.QRect(0, self.height() * 3 / 5,
self.width(), self.height() * 3 / 10)
painter.drawText(rect, QtCore.Qt.AlignCenter, self._message)
def _paintClock(self, painter):
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
center = (self.width() / 2, self.height() / 2)
dots = 8
pos = self._counter % dots
for i in range(dots):
distance = (pos - i) % dots
color = (distance + 1) / (dots + 1) * 255
painter.setBrush(QtGui.QBrush(QtGui.QColor(color, color, color)))
painter.drawEllipse(
center[0] + 180 / dots * math.cos(2 * math.pi * i / dots) - 20,
center[1] + 180 / dots * math.sin(2 * math.pi * i / dots) - 20,
15, 15)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
self._paintMessage(painter)
self._paintClock(painter)
painter.end()
class Settings(QtWidgets.QFrame):
def __init__(self, config, reload_action, cancel_action, restart_action):
@@ -235,9 +298,9 @@ class Settings(QtWidgets.QFrame):
lay_dist.addWidget(min_dist_y)
def file_dialog():
basedir.setText(QtWidgets.QFileDialog.getExistingDirectory(self,
'Select directory', expanduser('~'),
QtWidgets.QFileDialog.ShowDirsOnly))
dialog = QtWidgets.QFileDialog.getExistingDirectory
basedir.setText(dialog(self, 'Select directory', expanduser('~'),
QtWidgets.QFileDialog.ShowDirsOnly))
file_button = QtWidgets.QPushButton('Select directory')
file_button.clicked.connect(file_dialog)