Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_pygame_layout_image(text_color, bg_color, layout_number, size):
"""Generate the layout image with the corresponding text.
:param text_color: RGB color for texts
:type text_color: tuple
:param layout_number: number of captures on the layout
:type layout_number: int
:param size: maximum size of the layout surface
:type size: tuple
:return: surface
:rtype: :py:class:`pygame.Surface`
"""
layout_image = get_pygame_image("layout{0}.png".format(layout_number),
size, color=text_color, bg_color=bg_color)
text = language.get_translated_text(str(layout_number))
if text:
rect = layout_image.get_rect()
rect = pygame.Rect(rect.x + rect.width * 0.3 / 2,
rect.y + rect.height * 0.76,
rect.width * 0.7, rect.height * 0.20)
text_font = fonts.get_pygame_font(text, fonts.CURRENT, rect.width, rect.height)
surface = text_font.render(text, True, bg_color)
layout_image.blit(surface, surface.get_rect(center=rect.center))
return layout_image
# Update configuration with plugins ones
plugin_manager.hook.pibooth_configure(cfg=config)
# Ensure config files are present in case of first pibooth launch
if not options.reset:
if not osp.isfile(config.filename):
config.save(default=True)
plugin_manager.hook.pibooth_reset(cfg=config, hard=False)
if options.config:
LOGGER.info("Editing the pibooth configuration...")
config.edit()
elif options.translate:
LOGGER.info("Editing the GUI translations...")
language.edit()
elif options.fonts:
LOGGER.info("Listing all fonts available...")
print_columns_words(get_available_fonts(), 3)
elif options.reset:
config.save(default=True)
plugin_manager.hook.pibooth_reset(cfg=config, hard=True)
else:
LOGGER.info("Starting the photo booth application %s", GPIO_INFO)
app = PiApplication(config, plugin_manager)
app.main_loop()
group.add_argument("-q", "--quiet", dest='logging', action='store_const', const=logging.WARNING,
help=u"report only errors and warnings", default=logging.INFO)
options, _args = parser.parse_known_args()
configure_logging(options.logging, '[ %(levelname)-8s] %(name)-18s: %(message)s', filename=options.log)
config = PiConfigParser("~/.config/pibooth/pibooth.cfg", options.reset)
language.init("~/.config/pibooth/translations.cfg", options.reset)
if options.config:
LOGGER.info("Editing the pibooth configuration...")
config.edit()
elif options.translate:
LOGGER.info("Editing the GUI translations...")
language.edit()
elif options.fonts:
LOGGER.info("Listing all fonts available...")
print_columns_words(get_available_fonts(), 3)
elif options.diagnostic:
LOGGER.info("Starting diagnostic of DSLR camera...")
diagnostic.main()
elif not options.reset:
LOGGER.info("Starting the photo booth application...")
app = PiApplication(config)
app.main_loop()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", dest='logging', action='store_const', const=logging.DEBUG,
help=u"report more information about operations", default=logging.INFO)
group.add_argument("-q", "--quiet", dest='logging', action='store_const', const=logging.WARNING,
help=u"report only errors and warnings", default=logging.INFO)
options, _args = parser.parse_known_args()
configure_logging(options.logging, '[ %(levelname)-8s] %(name)-18s: %(message)s', filename=options.log)
plugin_manager = create_plugin_manager()
# Load the configuration and languages
config = PiConfigParser("~/.config/pibooth/pibooth.cfg", plugin_manager)
language.init(config.join_path("translations.cfg"), options.reset)
# Register plugins
custom_paths = [p for p in config.gettuple('GENERAL', 'plugins', 'path') if p]
load_plugins(plugin_manager, *custom_paths)
LOGGER.info("Installed plugins: %s", ", ".join(list_plugin_names(plugin_manager)))
# Update configuration with plugins ones
plugin_manager.hook.pibooth_configure(cfg=config)
# Ensure config files are present in case of first pibooth launch
if not options.reset:
if not osp.isfile(config.filename):
config.save(default=True)
plugin_manager.hook.pibooth_reset(cfg=config, hard=False)
if options.config:
parser.add_argument("--log", default=None,
help=u"save logs output to the given file")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", dest='logging', action='store_const', const=logging.DEBUG,
help=u"report more information about operations", default=logging.INFO)
group.add_argument("-q", "--quiet", dest='logging', action='store_const', const=logging.WARNING,
help=u"report only errors and warnings", default=logging.INFO)
options, _args = parser.parse_known_args()
configure_logging(options.logging, '[ %(levelname)-8s] %(name)-18s: %(message)s', filename=options.log)
config = PiConfigParser("~/.config/pibooth/pibooth.cfg", options.reset)
language.init("~/.config/pibooth/translations.cfg", options.reset)
if options.config:
LOGGER.info("Editing the pibooth configuration...")
config.edit()
elif options.translate:
LOGGER.info("Editing the GUI translations...")
language.edit()
elif options.fonts:
LOGGER.info("Listing all fonts available...")
print_columns_words(get_available_fonts(), 3)
elif options.diagnostic:
LOGGER.info("Starting diagnostic of DSLR camera...")
diagnostic.main()
elif not options.reset:
LOGGER.info("Starting the photo booth application...")
app = PiApplication(config)
def _initialize(self):
"""Restore the application with initial parameters defined in the
configuration file.
Only parameters that can be changed at runtime are restored.
"""
# Handle the language configuration
language.CURRENT = self._config.get('GENERAL', 'language')
fonts.CURRENT = fonts.get_filename(self._config.gettuple('PICTURE', 'text_fonts', str)[0])
# Set the captures choices
choices = self._config.gettuple('PICTURE', 'captures', int)
for chx in choices:
if chx not in [1, 2, 3, 4]:
LOGGER.warning("Invalid captures number '%s' in config, fallback to '%s'",
chx, self.capture_choices)
choices = self.capture_choices
break
self.capture_choices = choices
# Handle autostart of the application
self._config.handle_autostart()
self._window.arrow_location = self._config.get('WINDOW', 'arrows')
def initialize(self):
"""Restore the application with initial parameters defined in the
configuration file.
Only parameters that can be changed at runtime are restored.
"""
# Handle the language configuration
language.CURRENT = self.config.get('GENERAL', 'language')
fonts.CURRENT = fonts.get_filename(self.config.gettuple('PICTURE', 'text_fonts', str)[0])
# Set the captures choices
choices = self.config.gettuple('PICTURE', 'captures', int)
for chx in choices:
if chx not in [1, 2, 3, 4]:
LOGGER.warning("Invalid captures number '%s' in config, fallback to '%s'",
chx, self.capture_choices)
choices = self.capture_choices
break
self.capture_choices = choices
# Reset printed pages number
self.printer.nbr_printed = 0
# Handle autostart of the application
# Python 3.x fallback
basestring = str
def values_list_repr(values):
"""Concatenate a list of values to a readable string.
"""
return "'{}' or '{}'".format("', '".join([str(i) for i in values[:-1]]), values[-1])
DEFAULT = odict((
("GENERAL",
odict((
("language",
("en",
"User interface language: {}".format(values_list_repr(language.get_supported_languages())),
"UI language", language.get_supported_languages())),
("directory",
("~/Pictures/pibooth",
"Path to save pictures (list of quoted paths accepted)",
None, None)),
("autostart",
(False,
"Start pibooth at Raspberry Pi startup",
"Auto-start", ['True', 'False'])),
("debug",
(False,
"In debug mode, exceptions are not caught, logs are more verbose, pictures are cleared at startup",
"Debug mode", ['True', 'False'])),
("plugins",
('',
"Path to custom plugin(s) not installed with pip (list of quoted paths accepted)",