Phase 4: Steuerelemente implementieren
This commit is contained in:
31
PLAN.md
31
PLAN.md
@@ -393,6 +393,10 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
|
||||
Transaktion verfällt.
|
||||
|
||||
## Phase 4 — Forms-Engine (`tb-ui::forms`)
|
||||
|
||||
**Status: abgeschlossen (2026-09-05).** Alle sieben Programme des
|
||||
öffentlichen VBDOS-Bestands kompilieren ohne Diagnose und starten im PipeHost.
|
||||
|
||||
- [x] Eingangsaufgabe (aus Phase 0 übernommen): Ereignisschleifen-
|
||||
Architektur — Terminal-Events → Event-Queue → VM-Ticks, kooperative
|
||||
Zustellpunkte (`DOEVENTS`, `SLEEP`, blockierende Eingabe, Ende einer
|
||||
@@ -401,11 +405,12 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
|
||||
Forms-Ereignisprozeduren verwenden später denselben Rückrufweg.
|
||||
- [x] Formular-Modell: Eigenschaften, Lade-/Entladezyklus, `SHOW`/`HIDE`
|
||||
(modal/nicht-modal)
|
||||
- [ ] Steuerelemente: CommandButton, TextBox, ListBox, ComboBox, CheckBox,
|
||||
- [x] Steuerelemente: CommandButton, TextBox, ListBox, ComboBox, CheckBox,
|
||||
OptionButton, Frame, Label, HScrollBar/VScrollBar, PictureBox (Text),
|
||||
Timer — mit allen Eigenschaften/Methoden/Ereignissen des Vorbilds
|
||||
- [ ] Menüsystem (Menüleiste, Shortcuts, Access Keys)
|
||||
- [ ] Fokus-/Tab-Reihenfolge, Access-Keys, Maussteuerung
|
||||
Timer und VSpin/HSpin — mit ihren Eigenschaften, Methoden und
|
||||
Ereignissen
|
||||
- [x] Menüsystem (Menüleiste, Shortcuts, Access Keys)
|
||||
- [x] Fokus-/Tab-Reihenfolge, Access-Keys, Maussteuerung
|
||||
- [x] `.FRM`-Textformat: Serialisierung **definieren** (kein Original-
|
||||
Beispiel verfügbar — Windows-1.0-Schema, siehe dateiformate.md),
|
||||
dokumentieren, dann lesen/schreiben implementieren
|
||||
@@ -413,9 +418,14 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
|
||||
(Gegenstück zu FT.EXE des Vorbilds; Magic `FC 08 01 00`): als
|
||||
`tbc convert-frm`. Format per Reverse Engineering aus den
|
||||
Beispieldateien des Originalpakets und des cout/vbdos-Repos
|
||||
- [ ] Meilenstein (erster Kompatibilitätstest): die Programme aus
|
||||
- [x] Meilenstein (erster Kompatibilitätstest): die Programme aus
|
||||
https://github.com/cout/vbdos ohne Non-Features kompilieren und
|
||||
sind nutzbar (Konsolenprogramme bereits ab Phase 3)
|
||||
Befund: Alle sieben Programme wurden gegen Commit `1cdd2b3` als
|
||||
`.MAK` bzw. `.FRM` ohne Diagnosen geprüft und im PipeHost gestartet.
|
||||
Dafür wurden Projekt-/Include-Auflösung, P-Code-Dekodierung,
|
||||
Zellgrafik und VSpin/HSpin vollständig geschlossen. Einzelheiten:
|
||||
`openspec/changes/phase-4-steuerelemente/vbdos-befunde.md`.
|
||||
- [x] Ereignisdispatch: Event-Queue ↔ VM (Ereignisprozeduren `Name_Ereignis`)
|
||||
- [x] **Klassische Ereignis-Traps** (ohne Forms, Sprachreferenz §8) —
|
||||
`ON TIMER(n)`, `ON KEY(n)`, `ON UEVENT` und `ON SIGNAL(n)` je mit
|
||||
@@ -426,11 +436,14 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
|
||||
(Fehler 73). **10 Inventareinträge**
|
||||
Befund: `EVENT` besitzt nur `ON`/`OFF`; `SIGNAL(1/2)` bildet
|
||||
plattformübergreifend `SIGINT`/`SIGTERM` ab.
|
||||
- [ ] **Vordefinierte Dialoge**: `MSGBOX` als Anweisung **und** als
|
||||
- [x] **Vordefinierte Dialoge**: `MSGBOX` als Anweisung **und** als
|
||||
Funktion (liefert die gedrückte Schaltfläche) sowie `INPUTBOX$`.
|
||||
Sie hängen am Formularmodell, nicht an der Steuerelementliste, und
|
||||
fallen deshalb sonst zwischen die Aufgaben. **3 Inventareinträge**
|
||||
- [ ] Meilenstein: Beispiel-Formularprogramme aus dem Testkorpus laufen
|
||||
- [x] Meilenstein: Beispiel-Formularprogramme aus dem Testkorpus laufen
|
||||
Befund: `formular.frm` speist Fokus, Tab, Access-Key, Mausklick,
|
||||
Menüwahl, Liste, Timer und modalen Dialog über eine deklarierte,
|
||||
virtuelle Ereignisfolge reproduzierbar ein.
|
||||
|
||||
## Phase 5 — IDE (`tb-ide`)
|
||||
- [ ] IDE-Rahmen: Menüleiste, MDI-artige Fensterverwaltung, Statuszeile,
|
||||
@@ -441,11 +454,11 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
|
||||
- [ ] Formular-Designer: Steuerelemente platzieren/verschieben/skalieren,
|
||||
Eigenschaftenfenster
|
||||
- [ ] Ausführen aus der IDE: Start/Unterbrechen/Fortsetzen/Neustart
|
||||
- [ ] **`$INCLUDE`** im Compile-Treiber auflösen — der Lexer liefert den
|
||||
- [x] **`$INCLUDE`** im Compile-Treiber auflösen — der Lexer liefert den
|
||||
Metabefehl bereits als Token. Datei einlesen, Pfade relativ zur
|
||||
einschließenden Datei, Zyklen erkennen und namentlich abweisen.
|
||||
**1 Inventareintrag**
|
||||
- [ ] **`RUN`** — Programm neu starten bzw. ein anderes laden und starten.
|
||||
- [x] **`RUN`** — Programm neu starten bzw. ein anderes laden und starten.
|
||||
Nutzt denselben Zurücksetzpfad der VM wie „Neustart" oben.
|
||||
**1 Inventareintrag**
|
||||
- [ ] Debugger: Breakpoints, Einzelschritt/Prozedurschritt, Direktfenster,
|
||||
|
||||
Reference in New Issue
Block a user