diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.cpp b/src/Mod/TechDraw/App/DrawViewBalloon.cpp index 28f980742240..e6653d5302cb 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.cpp +++ b/src/Mod/TechDraw/App/DrawViewBalloon.cpp @@ -128,6 +128,27 @@ void DrawViewBalloon::onDocumentRestored() } +void DrawViewBalloon::handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property *prop) +// transforms properties that had been changed +{ + // also check for changed properties of the base class + DrawView::handleChangedPropertyType(reader, TypeName, prop); + + // property OriginX had the App::PropertyFloat and was changed to App::PropertyLength + if (prop == &OriginX && strcmp(TypeName, "App::PropertyFloat") == 0) { + App::PropertyInteger OriginXProperty; + // restore the PropertyInteger to be able to set its value + OriginXProperty.Restore(reader); + OriginX.setValue(OriginXProperty.getValue()); + } + // property OriginY had the App::PropertyFloat and was changed to App::PropertyLength + else if (prop == &OriginY && strcmp(TypeName, "App::PropertyFloat") == 0) { + App::PropertyFloat OriginYProperty; + OriginYProperty.Restore(reader); + OriginY.setValue(OriginYProperty.getValue()); + } +} + short DrawViewBalloon::mustExecute() const { diff --git a/src/Mod/TechDraw/App/DrawViewBalloon.h b/src/Mod/TechDraw/App/DrawViewBalloon.h index 63c24844ca19..e2ecb219b0c8 100644 --- a/src/Mod/TechDraw/App/DrawViewBalloon.h +++ b/src/Mod/TechDraw/App/DrawViewBalloon.h @@ -27,6 +27,7 @@ # include # include # include +# include #include "DrawView.h" @@ -53,8 +54,8 @@ class TechDrawExport DrawViewBalloon : public TechDraw::DrawView App::PropertyEnumeration EndType; App::PropertyEnumeration Symbol; App::PropertyFloat SymbolScale; - App::PropertyFloat OriginX; - App::PropertyFloat OriginY; + App::PropertyLength OriginX; + App::PropertyLength OriginY; App::PropertyBool OriginIsSet; App::PropertyFloat TextWrapLen; @@ -79,6 +80,7 @@ class TechDrawExport DrawViewBalloon : public TechDraw::DrawView protected: void onChanged(const App::Property* prop); virtual void onDocumentRestored(); + virtual void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop); private: }; diff --git a/src/Mod/TechDraw/TDTest/DVBalloonTest.py b/src/Mod/TechDraw/TDTest/DVBalloonTest.py index f6e3ea8c11ea..316855b836a8 100644 --- a/src/Mod/TechDraw/TDTest/DVBalloonTest.py +++ b/src/Mod/TechDraw/TDTest/DVBalloonTest.py @@ -8,6 +8,7 @@ from __future__ import print_function import FreeCAD +from FreeCAD import Units import Part import Measure import TechDraw @@ -38,24 +39,24 @@ def DVBalloonTest(): view1 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewPart','View') FreeCAD.ActiveDocument.View.Source = [FreeCAD.ActiveDocument.Box] rc = page.addView(view1) - view1.X = 30 - view1.Y = 150 + view1.X = Units.Quantity(30.0,Units.Length) + view1.Y = Units.Quantity(150.0,Units.Length) view2 = FreeCAD.activeDocument().addObject('TechDraw::DrawViewPart','View001') FreeCAD.activeDocument().View001.Source = [FreeCAD.activeDocument().Sphere] rc = page.addView(view2) - view2.X = 220 - view2.Y = 150 + view2.X = Units.Quantity(220.0,Units.Length) + view2.Y = Units.Quantity(150.0,Units.Length) FreeCAD.ActiveDocument.recompute() print("Place balloon") balloon1 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewBalloon','Balloon1') balloon1.sourceView=view1 balloon1.OriginIsSet=1 - balloon1.OriginX=view1.X + 20 - balloon1.OriginY=view1.Y + 20 + balloon1.OriginX=view1.X + Units.Quantity(20.0,Units.Length) + balloon1.OriginY=view1.Y + Units.Quantity(20.0,Units.Length) balloon1.Text="1" - balloon1.Y=balloon1.OriginX + 20 - balloon1.X=balloon1.OriginY + 20 + balloon1.Y=balloon1.OriginX + Units.Quantity(20.0,Units.Length) + balloon1.X=balloon1.OriginY + Units.Quantity(20.0,Units.Length) print("adding balloon1 to page") rc = page.addView(balloon1) @@ -63,11 +64,11 @@ def DVBalloonTest(): balloon2 = FreeCAD.ActiveDocument.addObject('TechDraw::DrawViewBalloon','Balloon2') balloon2.sourceView=view2 balloon2.OriginIsSet=1 - balloon2.OriginX=view2.X + 20 - balloon2.OriginY=view2.Y + 20 + balloon2.OriginX=view2.X + Units.Quantity(20.0,Units.Length) + balloon2.OriginY=view2.Y + Units.Quantity(20.0,Units.Length) balloon2.Text="2" - balloon2.Y=balloon2.OriginX + 20 - balloon2.X=balloon2.OriginY + 20 + balloon2.Y=balloon2.OriginX + Units.Quantity(20.0,Units.Length) + balloon2.X=balloon2.OriginY + Units.Quantity(20.0,Units.Length) print("adding balloon2 to page") rc = page.addView(balloon2)