Subversion Repositories programming

Rev

Rev 347 | Go to most recent revision | 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);

        // 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