import tkinter as tk #import ttkbootstrap as ttk #from ttkbootstrap.constants import * from gui import App from caditem import CadItem, GuiLogic from controller import Controller from manage_configs import Configs import argparse import os class Environment: def __init__(self): self.lib_dir = os.environ.get('CREMIG_LIB') self.data_dir = os.environ.get('CREMIG_DATA') self.out_dir = os.environ.get('CREMIG_WORK') self.cfg_dir = os.environ.get('CREMIG_CFG') self.log_dir = os.environ.get('CREMIG_LOG') self.ruledesigner_csv_filename = os.environ.get('RD_DATABASE_NAME') def build_gui(model, configs, env, sivasid=None, uselocal=True): root = tk.Tk() #root = ttk.Window() app = App(root) controller = Controller(model, app) controller.set_env(env) controller.set_config(configs) if sivasid: controller.get_csv_files_of_asm(sivasid, uselocal) logic = GuiLogic(model, configs) model.add_logic(logic) # um ohne Observer pattern auch Rückmeldungen geben zu können app.set_controller(controller) model.set_controller(controller) # Daten des Modells in der Oberfläche darstellen controller.refresh_gui() app.mainloop() if __name__ == '__main__': parser = argparse.ArgumentParser(description='Das Programm ermöglicht einw graphisch unterstützte Migration eines Teiles oder Assemblies von Creo nach SolidEdge. Erzeugt eine korrekte Impfdatei.', prog='CreoMigrateGui') parser.add_argument('-s', '--sivasid', action='store', help='Eingabe der SIVAS-Teilenummer, für die der Migrationsstatus angezeigt werden soll') parser.add_argument('-d', '--demo', action='store_true', help='arbeitet ohne Server. Lädt Testdaten ein um nur eine Oberfläche darzustellen') parser.add_argument('-l', '--uselocal', action='store_true', help='Verbinde dich nicht zur Datenbank. Benutzer alle lokalen Dateien (falls vorhanden) für die gegebene asm-id') args = parser.parse_args() environment = Environment() data_dir = environment.data_dir configs = Configs(environment.cfg_dir) configs.set_data_dir(data_dir) model = CadItem() if args.sivasid: sivasid = args.sivasid.strip() output_dir = environment.out_dir assembl_path = os.path.join(output_dir, sivasid + '.json') if os.path.exists(assembl_path): # wenn schon einmal das assembly als json abgespeichert wurde, dann dieses laden model.load(assembl_path) else: # die Gui aufbauen build_gui(model, configs, environment, sivasid, args.uselocal) else: build_gui(model, configs, environment)