COIN-OR::LEMON - Graph Library

source: glemon-0.x/mapselector.cc @ 173:8339178ae43d

Last change on this file since 173:8339178ae43d was 172:fc1e478697d3, checked in by Hegyi Péter, 18 years ago

Currently visualized map can be saved and loaded from file.

File size: 2.7 KB
Line 
1#include "mapselector.h"
2
3MapSelector::MapSelector(std::vector<std::string> ml, std::string act, std::string labeltext, bool edge, bool d):def(d),itisedge(edge),set_new_map(false)
4{
5  update_list(ml);
6
7  if(act=="")
8    {
9      cbt.set_active(0);
10      default_state=true;
11    }
12  else
13    {
14      cbt.set_active_text((Glib::ustring)act);
15      default_state=false;
16    }
17
18  //binding signal to the actual entry
19  cbt.signal_changed().connect
20    (
21     sigc::mem_fun((*this), &MapSelector::comboChanged),
22     false
23     );
24 
25  label=new Gtk::Label(labeltext);
26
27  label->set_width_chars(longest_property_string_length);
28
29  defbut=NULL;
30  if(def)
31    {
32      defbut=new Gtk::Button();
33      defbut->set_label("Reset");
34     
35      defbut->signal_pressed().connect
36        (
37         sigc::mem_fun(*this, &MapSelector::reset)
38         );
39    }
40
41  newbut=new Gtk::Button(Gtk::Stock::NEW);
42
43  newbut->signal_pressed().connect
44    (
45     sigc::mem_fun(*this, &MapSelector::new_but_pressed)
46     );
47
48  add(*label);
49
50  add(cbt);
51
52  if(def)
53    {
54      add(*defbut);
55    }
56
57  add(*newbut);
58}
59
60void MapSelector::new_but_pressed()
61{
62  set_new_map=true;
63  signal_newmapwin.emit(itisedge);
64}
65
66void MapSelector::update_list( std::vector< std::string > ml )
67{
68  int prev_act=cbt.get_active_row_number();
69  cbt.clear();
70  cbt_content.clear();
71  std::vector< std::string >::iterator emsi=ml.begin();
72  for(;emsi!=ml.end();emsi++)
73    {
74      cbt.append_text(*emsi);
75      cbt_content.push_back(*emsi);
76    }
77  if(def)
78    {
79      cbt.prepend_text("Default values");
80      cbt_content.push_back("Default values");
81    }
82  if(prev_act!=-1)
83    {
84      cbt.set_active(prev_act);
85    }
86}
87
88void MapSelector::comboChanged()
89{
90  if(cbt.get_active_row_number()!=0 || !def)
91    {
92      default_state=false;
93      Glib::ustring mapname = cbt.get_active_text();
94      if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
95        {
96          signal_cbt.emit(mapname);
97        }
98    }
99  else if((!default_state)&&(cbt.get_active_row_number()==0))
100    {
101      reset();
102    }
103}
104
105void MapSelector::reset()
106{
107  default_state=true;
108
109  cbt.set_active(0);
110
111  signal_cbt.emit("");
112}
113
114
115Glib::ustring MapSelector::get_active_text()
116{
117  return cbt.get_active_text();
118}
119
120void MapSelector::set_active_text(Glib::ustring text)
121{
122  if(text.compare(""))
123    {
124      cbt.set_active_text(text);
125    }
126  else
127    {
128      cbt.set_active_text("Default values");
129    }
130}
131
132void MapSelector::append_text(Glib::ustring text)
133{
134  cbt.append_text(text);
135  cbt_content.push_back(text);
136
137  if(set_new_map)
138    {
139      set_active_text(text);
140      set_new_map=false;
141    }
142}
143
144sigc::signal<void, std::string> MapSelector::signal_cbt_ch()
145{
146  return signal_cbt;
147}
148
149sigc::signal<void, bool> MapSelector::signal_newmapwin_needed()
150{
151  return signal_newmapwin;
152}
Note: See TracBrowser for help on using the repository browser.