diff -r c7ae8642a8d8 -r 879e47e5b731 mapselector.cc --- a/mapselector.cc Wed May 02 20:33:58 2007 +0000 +++ b/mapselector.cc Wed Jan 02 21:03:09 2008 +0000 @@ -18,61 +18,63 @@ #include -MapSelector::MapSelector(std::vector ml, std::string act, std::string labeltext, bool edge, bool d):def(d),itisedge(edge),set_new_map(false) +MapSelector::MapSelector(std::vector n_ml, + std::vector s_ml, std::string act, + std::string labeltext, bool edge, bool d, MapType type) : + def(d), + itisedge(edge), + set_new_map(false), + label(labeltext), + map_type(type), + newbut(Gtk::Stock::NEW) { - update_list(ml); + update_list(n_ml, s_ml); if(act=="") - { - cbt.set_active(0); - default_state=true; - } + { + cbt.set_active(0); + default_state=true; + } else - { - cbt.set_active_text((Glib::ustring)act); - default_state=false; - } + { + cbt.set_active_text((Glib::ustring)act); + default_state=false; + } //binding signal to the actual entry cbt.signal_changed().connect ( sigc::mem_fun((*this), &MapSelector::comboChanged), false - ); - - label=new Gtk::Label(labeltext); + ); - label->set_width_chars(longest_property_string_length); + label.set_width_chars(longest_property_string_length); - defbut=NULL; if(def) - { - defbut=new Gtk::Button(); - defbut->set_label("Reset"); - - defbut->signal_pressed().connect - ( - sigc::mem_fun(*this, &MapSelector::reset) - ); - } + { + defbut.set_label("Reset"); + defbut.signal_pressed().connect + ( + sigc::mem_fun(*this, &MapSelector::reset) + ); + } - newbut=new Gtk::Button(Gtk::Stock::NEW); - newbut->signal_pressed().connect + newbut.signal_pressed().connect ( sigc::mem_fun(*this, &MapSelector::new_but_pressed) - ); + ); - add(*label); + add(label); add(cbt); if(def) - { - add(*defbut); - } + { + add(defbut); + } - add(*newbut); + add(newbut); } void MapSelector::new_but_pressed() @@ -81,17 +83,31 @@ signal_newmapwin.emit(itisedge); } -void MapSelector::update_list( std::vector< std::string > ml ) +void MapSelector::update_list(std::vector n_ml, + std::vector s_ml) { int prev_act=cbt.get_active_row_number(); cbt.clear(); cbt_content.clear(); - std::vector< std::string >::iterator emsi=ml.begin(); - for(;emsi!=ml.end();emsi++) + + if (map_type & NUM) + { + std::vector< std::string >::iterator emsi=n_ml.begin(); + for(;emsi!=n_ml.end();emsi++) { cbt.append_text(*emsi); cbt_content.push_back(*emsi); } + } + if (map_type & STR) + { + std::vector< std::string >::iterator emsi=s_ml.begin(); + for(;emsi!=s_ml.end();emsi++) + { + cbt.append_text(*emsi); + cbt_content.push_back(*emsi); + } + } if(def) { cbt.prepend_text("Default values"); @@ -147,16 +163,19 @@ } } -void MapSelector::append_text(Glib::ustring text) +void MapSelector::append_text(Glib::ustring text, MapValue::Type type) { - cbt.append_text(text); - cbt_content.push_back(text); + if (type & map_type) + { + cbt.append_text(text); + cbt_content.push_back(text); - if(set_new_map) + if(set_new_map) { set_active_text(text); set_new_map=false; } + } } sigc::signal MapSelector::signal_cbt_ch()