1.1 --- a/graph_displayer_canvas-event.cc Mon Sep 18 16:02:20 2006 +0000
1.2 +++ b/graph_displayer_canvas-event.cc Tue Sep 19 07:43:55 2006 +0000
1.3 @@ -27,9 +27,7 @@
1.4 createEdgeEventHandler(generated);
1.5 break;
1.6 }
1.7 - case EDGE_MAP_EDIT:
1.8 - //has to do the same thing as in the case of NODE_MAP_EDIT
1.9 - case NODE_MAP_EDIT:
1.10 + case MAP_EDIT:
1.11 {
1.12 break;
1.13 }
1.14 @@ -63,13 +61,9 @@
1.15 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
1.16 break;
1.17
1.18 - case EDGE_MAP_EDIT:
1.19 + case MAP_EDIT:
1.20 grab_focus();
1.21 - actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false);
1.22 - break;
1.23 -
1.24 - case NODE_MAP_EDIT:
1.25 - actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false);
1.26 + actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::mapEditEventHandler), false);
1.27 break;
1.28
1.29 default:
1.30 @@ -622,179 +616,163 @@
1.31 return false;
1.32 }
1.33
1.34 -bool GraphDisplayerCanvas::edgeMapEditEventHandler(GdkEvent* e)
1.35 +bool GraphDisplayerCanvas::mapEditEventHandler(GdkEvent* e)
1.36 {
1.37 - if(actual_tool==EDGE_MAP_EDIT)
1.38 - {
1.39 - switch(e->type)
1.40 + if(actual_tool==MAP_EDIT)
1.41 {
1.42 - case GDK_BUTTON_PRESS:
1.43 - {
1.44 - //for determine, whether it was an edge
1.45 - Edge clicked_edge=INVALID;
1.46 + switch(e->type)
1.47 + {
1.48 + case GDK_BUTTON_PRESS:
1.49 + {
1.50 + //for determine, whether it was an edge
1.51 + Edge clicked_edge=INVALID;
1.52 + //for determine, whether it was a node
1.53 + Node clicked_node=INVALID;
1.54
1.55 - window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
1.56 - active_item=(get_item_at(clicked_x, clicked_y));
1.57 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
1.58 + active_item=(get_item_at(clicked_x, clicked_y));
1.59
1.60 - //find the activated item between texts
1.61 - for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.62 - {
1.63 - //at the same time only one can be active
1.64 - if(edgetextmap[i]==active_item)
1.65 - {
1.66 - clicked_edge=i;
1.67 - }
1.68 - }
1.69 + //find the activated item between text of nodes
1.70 + for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.71 + {
1.72 + //at the same time only one can be active
1.73 + if(nodetextmap[i]==active_item)
1.74 + {
1.75 + clicked_node=i;
1.76 + }
1.77 + }
1.78
1.79 - //if it was not between texts, search for it between edges
1.80 - if(clicked_edge==INVALID)
1.81 - {
1.82 - for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.83 - {
1.84 - //at the same time only one can be active
1.85 - if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item))
1.86 - {
1.87 - clicked_edge=i;
1.88 - }
1.89 - }
1.90 - }
1.91 -
1.92 - //if it was really an edge...
1.93 - if(clicked_edge!=INVALID)
1.94 - {
1.95 - // the id map is not editable
1.96 - if (edgemap_to_edit == "label") return 0;
1.97 + //if there was not, search for it between nodes
1.98 + if(clicked_node==INVALID)
1.99 + {
1.100 + for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.101 + {
1.102 + //at the same time only one can be active
1.103 + if(nodesmap[i]==active_item)
1.104 + {
1.105 + clicked_node=i;
1.106 + }
1.107 + }
1.108 + }
1.109
1.110 - //and there is activated map
1.111 - if(edgetextmap[clicked_edge]->property_text().get_value()!="")
1.112 - {
1.113 - //activate the general variable for it
1.114 - active_edge=clicked_edge;
1.115 + if(clicked_node==INVALID)
1.116 + {
1.117 + //find the activated item between texts
1.118 + for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.119 + {
1.120 + //at the same time only one can be active
1.121 + if(edgetextmap[i]==active_item)
1.122 + {
1.123 + clicked_edge=i;
1.124 + }
1.125 + }
1.126
1.127 - //create a dialog
1.128 - Gtk::Dialog dialog("Edit value", true);
1.129 - dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
1.130 - dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
1.131 - Gtk::VBox* vbox = dialog.get_vbox();
1.132 - Gtk::SpinButton spin(0.0, 4);
1.133 - spin.set_increments(1.0, 10.0);
1.134 - spin.set_range(-1000000.0, 1000000.0);
1.135 - spin.set_numeric(true);
1.136 - vbox->add(spin);
1.137 - spin.show();
1.138 - switch (dialog.run())
1.139 - {
1.140 - case Gtk::RESPONSE_NONE:
1.141 - case Gtk::RESPONSE_CANCEL:
1.142 - break;
1.143 - case Gtk::RESPONSE_ACCEPT:
1.144 - double new_value = spin.get_value();
1.145 - (*(mytab.mapstorage).edgemap_storage[edgemap_to_edit])[active_edge] =
1.146 - new_value;
1.147 - std::ostringstream ostr;
1.148 - ostr << new_value;
1.149 - edgetextmap[active_edge]->property_text().set_value(
1.150 - ostr.str());
1.151 - //mapwin.updateEdge(active_edge);
1.152 -// mapwin.updateEdge(Edge(INVALID));
1.153 - propertyUpdate(Edge(INVALID));
1.154 - }
1.155 - }
1.156 - }
1.157 - break;
1.158 - }
1.159 - default:
1.160 - break;
1.161 + //if it was not between texts, search for it between edges
1.162 + if(clicked_edge==INVALID)
1.163 + {
1.164 + for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.165 + {
1.166 + //at the same time only one can be active
1.167 + if((edgesmap[i]->getLine())==active_item)
1.168 + {
1.169 + clicked_edge=i;
1.170 + }
1.171 + }
1.172 + }
1.173 + }
1.174 +
1.175 + //if it was really a node...
1.176 + if(clicked_node!=INVALID)
1.177 + {
1.178 + // the id map is not editable
1.179 + if (nodemap_to_edit == "label") return 0;
1.180 +
1.181 + //and there is activated map
1.182 + if(nodetextmap[clicked_node]->property_text().get_value()!="")
1.183 + {
1.184 + //activate the general variable for it
1.185 + active_node=clicked_node;
1.186 +
1.187 + //create a dialog
1.188 + Gtk::Dialog dialog("Edit value", true);
1.189 + dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
1.190 + dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
1.191 + Gtk::VBox* vbox = dialog.get_vbox();
1.192 + Gtk::SpinButton spin(0.0, 4);
1.193 + spin.set_increments(1.0, 10.0);
1.194 + spin.set_range(-1000000.0, 1000000.0);
1.195 + spin.set_numeric(true);
1.196 + spin.set_value(atof(nodetextmap[active_node]->property_text().get_value().c_str()));
1.197 + vbox->add(spin);
1.198 + spin.show();
1.199 + switch (dialog.run())
1.200 + {
1.201 + case Gtk::RESPONSE_NONE:
1.202 + case Gtk::RESPONSE_CANCEL:
1.203 + break;
1.204 + case Gtk::RESPONSE_ACCEPT:
1.205 + double new_value = spin.get_value();
1.206 + (*(mytab.mapstorage).nodemap_storage[nodemap_to_edit])[active_node] =
1.207 + new_value;
1.208 + std::ostringstream ostr;
1.209 + ostr << new_value;
1.210 + nodetextmap[active_node]->property_text().set_value(ostr.str());
1.211 + //mapwin.updateNode(active_node);
1.212 + //mapwin.updateNode(Node(INVALID));
1.213 + propertyUpdate(Node(INVALID));
1.214 + }
1.215 + }
1.216 + }
1.217 + else
1.218 + //if it was really an edge...
1.219 + if(clicked_edge!=INVALID)
1.220 + {
1.221 + // the id map is not editable
1.222 + if (edgemap_to_edit == "label") return 0;
1.223 +
1.224 + //and there is activated map
1.225 + if(edgetextmap[clicked_edge]->property_text().get_value()!="")
1.226 + {
1.227 + //activate the general variable for it
1.228 + active_edge=clicked_edge;
1.229 +
1.230 + //create a dialog
1.231 + Gtk::Dialog dialog("Edit value", true);
1.232 + dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
1.233 + dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
1.234 + Gtk::VBox* vbox = dialog.get_vbox();
1.235 + Gtk::SpinButton spin(0.0, 4);
1.236 + spin.set_increments(1.0, 10.0);
1.237 + spin.set_range(-1000000.0, 1000000.0);
1.238 + spin.set_numeric(true);
1.239 + spin.set_value(atof(edgetextmap[active_edge]->property_text().get_value().c_str()));
1.240 + vbox->add(spin);
1.241 + spin.show();
1.242 + switch (dialog.run())
1.243 + {
1.244 + case Gtk::RESPONSE_NONE:
1.245 + case Gtk::RESPONSE_CANCEL:
1.246 + break;
1.247 + case Gtk::RESPONSE_ACCEPT:
1.248 + double new_value = spin.get_value();
1.249 + (*(mytab.mapstorage).edgemap_storage[edgemap_to_edit])[active_edge] =
1.250 + new_value;
1.251 + std::ostringstream ostr;
1.252 + ostr << new_value;
1.253 + edgetextmap[active_edge]->property_text().set_value(
1.254 + ostr.str());
1.255 + //mapwin.updateEdge(active_edge);
1.256 + // mapwin.updateEdge(Edge(INVALID));
1.257 + propertyUpdate(Edge(INVALID));
1.258 + }
1.259 + }
1.260 + }
1.261 + break;
1.262 + }
1.263 + default:
1.264 + break;
1.265 + }
1.266 }
1.267 - }
1.268 - return false;
1.269 -}
1.270 -
1.271 -bool GraphDisplayerCanvas::nodeMapEditEventHandler(GdkEvent* e)
1.272 -{
1.273 - if(actual_tool==NODE_MAP_EDIT)
1.274 - {
1.275 - switch(e->type)
1.276 - {
1.277 - case GDK_BUTTON_PRESS:
1.278 - {
1.279 - //for determine, whether it was a node
1.280 - Node clicked_node=INVALID;
1.281 -
1.282 - window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
1.283 - active_item=(get_item_at(clicked_x, clicked_y));
1.284 -
1.285 - //find the activated item between texts
1.286 - for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.287 - {
1.288 - //at the same time only one can be active
1.289 - if(nodetextmap[i]==active_item)
1.290 - {
1.291 - clicked_node=i;
1.292 - }
1.293 - }
1.294 -
1.295 - //if there was not, search for it between nodes
1.296 - if(clicked_node==INVALID)
1.297 - {
1.298 - for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
1.299 - {
1.300 - //at the same time only one can be active
1.301 - if(nodesmap[i]==active_item)
1.302 - {
1.303 - clicked_node=i;
1.304 - }
1.305 - }
1.306 - }
1.307 -
1.308 - //if it was really a node...
1.309 - if(clicked_node!=INVALID)
1.310 - {
1.311 - // the id map is not editable
1.312 - if (nodemap_to_edit == "label") return 0;
1.313 -
1.314 - //and there is activated map
1.315 - if(nodetextmap[clicked_node]->property_text().get_value()!="")
1.316 - {
1.317 - //activate the general variable for it
1.318 - active_node=clicked_node;
1.319 -
1.320 - //create a dialog
1.321 - Gtk::Dialog dialog("Edit value", true);
1.322 - dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
1.323 - dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
1.324 - Gtk::VBox* vbox = dialog.get_vbox();
1.325 - Gtk::SpinButton spin(0.0, 4);
1.326 - spin.set_increments(1.0, 10.0);
1.327 - spin.set_range(-1000000.0, 1000000.0);
1.328 - spin.set_numeric(true);
1.329 - vbox->add(spin);
1.330 - spin.show();
1.331 - switch (dialog.run())
1.332 - {
1.333 - case Gtk::RESPONSE_NONE:
1.334 - case Gtk::RESPONSE_CANCEL:
1.335 - break;
1.336 - case Gtk::RESPONSE_ACCEPT:
1.337 - double new_value = spin.get_value();
1.338 - (*(mytab.mapstorage).nodemap_storage[nodemap_to_edit])[active_node] =
1.339 - new_value;
1.340 - std::ostringstream ostr;
1.341 - ostr << new_value;
1.342 - nodetextmap[active_node]->property_text().set_value(
1.343 - ostr.str());
1.344 - //mapwin.updateNode(active_node);
1.345 -// mapwin.updateNode(Node(INVALID));
1.346 - propertyUpdate(Node(INVALID));
1.347 - }
1.348 - }
1.349 - }
1.350 - break;
1.351 - }
1.352 - default:
1.353 - break;
1.354 - }
1.355 - }
1.356 return false;
1.357 }
1.358