Settings moved to new file

This commit is contained in:
Balthasar Reuter
2018-05-25 21:43:34 +02:00
parent 6441c2e4c5
commit 24368048fc
6 changed files with 368 additions and 312 deletions

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
photobooth.cfg photobooth.cfg
photobooth/__pycache__ photobooth/__pycache__
photobooth/*/__pycache__ photobooth/*/__pycache__
photobooth/*/*/__pycache__
.eggs .eggs
.venv .venv
photobooth.egg-info photobooth.egg-info

View File

@@ -1,6 +1,6 @@
[Gui] [Gui]
# Gui module to use (qt5) # Gui module to use (PyQt5)
module = qt5 module = PyQt5
# Start Photobooth in fullscreen mode (True/False) # Start Photobooth in fullscreen mode (True/False)
fullscreen = False fullscreen = False
# Width of Photobooth (if not fullscreen) # Width of Photobooth (if not fullscreen)
@@ -27,8 +27,8 @@ lamp_pin = 4
[Printer] [Printer]
# Enable printing (True/False) # Enable printing (True/False)
enable = True enable = True
# Printer module to use (qt5) # Printer module to use (PyQt5)
module = qt5 module = PyQt5
# Paper width in mm # Paper width in mm
width = 148 width = 148
# Paper height in mm # Paper height in mm
@@ -46,9 +46,9 @@ display_time = 5
[Picture] [Picture]
# Basedir of output pictures # Basedir of output pictures
basedir = basedir = %Y-%m-%d
# Basename of output pictures # Basename of output pictures
basename = %Y-%m-%d/photobooth basename = photobooth
# Number of pictures in horizontal direction # Number of pictures in horizontal direction
num_x = 2 num_x = 2
# Number of pictures in vertical direction # Number of pictures in vertical direction

View File

