def main(): """Application entry point. """ configure_logging() plugin_manager = create_plugin_manager() config = PiConfigParser("~/.config/pibooth/pibooth.cfg", plugin_manager) counters = Counters(config.join_path("counters.pickle"), taken=0, printed=0, forgotten=0, remaining_duplicates=config.getint( 'PRINTER', 'max_duplicates')) if '--json' in sys.argv: print(json.dumps(counters.data)) elif '--update' in sys.argv: try: print("\nUpdating counters (current value in square bracket):\n") for name in counters: value = input(" -> {:.<18} [{:>4}] : ".format( name.capitalize(), counters[name])) if value.strip(): setattr(counters, name, int(value)) except KeyboardInterrupt: pass print() else: print("\nListing current counters:\n") for name in counters: print(" -> {:.<25} : {:>4}".format(name.capitalize(), counters[name])) print()
def main(): """Application entry point. """ configure_logging() plugin_manager = create_plugin_manager() config = PiConfigParser("~/.config/pibooth/pibooth.cfg", plugin_manager) # Register plugins plugin_manager.load_all_plugins( config.gettuple('GENERAL', 'plugins', 'path'), config.gettuple('GENERAL', 'plugins_disabled', str)) LOGGER.info( "Installed plugins: %s", ", ".join([ plugin_manager.get_friendly_name(p) for p in plugin_manager.list_external_plugins() ])) # Update configuration with plugins ones plugin_manager.hook.pibooth_configure(cfg=config) # Initialize varibales normally done by the app picture_plugin = plugin_manager.get_plugin('pibooth-core:picture') picture_plugin.texts_vars['date'] = datetime.now() picture_plugin.texts_vars['count'] = Counters( config.join_path("counters.pickle"), taken=0, printed=0, forgotten=0, remaining_duplicates=config.getint('PRINTER', 'max_duplicates')) for path in config.gettuple('GENERAL', 'directory', 'path'): regenerate_all_images(plugin_manager, config, path)
def main(): """Application entry point. """ if hasattr(multiprocessing, 'set_start_method'): # Avoid use 'fork': safely forking a multithreaded process is problematic multiprocessing.set_start_method('spawn') parser = argparse.ArgumentParser(usage="%(prog)s [options]", description=pibooth.__doc__) parser.add_argument('--version', action='version', version=pibooth.__version__, help=u"show program's version number and exit") parser.add_argument("--config", action='store_true', help=u"edit the current configuration and exit") parser.add_argument("--translate", action='store_true', help=u"edit the GUI translations and exit") parser.add_argument( "--reset", action='store_true', help=u"restore the default configuration/translations and exit") parser.add_argument("--fonts", action='store_true', help=u"display all available fonts and exit") parser.add_argument( "--nolog", action='store_true', default=False, help= u"don't save console output in a file (avoid filling the /tmp directory)" ) 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() if not options.nolog: filename = osp.join(tempfile.gettempdir(), 'pibooth.log') else: filename = None configure_logging(options.logging, '[ %(levelname)-8s] %(name)-18s: %(message)s', filename=filename) 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: 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()