FEM: python task panels, more selection on click of list items in task panel

This commit is contained in:
Bernd Hahnebach
2017-06-26 21:26:25 +01:00
committed by wmayer
parent 49dc28c54c
commit f84b0cb53b
6 changed files with 170 additions and 0 deletions

View File

@@ -39,10 +39,12 @@ class _TaskPanelFemElementGeometry2D:
FreeCADGui.Selection.clearSelection()
self.sel_server = None
self.obj = obj
self.obj_notvisible = []
self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/PyGui/TaskPanelFemElementGeometry2D.ui")
QtCore.QObject.connect(self.form.if_thickness, QtCore.SIGNAL("valueChanged(Base::Quantity)"), self.thickness_changed)
QtCore.QObject.connect(self.form.pushButton_Reference, QtCore.SIGNAL("clicked()"), self.add_references)
self.form.list_References.itemSelectionChanged.connect(self.select_clicked_reference_shape)
self.form.list_References.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.form.list_References.connect(self.form.list_References, QtCore.SIGNAL("customContextMenuRequested(QPoint)"), self.references_list_right_clicked)
@@ -50,6 +52,7 @@ class _TaskPanelFemElementGeometry2D:
self.update()
def accept(self):
self.setback_listobj_visibility()
self.set_shellthickness_props()
if self.sel_server:
FreeCADGui.Selection.removeObserver(self.sel_server)
@@ -58,6 +61,7 @@ class _TaskPanelFemElementGeometry2D:
return True
def reject(self):
self.setback_listobj_visibility()
if self.sel_server:
FreeCADGui.Selection.removeObserver(self.sel_server)
FreeCADGui.ActiveDocument.resetEdit()
@@ -111,6 +115,7 @@ class _TaskPanelFemElementGeometry2D:
'''Called if Button add_reference is triggered'''
# in constraints EditTaskPanel the selection is active as soon as the taskpanel is open
# here the addReference button EditTaskPanel has to be triggered to start selection mode
self.setback_listobj_visibility()
FreeCADGui.Selection.clearSelection()
# start SelectionObserver and parse the function to add the References to the widget
print_message = "Select Faces by single click on them to add them to the list"
@@ -140,3 +145,29 @@ class _TaskPanelFemElementGeometry2D:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()
if self.sel_server:
FreeCADGui.Selection.removeObserver(self.sel_server)
self.sel_server = None
if not self.sel_server:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
# print( 'found: shape: ' + ref[0].Name + ' element: ' + ref[1])
if not ref[0].ViewObject.Visibility:
self.obj_notvisible.append(ref[0])
ref[0].ViewObject.Visibility = True
FreeCADGui.Selection.clearSelection()
FreeCADGui.Selection.addSelection(ref[0], ref[1])
def setback_listobj_visibility(self):
'''set back Visibility of the list objects
'''
for obj in self.obj_notvisible:
obj.ViewObject.Visibility = False
self.obj_notvisible = []