COIN-OR::LEMON - Graph Library

source: glemon-0.x/mw-mapselector.cc @ 99:2842e7d8f9a2

gui
Last change on this file since 99:2842e7d8f9a2 was 95:628c0b383d2f, checked in by Hegyi Péter, 19 years ago

MapWin? is created and disposed from now instead of being show and hide.

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