Dialog
Aus Ubuntu-Forum Wiki
Robin2 (Diskussion | Beiträge) |
Robin2 (Diskussion | Beiträge) |
||
Zeile 55: | Zeile 55: | ||
Die nächste Zeile gibt diese Variable mit einer Messagebox aus, wobei \n jeweils für eine neue Zeile steht. | Die nächste Zeile gibt diese Variable mit einer Messagebox aus, wobei \n jeweils für eine neue Zeile steht. | ||
== Menü == | == Menü == | ||
- | Um ein Menü zu erzeugen benutzt man | + | Um ein Menü zu erzeugen benutzt man das Argument ''--menu'': |
+ | <source lang="bash"> | ||
+ | #!/bin/bash | ||
+ | dialog --menu "Wähle einen Texteditor" 15 60 10\ | ||
+ | Emacs "Ein sehr mächtiger Texteditor"\ | ||
+ | vi "Ein sehr mächtiger Texteditor für das Terminal"\ | ||
+ | Gedit "Standard-Editor von Gnome"\ | ||
+ | Kile "Standard-Editor von KDE" 2>dialog.tmp | ||
+ | Eingabe=`cat dialog.tmp` | ||
+ | dialog --msgbox "Sie haben $Eingabe gewählt" 0 0 | ||
+ | </source> |
Version vom 3. Juli 2009, 22:12 Uhr
Dieser Artikel wird gerade neu erstellt und ist noch nicht vollständig. |
Der Inhalt dieses Artikels unterlag noch keiner Revision. Er kann geeignet sein, ein System zu beschädigen oder zu zerstören. Die Anleitungen sollten noch nicht genutzt werden. |
Dieser Artikel setzt Grundkenntnisse in der Entwicklung von BASH-Scripten voraus |
Inhaltsverzeichnis |
1 Allgemeines
Dialog ist ein auf ncurses basierendes Programm, welches es ermöglicht in einem Shell-Script auf einfache Art und Weise ein "grafische"-Benutzeroberfläche zu erstellen. Ähnliche Programme sind Dialog sind Zenity oder KDialog, welche aber den Nachteil haben, dass sie einen XServer benötigen.
2 Installation
Dialog ist in den Paketquellen von Ubuntu vorhanden und kann über den Befehl
sudo apt-get install dialog
installiert werden.
3 Benutzung
3.1 Hello World
Dialog wird mit dem Befehl dialog aufgerufen, danach folgen Argumente, welche beschreiben, wie die Benutzeroberfläche letztendlich aussehen aussehen soll. Dies soll nun an einem einfachen Hello World-Programm demonstriert werden:
dialog --msgbox 'Hello World' 5 20
Mithilfen von --msgbox wird dialog mitgeteilt, dass es eine einfache Nachricht in einem Fenster anzeigen soll. Danach folgt ein String (Zeichenkette), welcher angibt, wie der Inhalt der Nachricht lautet, in diesem Fall ein einfaches Hello World. Die beiden Zahlen hinter dem String geben die Größe des Fensters an (Zuerst folgt die Höhe, danach die Breite).
3.2 Einfache Dialogboxen
Nun haben wir schon einen kleinen Einblick in die Syntax von Dialog bekommen, Dialog kann aber noch viel mehr als einfach Meldungen in Fenstern auszugeben. Im folgenden werden wir lernen, wie man über Dialog eine Interaktion mit dem Benutzer erreichen kann. Dazu werden werden wir ein kleines Bash-Script schreiben, dass den Benutzer fragt, ob es ihm gut geht:
#!/bin/bash dialog --backtitle "Interagierendes Dialogprogram" --yesno "Geht es dir gut?" 0 0 if [ $? -eq 0 ]; then dialog --msgbox "Das freut mich!" 0 0 else dialog --msgbox "Das tut mir aber leid!" 0 0 fi
Dieses Programm fragt den Benutzer, ob es ihm gut geht, und teilt dem Benutzer je nach antwort entweder mit, dass es sich freue, oder, dass es ihm leid tue. Wie man sieht, tauchen hier einige neue Funktionen von Dialog auf, welche wir näher betrachten wollen:
dialog --backtitle "Interagierendes Dialogprogram" --yesno "Geht es dir gut?" 0 0
In dieser Zeile fällt als erstes das Argument --backtitle auf, welches die Funktion hat, den nachfolgenden String als Überschrift über dem Fenster anzuzeigen. Dazu passend, existiert es auch das Argument --title, welches eine Überschrift in das Fenster zeichnet.
Auf dieses Argument hin folgt der Parameter --yesno (Yes/No). Dieser Parameter hat die Funktion eine Dialogbox anzuzeigen, welche zwei Button hat, einen Ja und einen Nein Button. Wie bei der --msgbox gibt es auch hier einen String, der den auszugebenden Text anzeigt und zwei Integer (Ganzzahlen), welche die Höhe und die Breite der Dialogbox angeben. Einem aufmerksamen Leser sollte nun aufgefallen seien, das sowohl Höhe als auch Breite der Box auf 0 steht. Das hat die Folge, das die Größe der Box sich automatisch an die Länge des Textes anpasst.
Nun stellt sich natürlich die Frage auf, wie man nun letztendlich herausfindet, welcher der Button schließlich gedrückt wurde? Dazu benutzt man die Umgebungsvariable, $?, in welcher der Wert gespeichert ist, der vom letzten Befehl mit exit zurückgegeben wurde. In diesem Fall wäre das 0 für Ja und 1 für Nein. Diesen Wert kann man nun mit einer normalen IF-Anweisung auswerten.
3.3 Benutzereingaben
Müssen komplexe Benutzereingaben ausgewertet werden, kann man jedoch mit $? nichts anfangen. Stattdessen muss man die Eingabe zunächst in eine Datei geschrieben werden:
#!/bin/bash dialog --inputbox 'Geben Sie etwas ein!' 0 0 2> dialog.tmp Eingabe=`cat dialog.tmp` dialog --msgbox "Du hast eingegeben: \n \n $Eingabe" 0 0
In diesem Beispiel wird zunächst mit
dialog --inputbox 'Geben Sie etwas ein!' 0 0
Ein einfaches Feld für die Texteingabe erzeugt. Mit
[..] 2> dialog.tmp
wird die Eingabe in eine Datei namens dialog.tmp geschrieben, deren Inhalt später mit
Eingabe=`cat dialog.tmp`
cat eingelesen und in der Variable Eingabe gespeichert wird.
dialog --msgbox "Du hast eingegeben: \n \n $Eingabe" 0 0
Die nächste Zeile gibt diese Variable mit einer Messagebox aus, wobei \n jeweils für eine neue Zeile steht.
3.4 Menü
Um ein Menü zu erzeugen benutzt man das Argument --menu:
#!/bin/bash dialog --menu "Wähle einen Texteditor" 15 60 10\ Emacs "Ein sehr mächtiger Texteditor"\ vi "Ein sehr mächtiger Texteditor für das Terminal"\ Gedit "Standard-Editor von Gnome"\ Kile "Standard-Editor von KDE" 2>dialog.tmp Eingabe=`cat dialog.tmp` dialog --msgbox "Sie haben $Eingabe gewählt" 0 0