Default methoden für alle callbackroutinen rein. Umbau des Aufrufs der gui, um auch assemblies laden zu könenn
This commit is contained in:
+7
-22
@@ -4,11 +4,10 @@ import tkinter as tk
|
||||
from gui import App
|
||||
from caditem import CadItem, GuiLogic
|
||||
from controller import Controller
|
||||
from manage_configs import Configs, SivasAssemblyData
|
||||
from manage_configs import Configs
|
||||
import argparse
|
||||
import os
|
||||
import json
|
||||
from get_teilestamm import FetchSivasTeilestamm
|
||||
|
||||
|
||||
demo_data = """
|
||||
@@ -81,13 +80,14 @@ class Environment:
|
||||
self.cfg_dir = os.environ.get('CREMIG_CFG')
|
||||
self.ruledesigner_csv_filename = os.environ.get('RD_DATABASE_NAME')
|
||||
|
||||
def build_gui(model, configs):
|
||||
def build_gui(model, configs, sivasid, uselocal=True):
|
||||
root = tk.Tk()
|
||||
#root = ttk.Window()
|
||||
app = App(root)
|
||||
|
||||
controller = Controller(model, app)
|
||||
controller.set_env(configs.get_env())
|
||||
controller.get_csv_files_of_asm(sivasid, uselocal)
|
||||
|
||||
logic = GuiLogic(model, configs)
|
||||
model.add_logic(logic)
|
||||
@@ -125,29 +125,14 @@ if __name__ == '__main__':
|
||||
|
||||
elif args.sivasid:
|
||||
sivasid = args.sivasid.strip()
|
||||
filename = sivasid + '.json'
|
||||
|
||||
assembl_path = os.path.join(output_dir, filename)
|
||||
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(demo_data)
|
||||
model.load(assembl_path)
|
||||
else:
|
||||
# ansonsten sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen
|
||||
sivas_teilestamm = FetchSivasTeilestamm(sivasid, data_dir)
|
||||
|
||||
sivas_teilestamm.fetch_from_db(args.uselocal)
|
||||
if not args.uselocal:
|
||||
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
||||
redids = sivas_teilestamm.get_red_ids()
|
||||
sad = SivasAssemblyData(data_dir, filename)
|
||||
parent_children = sad.get_parent_children()
|
||||
|
||||
model.set_red_ids(redids)
|
||||
model.set_parent_children(parent_children)
|
||||
model.set_asm_id(sivasid)
|
||||
|
||||
# dann die Gui damit aufbauen
|
||||
build_gui(model, configs)
|
||||
# die Gui aufbauen
|
||||
build_gui(model, configs, sivasid, args.uselocal)
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
||||
+189
-19
@@ -55,6 +55,7 @@ class CadItem(DataModel):
|
||||
"Freigabevermerk", "ZusaetzlicheInformationen"]
|
||||
|
||||
gui_data_keys = [
|
||||
# Felder der Oberfläche um etwas einzugeben
|
||||
"asm_id",
|
||||
"teilenummer",
|
||||
"datenbank",
|
||||
@@ -96,6 +97,9 @@ class CadItem(DataModel):
|
||||
"freigabevermerk_sivas", "freigabevermerk_neu",
|
||||
"zusatzinfos_auto_text",
|
||||
"zusatzinfos_bendef_text",
|
||||
# das wird nur zur Datenübergabe aus der csv verwendet,
|
||||
# ist also eigentlich kein Teil der gui
|
||||
"truemmer",
|
||||
# Felder der Comboboxen. benannt wie deren callbacks
|
||||
"cb_pdm_kategorie_neu",
|
||||
"cb_halbzeug_neu",
|
||||
@@ -146,7 +150,7 @@ class CadItem(DataModel):
|
||||
"HalbzeugExtern":"halbzeug_sivas",
|
||||
"Werkstoff":"werkstofftyp_sivas",
|
||||
"Oberfläche":"cb_oberflaeche_neu",
|
||||
# "Truemmer":"truemmer",
|
||||
"Truemmer":"truemmer",
|
||||
"HzOhneSaegeliste":"halbzeugOhneSaege_sivas",
|
||||
"Ruestcode":"ruestcode_sivas",
|
||||
"Fertigungsart":"fertigungsart_sivas",
|
||||
@@ -180,6 +184,8 @@ class CadItem(DataModel):
|
||||
def get_asm_id(self):
|
||||
return self.get_gui_data("asm_id")
|
||||
|
||||
def set_current_item_id(self, tid):
|
||||
self.set_gui_data('teilenummer', tid)
|
||||
def get_current_item_id(self):
|
||||
return self.get_gui_data('teilenummer')
|
||||
|
||||
@@ -465,36 +471,36 @@ class GuiLogic():
|
||||
elif key == 'cb_halbzeugOhneSaege_neu':
|
||||
ret = self.cb_halbzeugOhneSaege_neu(value)
|
||||
elif key == 'cb_ruestcode_neu':
|
||||
pass
|
||||
ret = self.cb_ruestcode_neu(value)
|
||||
###
|
||||
elif key == 'cb_fertigungsart_neu':
|
||||
pass
|
||||
ret = self.cb_fertigungsart_neu(value)
|
||||
elif key == 'cb_allgemeintoleranz_neu':
|
||||
pass
|
||||
ret = self.cb_allgemeintoleranz_neu(value)
|
||||
elif key == 'cb_fosGruppe_neu':
|
||||
pass
|
||||
ret = self.cb_fosGruppe_neu(value)
|
||||
elif key == 'cb_kalkulationsart_neu':
|
||||
pass
|
||||
ret = self.cb_kalkulationsart_neu(value)
|
||||
elif key == 'cb_beschaffungsart_neu':
|
||||
pass
|
||||
ret = self.cb_beschaffungsart_neu(value)
|
||||
elif key == 'cb_mengeneinheit_neu':
|
||||
pass
|
||||
ret = self.cb_mengeneinheit_neu(value)
|
||||
elif key == 'cb_halbzeug_neu':
|
||||
pass
|
||||
ret = self.cb_halbzeug_neu(value)
|
||||
elif key == 'cb_dispogruppe_neu':
|
||||
pass
|
||||
ret = self.cb_dispogruppe_neu(value)
|
||||
elif key == 'cb_dispolaufgruppe_neu':
|
||||
pass
|
||||
ret = self.cb_dispolaufgruppe_neu(value)
|
||||
elif key == 'cb_hersteller_neu':
|
||||
pass
|
||||
ret = self.cb_hersteller_neu(value)
|
||||
elif key == 'cb_werkstoffdiskrepanz':
|
||||
pass
|
||||
ret = self.cb_werkstoffdiskrepanz(value)
|
||||
elif key == 'cb_werkstofftyp_neu':
|
||||
pass
|
||||
# ret = self.cb_werkstofftyp_neu(value)
|
||||
ret = self.cb_werkstofftyp_neu(value)
|
||||
elif key == 'cb_material_neu':
|
||||
pass
|
||||
ret = self.cb_material_neu(value)
|
||||
elif key == 'cb_oberflaeche_neu':
|
||||
pass
|
||||
ret = self.cb_oberflaeche_neu(value)
|
||||
elif key == 'cb_farbe_neu':
|
||||
ret = self.cb_farbe_neu(value)
|
||||
else:
|
||||
@@ -584,9 +590,9 @@ class GuiLogic():
|
||||
# Entry-Abhängigkeit der Bezeichnung 1. keine eigene Callback. Abhängig von der Kategorie
|
||||
pdm_kat = ret["pdm_kategorie_neu"]
|
||||
if pdm_kat == "Baugruppe" or pdm_kat == "Schweissbaugruppe":
|
||||
maxlen = 5 # Längenbeschränkung = 45 Zeichen
|
||||
maxlen = 45 # Längenbeschränkung = 45 Zeichen
|
||||
else:
|
||||
maxlen = 10 # Längenbeschränkung = 50 Zeichen
|
||||
maxlen = 50 # Längenbeschränkung = 50 Zeichen
|
||||
text = self._model.get_gui_data("bezeichnung1_sivas")
|
||||
if len(text) > maxlen:
|
||||
ret["bezeichnung1_neu"] = text[0:maxlen]
|
||||
@@ -765,6 +771,147 @@ class GuiLogic():
|
||||
pass
|
||||
return ret
|
||||
|
||||
def cb_ruestcode_neu(self, selected):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_ruestcode_neu'] = ''
|
||||
ret['ruestcode_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
lrstcodes = self._config.Allgemein.get_options("RuestcodeBaugruppe")
|
||||
else:
|
||||
lrstcodes = self._config.Allgemein.get_options("RuestcodeStandard")
|
||||
|
||||
if selected is None:
|
||||
ret['ruestcode_neu'] = lrstcodes[0]
|
||||
ret['cb_ruestcode_neu'] = lrstcodes
|
||||
else:
|
||||
ret['ruestcode_neu'] = selected
|
||||
|
||||
# self._controller.message_info('Rüstcodeinformationen', 'rüstcode_infos')
|
||||
return ret
|
||||
|
||||
def cb_fertigungsart_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_halbzeugOhneSaege_neu'] = ''
|
||||
ret['fertigungsart_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_allgemeintoleranz_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_allgemeintoleranz_neu'] = ''
|
||||
ret['allgemeintoleranz_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_fosGruppe_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_fosGruppe_neu'] = ''
|
||||
ret['fosGruppe_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_kalkulationsart_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_kalkulationsart_neu'] = ''
|
||||
ret['kalkulationsart_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_beschaffungsart_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_beschaffungsart_neu'] = ''
|
||||
ret['beschaffungsart_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_mengeneinheit_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_mengeneinheit_neu'] = ''
|
||||
ret['mengeneinheit_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_halbzeug_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_halbzeug_neu'] = ''
|
||||
ret['halbzeug_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_dispogruppe_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_dispogruppe_neu'] = ''
|
||||
ret['dispogruppe_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_dispolaufgruppe_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_dispolaufgruppe_neu'] = ''
|
||||
ret['dispolaufgruppe_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_hersteller_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_hersteller_neu'] = ''
|
||||
ret['hersteller_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_werkstoffdiskrepanz(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_werkstoffdiskrepanz'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
|
||||
# def cb_werkstofftyp_neu(self, selected_werkstoff):
|
||||
# """bekommt Aluminium, Stahl etc. und setzt dann die anderen Felder der Oberfläche"""
|
||||
|
||||
@@ -802,6 +949,29 @@ class GuiLogic():
|
||||
# }
|
||||
# return ret
|
||||
|
||||
def cb_material_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_material_neu'] = ''
|
||||
ret['material_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
def cb_oberflaeche_neu(self, value):
|
||||
ret = dict()
|
||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||
|
||||
ret['cb_oberflaeche_neu'] = ''
|
||||
ret['oberflaeche_neu'] = ''
|
||||
if pdm_kategorie_neu == "Baugruppe":
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
return ret
|
||||
|
||||
# def oberfläche(self, selected):
|
||||
|
||||
# ret = dict()
|
||||
|
||||
+37
-4
@@ -1,4 +1,8 @@
|
||||
import os
|
||||
|
||||
from manage_configs import SivasAssemblyData
|
||||
from get_teilestamm import FetchSivasTeilestamm
|
||||
|
||||
"""
|
||||
Contains the logic for the MVC of CreoMigrate Gui
|
||||
"""
|
||||
@@ -76,6 +80,24 @@ class Controller(Observer):
|
||||
raise Exception("this path is not defined "+env_path)
|
||||
return ret
|
||||
|
||||
|
||||
def get_csv_files_of_asm(self, asmid, uselocal):
|
||||
""" sich die Einzelteile als .csv und den Aufbau des Assemblies als .json holen """
|
||||
sivas_teilestamm = FetchSivasTeilestamm(asmid, self.get_env("data"))
|
||||
|
||||
# falls uselocal True, dann keine Serverabfrage, sondern mit den lokalen Daten arbeiten
|
||||
sivas_teilestamm.fetch_from_db(uselocal)
|
||||
if not uselocal:
|
||||
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
||||
redids = sivas_teilestamm.get_red_ids()
|
||||
|
||||
sad = SivasAssemblyData(self.get_env("data"), asmid + '.json')
|
||||
parent_children = sad.get_parent_children()
|
||||
|
||||
self._model.set_red_ids(redids)
|
||||
self._model.set_parent_children(parent_children)
|
||||
self._model.set_asm_id(asmid)
|
||||
|
||||
def set_model(self, model):
|
||||
self._model = model
|
||||
self.attach(model)
|
||||
@@ -89,9 +111,9 @@ class Controller(Observer):
|
||||
self._view.data_from_model()
|
||||
|
||||
def get_current_asm_id(self):
|
||||
self._model.get_current_asm_id()
|
||||
self._model.get_asm_id()
|
||||
def set_current_asm_id(self, asm_id):
|
||||
self._model.set_current_asm_id(asm_id)
|
||||
self._model.set_asm_id(asm_id)
|
||||
|
||||
|
||||
def set_current_item_id(self, cid):
|
||||
@@ -103,10 +125,14 @@ class Controller(Observer):
|
||||
red_ids = self._model.get_red_ids()
|
||||
if not cid in red_ids:
|
||||
return
|
||||
|
||||
|
||||
# TODO save current given data. In case, ask whether you should save or drop
|
||||
self.set_gui_data('teilenummer', cid)
|
||||
self._model.set_current_item_id(cid)
|
||||
self._load_cid_data2model(cid)
|
||||
|
||||
|
||||
def _load_cid_data2model(self, cid):
|
||||
"""lädt alle nötigen Daten für diese ID """
|
||||
# falls eine .json Datei davon im Work Ordner existiert, dann diese zuerst versuchen ins Modell zu laden
|
||||
isok = self._model.from_json_file(self.get_env("out"), cid)
|
||||
if isok == False:
|
||||
@@ -162,6 +188,12 @@ class Controller(Observer):
|
||||
#self._view.set_widget_status(widgetname, status)
|
||||
pass
|
||||
|
||||
def message_info(self, title, key, questions='ok'):
|
||||
return tkinter.messageBox.showinfo(title, message[key])
|
||||
|
||||
def message_error(self, title, key, type='error'):
|
||||
pass
|
||||
|
||||
def callback(self, key, value):
|
||||
if not self._model:
|
||||
raise Exception("no model yet added")
|
||||
@@ -174,6 +206,7 @@ class Controller(Observer):
|
||||
elif key == 'cb_zurücksetzen':
|
||||
pass
|
||||
elif key == 'cb_suche_asm':
|
||||
#self._model.save_to_file()
|
||||
pass
|
||||
elif key == 'cb_3dsuchen':
|
||||
self.suche_3d()
|
||||
|
||||
@@ -459,7 +459,8 @@ class Configs:
|
||||
|
||||
def set_data_dir(self, data_dir):
|
||||
self._data_dir = data_dir
|
||||
self.TeileNummern = RuleDesignerDatabaseConfig(data_dir)
|
||||
def get_data_dir(self, data_dir):
|
||||
return self._data_dir
|
||||
|
||||
def set_env(self, env):
|
||||
self._env = env
|
||||
|
||||
Reference in New Issue
Block a user