@@ -4,7 +4,6 @@
import multiprocessing as mp import multiprocessing as mp
import queue import queue
import logging import logging
from os.path import expanduser
from PIL import ImageQt from PIL import ImageQt
@@ -12,10 +11,11 @@ from PyQt5 import QtGui, QtCore, QtWidgets
import math import math
from .Qt5Gui import Frames
from .PyQt5GuiHelpers import QRoundProgressBar from .PyQt5GuiHelpers import QRoundProgressBar
from . import * from . import *
from .. import camera, printer
class PyQt5Gui(Gui): class PyQt5Gui(Gui):
@@ -188,9 +188,11 @@ class PyQt5Gui(Gui):
def showSettings(self): def showSettings(self):
global cfg
self._p.handleKeypressEvent = lambda event : None self._p.handleKeypressEvent = lambda event : None
self._lastState = self.showSettings self._lastState = self.showSettings
self._p.setCentralWidget(PyQt5Settings(self)) # self._p.setCentralWidget(PyQt5Settings(self))
self._p.setCentralWidget(Frames.Settings(cfg, self.showSettings, self.showStart, self.restart))
def showStartPhotobooth(self): def showStartPhotobooth(self):
@@ -341,307 +343,6 @@ class PyQt5Start(QtWidgets.QFrame):
class PyQt5Settings(QtWidgets.QFrame):
def __init__(self, gui):
super().__init__()
self._gui = gui
self.initFrame()
def initFrame(self):
self._value_widgets = {}
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.createTabs())
layout.addStretch(1)
layout.addWidget(self.createButtons())
self.setLayout(layout)
def createTabs(self):
tabs = QtWidgets.QTabWidget()
tabs.addTab(self.createGuiSettings(), 'Interface')
tabs.addTab(self.createPhotoboothSettings(), 'Photobooth')
tabs.addTab(self.createCameraSettings(), 'Camera')
tabs.addTab(self.createPictureSettings(), 'Picture')
tabs.addTab(self.createGpioSettings(), 'GPIO')
tabs.addTab(self.createPrinterSettings(), 'Printer')
return tabs
def createButtons(self):
layout = QtWidgets.QHBoxLayout()
layout.addStretch(1)
btnSave = QtWidgets.QPushButton('Save and restart')
btnSave.resize(btnSave.sizeHint())
btnSave.clicked.connect(self.storeConfigAndRestart)
layout.addWidget(btnSave)
btnCancel = QtWidgets.QPushButton('Cancel')
btnCancel.resize(btnCancel.sizeHint())
btnCancel.clicked.connect(self._gui.showStart)
layout.addWidget(btnCancel)
btnRestore = QtWidgets.QPushButton('Restore defaults')
btnRestore.resize(btnRestore.sizeHint())
btnRestore.clicked.connect(self.restoreDefaults)
layout.addWidget(btnRestore)
widget = QtWidgets.QGroupBox()
widget.setLayout(layout)
return widget
def createModuleComboBox(self, module_list, current_module):
cb = QtWidgets.QComboBox()
for m in module_list:
cb.addItem(m[0])
idx = [x for x, m in enumerate(module_list) if m[0] == current_module]
cb.setCurrentIndex(idx[0] if len(idx) > 0 else -1)
return cb
def createGuiSettings(self):
global cfg
self._value_widgets['Gui'] = {}
self._value_widgets['Gui']['fullscreen'] = QtWidgets.QCheckBox('Enable fullscreen')
if cfg.getBool('Gui', 'fullscreen'):
self._value_widgets['Gui']['fullscreen'].toggle()
self._value_widgets['Gui']['module'] = self.createModuleComboBox(modules, cfg.get('Gui', 'module'))
self._value_widgets['Gui']['width'] = QtWidgets.QLineEdit(cfg.get('Gui', 'width'))
self._value_widgets['Gui']['height'] = QtWidgets.QLineEdit(cfg.get('Gui', 'height'))
self._value_widgets['Gui']['hide_cursor'] = QtWidgets.QCheckBox('Hide cursor')
if cfg.getBool('Gui', 'hide_cursor'):
self._value_widgets['Gui']['hide_cursor'].toggle()
layout = QtWidgets.QFormLayout()
layout.addRow(self._value_widgets['Gui']['fullscreen'])
layout.addRow(QtWidgets.QLabel('Gui module:'), self._value_widgets['Gui']['module'])
sublayout_size = QtWidgets.QHBoxLayout()
sublayout_size.addWidget(QtWidgets.QLabel('Window size [px]:'))
sublayout_size.addWidget(self._value_widgets['Gui']['width'])
sublayout_size.addWidget(QtWidgets.QLabel('x'))
sublayout_size.addWidget(self._value_widgets['Gui']['height'])
layout.addRow(sublayout_size)
layout.addRow(self._value_widgets['Gui']['hide_cursor'])
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createGpioSettings(self):
global cfg
self._value_widgets['Gpio'] = {}
self._value_widgets['Gpio']['enable'] = QtWidgets.QCheckBox('Enable GPIO')
if cfg.getBool('Gpio', 'enable'):
self._value_widgets['Gpio']['enable'].toggle()
self._value_widgets['Gpio']['exit_pin'] = QtWidgets.QLineEdit(cfg.get('Gpio', 'exit_pin'))
self._value_widgets['Gpio']['trigger_pin'] = QtWidgets.QLineEdit(cfg.get('Gpio', 'trigger_pin'))
self._value_widgets['Gpio']['lamp_pin'] = QtWidgets.QLineEdit(cfg.get('Gpio', 'lamp_pin'))
layout = QtWidgets.QFormLayout()
layout.addRow(self._value_widgets['Gpio']['enable'])
layout.addRow(QtWidgets.QLabel('Exit pin (BCM numbering):'), self._value_widgets['Gpio']['exit_pin'])
layout.addRow(QtWidgets.QLabel('Trigger pin (BCM numbering):'), self._value_widgets['Gpio']['trigger_pin'])
layout.addRow(QtWidgets.QLabel('Lamp pin (BCM numbering):'), self._value_widgets['Gpio']['lamp_pin'])
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPrinterSettings(self):
global cfg
self._value_widgets['Printer'] = {}
self._value_widgets['Printer']['enable'] = QtWidgets.QCheckBox('Enable Printing')
if cfg.getBool('Printer', 'enable'):
self._value_widgets['Printer']['enable'].toggle()
self._value_widgets['Printer']['module'] = self.createModuleComboBox(printer.modules, cfg.get('Printer', 'module'))
self._value_widgets['Printer']['width'] = QtWidgets.QLineEdit(cfg.get('Printer', 'width'))
self._value_widgets['Printer']['height'] = QtWidgets.QLineEdit(cfg.get('Printer', 'height'))
layout = QtWidgets.QFormLayout()
layout.addRow(self._value_widgets['Printer']['enable'])
layout.addRow(QtWidgets.QLabel('Printer module:'), self._value_widgets['Printer']['module'])
sublayout_size = QtWidgets.QHBoxLayout()
sublayout_size.addWidget(QtWidgets.QLabel('Paper size [mm]:'))
sublayout_size.addWidget(self._value_widgets['Printer']['width'])
sublayout_size.addWidget(QtWidgets.QLabel('x'))
sublayout_size.addWidget(self._value_widgets['Printer']['height'])
layout.addRow(sublayout_size)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createCameraSettings(self):
global cfg
self._value_widgets['Camera'] = {}
self._value_widgets['Camera']['module'] = self.createModuleComboBox(camera.modules, cfg.get('Camera', 'module'))
layout = QtWidgets.QFormLayout()
layout.addRow(QtWidgets.QLabel('Camera module:'), self._value_widgets['Camera']['module'])
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPhotoboothSettings(self):
global cfg
self._value_widgets['Photobooth'] = {}
self._value_widgets['Photobooth']['show_preview'] = QtWidgets.QCheckBox('Show preview while countdown')
if cfg.getBool('Photobooth', 'show_preview'):
self._value_widgets['Photobooth']['show_preview'].toggle()
self._value_widgets['Photobooth']['greeter_time'] = QtWidgets.QLineEdit(cfg.get('Photobooth', 'greeter_time'))
self._value_widgets['Photobooth']['countdown_time'] = QtWidgets.QLineEdit(cfg.get('Photobooth', 'countdown_time'))
self._value_widgets['Photobooth']['display_time'] = QtWidgets.QLineEdit(cfg.get('Photobooth', 'display_time'))
layout = QtWidgets.QFormLayout()
layout.addRow(self._value_widgets['Photobooth']['show_preview'])
layout.addRow(QtWidgets.QLabel('Greeter time [s]:'), self._value_widgets['Photobooth']['greeter_time'])
layout.addRow(QtWidgets.QLabel('Countdown time [s]:'), self._value_widgets['Photobooth']['countdown_time'])
layout.addRow(QtWidgets.QLabel('Display time [s]:'), self._value_widgets['Photobooth']['display_time'])
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPictureSettings(self):
global cfg
self._value_widgets['Picture'] = {}
self._value_widgets['Picture']['num_x'] = QtWidgets.QLineEdit(cfg.get('Picture', 'num_x'))
self._value_widgets['Picture']['num_y'] = QtWidgets.QLineEdit(cfg.get('Picture', 'num_y'))
self._value_widgets['Picture']['size_x'] = QtWidgets.QLineEdit(cfg.get('Picture', 'size_x'))
self._value_widgets['Picture']['size_y'] = QtWidgets.QLineEdit(cfg.get('Picture', 'size_y'))
self._value_widgets['Picture']['min_dist_x'] = QtWidgets.QLineEdit(cfg.get('Picture', 'min_dist_x'))
self._value_widgets['Picture']['min_dist_y'] = QtWidgets.QLineEdit(cfg.get('Picture', 'min_dist_y'))
self._value_widgets['Picture']['basedir'] = QtWidgets.QLineEdit(cfg.get('Picture', 'basedir'))
self._value_widgets['Picture']['basename'] = QtWidgets.QLineEdit(cfg.get('Picture', 'basename'))
layout = QtWidgets.QFormLayout()
sublayout_num = QtWidgets.QHBoxLayout()
sublayout_num.addWidget(QtWidgets.QLabel('Number of shots per picture:'))
sublayout_num.addWidget(self._value_widgets['Picture']['num_x'])
sublayout_num.addWidget(QtWidgets.QLabel('x'))
sublayout_num.addWidget(self._value_widgets['Picture']['num_y'])
layout.addRow(sublayout_num)
sublayout_size = QtWidgets.QHBoxLayout()
sublayout_size.addWidget(QtWidgets.QLabel('Size of assembled picture:'))
sublayout_size.addWidget(self._value_widgets['Picture']['size_x'])
sublayout_size.addWidget(QtWidgets.QLabel('x'))
sublayout_size.addWidget(self._value_widgets['Picture']['size_y'])
layout.addRow(sublayout_size)
sublayout_dist = QtWidgets.QHBoxLayout()
sublayout_dist.addWidget(QtWidgets.QLabel('Min. distance between shots in picture:'))
sublayout_dist.addWidget(self._value_widgets['Picture']['min_dist_x'])
sublayout_dist.addWidget(QtWidgets.QLabel('x'))
sublayout_dist.addWidget(self._value_widgets['Picture']['min_dist_y'])
layout.addRow(sublayout_dist)
file_dialog = lambda : self._value_widgets['Picture']['basedir'].setText(
QtWidgets.QFileDialog.getExistingDirectory(self, 'Select directory',
expanduser('~'), QtWidgets.QFileDialog.ShowDirsOnly))
file_button = QtWidgets.QPushButton('Select directory')
file_button.resize(file_button.sizeHint())
file_button.clicked.connect(file_dialog)
sublayout_path = QtWidgets.QHBoxLayout()
sublayout_path.addWidget(QtWidgets.QLabel('Basename of output files:'))
sublayout_path.addWidget(self._value_widgets['Picture']['basedir'])
sublayout_path.addWidget(QtWidgets.QLabel('/'))
sublayout_path.addWidget(self._value_widgets['Picture']['basename'])
sublayout_path.addWidget(file_button)
layout.addRow(sublayout_path)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def storeConfigAndRestart(self):
global cfg
cfg.set('Gui', 'fullscreen', str(self._value_widgets['Gui']['fullscreen'].isChecked()))
cfg.set('Gui', 'module', modules[self._value_widgets['Gui']['module'].currentIndex()][0])
cfg.set('Gui', 'width', self._value_widgets['Gui']['width'].text())
cfg.set('Gui', 'height', self._value_widgets['Gui']['height'].text())
cfg.set('Gui', 'hide_cursor', str(self._value_widgets['Gui']['hide_cursor'].isChecked()))
cfg.set('Gpio', 'enable', str(self._value_widgets['Gpio']['enable'].isChecked()))
cfg.set('Gpio', 'exit_pin', self._value_widgets['Gpio']['exit_pin'].text())
cfg.set('Gpio', 'trigger_pin', self._value_widgets['Gpio']['trigger_pin'].text())
cfg.set('Gpio', 'lamp_pin', self._value_widgets['Gpio']['lamp_pin'].text())
cfg.set('Printer', 'enable', str(self._value_widgets['Printer']['enable'].isChecked()))
cfg.set('Printer', 'module', modules[self._value_widgets['Printer']['module'].currentIndex()][0])
cfg.set('Printer', 'width', self._value_widgets['Printer']['width'].text())
cfg.set('Printer', 'height', self._value_widgets['Printer']['height'].text())
cfg.set('Photobooth', 'show_preview', str(self._value_widgets['Photobooth']['show_preview'].isChecked()))
cfg.set('Photobooth', 'greeter_time', str(self._value_widgets['Photobooth']['greeter_time'].text()))
cfg.set('Photobooth', 'countdown_time', str(self._value_widgets['Photobooth']['countdown_time'].text()))
cfg.set('Photobooth', 'display_time', str(self._value_widgets['Photobooth']['display_time'].text()))
cfg.set('Picture', 'num_x', self._value_widgets['Picture']['num_x'].text())
cfg.set('Picture', 'num_y', self._value_widgets['Picture']['num_y'].text())
cfg.set('Picture', 'size_x', self._value_widgets['Picture']['size_x'].text())
cfg.set('Picture', 'size_y', self._value_widgets['Picture']['size_y'].text())
cfg.set('Picture', 'min_dist_x', self._value_widgets['Picture']['min_dist_x'].text())
cfg.set('Picture', 'min_dist_y', self._value_widgets['Picture']['min_dist_y'].text())
cfg.set('Picture', 'basedir', self._value_widgets['Picture']['basedir'].text())
cfg.set('Picture', 'basename', self._value_widgets['Picture']['basename'].text())
cfg.set('Camera', 'module', camera.modules[self._value_widgets['Camera']['module'].currentIndex()][0])
cfg.write()
self._gui.restart()
def restoreDefaults(self):
global cfg
cfg.defaults()
self._gui.showSettings()
class PyQt5WaitMessage(QtWidgets.QFrame): class PyQt5WaitMessage(QtWidgets.QFrame):
# With spinning wait clock, inspired by # With spinning wait clock, inspired by
# https://wiki.python.org/moin/PyQt/A%20full%20widget%20waiting%20indicator # https://wiki.python.org/moin/PyQt/A%20full%20widget%20waiting%20indicator

