Ruby ile GUI Toolkits (wxRuby)

Merhabalar,

Bu yazımızda Ruby ile GUI Toolkits baÅŸlattığımız yazı dizisine devam ediyoruz. Bugün WxRuby kütüphanesini inceleyeceÄŸiz. WxRuby kütüphanesi oldukça geliÅŸmiÅŸ olan wxWidgets kütüphanesi üzerine kurulu bir yapıdır. WxRuby Microsoft Windows, Mac OS X, Linux ve BSD üzerinde sorunsuzca çalışır. Kendisinin herhangi bir görüntü teması yoktur. Hangi iÅŸletim sistemine yüklenirse, o iÅŸletim sisteminin görüntü temasını kullanır. Hemen hemen tüm Ruby uygulamalarında olduÄŸu gibi gem ile kurulumu oldukça basit ve kolaydır. Aynı zamanda Python baÄŸlayıcısı da (wxPython) bulunan bu yapı, C++‘da yazılmış olan wxWidgets kütüphanesinden güçünü alır.
Windows, Linux ve Mac OS X için kurulumu; gem install wxruby2-preview ile gerçekleÅŸir… Linux ve Mac OS X’de ‘Super User(sudo)‘ ile bu iÅŸlem yapılmalıdır.

Öncelikle wxWidgets kütüphanesinin gerçekten çok güçlü olduÄŸu tekrar vurgulamakta fayda var. Bu bilgi ışığında WxRuby’nin önceki sürümlerinin çok kötü olduÄŸunu duymuÅŸ olabilirsiniz.. duymadıysanız ÅŸimdi duydunuz, gerçekten çok kötü idi. Bunun farkına varan sevgili yazılımcı kardeÅŸlerimiz, wxRuby2’yi ortaya çıkardılar ve geliÅŸtirmelerini bu yapı üzerinde yapmaya baÅŸladılar. WxRuby2, ÅŸu anda oldukça iyi durumda, yazılım geliÅŸtirme, biraz sonra örnekte de göreceÄŸiniz gibi, VRuby’den zor :) fakat FxRuby’den kolay. WxRuby‘nin genel aÄŸ adresinden daha fazla bilgiye ulaÅŸabilirsiniz.

Herzaman olduğu gibi, hemen örneğimize geçelim;
[ruby]
require ‘wx’
include Wx

class MyForm < Frame def initialize(title, position, size, style = DEFAULT_FRAME_STYLE) @title = title super(nil, -1, title, position, size, style) # 'Exit' isimli button oluşturulur.. close = Button.new(self, 10, "Exit", Point.new(230, 125), Size.new(70, 40)) evt_button(10) { on_close() } # 'Hello !' isimli button oluşturulur.. sayHello = Button.new(self, 20, "Hello !", Point.new(100, 125), Size.new(70, 40)) evt_button(20) { on_sayHello() } # 'Username' isimli text alan oluşturulur.. userNamelbl = StaticText.new(self, -1, "Username :", Point.new(100, 75)) @userName = TextCtrl.new(self, -1, "", Point.new(160, 75), Wx::Size.new(150,-1)) end def on_close() dlg = MessageDialog.new(self, "Are you sure ?", @title, OK | CANCEL | ICON_INFORMATION) result = dlg.show_modal() dlg.destroy() # her durumda kapatılması gerektiği için, Close()'un önünde yapılmalıdır. close() if result == Wx::ID_OK end def on_sayHello() dlg = MessageDialog.new(self, "Hello, #{@userName.get_title}!", @title, OK | ICON_INFORMATION) dlg.show_modal() dlg.destroy() end end # Sadece on_init (başlangıç) ve on_exit (bitiş) bölümleri ezilir. class MyApplication < App def on_init() # Uygulama oluşturulurken puts "Application starting.." # Kendi yazdığımız form çağrılır. myForm = MyForm.new('Uordek WxRuby Test Form', Point.new(100, 100), Size.new(400, 250)) set_app_name('wxRubyByUordek') myForm.show() # Ekranda gösterilir. end def on_exit() # Uygulama kapatılırken. puts "Application closing.." end end begin # Uygulama 'new' ile yaratılır. app = MyApplication.new app.main_loop() # İşletim sistemi ile mesaj alış verişine başlar. ensure GC.start # Ruby'nin Garbace Collector'ü çağrılır. end [/ruby] Örnekte görüleceği gibi, Point ve Size nesneleri ile başlangıç koordinatları ile genişlik ve yükseklik bilgilerini belirledik. Bu işlemi bu şekilde yapabileceğimiz gibi, Tk+ veya Fox'da olduğu gibi Html'e benzer biçimde de yapabiliriz. Aslına bakarsanız tercih edilen yöntem bu fakat ben işin kolayına kaçtım diyebiliriz :). Kolay gelsin...

Ruby ile GUI Toolkits (wxRuby)” üzerine 3 yorum

  1. bende “@userName.get_title” çalışmıyor. “@userName.get_value” çalışıyor.

  2. Verdiğin bilgi için teşekkür ederim. Düzelteceğim.

    Ben bu yazıyı yazdığım zamanlarda wxruby bayağı düşük bir sürümde idi, şimdi versiyonu 1.9.2 arada bu şekilde küçük farkların olması normal.

  3. wxRuby nedense wxPython’a gore daha kotu geliyordu bana cunku cidden cok kotu bir soz dizimine sahipti. bana ruby’i sevdiren sey rails oldugu icin o guzelim soz diziminin bu hale gelmis olmasi beni baska bir dille masaustu programlama yapmaya itti. ancak artik wxSugar var, tek kelimeyle mukemmel. :)

    bu arada sans eseri denk geldim sitenize. ruby hakkinda gordugum en guzel iki turkce siteden birisi. tebrik ediyorum.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir