28 Aralık 2009 Pazartesi

Diyalogların Kullanımı

  WxRuby'de uygulamamızı standart görüntülerle süsleyecek birçok öntanımlı diyalog kutusu bulunur. Bu yazıda kullanıcımızdan girdi alabileceğimiz üç diyalog kutusu göreceğiz.

  1. Mesaj diyaloğu
  2. Text girişi
  3. Listeden seçim
Bundan başka daha birçok standart diyalog bulunur. Örneğin , dosya seçici , renk seçici , progress diyalog , font seçici gibi.

Mesaj Bildirileri

Kullanıcıyla yapabileceğimiz en basit iletişim Wx::MessageDialog adındaki basit alarm kutusunu kullanmaktır. MessageDialog kullanarak üzerinde sadece bir mesaj ve OK butonu olan bir kutu veya Yes/No butonları ile cevap alabileceğimiz bir kutu yapabiliriz.

1     dlg = MessageDialog.new nil, "böyle iletişim kurması kolay mı ?", "MessageDialog", YES_NO | ICON_QUESTION 
2     result = dlg.show_modal
3     p result
4     dlg.destroy

bu kodun karşılığında  şöyle bir diyaloğumuz olur :



 MessageDialog nesnesinin tanıtım parametreleri şunlardır :

MessageDialog.new(Window parent,  String message, 
                  String caption = "Message box", 
                  Integer style = OK CANCEL, 
                  Point pos = DEFAULT_POSITION)

Burda parent dialogun çağrıldığı penceredir veya bir pencereye bağlı olmasını istemezsek nil değer gireriz. Arkasından mesajımızı string olarak gireriz. "caption" isimli string diyaloğumuzun titlebar'ında görünecek yazıdır, default değeri "Message box". "style" parametresi diyaloğumuzda bulunacak butonları ve ikonları tarif eden bir bitmask'dır. "pos" parametresi de diyaloğumuzun ekranda gösterileceği pozisyonu belirtir bir Wx::Point nesnesidir. "show_modal" ile diyaloğumuz modal olarak açılır yani bu diyalog açıldığında uygulamamızda olan pencerelerde işlem yapmamız diyaloğumuz kapatılana kadar engellenir. Tüm diyaloglarda bu metod ortakdır. "show_modal" metodunun geri dönen değeri diyaloğumuzun sonucunu ifade eden bir integer sayıdır. Bu diyaloğumuzda tıklanan butonun kodu geri döner. Bu "MessageDialog" nesnesi için şu sabitlerden biridir : Wx::ID_YES , Wx::ID_NO , Wx::ID_CANCEL , Wx::ID_OK.
Style bitleri ile diyaloğumuzda bulunacak butonlara karar veririz. Wx::OK , Wx::CANCEL , Wx::YES_NO . Ayrıca bu style bitleri ile diyaloğumuzda hangi ikonun görüneceğini seçeriz. Wx::ICON_ERROR , Wx:ICON_EXCLAMATION , Wx::ICON_INFORMATION , Wx::ICON_QUESTION .


Bir Satırlık Yazı Girdisi

Eğer kullanıcıdan bir tek satır bilgi almak istiyorsak , "TextEntryDialog" kullanırız. Bu nesne bir diyalog penceresi açar ve eğer kullanıcı OK butonunu tıklarsa girilen yazıyı geri döner.

17     dlgq = TextEntryDialog.new nil, "Sevdiğiniz Programlama Dili Nedir ?", "Bir Soru", "Ruby"
18     if dlgq.show_modal == ID_OK
19       response = dlgq.get_value
20       p response + " güzel bir seçim"
21     end
22     dlgq.destroy

 

Bu kodun karşılığı diyaloğumuz şuna benzer :



TextEntryDialog nesnesi üretirken girdiğimiz parametreler sırasıyla şunlar : her zaman olduğu gibi parent en başta. Arkasından diyaloğumuzun içinde yer alacak soru cümlemiz string olarak. Bundan sonra diyaloğumuzun etiketinde yer alacak string gelir. En son text girişinde yer alacak default yazı geliyor. Ayrıca default değeri Wx::OK | Wx::CANCEL olan bir style bilgisi vardır. İstersek sadece OK butonu bırakabiliriz. Aynı MessageDialog nesnesi gibi show_modal metodu da tıklanan düğmenin kodunu geri döner. "get_value" metodu textbox'ta yazılmış olan değeri geri döner. Burda sadece deneme için girilen değeri terminale geri yazıyoruz.



Aşağıdaki Listeden Seçiniz

Eğer kullanıcının her aklına geleni yazmasını değilde bizim istediğimiz yanıtlardan birini seçmesini istiyorsak , Wx::SingleChoiceDialog nesnesi kullanırız. Bu nesnenin basit kullanımı şöyledir :

24     dlgc = SingleChoiceDialog.new nil, "Kaç Yaşında Evlenmek Daha İyi ?", "Birini Seçin", ["15", "20", "25", "36", "44"]
25     if dlgc.show_modal == ID_OK
26       response = dlgc.get_string_selection
27       p response + " yaş çok erken olur !"
28     end
29     dlgc.destroy


Bu kodun sonucu şu şekil bir diyaloğumuz olur :



Bir öncekinden farklı olarak burda default text değeri yerine bir matris içinde seçenekleri gireriz. Bu diyalogdan dönen değeri iki değişik şekilde alabiliriz : "get_selection" metodu seçilen stringin indexini geri döner , "get_string_selection" ile seçilen stringin kendisini alırız.  
Tüm bu kodların hepsini ana penceresi olmayan bir uygulamaya dizdim :


1 #!/usr/bin/env ruby
 2 # dialoglar.rb kullaıcı ile diyalog pencereleri yardımıyla iletişim
 3 
 4 require 'rubygems'
 5 require 'wx'
 6 include Wx
 7 
 8 $KCODE = "utf8"               #Türkçe karakterler terminalde çıksın
 9 
10 class MyApp < App
11   def on_init
12 
13     dlg = MessageDialog.new nil, "böyle iletişim kurması kolay mı ?", "MessageDialog", YES_NO | ICON_QUESTION
14     result = dlg.show_modal
15     p result
16     dlg.destroy
17 
18     dlgq = TextEntryDialog.new nil, "Sevdiğiniz Programlama Dili Nedir ?", "Bir Soru", "Ruby"
19     if dlgq.show_modal == ID_OK
20       response = dlgq.get_value
21       p response + " güzel bir seçim"
22     end
23     dlgq.destroy
24 
25     dlgc = SingleChoiceDialog.new nil, "Kaç Yaşında Evlenmek Daha İyi ?", "Birini Seçin", ["15", "20", "25", "36", "44"]
26     if dlgc.show_modal == ID_OK
27       response = dlgc.get_string_selection
28       p response + " yaş çok erken olur !"
29     end
30     dlgc.destroy
31 
32   end
33 end
34 
35 if __FILE__ == $0
36   my_app = MyApp.new
37   my_app.main_loop
38 end
39 

Bu günlük bu kadar.

Hiç yorum yok:

Yorum Gönder