All timers moved to GUI

This commit is contained in:
Balthasar Reuter
2018-05-09 00:49:41 +02:00
parent 795ccb34f9
commit 613a4dc6de
3 changed files with 48 additions and 4 deletions

View File

@@ -158,21 +158,45 @@ class Photobooth:
tic, toc = time(), 0
while toc < self.countdownTime:
self._send.send(gui.CountdownState())
while not self._recv.poll():
toc = time() - tic
self._send.send( gui.PreviewState(
message = str(self.countdownTime - int(toc)),
picture = ImageOps.mirror(self._cap.getPreview()) ) )
toc = time() - tic
event = self._recv.recv()
if str(event) == 'cancel':
self.teardown()
return 1
elif str(event) == 'ack':
pass
else:
print('Unknown event received: ' + str(event))
raise RuntimeError('Unknown event received', str(event))
def showCounterNoPreview(self):
self._send.send(gui.CountdownState())
for i in range(self.countdownTime):
self._send.send( gui.PreviewState(
message = str(i),
message = str(self.countdownTime - i),
picture = Image.new('RGB', (1,1), 'white') ) )
sleep(1)
event = self._recv.recv()
if str(event) == 'cancel':
self.teardown()
return 1
elif str(event) == 'ack':
pass
else:
print('Unknown event received: ' + str(event))
raise RuntimeError('Unknown event received', str(event))
def showPose(self):
@@ -227,7 +251,15 @@ class Photobooth:
self.setCameraIdle()
sleep(self.displayTime)
event = self._recv.recv()
if str(event) == 'cancel':
self.teardown()
return 1
elif str(event) == 'ack':
pass
else:
print('Unknown event received: ' + str(event))
raise RuntimeError('Unknown event received', str(event))
self._send.send(gui.IdleState())
self._lampOn()

View File

@@ -89,9 +89,13 @@ class PyQt5Gui(Gui):
PyQt5PictureMessage('Will capture {} pictures!'.format(num_pictures)))
QTimer.singleShot(cfg.getInt('Photobooth', 'greeter_time') * 1000, lambda : self._transport.send('ack'))
elif isinstance(state, CountdownState):
QTimer.singleShot(cfg.getInt('Photobooth', 'countdown_time') * 1000, lambda : self._transport.send('ack'))
elif isinstance(state, PreviewState):
img = ImageQt.ImageQt(state.picture)
self._p.setCentralWidget(PyQt5PictureMessage(state.message, img))
elif isinstance(state, PoseState):
self._p.setCentralWidget(PyQt5PictureMessage('Pose!'))
elif isinstance(state, AssembleState):
@@ -99,6 +103,7 @@ class PyQt5Gui(Gui):
elif isinstance(state, PictureState):
img = ImageQt.ImageQt(state.picture)
self._p.setCentralWidget(PyQt5PictureMessage('', img))
QTimer.singleShot(cfg.getInt('Photobooth', 'display_time') * 1000, lambda : self._transport.send('ack'))
self._printer.print(state.picture)
elif isinstance(state, ErrorState):

View File

@@ -136,6 +136,13 @@ class AssembleState(GuiState):
super().__init__(**kwargs)
class CountdownState(GuiState):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class PreviewState(MessageState, PictureState):
def __init__(self, **kwargs):