projects
/
cs356-p1-elevator.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Get the Play/Pause and Quit buttons working nicely
[cs356-p1-elevator.git]
/
elevatorgui.cpp
diff --git
a/elevatorgui.cpp
b/elevatorgui.cpp
index
2c82772
..
8e7ae2a
100644
(file)
--- a/
elevatorgui.cpp
+++ b/
elevatorgui.cpp
@@
-4,7
+4,7
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
: Gtk::Window()
, number_of_floors_(floors)
, number_of_elevators_(elevators)
: Gtk::Window()
, number_of_floors_(floors)
, number_of_elevators_(elevators)
- , simulation_status_(
STOPP
ED)
+ , simulation_status_(
PAUS
ED)
/* The ElevatorController */
, ec_(floors, elevators)
/* The ElevatorController */
, ec_(floors, elevators)
@@
-13,9
+13,8
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
, timer_()
/* GUI Elements */
, timer_()
/* GUI Elements */
- , table_(floors+
1, elevators+3
)
+ , table_(floors+
3, elevators+1
)
, button_playpause_(Gtk::Stock::MEDIA_PLAY)
, button_playpause_(Gtk::Stock::MEDIA_PLAY)
- , button_stop_(Gtk::Stock::STOP)
, button_quit_(Gtk::Stock::QUIT)
/* Storage for GUI elements for later lookup */
, button_quit_(Gtk::Stock::QUIT)
/* Storage for GUI elements for later lookup */
@@
-27,6
+26,11
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
int i, j, e, f, e_num, f_num, f_attach;
std::ostringstream str;
int i, j, e, f, e_num, f_num, f_attach;
std::ostringstream str;
+ /* Set Table Spacing / Window Border Size */
+ table_.set_col_spacings (8);
+ table_.set_row_spacings (8);
+ set_border_width (10);
+
/* Fill in all of the ElevatorDoors and CallButtons */
for (f_attach=0, f=floors-1; f>=0; --f, ++f_attach)
{
/* Fill in all of the ElevatorDoors and CallButtons */
for (f_attach=0, f=floors-1; f>=0; --f, ++f_attach)
{
@@
-51,6
+55,11
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
call_buttons_.push_back (callbutton);
box->pack_start (*callbutton);
}
call_buttons_.push_back (callbutton);
box->pack_start (*callbutton);
}
+ else // we are on the top floor, create a dummy label
+ {
+ Gtk::Label *label = new Gtk::Label ("");
+ box->pack_start (*label);
+ }
/* Only create the DOWN CallButton if we are not on the bottom floor */
if (f != 0)
/* Only create the DOWN CallButton if we are not on the bottom floor */
if (f != 0)
@@
-69,6
+78,11
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
call_buttons_.push_back (callbutton);
box->pack_end (*callbutton);
}
call_buttons_.push_back (callbutton);
box->pack_end (*callbutton);
}
+ else // we are on the bottom floor, create a dummy label
+ {
+ Gtk::Label *label = new Gtk::Label ("");
+ box->pack_end (*label);
+ }
for (e=0; e<elevators; ++e) // run left-to-right
{
for (e=0; e<elevators; ++e) // run left-to-right
{
@@
-134,15
+148,16
@@
ElevatorGUI::ElevatorGUI (int floors, int elevators)
/* Fill in the control buttons */
Gtk::HBox *box = new Gtk::HBox ();
/* 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_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_);
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 */
box->pack_start (button_quit_);
/* Attach the box to the bottom of the GUI */
@@
-163,26
+178,20
@@
void ElevatorGUI::on_quit_button_clicked ()
void ElevatorGUI::on_playpause_button_clicked ()
{
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_)
{
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 ();
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;
break;
case PAUSED:
simulation_status_ = RUNNING;
@@
-192,6
+201,9
@@
void ElevatorGUI::on_playpause_button_clicked ()
sigc::mem_fun (*this, &ElevatorGUI::on_timer_tick),
timer_tick_ms_);
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;
break;
default:
std::cout << "Bad Simulation Status in Play/Pause" << std::endl;
@@
-199,14
+211,6
@@
void ElevatorGUI::on_playpause_button_clicked ()
}
}
}
}
-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
void ElevatorGUI::on_request_button_toggled (RequestButton *button)
{
// Only send an elevator if we are toggled to on