IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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:

Ruby

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


 

Všetky články v sekcii
Ruby
Článok pre vás napísal matesax
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity