New pastel theme added with pretty pictures, custom font etc.

This commit is contained in:
Balthasar Reuter
2018-06-29 01:12:08 +02:00
parent 0dad737bbd
commit c768510e90
16 changed files with 755 additions and 74 deletions

View File

@@ -82,23 +82,22 @@ class IdleMessage(QtWidgets.QFrame):
def __init__(self):
super().__init__()
self.setObjectName('IdleMessage')
self._message = 'Hit the button!'
self._message_label = 'Hit the'
self._message_button = 'Button!'
def _paintMessage(self, painter):
self.initFrame()
f = self.font()
f.setPixelSize(self.height() / 5)
painter.setFont(f)
def initFrame(self):
rect = self.rect()
painter.drawText(rect, QtCore.Qt.AlignCenter, self._message)
lbl = QtWidgets.QLabel(self._message_label)
btn = QtWidgets.QPushButton(self._message_button)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
self._paintMessage(painter)
painter.end()
lay = QtWidgets.QVBoxLayout()
lay.addWidget(lbl)
lay.addWidget(btn)
self.setLayout(lay)
class GreeterMessage(QtWidgets.QFrame):
@@ -106,34 +105,31 @@ class GreeterMessage(QtWidgets.QFrame):
def __init__(self, num_x, num_y):
super().__init__()
self.setObjectName('GreeterMessage')
self._title = 'Get ready!'
self._text_title = 'Get ready!'
self._text_button = 'Start countdown'
if num_x * num_y > 1:
self._text = ('Capturing {} pictures...'.format(num_x * num_y))
self._text_label = ('for {} pictures...'.format(num_x * num_y))
else:
self._text = 'Starting the countdown...'
self._text_label = ''
def _paintMessage(self, painter):
self.initFrame()
f = self.font()
def initFrame(self):
f.setPixelSize(self.height() / 5)
painter.setFont(f)
rect = QtCore.QRect(0, self.height() * 1 / 5,
self.width(), self.height() * 3 / 10)
painter.drawText(rect, QtCore.Qt.AlignCenter, self._title)
ttl = QtWidgets.QLabel(self._text_title)
ttl.setObjectName('title')
btn = QtWidgets.QPushButton(self._text_button)
btn.setObjectName('button')
lbl = QtWidgets.QLabel(self._text_label)
lbl.setObjectName('message')
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._text)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
self._paintMessage(painter)
painter.end()
lay = QtWidgets.QVBoxLayout()
lay.addWidget(ttl)
lay.addWidget(btn)
lay.addWidget(lbl)
self.setLayout(lay)
class PoseMessage(QtWidgets.QFrame):
@@ -141,35 +137,22 @@ class PoseMessage(QtWidgets.QFrame):
def __init__(self, num_picture, num_x, num_y):
super().__init__()
self.setObjectName('PoseMessage')
self._title = 'Pose!'
if num_x * num_y > 1:
self._text = 'Picture {} of {}...'.format(num_picture,
num_x * num_y)
else:
self._text = 'Taking a photo...'
def _paintMessage(self, painter):
self.initFrame()
f = self.font()
def initFrame(self):
f.setPixelSize(self.height() / 5)
painter.setFont(f)
rect = QtCore.QRect(0, self.height() * 1 / 5,
self.width(), self.height() * 3 / 10)
painter.drawText(rect, QtCore.Qt.AlignCenter, self._title)
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._text)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
self._paintMessage(painter)
painter.end()
lbl = QtWidgets.QLabel(self._text)
lay = QtWidgets.QVBoxLayout()
lay.addWidget(lbl)
self.setLayout(lay)
class PictureMessage(QtWidgets.QFrame):
@@ -177,6 +160,7 @@ class PictureMessage(QtWidgets.QFrame):
def __init__(self, picture):
super().__init__()
self.setObjectName('PictureMessage')
self._picture = picture
@@ -205,10 +189,20 @@ class WaitMessage(QtWidgets.QFrame):
def __init__(self, message):
super().__init__()
self.setObjectName('WaitMessage')
self._message = message
self._text = message
self._clock = Widgets.SpinningWaitClock()
self.initFrame()
def initFrame(self):
lbl = QtWidgets.QLabel(self._text)
lay = QtWidgets.QVBoxLayout()
lay.addWidget(lbl)
self.setLayout(lay)
def showEvent(self, event):
self.startTimer(100)
@@ -218,23 +212,12 @@ class WaitMessage(QtWidgets.QFrame):
self._clock.value += 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 paintEvent(self, event):
offset = ((self.width() - self._clock.width()) // 2,
(self.height() - self._clock.height()) // 2)
painter = QtGui.QPainter(self)
self._paintMessage(painter)
self._clock.render(painter, QtCore.QPoint(*offset),
self._clock.visibleRegion(),
QtWidgets.QWidget.DrawChildren)
@@ -246,6 +229,7 @@ class CountdownMessage(QtWidgets.QFrame):
def __init__(self, time, action):
super().__init__()
self.setObjectName('CountdownMessage')
self._step_size = 50
self._value = time * (1000 // self._step_size)
@@ -309,7 +293,8 @@ class CountdownMessage(QtWidgets.QFrame):
if self.picture is not None:
pix = QtGui.QPixmap.fromImage(self.picture)
pix = pix.scaled(self.size(), QtCore.Qt.KeepAspectRatio,
pix = pix.scaled(self.contentsRect().size(),
QtCore.Qt.KeepAspectRatio,
QtCore.Qt.FastTransformation)
origin = ((self.width() - pix.width()) // 2,
(self.height() - pix.height()) // 2)
@@ -479,6 +464,10 @@ class Settings(QtWidgets.QFrame):
idx = [x for x, m in enumerate(module_list) if m[0] == current_module]
cb.setCurrentIndex(idx[0] if len(idx) > 0 else -1)
# Fix bug in Qt to allow changing the items in a stylesheet
delegate = QtWidgets.QStyledItemDelegate()
cb.setItemDelegate(delegate)
return cb
def createGuiSettings(self):
@@ -645,11 +634,11 @@ class Settings(QtWidgets.QFrame):
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]:',
layout.addRow('Min. distance between shots [px]:',
lay_dist)
layout.addRow('Output directory (strftime directives possible):',
layout.addRow('Output directory (strftime possible):',
lay_file)
layout.addRow('Basename of files (strftime directives possible):',
layout.addRow('Basename of files (strftime possible):',
basename)
widget = QtWidgets.QWidget()

View File

@@ -21,6 +21,7 @@ import logging
import os
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from PIL import ImageQt
@@ -91,6 +92,12 @@ class PyQt5Gui(GuiSkeleton):
self._app.setStyleSheet(stylesheet)
self._gui = PyQt5MainWindow(self._cfg, self._handleKeypressEvent)
fonts = ['photobooth/gui/Qt5Gui/fonts/AmaticSC-Regular.ttf',
'photobooth/gui/Qt5Gui/fonts/AmaticSC-Bold.ttf']
self._fonts = QtGui.QFontDatabase()
for font in fonts:
self._fonts.addApplicationFont(font)
def _initReceiver(self):
self._receiver = Receiver.Receiver([self._conn])
@@ -200,7 +207,7 @@ class PyQt5Gui(GuiSkeleton):
self._disableTrigger()
num_pic = (self._cfg.getInt('Picture', 'num_x'),
self._cfg.getInt('Picture', 'num_x'))
self._cfg.getInt('Picture', 'num_y'))
greeter_time = self._cfg.getInt('Photobooth', 'greeter_time') * 1000
self._setWidget(Frames.GreeterMessage(*num_pic))
@@ -219,7 +226,7 @@ class PyQt5Gui(GuiSkeleton):
def _showPose(self, state):
num_pic = (self._cfg.getInt('Picture', 'num_x'),
self._cfg.getInt('Picture', 'num_x'))
self._cfg.getInt('Picture', 'num_y'))
self._setWidget(Frames.PoseMessage(state.num_picture, *num_pic))
def _showAssemble(self, state):
@@ -267,8 +274,8 @@ class PyQt5MainWindow(QtWidgets.QMainWindow):
if self._cfg.getBool('Gui', 'fullscreen'):
self.showFullScreen()
else:
self.resize(self._cfg.getInt('Gui', 'width'),
self._cfg.getInt('Gui', 'height'))
self.setFixedSize(self._cfg.getInt('Gui', 'width'),
self._cfg.getInt('Gui', 'height'))
self.show()
def closeEvent(self, e):

View File

@@ -19,6 +19,7 @@
# Available style sheets as tuples of (style name, style file)
styles = (('default', 'stylesheets/default.qss'),
('dark', 'stylesheets/dark.qss'))
('dark', 'stylesheets/dark.qss'),
('pastel', 'stylesheets/pastel.qss'))
from .PyQt5Gui import PyQt5Gui # noqa

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,93 @@
Copyright 2015 The Amatic SC Project Authors (https://github.com/googlefonts/AmaticSC)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="199.6391mm"
height="297.63135mm"
viewBox="0 0 199.6391 297.63135"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (unknown)"
sodipodi:docname="arrow.svg">
<defs
id="defs2">
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Roughen"
id="filter6254">
<feTurbulence
type="fractalNoise"
numOctaves="3"
seed="2"
baseFrequency="0.011 0.018"
result="turbulence"
id="feTurbulence6250" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap6252" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Roughen"
id="filter6260">
<feTurbulence
type="fractalNoise"
numOctaves="3"
seed="2"
baseFrequency="0.011 0.018"
result="turbulence"
id="feTurbulence6256" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap6258" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Roughen"
id="filter6266">
<feTurbulence
type="fractalNoise"
numOctaves="3"
seed="2"
baseFrequency="0.011 0.018"
result="turbulence"
id="feTurbulence6262" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap6264" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="756.22901"
inkscape:cy="432.22136"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-0.46865904,-8.1350937)">
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.11666667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6254)"
d="m 17.10525,32.937706 c 176.93243,0 166.24164,248.026114 166.24164,248.026114"
id="path1172"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.11666667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6260)"
d="M 183.34689,280.96382 C 172.82815,259.95369 158.67307,262.38934 158.67307,262.38934"
id="path1176"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.11666667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter6266)"
d="m 183.34689,280.96382 c 5.29447,-27.1829 14.9916,-26.55026 14.9916,-26.55026"
id="path1178"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg869"
width="431.00336"
height="336.13913"
viewBox="0 0 431.00336 336.13913"
sodipodi:docname="camera.svg"
inkscape:version="0.92.3 (unknown)">
<metadata
id="metadata875">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs873">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Roughen"
id="filter25">
<feTurbulence
type="fractalNoise"
numOctaves="3"
seed="2"
baseFrequency="0.011 0.018"
result="turbulence"
id="feTurbulence21" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap23" />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1855"
inkscape:window-height="1056"
id="namedview871"
showgrid="false"
inkscape:zoom="1.7851562"
inkscape:cx="80.830818"
inkscape:cy="187.73854"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg869"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<path
style="fill:#000000;filter:url(#filter25)"
d="m 216.16797,16.240234 c -26.91862,0.06966 -53.83724,0.139323 -80.75586,0.208985 -9.0655,15.411877 -18.12787,30.825594 -27.19531,46.236328 -22.584828,3.853171 -47.148081,-3.075582 -68.406253,7.009765 -19.445949,9.5995 -27.304654,33.482688 -23.690254,53.812438 0.802732,55.17088 -2.605777,110.54325 2.373848,165.52545 7.004449,21.6574 31.478151,34.38982 53.238143,30.61232 2.690963,-1.02717 13.850114,2.59703 9.47382,-2.33887 -1.773376,-3.16899 -4.275476,-6.53406 -8.352588,-5.14845 -15.448777,0.77231 -33.967207,-1.88705 -42.845704,-16.17187 -9.553761,-15.36007 -4.893543,-34.22222 -6.312514,-51.22261 -0.09122,-48.73024 -1.13992,-97.56767 0.986343,-146.230517 4.796172,-18.64457 25.684326,-30.117367 44.160138,-26.355367 14.241362,0.08785 28.475597,-0.471229 42.714861,-0.603617 9.33462,-15.879568 18.66938,-31.759054 28.00391,-47.638672 51.19466,0.191096 102.38932,0.385027 153.58398,0.576172 9.19861,15.747373 18.39713,31.494795 27.5957,47.242187 22.19547,1.144812 45.2087,-2.084811 66.95508,3.605469 15.64296,8.651188 23.14697,28.108915 19.71929,45.298715 -0.94932,55.63715 2.66805,111.44418 -2.43022,166.94738 -6.16267,19.21283 -29.0139,28.2415 -47.71094,23.88086 -5.45988,-1.09829 -6.18767,5.15836 -8.98242,8.18945 17.79356,0.63983 38.75674,1.58845 52.16601,-12.13086 12.0822,-11.39415 16.47267,-28.93606 14.19699,-45.0371 -0.0284,-55.42016 1.74408,-111.00056 -0.9216,-166.316414 -6.69033,-20.542321 -28.63918,-34.682641 -50.24706,-31.906513 -12.97463,-0.354259 -26.12005,0.04116 -39.1338,-0.919659 C 315.1713,47.587953 305.9937,31.809122 296.81445,16.03125 c -26.88216,0.06966 -53.76432,0.139323 -80.64648,0.208984 z m -2.4043,96.101566 c -49.67423,-0.37758 -96.48985,41.53517 -101.3164,91.21679 -5.51568,44.77972 21.32918,92.27056 64.00617,108.39963 39.2546,16.44182 88.41015,5.71204 116.18669,-26.96827 27.51001,-30.56158 35.26166,-78.1908 15.5962,-115.3044 -17.50925,-34.92134 -55.15768,-58.66893 -94.47266,-57.34375 z m 3.15039,5.83984 c 50.526,-0.51826 96.3024,44.71875 96.46653,95.24587 1.14932,41.54157 -26.50392,82.64569 -66.46982,95.23264 -35.99332,12.03431 -78.87114,1.8712 -104.04675,-27.00091 -28.8013,-31.67336 -33.92229,-83.10132 -9.45777,-118.76471 18.03048,-27.61273 50.31796,-45.65489 83.50781,-44.71289 z"
id="path879"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="19.050001mm"
height="19.050001mm"
viewBox="0 0 19.050001 19.050001"
version="1.1"
id="svg33"
inkscape:version="0.92.3 (unknown)"
sodipodi:docname="checkmark.svg">
<defs
id="defs27">
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Roughen"
id="filter1302">
<feTurbulence
type="fractalNoise"
numOctaves="1"
seed="1"
baseFrequency="0.058 0.051"
result="turbulence"
id="feTurbulence1298" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap1300" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Roughen"
id="filter1308">
<feTurbulence
type="fractalNoise"
numOctaves="1"
seed="1"
baseFrequency="0.058 0.051"
result="turbulence"
id="feTurbulence1304" />
<feDisplacementMap
in="SourceGraphic"
in2="turbulence"
scale="4"
yChannelSelector="G"
xChannelSelector="R"
id="feDisplacementMap1306" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="-331.64987"
inkscape:cy="17.573885"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata30">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-45.281548,-119.27559)">
<path
style="fill:none;stroke:#000000;stroke-width:2.11666656;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1308)"
d="m 46.869048,120.86309 15.875,15.875"
id="path35"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:2.11666656;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter1302)"
d="m 62.744048,120.86309 -15.875,15.875"
id="path35-3"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="2.5244994mm"
height="3.3670478mm"
viewBox="0 0 2.5244994 3.3670478"
version="1.1"
id="svg1335"
inkscape:version="0.92.3 (unknown)"
sodipodi:docname="up-down.svg">
<defs
id="defs1329">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path1903"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="-25.987692"
inkscape:cy="101.94875"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1855"
inkscape:window-height="1056"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata1332">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-87.944799,-119.45095)">
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="M 89.202381,120.33484 V 122.375"
id="path1337"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

View File

@@ -0,0 +1,182 @@
/* Outer items */
QWidget {
background-color: transparent;
color: #eeeeee;
font-family: AmaticSC, sans-serif;
font-size: 50px;
}
QMainWindow {
background: #ffffff qlineargradient(x1:0 y1:1, x2:1, y2:0, stop:0 rgba(255,165,150,255), stop:1 rgba(0,228,255,112));
color: #eeeeee;
}
/* General controls */
QPushButton {
background-color: transparent;
border-style: outset;
border-width: 1px;
border-radius: 15px;
border-color: #eeeeee;
padding: 10px;
}
QPushButton:pressed {
background-color: #66ffffff;
}
/* Idle Screen */
QFrame#IdleMessage {
background-image: url(photobooth/gui/Qt5Gui/images/arrow.png);
background-repeat:; no-repeat;
padding: 80px 400px 120px 80px;
}
QFrame#IdleMessage QLabel {
font-size: 160px;
qproperty-alignment: AlignCenter;
}
QFrame#IdleMessage QPushButton {
border: none;
color: rgba(255, 27, 0, 200);
font-size: 200px;
text-align: center;
}
QFrame#IdleMessage QPushButton:pressed {
background-color: rgba(255, 27, 0, 200);
color: #eeeeee;
}
/* Greeter Screen */
QFrame#GreeterMessage {
padding: 50px;
}
QFrame#GreeterMessage QLabel#title {
font-size: 180px;
qproperty-alignment: AlignCenter;
}
QFrame#GreeterMessage QPushButton#button {
border: none;
font-size: 120px;
margin: 60px 0 20px 0;
min-height: 160px;
padding: 0;
text-align: center;
}
QFrame#GreeterMessage QLabel#message {
font-size: 120px;
qproperty-alignment: AlignCenter;
}
/* Countdown Screen */
QFrame#CountdownMessage {
margin: 20px;
padding: 30px;
background-color: #eeeeee;
}
/* Pose Screen */
QFrame#PoseMessage {
background-image: url(photobooth/gui/Qt5Gui/images/camera.png);
background-repeat: no-repeat;
padding: 380px 80px 80px 80px;
}
QFrame#PoseMessage QLabel {
font-size: 120px;
qproperty-alignment: AlignCenter;
}
/* Wait Screen */
QFrame#WaitMessage {
padding: 350px 80px 80px 80px;
}
QFrame#WaitMessage QLabel {
font-size: 110px;
qproperty-alignment: AlignCenter;
}
/* Picture Screen*/
QFrame#PictureMessage {
margin: 40px;
}
/* Customizing settings */
QTabWidget::pane {
background-color: #eeeeee;
border-style: outset;
border-width: 1px;
border-radius: 15px;
border-color: #eeeeee;
color: #333333;
padding: 10px;
}
QTabWidget::tab-bar {
alignment: center;
}
QTabBar::tab {
background-color: transparent;
border-style: outset;
border-width: 2px;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
border-color: #eeeeee;
padding: 8px;
}
QTabBar::tab:selected {
background-color: #66ffffff;
}
QTabWidget QWidget {
color: #333333;
}
QCheckBox::indicator {
width: 45px;
height: 45px;
background-color: transparent;
border-style: outset;
border-width: 2px;
border-radius: 5px;
border-color: #333333;
}
QCheckBox::indicator::checked {
background-image: url(photobooth/gui/Qt5Gui/images/checkmark.png);
background-repeat: no-repeat;
}
QComboBox, QDateEdit, QLineEdit, QSpinBox, QTimeEdit {
background-color: #eeeeee;
color: #333333;
}
QComboBox QAbstractItemView {
background-color: #cccccc;
color: #333333;
selection-background-color: #eeeeee;
selection-color: #333333;
}
QComboBox QAbstractItemView::item {
margin: 5px;
min-height: 50px;
}