Xcos MVC: add Link style to the model 93/18093/3
Clément DAVID [Tue, 19 Apr 2016 09:21:45 +0000 (11:21 +0200)]
Change-Id: I8e441e28c3e598d67c3146a1651ed6d64caf8bf1

scilab/modules/scicos/src/cpp/Model_getObjectProperties.cpp
scilab/modules/scicos/src/cpp/Model_setObjectProperties.cpp
scilab/modules/scicos/src/cpp/model/Link.hxx
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/model/XcosCell.java

index 4299d35..b344ac6 100644 (file)
@@ -294,6 +294,9 @@ bool Model::getObjectProperty(ScicosID uid, kind_t k, object_properties_t p, std
         model::Link* o = static_cast<model::Link*>(baseObject);
         switch (p)
         {
+            case STYLE:
+                o->getStyle(v);
+                return true;
             case LABEL:
                 o->getLabel(v);
                 return true;
index e075fd1..be91ff9 100644 (file)
@@ -349,6 +349,8 @@ update_status_t Model::setObjectProperty(ScicosID uid, kind_t k, object_properti
         model::Link* o = static_cast<model::Link*>(baseObject);
         switch (p)
         {
+            case STYLE:
+                return o->setStyle(v);
             case LABEL:
                 return o->setLabel(v);
             case UID:
index 64d8086..6d49c8a 100644 (file)
@@ -42,9 +42,9 @@ class Link: public BaseObject
 {
 public:
     Link() : BaseObject(LINK), m_parentDiagram(ScicosID()), m_parentBlock(ScicosID()), m_sourcePort(ScicosID()), m_destinationPort(ScicosID()), m_uid(), m_controlPoints(),
-        m_label(), m_thick(2), m_color(1), m_linkKind(regular) {};
+        m_label(), m_style(), m_thick(2), m_color(1), m_linkKind(regular) {};
     Link(const Link& o) : BaseObject(LINK), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_sourcePort(o.m_sourcePort), m_destinationPort(o.m_destinationPort),  m_uid(o.m_uid),
-        m_controlPoints(o.m_controlPoints), m_label(o.m_label), m_thick(o.m_thick), m_color(o.m_color), m_linkKind(o.m_linkKind) {};
+        m_controlPoints(o.m_controlPoints), m_label(o.m_label), m_style(o.m_style), m_thick(o.m_thick), m_color(o.m_color), m_linkKind(o.m_linkKind) {};
     ~Link() = default;
 
 private:
@@ -114,6 +114,22 @@ private:
         return SUCCESS;
     }
 
+    void getStyle(std::string& data) const
+    {
+        data = m_style;
+    }
+
+    update_status_t setStyle(const std::string& data)
+    {
+        if (data == m_style)
+        {
+            return NO_CHANGES;
+        }
+
+        m_style = data;
+        return SUCCESS;
+    }
+
     void getThick(std::vector<double>& v) const
     {
         v = m_thick;
@@ -241,6 +257,7 @@ private:
     std::vector<double> m_controlPoints;
 
     std::string m_label;
+    std::string m_style;
     std::vector<double> m_thick;
     int m_color;
     link_kind_t m_linkKind;
index 15cf8c5..7135002 100644 (file)
@@ -265,8 +265,9 @@ public class XcosCell extends mxCell {
         }
 
         switch (getKind()) {
-            case ANNOTATION:
             case BLOCK:
+            case LINK:
+            case ANNOTATION:
             case PORT:
                 controller.setObjectProperty(getUID(), getKind(), ObjectProperties.STYLE, style);
                 break;