Okna dialogowe w BASH-u

Stronę tą wyświetlono już: 269 razy

Instalacja pakietu dialog

Domyślnie na Linux-ie nie jest wymagany do obsługi tworzenia konsolowych okien dialogowych pakiet dialog, należy więc go doinstalować poleceniem:

apt-get install dialog

Okno dialogowe wyboru yes/no

Wywołanie okna dialogowego wyboru wygląda następujaco:

Listing 1
  1. dialog --clear --title "Okno dialogowe yes/no" --backtitle "BASH" --yesno "Twój wybór:" 10 40
  2. YOUR_CHOOSE=$?;
  3. if [ "$YOUR_CHOOSE" == 0 ];
  4. then
  5. echo "Wybrałeś Yes";
  6. elif [ "$YOUR_CHOOSE" == 1 ];
  7. then
  8. echo "Wybrałeś No";
  9. else
  10. echo "Niczego nie wybrałeś";
  11. fi

Uruchomienie powyższego skryptu spowoduje wyświetlenie okienka z poniższej ilustracji.

Okno dialogowe w BASH-u utworzone za pomocą polecenia dialog
Rys. 1
Okno dialogowe utworzone w BASH-u za pomocą polecenia dialog

Możliwe jest zaznaczenie przycisku Yes lub No za pomocą strzałek. Enter zatwierdza wybór, Esc wychodzi z programu bez wybrania żadnej opcji. Po wciśnięciu przycisku Yes do zmiennej $? zwrócone zostanie 0, dla przycisku No zwrócona wartość to 1, natomiast dla zamknięcia okna bez wybrania przycisku -1.

Okno dialogowe menu

Okno dialogowe umożliwia wybranie jednej z dostępnych pozycji, oto przykład skryptu wykorzystującego okno dialogowe menu:

Listing 2
  1. OUTPUT="temp.txt"
  2. >$OUTPUT;
  3. dialog --clear --title "Okno dialogowe Menu" --backtitle "BASH" --menu "Twój wybór:" 10 40 3 1 "Pozycja 1" 2 "Pozycja 2" 3 "Pozycja 3" 2> $OUTPUT
  4. BUTTON=$?;
  5. if [ "$BUTTON" == 0 ];
  6. then
  7. echo "Wybrałeś Ok";
  8. elif [ "BUTTON" == 1 ];
  9. then
  10. echo "Wybrałeś Anuluj";
  11. else
  12. echo "Niczego nie wybrałeś";
  13. fi
  14. echo $(<$OUTPUT)

W wyniku działania powyższego kodu oczom twym ukazać powinno się okienko z poniższego rysunku.

Widok okna dialogowego menu utworzonego w BASH-u za pomocą polecenia dialog
Rys. 2
Widok okna dialogowego menu utworzonego w BASH-u za pomocą polecenia dialog.

Warto nadmienić, że dane związane z wyborem pozycji w menu zostaną przekierowane do pliku, którego nazwa znajduje się w zmiennej OUTPUT. Po zamknięciu okna powinno pojawić się coś takiego:

Wybrałeś Ok
1

jeżeli tylko wciśnięto przycisk Ok z zaznaczoną opcją nr. 1.

Okno dialogowe checklist

Okno tego typu umożliwia wybranie kilku różnych opcji na raz, oto przykład kodu z jego użyciem:

Listing 3
  1. OUTPUT="temp.txt"
  2. >$OUTPUT;
  3. dialog --clear --title "Okno dialogowe Checklist" --backtitle "BASH" --checklist "Twój wybór:" 10 40 3 1 "Pozycja 1" "off" 2 "Pozycja 2" "off" 3 "Pozycja 3" "off" 2> $OUTPUT
  4. BUTTON=$?;
  5. if [ "$BUTTON" == 0 ];
  6. then
  7. echo "Wybrałeś Ok";
  8. elif [ "BUTTON" == 1 ];
  9. then
  10. echo "Wybrałeś Anuluj";
  11. else
  12. echo "Niczego nie wybrałeś";
  13. fi
  14. echo $(<$OUTPUT)

W wyniku działania powyższego skryptu oczom twym ukazać powinien się widok z poniższej ilustracji.

