FEM: Python reference selection task panel, fix initial selection and selection after delete an item

This commit is contained in:
Bernd Hahnebach
2018-05-21 14:32:06 +02:00
committed by wmayer
parent 16e70d9719
commit 5f37a30230
8 changed files with 56 additions and 16 deletions

View File

@@ -413,11 +413,12 @@ class _TaskPanelFemElementFluid1D:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -449,7 +450,7 @@ class _TaskPanelFemElementFluid1D:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -457,6 +458,10 @@ class _TaskPanelFemElementFluid1D:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -212,11 +212,12 @@ class _TaskPanelFemElementGeometry1D:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -248,7 +249,7 @@ class _TaskPanelFemElementGeometry1D:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -256,6 +257,10 @@ class _TaskPanelFemElementGeometry1D:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -170,11 +170,12 @@ class _TaskPanelFemElementGeometry2D:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -206,7 +207,7 @@ class _TaskPanelFemElementGeometry2D:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -214,6 +215,10 @@ class _TaskPanelFemElementGeometry2D:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -171,11 +171,12 @@ class _TaskPanelFemElementRotation1D:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -207,7 +208,7 @@ class _TaskPanelFemElementRotation1D:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -215,6 +216,10 @@ class _TaskPanelFemElementRotation1D:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -610,11 +610,12 @@ class _TaskPanelFemMaterial:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -677,7 +678,7 @@ class _TaskPanelFemMaterial:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -688,6 +689,10 @@ class _TaskPanelFemMaterial:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -200,11 +200,12 @@ class _TaskPanelFemMeshBoundaryLayer:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -263,7 +264,7 @@ class _TaskPanelFemMeshBoundaryLayer:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -271,3 +272,7 @@ class _TaskPanelFemMeshBoundaryLayer:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))

View File

@@ -190,11 +190,12 @@ class _TaskPanelFemMeshGroup:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -257,7 +258,7 @@ class _TaskPanelFemMeshGroup:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -265,6 +266,10 @@ class _TaskPanelFemMeshGroup:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()

View File

@@ -186,11 +186,12 @@ class _TaskPanelFemMeshRegion:
if not self.references:
return
currentItemName = str(self.form.list_References.currentItem().text())
currentRow = self.form.list_References.currentRow()
for ref in self.references:
refname_to_compare_listentry = ref[0].Name + ':' + ref[1]
if refname_to_compare_listentry == currentItemName:
self.references.remove(ref)
self.rebuild_list_References()
self.rebuild_list_References(currentRow)
def remove_all_references(self):
self.references = []
@@ -253,7 +254,7 @@ class _TaskPanelFemMeshRegion:
else:
FreeCAD.Console.PrintMessage(selection[0].Name + ' --> ' + selection[1] + ' is in reference list already!\n')
def rebuild_list_References(self):
def rebuild_list_References(self, current_row=0):
self.form.list_References.clear()
items = []
for ref in self.references:
@@ -261,6 +262,10 @@ class _TaskPanelFemMeshRegion:
items.append(item_name)
for listItemName in sorted(items):
self.form.list_References.addItem(listItemName)
if current_row > self.form.list_References.count() - 1: # first row is 0
current_row = self.form.list_References.count() - 1
if self.form.list_References.count() > 0:
self.form.list_References.setCurrentItem(self.form.list_References.item(current_row))
def select_clicked_reference_shape(self):
self.setback_listobj_visibility()