From ef6743360e27de2f1125b73b154ceafb7762bb8a Mon Sep 17 00:00:00 2001
From: Tobias Schmidt <tobias.schmidt@unibas.ch>
Date: Thu, 14 Jun 2012 14:30:38 +0200
Subject: [PATCH] fix "carbons only" button in gui (fixes BZDNG-366)

---
 modules/gui/pymod/scene/color_options_widget.py   | 15 ++++++++++++---
 modules/gui/pymod/scene/gradient_editor_widget.py |  5 ++++-
 modules/gui/pymod/scene/uniform_color_widget.py   |  5 ++++-
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/modules/gui/pymod/scene/color_options_widget.py b/modules/gui/pymod/scene/color_options_widget.py
index 13e33f7c6..1d8e95cf6 100644
--- a/modules/gui/pymod/scene/color_options_widget.py
+++ b/modules/gui/pymod/scene/color_options_widget.py
@@ -146,7 +146,10 @@ class ByElementWidget(QtGui.QWidget):
       
   def ChangeViewColor(self, entity, view):
     if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
-      beco=gfx.ByElementColorOp(mol.QueryViewWrapper(view))
+      if self.parent_.GetCarbonsOnly():
+        beco=gfx.ByElementColorOp(mol.QueryViewWrapper(mol.Query("ele=C"), view))
+      else:
+        beco=gfx.ByElementColorOp(mol.QueryViewWrapper(view))
       entity.Apply(beco)
       
   def GetText(self):
@@ -185,7 +188,10 @@ class ByChainWidget(QtGui.QWidget):
       
   def ChangeViewColor(self, entity, view):
     if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
-      bco=gfx.ByChainColorOp(mol.QueryViewWrapper(view))
+      if self.parent_.GetCarbonsOnly():
+        bco=gfx.ByChainColorOp(mol.QueryViewWrapper(mol.Query("ele=C"),view))
+      else:
+        bco=gfx.ByChainColorOp(mol.QueryViewWrapper(view))
       entity.Apply(bco)
       
   def GetText(self):
@@ -234,7 +240,10 @@ class ByEntityWidget(QtGui.QWidget):
      
   def ChangeViewColor(self, entity, view):
     if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
-      bco=gfx.ByChainColorOp(mol.QueryViewWrapper(view))
+      if self.parent_.GetCarbonsOnly():
+        bco=gfx.ByChainColorOp(mol.QueryViewWrapper(mol.Query("ele=C"),view))
+      else:
+        bco=gfx.ByChainColorOp(mol.QueryViewWrapper(view))
       entity.Apply(bco)
       
   def GetText(self):
diff --git a/modules/gui/pymod/scene/gradient_editor_widget.py b/modules/gui/pymod/scene/gradient_editor_widget.py
index 34c11a24a..ee61e2721 100644
--- a/modules/gui/pymod/scene/gradient_editor_widget.py
+++ b/modules/gui/pymod/scene/gradient_editor_widget.py
@@ -90,7 +90,10 @@ class GradientEditor(QtGui.QWidget):
 
   def ChangeViewColor(self, entity, view):
     if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
-      glco=gfx.GradientLevelColorOp(mol.QueryViewWrapper(view),self.props[self.prop_combo_box_.currentIndex()],self.gradient_edit_.GetGfxGradient(),mol.Prop.Level.UNSPECIFIED)
+      if self.parent_.GetCarbonsOnly():
+        glco=gfx.GradientLevelColorOp(mol.QueryViewWrapper(mol.Query("ele=C"),view),self.props[self.prop_combo_box_.currentIndex()],self.gradient_edit_.GetGfxGradient(),mol.Prop.Level.UNSPECIFIED)
+      else:
+        glco=gfx.GradientLevelColorOp(mol.QueryViewWrapper(view),self.props[self.prop_combo_box_.currentIndex()],self.gradient_edit_.GetGfxGradient(),mol.Prop.Level.UNSPECIFIED)
       entity.Apply(glco)
       
 #Gradient Preview
diff --git a/modules/gui/pymod/scene/uniform_color_widget.py b/modules/gui/pymod/scene/uniform_color_widget.py
index db8e5346f..66461dcff 100644
--- a/modules/gui/pymod/scene/uniform_color_widget.py
+++ b/modules/gui/pymod/scene/uniform_color_widget.py
@@ -97,7 +97,10 @@ class UniformColorWidget(QtGui.QWidget):
   def ChangeViewColor(self, entity, view):
     if isinstance(entity, gfx.Entity) and isinstance(view, mol.EntityView):
       gfx_color = self.color_select_widget_.GetGfxColor()
-      ufco=gfx.UniformColorOp(mol.QueryViewWrapper(view),gfx_color)
+      if self.parent_.GetCarbonsOnly():
+        ufco=gfx.UniformColorOp(mol.QueryViewWrapper(mol.Query("ele=C"), view),gfx_color)
+      else:
+        ufco=gfx.UniformColorOp(mol.QueryViewWrapper(view),gfx_color)
       entity.Apply(ufco)
     
   def resizeEvent(self, event):
-- 
GitLab