Source code for taurus.qt.qtgui.help.helppanel
# -*- coding: utf-8 -*-
##############################################################################
##
## This file is part of Taurus
##
## http://taurus-scada.org
##
## Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
##
## Taurus 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 of the License, or
## (at your option) any later version.
##
## Taurus 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 Taurus. If not, see <http://www.gnu.org/licenses/>.
##
##############################################################################
from taurus.external.qt import Qt
from taurus.external.qt import QtHelp
class _HelpBrowser(Qt.QTextBrowser):
def __init__(self, help_engine=None, parent=None):
Qt.QTextBrowser.__init__(self, parent)
self.__help_engine = None
if help_engine:
self.setHelpEngine(help_engine)
def setHelpEngine(self, help_engine):
self.__help_engine = help_engine
content_widget = help_engine.contentWidget()
index_widget = help_engine.indexWidget()
content_widget.connect(content_widget,
Qt.SIGNAL('linkActivated (QUrl)'),
self.setSource)
index_widget.connect(index_widget,
Qt.SIGNAL('linkActivated (QUrl)'),
self.setSource)
def loadResource(self, type, url):
if url.scheme() == "qthelp":
if self.__help_engine:
return Qt.QVariant(self.__help_engine.fileData(url))
return Qt.QTextBrowser.loadResource(self, type, url)
[docs]class HelpPanel(Qt.QWidget):
"""
Simple widget to display application help system. Usage::
from taurus.external.qt import Qt
from taurus.qt.qtgui.help import HelpPanel
app = Qt.QApplication([])
help_panel = HelpPanel()
help_panel.setCollectionFile("help_file.qhc")
help_panel.show()
app.exec_()
"""
def __init__(self, collection_file=None, parent=None):
Qt.QWidget.__init__(self, parent)
layout = Qt.QVBoxLayout(self)
self.setLayout(layout)
self.__help_engine = None
if collection_file:
self.setCollectionFile(collection_file)
def __clear(self):
layout = self.layout()
while layout.count():
layout.takeAt(0)
self.__help_engine = None
@Qt.Slot(str)
[docs] def setCollectionFile(self, collection_file):
"""
Displays the help from the specified collection file
:param collection_file: the collection file name (.qhc)
:type collection_file: str
"""
self.__clear()
if not collection_file:
return
help_engine = QtHelp.QHelpEngine(collection_file, self)
if not help_engine.setupData():
raise Exception("Help engine not available")
layout = self.layout()
self.__tab = tab = Qt.QTabWidget()
self.__help_engine = help_engine
content_widget = help_engine.contentWidget()
index_widget = help_engine.indexWidget()
tab.addTab(content_widget, "Contents")
tab.addTab(index_widget, "Index")
self.__help_browser = _HelpBrowser(help_engine, self)
splitter = Qt.QSplitter(Qt.Qt.Horizontal)
splitter.insertWidget(0, tab)
splitter.insertWidget(1, self.__help_browser)
layout.addWidget(splitter)
[docs] def getCollectionFile(self):
"""
Returns the name of the current collection file or empty
string if no collection file is active
:return: the name of the current collection file
:rtype: str
"""
if self.__help_engine:
return self.__help_engine.collectionFile()
return ""
[docs] def resetCollectionFile(self):
"""
Resets the collection file
"""
self.setCollectionFile("")
#: This property holds the current collection file name
#:
#: **Access functions:**
#:
#: * :meth:`HelpPanel.getCollectionFile`
#: * :meth:`HelpPanel.setCollectionFile`
#: * :meth:`HelpPanel.resetCollectionFile`
#:
collectionFile = Qt.Property("QString", getCollectionFile,
setCollectionFile,
resetCollectionFile)
@classmethod
[docs] def getQtDesignerPluginInfo(cls):
from taurus.qt.qtgui.resource import getThemeIcon
return { 'group' : 'Taurus Help',
'icon' : getThemeIcon("help"),
'module' : 'taurus.qt.qtgui.help',
'container' : False }
[docs]def main():
import sys
app = Qt.QApplication([])
help_panel = HelpPanel()
if len(sys.argv) > 1:
help_panel.setCollectionFile(sys.argv[1])
help_panel.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()