# Terminal Basic IDE bedienen `cargo run -p tb-ide -- [Projekt.mak|Modul.bas|Formular.frm]` startet die IDE. Ohne Datei erscheint ein neues Projekt mit `[1] Untitled` und dem Project Window rechts. Versions- und Copyright-Begrüßung blockieren keine Eingabe. Bei bereits vorhandener `Untitled.bas` bekommt das neue Dokument einen freien Namen. Es wird beim Start keine Datei angelegt. Das Terminal muss mindestens 80×25 Zellen haben. Darunter erscheint nur der Größenhinweis; Dokumente, Fokus und Fensterzustand bleiben erhalten. Beim Vergrößern werden die Fenster wieder innerhalb der Terminalfläche dargestellt. Normales Beenden und Fehlerpfade stellen Raw Mode, Cursor, Mausmodus und Alternate Screen zurück. ## Menüs, Fenster und Dialoge - Alt plus Menübuchstabe oder F11 öffnet die Menüleiste. Pfeile wählen Menü/Eintrag, Enter führt aus; der unterstrichene Buchstabe wählt direkt. Esc bricht ab. F11 ist die Alternative, wenn das Terminal Alt allein nicht meldet. Menüs sind auch anklickbar, Help steht rechts. - File enthält Projekt- und Dateiaktionen einschließlich New Form, New Module, Add/Remove File, Save File/As, Load/Save Text und Exit. Run → Set Start-up File speichert eine Auswahl oder den bisherigen Standard. - Dialoge binden Tastatur und Maus an sich. Tab/Shift+Tab wechselt das Feld, Links/Rechts ändert Auswahlwerte, Leertaste schaltet Kästchen. Textfelder unterstützen Cursor, Pos1/Ende, Backspace/Entf und Ctrl+A zum Ersetzen. Enter/OK übernimmt, Esc/Abbrechen verwirft den Dialog. - F2 in einem Dateipfad öffnet die Dateiauswahl. Links/Rechts wählt einen Eintrag, Enter öffnet ein Verzeichnis oder übernimmt eine Datei. Esc kehrt zum vorherigen Dialog mit dessen Angaben zurück. Neue Dateinamen lassen sich direkt ins Pfadfeld schreiben. - F6/Ctrl+F6 bzw. Shift+F6 wechselt Fenster. Ctrl+F4 schließt eine Ansicht; Dokument und Änderungen bleiben im Projektmodell erhalten. Alt+Minus oder die Control-Menü-Box öffnet die Fensterbefehle. - Ctrl+F7 verschiebt und Ctrl+F8 skaliert mit Pfeilen (Ctrl+Pfeile: fünf Zellen); Enter bestätigt, Esc stellt die vorige Geometrie wieder her. Ctrl+F9 minimiert, Ctrl+F10 maximiert, Ctrl+F5 stellt die Normalgeometrie wieder her. Window → Arrange All kachelt, New Window öffnet eine weitere Ansicht desselben Dokuments. Die Window-Liste markiert die aktive Ansicht. - Im Project Window wählen Pfeile das Mitglied; Enter öffnet Code oder Formular entsprechend dem Dateityp. Form/Code-Buttons öffnen die gewählte Ansicht. View → Code/Form bietet zusätzlich einen Auswahldialog. - Die Umgebung zeigt unten anklickbare Tastenkürzel und `00001:001` als Zeile/Spalte. Der Designer besitzt stattdessen die Properties Bar. F10 wechselt dort zwischen Menü- und Properties Bar, F2 fokussiert Value. Die fachliche Formularbearbeitung folgt in Change 05. ## Speichern und Wechseln Save File nutzt den bestehenden Pfad; neue Dateien, Importziele und Speicherkonflikte öffnen den Speicherdialog. Save Project zeigt Projektziel und Dokumentziele mit separaten Überschreibentscheidungen. Eine Änderung eines Pfades allein autorisiert kein Überschreiben einer vorhandenen Datei. Binäre FRM-Originale bleiben auch mit gesetzter Überschreibentscheidung geschützt; für bearbeitete Importe ist ein anderes Textziel erforderlich. Beim Projektwechsel und Beenden stehen Abbrechen, Speichern und Verwerfen zur Auswahl. Abbrechen ist vorausgewählt. Bei einem Teilspeicherfehler bleibt der Dialog mit allen Angaben offen: erfolgreich gespeicherte Dateien sind gespeichert, übrige Änderungen bleiben erhalten; die IDE schließt nicht. Die MAK-Datei wird zuletzt geschrieben. Details stehen in [Dateiformate](dateiformate.md#bearbeitete-dokumente-und-speichern). Load Text fügt am Cursor als eine Undo-Aktion ein; Save Text exportiert im Rahmen den gesamten Code. Der Dokumentvertrag unterstützt bereits Auswahlexport; die Auswahlbedienung gehört zum Editor-Change 03. Remove File löscht keine Datei; beim Entfernen der Startdatei ist die Wahl eines Ersatzes oder des bisherigen Standards ausdrücklich im Dialog enthalten. ## Display und Benutzereinstellungen Options → Display bietet Vorder- und Hintergrund (0–15) für Menü, Desktop, Code, aktiven Titel, Rahmen, Dialog/Projekt und Status. Default ist Schwarz auf Hellgrau für Menüs/Dialogs, Hellgrau auf Blau für Code, Weiß auf Magenta für aktive Titel und Schwarz auf Cyan für den Status. Desktop: `▒`, Hellgrau auf Schwarz; Tabweite: 8. Ein Desktopzeichen muss genau eine Terminalzelle belegen, Tabweite liegt zwischen 1 und 32. Änderungen gelten sofort für die IDE; BASIC-Laufzeitfarben bleiben unabhängig. Set Paths verwaltet Quellen-, Ausgabe- und Include-Verzeichnisse. Mehrere Includes werden mit `|` getrennt; relative Optionspfade werden beim Übernehmen relativ zum Projektverzeichnis absolut aufgelöst. Das Include neben der Quelldatei hat Vorrang vor Suchverzeichnissen. Right Mouse schaltet Kontext-Hilfe per Rechtsklick (Default an); die Hilfefunktion folgt in Change 07. Syntax Checking ist zunächst an; dessen fachliche Editorwirkung folgt in Change 03. Erst Options → Save… / OK schreibt die versionierte Benutzerdatei: | System | Pfad | | --- | --- | | Unix mit absolutem XDG_CONFIG_HOME | `$XDG_CONFIG_HOME/TerminalBasic/options.ini` | | macOS ohne XDG_CONFIG_HOME | `$HOME/Library/Application Support/TerminalBasic/options.ini` | | anderes Unix ohne XDG_CONFIG_HOME | `$HOME/.config/TerminalBasic/options.ini` | | Windows | `%APPDATA%/TerminalBasic/options.ini` | Die Datei ist unabhängig vom Arbeitsverzeichnis. Ungültige Werte erhalten eine Diagnose und behalten die Vorgabe; unbekannte Schlüssel werden mit Hinweis ignoriert. Unbekannte Versionen/ungültige Textkodierung verwenden Defaults. Schreibfehler erhalten die aktuellen, ungespeicherten Optionen. Externe Änderungen der Optionsdatei werden vor dem Ersetzen erkannt. ## Native Exporte: UI in Phase 5, Erzeugung in Phase 6 Run → Make EXE File… (Alt+R, E) und Make Library… (Alt+R, L) öffnen vollständig bedienbare Dialoge. Artefaktart ist das native eigenständige Executable bzw. die native Systembibliothek. Zielsystem (Linux/macOS/Windows) und Architektur (x86_64/aarch64) sind auswählbar; Vorgabe ist das laufende Zielsystem. Ausgabepfad und Überschreibentscheidung werden je Auftrag erfasst. Die Auswahl ist noch keine Zusage einer vom Backend unterstützten Kombination; die Phase-6-Plattformmatrix bestätigt die tatsächlichen Ziele. Prüfen/Enter validiert die Angaben und schützt Projektdatei, geöffnete Dokumente und binäre FRM-Originale. Leere/ungültige Pfade, fehlende Zielverzeichnisse, bestehende Ziele ohne Zustimmung und `.tbc` als natives Ziel ergeben eine Diagnose; die anderen Angaben bleiben erhalten. Nur **Erzeugen** ist bis Phase 6 gesperrt, mit dem Hinweis „Native Erzeugung folgt in Phase 6“. Ein Produktionsaufruf schreibt keine Datei und meldet keinen erfundenen Erfolg. Der vorbereitete Auftrag trägt Projektidentität und Revisionsstand, Artefakt, Zielsystem, Architektur, Pfad und Überschreibentscheidung. Die UI kann zu diesem Auftrag Laufend, Erfolg, Fehler und Abbruch darstellen. Oberflächentests speisen diese Ergebnisse kontrolliert ein; sie belegen keine native Erzeugung. Die tatsächliche Erzeugung und reale Backend-Anbindung, native Formate, Library-Symbole/Aufrufvertrag und der native Verbraucher-Nachweis stehen explizit in [PLAN.md, Phase 6](../PLAN.md). Ein umbenanntes TBC erfüllt keines der beiden Exportziele. ## Befehlsabdeckung nach Change 02 Alle Referenzbefehle sind in ihrer Menüfolge vorhanden. Fachbefehle der folgenden Changes sind sichtbar deaktiviert und zeigen einen Verfügbarkeitsgrund; ihre Kürzel gelangen nicht versehentlich an BASIC. Ctrl+C im Editor ist Kopieren (Fachfunktion 03), bei laufendem Programm mit Output-Fokus wird Ctrl+C an den Programmeingabepfad weitergereicht. | Bereich | Rahmenaktion jetzt | Fachaktion im Folgechange | | --- | --- | --- | | File | New/Open/Save Project, New Form/Module, Add/Remove File, Save File/As, Load/Save Text, Exit | Print/Shell: 04 | | Edit | Undo über Dokumentaktionen; einfacher Texteinstieg | Cut/Copy/Paste/Clear, New Sub/Function: 03; Event Procedures: 05 | | View | Code/Form-Auswahl, Designer Menu Bar/Value-Fokus | Included File/Lines: 03; Output Screen: 04; Grid Lines: 05; Next Statement: 06 | | Search | Vollständiges Menü und Kürzelzuordnung | Find, Selected Text, Repeat Last Find, Change: 03 | | Run | Set Start-up File und beide Make-Dialoge | Start/Restart/Continue/COMMAND$ und Startup-Ausführungswirkung: 04; native Erzeugung: Phase 6 | | Debug | Vollständiges Menü und Kürzelzuordnung, einschließlich F7/F8/F9/F10 und History | Watches, Watchpoints, Trace, History, Breakpoints, Break on Errors, Set Next Statement: 06 | | Options | Display, Set Paths, Right Mouse, Save, Syntax Checking | Syntaxwirkung: 03; Kontext-Hilfe: 07 | | Window | New Window, Arrange All, Calls/Debug/Help/Immediate/Output/Project, aktive Codeliste, alle Fensterkürzel | Output-Inhalt: 04; Debug/Calls/Immediate-Inhalte: 06; Hilfeinhalt: 07 | | Designer Tools/Window | Tools-Menü, Formliste und gemeinsamer Fenster-/Modusrahmen | Controls/Toolbox, Color Palette, Menu Design Window: 05 | | Help | Vollständiges Menü, About und Help-Fensterrahmen | Index, Contents, Keyboard, Topic, Using Help, Tutorial: 07 | Der einfache Texteinstieg ist noch kein abgeschlossener Editor: Navigation, Selektion, Zwischenablage, Syntaxprüfung und inkrementelles Übersetzen werden in 03 vollständig umgesetzt. Die gesamte Phase-5-Abnahme erfolgt erst in Change 08. ## Reproduzierbarer Testpfad `cargo test -p tb-ide` prüft denselben `App::handle(Event)`-Dispatcher und dieselbe `App::render`-Funktion wie der Terminalprozess mit `ratatui::TestBackend`. Die Tests bedienen Menü, Tastatur, Dialog und Maus; sie prüfen Fokus, Dokumente, Fenster, sichtbare Texte und Farben. Dieser Pfad steht den Folgechanges zur Verfügung. `TerminalGuard` prüft zusätzlich Normalende, Fehlerende und teilweise fehlgeschlagene Initialisierung.