Files
CreoMigrate/lib/CreoMigrateGui.py
T

75 lines
2.7 KiB
Python

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, configs)
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)