next up previous contents
Next: 6.2.6 Schleifen Up: 6.2 Eingabeanalyse Previous: 6.2.4 Parser

6.2.5 Konfiguration der Bedienelemente

Die graphische Oberfläche des PED enthält folgende Eingabeelemente:

Alle arbeiten nach dem ,,Callback-Prinzip``. Das heißt, daß sie bei Aktivierung durch den Anwender Funktionen aufrufen, die zuvor konfiguriert worden sind. Diese Funktionen führen die gewünschte Operation aus oder veranlassen sie.

In einfachen Fällen ist mit Beendigung der Funktion auch das Ziel erreicht, und keine weiteren Maßnahmen sind mehr erforderlich (z.B. ,,save`` zum Abspeichern des aktuellen Datenbestandes auf die Datei).

Wenn weitere Benutzeraktionen erforderlich sind, gibt es verschiedene Komplexitätsstufen. Falls mit dem Erscheinen eines Dialogfensters und einem davon ausgelösten Callback die Operation hinreichend definiert wird, kann auf Verwendung des Parsers verzichtet werden.

Erst komplexere Eingabefolgen, besonders verschachtelte Operationen, erfordern seinen Einsatz. Die Ansteuerung erfolgt, wie bereits angedeutet, über Callback-Funktionen, die jeweils ein oder mehrere Eingabeworte an den Parser senden.

Je nach erforderlicher Vorverarbeitung kann eine von vier Funktionen dazu verwendet werden:

Von besonderer Bedeutung sind die Konfigurationen der Mausknöpfe.

  1. Sie unterliegen dynamischen Änderungen.
  2. Die aktuelle Mauszeigerposition muß eingebunden werden.
  3. Sie sind abhängig von Steuerungs- und Großschrift-Tasten.
  4. Verschiedene Vorverarbeitungen sind zweckmäßig.

Die Aktion beim Drücken eines Mausknopfes mündet immer in der Verarbeitung einer Zeichenkette mit ped::logical-command. Sie ist das Ergebnis einer Auswertung einer der Maustaste zugeordneten Zeichenkette mit Ersetzungsanweisungen. Dabei geht es darum, die aktuelle Mausposition dem weiteren Datenfluß zugänglich zu machen.

Da verschiedene Interpretationen der Mausposition möglich sind, gibt es eine ganze Reihe entsprechender Formen. Diese Anweisungen bestehen immer aus % und einem weiteren Zeichen, und werden bei der Auswertung durch das entsprechende Ergebnis ersetzt.

''%%'':
ein nicht noch einmal zu interpretierendes %-Zeichen;
''%h'':
die horizontale projizierte Weltkoordinate (double, identisch mit ruler-Anzeige);
''%v'':
die vertikale projizierte Weltkoordinate (double, identisch mit ruler-Anzeige);
''%x'':
die x - Weltkoordinate;
''%X'':
die x - Weltkoordinate nach Rundung mit Magnet;
''%y'':
die y - Weltkoordinate;
''%Y'':
die y - Weltkoordinate nach Rundung mit Magnet;
''%z'':
die z - Weltkoordinate;
''%Z'':
die z - Weltkoordinate nach Rundung mit Magnet;
''%p'':
die Weltkoordinaten eines Punktes (im dreidimensionalen Fall von d=0,
s. Abschnitt 7.6.2);
''%P'':
die Weltkoordinaten eines Punktes nach Rundung mit Magnet;
''%s'':
eine Gerade durch zwei Punkte in Weltkoordinaten (nur für dreidimensionale Geometrien);
''%S'':
eine Gerade durch zwei Punkte nach Rundung mit Magnet (nur für dreidimensionale Geometrien);
''%g'':
im dreidimensionalen Fall: eine Gerade durch zwei Punkte, sonst ein Punkt in Weltkoordinaten;
''%G'':
wie %g, aber im ein- und zweidimensionalen Fall nach Rundung mit Magnet

Zur Erklärung der Magnetrundung siehe Abschnitt 7.6.3.

Typisch werden die Formate %G zur Dateneingabe, %g zur Datenauswahl, und %h mit %v für Befehle betreff Bildausschnitt verwendet.

Um im zweidimensionalen Fall eine Liste der Weltkoordinaten an der momentanen Mausposition zu erhalten, dient die Konfiguration "'(%g)". Im Zuge der Vorverarbeitung wird daraus eine LISP-Liste der Form (3.4 1.2).

Wie die Konfigurationstexte sinnvoll mit dem Parser zusammenarbeiten, wird in Abschnitt 6.2.8 gezeigt.

Aber auch andere Teile der Benutzerschnittstelle sind abhängig vom Zustand des Parsers und damit Gegenstand der speziellen Konfiguration. Dies sind der Titel der soeben in Abarbeitung befindlichen Operation, die Hinweistexte für die Bedeutung der Mausknöpfe, Funktionen zur Veranschaulichung der aktuellen Mauszeigerwirkung (,,elastische`` Zeichenfunktionen), und Dialogfenster.

Diese werden mit der Funktion mode eingestellt. Der Aufruf der Zeichenfunktionen zum Löschen und Zeichnen sowie das Aktivieren und Verschwindenlassen der Dialogfenster wird außerhalb des Parsers von Funktionen der Benutzerschnittstelle übernommen, die zu Beginn und am Ende der Callback-Funktionen aufgerufen werden.

(defun mode
  (title        ; Titel der Operation
   b1           ; linker Mausknopf: Liste aus zwei Zeichenketten 
                ; fuer Bedeutung und fuer Konfiguration
   b2           ; ebenso fuer mittleren Knopf
   b3           ; ebenso fuer rechten Knopf
   elastic-on   ; Funktion, die eine dynamische Zeichnung vornimmt
   elastic-off  ; Funktion, die diese dynamische Zeichnung rueckgaengig macht
   elastic-data ; statische Daten (client-data) fuer elastic-on/off
   dialog       ; Dialog-Shell

next up previous contents
Next: 6.2.6 Schleifen Up: 6.2 Eingabeanalyse Previous: 6.2.4 Parser

Martin Knaipp
Wed Jun 12 15:41:33 MET DST 1996