Gtkdialog — tworzenie graficznych interfejsów i okien dialogowych (GTK+) przy użyciu skryptów powłoki w systemie Linux
Gtkdialog (lub gtkdialog) to fajne narzędzie typu open source do tworzenia i budowania interfejsów i okien dialogowych GTK+ za pomocą skryptów powłoki systemu Linux i korzystania z biblioteki GTK, a także przy użyciu składni podobnej do XML, która ułatwia tworzenie interfejsów za pomocą gtkdialog. Jest bardzo podobny do najsłynniejszego narzędzia o nazwie Zenity, ale zawiera kilka przydatnych, konfigurowalnych funkcji, które umożliwiają łatwe tworzenie wielu widżetów, takich jak vbox, hbox, przycisk, ramka, tekst, menu i wiele innych.
Przeczytaj także: Twórz graficzne okna dialogowe GTK+ za pomocą Zenity
Instalacja Gtkdialog w systemie Linux
Możesz pobrać gtkdialog-0.8.3 (która jest najnowszą wersją) lub możesz także użyć polecenia wget, rozpakować pobrany plik i uruchomić następujące polecenia, aby skompilować ze źródła.
sudo apt-get install build-essential [on Debian based systems]
yum install gcc make gcc-c++ [on RedHat based systems]
wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install
Teraz zacznijmy tworzyć kilka pudełek, utwórz nowy skrypt „myprogram” w twoim folderze domowym.
Mój pierwszy program
cd
touch myprogram
Teraz otwórz plik „mójprogram” za pomocą dowolnego edytora tekstu i dodaj do niego następujący kod.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310">
<vbox>
<hbox space-fill="true" space-expand="true">
<button>
<label>Welcome to TecMint.com Home!</label>
<action>echo "Welcome to TecMint.com Home!"</action>
</button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
------------
Zapisz plik, ustaw uprawnienia do wykonywania i uruchom go, jak pokazano.
chmod 755 myprogram
./myprogram
W ten sposób utworzyłeś i uruchomiłeś swój pierwszy program przy użyciu gtkdialog.
Teraz pokrótce wyjaśnimy kod.
- #!/bin/bash: Pierwsza linia dowolnego skryptu powłoki, używana do określenia ścieżki powłoki bash.
- GTKDIALOG=gtkdialog: Tutaj zdefiniowaliśmy zmienną, która będzie używana później podczas wykonywania skryptu powłoki za pomocą gtkdialog. Ta linia musi znajdować się we wszystkich skryptach tworzonych za pomocą gtkdialog.
- export MAIN_DIALOG=: Kolejna zdefiniowana przez nas zmienna, która będzie zawierać całą składnię naszego interfejsu. Możesz zastąpić MAIN_DIALOG dowolną nazwą, ale musisz ją zastąpić także w ostatnich 4 liniach skryptu.
- Tytuł okna: myślę, że nie trzeba wyjaśniać tego kodu, stworzyliśmy tytuł, domyślną ikonę okna, wybieramy, czy można zmieniać jego rozmiar, czy nie, i zdefiniowaliśmy szerokość i wysokość, którą chcemy, oczywiście wszystkie te opcje są drugorzędne, możesz po prostu użyć tagu
, jeśli chcesz. : Używamy tagu vbox do tworzenia pionowego pudełka, ważne jest, aby utworzyć tag vbox, aby zawierał inne tagi, takie jak hbox i przycisk itp. : Tutaj utworzyliśmy poziomą ramkę za pomocą tagu , „space-fill” i „space-expand” to opcje umożliwiające rozwinięcie hbox przez okno. - <button>: Utwórz nowy przycisk.
- : To jest domyślny tekst przycisku, tag label zamknęliśmy za pomocą , oczywiście bardzo ważne jest zamknięcie wszystkich tagów, których używamy.
: To się dzieje po kliknięciu przycisku. Możesz uruchomić polecenie powłoki, jeśli chcesz, lub wykonać dowolny inny plik, jeśli chcesz, jest też wiele innych akcji i sygnałów, nie nie zapomnij zamknąć go za pomocą . - : Aby zamknąć znacznik przycisku.
- : Aby zamknąć tag hbox.
- : Aby zamknąć znacznik okna.
Ostatnie 4 linie muszą także znajdować się we wszystkich skryptach powłoki tworzonych za pomocą gtkdialog. Wykonują one zmienną MAIN_DIALOG za pomocą polecenia gtkdialog z opcją –center do wyśrodkowania okna, co jest w rzeczywistości bardzo przydatne.
Mój drugi program
Podobnie utwórz kolejny plik i nadaj mu nazwę „drugi program” i dodaj do niego całą następującą zawartość.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
Zapisz plik, ustaw dla niego uprawnienia do wykonywania i uruchom go, jak pokazano.
chmod 755 secondprogram
./secondprogram
Teraz pokrótce wyjaśnimy kod.
- Widget combobox tworzymy za pomocą
, znacznik to domyślna nazwa zmiennej, w której będzie przechowywany wybrany element, użyliśmy tej zmiennej do późniejszego wydrukowania wybranego elementu za pomocą echo. to separator poziomy, możesz ustawić dla niego domyślną szerokość za pomocą opcji żądania szerokości. - to przycisk OK, który zamyka okno zaraz po kliknięciu. Jest bardzo przydatny, więc nie musimy w tym celu tworzyć niestandardowego przycisku.
Mój trzeci Prgoram
Utwórz kolejny plik o nazwie „trzeci program” i dodaj do niego całą masę kodu.
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<notebook tab-label="First | Second|">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
<vbox>
<hbox space-fill="true">
<text>
<label>Spinbutton </label>
</text>
</hbox>
<hbox space-fill="true" space-expand="true">
<spinbutton range-min="0" range-max="100" range-value="4">
<variable>myscale</variable>
<action>echo $myscale</action>
</spinbutton>
</hbox>
<hbox>
<button ok></button>
</hbox>
</vbox>
</notebook>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
Zapisz plik, przyznaj uprawnienia do wykonywania i uruchom go, jak pokazano.
chmod 755 thirdprogram
./thirdprogram
Tutaj wyjaśnienie kodu w bardziej szczegółowy sposób.
- Stworzyliśmy dwie zakładki notesu za pomocą
, opcja tab-label umożliwia tworzenie zakładek, gtkdialog utworzy zakładki w zależności od wprowadzonych etykiet, każde jest zdefiniowane jako zakładka, więc pierwsza zakładka zaczyna się od pierwszy , druga zakładka zaczyna się od drugiego . to widget tekstowy, użyliśmy tagu - Znacznik
utworzy nowy przycisk obrotu, opcja zakres-min to wartość minimalna, a zakres-max to maksymalna wartość przycisku obrotu, wartość zakresu to domyślna wartość obrotu przycisk. - Do przycisku
nadaliśmy zmienną „myscale”. - Wydrukowaliśmy wybraną wartość za pomocą zmiennej echo i $myscale, domyślnym sygnałem dla akcji jest tutaj „zmiana wartości”, co nam w tym pomogło.
To było tylko przykładowe okno, możesz tworzyć bardziej skomplikowane interfejsy używając gtkdialog, jeśli chcesz, możesz przeglądać oficjalną dokumentację na stronie gtkdialog, aby wyświetlić wszystkie znaczniki gtkdialog z linku poniżej.
Dokumentacja Gtkdialogu
Czy używałeś już gtkdialog do tworzenia GUI dla skryptów powłoki? A może korzystałeś z takiego narzędzia do tworzenia interfejsów? Co o tym sądzisz?