diff --git a/modules/gfx/src/entity.cc b/modules/gfx/src/entity.cc index 0317fd8ea21afaa9b999fd7e95537d8dc03791f2..29927009dd77bfdeca7b409b21e075cc809c3b1a 100644 --- a/modules/gfx/src/entity.cc +++ b/modules/gfx/src/entity.cc @@ -704,7 +704,23 @@ mol::EntityView Entity::GetRenderView(RenderMode::Type mode) void Entity::SetRenderMode(RenderMode::Type mode) { + EntityRenderer* rend = this->GetOrCreateRenderer(mode); + if(!rend) return; + + // substract view from all renderers + for (RendererMap::iterator i=renderer_.begin(), + e=renderer_.end(); i!=e; ++i) { + impl::EntityRenderer* renderer=i->second; + renderer->ClearViews(); + if (renderer==rend) { + renderer->AddView(qv_.GetEntityView()); + } + renderer->UpdateViews(); + } + this->ReapplyColorOps(); // done in rebuild? + this->FlagRebuild(); GfxObj::SetRenderMode(mode); + Scene::Instance().RenderModeChanged(GetName()); } void Entity::SetVisible(const mol::EntityView& view, bool visible){ diff --git a/modules/gui/pymod/scene/color_options_widget.py b/modules/gui/pymod/scene/color_options_widget.py index 4bb7012c56a981461e7148d38d4f651657a55f2b..55b26a6a4c980f4140211957f8edd5c901b6afae 100644 --- a/modules/gui/pymod/scene/color_options_widget.py +++ b/modules/gui/pymod/scene/color_options_widget.py @@ -55,7 +55,7 @@ class ColorOptionsWidget(ComboOptionsWidget): self.setMinimumSize(250,200) - def DoSomething(self, item): + def OnComboChange(self, item): scene_selection = gui.SceneSelection.Instance() if hasattr(item,"PrepareColoring"): item.PrepareColoring() diff --git a/modules/gui/pymod/scene/combo_options_widget.py b/modules/gui/pymod/scene/combo_options_widget.py index 1dff39c62012e4b6bfee6acc25505d32bf9ed570..8961c04a263db4877ad2bb5385ce0e6283cafc1e 100644 --- a/modules/gui/pymod/scene/combo_options_widget.py +++ b/modules/gui/pymod/scene/combo_options_widget.py @@ -45,7 +45,8 @@ class ComboOptionsWidget(QtGui.QWidget): self.__UpdateView(self.combo_box_.currentIndex()) - QtCore.QObject.connect(self.combo_box_, QtCore.SIGNAL("activated(int)"), self.__UpdateView) + QtCore.QObject.connect(self.combo_box_, QtCore.SIGNAL("activated(int)"), + self.__UpdateView) self.setEnabled(False) @@ -84,23 +85,31 @@ class ComboOptionsWidget(QtGui.QWidget): self.stacked_widget_.removeWidget(self.combo_box_.itemData(index).toPyObject()[1]) self.combo_box_.removeItem(index) - def DoSomething(self, item): + def OnComboChange(self, item): """This abstract method is called whenever the View is updated. This abstract method must be implemented by all subclasses. It can be used to do something ;-) whenever the combobox changes its value. """ - raise NotImplementedError, "Subclasses must define DoSomething()" + raise NotImplementedError, "Subclasses must define OnComboChange()" + + def OnActivate(self, item): + return self.OnComboChange(self, item) def ChangeSelectedItem(self, ident): - """Change Current Selected Item. + """ + Change Current Selected Item. - Shows the widget which corresponds to the ident in the show area. If ident is not valid, nothing happens. + Shows the widget which corresponds to the ident in the show area. If ident + is not valid, nothing happens. """ i = self.__GetIndex(ident) if(i>=0) and self.combo_box_.currentIndex() != i: self.combo_box_.setCurrentIndex(i) - self.__UpdateView(None) + if (self.combo_box_.count() > 0): + pair = self.__GetCurrentPair() + self.stacked_widget_.setCurrentWidget(pair[1]) + self.OnActivate(pair[1]) def GetCurrentWidget(self): if(self.combo_box_.currentIndex() >= 0): @@ -124,7 +133,7 @@ class ComboOptionsWidget(QtGui.QWidget): if (self.combo_box_.count() > 0): pair = self.__GetCurrentPair() self.stacked_widget_.setCurrentWidget(pair[1]) - self.DoSomething(pair[1]) + self.OnComboChange(pair[1]) def __GetIndex(self, ident): for i in range(self.combo_box_.count()): diff --git a/modules/gui/pymod/scene/inspector_widget.py b/modules/gui/pymod/scene/inspector_widget.py index 0d55de190194724dfc7a2dc7637736c4051e5cb7..4a976841ba8e20939418df3cb08b384e668f1369 100644 --- a/modules/gui/pymod/scene/inspector_widget.py +++ b/modules/gui/pymod/scene/inspector_widget.py @@ -53,7 +53,7 @@ class InspectorWidget(ToolBarOptionsWidget): self.setMinimumSize(250,215) #ToolBarOptionsWidget Method - def DoSomething(self, item): + def OnComboChange(self, item): self.DoResize() #Observer Methods @@ -84,14 +84,17 @@ class InspectorDialog(QtGui.QDialog): self.setLayout(self.layout) self.mywidget_ = InspectorWidget(self) self.layout.addWidget(self.mywidget_) - size_pol = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding) + size_pol = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) self.setSizePolicy(size_pol) self.DoResize() def DoResize(self): if(hasattr(self, "mywidget_")): - self.setMinimumSize(self.mywidget_.minimumWidth(),self.mywidget_.minimumHeight()) - self.resize(self.mywidget_.minimumWidth(),self.mywidget_.minimumHeight()) + self.setMinimumSize(self.mywidget_.minimumWidth(), + self.mywidget_.minimumHeight()) + self.resize(self.mywidget_.minimumWidth(), + self.mywidget_.minimumHeight()) def ToggleHide(self,checked): self.setHidden(not self.isHidden()) diff --git a/modules/gui/pymod/scene/render_options_widget.py b/modules/gui/pymod/scene/render_options_widget.py index 124c32c66d3472083465dd99d2811b645ed31861..989f1c91782ab6fc09e609e79d5c5582498c5a71 100644 --- a/modules/gui/pymod/scene/render_options_widget.py +++ b/modules/gui/pymod/scene/render_options_widget.py @@ -77,16 +77,16 @@ class RenderOptionsWidget(ComboOptionsWidget): self._in_view_method = False self.setMinimumSize(250,200) - - def DoSomething(self, item): + def OnActivate(self, item): + pass + def OnComboChange(self, item): scene_selection = gui.SceneSelection.Instance() for i in range(0,scene_selection.GetActiveNodeCount()): node = scene_selection.GetActiveNode(i) if isinstance(node, gfx.Entity) or (_img_present and isinstance(node, gfx.MapIso)): render_mode = item.GetRenderMode() if render_mode is not None: - node.SetRenderMode(render_mode) - + node.SetRenderMode(render_mode) if(scene_selection.GetActiveViewCount() > 0): entity = scene_selection.GetViewEntity() view = scene_selection.GetViewUnion() diff --git a/modules/gui/pymod/scene/toolbar_options_widget.py b/modules/gui/pymod/scene/toolbar_options_widget.py index bedaf8482db1fec8c1972a0420e95a36d1149376..fc4720493f026e2f7f64c91c17d6542f710d1ffc 100644 --- a/modules/gui/pymod/scene/toolbar_options_widget.py +++ b/modules/gui/pymod/scene/toolbar_options_widget.py @@ -95,13 +95,13 @@ class ToolBarOptionsWidget(QtGui.QWidget): return True return False - def DoSomething(self, item): + def OnComboChange(self, item): """This abstract method is called whenever the View is updated. This abstract method must be implemented by all subclasses. It can be used to do something ;-) whenever the combobox changes its value. """ - raise NotImplementedError, "Subclasses must define DoSomething()" + raise NotImplementedError, "Subclasses must define OnComboChange()" def DoResize(self): item = self.__GetCurrentWidget() @@ -132,7 +132,7 @@ class ToolBarOptionsWidget(QtGui.QWidget): self.current_action_.setChecked(True) else: self.current_action_=action - self.DoSomething(widget) + self.OnComboChange(widget) #Private Methods def __GetCurrentWidget(self): return self.stackedWidget.currentWidget();