Merge pull request #20053 from marioalexis84/fem-elmer_equation_references

Fem: Use disambiguation for solid references in Elmer equation task panels
This commit is contained in:
Chris Hennes
2025-03-10 15:53:31 +00:00
committed by GitHub
2 changed files with 21 additions and 21 deletions

View File

@@ -295,20 +295,6 @@ class GeometryElementsSelection(QtGui.QWidget):
self.setWindowTitle(self.tr("Geometry reference selector"))
# button
self.pushButton_Add = QtGui.QPushButton(self.tr("Add"))
# label
self._helpTextLbl = QtGui.QLabel()
self._helpTextLbl.setWordWrap(True)
helpTextPart1 = self.tr(
'Click on "Add" and select geometric elements to add them to the list.{}'
"The following geometry elements can be selected: {}{}{}"
).format("<br>", "<b>", self.sel_elem_text, "</b>")
helpTextEmpty = self.tr(
"{}If no geometry is added to the list, all remaining ones are used."
).format("<br>")
if self.showHintEmptyList is True:
self._helpTextLbl.setText(helpTextPart1 + helpTextEmpty)
else:
self._helpTextLbl.setText(helpTextPart1)
# list
self.list_References = QtGui.QListWidget()
# radiobutton down the list
@@ -323,10 +309,19 @@ class GeometryElementsSelection(QtGui.QWidget):
rbtnLayout.addWidget(self.rb_solid)
# main layout
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self._helpTextLbl)
mainLayout.addWidget(self.pushButton_Add)
mainLayout.addWidget(self.list_References)
tip1 = self.tr(
"Click and select geometric elements to add them to the list.{}"
"The following geometry elements can be selected: {}{}{}"
).format("<br>", "<b>", self.sel_elem_text, "</b>")
tip2 = self.tr(
"{}If no geometry is added to the list, all remaining ones are used."
).format("<br>")
tip1 += tip2 if self.showHintEmptyList else ""
self.pushButton_Add.setToolTip(tip1)
# if only "Solid" is avail, std-sel-mode is obsolete
if "Solid" in self.sel_elem_types and len(self.sel_elem_types) == 1:
self.selection_mode_solid = True

View File

@@ -76,13 +76,16 @@ class _TaskPanel:
def __init__(self, obj):
self._obj = obj
self._refWidget = selection_widgets.SolidSelector()
self._refWidget.setReferences(obj.References)
self._selectionWidget = selection_widgets.GeometryElementsSelection(
obj.References, ["Solid", "Face"], False, True
)
# start in solid selection mode
self._selectionWidget.rb_solid.setChecked(True)
propWidget = obj.ViewObject.Proxy.getTaskWidget(obj.ViewObject)
if propWidget is None:
self.form = self._refWidget
self.form = self._selectionWidget
else:
self.form = [self.refWidget, propWidget]
self.form = [self._selectionWidget, propWidget]
analysis = obj.getParentGroup()
self._mesh = membertools.get_single_member(analysis, "Fem::FemMeshObject")
self._part = self._mesh.Shape if self._mesh is not None else None
@@ -97,12 +100,14 @@ class _TaskPanel:
self._part.ViewObject.show()
def reject(self):
self._selectionWidget.finish_selection()
self._recomputeAndRestore()
return True
def accept(self):
if self._obj.References != self._refWidget.references():
self._obj.References = self._refWidget.references()
if self._obj.References != self._selectionWidget.references:
self._obj.References = self._selectionWidget.references
self._selectionWidget.finish_selection()
self._recomputeAndRestore()
return True