* 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
This commit is contained in:
parent
ed9e5bfa0a
commit
e34b70004a
4 changed files with 117 additions and 114 deletions
|
@ -52,6 +52,7 @@
|
|||
#include <glibmm/markup.h>
|
||||
#include <glibmm/ustring.h>
|
||||
#include <gtkmm/aboutdialog.h>
|
||||
#include <gtkmm/action.h>
|
||||
#include <gtkmm/button.h>
|
||||
#include <gtkmm/messagedialog.h>
|
||||
#include <gtkmm/menutoolbutton.h>
|
||||
|
@ -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> uimanager = RefPtr<UIManager>::cast_dynamic (_refXml->get_object("UIManager"));
|
||||
CheckMenuItem* continuous_mode = NULL;
|
||||
|
||||
continuous_mode = dynamic_cast<CheckMenuItem*>(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<Action>::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<Action>::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<Action>::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<Action>::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<Action> file_quit = RefPtr<Action>::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<Action>::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<Action>::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<Action>::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<Action>::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<Action>::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<Action>::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"));
|
||||
|
||||
|
|
|
@ -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<Action>::cast_dynamic (refXml->get_object("Action.Simulation.Play"));
|
||||
_action_pause = RefPtr<Action>::cast_dynamic (refXml->get_object("Action.Simulation.Pause"));
|
||||
_action_stop = RefPtr<Action>::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();
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include <sgpemv2/simulation_observer.hh>
|
||||
|
||||
#include <gtkmm/toolbutton.h>
|
||||
#include <gtkmm/menuitem.h>
|
||||
#include <gtkmm/action.h>
|
||||
#include <gtkmm/builder.h>
|
||||
|
||||
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<Gtk::Action> _action_start;
|
||||
Glib::RefPtr<Gtk::Action> _action_pause;
|
||||
Glib::RefPtr<Gtk::Action> _action_stop;
|
||||
};
|
||||
|
||||
} //~ namespace sgpem
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue