[ TAG 458 ][22.06.2022] -Erfolgreich -IAP-20220403-20220403-1150 ADPSYS

Das [ ADPSYS ] steht für AREA-DIMENSION-PROBLEM-SYSTEM. Meine Arbeit beginnt heute mit dem [WO_20220621_AUSGABE]. In dieser Datei habe ich gestern die Ausgabe des Moduls [ DeFSTL_LIB ] festgehalten und überprüft.

---------------------------------------------------------------------
Ich möchte noch etwas schreiben. Definitiv möchte ich an diesen Projekt etwas verdienen. Ich brauche ein Einkommen wie jeder andere. Aber ich habe auch Verantwortung gegenüber der Gesellschaft und den Menschen meinen Zeitgenossen mit denen ich hier und jetzt zusammen lebe. Deswegen bemühe ich mich so offen und Frei meine Arbeiten für andere Menschen und Generationen zu führen. Deswegen bin ich für jeden, der sich mit meiner Arbeit beschäftigt sehr dankbar. Es ist sehr schwer die Öffentlichkeitsarbeit zu führen um seine Arbeiten mit allen Menschen dieser Welt zu teilen und gleichzeitig auch an den eigentlichen Projekte zu arbeiten und zu entwickeln. Ich führe diese Public-Communitation Arbeit seit einem Jahr. Dabei ist mir aufgefallen, dass das ich während des Schreibens meine Gedanken entwickele. Es entstehen neue Denkprozesse und diese lassen sich positiv in die Entwicklungsarbeit integrieren. Zu diesen Punkt musste ich kommen, weil ich mit meinen 30 Jahren die Idee des Perfektionismus verwerfen musste. Die Idee, dass man alle Antworten und alle Umstände bereits kennen muss. Diese Einstellung habe ich unseren Schulsystem und Studien zu verdanken. Als Beispiel nehmen wir Projekt-Management. PM hatte ich der Schule und uns wurden viele Werkzeuge mitgegeben, die ich jetzt nicht mehr alle auswendig kann. Diese Methoden sind unter realen Bedingungen immer bei mir gescheitert. Der Grund dafür war immer ganz einfach. Ich beginne mit einen Projekt. Dieses Projekt beschäftigt sich mit einen bestimmten Thema. Ich habe Pläne gemacht und angefangen diese Umzusetzen. Währen der Umsetzung, lernt man immer etwas neues. Man wächst mit dem Projekt. Bei diesen Plänen und Strukturen war ein Anfang und ein Ende definiert. Unter realen Bedingungen und während der Umsetzung merkte ich, das man mit etwas Anfängt aber das Ende und das Endergebnis eigentlich nicht wirklich kennt. Einige Dinge lassen sich nicht so umsetzen wie geplant. Im schlimmsten Falls lassen sich einige Dinge gar nicht umsetzen. Es entsteht ein sehr dynamisches Bild und eine Komplexität mit der man umgehen muss. Ich denke es geht nicht um Fehlschläge, Gewinnen oder Verlieren. Es geht um den Fortschritt. Es geht um die Entwicklung. Es geht darum Schritt für Schritt weiter zu gehen.
---------------------------------------------------------------------

Zurück zu den ADPSYS. Eigentlich kann ich die GUI mit drei Ebenen bzw. vier Ebenen realisieren.

  • [ Ebene-0 ].......[ WND ]-Objekt
  • [ Ebene-1 ].......[ GRP ]-Objekte
  • [ Ebene-2 ].......[ FRM ]-Objekte
  • [ Ebene-3 ].......[ ENT, BTN, LBL ]-Objekte
Das ADPSYS müsste eigentlich nach Ebenen arbeiten. Man kann nicht einfach die [USERSTL] von oben nach unten durch iterieren. Die geometrischen Eigenschaften werden von der untersten Ebene zu der höchsten Ebene hergeleitet. Die Elemente, die sich in der [ Ebene-2 ] befinden, resultieren aus den Elementen der [ Ebene-3 ].

