GUI-DDF: Konzept
Eine GUI-DDF beschreibt, wie Werte in der myGEKKO-Visualisierung erscheinen. Grundlage ist der *OBJECT-Block. Jedes Objekt kann zusätzlich drei Felder für eine freie Grafik tragen:
| Feld | Inhalt | Wann ausgewertet |
|---|---|---|
SVG |
ein oder mehrere <svg alias='…'>…</svg>-Fragmente (Vorlagen) |
geparst beim Laden |
SVGANIMATE |
Formel, die das Widget zeichnet (GUI.*-Aufrufe) |
bei jedem Neuzeichnen bzw. per Timer |
SVGEVENT |
Formel für Mausereignisse | bei Maus-/Touch-Ereignissen |
flowchart LR
O[*OBJECT-Zeile] --> S[SVG-Vorlagen<br/>alias → geparstes SVG]
O --> A[SVGANIMATE-Formel]
O --> E[SVGEVENT-Formel]
A -->|GUI.paintSVG 'alias', x,y,w,h,…, KEY,Wert…| R[Renderer]
S --> R
A -->|GUI.fillRect / text / fillPie …| R
E -->|$.MOUSE.* / $.MOUSE.HANDLED| A
V[$.CTRLVAR / $.VAL / $.GUI] --> A
Drei Arten, ein Widget zu bauen
- Nur SVG (ohne
SVGANIMATE): Das erste SVG des Objekts wird unverändert gezeichnet (GUI.paintSvg();ohne Parameter entspricht diesem Verhalten). - SVG-Vorlagen + Formel (DEMO_DDF): Die Formel berechnet Texte und Positionen und ruft
GUI.paintSVG('<alias>', x, y, w, h, winkel, 'KEY', wert, …);auf. In der Vorlage ersetzt der Renderer$(KEY)durch den Wert. - Nur Formel (SVG Visualization Library, SVG_CHARTS): Das Feld
SVGbleibt leer, die Formel zeichnet mitGUI.fillPie,GUI.text,GUI.fillRectusw.
Darstellung in der Visualisierung
Laut Entwicklerdokumentation (FormulaInterpreter.docx):
- Im Visu-Bereich werden die ersten 10 Objekte einer Gruppe als Liste angezeigt.
- Hat das erste Objekt der Gruppe ein
SVGoderSVGANIMATE, ersetzt es die Standarddarstellung. SVGEVENTerhält die Mausereignisse. Zeichenfunktionen werden inSVGEVENTignoriert. Wird dort eine Variable geschrieben, wird neu gezeichnet.
Widget-Größen
Die Formel fragt über $.GUI.WIDGETTYPE bzw. $.GUI.SIZE die Kachelgröße ab:
| Code | Kachel (Breite × Höhe, skaliert) |
|---|---|
0 |
kein Widget (normale Ansicht/Detail) |
1 |
Widget mit nicht standardisierter Größe |
501 |
ca. 210–300 × 40–60 |
502 |
ca. 210–300 × 90–110 |
504 |
ca. 210–300 × 190–210 |
508 |
ca. 210–300 × 390–410 |
1001 |
ca. 410–600 × 40–60 |
1002 |
ca. 410–600 × 90–110 |
1004 |
ca. 410–600 × 190–210 |
1008 |
ca. 410–600 × 390–410 |
$.GUI.WIDGETTYPE wird aus den Pixelmaßen berechnet. $.GUI.SIZE liefert den vom System übergebenen Größenparameter (in der Visualization Library werden ebenfalls die Werte 0/504/508/1004/1008 abgefragt).
Koordinatensystem
GUI.setWindow(x, y, w, h, scale); legt ein logisches Koordinatensystem w × h fest. Es wird seitenverhältnistreu in die Kachel eingepasst und zentriert. Alle folgenden GUI.*-Koordinaten sind logische Einheiten.
Formel-Parsefehler (09.11.2026)
Ist die SVGANIMATE-Formel ungültig (formulaObj nicht bereit), zeichnet das Widget bis zu drei Zeilen der Fehlermeldung in Rot (0xFFFF0000) direkt in die Kachel. So sieht man Syntaxfehler (z. B. fehlendes ;) ohne Debugger. Für SVGEVENT gibt es diese Anzeige nicht (Aussage Hartwig Weidacher, 09.11.2026). Sprache und Format des Fehlertexts sind weiterhin zu klären.
Weiter: *OBJECT-Block · SVG-Elemente · GUI-API · Variablen & Events