1

2

Ne visos programos turi GUI, taipogi kartais ir bash scenarijuj prireikia GUI. „Nupiešti“ GUI galima su keliomis programomis „Zenity“, „Xdialog“, „Kdialog“ ir „gtkdialog“. Čia aprašysiu kas ir kaip su „gtkdialog“.

Šiai programai reikia parašyti konfigūraciją ir ji tada atvaizduoja tą konfigūraciją. Pvz.

export MAIN_DIALOG=’

<vbox><text>

<label>Hello world</label>

</text>

</vbox>

ir tada atvaizduojam:

gtkdialog –program=MAIN_DIALOG

 

Esmė:

<vbox> – vertikali dėžutė į kurią dedami elementai

<hbox> – horizontali dėžutė į kurią dedami elementai

<frame Pavadinimas> – rėmelis į kurį dedami elementai

hierarchija:

vbox turi būt aukščiau už hbox

<vbox><hbox>elementai</hbox></vbox>

Kadangi nesitaikau į kreivarankius, taikausi į tuos kurie žino kas yra dokumentacija ir kaip naudotis google tai perdaug nesiplėsiu.

Funkcijas kurios bus naudojamos dialoge reikia eksportuoti:

export -f funkcija

nes kitaip dialogas jos neras.

Mygtukas:

<button>

<label>Pavadinimas</label>

<action>rm $anksčiau_pasirinktas_failas</action>

</button>

pašalina failą kuris buvo pasirinktas anksčiau.

Ir išvis tokie dalykai proza neaprašomi, čia reikia skaityt kodą 🙂 Vienam lange atsivėrus dokumentaciją, o kitam mano pateiktą kodą manau viskas taps aišku.

Trumpai apie mano GUI, padariau programai „find“ paprastą GUI. Paspaudus ant „…“ pasirenkam aplanką kuriame ieškosime, žemiau esančiame langelyje įrašome paieškos žodį (jei reikia ir likusią find komandos dalį) ir spaudžiam „ieškoti“, žemiau esančiame sąraše atsiranda surastų failų sąrašas. Paspaudžiam ant kurio nors elemento ir paspaudžiam „trinti“, tas failas ištrinamas. Viskas paprasta:)

Kita kortelė. Paleidžiant programą įkelia failo „$HOME/logas.txt“ turiny, galima kažką įrašyti ir paspaudus „išsaugoti“ pakeitimai bus įrašyti į failą.

Iš esmės tas dialogas beprasmis ir nenaudingas, bet kaip straipsnio iliustracijai tai gerai 😀

 

#!/bin/bash
function surast {
find $1 -iname "$2"
}
export -f surast
export MAIN_DIALOG='
<window title="AKMC.lt">
<vbox>
<notebook labels="Paieška|Žurnalas">
<frame Paieška>
<vbox>
<hbox>
<text>
<label>Aplankas kuriame ieškoti:</label>
</text>
<entry accept="directory">
<label>Pasirinkite aplanką</label>
<variable>FILE_DIRECTORY</variable>
</entry>
<button>
<input file stock="gtk-open">'$PWD'</input>
<variable>FILE_BROWSE_DIRECTORY</variable>
<action type="fileselect">FILE_DIRECTORY</action>
<label>...</label>
</button>
</hbox>
<hbox>

<text>
<label>Paieškos žodis:</label>
</text>
<entry>
<default>paieškos žodis</default>
<variable>paieskos_zodis</variable>
</entry>
<button>
<input file>/media/media2/einstein.png</input>
<label>Ieškoti</label>
<action>refresh:FAILU_MEDIS</action>
<variable>test</variable>
</button>
</hbox>

<tree>
<label>Failas</label><input>surast "$FILE_DIRECTORY" "$paieskos_zodis"</input>
<height>100</height><width>400</width>
<variable>FAILU_MEDIS</variable>
</tree>
<hbox><button>
<label>Trint</label>
<action>rm $FAILU_MEDIS</action>
<action>refresh:FAILU_MEDIS</action>
</button>
<button>
<label>Atvert su gedit</label>
<action>gedit $FAILU_MEDIS</action>
<action>refresh:FAILU_MEDIS</action>
</button></hbox>
</vbox>
</frame>
<vbox>
<frame Žurnalas><edit>
<input file>'$HOME'/logas.txt</input>
<variable>zurnalo_content</variable>
</edit></frame>
<hbox><button>
<label>Išsaugoti</label>
<action>echo "$zurnalo_content">'$HOME'/logas.txt</action>
<action>refresh:zurnalo_content</action>
</button></hbox>
</vbox>
</notebook>
<hbox>
<button cancel></button>
<button ok></button>
</hbox>
</vbox>
</window>
'
gtkdialog --program=MAIN_DIALOG

Dokumentacija: http://code.google.com/p/gtkdialog/

Pavyzdžiai: http://xpt.sourceforge.net/techdocs/language/gtkdialog/gtkde02-GtkdialogExamples/