summaryrefslogtreecommitdiff
path: root/taurus
diff options
context:
space:
mode:
authorcpascual <cpascual@cells.es>2015-02-02 13:39:17 +0100
committercpascual <cpascual@cells.es>2015-02-02 13:45:01 +0100
commitbf24072199ecde053bd37693950c24387ad09300 (patch)
tree2ede63328f99a2149f3ca15e7dedff14be2c4d4d /taurus
parentd89cfa4ed7e80335c22ee1bbe54aa4d682391bd0 (diff)
Fix segfault when exiting Assistant in PyQt4.4
Pass the parent in the constructor of the assistant to prevent a segfault on exit when using PyQt4.4
Diffstat (limited to 'taurus')
-rw-r--r--taurus/lib/taurus/qt/qtgui/help/assistant.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/taurus/lib/taurus/qt/qtgui/help/assistant.py b/taurus/lib/taurus/qt/qtgui/help/assistant.py
index a17fb6c4..aedd8085 100644
--- a/taurus/lib/taurus/qt/qtgui/help/assistant.py
+++ b/taurus/lib/taurus/qt/qtgui/help/assistant.py
@@ -106,7 +106,7 @@ class _Assistant(Qt.QProcess):
__ASSISTANTS = {}
-def Assistant(collection_file, auto_create=True):
+def Assistant(collection_file, auto_create=True, parent=None):
"""
The :func:`Assistant` will create a subprocess displaying the
help system for the given QtHelp collection file (.qhc).
@@ -129,37 +129,40 @@ def Assistant(collection_file, auto_create=True):
def finished(*args):
if __ASSISTANTS and collection_file in __ASSISTANTS:
del __ASSISTANTS[collection_file]
- assistant = _Assistant(collection_file)
+ assistant = _Assistant(collection_file, parent=parent)
__ASSISTANTS[collection_file] = assistant
assistant.connect(assistant, Qt.SIGNAL('finished(int)'), finished)
return assistant
def main():
- assistant = None
+ import sys
+
+ app = Qt.QApplication([])
+ window = Qt.QWidget()
+ layout = Qt.QHBoxLayout(window)
+ goButton = Qt.QPushButton("Activate help", window)
+ terminateButton = Qt.QPushButton("Close help", window)
+ textEdit = Qt.QLineEdit(window)
+ layout.addWidget(textEdit)
+ layout.addWidget(goButton)
+ layout.addWidget(terminateButton)
+
def go():
- assistant = Assistant(textEdit.text())
+ assistant = Assistant(textEdit.text(), parent=window)
assistant.start()
assistant.waitForStarted()
assistant.assistantShow(Widgets.bookmarks)
def terminate():
- assistant = Assistant(textEdit.text(), auto_create=False)
+ assistant = Assistant(textEdit.text(), auto_create=False, parent=window)
if assistant:
assistant.terminate()
-
- app = Qt.QApplication([])
- window = Qt.QWidget()
- layout = Qt.QHBoxLayout(window)
- goButton = Qt.QPushButton("Activate help")
- terminateButton = Qt.QPushButton("Close help")
- textEdit = Qt.QLineEdit()
- layout.addWidget(textEdit)
- layout.addWidget(goButton)
- layout.addWidget(terminateButton)
+
+
goButton.connect(goButton, Qt.SIGNAL('clicked()'), go)
terminateButton.connect(terminateButton, Qt.SIGNAL('clicked()'), terminate)
window.show()
- app.exec_()
+ sys.exit(app.exec_())
if __name__ == "__main__":