// ============================================================ // 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; } } ok_cancel; } // 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; } } ok_cancel; } // ============================================================ // 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; } } ok_cancel; } // 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. vflw_as : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : toggle { key = "setzen"; label = "Ja, setzen"; } : popup_list { key = "winkel"; label = "Winkel:"; width = 20; } : popup_list { key = "seite"; label = "Seite:"; width = 20; } } ok_cancel; } // 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. vflw_winkel_seite : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "winkel"; label = "Winkel:"; width = 20; } : popup_list { key = "seite"; label = "Seite:"; width = 20; } } ok_cancel; } // Vario-Kurve: Winkel + Seite + Variante (aussen/innen) in einem Bildschirm. vflw_variokurve : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "winkel"; label = "Winkel:"; width = 20; } : popup_list { key = "seite"; label = "Seite:"; width = 20; } : popup_list { key = "variante"; label = "Variante:"; width = 20; } } ok_cancel; } // 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. vflw_gefaelle : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "modus"; label = "Eingabe als:"; width = 40; } : text { key = "wlabel"; label = ""; } : edit_box { key = "wert"; label = ""; edit_width = 10; } } ok_cancel; } // Horizontales Stueck: Separator-vor + Separator-nach + "Foerderer-Ende?" // (3 Optionen) in einem Bildschirm. Kein Punkt-Feld - siehe Kopfkommentar // oben. vflw_horizontal : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : toggle { key = "sepvor"; label = "Separator VOR dem Stueck"; } : toggle { key = "sepnach"; label = "Separator NACH dem Stueck"; } : popup_list { key = "istende"; label = "Foerderer-Ende:"; width = 45; } } ok_cancel; } // ============================================================ // 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. vflw_seg_linie_m2 : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "typ"; label = "Typ:"; width = 40; } : text { key = "wlabel"; label = "GF-Neigung (Grad):"; } : edit_box { key = "wert"; label = ""; edit_width = 10; } } 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). vflw_seg_linie_m3 : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "typ"; label = "Typ:"; width = 45; } : 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-Liste wird per action_tile auf "typ" aktiviert/deaktiviert. vflw_seg_bogen : dialog { label = "VarioFoerderer Assistent"; : column { : text { key = "kopf"; label = ""; width = 60; } : popup_list { key = "typ"; label = "Typ:"; width = 40; } : popup_list { key = "variante"; label = "Variante:"; width = 30; } } ok_cancel; }