Control-Menüs öffnen für alle Fensterarten am [≡]-Symbol des aktiven Fensters: eigener Auswahlzustand statt Kopplung an die Menüleiste, bevorzugt unter der Titelzeile, bei Platzmangel nach oben aufgeklappt, am rechten Rand nur so weit nach links wie nötig. Regressionstest über TestBackend für Code-, Projekt-, Output-, Immediate-, Debug- und Hilfefenster, maximiert, minimiert, Rand und Maus. Nebenbefunde der Windows-Testausführung: Temporärdatei vor sync_all schreibend öffnen (Zugriff verweigert), relative Projektverweise immer mit / schreiben, zeilenendenneutrale Vergleiche in Referenzmatrix-, Kompatibilitäts- und MAK-Beispieltests, DriveListBox-Zeichenbild plattformneutral. Korpus-Sollausgaben per .gitattributes auf LF. Specs ide-oberflaeche und ide-projekte synchronisiert, Change archiviert. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
5.3 KiB
ide-projekte Specification
Purpose
Verwaltet Projekte, bearbeitbare Quell- und Formulardokumente sowie ihre Dateien konsistent zwischen IDE und Compiler, ohne Änderungen oder ursprüngliche Quellorte zu verlieren.
Requirements
Requirement: Gemeinsame Projekt- und Include-Auflösung
IDE und CLI SHALL BAS-, FRM- und MAK-Quellen mit derselben relativen, DOS-großschreibungsunabhängigen Pfadauflösung laden. Verschachtelte Includes SHALL relativ zur einschließenden Datei aufgelöst werden; Diagnoseorte SHALL Modul, ursprüngliche Datei und physische Zeile erhalten. Offene Dokumente SHALL beim IDE-Übersetzen Vorrang vor ihrem Plattenstand haben.
Scenario: Ungespeichertes gemeinsames Include
- WHEN zwei Module dasselbe Include verwenden und dessen geöffneter Text geändert wird
- THEN erhalten beide Module den bearbeiteten Text mit der Identität der Include-Datei; auf der Platte bleibt der bisherige Text bis zum Speichern bestehen
Scenario: Fehler beim Öffnen
- WHEN eine Projektdatei fehlt oder ein Include-Zyklus entdeckt wird
- THEN nennt die Diagnose die beteiligten Pfade und das bisher geöffnete Projekt bleibt vollständig erhalten
Requirement: Projektmitglieder und Startdatei
Die IDE SHALL New/Open/Save Project, New Module, New Form, Add File und Remove File anbieten. MAK-Mitglieder SHALL geordnet gespeichert werden. Set Start-up File SHALL genau ein vorhandenes BAS- oder FRM-Mitglied auswählbar und dauerhaft erkennbar machen. MAK ohne explizite Auswahl SHALL ihre bisherige Ausführungsreihenfolge und Startformularwahl behalten. Remove File SHALL nur die Mitgliedschaft entfernen und MUST NOT die Datei löschen.
Scenario: Projekt wieder öffnen
- WHEN Module und Formulare hinzugefügt, eine Startdatei gewählt und das Projekt gespeichert und erneut geöffnet werden
- THEN bleiben Mitgliedschaft, Reihenfolge und Startdatei erhalten und dieselben Quellen sind auch über die CLI ladbar
Scenario: Startdatei entfernen
- WHEN die ausgewählte Startdatei entfernt werden soll
- THEN wird eine Ersatzwahl oder die ausdrückliche Rückkehr zum bisherigen Standard verlangt; Abbrechen verändert nichts
Requirement: Gemeinsame Dokumente und Ansichten
Mehrere Codefenster und der Formular-Designer SHALL denselben Dokumentstand benutzen. Fensterfokus, Cursor und Scrollposition SHALL ansichtsbezogen sein. Änderungen SHALL dokumentbezogen als ungespeichert erkennbar sein; Include-Ansichten MUST NOT expandierten Quelltext versehentlich als Ursprungsdatei speichern.
Scenario: Zweites Codefenster
- WHEN ein Dokument in zwei Fenstern offen ist und eines den Text ändert
- THEN zeigt das andere denselben neuen Text mit eigener Cursorposition; Schließen einer Ansicht verwirft das Dokument nicht
Requirement: Verlustfreies Speichern und Wechseln
Save File, Save File As, Save Project sowie Projektwechsel und IDE-Ende SHALL Änderungen mit Speichern/Verwerfen/Abbrechen behandeln. Fehlgeschlagenes Speichern MUST den bearbeiteten Stand erhalten und darf die letzte gültige Zieldatei nicht beschädigen. Externe Dateiänderungen und bestehende Save-As-Ziele SHALL vor Überschreiben erkennbar sein und eine ausdrückliche Wahl erfordern. Erst erfolgreich gespeicherte Dokumente SHALL als gespeichert gelten. Relative Mitglieder- und Include-Verweise in geschriebenen MAK- und BAS-Dateien SHALL plattformneutral mit / als Trenner geschrieben werden; das Laden SHALL solche Verweise auf allen Zielplattformen auflösen.
Scenario: Schreibfehler im Projekt
- WHEN ein Mitglied erfolgreich gespeichert wird, ein weiteres aber nicht geschrieben werden kann
- THEN bleibt das zweite als geändert offen, der Fehler nennt den Pfad und das Projekt wird nicht als vollständig gespeichert oder geschlossen gemeldet
Scenario: Save As in anderes Verzeichnis
- WHEN ein Projekt unter einem neuen Pfad gespeichert wird
- THEN werden relative Mitgliederverweise so angepasst, dass dieselben Dateien geladen werden; ein fehlgeschlagener Vorgang lässt den bisherigen Projektpfad aktiv
Scenario: Projekt zwischen Plattformen austauschen
- WHEN ein Projekt unter Windows in ein Unterverzeichnis gespeichert wird und die Projektdatei anschließend unter Linux oder macOS geöffnet wird
- THEN enthalten die geschriebenen Verweise
../statt..\, und beide Plattformen laden dieselben Mitglieder und Bibliotheken
Requirement: Formularimport und Textaustausch
Die IDE SHALL bestehende FRM-Leser und die kanonische Textausgabe gemäß forms-dateiformat verwenden. Binäre FRM-Originale MUST beim Import erhalten bleiben; die bearbeitete Textfassung SHALL über ein ausdrücklich gewähltes Ziel gespeichert werden. Load Text und Save Text SHALL Text in das aktive Codedokument einfügen beziehungsweise dessen Auswahl oder gesamten Inhalt exportieren, ohne die Projektmitgliedschaft unbemerkt zu ändern.
Scenario: Binäres Formular bearbeiten
- WHEN ein binäres Formular geöffnet, geändert und gespeichert wird
- THEN fordert die IDE einen Text-Zielpfad an; Struktur, Array-Indizes und Code bleiben erhalten und die Binärquelle wird nicht überschrieben
Scenario: Textimport rückgängig machen
- WHEN Load Text eine Datei am Cursor einfügt und Undo folgt
- THEN wird der ursprüngliche Dokumenttext wiederhergestellt