Pro tvorbu menu se používá objekt Wx::MenuBar. Tento objekt obsahuje všechna menu a související objekty Wx::Menu pro roletky.
Tabulka 40.1. Zvláštní předdefinovaná ID
| symbol | popis |
|---|---|
Wx::ID_ABOUT | Žádost o otevření informační obrazovky |
Wx::ID_ANY | Libovolná událost. |
Wx::ID_EXIT | Ukončení programu. |
Wx::ID_OPEN | Otevření existujícího souboru |
Wx::ID_SAVE | Uložení souboru. |
Wx::ID_LOWEST | Nejnižší ID které WxRuby používá interně. |
Wx::ID_HIGHEST | Nejvyšší ID které WxRuby používá interně. |
Příklad 40.3. Menu 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
menu = Wx::MenuBar.new
file = Wx::Menu.new
file.append(Wx::ID_ANY, "&Open\tAlt-O", "Open File")
file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit")
menu.append(file, "&File")
@frame.menu_bar = menu
evt_menu(Wx::ID_EXIT, :on_quit)
end
def on_quit
@frame.close
end
end
app = MyApp.new
app.main_loop
Příklad 40.4. Menu program jinak
#!/usr/bin/env ruby
require 'rubygems'
require 'wx'
class AppFrame < Wx::Frame
def initialize
super(nil, :title => 'Hello, World!')
# Create Menu
menu = Wx::MenuBar.new
file = Wx::Menu.new
file.append(Wx::ID_ANY, "&Open\tAlt-O", "Open File")
file.append(Wx::ID_EXIT, "E&xit\tAlt-X", "Quit")
menu.append(file, "&File")
self.menu_bar = menu
evt_menu(Wx::ID_EXIT, :on_quit)
end
def on_quit
close
end
end
class MyApp < Wx::App
def on_init
@frame = AppFrame.new
@frame.show
end
end
app = MyApp.new
app.main_loop
Pokud potřebujeme menu znepřístupnit, použijeme metodu enable objektu MenuItem. Tato metoda má jen jeden parametr typu 〈Boolean 〉.
enable(Boolean enable = true)
@save_menu_item = file_menu.append Wx::ID_SAVE
@save_menu_item.enable falsePro aktivaci a deaktivaci můžeme ještě použít volání metody enable objektu MenuBar nebo Menu. Tato metoda má dva parametry. Prvním je číslo volby menu (ID) a druhým je logická hodnota 〈Boolean 〉.
enable(Integer id, Boolean enable)
self.menu_bar.enable(Wx::ID_SAVE, true)
