[LinuxFocus-icon]
Ev  |  Eri�imd�zeni  |  ��indekiler  |  Arama

Duyumlar | Belgelikler | Ba�lant�lar | LF Nedir
Bu makalenin farkl� dillerde bulundu�u adresler: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Authors]
taraf�ndan Katja and Guido Socher
<katja(at)linuxfocusorg, guido(at)linuxfocus.org>

About the authors:

Katja LinuxFocus'un Almanca k�sm�n�n edit�r�d�r. Tux'dan, film ve foto�raflardan ve denizden ho�lan�r. Katya'n�n ki�isel sayfas�na buradan ula�abilirsiniz.

Guido uzun zamand�r bir Linux hayran�d�r ��nk� d�r�st insanlar taraf�ndan tasarland� ve herkese a��k. Bu, a��k kaynak dememizin nedenlerinden birisidir. Guido'nun g�rsely�re sayfas�na linuxfocus.org/~guido.



T�rk�e'ye �eviri:
Erdal Mutlu <erdal(at)linuxfocus.org>

��erik:

 

(X)dialog: Konu�an kabuklar

[Illustration]

�zet:

Xdialog ve dialog, kabuk programlar�n�z� grafik aray�zler ile geli�tiren klasikle�mi� iki ara�t�r.
Yaz�y� anlayabilmek i�in biraz kabuk programlama bilgisine gereksiniminiz olacakt�r. Kabuk programlaman�n temmelleri hakk�nda biraz daha fazla ��renmek i�in Kabuk Programla yaz�s�n� okuyabilirsiniz.

_________________ _________________ _________________

 

Giri�

UNIX kabuk ortam� tek ba��na bile olduk�a �retken bir ortamd�r ve grafik aray�zler olmadan da �ok g�zel �al��maktad�r.
Ancak baz� durumlarda, kullan�c� ile ileti�imde bulunmak i�in grafik aray�zler �nem kazanmaktad�r. S�zgelimi, bir program� y�klemek i�in kullan�c�n�n, y�klenecek dizin, �e�itli se�eneklerden se�im yapmas� gibi baz� se�imler yapmas� gerekebilir ve bunlar i�in bir y�kleme aray�z� kullan�labilir.  

(X)dialog...

Xdialog ve dialog kullanarak, grafik aray�zlerinizi k�sa kabuk programlar yazarak tasarlayabilirsiniz. Dialog, terminal (metin ortam�), Xdialog ise, X11 pencere sistemi tabanl� programd�r.
��te bir �rnek:
A�a��daki sat�rlar� kobuk penceresi ortam�na (xterm, konsole ...) veya bir kabuk program� dosyas�na yazabilirsiniz:

bash
Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
case $? in
0)
echo "Result: Yes chosen.";;
1)
echo "Result: No chosen.";;
255)
echo "ESC pressed.";;
esac

Olu�an kutu, a�a��daki gibi g�z�kecektir:

[yes/no Xdialog]

Xdialog yerine dialog kullanmak isterseniz, ikinci sat�rdaki X karakterini kald�rman�z yeterlidir. Buna g�re xterm penceresinin i�inde, ba�ka bir pencere a�madan �al��an, curses tabanl� bir uygulama elde etmi� olursunuz. Baz� durumlarda kabuk programlar� i�in dialog kullanmak daha elveri�li olabilir, ��nk� kabuk programlar� terminal ortam�nda �al��maktad�r. �zellikle de, do�rudan IP y�nlendirilmesi (routing) olmayan ve birka� bilgisayar uzakta bulunan bir bilgisayarda program� �al��t�rmak daha uygun olmaktad�r. Bu durumda dialog ile yaz�lm�� program �al��acakt�r, ancak bir X11 uygulamas� olan Xdialog program�n� �al�l�mayacakt�r.

[yes/no dialog]

