1.1 --- a/gdc-broken_edge.cc Thu Sep 21 10:29:29 2006 +0000
1.2 +++ b/gdc-broken_edge.cc Mon Sep 25 07:54:00 2006 +0000
1.3 @@ -155,10 +155,12 @@
1.4
1.5 GraphDisplayerCanvas::LoopEdge::LoopEdge(Gnome::Canvas::Group& _group,
1.6 Edge _edge, GraphDisplayerCanvas& _canvas) :
1.7 - EdgeBase(_group, _edge, _canvas), line(*this)
1.8 + EdgeBase(_group, _edge, _canvas), line(*this), isbutton(false)
1.9 {
1.10 - line.property_fill_color().set_value("green");
1.11 - line.property_width_units().set_value(10);
1.12 + arrow.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::LoopEdge::edgeFormerEventHandler));
1.13 +
1.14 + line.property_outline_color().set_value("green");
1.15 + line.property_width_units().set_value(10);
1.16 line.lower_to_bottom();
1.17
1.18 draw();
1.19 @@ -199,5 +201,36 @@
1.20
1.21 void GraphDisplayerCanvas::LoopEdge::setFillColor(Gdk::Color c)
1.22 {
1.23 - line.property_fill_color_gdk().set_value(c);
1.24 + line.property_outline_color_gdk().set_value(c);
1.25 }
1.26 +
1.27 +bool GraphDisplayerCanvas::LoopEdge::edgeFormerEventHandler(GdkEvent* e)
1.28 +{
1.29 + switch(e->type)
1.30 + {
1.31 + case GDK_BUTTON_PRESS:
1.32 + if(canvas.getActualTool()!=CREATE_NODE)
1.33 + {
1.34 + canvas.toggleEdgeActivity(this, true);
1.35 + isbutton=true;
1.36 + }
1.37 + break;
1.38 + case GDK_BUTTON_RELEASE:
1.39 + if(canvas.getActualTool()!=CREATE_NODE)
1.40 + {
1.41 + canvas.toggleEdgeActivity(this, false);
1.42 + isbutton=false;
1.43 + }
1.44 + break;
1.45 + case GDK_MOTION_NOTIFY:
1.46 + if(isbutton)
1.47 + {
1.48 + canvas.mytab.mapstorage.arrow_pos.set(edge, XY(e->motion.x, e->motion.y));
1.49 +
1.50 + draw();
1.51 + canvas.textReposition(canvas.mytab.mapstorage.arrow_pos[edge]);
1.52 + }
1.53 + default: break;
1.54 + }
1.55 + return true;
1.56 +}