IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Ruby

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...


 

Všechny články v sekci
Ruby
Článek pro vás napsal matesax
Avatar
Uživatelské hodnocení:
2 hlasů
Aktivity