gui/map_win.cc
author klao
Thu, 16 Mar 2006 13:52:12 +0000
changeset 2009 de287863cc98
parent 1891 56a718d144c4
permissions -rw-r--r--
rethrow fix
     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 }