Added option to skip last shot in a picture (e.g. to include a logo/message in the background)

This commit is contained in:
Balthasar Reuter
2018-07-20 16:00:42 +02:00
parent 3eb03fbf21
commit 428e8aa3e6
3 changed files with 17 additions and 6 deletions

View File

@@ -33,6 +33,8 @@ class PictureDimensions:
self._min_distance = (config.getInt('Picture', 'min_dist_x'),
config.getInt('Picture', 'min_dist_y'))
self._skip_last = config.getBool('Picture', 'skip_last')
self.computeThumbnailDimensions()
def computeThumbnailDimensions(self):
@@ -64,7 +66,13 @@ class PictureDimensions:
@property
def totalNumPictures(self):
return self._num_pictures[0] * self._num_pictures[1]
return max(self._num_pictures[0] * self._num_pictures[1] -
int(self._skip_last), 1)
@property
def skipLast(self):
return self._skip_last
@property
def captureSize(self):

View File

@@ -103,15 +103,17 @@ class IdleMessage(QtWidgets.QFrame):
class GreeterMessage(QtWidgets.QFrame):
def __init__(self, num_x, num_y, countdown_action):
def __init__(self, num_x, num_y, skip_last, countdown_action):
super().__init__()
self.setObjectName('GreeterMessage')
self._text_title = 'Get ready!'
self._text_button = 'Start countdown'
if num_x * num_y > 1:
self._text_label = ('for {} pictures...'.format(num_x * num_y))
num_pictures = max(num_x * num_y - int(skip_last), 1)
if num_pictures > 1:
self._text_label = ('for {} pictures...'.format(num_pictures))
else:
self._text_label = ''
@@ -686,7 +688,7 @@ class Settings(QtWidgets.QFrame):
def file_dialog():
dialog = QtWidgets.QFileDialog.getOpenFileName
bg.setText(dialog(self, 'Select file', os.path.expanduser('~'),
'Images (*.jpg *.png)')[0])
'Images (*.jpg *.png)')[0])
dir_button = QtWidgets.QPushButton('Select directory')
dir_button.clicked.connect(directory_dialog)

View File

@@ -179,10 +179,11 @@ class PyQt5Gui(GuiSkeleton):
num_pic = (self._cfg.getInt('Picture', 'num_x'),
self._cfg.getInt('Picture', 'num_y'))
skip_last = self._cfg.getBool('Picture', 'skip_last')
greeter_time = self._cfg.getInt('Photobooth', 'greeter_time') * 1000
self._setWidget(Frames.GreeterMessage(
*num_pic,
*num_pic, skip_last,
lambda: self._comm.send(Workers.MASTER, GuiEvent('countdown'))))
QtCore.QTimer.singleShot(
greeter_time,