Yukar�daki dialog/Xdialog kullanan program olduk�a kullan��s�zd�r, ancak �ok basit bir grafik program�n nas�l kolay bir �ekilde yaz�labilece�ini g�stermesi a��s�ndan g�zel bir �rnektir. Takvim, men�, dosya y�neticisi, geli�im �ubu�u (progres bar), yaz� giri�i, mesaj, ge�i�s�zc��� vs. gibi �ok ilgin� dialog kutular vard�r.

dialog --help
veya
Xdialog --help

komutunu �al��t�rarak, varolan dialog kutular�n�n listesini elde edebilirsiniz. Xdialog'un dialog'a g�re biraz daha fazla se�ene�e sahiptir.  

Nas�l �al���yor?

Dialog kutular� komut sat�r�ndan yap�land�r�lmaktad�r.

dialog --yesno "text string" <height> <width>

Xdialog veya dialog yazd�ktan sonra, kullanmak istedi�iniz kutunun ad�n� ve ard�ndan ona uygun parametrelerini yazman�z gerekmektedir.

yesno kutusu 3 parametre almaktad�r. <height> ve <width> parametrelerine s�f�r verebilirsiniz. Bu durumda, kutunun geometrisi otomatik olarak, yaz�n�n b�y�kl���ne g�re ayarlanacakt�r. Se�imden elde edilen sonu� ��k�� de�eri olarak verilmektedir ve kabuk i�eri�inden "$?" de�i�keni arac�l��� ile elde edilebilir. Se�ilen isimler gibi birdan fazla geri g�nderilmesi gereken de�er varsa, gerid�n�� de�erleri standart hata ayg�na yaz�lmaktad�r. Standart hata ayg�t�na yaz�lanlar genellikle ekrana yaz�lmaktad�r. Ancak, "2>" y�nlendirilmesi kullan�labilir.

�ok basit ve bir o kadar da kullan��l� bir ��z�md�r.  

Ger�ek uygulamalar

�imdi, Xdialog/dialog'un normal kabuk programlar�na g�re nas�l �st�nl�k sa�lad���n� g�steren ger�ek bir uygulama yazal�m. Yazaca��m�z program, bir men�den �e�itli �sternet Servis Sa�lay�c�lar�n� se�en ve ba�lant� sa�layan bir program olacakt�r. Bu program Mart 2001'de yay�nlanan �nternet eri�iminiz i�in farkl� ISS'lerin kullan�m� yaz�s�ndaki ppp-on/ppp-off betiklerine gereksinim duymaktad�r. Kabuk program�n�n ad� pppdialout d�r ve ba�l� olup olmaman�za g�re farkl� men�ler g�r�nt�lemektedir.
#!/bin/sh
#
#DIALOG=Xdialog
DIALOG=dialog
#
# name of your default isp:
defaultisp=maxnet
#
error()
{
    echo "$1"
    exit 2
}
help()
{
  cat <<HELP
pppdialout -- select an ISP and dial out.
All available ISPs must have a config file in /etc/ppp/peers

pppdialout executes the ppp-on/ppp-off scripts as described
in http://linuxfocus.org/English/March2001/article192.shtml

pppdialout, copyright gpl, http://linuxfocus.org/English/November2002
HELP
  exit 0
}

# parse command line:
while [ -n "$1" ]; do
case $1 in
    -h) help;shift 1;; # function help is called
    --) shift;break;; # end of options
    -*) echo "error: no such option $1. -h for help";exit 1;;
    *)  break;;
esac
done

tempfile=/tmp/pppdialout.$$
trap "rm -f $tempfile" 1 2 5 15

# check if we have a ppp network interface
if /sbin/ifconfig | grep '^ppp' > /dev/null; then
    # we are already online
    $DIALOG --title "go offline" --yesno "Click YES to \
                     terminate the ppp connection" 0 0
    rval="$?"
    clear
    if [ "$rval" = "0" ]; then
        echo "running /etc/ppp/scripts/ppp-off ..."
        /etc/ppp/scripts/ppp-off
    fi