Okno dialogowe checklist utworzone w BASH-u za pomocą polecenia dialog
Rys. 3
Okno dialogowe checklist utworzone w BASH-u za pomocą polecenia dialog

Zwrócone wyniki mogą być następujące:

Wybrałeś Ok
1 2 3

gdy zaznaczone zostały wszystkie opcje.

Okno dialogowe radiolist

Okno tego typu różni się od menu tym, że przy opcji wyboru jest krzyżyk postawiony i można sobie domyślną wartość ustawić. Oto przykład:

Listing 4
  1. OUTPUT="temp.txt"
  2. >$OUTPUT;
  3. dialog --clear --title "Okno dialogowe Radiolist" --backtitle "BASH" --radiolist "Twój wybór:" 10 40 3 1 "Pozycja 1" "off" 2 "Pozycja 2" "off" 3 "Pozycja 3" "off" 2> $OUTPUT
  4. BUTTON=$?;
  5. if [ "$BUTTON" == 0 ];
  6. then
  7. echo "Wybrałeś Ok";
  8. elif [ "BUTTON" == 1 ];
  9. then
  10. echo "Wybrałeś Anuluj";
  11. else
  12. echo "Niczego nie wybrałeś";
  13. fi
  14. echo $(<$OUTPUT)

W wyniku wywołania powyższego kodu uzyskać powinno się okno dialogowe z poniższej ilustracji.

Okno dialogowe radiolist utworzone w BASH-u za pomocą polecenia dialog
Rys. 4
Okno dialogowe radiolist utworzone w BASH-u za pomocą polecenia dialog

Przykładowy wynik działania:

Wybrałeś Ok
3

gdy wciśnięty został przycisk Ok z zaznaczoną opcją 3.

Okno dialogowe inputbox

Tego typu okno pozwala użytkownikowi wpisać coś za pomocą klawiatury. Oto przykład:

Listing 5
  1. OUTPUT="temp.txt"
  2. >$OUTPUT;
  3. dialog --clear --title "Okno dialogowe Inputbox" --backtitle "BASH" --inputbox "Twoje dane:" 10 40 "Wpisz swoje dane" 2> $OUTPUT
  4. BUTTON=$?;
  5. if [ "$BUTTON" == 0 ];
  6. then
  7. echo "Wybrałeś Ok";
  8. elif [ "BUTTON" == 1 ];
  9. then
  10. echo "Wybrałeś Anuluj";
  11. else
  12. echo "Niczego nie wybrałeś";
  13. fi
  14. echo $(<$OUTPUT)

W wyniku działania powyższego kodu powinno pokazać się okienko z poniższej ilustracji.

Okno dialogowe inputbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 5
Okno dialogowe inputbox utworzone w BASH-u za pomocą polecenia dialog

Wciśnięcie przycisku Ok spowoduje wyświetlenie:

Wybrałeś Ok
Wpisz swoje dane

Okno dialogowe msgbox

Jedynym celem tego typu okienka jest wyświetlenie informacji wraz z przyciskiem Ok. Oto przykład:

Listing 6
  1. dialog --clear --title "Okno dialogowe Msgbox" --backtitle "BASH" --msgbox "Wiadomość" 10 40

Wynikiem działania powyższego kodu będzie widok okna z poniższej ilustracji.

Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 6
Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog

Okno dialogowe infobox

Jedynym celem tego typu okienka jest wyświetlenie informacji bez przycisku. Oto przykład:

Listing 7
  1. dialog --title "Okno dialogowe Infobox" --backtitle "BASH" --infobox "Wiadomość" 10 40

Wynikiem działania powyższego kodu będzie widok okna z poniższej ilustracji.

Okno dialogowe msgbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 7
Okno dialogowe infobox utworzone w BASH-u za pomocą polecenia dialog

Okno dialogowe textbox

Tego typu okno wyświetla dane zawarte w podanym pliku. Oto przykład:

Listing 8
  1. dialog --title "Okno dialogowe Textbox" --backtitle "BASH" --textbox "dmenu.sh" 10 40

Powyższe polecenie wyświetli zawartość pliku dmenu.sh tak jak pokazane to zostało na poniższym rysunku.

Okno dialogowe textbox utworzone w BASH-u za pomocą polecenia dialog
Rys. 8
Okno dialogowe textbox utworzone w BASH-u za pomocą polecenia dialog

Komentarze