View File

@@ -0,0 +1,354 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from os.path import expanduser
from PyQt5 import QtWidgets
from .. import modules
from ... import camera
from ... import printer
class Settings(QtWidgets.QFrame):
def __init__(self, config, reload_action, cancel_action, restart_action):
super().__init__()
self._cfg = config
self._reloadAction = reload_action
self._cancelAction = cancel_action
self._restartAction = restart_action
self.initFrame()
def init(self, category):
self._widgets[category] = {}
def add(self, category, key, value):
self._widgets[category][key] = value
def get(self, category, key):
return self._widgets[category][key]
def initFrame(self):
self._widgets = {}
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.createTabs())
layout.addStretch(1)
layout.addWidget(self.createButtons())
self.setLayout(layout)
def createTabs(self):
tabs = QtWidgets.QTabWidget()
tabs.addTab(self.createGuiSettings(), 'Interface')
tabs.addTab(self.createPhotoboothSettings(), 'Photobooth')
tabs.addTab(self.createCameraSettings(), 'Camera')
tabs.addTab(self.createPictureSettings(), 'Picture')
tabs.addTab(self.createGpioSettings(), 'GPIO')
tabs.addTab(self.createPrinterSettings(), 'Printer')
return tabs
def createButtons(self):
layout = QtWidgets.QHBoxLayout()
layout.addStretch(1)
btnSave = QtWidgets.QPushButton('Save and restart')
btnSave.clicked.connect(self.storeConfigAndRestart)
layout.addWidget(btnSave)
btnCancel = QtWidgets.QPushButton('Cancel')
btnCancel.clicked.connect(self._cancelAction)
layout.addWidget(btnCancel)
btnRestore = QtWidgets.QPushButton('Restore defaults')
btnRestore.clicked.connect(self.restoreDefaults)
layout.addWidget(btnRestore)
widget = QtWidgets.QGroupBox()
widget.setLayout(layout)
return widget
def createModuleComboBox(self, module_list, current_module):
cb = QtWidgets.QComboBox()
for m in module_list:
cb.addItem(m[0])
idx = [x for x, m in enumerate(module_list) if m[0] == current_module]
cb.setCurrentIndex(idx[0] if len(idx) > 0 else -1)
return cb
def createGuiSettings(self):
self.init('Gui')
fullscreen = QtWidgets.QCheckBox()
fullscreen.setChecked(self._cfg.getBool('Gui', 'fullscreen'))
self.add('Gui', 'fullscreen', fullscreen)
module = self.createModuleComboBox(modules,
self._cfg.get('Gui', 'module'))
self.add('Gui', 'module', module)
width = QtWidgets.QLineEdit(self._cfg.get('Gui', 'width'))
height = QtWidgets.QLineEdit(self._cfg.get('Gui', 'height'))
self.add('Gui', 'width', width)
self.add('Gui', 'height', height)
cursor = QtWidgets.QCheckBox()
cursor.setChecked(self._cfg.getBool('Gui', 'hide_cursor'))
self.add('Gui', 'hide_cursor', cursor)
lay_size = QtWidgets.QHBoxLayout()
lay_size.addWidget(width)
lay_size.addWidget(QtWidgets.QLabel('x'))
lay_size.addWidget(height)
layout = QtWidgets.QFormLayout()
layout.addRow('Enable fullscreen:', fullscreen)
layout.addRow('Gui module:', module)
layout.addRow('Window size [px]:', lay_size)
layout.addRow('Hide cursor:', cursor)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPhotoboothSettings(self):
self.init('Photobooth')
preview = QtWidgets.QCheckBox()
preview.setChecked(self._cfg.getBool('Photobooth', 'show_preview'))
self.add('Photobooth', 'show_preview', preview)
greet_time = QtWidgets.QLineEdit(self._cfg.get('Photobooth',
'greeter_time'))
count_time = QtWidgets.QLineEdit(self._cfg.get('Photobooth',
'countdown_time'))
displ_time = QtWidgets.QLineEdit(self._cfg.get('Photobooth',
'display_time'))
self.add('Photobooth', 'greeter_time', greet_time)
self.add('Photobooth', 'countdown_time', count_time)
self.add('Photobooth', 'display_time', displ_time)
layout = QtWidgets.QFormLayout()
layout.addRow('Show preview during countdown:', preview)
layout.addRow('Greeter time before countdown [s]:', greet_time)
layout.addRow('Countdown time [s]:', count_time)
layout.addRow('Picture display time [s]:', displ_time)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createCameraSettings(self):
self.init('Camera')
module = self.createModuleComboBox(camera.modules,
self._cfg.get('Camera', 'module'))
self.add('Camera', 'module', module)
layout = QtWidgets.QFormLayout()
layout.addRow('Camera module:', module)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPictureSettings(self):
self.init('Picture')
num_x = QtWidgets.QLineEdit(self._cfg.get('Picture', 'num_x'))
num_y = QtWidgets.QLineEdit(self._cfg.get('Picture', 'num_y'))
self.add('Picture', 'num_x', num_x)
self.add('Picture', 'num_y', num_y)
size_x = QtWidgets.QLineEdit(self._cfg.get('Picture', 'size_x'))
size_y = QtWidgets.QLineEdit(self._cfg.get('Picture', 'size_y'))
self.add('Picture', 'size_x', size_x)
self.add('Picture', 'size_y', size_y)
min_dist_x = QtWidgets.QLineEdit(self._cfg.get('Picture',
'min_dist_x'))
min_dist_y = QtWidgets.QLineEdit(self._cfg.get('Picture',
'min_dist_y'))
self.add('Picture', 'min_dist_x', min_dist_x)
self.add('Picture', 'min_dist_y', min_dist_y)
basedir = QtWidgets.QLineEdit(self._cfg.get('Picture', 'basedir'))
basename = QtWidgets.QLineEdit(self._cfg.get('Picture', 'basename'))
self.add('Picture', 'basedir', basedir)
self.add('Picture', 'basename', basename)
lay_num = QtWidgets.QHBoxLayout()
lay_num.addWidget(num_x)
lay_num.addWidget(QtWidgets.QLabel('x'))
lay_num.addWidget(num_y)
lay_size = QtWidgets.QHBoxLayout()
lay_size.addWidget(size_x)
lay_size.addWidget(QtWidgets.QLabel('x'))
lay_size.addWidget(size_y)
lay_dist = QtWidgets.QHBoxLayout()
lay_dist.addWidget(min_dist_x)
lay_dist.addWidget(QtWidgets.QLabel('x'))
lay_dist.addWidget(min_dist_y)
def file_dialog():
basedir.setText(QtWidgets.QFileDialog.getExistingDirectory(self,
'Select directory', expanduser('~'),
QtWidgets.QFileDialog.ShowDirsOnly))
file_button = QtWidgets.QPushButton('Select directory')
file_button.clicked.connect(file_dialog)
lay_file = QtWidgets.QHBoxLayout()
lay_file.addWidget(basedir)
lay_file.addWidget(file_button)
layout = QtWidgets.QFormLayout()
layout.addRow('Number of shots per picture:', lay_num)
layout.addRow('Size of assembled picture [px]:', lay_size)
layout.addRow('Minimum distance between shots in picture [px]:',
lay_dist)
layout.addRow('Output directory (strftime directives possible):',
lay_file)
layout.addRow('Basename of files (strftime directives possible):',
basename)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createGpioSettings(self):
self.init('Gpio')
enable = QtWidgets.QCheckBox()
enable.setChecked(self._cfg.getBool('Gpio', 'enable'))
self.add('Gpio', 'enable', enable)
exit_pin = QtWidgets.QLineEdit(self._cfg.get('Gpio', 'exit_pin'))
trig_pin = QtWidgets.QLineEdit(self._cfg.get('Gpio', 'trigger_pin'))
lamp_pin = QtWidgets.QLineEdit(self._cfg.get('Gpio', 'lamp_pin'))
self.add('Gpio', 'exit_pin', exit_pin)
self.add('Gpio', 'trigger_pin', trig_pin)
self.add('Gpio', 'lamp_pin', lamp_pin)
layout = QtWidgets.QFormLayout()
layout.addRow('Enable GPIO:', enable)
layout.addRow('Exit button pin (BCM numbering):', exit_pin)
layout.addRow('Trigger button pin (BCM numbering):', trig_pin)
layout.addRow('Idle lamp pin (BCM numbering):', lamp_pin)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def createPrinterSettings(self):
self.init('Printer')
enable = QtWidgets.QCheckBox()
enable.setChecked(self._cfg.getBool('Printer', 'enable'))
self.add('Printer', 'enable', enable)
module = self.createModuleComboBox(printer.modules,
self._cfg.get('Printer', 'module'))
self.add('Printer', 'module', module)
width = QtWidgets.QLineEdit(self._cfg.get('Printer', 'width'))
height = QtWidgets.QLineEdit(self._cfg.get('Printer', 'height'))
self.add('Printer', 'width', width)
self.add('Printer', 'height', height)
lay_size = QtWidgets.QHBoxLayout()
lay_size.addWidget(width)
lay_size.addWidget(QtWidgets.QLabel('x'))
lay_size.addWidget(height)
layout = QtWidgets.QFormLayout()
layout.addRow('Enable printing:', enable)
layout.addRow('Module:', module)
layout.addRow('Paper size [mm]:', lay_size)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
return widget
def storeConfigAndRestart(self):
self._cfg.set('Gui', 'fullscreen',
str(self.get('Gui', 'fullscreen').isChecked()))
self._cfg.set('Gui', 'module',
modules[self.get('Gui', 'module').currentIndex()][0])
self._cfg.set('Gui', 'width', self.get('Gui', 'width').text())
self._cfg.set('Gui', 'height', self.get('Gui', 'height').text())
self._cfg.set('Gui', 'hide_cursor',
str(self.get('Gui', 'hide_cursor').isChecked()))
self._cfg.set('Photobooth', 'show_preview',
str(self.get('Photobooth', 'show_preview').isChecked()))
self._cfg.set('Photobooth', 'greeter_time',
str(self.get('Photobooth', 'greeter_time').text()))
self._cfg.set('Photobooth', 'countdown_time',
str(self.get('Photobooth', 'countdown_time').text()))
self._cfg.set('Photobooth', 'display_time',
str(self.get('Photobooth', 'display_time').text()))
self._cfg.set('Camera', 'module',
camera.modules[self.get('Camera',
'module').currentIndex()][0])
self._cfg.set('Picture', 'num_x', self.get('Picture', 'num_x').text())
self._cfg.set('Picture', 'num_y', self.get('Picture', 'num_y').text())
self._cfg.set('Picture', 'size_x',
self.get('Picture', 'size_x').text())
self._cfg.set('Picture', 'size_y',
self.get('Picture', 'size_y').text())
self._cfg.set('Picture', 'min_dist_x',
self.get('Picture', 'min_dist_x').text())
self._cfg.set('Picture', 'min_dist_y',
self.get('Picture', 'min_dist_y').text())
self._cfg.set('Picture', 'basedir',
self.get('Picture', 'basedir').text())
self._cfg.set('Picture', 'basename',
self.get('Picture', 'basename').text())
self._cfg.set('Gpio', 'enable',
str(self.get('Gpio', 'enable').isChecked()))
self._cfg.set('Gpio', 'exit_pin', self.get('Gpio', 'exit_pin').text())
self._cfg.set('Gpio', 'trigger_pin',
self.get('Gpio', 'trigger_pin').text())
self._cfg.set('Gpio', 'lamp_pin', self.get('Gpio', 'lamp_pin').text())
self._cfg.set('Printer', 'enable',
str(self.get('Printer', 'enable').isChecked()))
self._cfg.set('Printer', 'module',
printer.modules[self.get('Printer',
'module').currentIndex()][0])
self._cfg.set('Printer', 'width', self.get('Printer', 'width').text())
self._cfg.set('Printer', 'height',
self.get('Printer', 'height').text())
self._cfg.write()
self._restartAction()
def restoreDefaults(self):
self._cfg.defaults()
self._reloadAction()

View File

@@ -5,7 +5,7 @@ from .GuiState import * # noqa
from .GuiPostprocess import * # noqa from .GuiPostprocess import * # noqa
# Available gui modules as tuples of (config name, module name, class name) # Available gui modules as tuples of (config name, module name, class name)
modules = (('qt5', 'PyQt5Gui', 'PyQt5Gui'), ) modules = (('PyQt5', 'PyQt5Gui', 'PyQt5Gui'), )
class Gui: class Gui:

View File

@@ -4,7 +4,7 @@
# Available printer modules as tuples of (config name, module name, class name) # Available printer modules as tuples of (config name, module name, class name)
modules = ( modules = (
('qt5', 'PrinterPyQt5', 'PrinterPyQt5'), ) ('PyQt5', 'PrinterPyQt5', 'PrinterPyQt5'), )
class Printer: class Printer: