[CHANGE] Streckengruppe-Menue in Werte-manuell/Zielhoehe/Stueckweise aufgeteilt, QC-Linien unter Gefaellestrecke verschoben, Linienzug-Wizard "Naechstes Element" neu sortiert (GF vor VF) mit eigenem Abschliessen-Knopf statt Kettenende-Radio
Lisp/vf_core.lsp: fuenf eigene Menue-Wrapper (LinienzugVarioFoerdererManuell/-Zielhoehe/-Stueckweise, QcLinieMitGf/-UForm) ersetzen den alten interaktiven Modus-Dialog; vfc-dialog-linienzug-modus-waehlen entfaellt. dcl/vf_linienzug_wizard.dcl + Lisp/vf_linienzug.lsp: "Neue Linie BIS Kettenende" ist kein Radio mehr, sondern eigener Button "OK und Abschliessen" neben "Ok Weiter"; GF-Optionen stehen vor VF-Optionen. Menue (SSG_LIB.mnu/.cui), lang/*.json, doc/kommandos.md, doc/lisp_methods.md, doc/faq.md nachgezogen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+46
-64
@@ -80,6 +80,11 @@
|
||||
;; Von den Menue-Wrappern gesetzt, damit die Konsolen-/Dialog-Frage
|
||||
;; entfaellt. nil = interaktiv fragen (Direktaufruf VarioFoerderer).
|
||||
(if (null *vf-vorauswahl-eingabemodus*) (setq *vf-vorauswahl-eingabemodus* nil))
|
||||
;; Vorauswahl des Linienzug-Modus (1-5): von jedem der fuenf Linienzug-
|
||||
;; Menue-Wrapper (c:LinienzugVarioFoerdererManuell/-Zielhoehe/-Stueckweise,
|
||||
;; c:QcLinieMitGf/-UForm) gesetzt - der frueher hier noetige Modus-Dialog/
|
||||
;; Konsolen-Fallback ist dadurch komplett entfallen (siehe c:VarioFoerderer).
|
||||
(if (null *vf-vorauswahl-linienzug-modus*) (setq *vf-vorauswahl-linienzug-modus* nil))
|
||||
|
||||
;; Registriert einen Foerderanlagen-Typ.
|
||||
;; berechne-fn: '(lambda (deltaL deltaH richtung seite) ...)
|
||||
@@ -1108,14 +1113,14 @@
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 11b: DIALOG-AUSWAHL FUER TYP/LINIENZUG-MODUS (Radio-Buttons)
|
||||
;; TEIL 11b: DIALOG-AUSWAHL FUER TYP (Radio-Buttons)
|
||||
;; ============================================================
|
||||
;; Ersetzen die beiden Konsolen-Listen am Anfang von c:VarioFoerderer durch
|
||||
;; Radio-Button-Dialoge (dcl/variofoerderer.dcl, vfc_typ/vfc_linienzug_modus)
|
||||
;; - alle Optionen sofort sichtbar statt Dropdown. WICHTIG: Radio-Button-
|
||||
;; Ersetzt die Konsolen-Liste am Anfang von c:VarioFoerderer durch einen
|
||||
;; Radio-Button-Dialog (dcl/variofoerderer.dcl, vfc_typ) - alle Optionen
|
||||
;; sofort sichtbar statt Dropdown. WICHTIG: Radio-Button-
|
||||
;; Labels sind im DCL fest auf Deutsch einprogrammiert (set_tile kann das
|
||||
;; Label eines radio_button nicht setzen, nur den Zustand - siehe DCL-
|
||||
;; Kommentar). Beide Funktionen geben deshalb nur dann etwas anderes als nil
|
||||
;; Kommentar). Die Funktion gibt deshalb nur dann etwas anderes als nil
|
||||
;; zurueck, wenn GUI erlaubt ist (Tests: ssg-gui-aus) UND Deutsch aktiv ist -
|
||||
;; sonst faellt der Aufrufer automatisch auf die alte, vollstaendig
|
||||
;; uebersetzte Konsolen-Liste zurueck (unveraendert im Code stehen
|
||||
@@ -1161,47 +1166,11 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; "Zurueck" springt zur Anlagen-Typ-Frage zurueck - Rueckgabe 'ZURUECK, vom
|
||||
;; Aufrufer (c:VarioFoerderer) ausgewertet (dort erneuter Aufruf von
|
||||
;; vfc-dialog-typ-waehlen statt hier lokal aufzuloesen).
|
||||
(defun vfc-dialog-linienzug-modus-waehlen ( / dcl-pfad dat gmodus ergebnis)
|
||||
(if (and (or (not (car (atoms-family 1 '("SSG-GUI-P")))) (ssg-gui-p))
|
||||
(= *ssg-lang* "de_DE"))
|
||||
(progn
|
||||
(setq dcl-pfad (strcat (getenv "DXFM_DCL") "/variofoerderer.dcl"))
|
||||
(setq dat (load_dialog dcl-pfad))
|
||||
(if (not (new_dialog "vfc_linienzug_modus" dat))
|
||||
(progn (if (and dat (>= dat 0)) (unload_dialog dat)) nil)
|
||||
(progn
|
||||
(set_tile "modus_1" "1")
|
||||
(action_tile "accept"
|
||||
"(setq gmodus (cond ((= (get_tile \"modus_2\") \"1\") 2)
|
||||
((= (get_tile \"modus_3\") \"1\") 3)
|
||||
((= (get_tile \"modus_4\") \"1\") 4)
|
||||
((= (get_tile \"modus_5\") \"1\") 5)
|
||||
(t 1)))
|
||||
(done_dialog 1)")
|
||||
(action_tile "cancel" "(done_dialog 0)")
|
||||
(action_tile "back" "(done_dialog 2)")
|
||||
(setq ergebnis (start_dialog))
|
||||
(unload_dialog dat)
|
||||
(cond
|
||||
((= ergebnis 1) gmodus)
|
||||
((= ergebnis 2) 'ZURUECK)
|
||||
(t 'ABBRUCH)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
nil
|
||||
)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 12: DISPATCHER c:VarioFoerderer
|
||||
;; ============================================================
|
||||
;; Erzwungener QC-Modus (Linienzug-Modus 4/5, vfc-dialog-linienzug-modus-
|
||||
;; waehlen/Konsolen-Fallback unten): "4"/"5" waehrend des naechsten
|
||||
;; Erzwungener QC-Modus (Linienzug-Modus 4/5, siehe *vf-vorauswahl-linienzug-
|
||||
;; modus* oben/c:QcLinieMitGf*): "4"/"5" waehrend des naechsten
|
||||
;; vf-linienzug-modus-Laufs, sonst nil. Von vf-linienzug-modus (vf_linienzug.
|
||||
;; lsp, spaeter geladen) gelesen/geleert - globale Vorab-Deklaration hier,
|
||||
;; damit sie unabhaengig von der Lade-Reihenfolge existiert.
|
||||
@@ -1213,7 +1182,7 @@
|
||||
best-winkel L_GF L_GF1 L_GF2 L_VF
|
||||
idx eintrag wahl antwort verteilung-modus
|
||||
n-scanner vf-nummer hoehe-von hoehe-bis lastEnt
|
||||
staustrecke-basis vf-insert dlg-typ dlg-modus zurueck-zu-typ)
|
||||
staustrecke-basis vf-insert dlg-typ zurueck-zu-typ)
|
||||
|
||||
(princ "\n=========================================")
|
||||
(princ (ssg-text "vfc-banner-titel"))
|
||||
@@ -1272,24 +1241,13 @@
|
||||
;; Kette mit gemischten GF/VF-Segmenten), passt nicht in das berechne-fn/
|
||||
;; einfuege-fn-Schema fuer ein einzelnes durchgehendes Segment - siehe
|
||||
;; vf_linienzug.lsp. Dispatcht hier direkt und beendet den Standard-Ablauf.
|
||||
;; Jeder Aufrufer (Menue-Wrapper c:LinienzugVarioFoerderer*/c:QcLinieMitGf*)
|
||||
;; setzt *vf-vorauswahl-linienzug-modus* VOR dem Aufruf - der frueher
|
||||
;; hier gefuehrte Modus-Dialog/Konsolen-Fallback ist dadurch entfallen.
|
||||
(if (= anlage-typ "linienzug")
|
||||
(progn
|
||||
(setq dlg-modus (vfc-dialog-linienzug-modus-waehlen))
|
||||
(cond
|
||||
((eq dlg-modus 'ABBRUCH) (exit))
|
||||
((eq dlg-modus 'ZURUECK) (setq zurueck-zu-typ t))
|
||||
(dlg-modus (setq wahl dlg-modus))
|
||||
(t
|
||||
;; Dialog nicht verfuegbar/nicht erlaubt - alte Konsolen-Liste.
|
||||
(princ (ssg-text "vfc-linienzug-modus-header"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-1"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-2"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-3"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-4"))
|
||||
(princ (ssg-text "vfc-linienzug-modus-5"))
|
||||
(setq wahl (getint (ssg-text "prompt-wahl-1-5")))
|
||||
)
|
||||
)
|
||||
(setq wahl *vf-vorauswahl-linienzug-modus*
|
||||
*vf-vorauswahl-linienzug-modus* nil)
|
||||
(if (not zurueck-zu-typ)
|
||||
(progn
|
||||
;; Konsolen-Nummer -> interne Funktion:
|
||||
@@ -1540,7 +1498,6 @@
|
||||
|
||||
;; Menue-Wrapper: jeder feste Endpunkt der VarioFoerderer-Erzeugung ist
|
||||
;; direkt aufrufbar (Typ + Eingabemodus vorbelegt, keine Rueckfrage).
|
||||
;; Nur der Linienzug fragt intern noch Modus 1/2/3 (komplexer Fall).
|
||||
;; Eingabemodus-Vorauswahl: "2" = Werte manuell (DCL-Dialog),
|
||||
;; "1" = aus 3D-Linie (Linie picken).
|
||||
|
||||
@@ -1568,9 +1525,34 @@
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
|
||||
;; --- Linienzug (bleibt interaktiv: fragt Modus 1/2/3) ---
|
||||
(defun c:LinienzugVarioFoerderer ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug")
|
||||
;; --- Linienzug/Streckengruppe (Modus 1/2/3, Typ+Modus vorbelegt) ---
|
||||
(defun c:LinienzugVarioFoerdererManuell ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug"
|
||||
*vf-vorauswahl-linienzug-modus* 1)
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
(defun c:LinienzugVarioFoerdererZielhoehe ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug"
|
||||
*vf-vorauswahl-linienzug-modus* 2)
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
(defun c:LinienzugVarioFoerdererStueckweise ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug"
|
||||
*vf-vorauswahl-linienzug-modus* 3)
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
|
||||
;; --- QC-Linie (Linienzug-Modus 4/5, Typ+Modus vorbelegt) ---
|
||||
;; Menue: ILS -> Gefaellestrecke (gehoeren inhaltlich dorthin, technisch
|
||||
;; weiterhin ueber den Linienzug-Ablauf/*vfl-forciere-qc-modus* gebaut).
|
||||
(defun c:QcLinieMitGf ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug"
|
||||
*vf-vorauswahl-linienzug-modus* 4)
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
(defun c:QcLinieMitGfUForm ()
|
||||
(setq *vf-vorauswahl-typ* "linienzug"
|
||||
*vf-vorauswahl-linienzug-modus* 5)
|
||||
(c:VarioFoerderer)
|
||||
)
|
||||
|
||||
|
||||
+12
-9
@@ -1516,11 +1516,11 @@
|
||||
(princ))
|
||||
|
||||
;; "Naechstes Element waehlen" - Hauptmenue des Linienzug-Aufbaus (Modus 1).
|
||||
;; Kettenanfang (frame=nil): alle 6 Optionen waehlbar, Vario-Kurve inklusive
|
||||
;; (kann nur als allererstes Kettenglied gewaehlt werden - siehe Kommentar an
|
||||
;; der Aufrufstelle). Sonst (Frame vorhanden): Vario-Kurve per mode_tile
|
||||
;; deaktiviert, die uebrigen 5 Optionen behalten dieselbe Reihenfolge/
|
||||
;; Bedeutung wie im Konsolen-Menue, nur ohne die Luecke. Pusht die
|
||||
;; Kettenanfang (frame=nil): alle 5 Radio-Optionen waehlbar, Vario-Kurve
|
||||
;; inklusive (kann nur als allererstes Kettenglied gewaehlt werden - siehe
|
||||
;; Kommentar an der Aufrufstelle). Sonst (Frame vorhanden): Vario-Kurve per
|
||||
;; mode_tile deaktiviert, die uebrigen 4 Optionen behalten dieselbe
|
||||
;; Reihenfolge/Bedeutung wie im Konsolen-Menue, nur ohne die Luecke. Pusht die
|
||||
;; POSITIONELLE Antwort ("1".."6" bzw. "1".."5"), identisch zur bisherigen
|
||||
;; Konsolen-Nummerierung, damit Journal/Replay unveraendert bleiben - die
|
||||
;; Radio-Buttons selbst tragen daher STABILE, kontextunabhaengige Keys
|
||||
@@ -1531,8 +1531,11 @@
|
||||
;; - eindeutig als VF erkannt (Startpunkt liegt auf einer bestehenden
|
||||
;; VF-Kette) macht "GF-Bogen"/"Neue Linie: GF" als DIREKTE Fortsetzung keinen
|
||||
;; Sinn (kein GF-Baustein wird an dieser Stelle einfach an ein VF-Teil
|
||||
;; angeflanscht) - diese beiden Optionen werden dann ausgegraut. "Neue Linie
|
||||
;; BIS Kettenende" bleibt immer waehlbar (hat ihre eigene GF/VF-Erkennung).
|
||||
;; angeflanscht) - diese beiden Optionen werden dann ausgegraut.
|
||||
;; "Neue Linie BIS Kettenende" ist kein Radio mehr, sondern der eigene Button
|
||||
;; "abschliessen" (done_dialog 3) - er setzt slot direkt auf 6 und ignoriert
|
||||
;; die aktuelle Radio-Auswahl (hat ihre eigene GF/VF-Erkennung, bleibt daher
|
||||
;; immer waehlbar, auch wenn GF-Bogen/Neue Linie: GF ausgegraut sind).
|
||||
(defun vflw-gruppe-naechstes-element-impl (kettenanfang familie / dat ergebnis slot gwahl)
|
||||
(setq dat (load_dialog (vflw-dcl-pfad)))
|
||||
(if (not (new_dialog "vflw_naechstes_element" dat))
|
||||
@@ -1551,15 +1554,15 @@
|
||||
((= (get_tile \"wahl_variokurve\") \"1\") 2)
|
||||
((= (get_tile \"wahl_linievf\") \"1\") 4)
|
||||
((= (get_tile \"wahl_horizontalvf\") \"1\") 5)
|
||||
((= (get_tile \"wahl_linieende\") \"1\") 6)
|
||||
(t 3)))
|
||||
(done_dialog 1)")
|
||||
(action_tile "abschliessen" "(setq slot 6) (done_dialog 3)")
|
||||
(action_tile "cancel" "(done_dialog 0)")
|
||||
(action_tile "back" "(done_dialog 2)")
|
||||
(setq ergebnis (start_dialog))
|
||||
(unload_dialog dat)
|
||||
(cond
|
||||
((= ergebnis 1)
|
||||
((or (= ergebnis 1) (= ergebnis 3))
|
||||
(setq gwahl (if (or kettenanfang (<= slot 2)) slot (1- slot)))
|
||||
(vflw-pending-push-all (list (itoa gwahl))))
|
||||
((= ergebnis 2) (setq *vfl-wizard-abbruch-grund* "zurueck"))
|
||||
|
||||
Reference in New Issue
Block a user