fix: VF-Linienzug 100%-Wiederherstellung aus e76e24e abgeschlossen

Restauriert alles aus e76e24e, das nach dem Reset auf master fehlte oder nur
teilweise wiederhergestellt war, und mit dem Kollegen-Umbau abgeglichen:

- vf_core.lsp: Radio-Button-Dialoge fuer Anlagen-Typ/Linienzug-Modus
  (vfc-dialog-typ-waehlen/-linienzug-modus-waehlen) + Zurueck-Schleife im
  c:VarioFoerderer-Dispatcher
- Vario-Kurve/GF-Bogen-Erkennung am Kettenanfang: vfl-eingang-modus-bestimmen
  threaded durch vfl-vf-eingang-bauen/vfl-vf-einheit/vfl-vf-einheit-abschluss,
  inkl. Punkt-7-Winkel/Hoehen-Tabelle fuer reduzierten Eingang
- Modus 2: Lauf-Anfang/Lauf-Abschluss (offener Anfang/Ende, GF-Verteilung
  "alles Auslauf", Kletter-zu-kurz-Fallback) + Separator VOR/NACH bei
  GF-Geraden
- Systemischer Bug behoben: mehrere Wizard-Dialogfunktionen nutzten noch
  start_list/add_list (Dropdown) gegen laengst auf boxed_radio_column
  umgestellte DCL-Dialoge (vflw-gruppe-as/-gefaelle/-variokurve/
  -winkel-seite-impl, vflw-seg-linie-m2/-m3/-bogen-impl,
  vfl-glied-gf-bogen/-vario/-as-es-dialog)
- Zentraler Abbruch-Trigger in vfl-in-value/-value-p wiederhergestellt (ohne
  ihn wirkte der Zurueck/Abbrechen-Button in keinem Wizard-Dialog)
- vfl-frage-ist-endpunkt/-ist-kettenende als eigene Funktionen mit
  Wizard-Dialog extrahiert (vorher Konsolen-Duplikate ohne Dialog-Hookup)
- 3 vfs-vf-entry-Aufrufe mit falscher Argumentzahl gefixt (akute
  Absturz-Bugs in Modus 2/3)
- Tote Funktion vflw-gruppe-horizontal-impl entfernt (Tiles nicht mehr im
  DCL vorhanden)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Yuelin Wang
