75 lines
2.7 KiB
Python
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)
|
|
|
|
|