The graph adadptors can be alteration observed.
In most cases it uses the adapted graph alteration notifiers.
Only special case is now the UndirGraphAdaptor, where
we have to proxy the signals from the graph.
The SubBidirGraphAdaptor is removed, because it doest not
gives more feature than the EdgeSubGraphAdaptor<UndirGraphAdaptor<Graph>>.
The ResGraphAdaptor is based on this composition.
8 #include <all_include.h>
10 #include <libgnomecanvasmm.h>
11 #include <libgnomecanvasmm/polygon.h>
13 ///A widget by which node and edgemaps can be selected, deselected and created.
15 ///During the usage of \ref glemon we have to select
16 ///maps several times. We also need some aid-function
17 ///like new map creation and deselecting previously
18 ///selected map. Instead of writing a the mapselection
19 ///at all occurences we can use this widget by connecting
20 ///its signals to the correct place.
21 class MapSelector : public Gtk::HBox
24 ///This signal indicates that the selection has been changed by user.
25 sigc::signal<void, std::string> signal_cbt;
27 ///Signal that indicates that user wants to create a new map.
28 sigc::signal<void, bool> signal_newmapwin;
30 ///If this is true, beyond the mapnames a 'Default' selection is available as well.
32 ///For example \ref MapWin needs 'Default' option as well. In this case no map
33 ///will be visualized by the appropriate property.
34 ///But \ref AlgoWin do not need 'Default' option, because if no map is selected,
35 ///no algorithm can be run.
36 ///Its value is got and set in contructor.
39 ///Are the names of edgemaps or nodemaps stored here.
42 ///Shows whether 'Default' option is selected or not.
45 ///It is true when the new button had been pressed but the new map has not been registrated yet.
47 ///Before signal of \ref NewMapWin request is emitted by the \ref MapSelector
48 ///this variable is set to true. When the new map
49 ///is done, it will be registrated in all existing \ref MapSelector
50 ///by \ref append_text function. That function checks
51 ///whether this variable is true. If it is true that means
52 ///that this \ref MapSelector has requested \ref NewMapWin.
53 ///Therefore it set itself to the recently created map.
54 ///After that \ref set_new_map is set again false, not to
55 ///set maps active if \ref MapSelector piece is not the requester.
58 ///The widget that holds the names of maps.
60 ///It can be rolled down
61 ///Names in it are selectable.
62 Gtk::ComboBoxText cbt;
67 ///\ref NewMapWin wilol pop-up
72 ///If pressed \ref cbt will
73 ///set to 'Default' option.
75 ///It is visible only if \ref def is true.
78 ///Container in which GUI elements are packed.
81 ///Shows purpose of \ref MapSelector piece.
86 ///Constructor of \ref MapSelector
88 ///Creates the layout and binds signal to the correct place.
89 ///\param optionlist list of names to place in \ref cbt
90 ///\param act preselected option
91 ///\param purpose text of label indicating purpose of \ref MapStorage
92 ///\param itisedge do \ref MapSelector contains edgemap names or nodemapnames.
93 ///\param def do we need 'Default' option. See \ref def.
94 MapSelector(std::vector<std::string> optionlist, std::string act, std::string purpose, bool itisedge, bool def=true);
96 ///Returns signal emitted if the user has changed the selection. (\ref signal_cbt)
97 sigc::signal<void, std::string> signal_cbt_ch();
99 ///Returns signal emitted if the user has pressed New button (\ref newbut) (\ref signal_newmapwin)
100 sigc::signal<void, bool> signal_newmapwin_needed();
102 ///Maintain \ref cbt.
104 ///Fills in \ref cbt with names, taking
105 ///into account that the previously selected option
106 ///has to be set back after the operation.
107 void update_list( std::vector<std::string> );
109 ///Handles changement in \ref cbt.
111 ///In default case it emits a signal with the selected option.
112 ///But if 'Default' option is selected, it resets the \ref MapSelector
113 virtual void comboChanged();
115 ///Requests a \ref NewMapWin
117 ///See \ref set_new_map.
118 ///First it sets \ref set_new_map true to be identified
119 ///at registration of new map that
120 ///it has sent the \ref signal_newmapwin, therefore it
121 ///has to set \ref cbt to that option.
122 virtual void new_but_pressed();
124 ///If called, 'Default' option is selected, that means unselection of any maps.
126 ///Practically this means that if this is called,
127 ///properties of graph will set to default state.
128 ///The function achieves this by emitting appropriately
129 ///parametrized signal_cbt.
130 virtual void reset();
132 ///Returns the currently selected option.
133 Glib::ustring get_active_text();
135 ///Sets the parameter active in \ref cbt.
137 ///\param new_value the
138 ///new value to be set in \ref cbt.
139 void set_active_text(Glib::ustring new_value);
141 ///Sets the parameter active in \ref cbt.
143 ///index of row to be set in \ref cbt.
144 void set_active(int index){cbt.set_active(index);};
146 ///Clear all options from \ref cbt.
147 void clear(){cbt.clear();};
149 ///Appends a new option to the existing ones in \ref cbt.
151 ///If \ref set_new_map is true, the
152 ///\ref MapSelector has requested the opened \ref NewMapWin,
153 ///from that the option to append is coming. In this case
154 ///this function will set \ref cbt to the new option.
155 ///\param new_option new option to append
156 void append_text(Glib::ustring new_option);
158 #endif //MAPSELECTOR_H