- Enable CPUPolicy configuration in the GUI through clicking on the

toolbar button about the "Scheduling policy". The same is true also
for a ResourcePolicy. These two features will also need a related
entry under the "Edit" menu. Closes task #15.


git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@970 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
tchernobog 2006-08-30 23:37:11 +00:00
parent 9af2008050
commit 4f3e8f61df
5 changed files with 386 additions and 8 deletions

View file

@ -21,26 +21,25 @@
#include "config.h"
#include "gettext.h"
#include "configure_policy_dialog.hh"
#include "gui_builder.hh"
#include "graphical_preferences_editor.hh"
#include "schedulables_tree_widget.hh"
#include "simulation_widget.hh"
#include "resources_widget.hh"
#include "gui_builder.hh"
#include "graphical_preferences_editor.hh"
#include "backend/cpu_policy_exception.hh"
#include "backend/malformed_policy_exception.hh"
#include "backend/null_policy_exception.hh"
#include "backend/user_interrupt_exception.hh"
#include "backend/cpu_policies_gatekeeper.hh"
#include "backend/cpu_policy.hh"
#include "backend/cpu_policy_manager.hh"
#include "backend/resource_policies_gatekeeper.hh"
#include "backend/resource_policy_manager.hh"
#include "backend/resource_policy.hh"
#include "backend/history.hh"
#include "backend/policy_parameters.hh"
#include "backend/simulation.hh"
#include "backend/serializers_gatekeeper.hh"
#include "backend/serializer.hh"
@ -51,6 +50,7 @@
#include <glibmm/ustring.h>
#include <gtkmm/aboutdialog.h>
#include <gtkmm/messagedialog.h>
#include <gtkmm/menutoolbutton.h>
#include <gtkmm/filechooserdialog.h>
#include <gtkmm/main.h>
#include <gtkmm/menuitem.h>
@ -197,10 +197,52 @@ GuiBuilder::on_file_saveas_activate()
Gtk::Statusbar* sbar = _refXml->get_widget("MainStatusBar", sbar);
sbar->push(msg);
}
}
void
GuiBuilder::on_configure_cpu_policy()
{
using namespace Gtk;
CPUPolicy* policy = Simulation::get_instance().get_policy();
if(policy == NULL)
{
MessageDialog warn(_("<b>No CPU policy is currently selected.</b>\nPlease choose one before trying to configure it."),
true, MESSAGE_WARNING, BUTTONS_OK, true);
warn.run();
return;
}
PolicyParameters& params = policy->get_parameters();
ConfigurePolicyDialog config_dialog(_("Configuring CPU Policy ") + policy->get_name(), params);
config_dialog.run();
}
void
GuiBuilder::on_configure_resource_policy()
{
using namespace Gtk;
ResourcePolicy* policy = Simulation::get_instance().get_resource_policy();
if(policy == NULL)
{
MessageDialog warn(_("<b>No CPU policy is currently selected.</b>\nPlease choose one before trying to configure it."),
true, MESSAGE_WARNING, BUTTONS_OK, true);
warn.run();
return;
}
PolicyParameters& params = policy->get_parameters();
ConfigurePolicyDialog config_dialog(_("Configuring CPU Policy ") + policy->get_name(), params);
config_dialog.run();
}
GuiBuilder::GuiBuilder(const std::string& gladefile)
: _refXml(Xml::create(gladefile)), _controller(Simulation::get_instance(), _refXml)
{
@ -237,6 +279,22 @@ GuiBuilder::GuiBuilder(const std::string& gladefile)
edit_preferences->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_edit_preferences_activate));
// ---------------- Toolbar buttons ------------------
// Note: the Play, Pause and Stop buttons are already managed by sgpem::SimulationController.
// Configure CPU Policy
MenuToolButton* cpu_policies_tb_menu;
_refXml->get_widget("ToolBar.PolicySelector", cpu_policies_tb_menu);
cpu_policies_tb_menu->signal_clicked().connect(sigc::mem_fun(*this, &GuiBuilder::on_configure_cpu_policy));
// Configure Resource Policy
MenuToolButton* res_policies_tb_menu;
_refXml->get_widget("ToolBar.ResourceScheduling", res_policies_tb_menu);
res_policies_tb_menu->signal_clicked().connect(sigc::mem_fun(*this, &GuiBuilder::on_configure_resource_policy));
// ---------------------------------------------------
// About dialog
MenuItem* help_about;
_refXml->get_widget("MenuItem.Help.About", help_about);
@ -256,6 +314,7 @@ GuiBuilder::GuiBuilder(const std::string& gladefile)
scheds_tree->show();
// Resources ListView widget
ResourcesWidget* resources_widget = NULL;
_refXml->get_widget_derived("Resources.Tree", resources_widget);
resources_widget->show();