Exemple #1
0
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)
Exemple #2
0
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")
Exemple #3
0
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()
Exemple #4
0
 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()
Exemple #5
0
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()
Exemple #6
0
def stop():
    global app
    if app:
        app.stop()
        logger_general.info("Stopped GUI")