Ruby v Linuxu - GTK
I když je aplikace GTK všude přibližně stejná, alespoň malý článek si zaslouží. Budeme k tomu potřebovat balík "ruby-gtk2". Následně velice snadno použijeme:
#!/etc/alternatives/ruby
require 'gtk2'
class Deit < Gtk::Window
def initialize
super
set_title "Deit"
signal_connect "destroy" do
Gtk.main_quit
end
set_default_size 250, 200
set_window_position Gtk::Window::POS_CENTER
show
end
end
Gtk.init
window = Deit.new
Gtk.main
Předáme tedy informaci o umístění interpretu, naimportujeme gtk2 knihovnu, zdědíme okno (pomocí "<") a následně jej zobrazíme. Proč nefunguje ukončení oken v GTK standardně - automaticky - mi je záhadou, každopádně seznam všech signálů (eventů) naleznete zde:
http://ruby-gnome.sourceforge.net/…/signal.html
Pokud byste chtěli přidávat nějaké ty widgety (controly), musíte dodržet standardní GTK layout. Tedy nejprve je třeba přidat nějaký container, ty jsou:
- Horizontal Boxes
- Vertical Boxes
- Table
- Fixed
( Seznam widgetů: http://ruby-gnome2.sourceforge.jp )
Snad není třeba překládat. Akorát Fixed, pod tím si představte nescrollovatelný panel. Pokud budete chtít nějaký widget scrollovat, tak musíte do Fixed přidat ScrolledWindow, mnohé widgety bez toho ani nejedou.
Nuže, přidáme si tedy tabulku a do ní Label, Entry, TextView a Button:
#!/etc/alternatives/ruby
#encoding: UTF-8
require 'gtk2'
class Deit < Gtk::Window
def initialize
super
set_title "Deit"
signal_connect "destroy" do
Gtk.main_quit
end
set_default_size 250, 160
set_window_position Gtk::Window::POS_CENTER
init_ui
show_all
end
def init_ui
table = Gtk::Table.new 2, 2
label = Gtk::Label.new "Toto píši: "
table.attach(label, 0, 1, 0, 1, 0, 0, 4, 4)
tv = Gtk::TextView.new
tv.set_wrap_mode Gtk::TextTag::WRAP_WORD
tv.set_size_request 200, 118
table.attach(tv, 1, 2, 0, 1, 0, 0, 4, 4)
button = Gtk::Button.new "Click me!"
table.attach(button, 0, 1, 1, 2, 0, 0, 4, 4)
entry = Gtk::Entry.new
entry.set_size_request 200, 26
table.attach(entry, 1, 2, 1, 2, 0, 0, 4, 4)
add(table)
end
end
Gtk.init
window = Deit.new
Gtk.main
Co znamenají parametry v attach máte zde:
http://ruby-gnome2.sourceforge.jp/hiki.cgi?…
A ano, "#encoding: UTF-8" změní charset, tudíž můžeme použít diakritiku...
Výsledek:

Co takhle přidat do TextView text z Entry po kliknutí na tlačítko "Click me!"?
button.signal_connect "button_press_event" do
tv.buffer.text = tv.buffer.text + entry.text + "\r\n"
entry.text = ""
end
Myslím, že dál si již na vše přijdete...
