def initialize
super("testGNOME", "GnomeAppHelper test")
item_activated = Proc.new do |widget, data|
printf("%s activated\n", data)
end
helper_file_menu = [
[ Gnome::App::UI_ITEM, "_New", "Create a new file", item_activated, "file/new",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::NEW, ?n, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "_Open...", "Open an existing file", item_activated, "file/open",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::OPEN, ?o, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "_Save", "Save the current file", item_activated, "file/save",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::SAVE, ?s, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "Save _as...", "Save the current file with a new name", item_activated, "file/save as",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::SAVE_AS, 0, 0, nil ],
Gnome::UIInfo::separator,
[ Gnome::App::UI_ITEM, "_Print...", "Print the current file", item_activated, "file/print",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::PRINT, ?p, Gdk::Window::CONTROL_MASK, nil ],
Gnome::UIInfo::separator,
Gnome::UIInfo::menu_close_item(item_activated, "file/close"),
Gnome::UIInfo::menu_quit_item(item_activated, "file/exit"),
]
helper_edit_menu = [
[ Gnome::App::UI_ITEM, "_Undo", "Undo the last operation", item_activated, "edit/undo",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::UNDO, ?z, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "_Redo", "Redo the last undo-ed operation", item_activated, "edit/redo",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::REDO, 0, 0, nil ],
Gnome::UIInfo::separator,
[ Gnome::App::UI_ITEM, "Cu_t", "Cut the selection to the clipboard", item_activated, "edit/cut",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::CUT, ?x, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "_Copy", "Copy the selection to the clipboard", item_activated, "edit/copy",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::COPY, ?c, Gdk::Window::CONTROL_MASK, nil ],
[ Gnome::App::UI_ITEM, "_Paste", "Paste the contents of the clipboard", item_activated, "edit/paste",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::PASTE, ?v, Gdk::Window::CONTROL_MASK, nil ],
]
helper_style_radio_items = [
[ Gnome::App::UI_ITEM, "_10 points", nil, item_activated, "style/10 points",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "_20 points", nil, item_activated, "style/20 points",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "_30 points", nil, item_activated, "style/30 points",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "_40 points", nil, item_activated, "style/40 points",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
]
helper_style_menu = [
[ Gnome::App::UI_TOGGLEITEM, "_Bold", "Make the selection bold", item_activated, "style/bold",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_TOGGLEITEM, "_Italic", "Make the selection italic", item_activated, "style/bold",
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
Gnome::UIInfo::separator,
Gnome::UIInfo::radiolist(helper_style_radio_items),
]
helper_help_menu = [
[ Gnome::App::UI_ITEM, "_About...", "Displays information about the program", item_activated, "help/about",
Gnome::App::PIXMAP_STOCK, Gnome::Stock::ABOUT, 0, 0, nil ],
]
helper_main_menu = [
[ Gnome::App::UI_SUBTREE, "_File", "File operations", helper_file_menu, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_SUBTREE, "_Edit", "Editing commands", helper_edit_menu, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_SUBTREE, "_Style", "Style settings", helper_style_menu, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_SUBTREE, "_Help", "Help on the program", helper_help_menu, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
]
helper_toolbar_radio_items = [
[ Gnome::App::UI_ITEM, "Red", "Set red color", item_activated, "toolbar/red",
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_RED, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Green", "Set green color", item_activated, "toolbar/green",
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_GREEN, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Blue", "Set blue color", item_activated, "toolbar/blue",
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_BLUE, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Yellow", "Set yellow color", item_activated, "toolbar/yellow",
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_YELLOW, 0, 0, nil ],
]
helper_toolbar = [
[ Gnome::App::UI_ITEM, "New", "Create a new file", item_activated, "toolbar/new",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::NEW, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Open", "Open an existing file", item_activated, "toolbar/open",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::OPEN, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Save", "Save the current file", item_activated, "toolbar/save",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::SAVE, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Print", "Print the current file", item_activated, "toolbar/print",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::PRINT, 0, 0, nil ],
Gnome::UIInfo::separator,
[ Gnome::App::UI_ITEM, "Undo", "Undo the last operation", item_activated, "toolbar/undo",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::UNDO, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Redo", "Redo the last undo-ed operation", item_activated, "toolbar/redo",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::REDO, 0, 0, nil ],
Gnome::UIInfo::separator,
[ Gnome::App::UI_ITEM, "Cut", "Cut the selection to the clipboard", item_activated, "toolbar/cut",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::CUT, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Copy", "Copy the selection to the clipboard", item_activated, "toolbar/copy",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::COPY, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Paste", "Paste the contents of the clipboard", item_activated, "toolbar/paste",
Gnome::App::PIXMAP_STOCK, Gtk::Stock::PASTE, 0, 0, nil ],
Gnome::UIInfo::separator,
Gnome::UIInfo::radiolist(helper_toolbar_radio_items),
]
insert_red = Proc.new do |widget, entry, for_widget|
entry.insert_text("red book ", entry.position)
end
insert_green = Proc.new do |widget, entry, for_widget|
entry.insert_text("green book ", entry.position)
end
insert_blue = Proc.new do |widget, entry, for_widget|
entry.insert_text("blue book ", entry.position)
end
helper_shared_popup_dup = [
[ Gnome::App::UI_ITEM, "Insert a _red book", nil, insert_red, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_RED, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Insert a _green book", nil, insert_green, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_GREEN, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Insert a _blue book", nil, insert_blue, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_BLUE, 0, 0, nil ],
]
helper_shared_popup = [
[ Gnome::App::UI_ITEM, "Insert a _red book", nil, insert_red, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_RED, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Insert a _green book", nil, insert_green, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_GREEN, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Insert a _blue book", nil, insert_blue, nil,
Gnome::App::PIXMAP_STOCK, Gnome::Stock::BOOK_BLUE, 0, 0, nil ],
Gnome::UIInfo::subtree("Subtree", helper_shared_popup_dup),
]
set_cyan = Proc.new do |widget, item, for_widget|
item.set({:fill_color => "cyan"})
end
set_magenta = Proc.new do |widget, item, for_widget|
item.set({:fill_color => "magenta"})
end
set_yellow = Proc.new do |widget, item, for_widget|
item.set({:fill_color => "yellow"})
end
helper_explicit_popup_dup = [
[ Gnome::App::UI_ITEM, "Set color to _cyan", nil, set_cyan, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Set color to _magenta", nil, set_magenta, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Set color to _yellow", nil, set_yellow, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
]
helper_explicit_popup = [
[ Gnome::App::UI_ITEM, "Set color to _cyan", nil, set_cyan, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Set color to _magenta", nil, set_magenta, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
[ Gnome::App::UI_ITEM, "Set color to _yellow", nil, set_yellow, nil,
Gnome::App::PIXMAP_NONE, nil, 0, 0, nil ],
Gnome::UIInfo::subtree("Subtree", helper_explicit_popup_dup),
]
helper_main_menu = self.create_menus(helper_main_menu)
self.create_toolbar(helper_toolbar)
bar = Gnome::AppBar.new(false, true, Gnome::PREFERENCES_USER)
self.statusbar = bar
bar.install_menu_hints(helper_main_menu)
vbox = Gtk::VBox.new(false, Gnome::PAD_SMALL)
vbox.border_width = Gnome::PAD_SMALL
popup = Gnome::PopupMenu.new(helper_shared_popup)
frame = Gtk::Frame.new("Shared popup menu")
vbox.pack_start(frame, false, false, 0)
frame.show()
vbox2 = Gtk::VBox.new(false, Gnome::PAD_SMALL)
vbox2.border_width = Gnome::PAD_SMALL
frame.add(vbox2)
vbox2.show()
w = Gtk::Entry.new()
vbox2.pack_start(w, false, false, 0)
w.show()
popup.attach(w, w)
w = Gtk::Entry.new()
vbox2.pack_start(w, false, false, 0)
w.show()
popup.attach(w, w)
popup = Gnome::PopupMenu.new(helper_explicit_popup)
frame = Gtk::Frame.new("Explicit popup menu")
vbox.pack_start(frame, true, true, 0)
frame.show()
w = Gnome::Canvas.new()
w.set_size_request(200, 100)
w.set_scroll_region(0.0, 0.0, 200.0, 100.0)
frame.add(w)
w.show()
w.signal_connect("destroy", popup) do |widget, popup|
popup.destroy
end
item = Gnome::CanvasEllipse.new(w.root,
{ :x1 => 5.0,
:y1 => 5.0,
:x2 => 95.0,
:y2 => 95.0,
:fill_color => "white",
:outline_color => "black"})
item.signal_connect("event", popup) do |item, event, popup|
item_event(item, event, popup)
end
item = Gnome::CanvasEllipse.new(w.root,
{ :x1 => 105.0,
:y1 => 0.0,
:x2 => 195.0,
:y2 => 95.0,
:fill_color => "white",
:outline_color => "black"})
item.signal_connect("event", popup) do |item, event, popup|
item_event(item, event, popup)
end
self.contents = vbox
self.show()
end