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
Branches
Tags
No related merge requests found
......@@ -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){
......
......@@ -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()
......
......@@ -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()):
......
......@@ -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())
......
......@@ -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()
......
......@@ -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();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment