def start(): """Function that setups everything.""" init_logging() logger_general.info("Start main application") program_state.program.started() gui.start_gui_thread() def wrapper(): c_json.init_file() c_file_changes.start_observing() c_file_changes.sync_waiter.waiter.clear() logger_general.info("Start connecting to server") while program_state.program.is_running() and not c_net_start.connect(timeout=60): # connect till connected # TODO: Add server info (IP:PORT) sleep_time = 1 time.sleep(sleep_time) if program_state.program.is_running(): logger_general.info("Start authentication at server: Trying `auto login` fallback `manual login`") authentication.authenticate_only() program_state.is_authenticated_at_server.wait_till_running() if program_state.program.is_running(): c_synchronization.full_synchronize() if program_state.program.is_running(): mainloop() logger_general.info("Start tray") tray.start_tray(wrapper, shutdown)
def shutdown(): logger_general.info("Start shutdown main program") c_file_changes.sync_waiter.waiter.set() try: c_file_changes.stop_observing() except RuntimeError: pass # already stopped try: c_net_start.close_connection() except RuntimeError: pass # already stopped gui.stop() program_state.program.stopped() logger_general.info("Finished shutdown main program")
def main(start_screen: screens.ScreenName = screens.LOGIN_MANUAL, authentication_only: bool = False, opened_by: Opener = CLIENT): global app if program_state.is_authenticated_at_server.is_running(): if authentication_only: return else: start_screen = screens.EXPLORER else: start_screen = screens.LOGIN_MANUAL logger_general.info(f"Open GUI by {opened_by}") file_changes_json.init_file() # TODO: Needed? app = OpenDriveApp(start_screen, authentication_only) screens.screen_manager = screens.ScreenManager(app) os.chdir(os.path.join(client_paths.CODE_PATH, "client_side/gui/")) app.run()
def wrapper(): c_json.init_file() c_file_changes.start_observing() c_file_changes.sync_waiter.waiter.clear() logger_general.info("Start connecting to server") while program_state.program.is_running() and not c_net_start.connect(timeout=60): # connect till connected # TODO: Add server info (IP:PORT) sleep_time = 1 time.sleep(sleep_time) if program_state.program.is_running(): logger_general.info("Start authentication at server: Trying `auto login` fallback `manual login`") authentication.authenticate_only() program_state.is_authenticated_at_server.wait_till_running() if program_state.program.is_running(): c_synchronization.full_synchronize() if program_state.program.is_running(): mainloop()
def mainloop(): logger_general.info("Start mainloop") while program_state.program.is_running(): logger_general.info("Waiting for changes") c_file_changes.sync_waiter.waiter.wait() if program_state.program.is_running(): time.sleep(MIN_UPDATE_PAUSE_TIME) c_file_changes.sync_waiter.waiter.clear() logger_general.info("Full synchronize") c_synchronization.full_synchronize()
def stop(): global app if app: app.stop() logger_general.info("Stopped GUI")