: Gtk::Window()
, number_of_floors_(floors)
, number_of_elevators_(elevators)
- , simulation_status_(STOPPED)
+ , simulation_status_(PAUSED)
/* The ElevatorController */
, ec_(floors, elevators)
/* GUI Elements */
, table_(floors+3, elevators+1)
, button_playpause_(Gtk::Stock::MEDIA_PLAY)
- , button_stop_(Gtk::Stock::STOP)
, button_quit_(Gtk::Stock::QUIT)
/* Storage for GUI elements for later lookup */
/* Fill in the control buttons */
Gtk::HBox *box = new Gtk::HBox ();
+ /* Tell the Play/Pause button to use the StockID so we can change it's image */
+ button_playpause_.set_use_stock (true);
+
+ /* Signals for control buttons */
button_quit_.signal_clicked().connect (
sigc::mem_fun (*this, &ElevatorGUI::on_quit_button_clicked));
- button_stop_.signal_clicked().connect (
- sigc::mem_fun (*this, &ElevatorGUI::on_stop_button_clicked));
button_playpause_.signal_clicked().connect (
sigc::mem_fun (*this, &ElevatorGUI::on_playpause_button_clicked));
box->pack_start (button_playpause_);
- box->pack_start (button_stop_);
box->pack_start (button_quit_);
/* Attach the box to the bottom of the GUI */
void ElevatorGUI::on_playpause_button_clicked ()
{
- std::string names[] = { "STOPPED", "RUNNING", "PAUSED" };
+ std::string names[] = { "RUNNING", "PAUSED" };
std::cout << "Play/Pause pressed with status=" << names[simulation_status_] << std::endl;
switch (simulation_status_)
{
- case STOPPED:
- simulation_status_ = RUNNING;
-
- // add and start timer
- timer_ = Glib::signal_timeout().connect (
- sigc::mem_fun (*this, &ElevatorGUI::on_timer_tick),
- timer_tick_ms_);
-
- break;
case RUNNING:
simulation_status_= PAUSED;
// stop and remove timer
timer_.disconnect ();
+ // Set the StockID of the button
+ button_playpause_.set_label ("gtk-media-play");
+
break;
case PAUSED:
simulation_status_ = RUNNING;
sigc::mem_fun (*this, &ElevatorGUI::on_timer_tick),
timer_tick_ms_);
+ // Set the StockID of the button
+ button_playpause_.set_label ("gtk-media-pause");
+
break;
default:
std::cout << "Bad Simulation Status in Play/Pause" << std::endl;
}
}
-void ElevatorGUI::on_stop_button_clicked ()
-{
- // FIXME: implement this
- std::cout << "STOP Button Clicked" << std::endl;
-
- simulation_status_ = STOPPED;
-}
-
void ElevatorGUI::on_request_button_toggled (RequestButton *button)
{
// Only send an elevator if we are toggled to on