// src/gui_builder.hh - Copyright 2005, 2006, University // of Padova, dept. of Pure and Applied // Mathematics // // This file is part of SGPEMv2. // // This is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // SGPEMv2 is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with SGPEMv2; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifndef GUI_BUILDER_HH #define GUI_BUILDER_HH 1 #include "config.h" #include "simulation_widget.hh" #include "backend/simulation_observer.hh" #include #include #include #include /** \brief This class initialize and starts the whole GUI */ namespace sgpem { class GuiBuilder; class SimulationController; // Helper class for controlling the simulation via callbacks // TODO: move me to another file. class SimulationController : public SimulationObserver { public: SimulationController(Simulation& simulation, Glib::RefPtr main_window); virtual ~SimulationController(); void update(const Simulation& simulation); private: void on_simulation_run(); void on_simulation_pause(); void on_simulation_stop(); bool run_simulation_adaptor(); Simulation& _sim; bool _break_requested; Gtk::ToolButton* _toolbt_start; Gtk::ToolButton* _toolbt_pause; Gtk::ToolButton* _toolbt_stop; }; class GuiBuilder { public: GuiBuilder(const std::string& gladefile = GLADEDIR "/main-window.glade"); ~GuiBuilder(); Gtk::Window& get_initial_window() const; void open_file(const std::string& filename); void on_edit_preferences_activate(); void on_file_open_activate(); void on_file_save_activate(); void on_file_saveas_activate(); void on_configure_cpu_policy(); void on_configure_resource_policy(); private: Glib::RefPtr _refXml; SimulationWidget* _simulation_widget; SimulationController _controller; }; } //~ namespace sgpem #endif //~ GUI_BUILDER_HH