Ruby ve GTK Kullanarak Arayuz Tasarlamak - Presentation Transcript
P覺nar Yanarda
[email_address]
INETD Seminerleri@IBM Linux
16.12.2006
Ruby & GTK ile
Aray羹z Tasarlamak
GTK Nedir?
GTK (GIMP ToolKit),
Gimp program覺n覺n yaz覺lmas覺 amac覺yla gelitirilmeye balanm覺t覺r.
Ancak u an bir 癟ok yaz覺l覺m覺n gelitirilmesinde GTK kullan覺l覺yor.
GNOME projesi (GNU Network Object Model Environment ) da bunlardan biri...
LGPL Lisansl覺d覺r,
Hi癟bir 羹cret 繹demezs覺k覺n dilediiniz gibi 繹zg羹r yaz覺l覺mlar gelitirebilirsiniz.
GTK Nedir? #2
GTK, nesneye y繹nelik bir API (application programmers interface)'dir.
Tamamen C dilinde yaz覺lm覺 olmas覺na ramen, s覺n覺flar ve callback fonksiyonlar (fonksiyonlara iaret eden pointer'lar) sayesinde bir 癟ok dile ger癟eklenebilir.
C++, Perl, Python, Java, and C#....
癟羹nc羹 parti bileenler...
GTK ayn覺 zamanda Glib ad覺nda baz覺 standart 癟ar覺lar i癟in baz覺 deitirmeler i癟eren bileene sahiptir,
Bu deitirme GTK'n覺n ta覺nabililirliini artt覺rmak i癟in haz覺rlanm覺 fonksiyonlar覺 i癟erir,
Ruby-Gnome2 Nedir?
Ruby-GNOME2 GTK k羹t羹phanesini Ruby dili ile kullanmak i癟in yarat覺lan bir balay覺c覺 (binding)'dir.
Ruby-GNOME2 Ruby'de yazd覺覺n覺z kodlar i癟in bir aray羹z oluturman覺z覺 salar.
Ruby-GNOME'un GTK+2.0 ve 羹st羹 ile 癟al覺an yeni jenerasyonudur.
Bir pencere yaratal覺m...
require 'gtk2'
Gtk.init
window = Gtk::Window.new()
window.show
Gtk.main
Yukar覺daki komutla basit bir pencere yaratt覺k. Peki asl覺nda bu yazd覺覺m覺z kodlar ne anlama geliyor?
Bir pencere yaratal覺m...
require 'gtk2'
Gtk.init
window = Gtk::Window.new()
window.show
Gtk.main
require 'gtk2'
Ruby-GNOME2 k羹t羹phanelerini y羹kler.
Gtk.init
Bu sat覺r t羹m Ruby-GNOME2 uygulamalar覺nda olmak zorundad覺r.
Gtk'daki init metodunu 癟a覺r覺r.
Bu metot oluturaca覺m覺z g繹rsellerin API katman覺ndad覺r ve renk haritas覺, g繹rseller gibi varsay覺lan deerleri y羹kler.
Bu metot kullan覺lacak k羹t羹phaneleri ilklendirir ve varsay覺lan sinyal yakalay覺c覺lar覺n覺 y羹kler.
Bir pencere yaratal覺m...
require 'gtk2'
Gtk.init
window = Gtk::Window.new()
window.show
Gtk.main
Pencere yaratmak i癟in kulland覺覺m覺z iki sat覺r var:
window = Gtk::Window.new()
Basit癟e varsay覺lan deerlerde bir pencere yarataca覺m覺z覺 belirtir.
window.show
Bu sat覺r, GTK'ya bahsettiimiz pencerenin ayarlar覺n覺 yapt覺覺m覺z覺 ve art覺k pencereyi ekrana basmas覺 gerektiini s繹yler.
Gtk.main
Bu sat覺r her GTK uygulamas覺nda olmak zorundad覺r. Kontrol bu sat覺ra ulat覺覺nda GTK X olaylar覺, zaman a覺mlar覺 vb. i癟in beklemeye balar.
Bileen ekleme
pencere.add( dugme )
Oluturduumuz d羹meyi pencereye ekliyoruz.
dugme.show
pencere.show
Art覺k yeni yaratt覺覺m覺z d羹memizin ve penceremizin g繹r羹nmesini s繹yleyebiliriz.
Gtk.main
Kontrol burada biter ve tu ya da fare t覺klamas覺 gibi olaylar覺 bekler.
Sinyaller..., Callback?
GTK 2.0 ile beraber sinyal sistemi GTK'dan Glib'e ta覺nm覺t覺r.
GTK olay tabanl覺 bir ara癟 kitidir,
Gtk.main herhangi bir olay olana kadar beklemede kal覺r. Olay olduunda kontrol ilgili metoda ge癟er.
K ontrol ge癟ii sinyaller dediimiz kavramlar ile ger癟ekleir.
Butona t覺klama gibi bir olay olutuu zaman sinyal ilgili pencere taraf覺ndan yay覺l覺r.
destroy, show, hide gibi sinyaller her bileen (widget) i癟in miras olarak al覺nm覺t覺r.
Sinyal yakalama
Bir sinyal yakalayal覺m:
GLib::Instantiatable#signal_connect( "yakalanacak_sinyal" ) { |pencere| cagirilacak_metot }
signal_connect metodu arg羹man olarak yakalayaca覺m覺z sinyali al覺r.
Takip eden blok ise sinyali yayan pencereyi yakalay覺p cagirilacak_metot ile belirtilen metodu 癟a覺rmam覺z覺 salar.
dugme.signal_connect( "clicked" ) {
merhaba( nil )
}
Sinyal yakalama #2
X sisteminin olay mekanizmas覺n覺 tetikleyebilecek olay seti mevcuttur:
# event
# button_press_event
# button_release_event
# scroll_event
# motion_notify_event
# delete_event
# destroy_event
# expose_event
# key_press_event
# key_release_event
# enter_notify_event
# leave_notify_event
# configure_event
# ...
Bileenler (Widgets)
GTK'da bileen yaratmak i癟in basit birka癟 kural覺 bilmemiz gerekiyor,
Gtk:: Widget.new yeni bir bileen yaratmak i癟in kullan覺l覺r.
Widget bileenin tipini belirtir (Image, Label vb...)
Kullanmak istediimiz sinyalleri ve olaylar覺 uygun yakalay覺c覺lara balar覺z,
Bileenin 繹zelliklerini ayarlar覺z (width, vb...)
Ve son olarak Gtk::Widget#show ile bileenimizi g繹steririz.
Yayg覺n Kullan覺lan Bileenler : D羹meler
D羹meler s覺k kullan覺lan bileenlerden biridir.
Bir d羹me yaratmak i癟in birden 癟ok y繹ntem kullanabilirsiniz,
Gtk::Button.new("Label"),
Gtk::Button#label=("Label")
Gtk::Button#set_label("Label")
Ya da Gtk::Button.new ile bo bir d羹me oluturabilirsiniz.
Gtk::Button.new( Gtk::Stock::item ) ile d羹meye bir stoktan resim ya da yaz覺 ekleyebilirsiniz.
D羹me bileeninin s覺k kullan覺lan sinyalleri
pressed d羹me bileenine bas覺ld覺覺 zaman oluan sinyaldir
released -- d羹me bileenin b覺rak覺ld覺覺 zaman oluan sinyaldir
clicked -- d羹me bileenine bas覺ld覺ktan sonra b覺rak覺ld覺覺 zaman oluan sinyaldir
enter -- pointer d羹me bileenine girdii zaman oluan sinyaldir
leave -- pointer d羹me bileeninden 癟覺karken oluan sinyaldir
Label
ounlukla d羹melerle beraber kullan覺lan bir bileendir,
label= Gtk::Label.new(Ruby)
label.set_text(RoR, true)
Gtk::JUSTIFY_LEFT
Gtk::JUSTIFY_RIGHT
Gtk::JUSTIFY_CENTER
Gtk::JUSTIFY_FILL
Glade nedir?
Glade, GTK+ ve Gnome uygulamalar覺 yazmak i癟in kullan覺lan bir RAD (rapid application development) arac覺d覺r.
Programc覺y覺 gereksiz kod ayr覺nt覺lar覺 ile urat覺rmadan grafiksel aray羹z tasarlamaya yarar.
Ancak Glade ile aray羹z tasarlamadan 繹nce mutlaka Gtk ile basit kodlar yaz覺lmas覺 繹nerilir!
UYGULAMA
5 dakikada bir web taray覺c覺s覺 yaratabilir miyiz?
Rubyzilla, Gecko kullanarak haz覺rlanacak bir minik web taray覺c覺s覺 uygulamas覺d覺r.
Gecko, Mozilla tabanl覺 yaz覺l覺mlarda bulunan ve sayfalar覺n ekranda g繹sterilmesinden sorumlu olan ana bileendir.
HTML, XML, Javascript ... pek 癟ok kural覺 ve uygulamay覺 destekler..
1 comments
Comments 1 - 1 of 1 previous next Post a comment