Salome HOME
Fix for the issue #2828 : Button "See Preview" in parameters panel does not work
authormpv <mpv@opencascade.com>
Wed, 9 Jan 2019 15:03:29 +0000 (18:03 +0300)
committermpv <mpv@opencascade.com>
Wed, 9 Jan 2019 15:03:29 +0000 (18:03 +0300)
src/Model/Model_Document.cpp
src/Model/Model_Update.cpp
src/ModelAPI/CMakeLists.txt
src/ModelAPI/Test/Test2828.py [new file with mode: 0644]

index bed5d345584cf0ec14bc9f99a607f457fbeab296..2fbfac44901166c19f5285017626a5170a3a4546 100755 (executable)
@@ -674,10 +674,10 @@ bool Model_Document::finishOperation()
   }
   myObjs->synchronizeBackRefs();
   Events_Loop* aLoop = Events_Loop::loop();
-  static const Events_ID kCreatedEvent = Events_Loop::loop()->eventByName(EVENT_OBJECT_CREATED);
-  static const Events_ID kUpdatedEvent = Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED);
-  static const Events_ID kRedispEvent = Events_Loop::loop()->eventByName(EVENT_OBJECT_TO_REDISPLAY);
-  static const Events_ID kDeletedEvent = Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED);
+  static const Events_ID kCreatedEvent = aLoop->eventByName(EVENT_OBJECT_CREATED);
+  static const Events_ID kUpdatedEvent = aLoop->eventByName(EVENT_OBJECT_UPDATED);
+  static const Events_ID kRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
+  static const Events_ID kDeletedEvent = aLoop->eventByName(EVENT_OBJECT_DELETED);
   aLoop->flush(kCreatedEvent);
   aLoop->flush(kUpdatedEvent);
   aLoop->flush(kRedispEvent);
index 4f6828473988d533a271f606d29ca3e1016d3fba..c4cbbc94247dce88769565cb91b5397c193826f5 100755 (executable)
@@ -77,6 +77,8 @@ Model_Update::Model_Update()
   aLoop->registerListener(this, kReorderEvent);
   static const Events_ID kUpdatedSel = aLoop->eventByName(EVENT_UPDATE_SELECTION);
   aLoop->registerListener(this, kUpdatedSel);
+  static const Events_ID kAutoRecomp = aLoop->eventByName(EVENT_AUTOMATIC_RECOMPUTATION_ENABLE);
+  aLoop->registerListener(this, kAutoRecomp);
 
   //  Config_PropManager::findProp("Model update", "automatic_rebuild")->value() == "true";
   myIsParamUpdated = false;
index c1e32f58ed793272d50ac506ebe04835e3224a67..19fa6c522568ba0669f8c1b1f228f1c4084a9e9f 100644 (file)
@@ -237,4 +237,5 @@ ADD_UNIT_TESTS(TestConstants.py
                TestSaveOpen1.py
                TestSaveOpen2.py
                TestSelectionInitialization.py
+               Test2828.py
 )
diff --git a/src/ModelAPI/Test/Test2828.py b/src/ModelAPI/Test/Test2828.py
new file mode 100644 (file)
index 0000000..7a6cb7c
--- /dev/null
@@ -0,0 +1,60 @@
+## Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+model.addParameter(Part_1_doc, "a", "10")
+model.addParameter(Part_1_doc, "b", "20")
+ParamL = model.addParameter(Part_1_doc, "l", "100")
+Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("YOZ"))
+SketchLine_1 = Sketch_1.addLine(13.37522515430284, 1.633845843958015, -6.624774845697162, 1.633845843958015)
+SketchLine_2 = Sketch_1.addLine(-6.624774845697162, 1.633845843958015, -6.624774845697162, -8.366154156041985)
+SketchLine_3 = Sketch_1.addLine(-6.624774845697162, -8.366154156041985, 13.37522515430284, -8.366154156041985)
+SketchLine_4 = Sketch_1.addLine(13.37522515430284, -8.366154156041985, 13.37522515430284, 1.633845843958015)
+SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
+SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
+SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
+SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
+SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_1.result())
+SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_2.result())
+SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_3.result())
+SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_4.result())
+SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_2.result(), "a")
+SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_1.result(), "b")
+model.do()
+Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_1r-SketchLine_2f-SketchLine_3f-SketchLine_4f")], model.selection(), "l", 0)
+model.do()
+from ModelAPI import *
+aSession = ModelAPI_Session.get()
+aSession.blockAutoUpdate(True)
+model.testResultsVolumes(Extrusion_1, [20000])
+ParamL.setValue(10)
+# emulate the "See preview" press during the transaction opened
+from ModelAPI import *
+aSession = ModelAPI_Session.get()
+aSession.blockAutoUpdate(False)
+aSession.blockAutoUpdate(True)
+# check that extrusion was updated
+model.testResultsVolumes(Extrusion_1, [2000])
+aSession.blockAutoUpdate(False)
+model.end()