Source code for glue.utils.qt.qmessagebox_widget

# A patched version of QMessageBox that allows copying the error

from __future__ import absolute_import, division, print_function

import os

from glue.external.qt import QtGui

__all__ = ['QMessageBoxPatched']


[docs]class QMessageBoxPatched(QtGui.QMessageBox): def __init__(self, *args, **kwargs): super(QMessageBoxPatched, self).__init__(*args, **kwargs) copy_action = QtGui.QAction('&Copy', self) copy_action.setShortcut(QtGui.QKeySequence.Copy) copy_action.triggered.connect(self.copy_detailed) select_all = QtGui.QAction('Select &All', self) select_all.setShortcut(QtGui.QKeySequence.SelectAll) select_all.triggered.connect(self.select_all) menubar = QtGui.QMenuBar() editMenu = menubar.addMenu('&Edit') editMenu.addAction(copy_action) editMenu.addAction(select_all) self.layout().setMenuBar(menubar) @property def detailed_text_widget(self): return self.findChild(QtGui.QTextEdit)
[docs] def select_all(self): self.detailed_text_widget.selectAll()
[docs] def copy_detailed(self): clipboard = QtGui.QApplication.clipboard() selected_text = self.detailed_text_widget.textCursor().selectedText() # Newlines are unicode, so need to normalize them to ASCII selected_text = os.linesep.join(selected_text.splitlines()) clipboard.setText(selected_text)