From ce9760be89e1d2f639723d379f1566d1d9bf1cf6 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Tue, 8 Jun 2010 10:02:48 +0000
Subject: [PATCH] InspectorGadget, some fixes for selectionhelper

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2357 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gui/pymod/scene/color_options_widget.py |  2 +-
 modules/gui/pymod/scene/inspector_widget.py     |  3 +--
 modules/gui/pymod/scene/preset_widget.py        | 12 +++++-------
 .../gui/pymod/scene/render_options_widget.py    |  2 +-
 .../gui/pymod/scene/scene_selection_helper.py   | 17 ++++++++++++-----
 modules/gui/pymod/scene/wireframe_widget.py     |  9 ++-------
 6 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/modules/gui/pymod/scene/color_options_widget.py b/modules/gui/pymod/scene/color_options_widget.py
index 36ee59c57..7ec80e1a5 100644
--- a/modules/gui/pymod/scene/color_options_widget.py
+++ b/modules/gui/pymod/scene/color_options_widget.py
@@ -82,7 +82,7 @@ class ColorOptionsWidget(ComboOptionsWidget):
       self.RemoveWidget(w[0])
     
     
-    if SelHelper().CheckAllFlags(SelHelper.HAS_IMG | SelHelper.IS_SINGLE):
+    if SelHelper().CheckFlags(SelHelper.HAS_IMG | SelHelper.IS_ONE_TYPE):
       for w in self.img_widgets_:
         self.AddWidget(w[0], w[1])
     elif SelHelper().CheckMinOneFlag(SelHelper.HAS_ENTITY| SelHelper.HAS_VIEW| SelHelper.HAS_SURFACE) and SelHelper().CheckNotFlags(SelHelper.HAS_IMG):
diff --git a/modules/gui/pymod/scene/inspector_widget.py b/modules/gui/pymod/scene/inspector_widget.py
index da6cf265a..25082a267 100644
--- a/modules/gui/pymod/scene/inspector_widget.py
+++ b/modules/gui/pymod/scene/inspector_widget.py
@@ -47,8 +47,7 @@ class InspectorWidget(ToolBarOptionsWidget):
     
     self.obs = SceneObserverImpl()
     self.obs.AttachObserver(self)
-    ost.scene.AttachObserver(self.obs)    
-    self.scene_selection_ = gui.SceneSelection.Instance()
+    ost.scene.AttachObserver(self.obs)
     QtCore.QObject.connect(app.scene_win.qobject,QtCore.SIGNAL("ActiveNodesChanged()"),
                            self.ActiveNodesChanged)     
     
diff --git a/modules/gui/pymod/scene/preset_widget.py b/modules/gui/pymod/scene/preset_widget.py
index cb67283e8..dc97b10f7 100644
--- a/modules/gui/pymod/scene/preset_widget.py
+++ b/modules/gui/pymod/scene/preset_widget.py
@@ -23,6 +23,7 @@ import ost
 import os
 from datetime import datetime
 from PyQt4 import QtCore, QtGui
+from scene_selection_helper import SelHelper
 from preset_list_model import PresetListModel
 from preset_editor_widget import PresetEditor
 from preset import Preset
@@ -145,16 +146,13 @@ class PresetWidget(QtGui.QWidget):
   
   def Update(self):
     self.setEnabled(True)
-    scene_selection = gui.SceneSelection.Instance()
-    if scene_selection.GetActiveNodeCount() == 0:
+    if SelHelper().CheckAllFlags(SelHelper.NO_SELECTION):
       self.setEnabled(False)
       return
     
-    for i in range(0,scene_selection.GetActiveNodeCount()):
-      entity = scene_selection.GetActiveNode(i)
-      if not isinstance(scene_selection.GetActiveNode(i), gfx.Entity):
-        self.setEnabled(False)
-        return
+    if SelHelper().CheckNotFlags(SelHelper.HAS_ENTITY | SelHelper.IS_ONE_TYPE):
+      self.setEnabled(False)
+      return
 
   def Rename(self):
     if(self.list_view_.currentIndex().isValid()):
