gui/map_win.cc
author deba
Wed, 01 Mar 2006 10:25:30 +0000
changeset 1991 d7442141d9ef
parent 1891 56a718d144c4
permissions -rw-r--r--
The graph adadptors can be alteration observed.
In most cases it uses the adapted graph alteration notifiers.
Only special case is now the UndirGraphAdaptor, where
we have to proxy the signals from the graph.

The SubBidirGraphAdaptor is removed, because it doest not
gives more feature than the EdgeSubGraphAdaptor<UndirGraphAdaptor<Graph>>.

The ResGraphAdaptor is based on this composition.
     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 }