Xcos MVC: fix default blocktype and only allow linking to Blocks 51/15251/8
Paul Bignier [Fri, 19 Sep 2014 08:15:26 +0000 (10:15 +0200)]
 * ' --> loadXcosLibs(); scicos_block(); ' now only reads NO_CHANGES
 * Cannot link a Link with an Annotation or a Link anymore (it crashed anyway)

Change-Id: I104711e0244efdfccf48759188f04ba836f4e27b

scilab/modules/scicos/src/cpp/model/Block.hxx
scilab/modules/scicos/src/cpp/view_scilab/LinkAdapter.cpp
scilab/modules/scicos/tests/unit_tests/model/Block.dia.ref
scilab/modules/scicos/tests/unit_tests/model/Diagram.dia.ref

index 56d3a76..a7173e9 100644 (file)
@@ -117,9 +117,12 @@ private:
     friend class ::org_scilab_modules_scicos::Model;
 
 private:
-    Block() : BaseObject(BLOCK), parentDiagram(0), interfaceFunction(), geometry(),
-        angle(), exprs(), label(), style(), nzcross(0), nmode(0), equations(), uid(), sim(), in(), out(), ein(), eout(),
-        parameter(), state(), parentBlock(0), children(), portReference(0) {};
+    Block() : BaseObject(BLOCK), parentDiagram(0), interfaceFunction(), geometry(), angle(),
+        exprs(), label(), style(), nzcross(0), nmode(0), equations(), uid(), sim(), in(), out(), ein(), eout(),
+        parameter(), state(), parentBlock(0), children(), portReference(0)
+    {
+        sim.blocktype = BLOCKTYPE_C;
+    };
     Block(const Block& o) : BaseObject(BLOCK), parentDiagram(o.parentDiagram), interfaceFunction(o.interfaceFunction), geometry(o.geometry),
         angle(o.angle), exprs(o.exprs), label(o.label), style(o.style), nzcross(o.nzcross), nmode(o.nmode), equations(o.equations), uid(o.uid),
         sim(o.sim), in(o.in), out(o.out), ein(o.ein), eout(o.eout), parameter(o.parameter), state(o.state), parentBlock(o.parentBlock),
index 2f3c7f8..a1a4728 100644 (file)
@@ -477,6 +477,18 @@ static bool setLinkEnd(ScicosID id, Controller& controller, object_properties_t
     {
         controller.getObjectProperty(parentDiagram, DIAGRAM, CHILDREN, children);
     }
+    // Only keep the Blocks of 'children'
+    for (std::vector<ScicosID>::iterator it = children.begin(); it != children.end();)
+    {
+        if (controller.getObject(*it)->kind() != BLOCK)
+        {
+            children.erase(it);
+        }
+        else
+        {
+            ++it;
+        }
+    }
 
     // Connect the new one
     int blk  = static_cast<int>(v[0]);
index 760e260..2678a9e 100644 (file)
@@ -44,7 +44,7 @@ propertyUpdated( 1 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , RPAR ) : SUCCESS
 propertyUpdated( 1 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 1 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 1 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 1 , BLOCK , NZCROSS ) : NO_CHANGES
@@ -125,7 +125,7 @@ propertyUpdated( 5 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 5 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 5 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 5 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 5 , BLOCK , LABEL ) : NO_CHANGES
@@ -276,7 +276,7 @@ propertyUpdated( 9 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 9 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 9 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 9 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , LABEL ) : NO_CHANGES
@@ -426,7 +426,7 @@ propertyUpdated( 13 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 13 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 13 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 13 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 13 , BLOCK , LABEL ) : NO_CHANGES
@@ -594,7 +594,7 @@ propertyUpdated( 18 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , RPAR ) : SUCCESS
 propertyUpdated( 18 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , NZCROSS ) : NO_CHANGES
@@ -684,7 +684,7 @@ propertyUpdated( 21 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 21 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , LABEL ) : NO_CHANGES
index bfe84c9..fa3edc8 100644 (file)
@@ -81,7 +81,7 @@ propertyUpdated( 2 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 2 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 2 , BLOCK , RPAR ) : SUCCESS
 propertyUpdated( 2 , BLOCK , IPAR ) : NO_CHANGES
-propertyUpdated( 2 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 2 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 2 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 2 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 2 , BLOCK , NZCROSS ) : NO_CHANGES
@@ -117,7 +117,7 @@ propertyUpdated( 6 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , RPAR ) : SUCCESS
 propertyUpdated( 6 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 6 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 6 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 6 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 6 , BLOCK , NZCROSS ) : NO_CHANGES
@@ -153,7 +153,7 @@ propertyUpdated( 9 , BLOCK , STATE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , DSTATE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , RPAR ) : SUCCESS
 propertyUpdated( 9 , BLOCK , IPAR ) : SUCCESS
-propertyUpdated( 9 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 9 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , SIM_DEP_UT ) : SUCCESS
 propertyUpdated( 9 , BLOCK , LABEL ) : NO_CHANGES
 propertyUpdated( 9 , BLOCK , NZCROSS ) : NO_CHANGES
@@ -183,7 +183,7 @@ propertyUpdated( 14 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 14 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 14 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 14 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 14 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 14 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 14 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 14 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 14 , BLOCK , LABEL ) : NO_CHANGES
@@ -235,7 +235,7 @@ propertyUpdated( 18 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 18 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 18 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 18 , BLOCK , LABEL ) : NO_CHANGES
@@ -278,7 +278,7 @@ propertyUpdated( 21 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 21 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 21 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 21 , BLOCK , LABEL ) : NO_CHANGES
@@ -676,7 +676,7 @@ propertyUpdated( 30 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 30 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 30 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 30 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 30 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 30 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 30 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 30 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 30 , BLOCK , LABEL ) : NO_CHANGES
@@ -728,7 +728,7 @@ propertyUpdated( 34 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 34 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 34 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 34 , BLOCK , LABEL ) : NO_CHANGES
@@ -830,7 +830,7 @@ propertyUpdated( 40 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 40 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 40 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 40 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 40 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 40 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 40 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 40 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 40 , BLOCK , LABEL ) : NO_CHANGES
@@ -882,7 +882,7 @@ propertyUpdated( 44 , BLOCK , NZCROSS ) : NO_CHANGES
 propertyUpdated( 44 , BLOCK , NMODE ) : NO_CHANGES
 propertyUpdated( 44 , BLOCK , INTERFACE_FUNCTION ) : SUCCESS
 propertyUpdated( 44 , BLOCK , SIM_FUNCTION_NAME ) : SUCCESS
-propertyUpdated( 44 , BLOCK , SIM_BLOCKTYPE ) : SUCCESS
+propertyUpdated( 44 , BLOCK , SIM_BLOCKTYPE ) : NO_CHANGES
 propertyUpdated( 44 , BLOCK , UID ) : NO_CHANGES
 propertyUpdated( 44 , BLOCK , STYLE ) : NO_CHANGES
 propertyUpdated( 44 , BLOCK , LABEL ) : NO_CHANGES