diff --git a/modules/gui/pymod/scene/color_options_widget.py b/modules/gui/pymod/scene/color_options_widget.py index 36ee59c57e0dae8b28b77f6c5459e10f9cbc7e6f..7ec80e1a5ecdef5e141f728dbc2f80c648089246 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 da6cf265a4a9bf6d6a1e53a7dcccb07151cc1f79..25082a26709ad32bbfcf7b4950f0491198243c3d 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 cb67283e839db899794a3ced0ba1056080aaea1f..dc97b10f78d5d0be6700b9b435e3702cdf7f9833 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 105fcb0963b25b094c1f70b162273a4b8b0a989a..d6356e637b340d8e823c1d0c495485ba74985b9b 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 43b0584264acb22ef8820f0a29316625a32efc50..8168defb7ae0a2b0cd8b490a16ef79f400fee1c6 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 d5f131ca413106f8ba5d8c964d920ffa1ae223db..4f1c70692805df9f04c783af20289a3c355a7ee6 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):