Termin-Client

Programmtechnisch deutlich aufwendiger ist der Termin-Client mit über 200 Zeilen Code. Das Listing 2 teilt sich in acht logische Blöcke: Die Anfangs-Definitionen (Zeile 2), fünf Funktionen (Zeile 20 bis 132), Einlesen der Terminliste (Zeile 136) und das Hauptmenü (Zeile 159).

Abbildung 1: Ein Programm, drei Frontends: dialog (oben), gdialog (links unten) und kdialog (rechts unten) werden fast identisch angesteuert, unterscheiden sich aber in Aussehen und Bedienung

In den Zeilen 2 bis 15 wird das zu verwendende Frontend festgelegt: gdialog von Gnome, kdialog von KDE oder das Text- und ncurses-basierte dialog. Letzteres ist das Ursprungs-Tool, das gdialog und kdialog nachbilden, eine ausführliche Beschreibung finden Sie auf Seite 78 des LinuxUser 11/2001 oder unter http://www.linux-user.de/ausgabe/2001/11/078-ootb/dialog-4.html. Leider ist kdialog nicht ganz kompatibel zu dialog: Auswahlen in Menüs liefert das KDE-Pendant über die Standard-Ausgabe (stdout), während dialog und gdialog althergebracht die Standard-Fehlerdatei (stderr) verwenden. Der Unterschied scheint klein, bedeutet in der Programmierung allerdings einigen Umstand, wenn die Auswahl wie üblich per Umleitung in eine Datei geschrieben wird:

dialog … 2>datei
gdialog … 2>datei
kdialog … 1>datei

Unglücklicherweise akzeptiert die Bash keine Variable an Stelle der Umleitung. Einzig mit der eval-Anweisung ist es möglich, die Umleitung flexibel zu gestalten. Deshalb wird in den Zeilen 2 bis 11 zunächst bestimmt, welches der Programme installiert ist und dementsprechend der Programmname und die passende Umleitung in Variablen gespeichert.

Die Funktionen

Die Funktion AuswahlMenue (Zeile 20 bis 59) zeigt, wie der Name schon sagt, ein Auswahl-Menü an. Der erste Parameter ist der Titel des Menüs, im zweiten sind die Tastenkürzel als Tabulator-getrennte Liste und im dritten schließlich die Beschreibung der einzelnen Menüpunkte wiederum mit Tabulatoren getrennt. Die Tastenkürzel aus dem zweiten Parameter werden zudem als Rückgabewert genutzt, wenn ein Menüpunkt ausgewählt wurde.

Wie schon vom Server bekannt werden die beiden Tabulator-getrennten Listen in den Zeilen 26 bis 34 und 36 bis 43 mit Hilfe der IFS aufgetrennt und in Arrays gespeichert. Das ist notwendig, weil alle drei Frontends eine andere Reihenfolge erwarten: Kürzel und Beschreibung stehen dort immer paarweise zusammen. Diese Reihenfolge wird in Zeile 45 bis 48 in der Variable Menu generiert.

Die Overhead-Variable in Zeile 50 wird nur für dialog benötigt. Einer der Parameter gibt die Größe des Menü-Rahmens an, und dort müssen Dinge wie Überschrift, innere Rahmen und OK- sowie Abbruch-Schaltfläche berücksichtigt sein. Der Wert wird einfach durch Ausprobieren ermittelt.

In Zeile 56 wird nun der Parameter-String für den Dialog-Aufruf zusammengebaut und in Zeile 57 mittels eval ausgeführt. Mit read in Zeile 58 wird die Ausgabe des jeweiligen Dialog-Programms in der Variablen REPLY gespeichert.

Die Funktionen TextEingabe, JaNein und Fehler sind unspektakulär, hier wird jeweils nur ein Dialog-Aufruf ausgeführt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Portabel programmieren mit Dialog, Gdialog und Kdialog
    Bash-Skripte sind meist nur für die Verwendung auf der Kommandozeile gedacht und schrecken Nicht-Experten mit unübersichtlichen Ausgaben ab. Das muss aber nicht so sein: Die Programme Dialog, Gdialog und Kdialog verstecken die Kommandozeile vollständig vor dem Benutzer.
  • Gut aufgestellt
    Admidio verwaltet nicht nur plattformunabhängig Mitgliederdaten, sondern managt auch Veranstaltungstermine samt Zeiten und Teilnehmern elegant und online.
  • Termine und Aufgaben immer synchron halten
    Ein kleines Applet bringt Ordnung in Termine und Aufgaben und synchronisiert zugleich PC und Smartphone, sodass Sie immer auf dem neusten Stand sind.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...