Files
dxfmakros/dcl/vf_linienzug_wizard.dcl
T
y.wang 833a4b60a6 fix: Lauf-Anfang als selbstbeschreibender Wert, Dialog-Hinweise lesbar
Die Frage "Lauf beginnen mit" (Modus 2) journalisiert jetzt den WERT
("mit-gf1"/"direkt"/"ohne") statt der Auswahl-Ziffer. Anlass war die
Umstellung der Optionsreihenfolge auf Regelfall zuerst: mit einer Ziffer
haette dieselbe "3" vor und nach der Umstellung Verschiedenes bedeutet,
eine bestehende Kette waere beim Doppelklick still mit einer ANDEREN
Anfangsvariante neu gebaut worden. Alte Ketten laufen ueber die Tabelle
*vfl-m2-anfang-alt* weiter; ein Wert, der weder Alt-Ziffer noch gueltiger
Wert ist, bricht den Aufbau ab und nennt Kette und Wert, statt eine
Variante zu raten.

Weiter aus der Modus-2-Arbeit:
- Laengenbudget je VF-Einheit (max. 25 m, max. 2 Vario-Kurven,
  *vfk-vf-kurven-max*), bei Ueberschreitung automatischer Schnitt
- nach einer VF-Geraden ist der Bogentyp waehlbar (GF-Bogen/Vario-Kurve)
- Segmentnummer steht im Kopf jedes Dialogs
- "Separator NACH" ist am letzten GF-Stueck vor einem ES gesperrt, der
  automatische Separator wird dort erklaert
- "Ohne Umlenkstation" ist mit AS-Element gesperrt
- Fuellerlaenge nur noch dann aus dem Rueckanker, wenn der VF-Lauf das
  Pfadende ist

Dialoge: Hinweis steht in Klammern hinter dem Ankreuzfeld statt darunter,
Lauf-Anfang-Optionen tragen die Nummern der Konsolenliste, die
Begruendungszeile ist breit genug und wird nicht mehr abgeschnitten.

14 neue Unit-Tests zur Wert-Normierung (durchlaufen die Alt-Tabelle).
Sprachdateien 1205/1205 synchron.

Offen: der Fuellerlaengen-Fix ist in BricsCAD noch nicht nachgemessen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-23 15:39:57 +02:00

1241 lines
45 KiB
Plaintext

// ============================================================
// vf_linienzug_wizard.dcl - VF Linienzug Assistent (Modus 1)
// Zwei GENERISCHE Einzel-Dialoge (vflw_zahl/vflw_wahl) fuer alle Fragen, die
// im Ablauf isoliert stehen, PLUS mehrere GRUPPEN-Dialoge weiter unten, die
// Fragen zusammenfassen, die immer unmittelbar hintereinander kommen (z.B.
// Startpunkt+Starthoehe, AS-Element Ja/Nein+Winkel+Seite). Kopfzeilen/
// Optionslisten werden zur Laufzeit befuellt, siehe vf_linienzug.lsp,
// Abschnitte "WIZARD-EINGABE" und "GRUPPEN-DIALOGE".
// Die ORIGINALEN Konsolen-Fragen (princ + getstring/getreal/getint) bleiben
// im Code stehen (de/en ueber ssg-text/lang/*.json) - Umschalten zurueck auf
// reine Konsole: (setq *vfl-wizard-mode* nil) bzw. Befehl VF_WIZARD_AUS.
// Bricht der Nutzer einen Gruppen-Dialog ab, fallen die betroffenen Fragen
// automatisch auf die Einzel-Dialoge (vflw_zahl/vflw_wahl) zurueck.
// ============================================================
// Zahlen-Eingabe (ersetzt getreal/getint). "kopf" zeigt den kompletten
// Original-Prompt-Text (inkl. Default in eckigen Klammern) als Label.
vflw_zahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: edit_box {
key = "wert";
label = "";
edit_width = 16;
}
}
: 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).
// "opts" wird zur Laufzeit per start_list/add_list mit den (bereits
// lokalisierten) Optionstexten befuellt - ein einziger Dialog fuer jede
// Options-Anzahl (2-5), analog zum bestehenden Muster in
// dcl/variofoerderer.dcl und dcl/vfl_edit.dcl.
vflw_wahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: popup_list {
key = "opts";
label = "";
width = 50;
}
}
: 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; }
}
}
// ============================================================
// GRUPPEN-DIALOGE - fassen mehrere Fragen, die im Ablauf IMMER
// unmittelbar hintereinander kommen, in EINEM Bildschirm zusammen (statt je
// einem vflw_zahl/vflw_wahl-Dialog pro Frage). Aufgerufen aus den
// vflw-gruppe-*-Funktionen in vf_linienzug.lsp (Abschnitt "GRUPPEN-DIALOGE").
// Punktwahl-Zeile (Button + Anzeige) NUR in vflw_punkt_zahl, wo tatsaechlich
// live gepickt wird: der Button schliesst den Dialog (done_dialog 2), DANACH
// laeuft (getpoint) auf der Kommandozeile - (getpoint) direkt aus einem
// action_tile-Callback heraus (Dialog bleibt offen) funktioniert in BricsCAD
// NICHT (kein Fokuswechsel zur Zeichnung, per Test bestaetigt). Die uebrigen
// Gruppen-Dialoge (Gefaelle, Ziel-Hoehe, Horizontal-Stueck) picken KEINEN
// Punkt - der Endpunkt ist an ihrer Aufrufstelle bereits ueber
// vfl-neue-linie-messen gemessen (nur X/Y, fuer die Segmentlaenge; die Hoehe
// dort ist ein unabhaengiger Zahlenwert) - sie zeigen deshalb bewusst KEINE
// Punkt-Zeile, die faelschlich eine hier moegliche Punktwahl suggerieren
// wuerde.
// ============================================================
// Punkt + EIN Zahlenfeld, mit Punktwahl-Button (siehe oben). Nur fuer
// "Kettenstart" (Startpunkt + Starthoehe, Modus 1) und Modus 2s
// Start-/Endpunkt - "kopf"/"wlabel" werden je Aufruf per set_tile passend
// beschriftet.
vflw_punkt_zahl : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: row {
: button {
key = "pick";
label = "Punkt waehlen...";
fixed_width = true;
width = 18;
}
: text {
key = "pt_anzeige";
label = "(kein Punkt gewaehlt)";
}
}
: text {
key = "wlabel";
label = "";
}
: edit_box {
key = "wert";
label = "";
edit_width = 10;
}
}
// "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. Radio-Buttons statt Dropdown, Labels daher fest auf Deutsch
// (siehe Kommentar bei vfc_typ in variofoerderer.dcl).
vflw_as : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: toggle {
key = "setzen";
label = "Ja, setzen";
}
: boxed_radio_column {
label = "Winkel:";
key = "winkel";
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
: radio_button { key = "winkel_30"; label = "30 Grad"; }
}
: boxed_radio_column {
label = "Seite:";
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
}
: 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; }
}
}
// Wie vflw_as, aber ZUSAETZLICH mit der Zufuehrungsachse (2. Punkt) in
// DEMSELBEN Bildschirm - nur fuer das AS-Element am Kettenanfang von Modus 1
// (Nutzer-Vorgabe 2026-10-21: "Achse und links/rechts gehoeren in ein
// Fenster", beide zusammen legen AS-Lage UND Kettenrichtung fest: der 2.
// Punkt gibt die KS_EIN-Achse, links/rechts die AS-Variante und damit die
// KS_AUS-Richtung). Eigener Dialog statt einer dauerhaft ausgegrauten
// Punkt-Zeile in vflw_as - denselben Dialog nutzt auch das ES-Element am
// Kettenende, wo es gar keine Zufuehrungsachse gibt (gleiche Begruendung wie
// bei vflw_winkel_seite vs. vflw_winkel_seite_30_90).
// Punktwahl-Zeile nach dem Muster von vflw_punkt_zahl: der Button schliesst
// den Dialog (done_dialog 2), danach laeuft (getpoint) auf der
// Kommandozeile, danach wird der Dialog neu gezeigt - darum nutzt "back"
// hier Code 3.
vflw_as_achse : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: toggle {
key = "setzen";
label = "Ja, setzen";
}
: boxed_radio_column {
label = "Winkel:";
key = "winkel";
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
: radio_button { key = "winkel_30"; label = "30 Grad"; }
}
// Beschriftungen bewusst NEUTRAL: derselbe Dialog dient dem AS-Element
// am Kettenanfang (vorwaerts) UND dem ES-Element am Kettenende
// (rueckwaerts bauen, 2026-10-22). Welches Element gemeint ist, sagt die
// Kopfzeile ("kopf").
: boxed_radio_column {
label = "Seite (Element schleust nach):";
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
: boxed_column {
label = "Fahrtrichtung (2. Punkt):";
// Startpunkt der Kette - er ist der Sitz des AS-Elements UND der
// Ausgangspunkt der Achse; waehrend der Punktwahl haengt das
// Gummiband an ihm (vfl-getpoint mit Basispunkt).
: text {
key = "start_anzeige";
label = "";
width = 46;
}
: row {
: button {
key = "pick";
label = "2. Punkt waehlen...";
fixed_width = true;
width = 20;
}
: text {
key = "pt_anzeige";
label = "(ohne Achse: Richtung aus dem naechsten Klick)";
width = 46;
}
}
}
}
: 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 (30/60/90) + Seite - fuer GF-Bogen, wo alle drei Winkel geometrisch
// gueltig sind. Fuer AS-/ES-Element (wo 60 Grad NIE gueltig ist) stattdessen
// vflw_winkel_seite_30_90 verwenden (siehe vflw-gruppe-winkel-seite-impl/
// vfl-glied-as-es-dialog) - eine staendig ausgegraute, nie waehlbare Option
// verwirrt mehr als sie nutzt, daher ein eigener schlankerer Dialog statt
// mode_tile-Deaktivierung. Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_winkel_seite : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Winkel:";
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"; }
}
: boxed_radio_column {
label = "Seite:";
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
}
: 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 (NUR 30/90, kein 60) + Seite - fuer AS-/ES-Element, wo 60 Grad
// geometrisch nie eine gueltige Option ist (anders als GF-Bogen/Vario-Kurve,
// siehe vflw_winkel_seite). Tile-Keys bewusst identisch zu vflw_winkel_seite
// (winkel_30/winkel_90/seite_links/seite_rechts), damit vflw-gruppe-winkel-
// seite-impl/vfl-glied-as-es-dialog denselben set_tile/get_tile-Code fuer
// beide Dialoge nutzen koennen.
vflw_winkel_seite_30_90 : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Winkel:";
key = "winkel";
: radio_button { key = "winkel_30"; label = "30 Grad"; }
: radio_button { key = "winkel_90"; label = "90 Grad"; value = "1"; }
}
: boxed_radio_column {
label = "Seite:";
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
}
: 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; }
}
}
// Nur Winkel (30/90 Grad), OHNE Seite - fuer "QC Linie mit GF" (Option 4),
// deren AS-/ES-Seite ausserhalb dieses Dialogs feststeht (ES-Seite = AS-
// Seite, keine eigene Frage). Radio-Buttons statt Dropdown.
vflw_qc_winkel : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Winkel:";
key = "winkel";
: radio_button { key = "winkel_30"; label = "30 Grad"; }
: radio_button { key = "winkel_90"; label = "90 Grad"; 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; }
}
}
// Vario-Kurve: Winkel + Seite + Variante (aussen/innen) in einem Bildschirm.
// Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_variokurve : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Winkel:";
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"; }
}
: boxed_radio_column {
label = "Seite:";
key = "seite";
: radio_button { key = "seite_links"; label = "Links"; value = "1"; }
: radio_button { key = "seite_rechts"; label = "Rechts"; }
}
: boxed_radio_column {
label = "Variante:";
key = "variante";
: radio_button { key = "variante_aussen"; label = "Aussen"; value = "1"; }
: radio_button { key = "variante_innen"; label = "Innen"; }
}
}
: 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. Radio-Buttons statt Dropdown, Labels fest deutsch.
vflw_gefaelle : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Eingabe als:";
key = "modus";
: radio_button { key = "modus_winkel"; label = "Neigungswinkel eingeben"; value = "1"; }
: radio_button { key = "modus_hoehe"; label = "Gegebene Hoehe (Zielhoehe)"; }
}
: text {
key = "wlabel";
label = "";
}
: edit_box {
key = "wert";
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 = "";
}
}
: 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; }
}
}
// "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)"; }
: radio_button { key = "modus_qc"; label = "QC Linie mit GF (automatische Auf-Ab-Berechnung)"; }
// Nur am Kettenanfang mit AS-Element UND festgelegter Zufuehrungsachse
// waehlbar - sonst fehlt die Bezugsachse fuer den Abstand. Wird in
// vflw-gruppe-gf-laenge-modus-impl per mode_tile deaktiviert (anders
// als eine NIE waehlbare Kachel ist diese kontextabhaengig, siehe
// "sepnach" in vflw_sep_gf).
: radio_button { key = "modus_parallel"; label = "Parallel zum Kreisel weiterbauen (Abstand)"; }
}
}
: 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; }
}
}
// Zweig C ("Steigende GF") Unterfrage: dieselben 2 Optionen wie oben
// (Endpunkt/Zielhoehe), aber OHNE die 3. Kachel "Steigend" - die existiert in
// diesem Kontext nicht mehr (wir sind ja schon im Steigend-Zweig). Bisher lief
// diese Frage mangels eigenem Dialog auf den generischen Dropdown-Fallback
// (vflw_wahl) hinaus - siehe vflw-gruppe-gf-steigend-untermodus-impl.
vflw_gf_steigend_untermodus : 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)"; }
}
}
: 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 {
: text {
key = "kopf";
label = "";
width = 60;
}
: toggle {
key = "sepvor";
label = "Separator VOR dieser Gefaellestrecke";
}
// Steht am Kettenende ein ES-Element, ist "Separator NACH" gesperrt -
// der Hinweis dahinter sagt warum, in EINER Zeile mit dem Ankreuzfeld
// (gleiche Anordnung wie in vflw_seg_linie_m2). Sonst leer (set_tile "").
: row {
: toggle {
key = "sepnach";
label = "Separator NACH dieser Gefaellestrecke";
}
: text {
key = "sephinweis";
label = "";
width = 62;
}
}
}
: 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 5 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). GF-Optionen stehen zuerst, VF-Optionen
// danach (nur Reihenfolge, kein echtes 2-Spalten-Layout: radio_button-Tiles
// muessen DIREKTE Kinder EINES Clusters sein, sonst ist die gegenseitige
// Ausschliesslichkeit kaputt - siehe Warnung bei vflw_winkel_hoehen unten,
// per Test bestaetigt). "Neue Linie BIS Kettenende" ist kein Radio mehr,
// sondern der eigene Button "OK und Abschliessen" unten (ruft direkt Slot 6
// auf, ohne vorher eine Radio-Auswahl zu verlangen).
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_liniegf"; label = "Neue Linie: GF (Gefaellestrecke)"; value = "1"; }
: radio_button { key = "wahl_variokurve"; label = "Vario-Kurve (horizontale Kurve, 30/60/90 Grad)"; }
: 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)"; }
}
}
// PROTOTYP "Zurueck"-Button (siehe Plan curious-prancing-parasol.md): ersetzt
// ok_cancel durch eine eigene 4-Button-Zeile. done_dialog-Codes: 0=Abbrechen
// (unveraendert, is_cancel -> ESC/Leertaste wirkt weiterhin), 1=Weiter
// (unveraendert, is_default), 2=Zurueck (verwirft das zuletzt gebaute
// Kettenglied und fragt es neu ab, siehe vflw-gruppe-naechstes-element-impl/
// vfl-modus-abbruch-sichern), NEU 3=Abschliessen (entspricht der fruehen
// Radio-Option "Neue Linie BIS Kettenende" - ignoriert die Radio-Auswahl).
: 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 = "abschliessen"; label = "OK und Abschliessen"; fixed_width = true; width = 18; }
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; }
}
}
// ============================================================
// SEGMENT-GRUPPEN-DIALOGE (Modus 2 + Modus 3) - fassen die pro Segment
// aufeinanderfolgenden Fragen in EINEM Bildschirm zusammen. "kopf" zeigt
// dabei immer "Segment i/n ..." (wie die Konsolen-Frage), das jeweils
// abgefragte Segment ist zusaetzlich in der Zeichnung hervorgehoben
// (redraw-Highlight, gesetzt von vfl-seg-highlight in vf_linienzug.lsp VOR
// dem Oeffnen des Dialogs). Aufgerufen aus den vflw-seg-*-impl-Funktionen.
// ============================================================
// 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";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Typ:";
key = "typ";
: radio_button { key = "typ_gf"; label = "GF (Neigungswinkel)"; value = "1"; }
: radio_button { key = "typ_vf"; label = "VF (Bruecke)"; }
}
: text {
key = "wlabel";
label = "GF-Neigung (Grad):";
}
: edit_box {
key = "wert";
label = "";
edit_width = 10;
}
: boxed_column {
label = "Separator (nur bei GF):";
: toggle { key = "sep_vor"; label = "Separator VOR diesem GF-Stueck"; }
// Begruendung, wenn "NACH" gesperrt ist (ES folgt direkt), in EINER
// Zeile hinter dem Ankreuzfeld - sonst liest sie sich wie eine eigene
// Aussage statt wie die Erklaerung zu genau diesem Feld. Sonst leer.
: row {
: toggle { key = "sep_nach"; label = "Separator NACH diesem GF-Stueck"; }
: text { key = "sephinweis"; label = ""; width = 62; }
}
}
}
ok_cancel;
}
// 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). Radio-Buttons
// statt Dropdown, Labels fest deutsch.
vflw_seg_linie_m3 : dialog {
label = "VarioFoerderer Assistent";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Typ:";
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";
label = "";
}
: edit_box {
key = "wert";
label = "";
edit_width = 10;
}
}
ok_cancel;
}
// Segment "Eck/Bogen" (Modus 2 + Modus 3 identisch): Typ (GF-Bogen /
// Vario-Kurve) + [nur bei Vario-Kurve aktiv] Variante (aussen/innen). Die
// 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";
: column {
: text {
key = "kopf";
label = "";
width = 60;
}
: boxed_radio_column {
label = "Typ:";
key = "typ";
: radio_button { key = "typ_gfbogen"; label = "GF-Bogen"; value = "1"; }
: radio_button { key = "typ_vario"; label = "Vario-Kurve"; }
}
: boxed_radio_column {
label = "Variante:";
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;
}
// Reihenfolge nach Haeufigkeit (Nutzer-Wunsch 2026-10-23): der
// Regelfall zuerst, der Sonderfall "offener Anfang" zuletzt. Die
// radio_button-KEYS bleiben dabei unveraendert; journalisiert wird der
// am Key haengende WERT ("mit-gf1"/"direkt"/"ohne", siehe
// vfl-m2-anfang-norm), nicht die Position - Umsortieren und Umnummerieren
// sind damit folgenlos fuer bestehende Ketten.
: boxed_radio_column {
label = "Lauf beginnen mit:";
key = "anfang";
// Nummern wie in der Konsolenausgabe, damit Dialog und Protokoll
// dieselbe Option gleich benennen.
: radio_button { key = "anfang_umlenk_gf1"; label = "1 - Umlenkstation mit GF1 + Separator"; value = "1"; }
: radio_button { key = "anfang_umlenk"; label = "2 - Umlenkstation direkt (kein GF1/Separator)"; }
: radio_button { key = "anfang_offen"; label = "3 - Ohne Umlenkstation (offener Anfang, spaeter fortsetzen/verschmelzen)"; }
}
// Begruendung, wenn "Ohne Umlenkstation" gesperrt ist (AS gesetzt).
// Breit genug fuer den vollen Satz - bei width = 60 wurde er abgeschnitten.
: text { key = "anfanghinweis"; label = ""; width = 76; }
}
ok_cancel;
}