From 16ddbc3d7b467130f212f9db7d01caf268cc8926 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Wed, 2 Jun 2010 11:51:56 +0000
Subject: [PATCH] New SequenceViewer, added basic functionality to the Go Go
 InspectorGadget

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2314 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gui/pymod/CMakeLists.txt            |   2 +
 modules/gui/pymod/scene/icons/seq_icon.png  | Bin 0 -> 3220 bytes
 modules/gui/pymod/scene/inspector_widget.py |   2 +
 modules/gui/pymod/scene/sequence_widget.py  |  65 ++++++++++++++++++++
 4 files changed, 69 insertions(+)
 create mode 100644 modules/gui/pymod/scene/icons/seq_icon.png
 create mode 100644 modules/gui/pymod/scene/sequence_widget.py

diff --git a/modules/gui/pymod/CMakeLists.txt b/modules/gui/pymod/CMakeLists.txt
index 200515b96..d1cd7bd19 100644
--- a/modules/gui/pymod/CMakeLists.txt
+++ b/modules/gui/pymod/CMakeLists.txt
@@ -45,6 +45,7 @@ render_mode_widget.py
 render_op.py
 render_options_widget.py
 scene_observer_impl.py
+sequence_widget.py
 simple_widget.py
 sline_widget.py
 toolbar_options_widget.py
@@ -96,6 +97,7 @@ set(INSPECTOR_ICONS
   scene/icons/color_icon.png
   scene/icons/preset_icon.png  
   scene/icons/render_icon.png
+  scene/icons/seq_icon.png
   scene/icons/tool_icon.png
 )
 copy_if_different("./" "${STAGE_DIR}/share/openstructure/scene/icons" 
diff --git a/modules/gui/pymod/scene/icons/seq_icon.png b/modules/gui/pymod/scene/icons/seq_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9cc5487aac7c1f6f8f37820190268ec7774f4b3
GIT binary patch
literal 3220
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
E0NSb+Y5)KL

literal 0
HcmV?d00001

diff --git a/modules/gui/pymod/scene/inspector_widget.py b/modules/gui/pymod/scene/inspector_widget.py
index 4e7e7f761..20cf1d496 100644
--- a/modules/gui/pymod/scene/inspector_widget.py
+++ b/modules/gui/pymod/scene/inspector_widget.py
@@ -29,6 +29,7 @@ from render_options_widget import RenderOptionsWidget
 from color_options_widget import ColorOptionsWidget
 from ost.gui.scene.scene_observer_impl import SceneObserverImpl
 from preset_widget import PresetWidget
+from sequence_widget import SequenceWidget
 
 class InspectorWidget(ToolBarOptionsWidget):
   ICONS_PATH = os.path.join(ost.GetSharedDataPath(), "scene", "icons/")
@@ -39,6 +40,7 @@ class InspectorWidget(ToolBarOptionsWidget):
                 [InspectorWidget.ICONS_PATH+"render_icon.png",RenderOptionsWidget(self),None], 
                 [InspectorWidget.ICONS_PATH+"color_icon.png",ColorOptionsWidget(self),None],
                 [InspectorWidget.ICONS_PATH+"preset_icon.png", PresetWidget(self),None],
+                [InspectorWidget.ICONS_PATH+"seq_icon.png", SequenceWidget(self),None],
                 [InspectorWidget.ICONS_PATH+"tool_icon.png",app.tool_options_win.qobject,"Tool Options"]
               ]
     for o in options:
diff --git a/modules/gui/pymod/scene/sequence_widget.py b/modules/gui/pymod/scene/sequence_widget.py
new file mode 100644
index 000000000..40a77a73d
--- /dev/null
+++ b/modules/gui/pymod/scene/sequence_widget.py
@@ -0,0 +1,65 @@
+#------------------------------------------------------------------------------
+# This file is part of the OpenStructure project <www.openstructure.org>
+#
+# Copyright (C) 2008-2010 by the OpenStructure authors
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 3.0 of the License, or (at your option)
+# any later version.
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+#------------------------------------------------------------------------------
+
+import ost
+
+from ost import gui
+from ost import gfx
+from ost import seq
+
+from PyQt4 import QtCore, QtGui
+
+
+class SequenceWidget(QtGui.QWidget):
+  def __init__(self, parent=None):   
+    QtGui.QWidget.__init__(self, parent)
+    
+    self.text_ = "Sequences"
+    
+    self.display_modes_ = QtGui.QComboBox(self);
+    self.display_modes_.addItem("Highlight properties")
+    self.display_modes_.addItem("Secondary structure")
+    self.display_modes_.addItem("Highlight conservation")
+    QtCore.QObject.connect(self.display_modes_, QtCore.SIGNAL("activated(int)"), self.__ChangeDisplayMode)
+    self.setMinimumSize(250,150)
+    
+    
+  def Update(self):
+    self.display_modes_.setEnabled(True)
+    scene_selection = gui.SceneSelection.Instance()
+    
+    if scene_selection.GetActiveNodeCount() == 0 and scene_selection.GetActiveViewCount() == 0:
+      self.display_modes_.setEnabled(False)
+      return
+        
+    for i in range(0,scene_selection.GetActiveNodeCount()):
+      node = scene_selection.GetActiveNode(i)
+      if not (isinstance(node, gfx.Entity) or (isinstance(node, seq.AlignmentHandle))) :
+        self.display_modes_.setEnabled(self,False)
+        return
+    
+    seq_viewer = gui.GostyApp.Instance().GetSequenceViewerV2()
+    
+  def __ChangeDisplayMode(self):
+    seq_viewer = gui.GostyApp.Instance().GetSequenceViewerV2()
+    scene_selection = gui.SceneSelection.Instance()
+    for i in range(0,scene_selection.GetActiveNodeCount()):
+      node = scene_selection.GetActiveNode(i)
+      seq_viewer.ChangeDisplayMode(node, str(self.display_modes_.currentText()))
+    
\ No newline at end of file
-- 
GitLab