Ruby v Linuxe - GTK
Aj keď je aplikácia GTK všade približne rovnaká, aspoň malý článok si zaslúži. Budeme k tomu potrebovať balík "ruby-gtk2". Následne veľmi ľahko 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
Odovzdáme teda informáciu o umiestnení interpretu, importujete gtk2 knižnicu, zdedíme okno (pomocou "<") a následne ho zobrazíme. Prečo nefunguje ukončenie okien v GTK štandardne - automaticky - mi je záhadou, každopádne zoznam všetkých signálov (eventov) nájdete tu:
http://ruby-gnome.sourceforge.net/.../signal.html
Ak by ste chceli pridávať nejaké tie widgety (Control):, musíte dodržať štandardnú GTK layout. Teda najprv je potrebné pridať nejaký container, tie sú:
- horizontal Boxes
- Vertical Boxes
- Table
- fixed
(Zoznam widgetov: http://ruby-gnome2.sourceforge.jp)
Snáď netreba prekladať. Akurát Fixed, pod tým si predstavte nescrollovatelný panel. Ak budete chcieť nejaký widget scrollovať, tak musíte do Fixed pridať ScrolledWindow, mnohé widgety bez toho ani nechodia.
Nuž, pridáme si teda tabuľku a do nej 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
Čo znamenajú parametre v attach máte tu:
http://ruby-gnome2.sourceforge.jp/hiki.cgi...
A áno, "#encoding: UTF-8" zmení charset, teda môžeme použiť diakritiku ...
výsledok:

Čo tak pridať do TextView text z Entry po kliknutí na tlačidlo "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 ďalej si už na všetko prídete ...