else
    # no ppp connection found, go online
    # get the names of all available ISP by listing /etc/ppp/peers
    for f in `ls /etc/ppp/peers`; do
        if [ -f "/etc/ppp/peers/$f" ]; then
            isplist="$isplist $f =="
        fi
    done
    [ -z "$isplist" ]&&error "No isp def found in /etc/ppp/peers"
    #
    $DIALOG --default-item "$defaultisp" --title "pppdialout"  \
         --menu "Please select one of\
    the following ISPs for dialout" 0 0 0 $isplist 2> $tempfile
    rval="$?" # return status, isp name will be in $tempfile
    clear
    if [ "$rval" = "0" ]; then
        isp=`cat $tempfile`
        echo "running /etc/ppp/scripts/ppp-on $isp..."
        /etc/ppp/scripts/ppp-on "$isp"
    else
        echo "Cancel..."
    fi
    rm -f $tempfile
fi
# end of pppdialout
Betik nas�l �al��maktad�r?
�lk olarak error ve help gibi baz� fonksiyonlar tan�ml�yoruz. Daha sonra komut sat�r�ndan verilen parametreler denetlenmekte ve ge�ici bir dosya (/tmp/pppdialout.$$) i�in isim tan�mlanmaktad�r. $$ �al��makta olan s�recin (program�n) s�re� numaras�d�r ve her bilgisayarda bu numara tekil olarak belirlenmektedir. Program anormal olarak kesildi�inde, s�zge�imi crtl-C tu�lar�na basarak, trap ile belirtilen k�s�m �al��t�r�lmaktad�r. Bizim �rne�imizde ge�ici dosya burada silinmektedir. Daha sonra ba�l� olup olmad���m�z� denetlemekteyiz (/sbin/ifconfig | grep '^ppp'). E�er, ba�l� isek, yukar�da da g�rd���n�z gibi bir yesno kutusu ekrana gelmektedir ve kullan�c�ya ba�lant�y� kesmek isteyip istemedi�i sorulmaktad�r. E�er, hen�z ba�l� de�ilsek, bir men� kutusu ekrana getirilmektedir. Varolan t�m �SS'c�lar�n�n isimlerini /etc/ppp/peers dosyas�na bakarak elde etmekteyiz. Men� kutusunun yaz�l�� bi�imi:

dialog --menu "text" <height> <width> <menu height> <tag1> <description> ...

d�r. <height>, <width> ve <menu height> de�erleri s�f�r olarak verilmistir (Yani boyutlar otomatik olarak ayarlanmaktad�r. Yukar�ya bak�n�z.). Daha sonra programa (<tag1> <description>) �iftlerini yazmak gereklidir. Bizim program i�in a��klamaya (description) gerek yoktur, o y�zden herhangibir �ey yazmak m�mk�nd�r (Biz == yazd�k.) isplist de�i�kenindeki veri a�a��daki gibi olacakt�r:

isp1 == isp2 == isp3 ==

Kullan�c�n�n se�imi (X)dialog taraf�ndan standart hata ayg�t�na yaz�lacakt�r. "2> $tmpfile" komutu, bunu tmpfile dosyam�za y�nlendirmi� olacakt�r. Men� kutusu ayr�ca cancel (iptal) tu�una basma olas�l��� sunmaktad�r. Dolay�s�yla, hangi tu�a bas�ld���n� ��renmek i�in $? (��k�� durum bilgisi) de�erine bakmam�z gerekmektedir.

Bu kadar teori yeter. ��te program�n g�r�n���

... Xdialog ile GTK GUI:

[pppdialout with xdialog]
[pppdialout with xdialog]

... terminalde curses tabanl� dialog ile:

[pppdialout with dialog]
[pppdialout with dialog]

 

Daha fazla uygulamalar

Size bir uygulamam�z daha var. Ad� mktgz dir ve Xdialog'un checklist (se�im listesi) kutusunu kullanmaktad�r. Terminalde �al��an dialog program�n�n checklist yoktur. Dolay�s�yla, program sadece Xdialog ile �al��maktad�r. mktgz program�n� tar.gz paketleri olu�trmak i�in kullanabilirisniz.

