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