diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 56c0a0f7e0..b793c570c7 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -570,6 +570,7 @@ SET(FemGuiObjects_SRCS SET(FemGuiTaskPanels_SRCS femtaskpanels/__init__.py + femtaskpanels/base_femtaskpanel.py femtaskpanels/task_constraint_bodyheatsource.py femtaskpanels/task_constraint_centrif.py femtaskpanels/task_constraint_currentdensity.py diff --git a/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp b/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp index ead81c60ee..3d00923112 100644 --- a/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp +++ b/src/Mod/Fem/Gui/TaskDlgMeshShapeNetgen.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include @@ -112,7 +112,9 @@ bool TaskDlgMeshShapeNetgen::accept() } // FemSetNodesObject->Label.setValue(name->name); - Gui::Command::doCommand(Gui::Command::Gui, "Gui.activeDocument().resetEdit()"); + App::Document* doc = FemMeshShapeNetgenObject->getDocument(); + Gui::cmdAppDocument(doc, "recompute()"); + Gui::cmdGuiDocument(doc, "resetEdit()"); Gui::Command::commitCommand(); return true; @@ -132,7 +134,9 @@ bool TaskDlgMeshShapeNetgen::reject() // // doc->resetEdit(); // param->MeshViewProvider->resetHighlightNodes(); Gui::Command::abortCommand(); - Gui::Command::doCommand(Gui::Command::Gui, "Gui.activeDocument().resetEdit()"); + App::Document* doc = FemMeshShapeNetgenObject->getDocument(); + Gui::cmdGuiDocument(doc, "resetEdit()"); + Gui::cmdAppDocument(doc, "recompute()"); return true; } diff --git a/src/Mod/Fem/femcommands/commands.py b/src/Mod/Fem/femcommands/commands.py index 2ab1139855..8bd97dc065 100644 --- a/src/Mod/Fem/femcommands/commands.py +++ b/src/Mod/Fem/femcommands/commands.py @@ -786,9 +786,7 @@ class _MeshGmshFromShape(CommandManager): FreeCADGui.doCommand( "FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)" ) - FreeCAD.ActiveDocument.commitTransaction() FreeCADGui.Selection.clearSelection() - FreeCAD.ActiveDocument.recompute() class _MeshGroup(CommandManager): @@ -844,7 +842,6 @@ class _MeshNetgenFromShape(CommandManager): FreeCADGui.doCommand( "FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)" ) - FreeCAD.ActiveDocument.commitTransaction() FreeCADGui.Selection.clearSelection() # a recompute immediately starts meshing when task panel is opened, this is not intended diff --git a/src/Mod/Fem/femcommands/manager.py b/src/Mod/Fem/femcommands/manager.py index 789e19481e..16529a94eb 100644 --- a/src/Mod/Fem/femcommands/manager.py +++ b/src/Mod/Fem/femcommands/manager.py @@ -300,7 +300,6 @@ class CommandManager: FreeCADGui.doCommand( "FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)" ) - FreeCAD.ActiveDocument.recompute() def add_obj_on_gui_noset_edit(self, objtype): FreeCAD.ActiveDocument.openTransaction(f"Create Fem{objtype}") @@ -312,7 +311,6 @@ class CommandManager: ) # FreeCAD.ActiveDocument.commitTransaction() # solver command class had this line # no clear selection is done - FreeCAD.ActiveDocument.recompute() def add_obj_on_gui_expand_noset_edit(self, objtype): # like add_obj_on_gui_noset_edit but the parent object @@ -332,7 +330,6 @@ class CommandManager: FreeCADGui.Selection.clearSelection() FreeCADGui.doCommand("addedObjDocObj = FreeCAD.ActiveDocument.getObject(addedObj.Name)") FreeCADGui.doCommand("FreeCADGui.Selection.addSelection(addedObjDocObj)") - FreeCAD.ActiveDocument.recompute() def add_obj_on_gui_selobj_set_edit(self, objtype): FreeCAD.ActiveDocument.openTransaction(f"Create Fem{objtype}") @@ -345,7 +342,6 @@ class CommandManager: FreeCADGui.doCommand( "FreeCADGui.ActiveDocument.setEdit(FreeCAD.ActiveDocument.ActiveObject.Name)" ) - FreeCAD.ActiveDocument.recompute() def add_obj_on_gui_selobj_noset_edit(self, objtype): FreeCAD.ActiveDocument.openTransaction(f"Create Fem{objtype}") @@ -355,7 +351,6 @@ class CommandManager: "FreeCAD.ActiveDocument, FreeCAD.ActiveDocument.{})".format(objtype, self.selobj.Name) ) FreeCADGui.Selection.clearSelection() - FreeCAD.ActiveDocument.recompute() def add_obj_on_gui_selobj_expand_noset_edit(self, objtype): # like add_obj_on_gui_selobj_noset_edit but the selection is kept @@ -368,4 +363,3 @@ class CommandManager: ) # expand selobj in tree view expandParentObject() - FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/Fem/femtaskpanels/base_femtaskpanel.py b/src/Mod/Fem/femtaskpanels/base_femtaskpanel.py new file mode 100644 index 0000000000..fdb562020c --- /dev/null +++ b/src/Mod/Fem/femtaskpanels/base_femtaskpanel.py @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +# *************************************************************************** +# * Copyright (c) 2024 Mario Passaglia * +# * * +# * This file is part of FreeCAD. * +# * * +# * FreeCAD 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. * +# * * +# * FreeCAD 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 FreeCAD. If not, see * +# * . * +# * * +# *************************************************************************** + +__title__ = "FreeCAD FEM base task panel object" +__author__ = "Mario Passaglia" +__url__ = "https://www.freecad.org" + +## @package base_femtaskpanel +# \ingroup FEM +# \brief base object for FEM task panels + + +class _BaseTaskPanel: + """ + Base task panel + """ + + def __init__(self, obj): + self.obj = obj + + def accept(self): + gui_doc = self.obj.ViewObject.Document + gui_doc.Document.recompute() + gui_doc.resetEdit() + gui_doc.Document.commitTransaction() + + return True + + def reject(self): + gui_doc = self.obj.ViewObject.Document + gui_doc.Document.abortTransaction() + gui_doc.resetEdit() + gui_doc.Document.recompute() + + return True diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py b/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py index 6de249179a..18f1b4e944 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_bodyheatsource.py @@ -37,12 +37,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self.obj = obj + super().__init__(obj) self.parameter_widget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/BodyHeatSource.ui" @@ -97,8 +98,7 @@ class _TaskPanel: def reject(self): self.restore_visibility() self.selection_widget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() - return True + return super().reject() def accept(self): self.obj.References = self.selection_widget.references @@ -106,11 +106,9 @@ class _TaskPanel: self.obj.TotalPower = self.total_power self.obj.Mode = self.mode - self.obj.Document.recompute() self.selection_widget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self.restore_visibility() - return True + return super().accept() def restore_visibility(self): if self._mesh is not None and self._part is not None: diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py b/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py index 30dfe6b8fc..f05498d72f 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_centrif.py @@ -36,16 +36,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of FemConstraintCentrif objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -139,21 +139,14 @@ class _TaskPanel: self.obj.RotationFrequency = self.rotation_frequency self.obj.RotationAxis = self.AxisSelectionWidget.references self.obj.References = self.BodySelectionWidget.references - self.recompute_and_set_back_all() - return True - - def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() - self.AxisSelectionWidget.finish_selection() self.BodySelectionWidget.finish_selection() + return super().accept() - doc.resetEdit() + def reject(self): + self.AxisSelectionWidget.finish_selection() + self.BodySelectionWidget.finish_selection() + return super().reject() def init_parameter_widget(self): self.rotation_frequency = self.obj.RotationFrequency diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py b/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py index 14a6292dcd..8145263ebb 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_currentdensity.py @@ -35,12 +35,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/CurrentDensity.ui" @@ -76,18 +77,15 @@ class _TaskPanel: def reject(self): self._restoreVisibility() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -101,37 +99,37 @@ class _TaskPanel: self._part.ViewObject.hide() def _initParamWidget(self): - self._paramWidget.realXQSB.setProperty("value", self._obj.CurrentDensity_re_1) + self._paramWidget.realXQSB.setProperty("value", self.obj.CurrentDensity_re_1) FreeCADGui.ExpressionBinding(self._paramWidget.realXQSB).bind( - self._obj, "CurrentDensity_re_1" + self.obj, "CurrentDensity_re_1" ) - self._paramWidget.realYQSB.setProperty("value", self._obj.CurrentDensity_re_2) + self._paramWidget.realYQSB.setProperty("value", self.obj.CurrentDensity_re_2) FreeCADGui.ExpressionBinding(self._paramWidget.realYQSB).bind( - self._obj, "CurrentDensity_re_2" + self.obj, "CurrentDensity_re_2" ) - self._paramWidget.realZQSB.setProperty("value", self._obj.CurrentDensity_re_3) + self._paramWidget.realZQSB.setProperty("value", self.obj.CurrentDensity_re_3) FreeCADGui.ExpressionBinding(self._paramWidget.realZQSB).bind( - self._obj, "CurrentDensity_re_3" + self.obj, "CurrentDensity_re_3" ) - self._paramWidget.imagXQSB.setProperty("value", self._obj.CurrentDensity_im_1) + self._paramWidget.imagXQSB.setProperty("value", self.obj.CurrentDensity_im_1) FreeCADGui.ExpressionBinding(self._paramWidget.imagXQSB).bind( - self._obj, "CurrentDensity_im_1" + self.obj, "CurrentDensity_im_1" ) - self._paramWidget.imagYQSB.setProperty("value", self._obj.CurrentDensity_im_2) + self._paramWidget.imagYQSB.setProperty("value", self.obj.CurrentDensity_im_2) FreeCADGui.ExpressionBinding(self._paramWidget.imagYQSB).bind( - self._obj, "CurrentDensity_im_2" + self.obj, "CurrentDensity_im_2" ) - self._paramWidget.imagZQSB.setProperty("value", self._obj.CurrentDensity_im_3) + self._paramWidget.imagZQSB.setProperty("value", self.obj.CurrentDensity_im_3) FreeCADGui.ExpressionBinding(self._paramWidget.imagZQSB).bind( - self._obj, "CurrentDensity_im_3" + self.obj, "CurrentDensity_im_3" ) - self._paramWidget.reXunspecBox.setChecked(self._obj.CurrentDensity_re_1_Disabled) - self._paramWidget.reYunspecBox.setChecked(self._obj.CurrentDensity_re_2_Disabled) - self._paramWidget.reZunspecBox.setChecked(self._obj.CurrentDensity_re_3_Disabled) - self._paramWidget.imXunspecBox.setChecked(self._obj.CurrentDensity_im_1_Disabled) - self._paramWidget.imYunspecBox.setChecked(self._obj.CurrentDensity_im_2_Disabled) - self._paramWidget.imZunspecBox.setChecked(self._obj.CurrentDensity_im_3_Disabled) + self._paramWidget.reXunspecBox.setChecked(self.obj.CurrentDensity_re_1_Disabled) + self._paramWidget.reYunspecBox.setChecked(self.obj.CurrentDensity_re_2_Disabled) + self._paramWidget.reZunspecBox.setChecked(self.obj.CurrentDensity_re_3_Disabled) + self._paramWidget.imXunspecBox.setChecked(self.obj.CurrentDensity_im_1_Disabled) + self._paramWidget.imYunspecBox.setChecked(self.obj.CurrentDensity_im_2_Disabled) + self._paramWidget.imZunspecBox.setChecked(self.obj.CurrentDensity_im_3_Disabled) def _applyCurrentDensityChanges(self, enabledBox, currentDensityQSB): enabled = enabledBox.isChecked() @@ -148,32 +146,32 @@ class _TaskPanel: def _applyWidgetChanges(self): # apply the current densities and their enabled state - self._obj.CurrentDensity_re_1_Disabled, self._obj.CurrentDensity_re_1 = ( + self.obj.CurrentDensity_re_1_Disabled, self.obj.CurrentDensity_re_1 = ( self._applyCurrentDensityChanges( self._paramWidget.reXunspecBox, self._paramWidget.realXQSB ) ) - self._obj.CurrentDensity_re_2_Disabled, self._obj.CurrentDensity_re_2 = ( + self.obj.CurrentDensity_re_2_Disabled, self.obj.CurrentDensity_re_2 = ( self._applyCurrentDensityChanges( self._paramWidget.reYunspecBox, self._paramWidget.realYQSB ) ) - self._obj.CurrentDensity_re_3_Disabled, self._obj.CurrentDensity_re_3 = ( + self.obj.CurrentDensity_re_3_Disabled, self.obj.CurrentDensity_re_3 = ( self._applyCurrentDensityChanges( self._paramWidget.reZunspecBox, self._paramWidget.realZQSB ) ) - self._obj.CurrentDensity_im_1_Disabled, self._obj.CurrentDensity_im_1 = ( + self.obj.CurrentDensity_im_1_Disabled, self.obj.CurrentDensity_im_1 = ( self._applyCurrentDensityChanges( self._paramWidget.imXunspecBox, self._paramWidget.imagXQSB ) ) - self._obj.CurrentDensity_im_2_Disabled, self._obj.CurrentDensity_im_2 = ( + self.obj.CurrentDensity_im_2_Disabled, self.obj.CurrentDensity_im_2 = ( self._applyCurrentDensityChanges( self._paramWidget.imYunspecBox, self._paramWidget.imagYQSB ) ) - self._obj.CurrentDensity_im_3_Disabled, self._obj.CurrentDensity_im_3 = ( + self.obj.CurrentDensity_im_3_Disabled, self.obj.CurrentDensity_im_3 = ( self._applyCurrentDensityChanges( self._paramWidget.imZunspecBox, self._paramWidget.imagZQSB ) diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py index 5f26f3da88..da268a8b3b 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_electrostaticpotential.py @@ -38,12 +38,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ElectrostaticPotential.ui" @@ -71,13 +72,13 @@ class _TaskPanel: # start with vector inputs hidden if no vector is set if ( - self._obj.AV_re_1_Disabled - and self._obj.AV_re_2_Disabled - and self._obj.AV_re_3_Disabled - and self._obj.AV_im_Disabled - and self._obj.AV_im_1_Disabled - and self._obj.AV_im_2_Disabled - and self._obj.AV_im_3_Disabled + self.obj.AV_re_1_Disabled + and self.obj.AV_re_2_Disabled + and self.obj.AV_re_3_Disabled + and self.obj.AV_im_Disabled + and self.obj.AV_im_1_Disabled + and self.obj.AV_im_2_Disabled + and self.obj.AV_im_3_Disabled ): self._vectorField_visibility(False) self._paramWidget.vectorFieldBox.setChecked(False) @@ -100,18 +101,15 @@ class _TaskPanel: def reject(self): self._restoreVisibility() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -125,45 +123,45 @@ class _TaskPanel: self._part.ViewObject.hide() def _initParamWidget(self): - self._paramWidget.potentialQSB.setProperty("value", self._obj.Potential) - FreeCADGui.ExpressionBinding(self._paramWidget.potentialQSB).bind(self._obj, "Potential") - self._paramWidget.potentialBox.setChecked(not self._obj.PotentialEnabled) + self._paramWidget.potentialQSB.setProperty("value", self.obj.Potential) + FreeCADGui.ExpressionBinding(self._paramWidget.potentialQSB).bind(self.obj, "Potential") + self._paramWidget.potentialBox.setChecked(not self.obj.PotentialEnabled) # the vector potentials # realScalarQSB always the same value as potentialQSB - self._paramWidget.realScalarQSB.setProperty("value", self._obj.Potential) - FreeCADGui.ExpressionBinding(self._paramWidget.realScalarQSB).bind(self._obj, "Potential") - self._paramWidget.realXQSB.setProperty("value", self._obj.AV_re_1) - FreeCADGui.ExpressionBinding(self._paramWidget.realXQSB).bind(self._obj, "AV_re_1") - self._paramWidget.realYQSB.setProperty("value", self._obj.AV_re_2) - FreeCADGui.ExpressionBinding(self._paramWidget.realYQSB).bind(self._obj, "AV_re_2") - self._paramWidget.realZQSB.setProperty("value", self._obj.AV_re_3) - FreeCADGui.ExpressionBinding(self._paramWidget.realZQSB).bind(self._obj, "AV_re_3") - self._paramWidget.imagScalarQSB.setProperty("value", self._obj.AV_im) - FreeCADGui.ExpressionBinding(self._paramWidget.imagScalarQSB).bind(self._obj, "AV_im") - self._paramWidget.imagXQSB.setProperty("value", self._obj.AV_im_1) - FreeCADGui.ExpressionBinding(self._paramWidget.imagXQSB).bind(self._obj, "AV_im_1") - self._paramWidget.imagYQSB.setProperty("value", self._obj.AV_im_2) - FreeCADGui.ExpressionBinding(self._paramWidget.imagYQSB).bind(self._obj, "AV_im_2") - self._paramWidget.imagZQSB.setProperty("value", self._obj.AV_im_3) - FreeCADGui.ExpressionBinding(self._paramWidget.imagZQSB).bind(self._obj, "AV_im_3") + self._paramWidget.realScalarQSB.setProperty("value", self.obj.Potential) + FreeCADGui.ExpressionBinding(self._paramWidget.realScalarQSB).bind(self.obj, "Potential") + self._paramWidget.realXQSB.setProperty("value", self.obj.AV_re_1) + FreeCADGui.ExpressionBinding(self._paramWidget.realXQSB).bind(self.obj, "AV_re_1") + self._paramWidget.realYQSB.setProperty("value", self.obj.AV_re_2) + FreeCADGui.ExpressionBinding(self._paramWidget.realYQSB).bind(self.obj, "AV_re_2") + self._paramWidget.realZQSB.setProperty("value", self.obj.AV_re_3) + FreeCADGui.ExpressionBinding(self._paramWidget.realZQSB).bind(self.obj, "AV_re_3") + self._paramWidget.imagScalarQSB.setProperty("value", self.obj.AV_im) + FreeCADGui.ExpressionBinding(self._paramWidget.imagScalarQSB).bind(self.obj, "AV_im") + self._paramWidget.imagXQSB.setProperty("value", self.obj.AV_im_1) + FreeCADGui.ExpressionBinding(self._paramWidget.imagXQSB).bind(self.obj, "AV_im_1") + self._paramWidget.imagYQSB.setProperty("value", self.obj.AV_im_2) + FreeCADGui.ExpressionBinding(self._paramWidget.imagYQSB).bind(self.obj, "AV_im_2") + self._paramWidget.imagZQSB.setProperty("value", self.obj.AV_im_3) + FreeCADGui.ExpressionBinding(self._paramWidget.imagZQSB).bind(self.obj, "AV_im_3") - self._paramWidget.reXunspecBox.setChecked(self._obj.AV_re_1_Disabled) - self._paramWidget.reYunspecBox.setChecked(self._obj.AV_re_2_Disabled) - self._paramWidget.reZunspecBox.setChecked(self._obj.AV_re_3_Disabled) - self._paramWidget.imScalarunspecBox.setChecked(self._obj.AV_im_Disabled) - self._paramWidget.imXunspecBox.setChecked(self._obj.AV_im_1_Disabled) - self._paramWidget.imYunspecBox.setChecked(self._obj.AV_im_2_Disabled) - self._paramWidget.imZunspecBox.setChecked(self._obj.AV_im_3_Disabled) + self._paramWidget.reXunspecBox.setChecked(self.obj.AV_re_1_Disabled) + self._paramWidget.reYunspecBox.setChecked(self.obj.AV_re_2_Disabled) + self._paramWidget.reZunspecBox.setChecked(self.obj.AV_re_3_Disabled) + self._paramWidget.imScalarunspecBox.setChecked(self.obj.AV_im_Disabled) + self._paramWidget.imXunspecBox.setChecked(self.obj.AV_im_1_Disabled) + self._paramWidget.imYunspecBox.setChecked(self.obj.AV_im_2_Disabled) + self._paramWidget.imZunspecBox.setChecked(self.obj.AV_im_3_Disabled) - self._paramWidget.potentialConstantBox.setChecked(self._obj.PotentialConstant) + self._paramWidget.potentialConstantBox.setChecked(self.obj.PotentialConstant) - self._paramWidget.electricInfinityBox.setChecked(self._obj.ElectricInfinity) + self._paramWidget.electricInfinityBox.setChecked(self.obj.ElectricInfinity) - self._paramWidget.electricForcecalculationBox.setChecked(self._obj.ElectricForcecalculation) + self._paramWidget.electricForcecalculationBox.setChecked(self.obj.ElectricForcecalculation) - self._paramWidget.capacitanceBodyBox.setChecked(not self._obj.CapacitanceBodyEnabled) - self._paramWidget.capacitanceBody_spinBox.setValue(self._obj.CapacitanceBody) + self._paramWidget.capacitanceBodyBox.setChecked(not self.obj.CapacitanceBodyEnabled) + self._paramWidget.capacitanceBody_spinBox.setValue(self.obj.CapacitanceBody) self._paramWidget.capacitanceBody_spinBox.setEnabled( not self._paramWidget.capacitanceBodyBox.isChecked() ) @@ -183,41 +181,41 @@ class _TaskPanel: def _applyWidgetChanges(self): # apply the voltages and their enabled state - self._obj.PotentialEnabled, self._obj.Potential = self._applyPotentialChanges( + self.obj.PotentialEnabled, self.obj.Potential = self._applyPotentialChanges( self._paramWidget.potentialBox, self._paramWidget.potentialQSB ) - self._obj.AV_re_1_Disabled, self._obj.AV_re_1 = self._applyPotentialChanges( + self.obj.AV_re_1_Disabled, self.obj.AV_re_1 = self._applyPotentialChanges( self._paramWidget.reXunspecBox, self._paramWidget.realXQSB ) - self._obj.AV_re_2_Disabled, self._obj.AV_re_2 = self._applyPotentialChanges( + self.obj.AV_re_2_Disabled, self.obj.AV_re_2 = self._applyPotentialChanges( self._paramWidget.reYunspecBox, self._paramWidget.realYQSB ) - self._obj.AV_re_3_Disabled, self._obj.AV_re_3 = self._applyPotentialChanges( + self.obj.AV_re_3_Disabled, self.obj.AV_re_3 = self._applyPotentialChanges( self._paramWidget.reZunspecBox, self._paramWidget.realZQSB ) - self._obj.AV_im_Disabled, self._obj.AV_im = self._applyPotentialChanges( + self.obj.AV_im_Disabled, self.obj.AV_im = self._applyPotentialChanges( self._paramWidget.imScalarunspecBox, self._paramWidget.imagScalarQSB ) - self._obj.AV_im_1_Disabled, self._obj.AV_im_1 = self._applyPotentialChanges( + self.obj.AV_im_1_Disabled, self.obj.AV_im_1 = self._applyPotentialChanges( self._paramWidget.imXunspecBox, self._paramWidget.imagXQSB ) - self._obj.AV_im_2_Disabled, self._obj.AV_im_2 = self._applyPotentialChanges( + self.obj.AV_im_2_Disabled, self.obj.AV_im_2 = self._applyPotentialChanges( self._paramWidget.imYunspecBox, self._paramWidget.imagYQSB ) - self._obj.AV_im_3_Disabled, self._obj.AV_im_3 = self._applyPotentialChanges( + self.obj.AV_im_3_Disabled, self.obj.AV_im_3 = self._applyPotentialChanges( self._paramWidget.imZunspecBox, self._paramWidget.imagZQSB ) # because this is an enable the others are disabled, reverse - self._obj.PotentialEnabled = not self._obj.PotentialEnabled + self.obj.PotentialEnabled = not self.obj.PotentialEnabled - self._obj.PotentialConstant = self._paramWidget.potentialConstantBox.isChecked() + self.obj.PotentialConstant = self._paramWidget.potentialConstantBox.isChecked() - self._obj.ElectricInfinity = self._paramWidget.electricInfinityBox.isChecked() + self.obj.ElectricInfinity = self._paramWidget.electricInfinityBox.isChecked() calc_is_checked = self._paramWidget.electricForcecalculationBox.isChecked() - self._obj.ElectricForcecalculation = calc_is_checked # two lines because max line length + self.obj.ElectricForcecalculation = calc_is_checked # two lines because max line length - self._obj.CapacitanceBodyEnabled = not self._paramWidget.capacitanceBodyBox.isChecked() - if self._obj.CapacitanceBodyEnabled: + self.obj.CapacitanceBodyEnabled = not self._paramWidget.capacitanceBodyBox.isChecked() + if self.obj.CapacitanceBodyEnabled: self._paramWidget.capacitanceBody_spinBox.setEnabled(True) - self._obj.CapacitanceBody = self._paramWidget.capacitanceBody_spinBox.value() + self.obj.CapacitanceBody = self._paramWidget.capacitanceBody_spinBox.value() diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py index 2c36e9be75..58e77f1b98 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_flowvelocity.py @@ -37,12 +37,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/FlowVelocity.ui" @@ -154,19 +155,16 @@ class _TaskPanel: def reject(self): self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -185,25 +183,25 @@ class _TaskPanel: self._paramWidget.velocityY.setProperty("unit", unit) self._paramWidget.velocityZ.setProperty("unit", unit) - self._paramWidget.velocityX.setProperty("value", self._obj.VelocityX) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityX).bind(self._obj, "VelocityX") - self._paramWidget.velocityXBox.setChecked(self._obj.VelocityXUnspecified) - self._paramWidget.formulaX.setText(self._obj.VelocityXFormula) - self._paramWidget.formulaXCB.setChecked(self._obj.VelocityXHasFormula) + self._paramWidget.velocityX.setProperty("value", self.obj.VelocityX) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityX).bind(self.obj, "VelocityX") + self._paramWidget.velocityXBox.setChecked(self.obj.VelocityXUnspecified) + self._paramWidget.formulaX.setText(self.obj.VelocityXFormula) + self._paramWidget.formulaXCB.setChecked(self.obj.VelocityXHasFormula) - self._paramWidget.velocityY.setProperty("value", self._obj.VelocityY) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityY).bind(self._obj, "VelocityY") - self._paramWidget.velocityYBox.setChecked(self._obj.VelocityYUnspecified) - self._paramWidget.formulaY.setText(self._obj.VelocityYFormula) - self._paramWidget.formulaYCB.setChecked(self._obj.VelocityYHasFormula) + self._paramWidget.velocityY.setProperty("value", self.obj.VelocityY) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityY).bind(self.obj, "VelocityY") + self._paramWidget.velocityYBox.setChecked(self.obj.VelocityYUnspecified) + self._paramWidget.formulaY.setText(self.obj.VelocityYFormula) + self._paramWidget.formulaYCB.setChecked(self.obj.VelocityYHasFormula) - self._paramWidget.velocityZ.setProperty("value", self._obj.VelocityZ) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityZ).bind(self._obj, "VelocityZ") - self._paramWidget.velocityZBox.setChecked(self._obj.VelocityZUnspecified) - self._paramWidget.formulaZ.setText(self._obj.VelocityZFormula) - self._paramWidget.formulaZCB.setChecked(self._obj.VelocityZHasFormula) + self._paramWidget.velocityZ.setProperty("value", self.obj.VelocityZ) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityZ).bind(self.obj, "VelocityZ") + self._paramWidget.velocityZBox.setChecked(self.obj.VelocityZUnspecified) + self._paramWidget.formulaZ.setText(self.obj.VelocityZFormula) + self._paramWidget.formulaZCB.setChecked(self.obj.VelocityZHasFormula) - self._paramWidget.normalBox.setChecked(self._obj.NormalToBoundary) + self._paramWidget.normalBox.setChecked(self.obj.NormalToBoundary) def _applyVelocityChanges(self, enabledBox, velocityQSB): enabled = enabledBox.isChecked() @@ -220,22 +218,22 @@ class _TaskPanel: def _applyWidgetChanges(self): # apply the velocities and their enabled state - self._obj.VelocityXUnspecified, self._obj.VelocityX = self._applyVelocityChanges( + self.obj.VelocityXUnspecified, self.obj.VelocityX = self._applyVelocityChanges( self._paramWidget.velocityXBox, self._paramWidget.velocityX ) - self._obj.VelocityXHasFormula = self._paramWidget.formulaXCB.isChecked() - self._obj.VelocityXFormula = self._paramWidget.formulaX.text() + self.obj.VelocityXHasFormula = self._paramWidget.formulaXCB.isChecked() + self.obj.VelocityXFormula = self._paramWidget.formulaX.text() - self._obj.VelocityYUnspecified, self._obj.VelocityY = self._applyVelocityChanges( + self.obj.VelocityYUnspecified, self.obj.VelocityY = self._applyVelocityChanges( self._paramWidget.velocityYBox, self._paramWidget.velocityY ) - self._obj.VelocityYHasFormula = self._paramWidget.formulaYCB.isChecked() - self._obj.VelocityYFormula = self._paramWidget.formulaY.text() + self.obj.VelocityYHasFormula = self._paramWidget.formulaYCB.isChecked() + self.obj.VelocityYFormula = self._paramWidget.formulaY.text() - self._obj.VelocityZUnspecified, self._obj.VelocityZ = self._applyVelocityChanges( + self.obj.VelocityZUnspecified, self.obj.VelocityZ = self._applyVelocityChanges( self._paramWidget.velocityZBox, self._paramWidget.velocityZ ) - self._obj.VelocityZHasFormula = self._paramWidget.formulaZCB.isChecked() - self._obj.VelocityZFormula = self._paramWidget.formulaZ.text() + self.obj.VelocityZHasFormula = self._paramWidget.formulaZCB.isChecked() + self.obj.VelocityZFormula = self._paramWidget.formulaZ.text() - self._obj.NormalToBoundary = self._paramWidget.normalBox.isChecked() + self.obj.NormalToBoundary = self._paramWidget.normalBox.isChecked() diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py index fe2106e765..87ece62587 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_initialflowvelocity.py @@ -37,12 +37,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/InitialFlowVelocity.ui" @@ -154,19 +155,16 @@ class _TaskPanel: def reject(self): self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -185,23 +183,23 @@ class _TaskPanel: self._paramWidget.velocityY.setProperty("unit", unit) self._paramWidget.velocityZ.setProperty("unit", unit) - self._paramWidget.velocityX.setProperty("value", self._obj.VelocityX) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityX).bind(self._obj, "VelocityX") - self._paramWidget.velocityXBox.setChecked(self._obj.VelocityXUnspecified) - self._paramWidget.formulaX.setText(self._obj.VelocityXFormula) - self._paramWidget.formulaXCB.setChecked(self._obj.VelocityXHasFormula) + self._paramWidget.velocityX.setProperty("value", self.obj.VelocityX) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityX).bind(self.obj, "VelocityX") + self._paramWidget.velocityXBox.setChecked(self.obj.VelocityXUnspecified) + self._paramWidget.formulaX.setText(self.obj.VelocityXFormula) + self._paramWidget.formulaXCB.setChecked(self.obj.VelocityXHasFormula) - self._paramWidget.velocityY.setProperty("value", self._obj.VelocityY) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityY).bind(self._obj, "VelocityY") - self._paramWidget.velocityYBox.setChecked(self._obj.VelocityYUnspecified) - self._paramWidget.formulaY.setText(self._obj.VelocityYFormula) - self._paramWidget.formulaYCB.setChecked(self._obj.VelocityYHasFormula) + self._paramWidget.velocityY.setProperty("value", self.obj.VelocityY) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityY).bind(self.obj, "VelocityY") + self._paramWidget.velocityYBox.setChecked(self.obj.VelocityYUnspecified) + self._paramWidget.formulaY.setText(self.obj.VelocityYFormula) + self._paramWidget.formulaYCB.setChecked(self.obj.VelocityYHasFormula) - self._paramWidget.velocityZ.setProperty("value", self._obj.VelocityZ) - FreeCADGui.ExpressionBinding(self._paramWidget.velocityZ).bind(self._obj, "VelocityZ") - self._paramWidget.velocityZBox.setChecked(self._obj.VelocityZUnspecified) - self._paramWidget.formulaZ.setText(self._obj.VelocityZFormula) - self._paramWidget.formulaZCB.setChecked(self._obj.VelocityZHasFormula) + self._paramWidget.velocityZ.setProperty("value", self.obj.VelocityZ) + FreeCADGui.ExpressionBinding(self._paramWidget.velocityZ).bind(self.obj, "VelocityZ") + self._paramWidget.velocityZBox.setChecked(self.obj.VelocityZUnspecified) + self._paramWidget.formulaZ.setText(self.obj.VelocityZFormula) + self._paramWidget.formulaZCB.setChecked(self.obj.VelocityZHasFormula) def _applyVelocityChanges(self, enabledBox, velocityQSB): enabled = enabledBox.isChecked() @@ -218,20 +216,20 @@ class _TaskPanel: def _applyWidgetChanges(self): # apply the velocities and their enabled state - self._obj.VelocityXUnspecified, self._obj.VelocityX = self._applyVelocityChanges( + self.obj.VelocityXUnspecified, self.obj.VelocityX = self._applyVelocityChanges( self._paramWidget.velocityXBox, self._paramWidget.velocityX ) - self._obj.VelocityXHasFormula = self._paramWidget.formulaXCB.isChecked() - self._obj.VelocityXFormula = self._paramWidget.formulaX.text() + self.obj.VelocityXHasFormula = self._paramWidget.formulaXCB.isChecked() + self.obj.VelocityXFormula = self._paramWidget.formulaX.text() - self._obj.VelocityYUnspecified, self._obj.VelocityY = self._applyVelocityChanges( + self.obj.VelocityYUnspecified, self.obj.VelocityY = self._applyVelocityChanges( self._paramWidget.velocityYBox, self._paramWidget.velocityY ) - self._obj.VelocityYHasFormula = self._paramWidget.formulaYCB.isChecked() - self._obj.VelocityYFormula = self._paramWidget.formulaY.text() + self.obj.VelocityYHasFormula = self._paramWidget.formulaYCB.isChecked() + self.obj.VelocityYFormula = self._paramWidget.formulaY.text() - self._obj.VelocityZUnspecified, self._obj.VelocityZ = self._applyVelocityChanges( + self.obj.VelocityZUnspecified, self.obj.VelocityZ = self._applyVelocityChanges( self._paramWidget.velocityZBox, self._paramWidget.velocityZ ) - self._obj.VelocityZHasFormula = self._paramWidget.formulaZCB.isChecked() - self._obj.VelocityZFormula = self._paramWidget.formulaZ.text() + self.obj.VelocityZHasFormula = self._paramWidget.formulaZCB.isChecked() + self.obj.VelocityZFormula = self._paramWidget.formulaZ.text() diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py b/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py index 93f94afd9f..6238f55e0d 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_initialpressure.py @@ -34,12 +34,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/InitialPressure.ui" @@ -75,18 +76,15 @@ class _TaskPanel: def reject(self): self._restoreVisibility() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -100,8 +98,8 @@ class _TaskPanel: self._part.ViewObject.hide() def _initParamWidget(self): - self._paramWidget.pressureQSB.setProperty("value", self._obj.Pressure) - FreeCADGui.ExpressionBinding(self._paramWidget.pressureQSB).bind(self._obj, "Pressure") + self._paramWidget.pressureQSB.setProperty("value", self.obj.Pressure) + FreeCADGui.ExpressionBinding(self._paramWidget.pressureQSB).bind(self.obj, "Pressure") def _applyWidgetChanges(self): pressure = None @@ -113,4 +111,4 @@ class _TaskPanel: "Pressure has not been set.\n".format(self._paramWidget.pressureQSB.text()) ) if pressure is not None: - self._obj.Pressure = pressure + self.obj.Pressure = pressure diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py b/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py index 919f48c2ff..ce80aa23be 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_magnetization.py @@ -35,12 +35,13 @@ import FreeCADGui from femguiutils import selection_widgets from femtools import membertools +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): def __init__(self, obj): - self._obj = obj + super().__init__(obj) self._paramWidget = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/Magnetization.ui" @@ -76,18 +77,15 @@ class _TaskPanel: def reject(self): self._restoreVisibility() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() - return True + return super().reject() def accept(self): - if self._obj.References != self._selectionWidget.references: - self._obj.References = self._selectionWidget.references + if self.obj.References != self._selectionWidget.references: + self.obj.References = self._selectionWidget.references self._applyWidgetChanges() - self._obj.Document.recompute() self._selectionWidget.finish_selection() - FreeCADGui.ActiveDocument.resetEdit() self._restoreVisibility() - return True + return super().accept() def _restoreVisibility(self): if self._mesh is not None and self._part is not None: @@ -101,37 +99,37 @@ class _TaskPanel: self._part.ViewObject.hide() def _initParamWidget(self): - self._paramWidget.realXQSB.setProperty("value", self._obj.Magnetization_re_1) + self._paramWidget.realXQSB.setProperty("value", self.obj.Magnetization_re_1) FreeCADGui.ExpressionBinding(self._paramWidget.realXQSB).bind( - self._obj, "Magnetization_re_1" + self.obj, "Magnetization_re_1" ) - self._paramWidget.realYQSB.setProperty("value", self._obj.Magnetization_re_2) + self._paramWidget.realYQSB.setProperty("value", self.obj.Magnetization_re_2) FreeCADGui.ExpressionBinding(self._paramWidget.realYQSB).bind( - self._obj, "Magnetization_re_2" + self.obj, "Magnetization_re_2" ) - self._paramWidget.realZQSB.setProperty("value", self._obj.Magnetization_re_3) + self._paramWidget.realZQSB.setProperty("value", self.obj.Magnetization_re_3) FreeCADGui.ExpressionBinding(self._paramWidget.realZQSB).bind( - self._obj, "Magnetization_re_3" + self.obj, "Magnetization_re_3" ) - self._paramWidget.imagXQSB.setProperty("value", self._obj.Magnetization_im_1) + self._paramWidget.imagXQSB.setProperty("value", self.obj.Magnetization_im_1) FreeCADGui.ExpressionBinding(self._paramWidget.imagXQSB).bind( - self._obj, "Magnetization_im_1" + self.obj, "Magnetization_im_1" ) - self._paramWidget.imagYQSB.setProperty("value", self._obj.Magnetization_im_2) + self._paramWidget.imagYQSB.setProperty("value", self.obj.Magnetization_im_2) FreeCADGui.ExpressionBinding(self._paramWidget.imagYQSB).bind( - self._obj, "Magnetization_im_2" + self.obj, "Magnetization_im_2" ) - self._paramWidget.imagZQSB.setProperty("value", self._obj.Magnetization_im_3) + self._paramWidget.imagZQSB.setProperty("value", self.obj.Magnetization_im_3) FreeCADGui.ExpressionBinding(self._paramWidget.imagZQSB).bind( - self._obj, "Magnetization_im_3" + self.obj, "Magnetization_im_3" ) - self._paramWidget.reXunspecBox.setChecked(self._obj.Magnetization_re_1_Disabled) - self._paramWidget.reYunspecBox.setChecked(self._obj.Magnetization_re_2_Disabled) - self._paramWidget.reZunspecBox.setChecked(self._obj.Magnetization_re_3_Disabled) - self._paramWidget.imXunspecBox.setChecked(self._obj.Magnetization_im_1_Disabled) - self._paramWidget.imYunspecBox.setChecked(self._obj.Magnetization_im_2_Disabled) - self._paramWidget.imZunspecBox.setChecked(self._obj.Magnetization_im_3_Disabled) + self._paramWidget.reXunspecBox.setChecked(self.obj.Magnetization_re_1_Disabled) + self._paramWidget.reYunspecBox.setChecked(self.obj.Magnetization_re_2_Disabled) + self._paramWidget.reZunspecBox.setChecked(self.obj.Magnetization_re_3_Disabled) + self._paramWidget.imXunspecBox.setChecked(self.obj.Magnetization_im_1_Disabled) + self._paramWidget.imYunspecBox.setChecked(self.obj.Magnetization_im_2_Disabled) + self._paramWidget.imZunspecBox.setChecked(self.obj.Magnetization_im_3_Disabled) def _applyMagnetizationChanges(self, enabledBox, magnetizationQSB): enabled = enabledBox.isChecked() @@ -148,32 +146,32 @@ class _TaskPanel: def _applyWidgetChanges(self): # apply the magnetizations and their enabled state - self._obj.Magnetization_re_1_Disabled, self._obj.Magnetization_re_1 = ( + self.obj.Magnetization_re_1_Disabled, self.obj.Magnetization_re_1 = ( self._applyMagnetizationChanges( self._paramWidget.reXunspecBox, self._paramWidget.realXQSB ) ) - self._obj.Magnetization_re_2_Disabled, self._obj.Magnetization_re_2 = ( + self.obj.Magnetization_re_2_Disabled, self.obj.Magnetization_re_2 = ( self._applyMagnetizationChanges( self._paramWidget.reYunspecBox, self._paramWidget.realYQSB ) ) - self._obj.Magnetization_re_3_Disabled, self._obj.Magnetization_re_3 = ( + self.obj.Magnetization_re_3_Disabled, self.obj.Magnetization_re_3 = ( self._applyMagnetizationChanges( self._paramWidget.reZunspecBox, self._paramWidget.realZQSB ) ) - self._obj.Magnetization_im_1_Disabled, self._obj.Magnetization_im_1 = ( + self.obj.Magnetization_im_1_Disabled, self.obj.Magnetization_im_1 = ( self._applyMagnetizationChanges( self._paramWidget.imXunspecBox, self._paramWidget.imagXQSB ) ) - self._obj.Magnetization_im_2_Disabled, self._obj.Magnetization_im_2 = ( + self.obj.Magnetization_im_2_Disabled, self.obj.Magnetization_im_2 = ( self._applyMagnetizationChanges( self._paramWidget.imYunspecBox, self._paramWidget.imagYQSB ) ) - self._obj.Magnetization_im_3_Disabled, self._obj.Magnetization_im_3 = ( + self.obj.Magnetization_im_3_Disabled, self.obj.Magnetization_im_3 = ( self._applyMagnetizationChanges( self._paramWidget.imZunspecBox, self._paramWidget.imagZQSB ) diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py index 2b4f292bde..414b1236e8 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_sectionprint.py @@ -36,17 +36,17 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel # TODO uses the old style Add button, move to the new style. See constraint fixed -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of ConstraintSectionPrint objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -93,18 +93,12 @@ class _TaskPanel: self.obj.Variable = self.variable self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.variable = self.obj.Variable diff --git a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py index cbcade3946..3b1cdfbdb0 100644 --- a/src/Mod/Fem/femtaskpanels/task_constraint_tie.py +++ b/src/Mod/Fem/femtaskpanels/task_constraint_tie.py @@ -36,16 +36,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of FemConstraintTie objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -94,18 +94,12 @@ class _TaskPanel: self.obj.Tolerance = self.tolerance self.obj.Adjust = self.adjust self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.tolerance = self.obj.Tolerance diff --git a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py index 3147398b71..9a982f4fbc 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_fluid1D.py @@ -40,16 +40,16 @@ from FreeCAD import Units from femguiutils import selection_widgets from femobjects import element_fluid1D +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of ElementFluid1D objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -242,18 +242,12 @@ class _TaskPanel: def accept(self): self.set_fluidsection_props() self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def get_fluidsection_props(self): self.SectionType = self.obj.SectionType diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py index 07ff4931bc..27aeffd3d2 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry1D.py @@ -36,16 +36,16 @@ import FreeCADGui from femguiutils import selection_widgets from femobjects import element_geometry1D +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of ElementGeometry1D objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -99,18 +99,12 @@ class _TaskPanel: def accept(self): self.set_beamsection_props() self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def get_beamsection_props(self): self.SectionType = self.obj.SectionType diff --git a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py index ecfe6f8f5e..db3cb77084 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_geometry2D.py @@ -35,16 +35,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of ElementGeometry2D objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -68,18 +68,12 @@ class _TaskPanel: def accept(self): self.obj.Thickness = self.thickness self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.thickness = self.obj.Thickness diff --git a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py index cabbd91ce8..51fd289c2f 100644 --- a/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py +++ b/src/Mod/Fem/femtaskpanels/task_element_rotation1D.py @@ -35,16 +35,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of ElementRotation1D objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -68,18 +68,12 @@ class _TaskPanel: def accept(self): self.obj.Rotation = self.rotation - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def rotation_changed(self, base_quantity_value): self.rotation = base_quantity_value diff --git a/src/Mod/Fem/femtaskpanels/task_material_common.py b/src/Mod/Fem/femtaskpanels/task_material_common.py index 1c8df61379..40944c1d63 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_common.py +++ b/src/Mod/Fem/femtaskpanels/task_material_common.py @@ -39,20 +39,17 @@ import FreeCADGui from FreeCAD import Units from femguiutils import selection_widgets +from . import base_femtaskpanel -unicode = str - - -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The editmode TaskPanel for FemMaterial objects """ def __init__(self, obj): + super().__init__(obj) - FreeCAD.Console.PrintMessage("\n") # empty line on start task panel - self.obj = obj self.material = self.obj.Material # FreeCAD material dictionary of current material self.card_path = "" self.materials = {} # { card_path : FreeCAD material dict, ... } @@ -213,18 +210,12 @@ class _TaskPanel: ) FreeCAD.Console.PrintError(error_message) QtGui.QMessageBox.critical(None, "Material data not changed", error_message) - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def do_not_set_thermal_zeros(self): """thermal material parameter are set to 0.0 if not available @@ -579,11 +570,10 @@ class _TaskPanel: if value: if not (1 - variation < float(old_value) / value < 1 + variation): material = self.material - # unicode() is an alias to str for py3 if qUnit != "": - material[matProperty] = unicode(value) + " " + qUnit + material[matProperty] = str(value) + " " + qUnit else: - material[matProperty] = unicode(value) + material[matProperty] = str(value) self.material = material if self.has_transient_mat is False: self.add_transient_material() @@ -626,7 +616,7 @@ class _TaskPanel: elif value == 0: # PoissonRatio was set to 0.0 what is possible material = self.material - material["PoissonRatio"] = unicode(value) + material["PoissonRatio"] = str(value) self.material = material if self.has_transient_mat is False: self.add_transient_material() diff --git a/src/Mod/Fem/femtaskpanels/task_material_reinforced.py b/src/Mod/Fem/femtaskpanels/task_material_reinforced.py index 9f3e1af491..816248cb20 100644 --- a/src/Mod/Fem/femtaskpanels/task_material_reinforced.py +++ b/src/Mod/Fem/femtaskpanels/task_material_reinforced.py @@ -34,22 +34,16 @@ from PySide import QtGui import FreeCAD import FreeCADGui +from . import base_femtaskpanel -unicode = str - - -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The editmode TaskPanel for MaterialReinforced objects """ - unicode = str - def __init__(self, obj): - - FreeCAD.Console.PrintMessage("\n") # empty line on start task panel - self.obj = obj + super().__init__(obj) # init matrix and reinforcement material self.material_m = self.obj.Material @@ -174,31 +168,10 @@ class _TaskPanel: ) FreeCAD.Console.PrintError(error_message) QtGui.QMessageBox.critical(None, "Material data not changed", error_message) - self.recompute_and_set_back_all() - return True + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - guidoc = FreeCADGui.getDocument(self.obj.Document) - guidoc.Document.recompute() - guidoc.resetEdit() - self.output_obj_mat_param() - - def output_obj_mat_param(self): - self.print_mat_dict(self.obj.Material) - self.print_mat_dict(self.obj.Reinforcement) - print("\n") - - def print_mat_dict(self, mat_dict): - if "Name" in mat_dict: - print("Material: {}".format(mat_dict["Name"])) - else: - print("Matrix material: no Name") - for key in mat_dict: - print(f" {key}: {mat_dict[key]}") + return super().reject() # choose material card *********************************************************************** def get_material_card(self, material): diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py index a88506021a..b530793f38 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_boundarylayer.py @@ -35,16 +35,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of MeshBoundaryLayer objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -80,18 +80,12 @@ class _TaskPanel: def accept(self): self.set_mesh_boundarylayer_props() self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.bl_min_thickness = self.obj.MinimumThickness diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py index d2fee5f904..9c35ba266c 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_gmsh.py @@ -43,20 +43,21 @@ import FreeCADGui import FemGui from femtools.femutils import is_of_type from femtools.femutils import getOutputWinColor +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of MeshGmsh objects and creation of new FEM mesh """ def __init__(self, obj): - self.mesh_obj = obj + super().__init__(obj) + self.form = FreeCADGui.PySideUic.loadUi( FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/MeshGmsh.ui" ) - self.Timer = QtCore.QTimer() self.Timer.start(100) # 100 milli seconds self.gmsh_runs = False @@ -79,9 +80,9 @@ class _TaskPanel: self.form.pb_get_gmsh_version, QtCore.SIGNAL("clicked()"), self.get_gmsh_version ) - self.form.cb_dimension.addItems(self.mesh_obj.getEnumerationsOfProperty("ElementDimension")) + self.form.cb_dimension.addItems(self.obj.getEnumerationsOfProperty("ElementDimension")) - self.form.cb_order.addItems(self.mesh_obj.getEnumerationsOfProperty("ElementOrder")) + self.form.cb_order.addItems(self.obj.getEnumerationsOfProperty("ElementOrder")) self.get_mesh_params() self.get_active_analysis() @@ -98,15 +99,11 @@ class _TaskPanel: def accept(self): self.set_mesh_params() - self.mesh_obj.ViewObject.Document.resetEdit() - self.mesh_obj.Document.recompute() - return True + return super().accept() def reject(self): - self.mesh_obj.ViewObject.Document.resetEdit() - self.mesh_obj.Document.recompute() self.Timer.stop() - return True + return super().reject() def clicked(self, button): if button == QtGui.QDialogButtonBox.Apply: @@ -114,16 +111,16 @@ class _TaskPanel: self.run_gmsh() def get_mesh_params(self): - self.clmax = self.mesh_obj.CharacteristicLengthMax - self.clmin = self.mesh_obj.CharacteristicLengthMin - self.dimension = self.mesh_obj.ElementDimension - self.order = self.mesh_obj.ElementOrder + self.clmax = self.obj.CharacteristicLengthMax + self.clmin = self.obj.CharacteristicLengthMin + self.dimension = self.obj.ElementDimension + self.order = self.obj.ElementOrder def set_mesh_params(self): - self.mesh_obj.CharacteristicLengthMax = self.clmax - self.mesh_obj.CharacteristicLengthMin = self.clmin - self.mesh_obj.ElementDimension = self.dimension - self.mesh_obj.ElementOrder = self.order + self.obj.CharacteristicLengthMax = self.clmax + self.obj.CharacteristicLengthMin = self.clmin + self.obj.ElementDimension = self.dimension + self.obj.ElementOrder = self.order def update(self): "fills the widgets" @@ -182,7 +179,7 @@ class _TaskPanel: def get_gmsh_version(self): from femmesh import gmshtools - version, full_message = gmshtools.GmshTools(self.mesh_obj, self.analysis).get_gmsh_version() + version, full_message = gmshtools.GmshTools(self.obj, self.analysis).get_gmsh_version() if version[0] and version[1] and version[2]: messagebox = QtGui.QMessageBox.information else: @@ -192,11 +189,11 @@ class _TaskPanel: def run_gmsh(self): from femmesh import gmshtools - gmsh_mesh = gmshtools.GmshTools(self.mesh_obj, self.analysis) + gmsh_mesh = gmshtools.GmshTools(self.obj, self.analysis) QApplication.setOverrideCursor(Qt.WaitCursor) - part = self.mesh_obj.Shape + part = self.obj.Shape if ( - self.mesh_obj.MeshRegionList + self.obj.MeshRegionList and part.Shape.ShapeType == "Compound" and ( is_of_type(part, "FeatureBooleanFragments") @@ -239,7 +236,7 @@ class _TaskPanel: self.analysis = None # no group meshing else: for m in analysis.Group: - if m.Name == self.mesh_obj.Name: + if m.Name == self.obj.Name: FreeCAD.Console.PrintLog(f"Active analysis found: {analysis.Name}\n") self.analysis = analysis # group meshing break diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_group.py b/src/Mod/Fem/femtaskpanels/task_mesh_group.py index c1e2030839..4d7ac998d3 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_group.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_group.py @@ -35,16 +35,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of MeshGroup objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -74,18 +74,12 @@ class _TaskPanel: def accept(self): self.obj.UseLabel = self.use_label self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.use_label = self.obj.UseLabel diff --git a/src/Mod/Fem/femtaskpanels/task_mesh_region.py b/src/Mod/Fem/femtaskpanels/task_mesh_region.py index cd72d9a0f8..9dcf33ee67 100644 --- a/src/Mod/Fem/femtaskpanels/task_mesh_region.py +++ b/src/Mod/Fem/femtaskpanels/task_mesh_region.py @@ -35,16 +35,16 @@ import FreeCAD import FreeCADGui from femguiutils import selection_widgets +from . import base_femtaskpanel -class _TaskPanel: +class _TaskPanel(base_femtaskpanel._BaseTaskPanel): """ The TaskPanel for editing References property of FemMeshRegion objects """ def __init__(self, obj): - - self.obj = obj + super().__init__(obj) # parameter widget self.parameterWidget = FreeCADGui.PySideUic.loadUi( @@ -69,18 +69,12 @@ class _TaskPanel: def accept(self): self.obj.CharacteristicLength = self.elelen self.obj.References = self.selectionWidget.references - self.recompute_and_set_back_all() - return True + self.selectionWidget.finish_selection() + return super().accept() def reject(self): - self.recompute_and_set_back_all() - return True - - def recompute_and_set_back_all(self): - doc = FreeCADGui.getDocument(self.obj.Document) - doc.Document.recompute() self.selectionWidget.finish_selection() - doc.resetEdit() + return super().reject() def init_parameter_widget(self): self.elelen = self.obj.CharacteristicLength