mktgz yourpackage .

Bu komut bulundu�unuz (".") dizindeki t�m dosylar� g�r�nt�lemektedir ve bunlar�n aras�ndan hangilerini yourpackage.tar.gz paketine almak istiyorsan�z, onlar� se�meniz m�mk�n. Program� buradan (mktgz.txt) elde etmeniz m�mk�nd�r. Program� sat�r sat�r anlatmayaca��z, ��nk� art�k onu anlayacak kadar ��renmi� olmal�s�n�z.

Xdialog ve dialog programlar� "samples" ad�nda �rnek programlar�n bulundu�u dizinle birlikte gelmektedir. Burada daha fazla �rnek bulabilirsiniz (RedHat 7.3'te bu dizin /usr/share/doc/Xdialog-2.0.5/samples d�r.). Ancak, bunlar� kullan�rken dikkatli olun, ��nk� bunlar�n baz�lar� ger�ekten bir�eyler yapmaktad�r ve s�rf g�steri� (demo) uygulamalar� de�ildir.  

Sonu�

Xdialog ve dialog bir�ok farkl� dialog kutular� sunmaktad�r. Hert�r kabuk beti�inde bunlar�n hepsi kullan�ma uygun de�ildir. Kabu�un kendisi zaten �ok "g��l�" bir ortamd�r. Yoltan�m�n� tab'lar ile tamamlamak, GUI (Grafik Uygulama Aray�z�) den se�mekten daha h�zl�d�r. �zellikle kabu�un boru (pipe) �zelli�ini kullanarak, bir komutun ��kt�s�n� ba�ka komutu girdisi olarak verebilme �zelli�i �ok g��l� bir ara�t�r. Yani ��yle bir�ey:
grep -i "somestring" file.txt | sort | uniq | wc -l
(UNIX kabuklar� ile tecr�besi olmayanlar i�in a��klama: Bu komutlar file.txt dosyas�ndaki "somestring" i i�eren t�m tekil sat�rlar� saymaktad�r.
Bu �ekilde borulama kullanabilmek, t�m komutlar�n komut st�r�ndan verilen parametreler ile denetlenmesinden dolay� m�mk�n olmakatd�r. Ba�ka bir deyi�le, bu komutlar durup, kullan�c�dan nas�l devam etmeleri gerekti�ine ili�kin sorular sormamaktad�r.
Ancak, grafik aray�zl� uygulamalar�n�n daha fazla kullan��l� oldu�u durumlar da vard�r. Xdialog ve dialog'un kullan�m� olduk�a basittir, ancak bunlar ger�ek grafik aray�zl� uygulamalar kadar g��l� de�ildir. Bunlar, sadece ASCII olan uygulamalar ile grafik aray�zl� uygulamalar aras�ndaki a���� kapatmaktad�r.
 

Xdialog ve dialog nereden elde edilebilir?

Xdialog ve dialog programlar�n� bulmak i�in ilk bakaca��n�z yer, kulland���n�z Linux da��t�m�n�n CD'leri olmal�d�r. Belkide sizteminizde y�kl� bile olabilirler (Bilgisayar�n�za sorun: rpm -qil Xdialog, dpkg -L Xdialog). Xdialog sanaldoku y�resi
http://www.chez.com/godefroy/
dir. dialog'un sanaldoku y�resi
http://hightek.org/dialog/
dir. Dolay�s�yla dialog/Xdialog programlar�n� buralardan da elde edebilirisiniz.  

Referanslar

 

Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz

Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.
 talkback page 

G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Katja and Guido Socher, FDL
LinuxFocus.org
�eviri bilgisi:
en --> -- : Katja and Guido Socher <katja(at)linuxfocusorg, guido(at)linuxfocus.org>
en --> tr: Erdal Mutlu <erdal(at)linuxfocus.org>

2003-03-05, generated by lfparser version 2.31