- Experimented a bit more with the treeview widget, with little success, It should segfault on selection of the menu entry "Add Process"
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@869 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
parent
45ef305a1b
commit
047f0b8f86
|
@ -29,3 +29,6 @@ UserInterruptException::UserInterruptException(const char* msg)
|
||||||
: CPUPolicyException(msg)
|
: CPUPolicyException(msg)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
UserInterruptException::UserInterruptException(const std::string& msg)
|
||||||
|
: CPUPolicyException(msg)
|
||||||
|
{}
|
||||||
|
|
|
@ -38,6 +38,7 @@ namespace sgpem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit UserInterruptException(const char* msg = "");
|
explicit UserInterruptException(const char* msg = "");
|
||||||
|
explicit UserInterruptException(const std::string& msg = "");
|
||||||
};
|
};
|
||||||
} //~ namespace sgpem
|
} //~ namespace sgpem
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,16 @@
|
||||||
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
#include "schedulables_tree_widget.hh"
|
#include "schedulables_tree_widget.hh"
|
||||||
|
#include "templates/sequences.tcc"
|
||||||
|
#include "backend/history.hh"
|
||||||
|
#include "backend/simulation.hh"
|
||||||
|
#include "backend/process.hh"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtkmm/entry.h>
|
||||||
|
#include <gtkmm/spinbutton.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace sgpem;
|
using namespace sgpem;
|
||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
|
@ -30,20 +38,23 @@ using Gnome::Glade::Xml;
|
||||||
SchedulablesTreeWidget::SchedulablesTreeWidget() :
|
SchedulablesTreeWidget::SchedulablesTreeWidget() :
|
||||||
_add_process_dialog_glade(Xml::create(GLADEDIR "/add-process-dialog.glade"))
|
_add_process_dialog_glade(Xml::create(GLADEDIR "/add-process-dialog.glade"))
|
||||||
{
|
{
|
||||||
_columns.add(_column);
|
_columns.add(_main_column);
|
||||||
|
_columns.add(_handles_column);
|
||||||
_model = TreeStore::create(_columns);
|
_model = TreeStore::create(_columns);
|
||||||
|
|
||||||
set_model(_model);
|
set_model(_model);
|
||||||
|
|
||||||
/** JUST A BIT OF DATA FOR TESTING **/
|
/** JUST A BIT OF DATA FOR TESTING **/
|
||||||
|
|
||||||
Gtk::TreeModel::Row row1 = *(_model->append());
|
//Gtk::TreeModel::Row row1 = *(_model->append());
|
||||||
row1[_column] = ustring("ciccio");
|
//row1[_main_column] = ustring("ciccio");
|
||||||
|
|
||||||
Gtk::TreeModel::Row row2 = *(_model->append());
|
// Gtk::TreeModel::Row row2 = *(_model->append());
|
||||||
row2[_column] = ustring("pippo");
|
// row2[_main_column] = ustring("pippo");
|
||||||
|
|
||||||
append_column("schedulables", _column);
|
append_column("schedulables", _main_column);
|
||||||
|
//invisible
|
||||||
|
// append_column("handles", _handles_column);
|
||||||
|
|
||||||
/** POPUP MENU **/
|
/** POPUP MENU **/
|
||||||
|
|
||||||
|
@ -77,9 +88,17 @@ SchedulablesTreeWidget::SchedulablesTreeWidget() :
|
||||||
_add_process_dialog->hide();
|
_add_process_dialog->hide();
|
||||||
|
|
||||||
set_headers_visible(false);
|
set_headers_visible(false);
|
||||||
|
|
||||||
|
Simulation::get_instance().get_history().attach(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SchedulablesTreeWidget::on_button_press_event(GdkEventButton* event)
|
SchedulablesTreeWidget::~SchedulablesTreeWidget()
|
||||||
|
{
|
||||||
|
Simulation::get_instance().get_history().detach(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
SchedulablesTreeWidget::on_button_press_event(GdkEventButton* event)
|
||||||
{
|
{
|
||||||
TreeView::on_button_press_event(event);
|
TreeView::on_button_press_event(event);
|
||||||
|
|
||||||
|
@ -92,25 +111,43 @@ bool SchedulablesTreeWidget::on_button_press_event(GdkEventButton* event)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SchedulablesTreeWidget::~SchedulablesTreeWidget()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SchedulablesTreeWidget::update(const History& history)
|
SchedulablesTreeWidget::update(const History& history)
|
||||||
{
|
{
|
||||||
|
const Environment::Processes& processes =
|
||||||
|
Simulation::get_instance().get_history().get_last_environment().get_processes();
|
||||||
|
|
||||||
|
_model.clear();
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < processes.size(); ++i)
|
||||||
|
{
|
||||||
|
Process& p = *processes[i];
|
||||||
|
|
||||||
|
TreeModel::Row row = *(_model->append());
|
||||||
|
row[_main_column] = p.get_name();
|
||||||
|
row[_handles_column] = &p;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SchedulablesTreeWidget::_on_add_process()
|
SchedulablesTreeWidget::_on_add_process()
|
||||||
{
|
{
|
||||||
switch(_add_process_dialog->run())
|
if(_add_process_dialog->run() == RESPONSE_OK)
|
||||||
{
|
{
|
||||||
case RESPONSE_OK:
|
Entry* name_entry;
|
||||||
std::cout << "added the process ;-)\n";
|
SpinButton* arrival_time_spin;
|
||||||
break;
|
SpinButton* base_priority_spin;
|
||||||
default:
|
|
||||||
std::cout << "operation cancelled ;-)\n";
|
_add_process_dialog_glade->get_widget("Name.Entry", name_entry);
|
||||||
|
_add_process_dialog_glade->get_widget("ArrivalTime.Spin", arrival_time_spin);
|
||||||
|
_add_process_dialog_glade->get_widget("BasePriority.Spin", base_priority_spin);
|
||||||
|
|
||||||
|
Simulation::get_instance().get_history().add_process(name_entry->get_text(),
|
||||||
|
arrival_time_spin->get_value_as_int(),
|
||||||
|
base_priority_spin->get_value_as_int());
|
||||||
}
|
}
|
||||||
|
|
||||||
_add_process_dialog->hide();
|
_add_process_dialog->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,8 @@ namespace sgpem
|
||||||
|
|
||||||
Glib::RefPtr<Gtk::TreeStore> _model;
|
Glib::RefPtr<Gtk::TreeStore> _model;
|
||||||
Gtk::TreeModelColumnRecord _columns;
|
Gtk::TreeModelColumnRecord _columns;
|
||||||
Gtk::TreeModelColumn<Glib::ustring> _column;
|
Gtk::TreeModelColumn<Glib::ustring> _main_column;
|
||||||
|
Gtk::TreeModelColumn<void*> _handles_column;
|
||||||
Glib::RefPtr<Gtk::ActionGroup> _action_group;
|
Glib::RefPtr<Gtk::ActionGroup> _action_group;
|
||||||
Glib::RefPtr<Gtk::UIManager> _UIManager;
|
Glib::RefPtr<Gtk::UIManager> _UIManager;
|
||||||
Gtk::Menu* _menu;
|
Gtk::Menu* _menu;
|
||||||
|
|
Loading…
Reference in New Issue