// -*- C++ -*- //

#ifndef MAP_WIN_H
#define MAP_WIN_H

#include <all_include.h>
#include <mapstorage.h>
#include <graph_displayer_canvas.h>
#include <libgnomecanvasmm.h>
#include <libgnomecanvasmm/polygon.h>

///This class is responsible for creating a window,
///on which the visualization attributes can be
///assigned to maps.
class MapWin : public Gtk::Window
{
protected:
  ///The \ref GraphDisplayerCanvas on which the graph will be drawn.
  ///It has to be known for this class, because
  ///when a map assigned to a certain attribute
  ///a function of the \ref GraphDisplayerCanvas will be called.
  GraphDisplayerCanvas & gdc;

  ///The \ref MapStorage in which the visualizable maps are stored
  MapStorage & ms;

  Gtk::Table table;
  
  Gtk::HBox combos, * labelpluscombo;
  Gtk::Combo * combo_array;

  Gtk::VBox vbox_b, vbox_r1, vbox_r2;

  Gtk::Label * label;

public:
  ///Constructor of MapWin creates the widgets shown in MapWin.
  MapWin(const std::string& title, MapStorage &, GraphDisplayerCanvas &);

  ///If a radiobutton is clicked, this function determines
  ///which button was that and after that calls the
  ///appropriate function of the \ref GraphDisplayerCanvas
  ///to change the visible values of that attribute.
  virtual void combo_changed(int);
  virtual bool close_if_escape_is_pressed(GdkEventKey*);
};

#endif //MAP_WIN_H
