Xdialog - zestaw skryptów powłoki


Pakiet Xdialog (lub Cdialog) jest zestawem skryptów powłoki służących do tworzenia graficznych interfejsów do programów działających w trybie tekstowym. W wersji podstawowej dystrybucji (na trzech płytach) jest on zamieszczony, lecz nie jest instalowany domyślnie. Dla osób, które chcą się zapoznać z możliwościami programu zamieściłem dokumentację programu w formie archiwum do ściagnięcia i rozpakowania w swoim w katalogu domowym. Przykłady zamieszczone poniżej są wzięte z katalogu sample tej dokumentacji. Sam program Xdialog można pobrać stąd. Poniżej opiszę możliwości wybranych skryptów programu. W systemie można skorzystać z polecenia man Xdialog lub Xdialog w celu uzyskania składni opisów poszczególnych poleceń. O możliwościach praktycznych zastosowań decyduje potrzeba i wyobraźnia użytkownika.

buildlist - pozwala wybrać pliki (opcje) spośród wielu dostępnych.


calendar - pozwala wybrać datę.


checklist - pozwala wybrać wiele opcji (katalogów lub plików) do dalszej obróbki.


dselect oraz fselect - pozwala na wybór plików spośród drzewa katalogów.

  
gauge - pokazuje pasek postępu procesu.


infobox - pokazuje okienko z informacją przez określony czas.


inputbox - pozwala wprowadzać polecenia z klawiatury.


menubox - pozwala wybrać tylko jedną opcję (np. uruchomienia systemu).


msgbox - wyświetla okienko z informacją tak długo, aż nie naciśniemy klawisza OK.


radiolist - pozwala wybrać tylko jedną opcję z wielu podanych (przeciwieństwo checklist).


timebox - pozwala ustawić parametry zegara.


yesno - pozwala dokonać wyboru (np. czy zakończyć pracę programu).





Jako przykład użycia programu posłuży nam skrypt Xsplitgui napisany w celu dzielenia plików na mniejsze i przenoszeniu ich na dyskietkach. Analizując kod skryptu widzimy w jaki sposób można stosować polecenia programu Xdialog w celu stworzenia nakładki graficznej na polecenie systemowe split służące do dzielenia i scalania plików. W poniższym skrypcie zaznaczyłem (za pomocą wytłuszczenia i podkreślenia) zastosowane skrypty.

A tak wygląda efekt działania skryptu:









Opis programu Xsplitgui znajduje się w dziale programy mojego serwisu. Treść skryptu wraz z komentarzami jest zamieszczona poniżej.
#!/bin/sh

# przejście do katalogu pracy i wyczyszczenie go z danych po poprzedniej sesji
domowy="`pwd`"
cd=$domowy
if [ -e $domowy/Odzyskany ]; then
:
else
mkdir $domowy/Odzyskany
fi
rm -f $domowy/Odzyskany/*
rm -f $domowy/xa*
umount /mnt/floppy
# ustawienie zmiennych
a=0
b=0
f=0
g=0
h=0
n=1
while [ "$a" = "0" ]; do
# menu wyboru trybu pracy (skrypt menubox)
Xdialog --left --title "Xsplitgui" \
--help " Program pozwala przenosić duże pliki na dyskietkach, w automatycznie ustalanych
porcjach o wielkości zależnej od systemu plików na nośniku po sformatowaniu.
Maksymalna wielkość przenoszonego pliku jest ograniczona do około 30 MB.
Program jest na licencji GNU." \
--menu "Wybierz tryb pracy" 0 0 0 \
"1" "Kopiowanie pliku na dyskietki" \
"2" "Odtwarzanie z dyskietek pliku" \
"3" "Exit" 2> $domowy/.tryb_pracy
b=`cat $domowy/.tryb_pracy`
if [ "$b" = "" ]; then
exit
else
# wybór pliku do podzielenia na części
if [ "$b" = "1" ]; then
# skrypt fselect
c=`Xdialog --stdout --title "Wybierz plik do zapisu" --fselect /home 0 0`
if [ "$c" = "" ]; then
exit
else
# podział w/w pliku na porcje w zależności od systemu plików na dyskietce po formatowaniu
mount /mnt/floppy || exit
h=`df /mnt/floppy | grep "/dev*" | cut -c47-50`
let h=h-10
split -b"$h"k $c
e=`ls -l ./xa* | wc -l`
umount /mnt/floppy
# zapis na dyskietki
if [ "$e" = "0" ]; then
exit
else
for d in xa*
do
# skrypt msgbox
Xdialog --msgbox "Włóż dyskietkę - $n /$e
o nazwie - $d" 0 0
mount /mnt/floppy
cp $d /mnt/floppy
umount /mnt/floppy
let n=n+1
done
fi
fi
fi
# odtwarzanie pliku z dyskietek i wyświetlanie informacji o oryginale
if [ "$b" = "2" ]; then
# skrypt msgbox.
Xdialog --msgbox "Włóż dyskietkę" 0 0
while [ "$f" = "0" ]; do
umount /mnt/floppy
mount /mnt/floppy
cp /mnt/floppy/xa* $domowy/Odzyskany
# skrypt yesno
Xdialog --yesno "Włóż dyskietkę" 0 0
if [ "$?" = "1" ]; then
cat $domowy/Odzyskany/xa* > $domowy/Odzyskany/plik
g=`file -b $domowy/Odzyskany/plik`
file -b $domowy/Odzyskany/plik > $domowy/Odzyskany/dane_oryginalne_o_pliku
# skrypt msgbox
Xdialog --title "Oryginalne dane o odzyskanym pliku" \
--msgbox "$g" 0 0
umount /mnt/floppy
cd $domowy
exit
fi
done
fi
# pozycja "Exit" z menu trybu wyboru pracy
if [ "$b" = "3" ]; then
exit
fi
fi
done


Dodatkowo można zanalizować dwa skrypty zamieszczone w dziale programy, a będące nakładkami na program mkslinux. Obudowywanie grafiką poleceń powłoki jest ciekawym zajęciem. Istnieje też konsolowa wersja programu o nazwie Dialog, lecz mnie nie interesuje ona osobiście gdyż preferuję tryb graficzny, a nie tekstowy. Jeżeli kogoś interesuje tryb tekstowy to polecam Dialog. Jest on w każdej standardowej dystrybucji.

do góry