Rev 348 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*******************************************************************************
* elevator_window.h
*
* Header file for the Elevator_Window class.
*
* Copyright 2006, Ira W. Snyder (devel@irasnyder.com)
******************************************************************************/
#ifndef ELEVATOR_WINDOW_H
#define ELEVATOR_WINDOW_H
#include <gtkmm/button.h>
#include <gtkmm/window.h>
#include <gtkmm/togglebutton.h>
#include <gtkmm/table.h>
#include <gtkmm/label.h>
#include <gtkmm/image.h>
#include <gtkmm/stock.h>
#include <gtkmm/dialog.h>
#include <gtkmm/entry.h>
#include <boost/algorithm/string.hpp>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <assert.h>
#include "elevator.h"
#include "controller.h"
#include "dispatch_data.h"
class Controller;
typedef struct
{
Glib::ustring str;
int button_num;
int direction;
Gtk::ToggleButton *theButton;
}
Button_Data;
class Elevator_Window : public Gtk::Window
{
public:
Elevator_Window (int numFloors, int numElevators);
virtual ~Elevator_Window ();
void set_controller (Controller *controller);
void get_floors_from_user (int elevator_num, int floor);
// Helper Functions
void open_elevator_at (int row, int col);
void close_elevator_at (int row, int col);
void unset_up_button (int button_num);
void unset_down_button (int button_num);
void set_label (int label_num, std::string new_text);
protected:
// Signal Handlers
virtual void on_toggle_button_pressed (Button_Data data);
// Member Widgets
Gtk::Table m_table;
std::vector<Gtk::ToggleButton*> upbuttons;
std::vector<Gtk::ToggleButton*> downbuttons;
std::vector<Gtk::Image*> images;
std::vector<Gtk::Label*> labels;
// Member Controller
Controller *controller;
// Member Variables
int numFloors;
int numElevators;
};
#endif // ELEVATOR_WINDOW_H