Salome HOME
Point 2.12 from "SUPERVISOR: Current status - bugs/improvements"
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_CanvasLink.cxx
index 74b6b762b769fd65dfb1bf8a7d8466a76c5a820c..08ad4a67e86377cee53260d75d4b6622a32bd9e1 100644 (file)
@@ -214,6 +214,8 @@ void SUPERVGUI_CanvasLink::setColor(const QColor& theColor)
 }
 
 void SUPERVGUI_CanvasLink::remove() {
+  myMain->Editing(); // PAL6170: GUI->Engine: setting "Editing" flag 
+
   QString aValue;
   SUPERVGUI_CanvasPortIn* aPort = 0;
   SUPERVGUI_Canvas* aCanvas = myMain->getCanvas();
@@ -508,20 +510,20 @@ int SUPERVGUI_CanvasPointPrs::rtti() const
 void SUPERVGUI_CanvasPointPrs::setInEdge(SUPERVGUI_CanvasEdgePrs* theEdge)
 {
   myInEdge = theEdge;
-  theEdge->setFromPoint((int)x(), (int)y());
+  theEdge->setFromPoint(this);
 }
 
 void SUPERVGUI_CanvasPointPrs::setOutEdge(SUPERVGUI_CanvasEdgePrs* theEdge)
 {
   myOutEdge = theEdge;
-  theEdge->setToPoint((int)x(), (int)y());
+  theEdge->setToPoint(this); 
 }
 
 void SUPERVGUI_CanvasPointPrs::moveBy(double dx, double dy)
 {
   QCanvasEllipse::moveBy(dx, dy);
-  if (myInEdge) myInEdge->setFromPoint((int)x(), (int)y());
-  if (myOutEdge) myOutEdge->setToPoint((int)x(), (int)y());
+  if (myInEdge) myInEdge->setFromPoint(this);
+  if (myOutEdge) myOutEdge->setToPoint(this);
   //resize canvas view if mouse is outside
   int w = (int)(x()+dx) + width() + GRAPH_MARGIN;
   int h = (int)(y()+dy) + height() + GRAPH_MARGIN;
@@ -554,17 +556,32 @@ int SUPERVGUI_CanvasEdgePrs::rtti() const
   return SUPERVGUI_Canvas::Rtti_LinkEdge;
 }
 
-void SUPERVGUI_CanvasEdgePrs::setFromPoint(int x, int y)
+void SUPERVGUI_CanvasEdgePrs::setFromPoint(SUPERVGUI_CanvasPointPrs* thePoint)
 {
-  setPoints(x, y, endPoint().x(), endPoint().y());
+  myStartPoint = thePoint;
+  setPoints((int)(thePoint->x()), (int)(thePoint->y()), endPoint().x(), endPoint().y());
 }
 
-void SUPERVGUI_CanvasEdgePrs::setToPoint(int x, int y)
+void SUPERVGUI_CanvasEdgePrs::setToPoint(SUPERVGUI_CanvasPointPrs* thePoint)
 {
-  setPoints(startPoint().x(), startPoint().y(), x, y);
+  myEndPoint = thePoint;
+  setPoints(startPoint().x(), startPoint().y(), (int)(thePoint->x()), (int)(thePoint->y()));
 }
 
 void SUPERVGUI_CanvasEdgePrs::setColor(const QColor& theColor)
 {
   setPen(QPen(theColor, LINE_WIDTH));
 }
+
+void SUPERVGUI_CanvasEdgePrs::moveBy(double dx, double dy)
+{
+  //mkr: for moving segment of link
+  if (myStartPoint && myEndPoint) {
+    myStartPoint->setMoving(true);
+    myStartPoint->moveBy(dx, dy);
+    
+    myEndPoint->setMoving(true);
+    myEndPoint->moveBy(dx,dy);
+  }
+}
+