Gtkdialog - Erstellt grafesch (GTK+) Interfaces an Dialogboxen mat Shell Scripten a Linux


Gtkdialog (oder gtkdialog) ass en Open Source nëtzlech Utility fir GTK+ Interfaces an Dialogboxen mat der Hëllef vu Linux Shell Scripten ze kreéieren an ze bauen an d'GTK Bibliothéik ze benotzen, souwéi eng xml-ähnlech Syntax ze benotzen, déi mécht einfach Interfaces mat gtkdialog ze kreéieren. Et ass vill ähnlech wéi dat bekanntst Tool mam Numm Zenity, awer et kënnt mat e puer nëtzlech personaliséierbar Features, déi et Iech erlaben vill Widgets wéi vbox, hbox, Knäppchen, Frame, Text, Menü a vill méi ze kreéieren.

Lies Och: Erstellt GTK+ Grafik Dialogboxen mat Zenity

Installatioun vu Gtkdialog op Linux

Dir kënnt gtkdialog-0.8.3 eroflueden (wat déi lescht Versioun ass) oder Dir kënnt och wget Kommando benotzen, déi erofgeluede Datei auspacken an dës folgend Kommandoen ausféieren fir aus der Quell ze kompiléieren.

$ 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

Loosst eis elo ufänken e puer Këschten ze kreéieren, erstellt en neit \myprogram Skript an Ärem Dossier doheem.

$ cd
$ touch myprogram

Elo öffnen d'myprogram Datei mat engem Texteditor deen Dir wëllt, a füügt de folgende Code derbäi.

#!/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 
------------

Späichert d'Datei, a setzt d'Ausféierungserlaabnes a lafen se wéi gewisen.

$ chmod 755 myprogram
$ ./myprogram

Dëst ass wéi Ären éischte Programm erstallt an ausgefouert gëtt mat gtkdialog.

Elo wäerte mir de Code kuerz erklären.

  1. #!/bin/bash: Déi éischt Zeil vun all Shell-Skript, gëtt benotzt fir de Bash-Shell-Wee ze spezifizéieren.
  2. GTKDIALOG = gtkdialog: Hei hu mir eng Variabel definéiert fir se spéider ze benotzen wann Dir de Shell-Skript mat gtkdialog ausféiert, dës Linn muss an all Skripte sinn, déi Dir mat gtkdialog erstellt.
  3. MAIN_DIALOG= exportéieren: Eng aner Variabel déi mir definéiert hunn, déi all Syntax fir eis Interface enthält, Dir kënnt MAIN_DIALOG duerch all Numm ersetzen, deen Dir wëllt, awer Dir musst se och an de leschte 4 Zeilen vun der Schrëft.
  4. Fënstertitel: Ech mengen net datt dee Code muss erklärt ginn, mir hunn en Titel erstallt, eng Standard-Ikon fir d'Fënster, mir wielen ob et ëmzeännerebar war oder net, a mir hunn definéiert d'Breet an d'Héicht déi mir wëllen, natierlech sinn all déi Optiounen sekundär, Dir kënnt just den Tag benotzen wann Dir wëllt.
  5. : Mir benotzen den vbox-Tag fir eng vertikal Këscht ze kreéieren, et ass wichteg e vbox-Tag ze kreéieren fir aner Tags wéi hbox a button, etc.
  6. : Hei hu mir eng horizontal Këscht mam Tag erstallt, \space-fill an \space-expand sinn Optiounen fir d'hbox duerch d'Fënster auszebauen.
  7. : Dëst ass den Default-Text fir de Knäppchen, mir hunn de Label-Tag mat zougemaach, natierlech ass et ganz wichteg all d'Tags déi mir benotzen, zou ze maachen.< /li>
  8. : Dat wat geschitt wann de Knäppchen geklickt gëtt, Dir kënnt e Shell Kommando ausféieren wann Dir wëllt oder all aner Datei ausféieren wann Dir wëllt, et gi vill aner Aktiounen a Signaler och , vergiesst net ze zoumaachen mat .
  9. : Fir de Button Tag zouzemaachen.
  10. : Fir den hbox Tag zouzemaachen.
  11. : Fir de Fënstertag zouzemaachen.

Déi lescht 4 Zeilen mussen och an all Shell-Skripte sinn, déi Dir mat gtkdialog erstellt, si féieren d'MAIN_DIALOG Variabel aus mam gtkdialog Kommando mat der -center Optioun fir d'Fënster ze zentréieren, tatsächlech ganz nëtzlech.

Ähnlech erstellt eng aner Datei a nennt se als 'zweetprogramm'a füügt de folgende ganzen Inhalt derbäi.

#!/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

Späichert d'Datei, setzt d'Ausféierungserlaabnes drop a lafen se wéi gewisen.

$ chmod 755 secondprogram
$ ./secondprogram

Elo wäerte mir de Code kuerz erklären.

  1. Mir kreéieren e Combobox Widget mat , den Tag ass de Standardnumm vun der Variabel an där de gewielten Element gespäichert gëtt, mir hunn dës Variabel benotzt fir de gewielten Element spéider mam Echo ze drécken.
  2. ass en horizontalen Separator, Dir kënnt d'Standardbreet dofir setzen mat der Breet-Ufrooptioun.
  3. ass en OK Knäppchen deen d'Fënster zoumaacht just wann Dir se klickt, et ass ganz nëtzlech, also brauche mir net e personaliséierte Knäppchen ze erstellen fir ze maachen dat.

Erstellt eng aner Datei mam Numm Drëtt Programm a füügt de ganze Koup Code derbäi.

#!/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

Späichert d'Datei, gitt d'Ausféierungserlaabnes a brennt se wéi gewisen.

$ chmod 755 thirdprogram
$ ./thirdprogram

Hei ass d'Erklärung vum Code méi detailléiert.

  1. Mir hunn zwee Notizbuch Tabs erstallt mat , d'Tab-Label Optioun ass wou Dir Tabs erstellen kënnt, gtkdialog erstellt Tabs ofhängeg vun den Etiketten déi Dir agitt, all ass als Tab definéiert, also déi éischt Tab. fänkt mat der éischter un, déi zweet Tab fänkt mat der zweeter un.
  2. ass en Textwidget, mir hunn den
  3. Tag erstellt en neie Spin Button, Range-Min Optioun ass de Minimum Wäert, a Range-max ass de maximale Wäert fir de Spin Button, Range-Wäert ass de Standardwäert fir de spin Knäppchen.
  4. Mir hunn den eng Variabel myscale ginn.
  5. Mir hunn de gewielte Wäert mat Echo an $myscale Variabel gedréckt, d'Standardsignal fir d'Aktioun hei ass Wäertgeännert wat eis gehollef huet dat ze maachen.

Dëst war just eng Beispillfenster, Dir kënnt méi komplizéiert Interfaces mat gtkdialog erstellen wann Dir wëllt, Dir kënnt déi offiziell Dokumentatioun op gtkdialog Websäit duerchsichen fir all gtkdialog Tags vum Link hei ënnen ze gesinn.

Gtkdialog Dokumentatioun

Hutt Dir gtkdialog benotzt fir GUIs fir Är Shell Scripten ze kreéieren virdrun? Oder hutt Dir e sou Utility benotzt fir Interfaces ze kreéieren? Wat mengs du doriwwer?