summaryrefslogtreecommitdiff
path: root/app/eudas/4.3/doc/eudas.ref.10
diff options
context:
space:
mode:
Diffstat (limited to 'app/eudas/4.3/doc/eudas.ref.10')
-rw-r--r--app/eudas/4.3/doc/eudas.ref.10406
1 files changed, 406 insertions, 0 deletions
diff --git a/app/eudas/4.3/doc/eudas.ref.10 b/app/eudas/4.3/doc/eudas.ref.10
new file mode 100644
index 0000000..fbfcf7e
--- /dev/null
+++ b/app/eudas/4.3/doc/eudas.ref.10
@@ -0,0 +1,406 @@
+#limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (97)#
+#headodd#
+#center#EUDAS#right#%
+
+#end#
+#headeven#
+%#center#EUDAS
+
+#end#
+#center#1
+
+10 Programmierung der Menüs
+
+
+
+10.1 Menüformat
+
+EUDAS verwendet drei verschiedene Strukturen zur Benutzerunter­
+stützung: Menü, Auswahl und Hilfestellung. Ein Menü dient zur
+Auswahl von Funktionen, eine Auswahl bietet Feld- oder Datei­
+namen an und eine Hilfestellung zeigt einen Informationstext.
+ Alle diese Strukturen werden aus einer Initialisierungsdatei
+eingelesen. Die Initialisierungsdatei ist eine normale Textdatei. Ihr
+Format soll in diesem Abschnitt beschrieben werden.
+ Die Strukturen können in beliebiger Reihenfolge in der Initiali­
+sierungsdatei stehen. Jede Struktur wird durch eine spezielle
+Anweisung eingeleitet. Anweisungen beginnen ähnlich wie im
+Druckmuster mit einem Prozentzeichen. Dementsprechend gibt es die
+drei Anweisungen
+
+
+ % MENUE "Name"
+ % AUSWAHL "Name"
+ % HILFE "Gebiet/Name"
+
+
+die jeweils eine Struktur einleiten. Beendet wird eine Definition
+immer mit
+
+
+ % ENDE
+
+
+#on("b")#Menü#off("b")# Für ein Menü wird noch der Text angegeben, der auf
+dem
+Bildschirm erscheinen soll. Er wird durch die Anweisung
+
+
+ % BILD
+
+
+eingeleitet. Danach folgen Zeilen mit dem Bildschirminhalt in der
+gewünschten Größe (die tatsächliche Anzeigegröße wird erst beim
+Aufruf angegeben). Dabei werden die Auswahlpositionen, auf denen
+der Cursor sich bewegen kann, durch ein geschütztes Leerzeichen in
+Spalte 2 festgelegt.
+ Nach der Angabe des Bildes muß für jede mögliche Auswahl­
+position noch eine weitere Angabe gemacht werden. Die Auswahl­
+positionen (oder Felder) werden dabei von oben nach unten durch­
+gezählt. Begonnen wird mit der Nummer 1.
+ Eine Felddefinition hat das Format
+
+
+ % FELD nr "Hilfstext" "Tasten"
+
+
+Die Nummer identifiziert das Feld. Der Hilfstext gibt den Namen der
+Hilfestellung an, die gezeigt werden soll, wenn auf diesem Feld ESC
+'?' gedrückt wird. Die Tasten sind alle Zeichen, die gedrückt werden
+können, um dieses Feld direkt auszuführen.
+ Anschließend an die Felddefinition kann in weiteren Zeilen
+noch ein ELAN-Programm folgen, das bei Auswahl des Feldes aus­
+geführt wird.
+
+#on("b")#Auswahl#off("b")# Für eine Auswahl muß zuerst ein Vorspann angegeben
+werden, der immer in den ersten Bildschirmzeilen der Auswahl an­
+gezeigt wird. Dieser wird durch
+
+
+ % VORSPANN
+
+
+eingeleitet. Danach folgt das Bild. Das Bild setzt sich aus drei Tei­
+len zusammen. Die erste Zeile, in der ein geschütztes Leerzeichen
+vorkommt, bildet den Wiederholungsteil. Diese Zeile wird nachher so
+oft wie nötig mit entsprechenden Inhalten wiederholt, wobei das
+geschützte Leerzeichen als Bindestrich dargestellt wird, auf dem
+sich der Cursor bewegen kann. Die Teile davor und danach werden
+jeweils bei Bedarf mitgerollt.
+ Die Wiederholungszeile darf mehrere geschützte Leerzeichen
+enthalten. Die Inhalte werden dann in mehreren Spalten angezeigt.
+Zu beachten ist, daß vor einem Trennstrich noch mindestens fünf
+Zeichen Platz für eine laufende Nummer bleiben müssen.
+
+#on("b")#Hilfe#off("b")# Der Name einer Hilfestellung setzt sich aus zwei
+Teilen
+zusammen, die durch einen Schrägstrich getrennt werden. Der erste
+Name gibt die Kategorie der Hilfestellung an, der zweite Name den
+Einzeltext. Dies dient dazu, die relativ große Zahl der Hilfstexte
+überschaubar zu machen. Als Beispiel
+
+
+ % HILFE "JA/Allgemein"
+
+
+Eine Hilfestellung besteht einfach aus mehreren Seiten Text. Jede
+Seite wird durch die AnweisungQ
+
+
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q
+
+
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q
+
+
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q
+
+
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q̈Q
+Q̈Q̈Q̈Q̈Q̈Q̈Q̈estellung, wobei die Seiten einfach von 1 an durch­
+gezählt werden. Anschließend darf für diese Seite natürlich kein
+Text folgen.
+
+
+10.2 Verwaltung der Menüs
+
+Alle Menüdaten werden intern in Datenräumen gehalten. Dabei sind
+die einzelnen Strukturen getrennt. Mit 'menuedaten einlesen' kön­
+nen Menüdaten aus einer Struktur gelesen und abgespeichert wer­
+den. Existierende Strukturen werden dabei überschrieben, neue
+hinzugefügt.
+ Mit 'menuenamen' können die vorhandenen Strukturen abgefragt
+werden. Mit 'menue loeschen' werden einzelne Strukturen oder alle
+Menüdaten gelöscht. Damit die Datenräume mit den Menüdaten auch
+an Söhne übergeben werden, ist der 'global manager' entsprechend
+geändert. Dies wird im einzelnen durch 'menue manager' bewirkt.
+Der neue Global Manager akzeptiert auch Anfragen von Tasks, die
+nicht Söhne oder Enkel sind.
+
+
+PROC menuedaten einlesen (TEXT CONST dateiname)
+
+ Die in der Datei enthaltenen Strukturen werden eingelesen und
+ abgespeichert. Treten bei diesem Prozeß Fehler auf, so wird
+ eine entsprechende Meldung ins EUMEL-Notizbuch geschrieben
+ und nachher im Paralleleditor angezeigt.
+
+
+THESAURUS PROC menuenamen (INT CONST index)
+
+ Liefert die Namen der Strukturen. Der Index hat folgende Be­
+ deutung:
+ 1: Hilfskategorien
+ 2: Menüs
+ 3: Auswahlen
+ Ist der Index negativ, so werden die Hilfsnamen der entspre­
+ chenden Hilfskategorie geliefert, die im Thesaurus den Index
+ mit umgekehrtem Vorzeichen hat.
+
+
+PROC menue loeschen (TEXT CONST name, INT CONST index)
+
+ Löscht den Namen in dem Thesaurus mit dem angegebenen In­
+ dex, falls dort der Name vorhanden ist.
+
+
+PROC menue loeschen (BOOL CONST hilfen reduzieren)
+
+ Löscht alle Menüdaten. Ist 'hilfen reduzieren' verlangt, wird
+ beim späteren Einlesen der Hilfstexte jeweils nur der erste
+ Text einer Kategorie gespeichert, um Platz zu sparen.
+
+
+PROC global manager
+
+ Geänderter Manager, der die Menüdatenräume in Söhne trans­
+ portiert und Sperren setzen kann. Ersetzt den normalen 'free
+ global manager'. Nur im Multi-User-System vorhanden.
+
+
+PROC menue manager (DATASPACE VAR ds,
+ INT CONST order, phase,
+ TASK CONST order task)
+
+ Eigentliche Manager-Routine. Kann dazu dienen, Managererwei­
+ terungen vorzunehmen. Nur im Multi-User-System vorhanden.
+ Beispiel: der Manager soll nur Aufträge von Söhnen annehmen.
+
+
+ PROC new manager (DATASPACE VAR ds,
+ INT CONST order, phase,
+ TASK CONST order task):
+
+ LET begin code = 4;
+ IF order task < myself OR order = begin code OR
+ order task = supervisor THEN
+ menue manager (ds, order, phase, order task)
+ ELSE
+ errorstop ("kein Sohn")
+ END IF
+
+ END PROC new manager;
+
+ global manager (PROC new manager)
+ (* startet den Manager *)
+
+
+
+10.3 Aufruf
+
+Menüs werden mit der Prozedur 'menue anbieten' aufgerufen. Dabei
+muß neben den Namen ein Fenster übergeben werden, in dem die
+Menüs dann angezeigt werden. Es ist darauf zu achten, daß das
+Fenster groß genug ist, um wenigstens die Auswahlpositionen im
+Bild zu haben.
+ Außerdem muß eine Prozedur übergeben werden, die die einzel­
+nen Funktionen ausführt. Diese Prozedur erhält als Parameter die
+Nummer der ausgewählten Funktion.
+ Mit 'waehlbar' können Auswahlen gesperrt werden. Diese Anga­
+be kann jedoch nicht vor Aufruf von 'menue anbieten' erfolgen, da
+dann alle Sperren erstmal gelöscht werden. Zum Setzen der Sperren
+beim Betreten eines Menüs dient ein besonderer Code, mit dem die
+übergebene Prozedur aufgerufen wird.
+ Eine Auswahl wird mit der Prozedur 'auswahl anbieten' aufge­
+rufen. Diese bekommt ebenfalls ein Fenster übergeben, außerdem
+den Namen einer Hilfestellung, die bei Bedarf aufgerufen werden
+kann. Weiterhin muß eine Prozedur übergeben werden, die die aus­
+zuwählenden Texte erzeugt. Die gewählten Texte können anschlie­
+ßend mit der Prozedur 'wahl' abgefragt werden.
+ Eine Hilfestellung wird durch die Prozedur 'hilfe anbieten'
+ausgegeben. Dabei muß außer dem Namen auch noch ein Fenster
+übergeben werden.
+ Mit 'status anzeigen' kann ein Text in der Statuszeile ausge­
+geben werden. Die Menüprogramme tun dies für ihren Bereich jedoch
+selbst.
+
+
+PROC menue anbieten (ROW 6 TEXT CONST menuenamen,
+ FENSTER VAR f,
+ BOOL CONST esc erlaubt,
+ PROC (INT CONST, INT CONST) interpreter)
+
+ Die angegebenen Menüs werden in dem Fenster 'f' angezeigt.
+ Das Fenster wird nach Beendigung des Menüs als verändert
+ gekennzeichnet. Die Namen der 6 Menüs werden in die Titelzeile
+ aufgenommen. Die Menünamen sollten mit einer Menüidentifika­
+ tion versehen sein, zum Beispiel "EUDAS.Öffnen". Der Text vor
+ dem Punkt wird an den Anfang der Titelzeile gestellt und bei
+ den einzelnen Menünamen unterdrückt. Nicht benötigte Menüs
+ müssen als "" angegeben werden.
+
+ 'esc erlaubt' gibt an, ob mit ESC ESC ein Kommandodialog ge­
+ führt werden kann. Die übergebene Prozedur muß die einzelnen
+ Funktionen ausführen, die als Zahl übergeben werden. Der
+ Interpreter wird im 'disable stop' aufgerufen, daher ist in der
+ Regel ein 'enable stop' erforderlich.
+
+ Die Parameter für 'interpreter' haben folgende Bedeutung:
+ Par. 1: 0 Aufruf zur Initialisierung der Sperren
+ oder anderen Initialisierungen zu Beginn
+ 1..6 Angabe des aktuellen Menüs
+ Par. 2: 1..23 Aufruf der entsprechenden Funktion
+ 0 Eintritt in ein neues Menü (wird vor der
+ Ausgabe dieses Menüs aufgerufen)
+ -1 Verlassen des Menüs
+ -2 Bildschirmupdate (nach Eintritt in das
+ Menü, wenn das Menü ganz ausgegeben ist,
+ oder wenn der Bildschirm nach 'Gib
+ Kommando:' zerstört worden ist)
+
+ FEHLER:
+
+ #on("i")#"Name" existiert nicht.#off("i")#
+ Das angegebene Menü ist nicht vorhanden.
+
+
+PROC waehlbar (INT CONST menuenr, funktionsnr
+ BOOL CONST moeglich)
+
+ Setzt die Funktionssperre der angegebenen Funktion. Muß in­
+ nerhalb von 'menue anbieten' aufgerufen werden. Zu Beginn von
+ 'menue anbieten' sind jeweils alle Funktionen erlaubt.
+
+
+PROC ausfuehrtaste (TEXT CONST taste)
+
+ Setzt die Taste, die Funktionen ausführt. Ist standardmäßig die
+ Leertaste.
+
+ FEHLER:
+
+ #on("i")#falsche Ausfuehrtaste#off("i")#
+ Es muß ein einzelnes Zeichen angegeben werden, das nicht
+ bereits anderweitig verwendet wird.
+
+
+PROC auswahl anbieten (TEXT CONST name, FENSTER CONST f,
+ TEXT CONST hilfe,
+ PROC (TEXT VAR, INT CONST) inhalt)
+
+ Ruft die Auswahl in dem angegebenen Fenster auf. 'hilfe' wird
+ als Hilfestellung verwendet. Die Prozedur 'inhalt' liefert den
+ Text, der an der n-ten Position stehen soll. Wenn keine wei­
+ teren Texte vorhanden sind, muß für alle weiteren Positionen
+ "" geliefert werden.
+
+ FEHLER:
+
+ #on("i")#"Name" existiert nicht.#off("i")#
+ Die angegebene Auswahl ist nicht vorhanden.
+
+
+INT PROC wahl (INT CONST stelle)
+
+ Liefert die Nummer des Textes, der an der n-ten Stelle ausge­
+ wählt wurde. Wurde kein weiterer Text mehr gewählt, so wird 0
+ geliefert.
+
+
+PROC hilfe anbieten (TEXT CONST name, FENSTER CONST f)
+
+ Bietet den Hilfstext in dem angegebenen Fenster an. Existiert
+ die Hilfe innerhalb der angegebenen Kategorie nicht, wird die
+ erste Hilfe der Kategorie angezeigt.
+
+ FEHLER:
+
+ #on("i")#Hilfe existiert nicht#off("i")#
+ Die angegebene Hilfskategorie ist nicht vorhanden.
+
+
+PROC status anzeigen (TEXT CONST zeile)
+
+ Zeigt den angegebenen Text in der obersten Bildschirmzeile an.
+
+
+10.4 Dialog
+
+EUDAS führt den Benutzerdialog in einem Fenster, dessen Größe
+durch 'dialogfenster' eingestellt wird. Das Dialogfenster wird zei­
+lenweise belegt. 'dialog' reserviert eine neue Zeile für eine beliebi­
+ge Ausgabe. Wenn das Fenster voll ist oder überschrieben wurde,
+wird in der ersten Zeile wieder angefangen. Den gleichen Effekt
+kann man mit 'neuer dialog' erreichen.
+ Mit 'ja' kann man im Dialogfenster eine Frage stellen. Als Ant­
+wort kann auch eine Hilfestellung angefordert werden oder die
+Funktion abgebrochen werden. Mit 'editget' kann man nach Auffor­
+derung einen Text eingeben lassen. Dabei stehen die gleichen
+zusätzlichen Möglichkeiten zur Verfügung.
+ Mit 'fehler ausgeben' kann eine durch 'errorstop' erzeugte Feh­
+lermeldung im Dialogfenster angezeigt werden. Der Benutzer muß
+erst eine Taste drücken, ehe er weitermachen kann. Auch hier kann
+eine Hilfestellung zu der Fehlermeldung abgerufen werden.
+
+
+PROC dialogfenster (INT CONST x, y, xl, yl)
+
+ Gibt die Fenstergröße und -position des Dialogfensters an. Für
+ den ganzen Bildschirm müßte (1, 1, 79, 24) angegeben werden.
+
+
+PROC dialog
+
+ Positioniert den Cursor auf die nächste Dialogzeile im Dialog­
+ fenster. Wurde das Fenster verändert, wird das Fenster ge­
+ löscht und auf die erste Zeile positioniert.
+
+
+PROC neuer dialog
+
+ Sorgt dafür, daß der nächste Aufruf von 'dialog' wieder in
+ einem leeren Fenster beginnt.
+
+
+BOOL PROC ja (TEXT CONST frage, hilfe)
+
+ Stellt die angegebene Frage. Es kann die angegebene Hilfsin­
+ formation abgerufen werden. Außerdem wird durch ESC 'h' ein
+ Abbruch (errorstop ("")) erzeugt.
+
+
+PROC editget (TEXT CONST prompt, TEXT VAR eingabe,
+ TEXT CONST res, hilfe)
+
+ Gibt den Text 'prompt' aus und editiert dahinter 'eingabe'. Es
+ kann die angegebene Hilfsinformation abgerufen werden. 'res'
+ gibt an, bei welchen ESC-Folgetasten das Editieren beendet
+ werden soll. In einem solchen Fall wird als Eingabe (ESC + die
+ gedrückte Taste) zurückgeliefert.
+
+
+PROC fehler ausgeben
+
+ Im Dialogfenster wird die letzte Fehlermeldung ausgegeben.
+ Gleichzeitig wird der Fehlerzustand gelöscht. Der Benutzer muß
+ eine Taste drücken, um weiterzumachen. Alternativ kann die
+ Hilfsinformation "FEHLER/" + text (errorcode) abgerufen wer­
+ den.
+
+