Einfaches Menüsystem
Mit Control6 kann mit minimalem Aufwand ein kleines Menüsystem, zum Beispiel auf einem LCD-Display, erstellt und wiedergegeben werden. Das Ausgabemedium ist relativ flexibel, da das Ganze auf dem TTY Layer fußt.
Die Menüfunktion steht noch relativ am Anfang der Entwicklung, deswegen sind momentan auch nur sehr einfache Menüs machbar, aber immerhin.
Eine einfache Auswahlliste
Zunächst die Definition des Menüs selbst:
MENU(COLS, 2, 0, " ** Wecky **", MENUITEM("Test 1", DEBUG("Chosen menuitem: 1")) MENUITEM("Test 2", DEBUG("Chosen menuitem: 2")) MENUITEM("Test 3", DEBUG("Chosen menuitem: 3")) MENUITEM("Test 4", DEBUG("Chosen menuitem: 4")) )
Die Funktion MENU hat fünf Argumente. Zunächst die breite des zu verwendenden TTY-Fensters, dann die Position (Y- und X-Koordinate) und der Menütitel. Das fünfte Argument beinhaltet die Untermenüpunkte.
In diesem Fall sind dies alles MENUITEM (andere werden momentan ohnehin noch nicht unterstützt (:mrgreen:)). Diese bekommen als erstes Argument einen Anzeigetext. Das zweite Argument stellt den Code dar, der ausgeführt werden soll, wenn der Eintrag selektiert wird. Dies ist im konkreten Fall nur ein DEBUG-Aufruf, kann aber grundsätzlich beliebig komplexer Control6-Code sein.
Das beste Menü hilft aber nicht, wenn es nie sichtbar wird. Dies können wir durch folgendes Stück Code erreichen:
UNLESS MENU_STARTED() DO ON TTY_GETCH() == 10 DO MENU_START() END END
In der Hauptschleife wird regelmäßig überprüft ob das Menü noch nicht aktiv ist (bzw. wieder verlassen wurden). Falls ja, wird versucht ein Zeichen aus dem TTY-Eingabepuffer zu lesen. Ist dies ein Newline-Zeichen (als Ausfluss der Eingabetaste), wird das Menü gestartet.