summaryrefslogtreecommitdiff
path: root/app/eudas/4.3/doc/eudas.ref.10
blob: fbfcf7efcd4c8ebabb0329c51c9ef0966784af1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
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.