Somit müsste ich eigentlich eine Funktion haben, die alle Elemente aus der gewünschten Ebene herausgibt.

Diese Funktion sieht so aus.
def GET_ELMTS_FROM_LVL(userstl=None, lvl=0, event_elmt=True):
elmts = []
for stl_key in userstl:
e_lvl = 0
if "-" in stl_key:
e_lvl = len(stl_key.split("-"))
elif "GRP" in stl_key:
e_lvl = 1
if e_lvl == lvl:
if event_elmt:
elmts.append(stl_key)
else:
if IS_EVNT_ELMT(stl_key=stl_key) is False:
elmts.append(stl_key)
return elmts
Und so wird sie vom ADPSYS-ITERATOR verwendet.
def ADPSYS_ITERATOR(userstl=None, defstl=None):
print("ADPSYS_ITERATOR")
lvls = [0, 1, 2, 3]
for l in lvls[::-1]:
print(f"l: {l}")
elmts = GET_ELMTS_FROM_LVL(userstl=userstl, lvl=l, event_elmt=False)
print(f"l: {l} elmts: {elmts}")
print("")
Und so sieht die Ausgabe aus.
---------------------------------------------------

l: 3
l: 3 elmts: ['GRP00-FRM00-LBL00', 'GRP00-FRM00-ENT00', 'GRP00-FRM00-BTN00', 'GRP01-FRM00-LBL00', 'GRP01-FRM00-ENT00', 'GRP01-FRM01-LBL00', 'GRP01-FRM01-ENT00', 'GRP01-FRM02-LBL00', 'GRP01-FRM02-ENT00', 'GRP02-FRM00-LBL00', 'GRP02-FRM00-LBL01', 'GRP02-FRM00-ENT00', 'GRP02-FRM01-LBL00', 'GRP02-FRM01-LBL01', 'GRP02-FRM01-ENT00', 'GRP02-FRM02-LBL00', 'GRP02-FRM02-LBL01', 'GRP02-FRM02-ENT00', 'GRP02-FRM03-LBL00', 'GRP02-FRM03-LBL01', 'GRP02-FRM03-ENT00', 'GRP02-FRM04-LBL00', 'GRP02-FRM04-LBL01', 'GRP02-FRM04-ENT00', 'GRP02-FRM05-LBL00', 'GRP02-FRM05-LBL01', 'GRP02-FRM05-ENT00', 'GRP02-FRM06-LBL00', 'GRP02-FRM06-LBL01', 'GRP02-FRM06-ENT00', 'GRP02-FRM07-LBL00', 'GRP02-FRM07-LBL01', 'GRP02-FRM07-ENT00', 'GRP02-FRM07-ENT01', 'GRP02-FRM07-ENT02', 'GRP02-FRM07-ENT03']

l: 2
l: 2 elmts: ['GRP00-FRM00', 'GRP01-FRM00', 'GRP01-FRM01', 'GRP01-FRM02', 'GRP02-FRM00', 'GRP02-FRM01', 'GRP02-FRM02', 'GRP02-FRM03', 'GRP02-FRM04', 'GRP02-FRM05', 'GRP02-FRM06', 'GRP02-FRM07']

l: 1
l: 1 elmts: ['GRP00', 'GRP01', 'GRP02']

l: 0
l: 0 elmts: ['WND', 'ILG', 'EXT00']

---------------------------------------------------

Für das [ ADPSYS ] sind die EVNT-Elemente nicht relevant und können komplett ausgeblendet werden. Deswegen hat die Funktion das Attribut [event_elmt].

Weil wir die [stl_keys] haben sind wir in der Lage die Nachbarelemnte des Zielelementes zu ermitteln. Wir sind in der Lage Kind und Elternelemente zu ermitteln. Diese Informationen sind für die Ermittlung der Positionen entscheidend.

Aber als erstes müssen die Breiten und Höhen definiert werden. Ich befinde mich gerade im untersten LVL-3.

def ADPSYS_LVL_3_CHK_00(userstl_i, defstl_i, min_width, min_height):
print(f"si_width: {userstl_i[si_width]}")
print(f"si_height: {userstl_i[si_height]}")
print(f"si_chldmw: {userstl_i[si_chldmw]}")
print(f"si_chldmh: {userstl_i[si_chldmh]}")
userstl_i[si_width] = MIN_VAL(chk_val=userstl_i[si_width], def_val=defstl_i[si_width], min_val=min_width)
userstl_i[si_height] = MIN_VAL(chk_val=userstl_i[si_height], def_val=defstl_i[si_height], min_val=min_height)
userstl_i[si_chldw] = userstl_i[si_width]
userstl_i[si_chldh] = userstl_i[si_height]
print(f"userstl_i: {userstl_i}")
print(f"defstl_i: {defstl_i}")


def ADPSYS_LVL_3(elmts, userstl, defstl):
min_width = 40
min_height = 15
for stl_key in elmts:
print(f"stl_key: {stl_key}")
e_attr = GET_LKEY_ATTR(stl_key=stl_key)
lst_elmt = e_attr[si_lstelmt]
ADPSYS_LVL_3_CHK_00(userstl_i=userstl[stl_key], defstl_i=defstl[lst_elmt], min_width=min_width, min_height=min_height)
print("")
Ausgabe:

-----------------------------------------------------------------
stl_key: GRP02-FRM07-ENT03
si_width: None
si_height: None
si_chldmw: None
si_chldmh: None
userstl_i: {'text': '1', 'x': None, 'y': None, 'width': 40, 'height': 15, 'CHLD-WIDTH': 40, 'CHLD-HEIGHT': 15, 'CHLD-MARGINS-WIDTH': None, 'CHLD-MARGINS-HEIGHT': None, 'margin-right': 0, 'margin-left': 0, 'margin-top': 0, 'margin-bottom': 0, 'justify': 'left', 'font': ('Consolas', 8), 'bg': '#ff0000', 'fg': '#00ff00', 'bd': 0, 'widget': None}
defstl_i: {'x': None, 'y': None, 'width': None, 'height': None, 'justify': None, 'font': None, 'text': None, 'bg': None, 'fg': None, 'bd': None, 'widget': None, 'CHLD-WIDTH': None, 'CHLD-HEIGHT': None, 'CHLD-MARGINS-WIDTH': None, 'CHLD-MARGINS-HEIGHT': None, 'margin-right': None, 'margin-left': None, 'margin-top': None, 'margin-bottom': None}
-----------------------------------------------------------------

Mit der [ CHK_00 ] werden folgende Eigenschaften gesetzt.
  • [si_width]
  • [si_height]
  • [si_chldw]
  • [si_chldh]
Der Filter [ CHK_10 ] berechnet die Eigenschaften:
  • [si_chldmw]
  • [si_chldmh]
Der Filter [ CHK_20 ] setzt die Koordinaten, die [None] sind, auf [0]. Die vom User vergebenen Koordinaten werden von diesen Filter erst einmal ignoriert.

Der Filter [ CHK_21 ] berechnet die [x] und [y] Koordinaten.

------------------------------------------------------------------

Bei der [ ADPSYS_LVL_2 ] sieht die Struktur eigentlich genau so aus wie bei der Methode [ ADPSYS_LVL_3 ]. Der Unterschied besteht darin, dass die [ min_width ] und [ min_height ] von Kindelementen bestimmt werden.


Kommentare

Beliebte Posts aus diesem Blog

[ TAG 38 ][29.05.2021] - Erfolgreich - Freelancer-Portale

[ TAG 747 ][07.04.2023] -Erfolgreich -BNKTRS -Google Code -Objekt und Methodenliste

[ TAG 52 ][12.06.2021] - Erfolgreich - IAP-20210601-20210609-2325