From f4f2000033155aef81bf247e0fcc6eb8006ff895 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sat, 24 Jun 2017 00:01:08 +0200 Subject: [PATCH] FEM: python task panels, only start SelectionObserver if noone runs already --- src/Mod/Fem/PyGui/_TaskPanelFemElementFluid1D.py | 7 +++++-- src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry1D.py | 7 +++++-- src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry2D.py | 7 +++++-- src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py | 7 +++++-- src/Mod/Fem/PyGui/_TaskPanelFemMeshGroup.py | 7 +++++-- src/Mod/Fem/PyGui/_TaskPanelFemMeshRegion.py | 7 +++++-- 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemElementFluid1D.py b/src/Mod/Fem/PyGui/_TaskPanelFemElementFluid1D.py index 71ae62b3ca..a3b1ce6e62 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemElementFluid1D.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemElementFluid1D.py @@ -357,8 +357,11 @@ class _TaskPanelFemElementFluid1D: FreeCADGui.Selection.clearSelection() # start SelectionObserver and parse the function to add the References to the widget print_message = "Select Edges by single click on them to add them to the list" - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): # print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1]) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry1D.py b/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry1D.py index 3041366dc9..1460021565 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry1D.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry1D.py @@ -156,8 +156,11 @@ class _TaskPanelFemElementGeometry1D: FreeCADGui.Selection.clearSelection() # start SelectionObserver and parse the function to add the References to the widget print_message = "Select Edges by single click on them to add them to the list" - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): # print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1]) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry2D.py b/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry2D.py index f2eb714440..217cc7f161 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry2D.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemElementGeometry2D.py @@ -114,8 +114,11 @@ class _TaskPanelFemElementGeometry2D: 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" - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): # print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1]) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py b/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py index ac29429f69..5451649105 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py @@ -541,8 +541,11 @@ class _TaskPanelFemMaterial: print_message = self.selection_mode_solid_print_message else: print_message = self.selection_mode_std_print_message - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): print('selection: ', selection[0].Shape.ShapeType, ' --> ', selection[0].Name, ' --> ', selection[1]) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemMeshGroup.py b/src/Mod/Fem/PyGui/_TaskPanelFemMeshGroup.py index 64eb59b6b6..5694c72c69 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemMeshGroup.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemMeshGroup.py @@ -137,8 +137,11 @@ class _TaskPanelFemMeshGroup: print_message = self.selection_mode_solid_print_message else: print_message = self.selection_mode_std_print_message - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1]) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemMeshRegion.py b/src/Mod/Fem/PyGui/_TaskPanelFemMeshRegion.py index a9ba5cf2e6..c456867268 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemMeshRegion.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemMeshRegion.py @@ -132,8 +132,11 @@ class _TaskPanelFemMeshRegion: print_message = self.selection_mode_solid_print_message else: print_message = self.selection_mode_std_print_message - import FemSelectionObserver - self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) + if not self.sel_server: + # if we do not check, we would start a new SelectionObserver on every click on addReference button + # but close only one SelectionObserver on leaving the task panel + import FemSelectionObserver + self.sel_server = FemSelectionObserver.FemSelectionObserver(self.selectionParser, print_message) def selectionParser(self, selection): print('selection: ', selection[0].Shape.ShapeType, ' ', selection[0].Name, ' ', selection[1])