2026-09-11 18:26:48 +02:00
co-authored by Claude Sonnet 5
parent 4a444b4858
commit 0a1d21d8c5
13 changed files with 3106 additions and 654 deletions
+92 -10
View File
@@ -1,16 +1,98 @@
// ============================================================
// variofoerderer.dcl - Standard-VarioFoerderer Parameter-Eingabe
// Zwei Dialoge fuer den Standardfall (anlage-typ "standard") von
// c:VarioFoerderer, ersetzen die interaktive Werteingabe (Modus
// "Werteingabe") aus vf-eingabe-abfragen / vf_core.lsp:
// Dialog 1 (variofoerderer_basis): deltaL, deltaH, Foerderrichtung,
// Einfuegehoehe, Fahrtrichtung, Seite.
// Dialog 2 (variofoerderer_winkel): Winkel (dynamisch berechnete
// gueltige Varianten), Verteilung der Gefaellestrecken vorne/hinten.
// Die 3D-Linie-Eingabe (Modus "3D-Linie") und andere Anlagen-Typen
// (Etage, Linienzug) bleiben interaktiv (Kommandozeile).
// variofoerderer.dcl - VarioFoerderer Parameter-Eingabe
// Dialoge fuer c:VarioFoerderer (vf_core.lsp):
// vfc_typ: Anlagen-Typ waehlen (Standard/Etage/Linienzug) - ersetzt die
// Konsolen-Liste am Befehlsanfang. Radio-Buttons statt Dropdown, daher
// Labels FEST auf Deutsch (siehe Kommentar bei vfc_linienzug_modus).
// vfc_linienzug_modus: NUR bei Typ "Linienzug" - Modus 1/2/3 waehlen.
// variofoerderer_basis/variofoerderer_winkel: Werteingabe fuer den
// Standardfall (anlage-typ "standard"): deltaL, deltaH, Foerderrichtung,
// Einfuegehoehe, Fahrtrichtung, Seite, Winkel, GF-Verteilung.
// Die 3D-Linie-Eingabe (Modus "3D-Linie"), der Etage-Typ und die
// Linienzug-Kette selbst (nach der Modus-Wahl) bleiben interaktiv
// (Kommandozeile bzw. eigener Wizard in vf_linienzug_wizard.dcl).
// ============================================================
// Anlagen-Typ waehlen (Standard/Etage/Linienzug). Radio-Buttons statt
// Dropdown - alle Optionen sofort sichtbar. WICHTIG: Labels sind hier FEST
// einprogrammiert (Deutsch) und NICHT wie bei popup_list zur Laufzeit aus
// ssg-text befuellbar (set_tile kann das Label eines radio_button nicht
// setzen, nur den Zustand - siehe auch dcl/vfl_edit_modus.dcl). Bei
// aktivem Englisch (DXFM_LANG=en_GB) faellt vfc-dialog-typ-waehlen in
// vf_core.lsp automatisch auf die alte, vollstaendig uebersetzte
// Konsolen-Liste zurueck (siehe dortiger Kommentar).
vfc_typ : dialog {
label = "VarioFoerderer - Anlagen-Typ";
: boxed_radio_column {
label = "Anlagen-Typ waehlen:";
key = "typ";
: radio_button {
key = "typ_standard";
label = "Standard VarioFoerderer (AS/ES 90 Grad, horizontal versetzt)";
value = "1";
}
: radio_button {
key = "typ_etage";
label = "Etage VarioFoerderer (AS/ES 30 Grad, direkt uebereinander)";
}
: radio_button {
key = "typ_linienzug";
label = "3D-Linienzug (gemischte GF/VF-Kette)";
}
}
// 3-Button-Zeile wie im Linienzug-Wizard (dcl/vf_linienzug_wizard.dcl):
// Zurueck(2)/Ok Weiter(1)/Abbrechen(0). "Zurueck" hat hier nichts, wohin es
// zurueckspringen koennte (erste Frage der gesamten Anlage) - vf_core.lsp
// zeigt in diesem Fall einfach denselben Dialog erneut.
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Linienzug-Modus waehlen (nur wenn Anlagen-Typ = Linienzug). Radio-Buttons,
// gleicher Deutsch-fest-Grund wie bei vfc_typ oben.
vfc_linienzug_modus : dialog {
label = "VarioFoerderer - Linienzug Modus";
: boxed_radio_column {
label = "Linienzug-Modus waehlen:";
key = "modus";
: radio_button {
key = "modus_1";
label = "Manuelle Eingabe (Punkte klicken)";
value = "1";
}
: radio_button {
key = "modus_2";
label = "3D-Objekte + Ziel-Hoehe (Randwert-Solver, fertig)";
}
: radio_button {
key = "modus_3";
label = "3D-Objekte stueckweise (Vorwaerts-Nachbau, in Arbeit)";
}
}
// "Zurueck" springt hier sinnvoll zur Anlagen-Typ-Frage zurueck (siehe
// vfc-dialog-linienzug-modus-waehlen/c:VarioFoerderer).
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
variofoerderer_basis : dialog {
label = "VarioFoerderer (Standard) - Eingabe";
+713 -62
View File
@@ -31,7 +31,14 @@ vflw_zahl : dialog {
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Mehrfachauswahl (ersetzt eine princ-Menue-Liste + getstring/getint).
@@ -55,7 +62,14 @@ vflw_wahl : dialog {
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// ============================================================
@@ -112,14 +126,24 @@ vflw_punkt_zahl : dialog {
}
}
ok_cancel;
// "back" nutzt hier done_dialog 3 statt 2 - Code 2 ist bereits durch den
// "Punkt waehlen..."-Button oben belegt (siehe vflw-gruppe-punkt-hoehe-impl).
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// AS-/ES-Element (Kettenanfang bzw. -ende): Ja/Nein-Toggle + Winkel + Seite
// in einem Bildschirm - "kopf" traegt die konkrete Frage (AS oder ES),
// "setzen" bleibt bewusst generisch beschriftet, damit derselbe Dialog fuer
// beide Faelle passt. Winkel/Seite werden deaktiviert, solange der Toggle
// aus ist.
// aus ist. Radio-Buttons statt Dropdown, Labels daher fest auf Deutsch
// (siehe Kommentar bei vfc_typ in variofoerderer.dcl).
vflw_as : dialog {
label = "VarioFoerderer Assistent";
@@ -133,24 +157,34 @@ vflw_as : dialog {
key = "setzen";
label = "Ja, setzen";
}
: popup_list {
key = "winkel";
: boxed_radio_column {
label = "Winkel:";
width = 20;
key = "winkel";
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
: radio_button { key = "winkel_30"; label = "30 Grad"; }
}
: popup_list {
key = "seite";
: boxed_radio_column {
label = "Seite:";
width = 20;
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Winkel + Seite. Wiederverwendet fuer GF-Bogen (3 Winkel-Optionen) UND
// ES-Element am Kettenende (2 Winkel-Optionen) - die Optionsliste wird pro
// Aufruf zur Laufzeit befuellt, die Feld-Anzahl ist in beiden Faellen gleich.
// Winkel + Seite. Wiederverwendet fuer GF-Bogen (3 Winkel-Optionen: 30/60/90)
// UND ES-Element am Kettenende (2 Winkel-Optionen: 90/30 - dort wird
// "winkel_60" per mode_tile deaktiviert, siehe vflw-gruppe-winkel-seite-impl/
// vfl-glied-as-es-dialog). Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_winkel_seite : dialog {
label = "VarioFoerderer Assistent";
@@ -160,22 +194,33 @@ vflw_winkel_seite : dialog {
label = "";
width = 60;
}
: popup_list {
key = "winkel";
: boxed_radio_column {
label = "Winkel:";
width = 20;
key = "winkel";
: radio_button { key = "winkel_30"; label = "30 Grad"; }
: radio_button { key = "winkel_60"; label = "60 Grad"; }
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
}
: popup_list {
key = "seite";
: boxed_radio_column {
label = "Seite:";
width = 20;
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Vario-Kurve: Winkel + Seite + Variante (aussen/innen) in einem Bildschirm.
// Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_variokurve : dialog {
label = "VarioFoerderer Assistent";
@@ -185,30 +230,41 @@ vflw_variokurve : dialog {
label = "";
width = 60;
}
: popup_list {
key = "winkel";
: boxed_radio_column {
label = "Winkel:";
width = 20;
key = "winkel";
: radio_button { key = "winkel_30"; label = "30 Grad"; }
: radio_button { key = "winkel_60"; label = "60 Grad"; }
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
}
: popup_list {
key = "seite";
: boxed_radio_column {
label = "Seite:";
width = 20;
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
: popup_list {
key = "variante";
: boxed_radio_column {
label = "Variante:";
width = 20;
key = "variante";
: radio_button { key = "variante_aussen"; label = "Aussen"; value = "1"; }
: radio_button { key = "variante_innen"; label = "Innen"; }
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Gefaelle festlegen (Linie GF): Modus (Hoehe/Winkel) + EIN Wertfeld, dessen
// Beschriftung sich je nach Modus umschaltet (Action-Tile auf "modus", siehe
// vflw-gruppe-gefaelle-impl in vf_linienzug.lsp). Kein Punkt-Feld - siehe
// Kopfkommentar oben.
// Kopfkommentar oben. Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_gefaelle : dialog {
label = "VarioFoerderer Assistent";
@@ -218,10 +274,11 @@ vflw_gefaelle : dialog {
label = "";
width = 60;
}
: popup_list {
key = "modus";
: boxed_radio_column {
label = "Eingabe als:";
width = 40;
key = "modus";
: radio_button { key = "modus_winkel"; label = "Neigungswinkel eingeben"; value = "1"; }
: radio_button { key = "modus_hoehe"; label = "Gegebene Hoehe (Zielhoehe)"; }
}
: text {
key = "wlabel";
@@ -232,15 +289,64 @@ vflw_gefaelle : dialog {
label = "";
edit_width = 10;
}
// Nur befuellt/sichtbar relevant, wenn vflw-gruppe-gefaelle-impl mit
// nur-winkel=T aufgerufen wird (Zweig "Zielhoehe zuerst festlegen" bei
// "Neue Linie: GF") - zeigt dann den Hinweis, dass deltaL daraus
// berechnet wird, statt der sonst hier stehenden Hoehe-Option.
: text {
key = "hinweis";
label = "";
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Horizontales Stueck: Separator-vor + Separator-nach + "Foerderer-Ende?"
// (3 Optionen) in einem Bildschirm. Kein Punkt-Feld - siehe Kopfkommentar
// oben.
vflw_horizontal : dialog {
// "Wie soll die Laenge dieser Gefaellestrecke bestimmt werden?" (Neue Linie:
// GF) - Endpunkt-Pick (heutiges Verhalten) ODER Zielhoehe zuerst festlegen
// (Laenge wird dann aus Zielhoehe+Winkel berechnet, siehe
// vflw-gruppe-gf-laenge-modus-impl). Nur gezeigt, wenn bereits ein Frame
// existiert (Kettenanfang braucht weiterhin zwingend den Pick fuer die
// Richtung). Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_gf_laenge_modus : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "modus";
label = "";
: radio_button { key = "modus_endpunkt"; label = "Endpunkt waehlen (Laenge ergibt sich)"; value = "1"; }
: radio_button { key = "modus_hoehe"; label = "Zielhoehe festlegen (Laenge wird berechnet)"; }
: radio_button { key = "modus_steigend"; label = "Steigende GF (Sonderfall, bis 3 Grad)"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Separator VOR/NACH bei "Neue Linie: GF": beide Ja/Nein-Fragen in einem
// Bildschirm (Toggles, da echte Ja/Nein-Fragen - kein Radio-Cluster noetig).
// Siehe vflw-gruppe-sep-gf-impl in vf_linienzug.lsp.
vflw_sep_gf : dialog {
label = "VarioFoerderer Assistent";
: column {
@@ -251,20 +357,502 @@ vflw_horizontal : dialog {
}
: toggle {
key = "sepvor";
label = "Separator VOR dem Stueck";
label = "Separator VOR dieser Gefaellestrecke";
}
: toggle {
key = "sepnach";
label = "Separator NACH dem Stueck";
}
: popup_list {
key = "istende";
label = "Foerderer-Ende:";
width = 45;
label = "Separator NACH dieser Gefaellestrecke";
}
}
ok_cancel;
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Horizontales Stueck: nur noch "Foerderer-Ende?" (3 Optionen) - kein
// Separator mehr (siehe vfl-baue-horizontal-koerper). Kein Punkt-Feld -
// siehe Kopfkommentar oben. Radio-Buttons statt Dropdown, Labels daher fest
// auf Deutsch (siehe Kommentar bei vfc_typ in variofoerderer.dcl).
vflw_horizontal : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Foerderer-Ende:";
key = "istende";
: radio_button {
key = "istende_0";
label = "Ja (nur Motorstation setzen)";
value = "1";
}
: radio_button {
key = "istende_1";
label = "Nein (weiterbauen)";
}
: radio_button {
key = "istende_2";
label = "Ja (Motorstation setzen, Kettenende definieren)";
}
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// "Naechstes Element waehlen" - Hauptmenue des Linienzug-Aufbaus (Modus 1).
// IMMER alle 6 Optionen im Dialog vorhanden (stabile Keys) - "Vario-Kurve"
// wird per mode_tile deaktiviert, wenn kein echter Kettenanfang vorliegt
// (siehe vflw-gruppe-naechstes-element-impl, das dort auch die Positions-
// Nummerierung passend umrechnet). Radio-Buttons statt Dropdown, Labels fest
// deutsch, OHNE Nummern-Prefix (anders als die Konsolen-Variante - hier
// braucht es keine Zifferneingabe).
vflw_naechstes_element : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_gfbogen"; label = "GF-Bogen (horizontale Kurve)"; }
: radio_button { key = "wahl_variokurve"; label = "Vario-Kurve (horizontale Kurve, 30/60/90 Grad)"; }
: radio_button { key = "wahl_liniegf"; label = "Neue Linie: GF (Gefaellestrecke)"; value = "1"; }
: radio_button { key = "wahl_linievf"; label = "Neue Linie: Ab/Auf VF (VarioFoerderer-Einheit)"; }
: radio_button { key = "wahl_horizontalvf"; label = "Neue VF mit horizontalem Anfang (Horizontal-Stueck)"; }
: radio_button { key = "wahl_linieende"; label = "Neue Linie BIS Kettenende (danach Separator + ES-Element)"; }
}
}
// PROTOTYP "Zurueck"-Button (siehe Plan curious-prancing-parasol.md): ersetzt
// ok_cancel durch eine eigene 3-Button-Zeile. done_dialog-Codes: 0=Abbrechen
// (unveraendert, is_cancel -> ESC/Leertaste wirkt weiterhin), 1=Weiter
// (unveraendert, is_default), NEU 2=Zurueck (verwirft das zuletzt gebaute
// Kettenglied und fragt es neu ab, siehe vflw-gruppe-naechstes-element-impl/
// vfl-modus-abbruch-sichern).
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// "Ist das das Kettenende?" (Linie-GF-Segment-Schleife) - 3 feste Optionen.
// Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_kettenende : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_ja_es"; label = "Ja (ES-Element setzen)"; }
: radio_button { key = "wahl_ja_ohne_es"; label = "Ja (ohne ES-Element setzen)"; }
: radio_button { key = "wahl_nein"; label = "Nein (weiterbauen)"; value = "1"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// "Ist das Kettenende?" (2-Optionen-Variante - Ja/Nein statt der 3-Optionen-
// Variante vflw_kettenende oben). Radio-Buttons statt Dropdown, Labels fest
// deutsch.
vflw_ist_kettenende_2opt : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_ja"; label = "Ja (Separator + ES-Element setzen)"; }
: radio_button { key = "wahl_nein"; label = "Nein (weiterbauen)"; value = "1"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// GF-Verteilung (halbe Staustrecke am Ausgang GF2 oder alles am Einlauf
// GF1) - wiederverwendet fuer Modus 1 (vfl-vf-einheit-abschluss) UND Modus 3
// (Segment-Loop, br-gf-mode). Radio-Buttons statt Dropdown, Labels fest
// deutsch.
vflw_gf_verteilung : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_haelfte"; label = "Haelfte am Einlauf (GF1) + Haelfte am Ausgang (GF2)"; }
: radio_button { key = "wahl_einlauf"; label = "Alles am Einlauf (GF1), kein GF2"; value = "1"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// "Naechstes im VF" (innerhalb einer laufenden VF-Einheit weiterbauen):
// Horizontaler Foerderer / Vario-Kurve / Auf-Ab-Foerderer. Radio-Buttons
// statt Dropdown, Labels fest deutsch.
vflw_naechstes_im_vf : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_horizontal"; label = "Horizontaler Foerderer (Linie ohne Hoehendifferenz)"; }
: radio_button { key = "wahl_variokurve"; label = "Vario-Kurve (30/60/90 Grad)"; }
: radio_button { key = "wahl_aufab"; label = "Auf/Ab-Foerderer (Linie mit Hoehendifferenz)"; value = "1"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Punkt-7-Winkel/Hoehen-Tabelle (vfl-waehle-winkel-hoehen-tabelle): 12 feste
// Radio-Slots (einer je Standard-Winkel 3-51 Grad), nicht baubare per
// mode_tile deaktiviert. WICHTIG: die radio_button-Tiles muessen DIREKTE
// Kinder eines radio_column/radio_row/boxed_radio_column-Clusters sein - eine
// Verschachtelung ueber : row {} INNERHALB des Clusters (fruehere Version)
// hebt die gegenseitige Ausschliesslichkeit auf (per Test bestaetigt: mehrere
// Radios gleichzeitig waehlbar, keins abwaehlbar)! Die Endhoehe steht daher
// NICHT im selben row-Tile, sondern in einer PARALLELEN Text-Spalte rechts
// daneben (eigene column AUSSERHALB des Radio-Clusters, per aeusserem : row
// nebeneinandergestellt, gleiche Zeilenreihenfolge) - dynamisch befuellt via
// vflw-gruppe-winkel-hoehen-impl (zeigt auch bei nicht baubaren Winkeln den
// Grund, siehe dortige Kommentare).
vflw_winkel_hoehen : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: text { label = "Winkel waehlen:"; }
: row {
: radio_column {
key = "wahl";
: radio_button { key = "w_3"; label = "3 Grad"; }
: radio_button { key = "w_6"; label = "6 Grad"; }
: radio_button { key = "w_9"; label = "9 Grad"; }
: radio_button { key = "w_12"; label = "12 Grad"; }
: radio_button { key = "w_15"; label = "15 Grad"; }
: radio_button { key = "w_18"; label = "18 Grad"; }
: radio_button { key = "w_21"; label = "21 Grad"; }
: radio_button { key = "w_27"; label = "27 Grad"; }
: radio_button { key = "w_33"; label = "33 Grad"; }
: radio_button { key = "w_39"; label = "39 Grad"; }
: radio_button { key = "w_45"; label = "45 Grad"; }
: radio_button { key = "w_51"; label = "51 Grad"; }
}
: column {
: text { key = "h_3"; label = ""; width = 48; }
: text { key = "h_6"; label = ""; width = 48; }
: text { key = "h_9"; label = ""; width = 48; }
: text { key = "h_12"; label = ""; width = 48; }
: text { key = "h_15"; label = ""; width = 48; }
: text { key = "h_18"; label = ""; width = 48; }
: text { key = "h_21"; label = ""; width = 48; }
: text { key = "h_27"; label = ""; width = 48; }
: text { key = "h_33"; label = ""; width = 48; }
: text { key = "h_39"; label = ""; width = 48; }
: text { key = "h_45"; label = ""; width = 48; }
: text { key = "h_51"; label = ""; width = 48; }
}
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Winkel-Wahl aus berechne-alle-winkel (Zielhoehe-basierter Solve, mehrere
// gueltige Winkel): wie vflw_winkel_hoehen (radio_column direkt, Text-Spalte
// parallel daneben), aber die Text-Spalte zeigt L_GF+L_VF statt Endhoehe
// (dynamisch befuellt, siehe vflw-gruppe-winkel-wahl-impl).
vflw_winkel_wahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: text { label = "Winkel waehlen:"; }
: row {
: radio_column {
key = "wahl";
: radio_button { key = "w_3"; label = "3 Grad"; }
: radio_button { key = "w_6"; label = "6 Grad"; }
: radio_button { key = "w_9"; label = "9 Grad"; }
: radio_button { key = "w_12"; label = "12 Grad"; }
: radio_button { key = "w_15"; label = "15 Grad"; }
: radio_button { key = "w_18"; label = "18 Grad"; }
: radio_button { key = "w_21"; label = "21 Grad"; }
: radio_button { key = "w_27"; label = "27 Grad"; }
: radio_button { key = "w_33"; label = "33 Grad"; }
: radio_button { key = "w_39"; label = "39 Grad"; }
: radio_button { key = "w_45"; label = "45 Grad"; }
: radio_button { key = "w_51"; label = "51 Grad"; }
}
: column {
: text { key = "h_3"; label = ""; width = 48; }
: text { key = "h_6"; label = ""; width = 48; }
: text { key = "h_9"; label = ""; width = 48; }
: text { key = "h_12"; label = ""; width = 48; }
: text { key = "h_15"; label = ""; width = 48; }
: text { key = "h_18"; label = ""; width = 48; }
: text { key = "h_21"; label = ""; width = 48; }
: text { key = "h_27"; label = ""; width = 48; }
: text { key = "h_33"; label = ""; width = 48; }
: text { key = "h_39"; label = ""; width = 48; }
: text { key = "h_45"; label = ""; width = 48; }
: text { key = "h_51"; label = ""; width = 48; }
}
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Generische Ja/Nein-Rueckfrage (2 Radio-Buttons, dynamischer Kopftext) -
// wiederverwendet z.B. fuer "trotzdem mit Mindestlaenge bauen?" (Zu-kurz-
// Nachfrage in vfl-baue-horizontal-koerper). Radio-Buttons statt Dropdown,
// Labels fest deutsch (nur "kopf" wird je Aufruf per set_tile befuellt).
// Drei Groessenvarianten (1/3/6 Kopf-Zeilen) statt EINER Variante mit immer 6
// Zeilen: DCL kann Tiles nicht dynamisch ausblenden/schrumpfen - ein leeres
// text-Tile belegt trotzdem seine volle Zeilenhoehe (grosse Luecke bei kurzen
// Hinweisen wie "Zusaetzlichen Separator einfuegen?"). vflw-gruppe-ja-nein-impl
// waehlt anhand der per vflw-umbruch-zeilen ermittelten Zeilenzahl die
// passende Variante (1/3/6). Alle drei teilen dieselben Tile-Keys "kopf1".."kopfN"
// plus "wahl"/"wahl_ja"/"wahl_nein"/"back"/"accept"/"cancel" - der Aufrufer
// muss dadurch NICHT zwischen ihnen unterscheiden, ausser bei new_dialog/
// set_tile fuer die (in der kleineren Variante gar nicht vorhandenen) hoeheren
// kopfN-Tiles.
vflw_ja_nein_1 : dialog {
label = "VarioFoerderer Assistent";
: column {
: text { key = "kopf1"; label = ""; width = 70; }
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
: radio_button { key = "wahl_nein"; label = "Nein"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
vflw_ja_nein_3 : dialog {
label = "VarioFoerderer Assistent";
: column {
: text { key = "kopf1"; label = ""; width = 70; }
: text { key = "kopf2"; label = ""; width = 70; }
: text { key = "kopf3"; label = ""; width = 70; }
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
: radio_button { key = "wahl_nein"; label = "Nein"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
vflw_ja_nein_6 : dialog {
label = "VarioFoerderer Assistent";
: column {
: text { key = "kopf1"; label = ""; width = 70; }
: text { key = "kopf2"; label = ""; width = 70; }
: text { key = "kopf3"; label = ""; width = 70; }
: text { key = "kopf4"; label = ""; width = 70; }
: text { key = "kopf5"; label = ""; width = 70; }
: text { key = "kopf6"; label = ""; width = 70; }
: boxed_radio_column {
key = "wahl";
label = "";
: radio_button { key = "wahl_ja"; label = "Ja"; value = "1"; }
: radio_button { key = "wahl_nein"; label = "Nein"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Generische Auf/Ab-Richtungsfrage (2 Radio-Buttons, dynamischer Kopftext) -
// wiederverwendet fuer Punkt 7 (Kletter-Teilstrecke ohne Zielhoehe, sowohl
// "Naechstes im VF" als auch "Neue Linie: Ab/Auf VF" mit reduziertem
// Eingang). Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_richtung : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
key = "richtung";
label = "";
: radio_button { key = "richtung_auf"; label = "Auf"; value = "1"; }
: radio_button { key = "richtung_ab"; label = "Ab"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// Startpunkt-Typ (kein eindeutiger GF-/VF-Baustein per KS_AUS-Scan erkannt,
// siehe vfl-eingang-modus-bestimmen): EINE flache 3-Optionen-Frage statt
// verschachtelter Zwei-Schritt-Abfrage - ist der Vorgaenger unklar, sind alle
// drei Ergebnisse gleichwertig direkt waehlbar. Radio-Buttons statt Dropdown,
// Labels fest deutsch (GF-Stumpf-Laenge als Default-Wert 400mm statisch im
// Label, siehe *vfl-gf-min-laenge*).
vflw_startpunkt_typ : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Eingang:";
key = "eingang";
: radio_button { key = "eingang_direkt"; label = "Direkt Umlenkstation (kein GF-Stueck)"; value = "1"; }
: radio_button { key = "eingang_stumpf"; label = "GF-Stueck (min. 400mm) + Umlenkstation"; }
: radio_button { key = "eingang_ohne"; label = "Ohne Umlenkstation (VF-Fortsetzung)"; }
}
}
: row {
alignment = centered;
: button { key = "back"; label = "Zurueck"; fixed_width = true; width = 12; }
spacer;
: button { key = "accept"; label = "Ok Weiter"; is_default = true; fixed_width = true; width = 12; }
spacer;
: button { key = "cancel"; label = "Abbrechen"; is_cancel = true; fixed_width = true; width = 12; }
}
}
// ============================================================
@@ -278,6 +866,7 @@ vflw_horizontal : dialog {
// Modus 2, Segment "Gerade": Typ (GF/VF) + [nur bei GF aktiv] GF-Neigung.
// Das Neigungsfeld wird per action_tile auf "typ" aktiviert/deaktiviert.
// Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_seg_linie_m2 : dialog {
label = "VarioFoerderer Assistent";
@@ -287,10 +876,11 @@ vflw_seg_linie_m2 : dialog {
label = "";
width = 60;
}
: popup_list {
key = "typ";
: boxed_radio_column {
label = "Typ:";
width = 40;
key = "typ";
: radio_button { key = "typ_gf"; label = "GF (Neigungswinkel)"; value = "1"; }
: radio_button { key = "typ_vf"; label = "VF (Bruecke)"; }
}
: text {
key = "wlabel";
@@ -301,6 +891,11 @@ vflw_seg_linie_m2 : dialog {
label = "";
edit_width = 10;
}
: boxed_column {
label = "Separator (nur bei GF):";
: toggle { key = "sep_vor"; label = "Separator VOR diesem GF-Stueck"; }
: toggle { key = "sep_nach"; label = "Separator NACH diesem GF-Stueck"; }
}
}
ok_cancel;
@@ -309,7 +904,8 @@ vflw_seg_linie_m2 : dialog {
// Modus 3, Segment "Gerade": Typ (GF / VF-Ab / VF-Auf / VF-Horizontal) + EIN
// Wertfeld, dessen Beschriftung mit dem Typ umschaltet (GF -> Neigung,
// VF-Ab/Auf -> Vario-Winkel, VF-Horizontal -> Feld deaktiviert). Umschaltung
// per action_tile auf "typ" (siehe vflw-seg-linie-m3-impl).
// per action_tile auf "typ" (siehe vflw-seg-linie-m3-impl). Radio-Buttons
// statt Dropdown, Labels fest deutsch.
vflw_seg_linie_m3 : dialog {
label = "VarioFoerderer Assistent";
@@ -319,10 +915,13 @@ vflw_seg_linie_m3 : dialog {
label = "";
width = 60;
}
: popup_list {
key = "typ";
: boxed_radio_column {
label = "Typ:";
width = 45;
key = "typ";
: radio_button { key = "typ_gf"; label = "GF (Neigungswinkel)"; value = "1"; }
: radio_button { key = "typ_vfab"; label = "VF-Ab"; }
: radio_button { key = "typ_vfauf"; label = "VF-Auf"; }
: radio_button { key = "typ_vfhor"; label = "VF-Horizontal"; }
}
: text {
key = "wlabel";
@@ -340,7 +939,9 @@ vflw_seg_linie_m3 : dialog {
// Segment "Eck/Bogen" (Modus 2 + Modus 3 identisch): Typ (GF-Bogen /
// Vario-Kurve) + [nur bei Vario-Kurve aktiv] Variante (aussen/innen). Die
// Variante-Liste wird per action_tile auf "typ" aktiviert/deaktiviert.
// Variante-Gruppe wird per action_tile auf "typ" aktiviert/deaktiviert, die
// Vario-Kurve-Option selbst ggf. ueber "vario-erlaubt" (mode_tile), siehe
// vflw-seg-bogen-impl. Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_seg_bogen : dialog {
label = "VarioFoerderer Assistent";
@@ -350,15 +951,65 @@ vflw_seg_bogen : dialog {
label = "";
width = 60;
}
: popup_list {
key = "typ";
: boxed_radio_column {
label = "Typ:";
width = 40;
key = "typ";
: radio_button { key = "typ_gfbogen"; label = "GF-Bogen"; value = "1"; }
: radio_button { key = "typ_vario"; label = "Vario-Kurve"; }
}
: popup_list {
key = "variante";
: boxed_radio_column {
label = "Variante:";
width = 30;
key = "variante";
: radio_button { key = "variante_aussen"; label = "Aussen"; value = "1"; }
: radio_button { key = "variante_innen"; label = "Innen"; }
}
}
ok_cancel;
}
// Modus 2: Lauf-Abschluss, NUR wenn der VF-Lauf das Ende des gewaehlten Pfads
// ist (kein Back-Lauf danach) - siehe vflw-m2-lauf-abschluss-impl. Radio-
// Buttons, Labels fest deutsch.
vflw_m2_lauf_abschluss : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Lauf beenden mit:";
key = "abschluss";
: radio_button { key = "abschluss_offen"; label = "Ohne Motorstation (offenes Ende, spaeter fortsetzen)"; }
: radio_button { key = "abschluss_motor"; label = "Motorstation setzen"; value = "1"; }
: radio_button { key = "abschluss_motor_es"; label = "Motorstation + ES-Element setzen (Kettenende)"; }
}
}
ok_cancel;
}
// Modus 2: Lauf-Anfang, NUR wenn der VF-Lauf der Anfang des gewaehlten Pfads
// ist (kein Front-Lauf davor) - siehe vflw-m2-lauf-anfang-impl. Radio-Buttons,
// Labels fest deutsch.
vflw_m2_lauf_anfang : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Lauf beginnen mit:";
key = "anfang";
: radio_button { key = "anfang_offen"; label = "Ohne Umlenkstation (offener Anfang, spaeter fortsetzen)"; }
: radio_button { key = "anfang_umlenk"; label = "Umlenkstation direkt (kein GF1/Separator)"; }
: radio_button { key = "anfang_umlenk_gf1"; label = "Umlenkstation mit GF1 + Separator"; value = "1"; }
}
}