Skip to content
Snippets Groups Projects
Commit 05b70881 authored by Marco Biasini's avatar Marco Biasini
Browse files

fix "allow direct reapply of fast bonds rendermode (BZDNG-240)"

parent dfd5b13f
No related branches found
No related tags found
No related merge requests found
...@@ -704,7 +704,23 @@ mol::EntityView Entity::GetRenderView(RenderMode::Type mode) ...@@ -704,7 +704,23 @@ mol::EntityView Entity::GetRenderView(RenderMode::Type mode)
void Entity::SetRenderMode(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); GfxObj::SetRenderMode(mode);
Scene::Instance().RenderModeChanged(GetName());
} }
void Entity::SetVisible(const mol::EntityView& view, bool visible){ void Entity::SetVisible(const mol::EntityView& view, bool visible){
......
...@@ -55,7 +55,7 @@ class ColorOptionsWidget(ComboOptionsWidget): ...@@ -55,7 +55,7 @@ class ColorOptionsWidget(ComboOptionsWidget):
self.setMinimumSize(250,200) self.setMinimumSize(250,200)
def DoSomething(self, item): def OnComboChange(self, item):
scene_selection = gui.SceneSelection.Instance() scene_selection = gui.SceneSelection.Instance()
if hasattr(item,"PrepareColoring"): if hasattr(item,"PrepareColoring"):
item.PrepareColoring() item.PrepareColoring()
......
...@@ -45,7 +45,8 @@ class ComboOptionsWidget(QtGui.QWidget): ...@@ -45,7 +45,8 @@ class ComboOptionsWidget(QtGui.QWidget):
self.__UpdateView(self.combo_box_.currentIndex()) 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) self.setEnabled(False)
...@@ -84,23 +85,31 @@ class ComboOptionsWidget(QtGui.QWidget): ...@@ -84,23 +85,31 @@ class ComboOptionsWidget(QtGui.QWidget):
self.stacked_widget_.removeWidget(self.combo_box_.itemData(index).toPyObject()[1]) self.stacked_widget_.removeWidget(self.combo_box_.itemData(index).toPyObject()[1])
self.combo_box_.removeItem(index) 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 is called whenever the View is updated.
This abstract method must be implemented by all subclasses. This abstract method must be implemented by all subclasses.
It can be used to do something ;-) whenever the combobox changes its value. 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): 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) i = self.__GetIndex(ident)
if(i>=0) and self.combo_box_.currentIndex() != i: if(i>=0) and self.combo_box_.currentIndex() != i:
self.combo_box_.setCurrentIndex(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): def GetCurrentWidget(self):
if(self.combo_box_.currentIndex() >= 0): if(self.combo_box_.currentIndex() >= 0):
...@@ -124,7 +133,7 @@ class ComboOptionsWidget(QtGui.QWidget): ...@@ -124,7 +133,7 @@ class ComboOptionsWidget(QtGui.QWidget):
if (self.combo_box_.count() > 0): if (self.combo_box_.count() > 0):
pair = self.__GetCurrentPair() pair = self.__GetCurrentPair()
self.stacked_widget_.setCurrentWidget(pair[1]) self.stacked_widget_.setCurrentWidget(pair[1])
self.DoSomething(pair[1]) self.OnComboChange(pair[1])
def __GetIndex(self, ident): def __GetIndex(self, ident):
for i in range(self.combo_box_.count()): for i in range(self.combo_box_.count()):
......
...@@ -53,7 +53,7 @@ class InspectorWidget(ToolBarOptionsWidget): ...@@ -53,7 +53,7 @@ class InspectorWidget(ToolBarOptionsWidget):
self.setMinimumSize(250,215) self.setMinimumSize(250,215)
#ToolBarOptionsWidget Method #ToolBarOptionsWidget Method
def DoSomething(self, item): def OnComboChange(self, item):
self.DoResize() self.DoResize()
#Observer Methods #Observer Methods
...@@ -84,14 +84,17 @@ class InspectorDialog(QtGui.QDialog): ...@@ -84,14 +84,17 @@ class InspectorDialog(QtGui.QDialog):
self.setLayout(self.layout) self.setLayout(self.layout)
self.mywidget_ = InspectorWidget(self) self.mywidget_ = InspectorWidget(self)
self.layout.addWidget(self.mywidget_) 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.setSizePolicy(size_pol)
self.DoResize() self.DoResize()
def DoResize(self): def DoResize(self):
if(hasattr(self, "mywidget_")): if(hasattr(self, "mywidget_")):
self.setMinimumSize(self.mywidget_.minimumWidth(),self.mywidget_.minimumHeight()) self.setMinimumSize(self.mywidget_.minimumWidth(),
self.resize(self.mywidget_.minimumWidth(),self.mywidget_.minimumHeight()) self.mywidget_.minimumHeight())
self.resize(self.mywidget_.minimumWidth(),
self.mywidget_.minimumHeight())
def ToggleHide(self,checked): def ToggleHide(self,checked):
self.setHidden(not self.isHidden()) self.setHidden(not self.isHidden())
......
...@@ -77,16 +77,16 @@ class RenderOptionsWidget(ComboOptionsWidget): ...@@ -77,16 +77,16 @@ class RenderOptionsWidget(ComboOptionsWidget):
self._in_view_method = False self._in_view_method = False
self.setMinimumSize(250,200) self.setMinimumSize(250,200)
def OnActivate(self, item):
def DoSomething(self, item): pass
def OnComboChange(self, item):
scene_selection = gui.SceneSelection.Instance() scene_selection = gui.SceneSelection.Instance()
for i in range(0,scene_selection.GetActiveNodeCount()): for i in range(0,scene_selection.GetActiveNodeCount()):
node = scene_selection.GetActiveNode(i) node = scene_selection.GetActiveNode(i)
if isinstance(node, gfx.Entity) or (_img_present and isinstance(node, gfx.MapIso)): if isinstance(node, gfx.Entity) or (_img_present and isinstance(node, gfx.MapIso)):
render_mode = item.GetRenderMode() render_mode = item.GetRenderMode()
if render_mode is not None: if render_mode is not None:
node.SetRenderMode(render_mode) node.SetRenderMode(render_mode)
if(scene_selection.GetActiveViewCount() > 0): if(scene_selection.GetActiveViewCount() > 0):
entity = scene_selection.GetViewEntity() entity = scene_selection.GetViewEntity()
view = scene_selection.GetViewUnion() view = scene_selection.GetViewUnion()
......
...@@ -95,13 +95,13 @@ class ToolBarOptionsWidget(QtGui.QWidget): ...@@ -95,13 +95,13 @@ class ToolBarOptionsWidget(QtGui.QWidget):
return True return True
return False return False
def DoSomething(self, item): def OnComboChange(self, item):
"""This abstract method is called whenever the View is updated. """This abstract method is called whenever the View is updated.
This abstract method must be implemented by all subclasses. This abstract method must be implemented by all subclasses.
It can be used to do something ;-) whenever the combobox changes its value. 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): def DoResize(self):
item = self.__GetCurrentWidget() item = self.__GetCurrentWidget()
...@@ -132,7 +132,7 @@ class ToolBarOptionsWidget(QtGui.QWidget): ...@@ -132,7 +132,7 @@ class ToolBarOptionsWidget(QtGui.QWidget):
self.current_action_.setChecked(True) self.current_action_.setChecked(True)
else: else:
self.current_action_=action self.current_action_=action
self.DoSomething(widget) self.OnComboChange(widget)
#Private Methods #Private Methods
def __GetCurrentWidget(self): def __GetCurrentWidget(self):
return self.stackedWidget.currentWidget(); return self.stackedWidget.currentWidget();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment