3 #include <gtkmm/accelmap.h>
12 cout << "This is the " << txt << " item\n";
16 make_action (Glib::RefPtr<ActionGroup> group, Glib::RefPtr<AccelGroup> accel_group, string name, string label, slot<void> sl, guint key, Gdk::ModifierType mods)
18 Glib::RefPtr<Action> act;
20 act = Action::create (name, label);
22 AccelMap::add_entry (act->get_accel_path(), key, mods);
23 act->set_accel_group (accel_group);
25 cerr << "action " << name << " has path " << act->get_accel_path() << endl;
31 make_action (Glib::RefPtr<ActionGroup> group, string name, string label, slot<void> sl, guint key, Gdk::ModifierType mods)
33 Glib::RefPtr<Action> act;
35 act = Action::create (name, label);
37 AccelMap::add_entry (act->get_accel_path(), key, mods);
39 cerr << "action " << name << " has path " << act->get_accel_path() << endl;
45 make_action (Glib::RefPtr<ActionGroup> group, string name, string label, slot<void> sl)
47 Glib::RefPtr<Action> act;
49 act = Action::create (name, label);
52 cerr << "action " << name << " has path " << act->get_accel_path() << endl;
58 make_action (Glib::RefPtr<ActionGroup> group, string name, string label)
60 Glib::RefPtr<Action> act;
62 act = Action::create (name, label);
65 cerr << "action " << name << " has path " << act->get_accel_path() << endl;
71 main (int argc, char* argv[])
73 Main app (argc, argv);
74 Window window (WINDOW_TOPLEVEL);
75 Window other_window (WINDOW_TOPLEVEL);
76 Button button ("click me for baz");
77 Button other_button ("click me for baz");
81 Glib::RefPtr<ActionGroup> shared_actions;
82 Glib::RefPtr<ActionGroup> actions;
83 Glib::RefPtr<ActionGroup> other_actions;
84 Glib::RefPtr<UIManager> uimanager;
85 Glib::RefPtr<UIManager> other_uimanager;
86 Glib::RefPtr<UIManager> shared_uimanager;
87 Glib::RefPtr<AccelGroup> shared_accel_group;
89 window.set_name ("Editor");
90 window.set_title ("Editor");
92 other_window.set_name ("Other");
93 other_window.set_title ("Other");
95 uimanager = UIManager::create();
96 other_uimanager = UIManager::create();
97 shared_uimanager = UIManager::create();
99 actions = ActionGroup::create("MyActions");
100 other_actions = ActionGroup::create("OtherActions");
101 shared_actions = ActionGroup::create();
103 uimanager->add_ui_from_file ("mtest.menus");
104 other_uimanager->add_ui_from_file ("mtest_other.menus");
106 AccelMap::load ("mtest.bindings");
108 make_action (shared_actions, "SharedMenuBar", "shared");
109 make_action (shared_actions, "SharedMenu", "sharedm");
110 Glib::RefPtr<Action> act = make_action (shared_actions, "Baz", "baz", bind (sigc::ptr_fun (printit), "baz"), GDK_p, Gdk::MOD1_MASK);
112 act->connect_proxy (button);
113 act->connect_proxy (other_button);
115 make_action (actions, "TopMenu", "top");
116 make_action (actions, "Foo", "foo", bind (sigc::ptr_fun (printit), "foo"), GDK_p, Gdk::ModifierType (0));
117 make_action (actions, "Bar", "bar", bind (sigc::ptr_fun (printit), "bar"), GDK_p, Gdk::CONTROL_MASK);
118 make_action (other_actions, "OTopMenu", "otop");
119 make_action (other_actions, "OFoo", "foo", bind (sigc::ptr_fun (printit), "o-foo"), GDK_p, Gdk::ModifierType (0));
120 make_action (other_actions, "OBar", "bar", bind (sigc::ptr_fun (printit), "o-bar"), GDK_p, Gdk::CONTROL_MASK);
122 other_uimanager->insert_action_group (other_actions);
123 other_uimanager->insert_action_group (shared_actions);
125 uimanager->insert_action_group (actions);
126 uimanager->insert_action_group (shared_actions);
128 shared_uimanager->insert_action_group (shared_actions);
130 other_window.add_accel_group (other_uimanager->get_accel_group());
131 other_window.add_accel_group (shared_uimanager->get_accel_group());
133 window.add_accel_group (uimanager->get_accel_group());
134 window.add_accel_group (shared_uimanager->get_accel_group());
138 m = dynamic_cast<MenuBar*>(other_uimanager->get_widget ("/OTop"));
140 other_vpacker.pack_start (*m);
141 other_vpacker.pack_start (other_button);
143 other_window.add (other_vpacker);
144 other_window.show_all ();
146 m = dynamic_cast<MenuBar*>(uimanager->get_widget ("/Top"));
148 vpacker.pack_start (*m);
149 vpacker.pack_start (button);
151 shared_uimanager->add_ui_from_file ("mtest_shared.menu");
153 MenuBar* item = dynamic_cast<MenuBar*> (shared_uimanager->get_widget ("/SharedMenuBar"));
155 window.add (vpacker);
158 Settings::get_default()->property_gtk_can_change_accels() = true;
160 cerr << " shared = " << shared_uimanager->get_accel_group()
161 << " first = " << uimanager->get_accel_group()
162 << " second = " << other_uimanager->get_accel_group ()