From f39d4f0ba6a24326c08dc70fbbd44b9322104973 Mon Sep 17 00:00:00 2001 From: mpv Date: Wed, 9 Jan 2019 18:03:29 +0300 Subject: [PATCH] Fix for the issue #2828 : Button "See Preview" in parameters panel does not work --- src/Model/Model_Document.cpp | 8 ++--- src/Model/Model_Update.cpp | 2 ++ src/ModelAPI/CMakeLists.txt | 1 + src/ModelAPI/Test/Test2828.py | 60 +++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 src/ModelAPI/Test/Test2828.py diff --git a/src/Model/Model_Document.cpp b/src/Model/Model_Document.cpp index bed5d3455..2fbfac449 100755 --- a/src/Model/Model_Document.cpp +++ b/src/Model/Model_Document.cpp @@ -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); diff --git a/src/Model/Model_Update.cpp b/src/Model/Model_Update.cpp index 4f6828473..c4cbbc942 100755 --- a/src/Model/Model_Update.cpp +++ b/src/Model/Model_Update.cpp @@ -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; diff --git a/src/ModelAPI/CMakeLists.txt b/src/ModelAPI/CMakeLists.txt index c1e32f58e..19fa6c522 100644 --- a/src/ModelAPI/CMakeLists.txt +++ b/src/ModelAPI/CMakeLists.txt @@ -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 index 000000000..7a6cb7cd2 --- /dev/null +++ b/src/ModelAPI/Test/Test2828.py @@ -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 +## +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() -- 2.39.2