Ruby ve GTK Kullanarak Arayuz Tasarlamak

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • guest8b3eda guest8b3eda 2 years ago
    ok g羹zel haz覺rlam覺s覺n覺z teekk羹r ederim. 襤nallah devam覺 olur ...
Post a comment
Embed Video
Edit your comment Cancel

Favorites, Groups & Events

Ruby ve GTK Kullanarak Arayuz Tasarlamak - Presentation Transcript

  1. P覺nar Yanarda [email_address] INETD Seminerleri@IBM Linux 16.12.2006 Ruby & GTK ile Aray羹z Tasarlamak
  2. 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.
  3. 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,
  4. 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.
  5. 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?
  6. 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.
  7. 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.
  8. Baka bir uygulama... require 'gtk2' def merhaba( bir_pencere ) puts "Merhaba dunya!" end def delete_event( bir_pencere, bir_olay ) puts "delete olayi olustu!" return true end Gtk.init pencere = Gtk::Window.new( Gtk::Window::TOPLEVEL ) pencere.set_title( "Ikinci Ornegimiz" ) pencere.set_border_width( 10 ) pencere.signal_connect( "delete_event" ) { delete_event( nil, nil ) } pencere.signal_connect( "destroy" ) { destroy( nil ) } dugme = Gtk::Button.new( "Merhaba Dunya!" ) dugme.signal_connect( "clicked" ) { merhaba( nil ) } pencere.add( dugme ) dugme.show pencere.show Gtk.main
  9. Ad覺m ad覺m neler yapt覺覺m覺za bakal覺m: Olaylar def delete_event( bir_pencere, bir_olay ) puts "delete olayi olustu!" return true end Eer delete_event sinyal yakalay覺c覺s覺na false deeri d繹nd羹r羹rsek GTK destroy sinyalini 癟al覺t覺racakt覺r. true deerini d繹nd羹rerek, pencereyi yoketmek istemediimizi belirttik. Bu y繹ntem 覺kmak istediinizden emin misiniz? kutucuklar覺' nda s覺k癟a kullan覺l覺r. #癟覺kmak i癟in Gtk.main_quit kullanabiliriz.
  10. Pencereler pencere = Gtk::Window.new( Gtk::Window::TOPLEVEL ) pencere.set_title( "Ikinci Ornegimiz" ) pencere.set_border_width( 10 ) Window.new ile yeni bir pencere yaratt覺k. set_title metodu ile pencerenin ad覺n覺 verdik. border_width metodu ile kenar kal覺nl覺覺n覺 ayarlad覺k.
  11. Sinyaller pencere.signal_connect( "delete_event" ) { delete_event( nil, nil ) } Pencere delete_event sinyaline verildii zaman, delete_event metodunun 癟al覺t覺r覺lmas覺n覺 s繹yl羹yoruz. pencere.signal_connect( "destroy" ) { destroy( nil ) } destroy olay覺n覺 bir sinyal yakalay覺c覺yla balant覺l覺yoruz. Bu olay, pencereden Gtk::Widget#destroy ya da delete_event 'dan false deeri d繹nd羹rd羹羹m羹zde yakalanacak.
  12. D羹meler dugme = Gtk::Button.new( "Merhaba Dunya!" ) Merhaba Dunya! etiketli yeni bir d羹me oluturuyoruz. dugme.signal_connect( "clicked" ) { merhaba( nil ) } D羹memiz clicked sinyalini ald覺覺nda merhaba metodunu 癟a覺rmas覺n覺 s繹yl羹yoruz.
  13. 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.
  14. 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.
  15. 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 ) }
  16. 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 # ...
  17. 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.
  18. 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.
  19. 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
  20. 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
  21. 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!
  22. Ruby-Glade ? ruby-glade-create-template Ruby/Libglade2 taraf覺ndan salanan bir programd覺r. Bir .glade uzant覺l覺 dosyadan .rb uzant覺l覺 iskelet dosya yarat覺r. $ ruby-glade-create-template glade_dosyasi.glade > uygulama.rb
  23. 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..
  24. kodlar: seminer.pinguar.org/ruby_ibm_2006
  25. Kaynaklar http://www.gtk.org/ http://ruby-gnome2.sourceforge.jp http://ruby-gnome2.sourceforge.jp/hiki.cgi?tutorials http://ruby-gnome2.sourceforge.jp/hiki.cgi?RubyZilla http://en.wikipedia.org/wiki/Gecko_(layout_engine ) seminer notlar覺: seminer.pinguar.org
  26. Teekk羹rler...

pinguarpinguar, 3 years ago

custom

3252 views, 0 favs, 0 embeds more stats

IBM Linux'ta Ruby kullanarak GTK ile arayz olu&#35 more

More Info

CC Attribution License

Go to text version
  • Total Views 3252
    • 3252 on SlideShare
    • 0 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 0
Most viewed embeds

more

All embeds

less

Flagged as inappropriate Flag as inappropriate
Flag as innappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel

Categories