COIN-OR::LEMON - Graph Library

Changeset 81:5ad61c33487c in glemon-0.x for map_win.cc


Ignore:
Timestamp:
10/20/05 17:50:23 (19 years ago)
Author:
Hegyi Péter
Branch:
gui
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk/gui@2258
Message:

Mapselector widget reached its first release, but there are still work to do on it, I know...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • map_win.cc

    r66 r81  
    1818  signal_key_press_event().connect(sigc::mem_fun(*this, &MapWin::closeIfEscapeIsPressed));
    1919
    20   e_combo_array=new Gtk::Combo [EDGE_PROPERTY_NUM];
     20  e_combo_array=new MapSelector * [EDGE_PROPERTY_NUM];
    2121
    22   table=new Gtk::Table(EDGE_PROPERTY_NUM, 2, false);
     22  table=new Gtk::Table(EDGE_PROPERTY_NUM, 1, false);
    2323
    2424  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    2525  {
    26     //filling in combo box with choices
    27     std::list<Glib::ustring> listStrings;
     26    e_combo_array[i]=new MapSelector(gdc, ms, *this, i, true);
    2827
    29     listStrings.push_back("Default");
    30 
    31     std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
    32     for(;emsi!=ms.endOfEdgeMaps();emsi++)
    33     {
    34         listStrings.push_back(emsi->first);
    35     }
    36 
    37     e_combo_array[i].set_popdown_strings(listStrings);
    38 
    39     //Restrict it to these choices only:
    40     e_combo_array[i].set_value_in_list();
    41 
    42     //binding signal to the actual entry
    43     e_combo_array[i].get_entry()->signal_changed().connect
    44     (
    45      sigc::bind
    46      (
    47       sigc::mem_fun(*this, &MapWin::eComboChanged),
    48       i
    49      )
    50     );
    51 
    52     //placing actual entry in the right place
    53 
    54     label=new Gtk::Label;
    55     label->set_text(edge_property_strings[i]);
    56        
    57     (*table).attach(*label,0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    58     (*table).attach(e_combo_array[i],1,2,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    59 
    60 
     28    (*table).attach((*(e_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    6129  }
    6230
     
    6735  vbox.pack_start(*(new Gtk::HSeparator));
    6836
    69   n_combo_array=new Gtk::Combo [NODE_PROPERTY_NUM];
     37  n_combo_array=new MapSelector * [NODE_PROPERTY_NUM];
    7038
    71   table=new Gtk::Table(NODE_PROPERTY_NUM, 2, false);
     39  table=new Gtk::Table(NODE_PROPERTY_NUM, 1, false);
    7240
    7341  for(int i=0;i<NODE_PROPERTY_NUM;i++)
    7442  {
    75     //filling in combo box with choices
    76     std::list<Glib::ustring> listStrings;
     43    n_combo_array[i]=new MapSelector(gdc, ms, *this, i, false);
    7744
    78     listStrings.push_back("Default");
    79 
    80     std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
    81 
    82     for(;emsi!=ms.endOfNodeMaps();emsi++)
    83     {
    84       if ((emsi->first != "coordinates_x") && (emsi->first != "coordinates_y"))
    85       {
    86         listStrings.push_back(emsi->first);
    87       }
    88     }
    89 
    90     n_combo_array[i].set_popdown_strings(listStrings);
    91 
    92     //Restrict it to these choices only:
    93     n_combo_array[i].set_value_in_list();
    94 
    95     //binding signal to thew actual entry
    96     n_combo_array[i].get_entry()->signal_changed().connect
    97     (
    98      sigc::bind
    99      (
    100       sigc::mem_fun(*this, &MapWin::nComboChanged),
    101       i
    102      )
    103     );
    104 
    105     //placing actual entry in the right place
    106 
    107     label=new Gtk::Label;
    108     label->set_text(node_property_strings[i]);
    109        
    110     (*table).attach(*label,0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    111     (*table).attach(n_combo_array[i],1,2,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    112 
    113 
     45    (*table).attach((*(n_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
    11446  }
    11547
     
    12860  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    12961  {
    130     //filling in combo box with choices
    131     std::list<Glib::ustring> listStrings;
     62    e_combo_array[i]->update_list();
     63  }
    13264
    133     listStrings.push_back("Default");
    134 
    135     std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
    136     for(;emsi!=ms.endOfEdgeMaps();emsi++)
    137     {
    138       listStrings.push_back(emsi->first);
    139     }
    140 
    141     e_combo_array[i].set_popdown_strings(listStrings);
    142   }
    14365  for(int i=0;i<NODE_PROPERTY_NUM;i++)
    14466  {
    145     //filling in combo box with choices
    146     std::list<Glib::ustring> listStrings;
    147 
    148     listStrings.push_back("Default");
    149 
    150     std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
    151 
    152     for(;emsi!=ms.endOfNodeMaps();emsi++)
    153     {
    154       if ((emsi->first != "coordinates_x") && (emsi->first != "coordinates_y"))
    155       {
    156         listStrings.push_back(emsi->first);
    157       }
    158     }
    159 
    160     n_combo_array[i].set_popdown_strings(listStrings);
     67    n_combo_array[i]->update_list();
    16168  }
    16269}
    16370
    164 void MapWin::eComboChanged(int prop)
    165 {
    166 
    167   Gtk::Entry* entry = e_combo_array[prop].get_entry();
    168 
    169   if(entry)
    170   {
    171     Glib::ustring mapname = entry->get_text();
    172     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
    173     {
    174       if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
    175       {
    176         switch(prop)
    177         {
    178           case E_WIDTH:
    179             gdc.changeEdgeWidth(mapname);
    180             break;
    181           case E_COLOR:
    182             gdc.changeEdgeColor(mapname);
    183             break;
    184           case E_TEXT:
    185             gdc.changeEdgeText(mapname);
    186             break;
    187           default:
    188             std::cerr<<"Error\n";
    189         }
    190       }
    191     }
    192   }
    193 };
    194 
    195 void MapWin::nComboChanged(int prop)
    196 {
    197 
    198   Gtk::Entry* entry = n_combo_array[prop].get_entry();
    199 
    200   if(entry)
    201   {
    202     Glib::ustring mapname = entry->get_text();
    203     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
    204     {
    205       if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
    206       {
    207         switch(prop)
    208         {
    209           case N_RADIUS:
    210             gdc.changeNodeRadius(mapname);
    211             break;
    212           case N_COLOR:
    213             gdc.changeNodeColor(mapname);
    214             break;
    215           case N_TEXT:
    216             gdc.changeNodeText(mapname);
    217             break;
    218           default:
    219             std::cerr<<"Error\n";
    220         }
    221       }
    222     }
    223   }
    224 };
    22571
    22672void MapWin::updateNode(Node node)
     
    22874  for(int i=0;i<NODE_PROPERTY_NUM;i++)
    22975    {
    230       Gtk::Entry* entry = n_combo_array[i].get_entry();
    231 
    232       if(entry)
    233         {
    234           Glib::ustring mapname = entry->get_text();
    235           if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
    236             {
    237               if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
    238                 {
    239                   switch(i)
    240                     {
    241                     case N_RADIUS:
    242                       gdc.changeNodeRadius(mapname, node);
    243                       break;
    244                     case N_COLOR:
    245                       gdc.changeNodeColor(mapname, node);
    246                       break;
    247                     case N_TEXT:
    248                       gdc.changeNodeText(mapname, node);
    249                       break;
    250                     default:
    251                       std::cerr<<"Error\n";
    252                     }
    253                 }
    254             }
    255         }
     76      n_combo_array[i]->update(node);
    25677    }
    25778}
     
    26182  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    26283    {
    263 
    264       Gtk::Entry* entry = e_combo_array[i].get_entry();
    265 
    266       if(entry)
    267         {
    268           Glib::ustring mapname = entry->get_text();
    269           if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
    270             {
    271 
    272               if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
    273                 {
    274                   switch(i)
    275                     {
    276                     case E_WIDTH:
    277                       gdc.changeEdgeWidth(mapname, edge);
    278                       break;
    279                     case E_COLOR:
    280                       gdc.changeEdgeColor(mapname, edge);
    281                       break;
    282                     case E_TEXT:
    283                       gdc.changeEdgeText(mapname, edge);
    284                       break;
    285                     default:
    286                       std::cerr<<"Error\n";
    287                     }
    288                 }
    289             }
    290         }
     84      e_combo_array[i]->update(edge);
    29185    }
    29286}
     
    29791  {
    29892    //filling in combo box with choices
    299     std::list<Glib::ustring> listStrings=e_combo_array[i].get_popdown_strings();
    300     listStrings.push_back(newmapname);
    301     e_combo_array[i].set_popdown_strings(listStrings);
     93    e_combo_array[i]->append_text((Glib::ustring)newmapname);
    30294  }
    30395  //setting text property for the new map
    304   Gtk::Entry* entry = e_combo_array[E_TEXT].get_entry();
    305   entry->set_text((Glib::ustring)newmapname);
     96  e_combo_array[N_TEXT]->set_active_text((Glib::ustring)newmapname);
    30697}
    30798
     
    311102  {
    312103    //filling in combo box with choices
    313     std::list<Glib::ustring> listStrings=n_combo_array[i].get_popdown_strings();
    314     listStrings.push_back(newmapname);
    315     n_combo_array[i].set_popdown_strings(listStrings);
     104    e_combo_array[i]->append_text((Glib::ustring)newmapname);
    316105  }
    317106  //setting text property for the new map
    318   Gtk::Entry* entry = n_combo_array[N_TEXT].get_entry();
    319   entry->set_text((Glib::ustring)newmapname);
     107  n_combo_array[N_TEXT]->set_active_text((Glib::ustring)newmapname);
    320108}
Note: See TracChangeset for help on using the changeset viewer.