diff --git a/modules/gui/pymod/scene/render_options_widget.py b/modules/gui/pymod/scene/render_options_widget.py
index 105fcb096..d6356e637 100644
--- a/modules/gui/pymod/scene/render_options_widget.py
+++ b/modules/gui/pymod/scene/render_options_widget.py
@@ -131,7 +131,7 @@ class RenderOptionsWidget(ComboOptionsWidget):
           elif render_mode != node.GetRenderMode():
             render_mode_valid = False
  
-    if SelHelper().CheckFlags(SelHelper.HAS_IMG | SelHelper.IS_SINGLE):
+    if SelHelper().CheckFlags(SelHelper.HAS_IMG | SelHelper.IS_ONE_TYPE):
       for w in self.img_widgets_:
         self.AddWidget(w[0], w[1])
     elif SelHelper().CheckMinOneFlag(SelHelper.HAS_ENTITY| SelHelper.HAS_VIEW) and SelHelper().CheckNotFlags(SelHelper.HAS_IMG):
diff --git a/modules/gui/pymod/scene/scene_selection_helper.py b/modules/gui/pymod/scene/scene_selection_helper.py
index 43b058426..8168defb7 100644
--- a/modules/gui/pymod/scene/scene_selection_helper.py
+++ b/modules/gui/pymod/scene/scene_selection_helper.py
@@ -38,8 +38,10 @@ class SelHelper():
   HAS_VIEW = 2
   HAS_IMG = 4
   HAS_SURFACE = 8
-  IS_SINGLE = 16
-  IS_MULTI = 32
+  IS_ONE_TYPE = 16
+  IS_MULTI_TYPE = 32
+  SINGLE_SELECTION = 64
+  MULTI_SELCTION = 128
     
   def __init__(self):
     self.__dict__ = self.__shared_state
@@ -76,10 +78,15 @@ class SelHelper():
       cnt += 1
     
     if cnt == 1:
-      self.current_flags_ = self.current_flags_ | SelHelper.IS_SINGLE
+      self.current_flags_ = self.current_flags_ | SelHelper.IS_ONE_TYPE
     elif cnt > 1:
-      self.current_flags_ = self.current_flags_ | SelHelper.IS_MULTI
-         
+      self.current_flags_ = self.current_flags_ | SelHelper.IS_MULTI_TYPE
+    
+    if self.scene_sel_.GetActiveNodeCount()==1:
+      self.current_flags_ = self.current_flags_ | SelHelper.SINGLE_SELECTION
+    elif self.scene_sel_.GetActiveNodeCount()>1:
+      self.current_flags_ = self.current_flags_ | SelHelper.MULTI_SELECTION
+    
   def CheckAllFlags(self, flags):
     if(flags == self.current_flags_ & flags) and (flags == self.current_flags_ | flags):
       return True
diff --git a/modules/gui/pymod/scene/wireframe_widget.py b/modules/gui/pymod/scene/wireframe_widget.py
index d5f131ca4..4f1c70692 100644
--- a/modules/gui/pymod/scene/wireframe_widget.py
+++ b/modules/gui/pymod/scene/wireframe_widget.py
@@ -27,6 +27,7 @@ try:
 except ImportError:
   _img_present=False
   pass
+from scene_selection_helper import SelHelper
 
 #Wireframe Options
 class WireframeWidget(QtGui.QWidget):
@@ -92,13 +93,7 @@ class WireframeWidget(QtGui.QWidget):
   def Update(self):
     self.setEnabled(True)
     self.UpdateGui()
-    scene_selection = gui.SceneSelection.Instance()
-    if scene_selection.GetActiveNodeCount() > 0 :
-      for i in range(0,scene_selection.GetActiveNodeCount()):
-        node = scene_selection.GetActiveNode(i)
-        if _img_present and isinstance(node, gfx.MapIso):
-          self.setEnabled(False)
-    else:
+    if SelHelper().CheckNotFlags(SelHelper.HAS_IMG | SelHelper.IS_SINGLE):
       self.setEnabled(False)          
 
   def GetText(self):
-- 
GitLab