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 false
Pro 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)