mapselector.cc
changeset 201 879e47e5b731
parent 194 6b2b718420eb
     1.1 --- a/mapselector.cc	Wed May 02 20:33:58 2007 +0000
     1.2 +++ b/mapselector.cc	Wed Jan 02 21:03:09 2008 +0000
     1.3 @@ -18,61 +18,63 @@
     1.4  
     1.5  #include <mapselector.h>
     1.6  
     1.7 -MapSelector::MapSelector(std::vector<std::string> ml, std::string act, std::string labeltext, bool edge, bool d):def(d),itisedge(edge),set_new_map(false)
     1.8 +MapSelector::MapSelector(std::vector<std::string> n_ml,
     1.9 +    std::vector<std::string> s_ml, std::string act,
    1.10 +    std::string labeltext, bool edge, bool d, MapType type) :
    1.11 +  def(d),
    1.12 +  itisedge(edge),
    1.13 +  set_new_map(false),
    1.14 +  label(labeltext),
    1.15 +  map_type(type),
    1.16 +  newbut(Gtk::Stock::NEW)
    1.17  {
    1.18 -  update_list(ml);
    1.19 +  update_list(n_ml, s_ml);
    1.20  
    1.21    if(act=="")
    1.22 -    {
    1.23 -      cbt.set_active(0);
    1.24 -      default_state=true;
    1.25 -    }
    1.26 +  {
    1.27 +    cbt.set_active(0);
    1.28 +    default_state=true;
    1.29 +  }
    1.30    else
    1.31 -    {
    1.32 -      cbt.set_active_text((Glib::ustring)act);
    1.33 -      default_state=false;
    1.34 -    }
    1.35 +  {
    1.36 +    cbt.set_active_text((Glib::ustring)act);
    1.37 +    default_state=false;
    1.38 +  }
    1.39  
    1.40    //binding signal to the actual entry
    1.41    cbt.signal_changed().connect
    1.42      (
    1.43       sigc::mem_fun((*this), &MapSelector::comboChanged),
    1.44       false
    1.45 -     );
    1.46 -  
    1.47 -  label=new Gtk::Label(labeltext);
    1.48 +    );
    1.49  
    1.50 -  label->set_width_chars(longest_property_string_length);
    1.51 +  label.set_width_chars(longest_property_string_length);
    1.52  
    1.53 -  defbut=NULL;
    1.54    if(def)
    1.55 -    {
    1.56 -      defbut=new Gtk::Button();
    1.57 -      defbut->set_label("Reset");
    1.58 -      
    1.59 -      defbut->signal_pressed().connect
    1.60 -	(
    1.61 -	 sigc::mem_fun(*this, &MapSelector::reset)
    1.62 -	 );
    1.63 -    }
    1.64 +  {
    1.65 +    defbut.set_label("Reset");
    1.66 +    defbut.signal_pressed().connect
    1.67 +      (
    1.68 +       sigc::mem_fun(*this, &MapSelector::reset)
    1.69 +      );
    1.70 +  }
    1.71  
    1.72 -  newbut=new Gtk::Button(Gtk::Stock::NEW);
    1.73  
    1.74 -  newbut->signal_pressed().connect
    1.75 +  newbut.signal_pressed().connect
    1.76      (
    1.77       sigc::mem_fun(*this, &MapSelector::new_but_pressed)
    1.78 -     );
    1.79 +    );
    1.80  
    1.81 -  add(*label);
    1.82 +  add(label);
    1.83  
    1.84    add(cbt);
    1.85  
    1.86    if(def)
    1.87 -    {
    1.88 -      add(*defbut);
    1.89 -    }
    1.90 +  {
    1.91 +    add(defbut);
    1.92 +  }
    1.93  
    1.94 -  add(*newbut);
    1.95 +  add(newbut);
    1.96  }
    1.97  
    1.98  void MapSelector::new_but_pressed()
    1.99 @@ -81,17 +83,31 @@
   1.100    signal_newmapwin.emit(itisedge);
   1.101  }
   1.102  
   1.103 -void MapSelector::update_list( std::vector< std::string > ml )
   1.104 +void MapSelector::update_list(std::vector<std::string> n_ml,
   1.105 +    std::vector<std::string> s_ml)
   1.106  {
   1.107    int prev_act=cbt.get_active_row_number();
   1.108    cbt.clear();
   1.109    cbt_content.clear();
   1.110 -  std::vector< std::string >::iterator emsi=ml.begin();
   1.111 -  for(;emsi!=ml.end();emsi++)
   1.112 +
   1.113 +  if (map_type & NUM)
   1.114 +  {
   1.115 +    std::vector< std::string >::iterator emsi=n_ml.begin();
   1.116 +    for(;emsi!=n_ml.end();emsi++)
   1.117      {
   1.118        cbt.append_text(*emsi);
   1.119        cbt_content.push_back(*emsi);
   1.120      }
   1.121 +  }
   1.122 +  if (map_type & STR)
   1.123 +  {
   1.124 +    std::vector< std::string >::iterator emsi=s_ml.begin();
   1.125 +    for(;emsi!=s_ml.end();emsi++)
   1.126 +    {
   1.127 +      cbt.append_text(*emsi);
   1.128 +      cbt_content.push_back(*emsi);
   1.129 +    }
   1.130 +  }
   1.131    if(def)
   1.132      {
   1.133        cbt.prepend_text("Default values");
   1.134 @@ -147,16 +163,19 @@
   1.135      }
   1.136  }
   1.137  
   1.138 -void MapSelector::append_text(Glib::ustring text)
   1.139 +void MapSelector::append_text(Glib::ustring text, MapValue::Type type)
   1.140  {
   1.141 -  cbt.append_text(text);
   1.142 -  cbt_content.push_back(text);
   1.143 +  if (type & map_type)
   1.144 +  {
   1.145 +    cbt.append_text(text);
   1.146 +    cbt_content.push_back(text);
   1.147  
   1.148 -  if(set_new_map)
   1.149 +    if(set_new_map)
   1.150      {
   1.151        set_active_text(text);
   1.152        set_new_map=false;
   1.153      }
   1.154 +  }
   1.155  }
   1.156  
   1.157  sigc::signal<void, std::string> MapSelector::signal_cbt_ch()