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