import re import ctypes import sys import dearpygui.dearpygui as dpg import numpy as np from dotenv import load_dotenv import config_ui import remote_run_ui import map_edit_ui from style import setup_fonts, setup_themes from handlers import setup_handlers from paths import ICON_PATH from remote_run_constants import LOMONOSOV def exit_callback(): connections = dpg.get_item_user_data('run_window').get('connections', []) builds = dpg.get_item_user_data('run_window').get('builds', []) # with open('credentials.txt', 'a+', encoding='utf-8') as log: # for host in connections: # conn = connections[host] # if conn.host == LOMONOSOV: # if conn.id_rsa_path: # desc = f'{conn.host};{conn.username};{conn.id_rsa_path}' # else: # desc = f'{conn.host};{conn.username}' # else: # desc = f'{conn.host};{conn.username};{conn.password}' # log.write(desc + '\n') # with open('builds.txt', 'a+', encoding='utf-8') as log: # for machine, model in builds: # log.write(f'{machine};{model};{builds[(machine, model)]}\n') # with open('sessions.txt', 'a+', encoding='utf-8') as log: # for row in dpg.get_item_children('models_table', 1): # running_session_id = dpg.get_item_alias(row) # model = dpg.get_value(f'{running_session_id}_model') # machine = dpg.get_value(f'{running_session_id}_machine') # log.write(f'{running_session_id};{machine};{model}\n') for conn in connections: connections[conn].close() def construct_ui(): config_ui.construct_ui() remote_run_ui.construct_ui() map_edit_ui.construct_ui() setup_handlers() setup_fonts() setup_themes() load_dotenv() if sys.platform.startswith('win'): ctypes.windll.shcore.SetProcessDpiAwareness(1) if __name__ == '__main__': dpg.create_context() dpg.create_viewport( title='config file editor', small_icon=ICON_PATH, large_icon=ICON_PATH ) dpg.setup_dearpygui() dpg.show_viewport() construct_ui() dpg.set_exit_callback(exit_callback) dpg.set_primary_window('main', True) dpg.start_dearpygui() dpg.destroy_context()