Xcos MVC: fix 'style' for Annotations 62/17462/4
Paul Bignier [Tue, 17 Nov 2015 16:20:30 +0000 (17:20 +0100)]
 * Treat Annotations like blocks so fill their 'gui' property (still nothing saved in the model though).

Change-Id: Iaa7714cc05fc3fe4dbc88c49ee030096e4b22eec

scilab/modules/scicos/src/cpp/view_scilab/TextAdapter.cpp
scilab/modules/scicos/tests/unit_tests/model/Annotation.dia.ref

index 090975e..49c4ef4 100644 (file)
@@ -207,6 +207,19 @@ struct graphics
         // style, if it is present
         if ((current->getSize() >= 5) && ((currentField = current->getField(style.c_str())) != nullptr))
         {
+            if (currentField->getType() == types::InternalType::ScilabDouble)
+            {
+                currentFieldDouble = currentField->getAs<types::Double>();
+                if (currentFieldDouble->getSize() != 0)
+                {
+                    get_or_allocate_logger()->log(LOG_ERROR, _("Wrong type for field %s.%s: String matrix expected.\n"), "graphics", "style");
+                    return false;
+                }
+                std::string styleField;
+                controller.setObjectProperty(adaptee, ANNOTATION, STYLE, styleField);
+                return true;
+            }
+
             if (currentField->getType() != types::InternalType::ScilabString)
             {
                 get_or_allocate_logger()->log(LOG_ERROR, _("Wrong type for field %s.%s: String matrix expected.\n"), "graphics", "style");
@@ -245,6 +258,15 @@ struct dummy_property
     }
 };
 
+struct gui
+{
+
+    static types::InternalType* get(const TextAdapter& /*adaptor*/, const Controller& /*controller*/)
+    {
+        return new types::String("TEXT_f");
+    }
+};
+
 } /* namespace */
 
 template<> property<TextAdapter>::props_t property<TextAdapter>::fields = property<TextAdapter>::props_t();
@@ -258,7 +280,7 @@ TextAdapter::TextAdapter(const Controller& c, org_scilab_modules_scicos::model::
         property<TextAdapter>::add_property(Graphics, &graphics::get, &graphics::set);
         property<TextAdapter>::add_property(L"model", &dummy_property::get, &dummy_property::set);
         property<TextAdapter>::add_property(L"void", &dummy_property::get, &dummy_property::set);
-        property<TextAdapter>::add_property(L"gui", &dummy_property::get, &dummy_property::set);
+        property<TextAdapter>::add_property(L"gui", &gui::get, &dummy_property::set);
     }
 }
 
index aacbb7f..fc96224 100644 (file)
@@ -31,7 +31,7 @@ Xcos trace: propertyUpdated( 1 , ANNOTATION , FONT ) : NO_CHANGES
 Xcos trace: propertyUpdated( 1 , ANNOTATION , FONT_SIZE ) : NO_CHANGES
 Xcos trace: propertyUpdated( 1 , ANNOTATION , STYLE ) : NO_CHANGES
  o  = 
-GUI     : 
+GUI     : TEXT_f
 Graphics: 
           orig = [0,0]
           sz = [2,1]
@@ -51,7 +51,7 @@ o.void
     []
 o.gui
  ans  =
-    []
+ TEXT_f
 // Modify it
 o = TEXT_f("set", o)
 Xcos debug: objectCreated( 2 , ANNOTATION )
@@ -72,7 +72,7 @@ Xcos trace: propertyUpdated( 2 , ANNOTATION , FONT_SIZE ) : SUCCESS
 Xcos trace: propertyUpdated( 2 , ANNOTATION , STYLE ) : NO_CHANGES
 Xcos debug: objectDeleted( 1 , ANNOTATION )
  o  = 
-GUI     : 
+GUI     : TEXT_f
 Graphics: 
           orig = [0,0]
           sz = [3,4]
@@ -93,7 +93,7 @@ o.void
     []
 o.gui
  ans  =
-    []
+ TEXT_f
 // Check that all the model items are freed
 clear
 Xcos debug: objectDeleted( 2 , ANNOTATION )