From e34b70004ae048aa53c6542d0b8d77bc6a373662 Mon Sep 17 00:00:00 2001 From: tchernobog Date: Sat, 8 Nov 2008 23:45:22 +0000 Subject: [PATCH] * Start using Gtk::Actions instead of directly MenuItems where possible git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@1332 3ecf2c5c-341e-0410-92b4-d18e462d057c --- src/gui_builder.cc | 69 ++++++++++---------- src/simulation_controller.cc | 35 ++++++----- src/simulation_controller.hh | 8 +-- ui/main-window.ui | 119 +++++++++++++++++------------------ 4 files changed, 117 insertions(+), 114 deletions(-) diff --git a/src/gui_builder.cc b/src/gui_builder.cc index cfbe9cb..122112c 100644 --- a/src/gui_builder.cc +++ b/src/gui_builder.cc @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -532,8 +533,16 @@ GuiBuilder::on_selected_resource_policy(ResourcePolicy* pol) void GuiBuilder::on_toggle_simulation_mode() { - Gtk::CheckMenuItem* continuous_mode; - _refXml->get_widget("MenuItem.Simulation.ContinuousMode", continuous_mode); + using namespace Gtk; + using Glib::RefPtr; + + RefPtr uimanager = RefPtr::cast_dynamic (_refXml->get_object("UIManager")); + CheckMenuItem* continuous_mode = NULL; + + continuous_mode = dynamic_cast(uimanager->get_widget + ("/MenuBar/Action.Simulation/Action.Simulation.ContinuousMode")); + g_assert (continuous_mode != NULL); + if(continuous_mode->get_active() == true) Simulation::get_instance().set_mode(Simulation::mode_continuous); else @@ -578,6 +587,7 @@ GuiBuilder::GuiBuilder(const std::string& uifile) _show_threads(true) { using namespace Gtk; + using Glib::RefPtr; Window& main_window = get_initial_window(); main_window.signal_delete_event().connect(sigc::bind_return(sigc::hide(sigc::mem_fun(*this, &GuiBuilder::ask_save)), false)); @@ -587,54 +597,44 @@ GuiBuilder::GuiBuilder(const std::string& uifile) // Note: the Play, Pause and Stop menu items are already managed by sgpem::SimulationController. // file new dialog - MenuItem* file_new = NULL; - _refXml->get_widget("MenuItem.File.New", file_new); - file_new->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_new_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.File.New")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_new_activate)); // file open dialog - MenuItem* file_open = NULL; - _refXml->get_widget("MenuItem.File.Open", file_open); - file_open->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_open_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.File.Open")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_open_activate)); // file save dialog - MenuItem* file_save = NULL; - _refXml->get_widget("MenuItem.File.Save", file_save); - file_save->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_save_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.File.Save")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_save_activate)); // file save dialog - MenuItem* file_saveas = NULL; - _refXml->get_widget("MenuItem.File.SaveAs", file_saveas); - file_saveas->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_saveas_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.File.SaveAs")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_saveas_activate)); - MenuItem* file_quit = NULL; - _refXml->get_widget("MenuItem.File.Quit", file_quit); + RefPtr file_quit = RefPtr::cast_dynamic (_refXml->get_object("Action.File.Quit")); file_quit->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::ask_save)); file_quit->signal_activate().connect(sigc::ptr_fun(&Main::quit)); // preferences dialog - MenuItem* edit_preferences; - _refXml->get_widget("MenuItem.Edit.Preferences", edit_preferences); - edit_preferences->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_edit_preferences_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.Edit.Preferences")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_edit_preferences_activate)); // enable/disable show threads on widgets - MenuItem* show_threads; - _refXml->get_widget("MenuItem.View.ShowThreads", show_threads); - show_threads->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_threads_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.View.ShowThreads")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_threads_activate)); // show/hide holt graph window - MenuItem* show_holt_graph; - _refXml->get_widget("MenuItem.View.ShowHoltGraph", show_holt_graph); - show_holt_graph->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_holt_graph_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.View.ShowHoltGraph")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_holt_graph_activate)); // show/hide statistics window - MenuItem* show_statistics_graph; - _refXml->get_widget("MenuItem.View.ShowStatistics", show_statistics_graph); - show_statistics_graph->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_statistics_activate)); + RefPtr::cast_dynamic (_refXml->get_object("Action.View.ShowStatistics")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_view_show_statistics_activate)); - CheckMenuItem* continuous_mode; - _refXml->get_widget("MenuItem.Simulation.ContinuousMode", continuous_mode); - continuous_mode->signal_toggled().connect(sigc::mem_fun(*this, &GuiBuilder::on_toggle_simulation_mode)); + RefPtr::cast_dynamic (_refXml->get_object("Action.Simulation.ContinuousMode")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_toggle_simulation_mode)); // ---------------- Toolbar buttons ------------------ @@ -668,11 +668,10 @@ GuiBuilder::GuiBuilder(const std::string& uifile) // --------------------------------------------------- // About dialog - MenuItem* help_about; - _refXml->get_widget("MenuItem.Help.About", help_about); - AboutDialog* about_dialog = NULL; + AboutDialog* about_dialog = NULL; _refXml->get_widget("AboutDialog", about_dialog); - help_about->signal_activate().connect(sigc::mem_fun(*about_dialog, &Window::show)); + RefPtr::cast_dynamic (_refXml->get_object("Action.Help.About")) + ->signal_activate().connect(sigc::mem_fun(*about_dialog, &Window::show)); about_dialog->set_wrap_license(true); about_dialog->set_logo(Gdk::Pixbuf::create_from_file(UIDIR "/logo.png")); diff --git a/src/simulation_controller.cc b/src/simulation_controller.cc index ce9e490..0bc8f94 100644 --- a/src/simulation_controller.cc +++ b/src/simulation_controller.cc @@ -50,6 +50,7 @@ SimulationController::SimulationController(Simulation& simulation, Glib::RefPtr< : _sim(simulation), _break_requested(false) { using namespace Gtk; + using Glib::RefPtr; _sim.attach(*this); @@ -60,17 +61,21 @@ SimulationController::SimulationController(Simulation& simulation, Glib::RefPtr< refXml->get_widget("ToolBar.Pause", _toolbt_pause); refXml->get_widget("ToolBar.Stop", _toolbt_stop); - refXml->get_widget("MenuItem.Simulation.Play", _menuit_start); - refXml->get_widget("MenuItem.Simulation.Pause", _menuit_pause); - refXml->get_widget("MenuItem.Simulation.Stop", _menuit_stop); + _action_start = RefPtr::cast_dynamic (refXml->get_object("Action.Simulation.Play")); + _action_pause = RefPtr::cast_dynamic (refXml->get_object("Action.Simulation.Pause")); + _action_stop = RefPtr::cast_dynamic (refXml->get_object("Action.Simulation.Stop")); + + g_assert (_action_start != NULL); + g_assert (_action_pause != NULL); + g_assert (_action_stop != NULL); _toolbt_start->signal_clicked().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_run)); _toolbt_pause->signal_clicked().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_pause)); _toolbt_stop->signal_clicked().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_stop)); - _menuit_start->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_run)); - _menuit_pause->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_pause)); - _menuit_stop->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_stop)); + _action_start->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_run)); + _action_pause->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_pause)); + _action_stop->signal_activate().connect(sigc::mem_fun(*this, &SimulationController::on_simulation_stop)); } @@ -88,9 +93,9 @@ SimulationController::on_simulation_run() _toolbt_pause->set_sensitive(true); _toolbt_stop->set_sensitive(true); - _menuit_start->set_sensitive(false); - _menuit_pause->set_sensitive(true); - _menuit_stop->set_sensitive(true); + _action_start->set_sensitive(false); + _action_pause->set_sensitive(true); + _action_stop->set_sensitive(true); _break_requested = false; // Used instead of simply calling "_sim.run()" to @@ -107,9 +112,9 @@ SimulationController::on_simulation_pause() _toolbt_pause->set_sensitive(false); _toolbt_stop->set_sensitive(true); - _menuit_start->set_sensitive(true); - _menuit_pause->set_sensitive(false); - _menuit_stop->set_sensitive(true); + _action_start->set_sensitive(true); + _action_pause->set_sensitive(false); + _action_stop->set_sensitive(true); _break_requested = true; _sim.pause(); @@ -124,9 +129,9 @@ SimulationController::on_simulation_stop() _toolbt_pause->set_sensitive(false); _toolbt_stop->set_sensitive(false); - _menuit_start->set_sensitive(true); - _menuit_pause->set_sensitive(false); - _menuit_stop->set_sensitive(false); + _action_start->set_sensitive(true); + _action_pause->set_sensitive(false); + _action_stop->set_sensitive(false); _break_requested = true; _sim.stop(); diff --git a/src/simulation_controller.hh b/src/simulation_controller.hh index 411c5fe..7eb3b01 100644 --- a/src/simulation_controller.hh +++ b/src/simulation_controller.hh @@ -26,7 +26,7 @@ #include #include -#include +#include #include namespace sgpem @@ -85,9 +85,9 @@ namespace sgpem Gtk::ToolButton* _toolbt_pause; Gtk::ToolButton* _toolbt_stop; - Gtk::MenuItem* _menuit_start; - Gtk::MenuItem* _menuit_pause; - Gtk::MenuItem* _menuit_stop; + Glib::RefPtr _action_start; + Glib::RefPtr _action_pause; + Glib::RefPtr _action_stop; }; } //~ namespace sgpem diff --git a/ui/main-window.ui b/ui/main-window.ui index 6cd8e29..0481fb0 100644 --- a/ui/main-window.ui +++ b/ui/main-window.ui @@ -11,160 +11,159 @@ 0 10 0 - 10 1 - + - - MenuItem.File + + Action.File _File - + gtk-new - MenuItem.File.New + Action.File.New - + gtk-open - MenuItem.File.Open + Action.File.Open - + gtk-save - MenuItem.File.Save + Action.File.Save - + gtk-save-as - MenuItem.File.SaveAs + Action.File.SaveAs - + gtk-quit - MenuItem.File.Quit + Action.File.Quit - - MenuItem.Edit + + Action.Edit _Edit - + gtk-preferences - MenuItem.Edit.Preferences + Action.Edit.Preferences - - MenuItem.View + + Action.View _View - + gtk-select-font - MenuItem.View.ShowThreads + Action.View.ShowThreads - + gtk-convert - MenuItem.View.ShowHoltGraph + Action.View.ShowHoltGraph - + gtk-justify-left - MenuItem.View.ShowStatistics + Action.View.ShowStatistics - - MenuItem.Simulation + + Action.Simulation _Simulation - + gtk-media-play - MenuItem.Simulation.Play + Action.Simulation.Play - + gtk-media-pause - MenuItem.Simulation.Pause + Action.Simulation.Pause - + gtk-media-stop - MenuItem.Simulation.Stop + Action.Simulation.Stop - + True - MenuItem.Simulation.ContinuousMode + Action.Simulation.ContinuousMode Continuous mode - - MenuItem.Help + + Action.Help _Help - + gtk-about - MenuItem.Help.About + Action.Help.About - - - - - + + + + + - + - - + + - - - - + + + + - - - - + + + + - + - - + + @@ -178,7 +177,7 @@ True - + True