V první části si napíšeme základní kostru aplikace. Začneme obyčejným "hello" programem, jako je tento.
Příklad 40.1. Hello program ve wxRuby
#!/usr/bin/env ruby
require 'rubygems'
require 'wx'
class MyApp < Wx::App
def on_init
frame = Wx::Frame.new(nil, -1,
:title => 'Hello, World!')
frame.show
end
end
app = MyApp.new
app.main_loop
A teď pár slov, jak program funguje. První řádek je známý !# řádek z Unixových systémů. Operační systém pozná že tento program má spouštět pomocí ruby. Následují dva řádky ve kterých říkáme, že je potřeba rubygems knihovna a samotná wx knihovna.
Program píšeme jako podtřídu třídy Wx::App které reprezentuje WxRuby aplikace. Do metody on_init naší třídy umístníme kód který se spouští při inicializaci aplikce. V tomto kódu vytvoříme pomocí volání Wx::Frame.new okno. První parametr každého volání je číslo rodičovského grafického prvku. Protože vytváříme samostatné okno, uvedeme jako hodnotu nil. Druhý paraametr každého volání je jedinečné ID objektu. Pokud použijeme -1, říkáme tím wxRuby že nemáme na ID objektu žádné zvláštní požadavky. wxRuby si vybere ID podle sebe. Z dalších parametrů jsem použil jen pojmenovaný parametr :title kterým nastavím oknu titulek.
A takto to vypadá.
A teď program trochu upravíme. Nejdříve vyjmeme hlavní rámec aplikace z metody on_init a napíšeme pro něj vlastní třídu. Protože tento rámec časem nebude mnoho metod, je to první krok jak je zvládnout.
class AppFrame < Wx::Frame
def initialize
super nil, :title => 'Nazdar světe!'
end
endVe třídě aplikace, při spouštění programu, pak tento rámec použijeme.
def on_init
@frame = AppFrame.new
@frame.show
endPo provedených úpravách vypadá kód takto:
Příklad 40.2. Hello program jinak
#!/usr/bin/env ruby
# -*- coding: utf-8; -*-
require 'rubygems'
require 'wx'
class AppFrame < Wx::Frame
def initialize
super nil, :title => 'Nazdar světe!'
end
end
class MyApp < Wx::App
def on_init
@frame = AppFrame.new.show
end
end
if $0 == __FILE__
MyApp.new.main_loop
end
