From b5180f5823e3d89be716371cbf1156e8b51009e3 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Fri, 4 Jun 2010 14:27:27 +0000
Subject: [PATCH] InspectorGadget, merged Preset and MapIso contour widget

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2342 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gui/pymod/scene/inspector_widget.py   |  6 +--
 modules/gui/pymod/scene/map_level_widget.py   | 46 ++++++++++++++++++-
 modules/gui/pymod/scene/preset_widget.py      |  2 +-
 .../gui/pymod/scene/toolbar_options_widget.py |  2 +-
 4 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/modules/gui/pymod/scene/inspector_widget.py b/modules/gui/pymod/scene/inspector_widget.py
index 6535203ce..057a9c6b8 100644
--- a/modules/gui/pymod/scene/inspector_widget.py
+++ b/modules/gui/pymod/scene/inspector_widget.py
@@ -28,8 +28,7 @@ from toolbar_options_widget import ToolBarOptionsWidget
 from render_options_widget import RenderOptionsWidget
 from color_options_widget import ColorOptionsWidget
 from ost.gui.scene.scene_observer_impl import SceneObserverImpl
-from preset_widget import PresetWidget
-from map_level_widget import MapLevelWidget
+from map_level_widget import AdditionalSettingsWidget
 
 class InspectorWidget(ToolBarOptionsWidget):
   ICONS_PATH = os.path.join(ost.GetSharedDataPath(), "scene", "icons/")
@@ -39,8 +38,7 @@ class InspectorWidget(ToolBarOptionsWidget):
     options = [
                 [InspectorWidget.ICONS_PATH+"render_icon.png",RenderOptionsWidget(self),None], 
                 [InspectorWidget.ICONS_PATH+"color_icon.png",ColorOptionsWidget(self),None],
-                [InspectorWidget.ICONS_PATH+"preset_icon.png", PresetWidget(self),None],
-                [InspectorWidget.ICONS_PATH+"preset_icon.png", MapLevelWidget(self),"Map Level Options"],
+                [InspectorWidget.ICONS_PATH+"preset_icon.png", AdditionalSettingsWidget(self),"Additional Node Settings"],
                 [InspectorWidget.ICONS_PATH+"tool_icon.png",app.tool_options_win.qobject,"Tool Options"]
               ]
     for o in options:
diff --git a/modules/gui/pymod/scene/map_level_widget.py b/modules/gui/pymod/scene/map_level_widget.py
index 51584c73a..d86e91f07 100644
--- a/modules/gui/pymod/scene/map_level_widget.py
+++ b/modules/gui/pymod/scene/map_level_widget.py
@@ -28,6 +28,48 @@ except ImportError:
   pass
 from PyQt4 import QtCore, QtGui
 
+from preset_widget import PresetWidget
+
+class AdditionalSettingsWidget(QtGui.QWidget):
+  def __init__(self, parent=None):
+    QtGui.QWidget.__init__(self, parent)
+    self.stack = QtGui.QStackedWidget(self);
+    self.map_widget_ = MapLevelWidget(self)
+    self.setContentsMargins(0,0,0,0)
+    self.preset_widget_ = PresetWidget(self)
+    self.stack.addWidget(self.map_widget_);
+    self.stack.addWidget(self.preset_widget_);
+    self.stack.setContentsMargins(0,0,0,0)
+    self.setMinimumSize(self.preset_widget_.minimumSize())
+    
+  def Update(self):
+    self.setEnabled(True)
+    scene_selection = gui.SceneSelection.Instance()
+    all_img = True
+    all_entity = True
+    for i in range(0,scene_selection.GetActiveNodeCount()):
+      node = scene_selection.GetActiveNode(i)
+      if not (isinstance(node, gfx.Entity) or isinstance(node, gfx.Surface)):
+        all_entity = False
+      if (not _img_present) or (not isinstance(node, gfx.MapIso)):
+        all_img = False
+    if all_img:
+      self.map_widget_.Update()
+      self.setMinimumSize(self.map_widget_.minimumSize())
+      self.resize(self.map_widget_.minimumSize())
+      self.stack.resize(self.map_widget_.minimumSize())
+      self.stack.setMinimumSize(self.map_widget_.minimumSize())
+      self.stack.setCurrentWidget(self.map_widget_)
+    elif all_entity:
+      self.preset_widget_.Update()
+      self.setMinimumSize(self.preset_widget_.minimumSize())
+      self.resize(self.preset_widget_.minimumSize())
+      self.stack.resize(self.preset_widget_.minimumSize())
+      self.stack.setMinimumSize(self.preset_widget_.minimumSize())
+      self.stack.setCurrentWidget(self.preset_widget_)
+    else:
+      self.setEnabled(False)
+    
 #Map Level Widget
 class MapLevelWidget(QtGui.QWidget):
   def __init__(self, parent=None):
@@ -56,7 +98,7 @@ class MapLevelWidget(QtGui.QWidget):
     QtCore.QObject.connect(self.level_preview_, QtCore.SIGNAL("levelModified"), self.ModifySpinBox)
     QtCore.QObject.connect(self.level_spinbox_, QtCore.SIGNAL("valueChanged(double)"), self.UpdateLevel)
 
-    self.setMinimumSize(250,300)
+    self.setMinimumSize(250,200)
         
   def Update(self):
     scene_selection = gui.SceneSelection.Instance()
@@ -93,7 +135,7 @@ class LevelPreview(QtGui.QWidget):
     
     #Defaults
     self.border_offset_ = 3
-    self.preview_height_ = 100
+    self.preview_height_ = 150
     QtGui.QWidget.__init__(self, parent)
     
     #Ui
diff --git a/modules/gui/pymod/scene/preset_widget.py b/modules/gui/pymod/scene/preset_widget.py
index d581a38ea..cb67283e8 100644
--- a/modules/gui/pymod/scene/preset_widget.py
+++ b/modules/gui/pymod/scene/preset_widget.py
@@ -67,7 +67,7 @@ class PresetWidget(QtGui.QWidget):
   
     QtCore.QObject.connect(self.list_view_, QtCore.SIGNAL("doubleClicked(const QModelIndex)"), self.Load)
     
-    self.setMinimumSize(250,150)
+    self.setMinimumSize(250,200)
     
   def CreateImmutableContextMenu(self):  
     self.immucontext_menu_ = QtGui.QMenu("Context menu", self)
diff --git a/modules/gui/pymod/scene/toolbar_options_widget.py b/modules/gui/pymod/scene/toolbar_options_widget.py
index 006c09b16..d331b62b4 100644
--- a/modules/gui/pymod/scene/toolbar_options_widget.py
+++ b/modules/gui/pymod/scene/toolbar_options_widget.py
@@ -126,13 +126,13 @@ class ToolBarOptionsWidget(QtGui.QWidget):
        self.current_action_ = action
     widget = action.data().toPyObject()[1]
     self.stackedWidget.setCurrentWidget(widget)
-    self.DoSomething(widget)
     if hasattr(widget, "Update"): 
       widget.Update()
     if(self.current_action_ == action):
       self.current_action_.setChecked(True)
     else:
       self.current_action_=action
+    self.DoSomething(widget)
   #Private Methods
   def __GetCurrentWidget(self):
       return self.stackedWidget.currentWidget();
-- 
GitLab