“KDE Dialogs” ile Kabuk Programlama Mucizesi -1 için tıklayınız…
Dosyaların Görüntülenmesi
Kabuk programlama da ortak bir gereksinim de dosyaları listeleme ve görüntüleme kabiliyetidir. Kdialog bunu –textbox diyaloğu ile destekler. –textbox diyaloğunun zorunlu tek bir parametresi vardır. Bu da görüntülenecek dosyanın ismidir. Ayrıca iki adette tercihe bağlı parametresi vardır. Bunlar –textbox diyaloğunun boyutlarının kaç pixel olacağını ayarlamamıza olanak sağlar. Örneğin;
Örnek 21: –textbox diyalog kutusu
Öncelikle bir metin belgesi içerisine birşeyler yazın… Ben “pardus” isimli bir belge oluşturdum.
$ kdialog --textbox pardus
Figür 16 –textbox Diyalog Kutusu
Örnek 22: boyutları ile –textbox diyaloğu
$ kdialog --textbox pardus 400 400
Figure 17 Boyutları ile –textbox Diyaloğu
Menü ve Seçim Diyalogları
Bu bölüm basit menüleri kapsamaktadır. Kontrol listeleri, radyo butonlar ve çoklu kutular (checklists, radio buttons, combo-boxes). Bu menüler bir seçenek yelpazesi sunar. Her seçenek iki argüman gerektirir. İlki seçilmesi düşünülen bilginin anahtarı, ikincisi etiketi. Şöyle ki;
Örnek 23 –menu diyalog kutusu
$ kdialog --menu "Select a language:" a "American English" b French c "Oz' English" d "Türkçe"
Figür 18 –menu Diyalog Kutusu
Eğer Figür 18 de görüldüğü gibi “Türkçe” yi seçerseniz. Kdialog “Türkçe” için belirtilen değeri çıktı olarak gönderecektir. Yani “d” yi. Küçük harf veya harf kullanmak zorunda değilsiniz. Büyük harf veya sayılar da kullanabilirsiniz. Hatta değişken niteliği taşıyan sözcükler de kullanabilirsiniz.
Eğer örneğimiz de “Tamam” butonuna tıklarsak dönen değer “0” “İptal” butonunu seçersek dönen değer “1” olacaktır.
Kontrol listesi (checklist) diyaloğu da menü seçeneği ile benzerdir. Bu seçeneğin farkı ise kullanıcı birden fazla seçim yapabilir. –checklist diyaloğu üç argümana gereksinim duyar. İlki gönderilecek değer /değişken, ikincisi etiket ve sonuncusu ise varsayılan seçim. Şöyle ki;
Örnek 24 –checklist diyalog kutusu
$ kdialog --checklist "Select a language:" 1 "American English" off 2 "French" off 3 "English" off 4 "Türkçe" on
Figür 19 –checklist Diyalog Kutusu
Sonuç olarak kullanıcı bu diyalog ile birden fazla seçim yapabilecektir. Eğer bu durumda birden fazla seçim yapılırsa, gönderilen çıktı tek satır üzerinde bitişik değerlerle olacaktır. Bu seçili değerleri ayırmamız için –separate-output parametresini kullanmamız gerekecektir. Şöyleki ;
Örnek 25: –checklist diyalog kutusu
İlk durum için ;
$ kdialog --checklist "Select a language:" 1 "American English" off 2 "French" off 3 "English" off 4 "Türkçe" on
Çıktı;
"1" "2" "3" "4"
2. durum için;
$ kdialog --separate-output --checklist "Select a language:" 1 "American English" off 2 "French" off 3 "English" off 4 "Türkçe" on
Çıktı;
1 2 3 4
Menu diyaloğunda da olduğu gibi. Eğer örneğimiz de “Tamam” butonuna tıklarsak dönen değer “0” “İptal” butonunu seçersek dönen değer “1” olacaktır.
–radiolist diyaloğu kontrol listesi diyaloğu ile çok benzerdir. Fakat bu diyalogda kullanıcı yalnızca bir seçenek seçebilir. Şöyle ki;
Örnek 26: –radiolist diyalog kutusu
$ kdialog --radiolist "Select a language:" 1 "American English" off 2 "French" off 3 "English" off 4 "Türkçe" on
Figür 20. –radiolist Diyalog Kutusu
Not: Eğer birden fazla seçeneği seçili tutmak istediğiniz zaman, sadece son seçenekte seçili olan değer seçili gelecektir. Eğer hiçbir seçeneği seçili ayarlamadığınız taktirde kullanıcı “Tamam” a tıklarsa ilk değer varsayılan olarak seçilmiş olacaktır. Lütfen bu tür durumlara dikkat ediniz ve bu şekilde kullanmaktan kaçınınız.
Combo-box diğer menü diyaloglardan biraz farklıdır. Bu seçeneği kullanabilmek için seçimin yerini tutan değişken veya değerler kullanmayız, sadece metini yazmamız yeterlidir. Şöyle ki;
Örnek 27: –combobox diyalog kutusu
$ kdialog --combobox "Neli pasta seversiniz?" "Vanilyalı" "Kremalı" "Çikolatalı" "Çilekli" "Sade" "Pasta Sevmem" "Diğer"
Figür 21 –combobox Diyalog Kutusu
Dosya Seçim Diyalogları
Bu bölüm kdialog ile “dosya seçmek”, “açmak” ve “kaydetmek” konularını kapsamaktadır. KDE dialogs bize ileri filtreleme teknikleri ile dosya yollarına ve URL’ lere erişim konusunda büyük kolaylıklar sağlayacaktır.
Dosya seçim diyaloğu ile dosya açmak –-getopenfilename veya –getopenurl komutları ile yapılmaktadır. Bu iki komut da aynı amaç için kullanılır. Sadece çıktının formatı değişir. Her iki komutta burada örneklendirilecektir. Dosya taramak için özel bir klasör seçebilirsiniz. Ve bir filtreleme kullanabilirsiniz. Burada bulunulan klasörde ,filtreleme kullanmadan basit bir örnek verecek olursak;
Örnek 28: –getopenfilename diyalog kutusu
kdialog --getopenfilename ./
Figür 22 –getopenfilename Diyaloğu
Önceki örneklerde olduğu gibi. Eğer örneğimiz de “Tamam” butonuna tıklarsak dönen değer “0” “İptal” butonunu seçersek dönen değer “1” olacaktır.
Bahsettiğimiz üzere, –getopenfilename ve –getopenurl komutları arasındaki çıktı formatları şu şekilde farklılık gösterir.
Örnek 29: –getopenfilename diyalog kutusu
$ kdialog --getopenfilename ./
Çıktı;
/home/professor/Belgeler/aegron.jpg
Komut ;
$ kdialog --getopenurl ./
Çıktı;
file:///home/professor/Belgeler/aegron.jpg
Basit görünümden sonra filtre seçeneklerine bakalım. Bunlardan en iyi bileni MIME tipi filtrelemedir. Şöyle ki;
Örnek 30: MIME filtresi ile –getopenfilename diyalog kutusu
$ kdialog --getopenfilename ~/Masaüstü/ "image/png text/html text/plain"
Figür 23 MIME filtresi ile –getopenfilename Diyalog Kutusu
Eğer MIME ile istediğiniz tür mümkün olmaz ise. Filtrelemeyi wildcards ile yaparak, yeni etiket ekleyebilirsiniz. Şöyle ki;
Örnek 31: wildcard filtresi ile –getopenfilename diyalog kutusu
kdialog --getopenfilename ~/Masaüstü/ "*.cpp *.cc *.c |C ve C++ Kaynak Dosyaları"
Figür 24 wildcard filtresi ile –getopenfilename Diyalog Kutusu
–getsavefilename ve –getsaveurl komutları dosya açım komutları ile benzerdir. Şöyle ki;
Örnek 34. –getsavefilename diyalog kutusu
$ kdialog --getsavefilename .
Figür 25 –getsavefilename Diyalog Kutusu
Kullanıcı kaydedilecek dosyanın türünü MIME ve wildcards filtreleme seçeneklerinde olduğu gibi belirleyebilir. Şöyle ki;
Örnek 33: filtre ile –getsavefilename diyalog kutusu
$ kdialog --getsavefilename :label1 "*.cpp *.cc *.c |C ve C++ Kaynak Dosyaları"
Figür 26 Filtre ile –getsavefilename Diyalog Kutusu
Bazen dosya ismini özelleştirmek istemeyiz fakat, özel bir klasöre ihtiyaç duyarız. Bunun için —getexistingdirectory komutu bizim için kullanışlı olabilir. Şöyle ki;
Örnek 34 –getexistingdirectory diyalog kutusu
$ kdialog --getexistingdirectory .
Figür 26. –getexistingdirectory diyalog kutusu
Not: –getexistingdirectory filtreleme seçeneği sunmaz .
İlerleme(Progress) Diyaloğu
İlerleme çubuğu diyaloğu bir işlem uzun süre alacağı zaman kullanışlı bir GUI bileşenidir. Ve bu sayede, kullanıcıya ne olup bittiği hakkında bilgi sunmamıza da olanak sağlar. Böylece kullanıcıyı da makinanın donup kalmış olma ihtimalini düşündürmek zorunda bırakmayız. Eğer yapılan işlem hakkında yazacak bir şey bulamıyorsanız şunu yazmanızı öneririz. “Bu işlem uzun sürebilir…”. Eğer böyle bir durumla karşılaşırsanız, ilerleme çubuğu sizin için biçilmiş kaftandır diyebiliriz…
–progressbar komutunun basit bir kullanım şekli aşağıda ki gibidir.
Örnek 35: –progressbar diyalog kutusu
Terminalde ;
$ nano ilerleme_cubugu.sh
komutunu veriniz ve karşınıza gelen editörde aşağıdaki satırları yapıştırınız.
#!/bin/bash dcopRef=`kdialog --progressbar "Kuruluyor..." 4` dcop $dcopRef setProgress 1 dcop $dcopRef setLabel "Düşünmek gerçekten zor..." sleep 2 dcop $dcopRef setProgress 2 sleep 2 dcop $dcopRef setLabel "Biraz daha düşünelim" dcop $dcopRef setProgress 3 sleep 2 dcop $dcopRef setProgress 4 sleep 2 dcop $dcopRef close
Sonra ;
$ chmod +x ilerleme_cubugu.sh $ ./ilerleme_cubugu.sh
komutunu veriniz. Çalışması gerekiyor ama ben de çalışmadı. Pardus 2009.1 de ilerleme çubuğu geldi fakat ilerlemedi:) “dcop: command not found” hatası aldım. Dcop komutu bulunamadı. Bunu araştıracağım. Geçelim…(YK)
Örnek 36: İptal ile –progressbar diyalog kutusu
Örnek 36 D-Bus kullanılarak ;
Terminalde;
$ nano ilerleme_cubugu_dbus.sh
Karşınıza gelen nano editöre aşağıdaki satırları yapıştırınız.
#!/bin/bash dbusRef=`kdialog --progressbar "Dilediğiniz zaman İptal butonuna tıklayınız" 10` qdbus $dbusRef showCancelButton true until test "true" = `qdbus $dbusRef wasCancelled`; do sleep 1 inc=$((`qdbus $dbusRef Get "" "value"` + 1)) qdbus $dbusRef Set "" "value" $inc; done qdbus $dbusRef close
$ chmod +x ilerleme_cubugu_dbus.sh $ ./ilerleme_cubugu_dbus.sh
Figür 27 İptal ile –progressbar Diyalog Kutusu
Burada görüldüğü gibi sadece dbus’lı ilerleme çubuğu çalıştı. Benim tercihim de muhtemelen İptal seçeneği olduğu için bu olacak. Aşağıdaki betikte de “dcop” komutu olduğu için Pardus 2009.1 de çalışmayacaktır. Bu yüzden “Örnek 36 D-Bus kullanılarak” betiğini tercih ediniz.(YK)
Örnek 36 eski DCOP kullanarak;
#!/bin/bash dcopRef=`kdialog --progressbar "Press Cancel at Any time" 10` dcop $dcopRef showCancelButton true until test "true" = `dcop $dcopRef wasCancelled`; do sleep 1 inc=$((`dcop $dcopRef progress` + 1)) dcop $dcopRef setProgress $inc; done dcop $dcopRef close
Bu doküman ile artık KDE ortamında kabuk programlama daha zevkli hale gelecektir. Daha fazlası için aşağıda ki komutu veriniz.
$ kdialog --help Kullanım: kdialog [Qt-seçenekleri] [KDE-seçenekleri] [seçenekler] [arg] KDialog, kabuk betikleri kullanarak güzel görünümlü pencereler oluşturmanızı sağlar. Genel seçenekler: --help Seçeneklerle ilgili yardım göster --help-qt Qt ile ilgili seçenekleri göster --help-kde KDE ile ilgili seçenekleri göster --help-all Tüm seçenekleri göster --author Yazar bilgisini göster -v, --version Sürüm bilgisini göster --license Lisans bilgisini göster -- Seçeneklerin sonu Seçenekler: --yesno <text> Evet/hayır düğmeleri içeren soru penceresi --yesnocancel <text> Evet/hayır/iptal düğmeleri içeren soru penceresi --warningyesno <text> Evet/hayır düğmeleri içeren uyarı penceresi --warningcontinuecancel <text> Devam/iptal düğmelerini içeren uyarı penceresi --warningyesnocancel <text> Evet/hayır/iptal düğmelerini içeren uyarı penceresi --sorry <text> 'Üzgünüm' mesaj kutusu --error <text> 'Hata' mesaj kutusu --msgbox <text> Mesaj Kutusu penceresi --inputbox <text> <init> Girdi Kutusu penceresi --password <text> Parola penceresi --textbox <file> [width] [height] Metin Kutusu penceresi --textinputbox <text> <init> [width] [height] Metin Girdi Kutusu penceresi --combobox <text> item [item] [item] ... Açılır Kutu penceresi --menu <text> [tag item] [tag item] ... Menü penceresi --checklist <text> [tag item status] ... Onay Listesi penceresi --radiolist <text> [tag item status] ... Radyo Listesi penceresi --passivepopup <text> <timeout> Pasif Açılabilir Pencere --getopenfilename [startDir] [filter] Mevcut bir dosyayı açmak için dosya penceresi --getsavefilename [startDir] [filter] Bir dosyayı kaydetmek için kaydet penceresi --getexistingdirectory [startDir] Mevcut bir dizini seçmek için dosya penceresi --getopenurl [startDir] [filter] Mevcut bir URL açmak için dosya penceresi --getsaveurl [startDir] [filter] Bir URL kaydetmek için dosya penceresi --geticon [group] [context] Simge seçme penceresi --progressbar <text> [totalsteps] İlerleme çubuğu penceresi, iletişim için bir D-Bus referansı döndürür --getcolor Renk seçmek için renk penceresi --title <text> Pencere başlığı --default <text> Çoklu kutucuk, menü ve renk için öntanımlı girdi --multiple Birden fazla dosya için --getopenurl ve --getopenfilename seçeneklerine izin verir --separate-output Liste ögelerini ayrı satırlarda döndür (işaretleme listesi seçeneği ve --multiple ile dosya açmak için) --print-winid Her pencerenin pencere numarasını çıkartır --dontagain <file:entry> "bir daha gösterme/sorma" durumunu kaydetmek için yapılandırma dosyası ve seçenek adı --slider <text> [minvalue] [maxvalue] [step] Ayırıcı kutu penceresi, seçilen değeri döndürür --calendar <text> Takvim kutu penceresi, seçilen günü döndürür --attach <winid> Pencereyi, pencere numarası belirtilen X uygulaması için geçici yapar Argümanlar: arg Argümanlar
Görüldüğü gibi artık önümüzde hiçbir engel kalmadı. Bu çalışma umarım gelecekte bu alanda çalışma yapacak herkese fayda sağlar. Kdialogs ile hepinize iyi çalışmalar diliyorum.
Çeviren ve Derleyen: Yücel KILIÇ
Telif Hakkı ve Lisans
Bu dökümanın telif hakkı Brad Hards’a aittir. 2003, 2004.
Bu doküman GNU Ücretsiz Dökümantasyon Sürüm 1.1 Lisansı ile lisanlanmıştır.
KAYNAK
http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs
kdialog –getopenfilename ./
/home/professor/Belgeler/aegron.jpg
kdialog –getopenurl ./
file:///home/professor/Belgeler/aegron.jpg