gui/map_win.cc
author deba
Wed, 01 Mar 2006 10:17:25 +0000
changeset 1990 15fb7a4ea6be
parent 1891 56a718d144c4
permissions -rw-r--r--
Some classes assumed that the GraphMaps should be inherited
from an ObserverBase. These classes parents replaced with
DefaultMap which cause that the graph maps should not be
inherited from the ObserverBase.
     1 #include "map_win.h"
     2 #include <set>
     3 
     4 bool MapWin::closeIfEscapeIsPressed(GdkEventKey* e)
     5 {
     6   if(e->keyval==GDK_Escape)
     7   {
     8     mytab.closeMapWin();
     9     //    hide();
    10   }
    11   return true;
    12 }
    13 
    14 MapWin::MapWin(const std::string& title, std::vector<std::string> eml, std::vector<std::string> nml, NoteBookTab & mw):mytab(mw)
    15 {
    16   set_title(title);
    17   set_default_size(200, 50);
    18 
    19   signal_key_press_event().connect(sigc::mem_fun(*this, &MapWin::closeIfEscapeIsPressed));
    20 
    21   e_combo_array=new MapSelector * [EDGE_PROPERTY_NUM];
    22 
    23   table=new Gtk::Table(EDGE_PROPERTY_NUM, 1, false);
    24 
    25   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    26   {
    27     e_combo_array[i]=new MapSelector(eml, mytab.getActiveEdgeMap(i), edge_property_strings[i], true);
    28 
    29     (*table).attach((*(e_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    30 
    31     e_combo_array[i]->signal_cbt_ch().connect(sigc::bind(sigc::mem_fun(*this, &MapWin::edgeMapChanged), i));
    32     e_combo_array[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &MapWin::newMapWinNeeded));
    33   }
    34 
    35   vbox.pack_start(*(new Gtk::Label("Edge properties")));
    36 
    37   vbox.pack_start(*table);
    38 
    39   vbox.pack_start(*(new Gtk::HSeparator));
    40 
    41   n_combo_array=new MapSelector * [NODE_PROPERTY_NUM];
    42 
    43   table=new Gtk::Table(NODE_PROPERTY_NUM, 1, false);
    44 
    45   for(int i=0;i<NODE_PROPERTY_NUM;i++)
    46   {
    47     n_combo_array[i]=new MapSelector(nml, mytab.getActiveNodeMap(i), node_property_strings[i], false);
    48 
    49     (*table).attach((*(n_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    50 
    51     n_combo_array[i]->signal_cbt_ch().connect(sigc::bind(sigc::mem_fun(*this, &MapWin::nodeMapChanged), i));
    52     n_combo_array[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &MapWin::newMapWinNeeded));
    53   }
    54 
    55   add(vbox);
    56 
    57   vbox.pack_start(*(new Gtk::Label("Node properties")));
    58 
    59   vbox.pack_start(*table);
    60 
    61   show_all_children();
    62 
    63 }
    64 
    65 void MapWin::nodeMapChanged(std::string mapname, int prop)
    66 {
    67   mytab.propertyChange(false, prop, mapname);
    68 }
    69 
    70 void MapWin::edgeMapChanged(std::string mapname, int prop)
    71 {
    72   mytab.propertyChange(true, prop, mapname);
    73 }
    74 
    75 void MapWin::newMapWinNeeded(bool itisedge)
    76 {
    77   mytab.popupNewMapWin(itisedge);
    78 }
    79 
    80 void MapWin::update(std::vector<std::string> eml, std::vector<std::string> nml)
    81 {
    82   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    83   {
    84     e_combo_array[i]->update_list(eml);
    85   }
    86 
    87   for(int i=0;i<NODE_PROPERTY_NUM;i++)
    88   {
    89     n_combo_array[i]->update_list(nml);
    90   }
    91 }
    92 
    93 void MapWin::registerNewEdgeMap(std::string newmapname)
    94 {
    95   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    96   {
    97     //filling in combo box with choices
    98     e_combo_array[i]->append_text((Glib::ustring)newmapname);
    99   }
   100 }
   101 
   102 void MapWin::registerNewNodeMap(std::string newmapname)
   103 {
   104   for(int i=0;i<NODE_PROPERTY_NUM;i++)
   105   {
   106     //filling in combo box with choices
   107     n_combo_array[i]->append_text((Glib::ustring)newmapname);
   108   }
   109 }
   110 
   111 bool MapWin::on_delete_event(GdkEventAny * event)
   112 {
   113   event=event;
   114   mytab.closeMapWin();
   115   return true;
   116 }