Next: Widgets, Previous: Introduction, Up: Top [Contents]
Our first example program shows how to call the gtkdialog
from a BASH script.
#! /bin/bash
export MAIN_DIALOG='
<vbox>
<text>
<label>This is a label...</label>
</text>
<hbox>
<button ok></button>
<button cancel></button>
</hbox>
</vbox>'
gtkdialog --program MAIN_DIALOG
This example uses a very plain way to open a dialog box. We store the
description of the dialog box in the MAIN_DIALOG environment
variable which is exported to the child processes with the BASH
export built-in. Then we call the gtkdialog program with
the --program option which is followed by the name of the
variable holding the dialog box description. It is simple and easy to
write BASH scripts in this manner.
A similar calling method can be used when user input is needed. The
gtkdialog send the state of the widgets to the standard
output when exiting and this is how we can get user input for the BASH
program. The next example code show the reading process.
#! /bin/bash
export DIALOG='
<vbox>
<entry>
<variable>ENTRY</variable>
</entry>
<hbox>
<button ok></button>
<button cancel></button>
</hbox>
</vbox>'
I=$IFS; IFS=""
for STATEMENTS in $(gtkdialog --program DIALOG); do
eval $STATEMENTS
done
IFS=$I
if [ "$EXIT" = "OK" ]; then
echo "You entered: $ENTRY."
else
echo "You pressed the Cancel button."
fi
In the example script we use the for built-in to go through the
list gtkdialog produced. Changing the field separator (IFS) is
a little bit disturbing but necessary since this is the only way to
protect the space characters in user input.
In larger software projects it may be a good idea to break the code to
separate files. Since gtkdialog can read the description
program from file it is easy to write self executable programs with
it. This is how the next example constructed.
#! /usr/local/bin/gtkdialog -f
<vbox>
<checkbox>
<label>This is a checkbox</label>
<variable>CHECK1</variable>
</checkbox>
<checkbox>
<label>Another one</label>
<variable>CHECK2</variable>
</checkbox>
<button>
<label>OK</label>
</button>
</vbox>
When used in this fashion the state of the widgets can get from the standard output of the script as usually.
Next: Widgets, Previous: Introduction, Up: Top [Contents]