From c0de5cfd8880c3277be6e2f4ad1255676c5d8e15 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 3 Feb 2011 17:11:20 +0000 Subject: [PATCH] Fix up exception form --- openlp.pyw | 1 + openlp/core/ui/exceptiondialog.py | 23 ++++ openlp/core/ui/exceptionform.py | 30 ++++- resources/forms/exceptiondialog.ui | 194 ++++++++++++++++++----------- 4 files changed, 170 insertions(+), 78 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 8d20080c9..4704a8740 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -196,6 +196,7 @@ class OpenLP(QtGui.QApplication): self.mainWindow.repaint() update_check = QtCore.QSettings().value( u'general/update check', QtCore.QVariant(True)).toBool() + a=c if update_check: VersionThread(self.mainWindow, app_version).start() return self.exec_() diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 69035dc4d..9e9b558df 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -46,6 +46,15 @@ class Ui_ExceptionDialog(object): self.messageLabel.setObjectName(u'messageLabel') self.messageLayout.addWidget(self.messageLabel) self.exceptionLayout.addLayout(self.messageLayout) + self.descriptionExplanation = QtGui.QLabel(exceptionDialog) + self.descriptionExplanation.setObjectName(u'descriptionExplanation') + self.exceptionLayout.addWidget(self.descriptionExplanation) + self.descriptionTextEdit = QtGui.QPlainTextEdit(exceptionDialog) + self.descriptionTextEdit.setObjectName(u'descriptionTextEdit') + self.exceptionLayout.addWidget(self.descriptionTextEdit) + self.descriptionWordCount = QtGui.QLabel(exceptionDialog) + self.descriptionWordCount.setObjectName(u'descriptionWordCount') + self.exceptionLayout.addWidget(self.descriptionWordCount) self.exceptionTextEdit = QtGui.QPlainTextEdit(exceptionDialog) self.exceptionTextEdit.setReadOnly(True) self.exceptionTextEdit.setObjectName(u'exceptionTextEdit') @@ -65,19 +74,31 @@ class Ui_ExceptionDialog(object): self.saveReportButton.setObjectName(u'saveReportButton') self.exceptionButtonBox.addButton(self.saveReportButton, QtGui.QDialogButtonBox.ActionRole) + self.attachFileButton = QtGui.QPushButton(exceptionDialog) + self.attachFileButton.setIcon(build_icon(u':/general/general_open.png')) + self.attachFileButton.setObjectName(u'attachFileButton') + self.exceptionButtonBox.addButton(self.attachFileButton, + QtGui.QDialogButtonBox.ActionRole) self.retranslateUi(exceptionDialog) + QtCore.QObject.connect(self.descriptionTextEdit, + QtCore.SIGNAL(u'textChanged()'), self.onDescriptionUpdated) QtCore.QObject.connect(self.exceptionButtonBox, QtCore.SIGNAL(u'rejected()'), exceptionDialog.reject) QtCore.QObject.connect(self.sendReportButton, QtCore.SIGNAL(u'pressed()'), self.onSendReportButtonPressed) QtCore.QObject.connect(self.saveReportButton, QtCore.SIGNAL(u'pressed()'), self.onSaveReportButtonPressed) + QtCore.QObject.connect(self.attachFileButton, + QtCore.SIGNAL(u'pressed()'), self.onAttachFileButtonPressed) QtCore.QMetaObject.connectSlotsByName(exceptionDialog) def retranslateUi(self, exceptionDialog): exceptionDialog.setWindowTitle( translate('OpenLP.ExceptionDialog', 'Error Occurred')) + self.descriptionExplanation.setText(translate('OpenLP.ExceptionDialog', + 'Please enter a description of what you were doing to cause this ' + 'error')) self.messageLabel.setText(translate('OpenLP.ExceptionDialog', 'Oops! ' 'OpenLP hit a problem, and couldn\'t recover. The text in the box ' 'below contains information that might be helpful to the OpenLP ' @@ -88,3 +109,5 @@ class Ui_ExceptionDialog(object): 'Send E-Mail')) self.saveReportButton.setText(translate('OpenLP.ExceptionDialog', 'Save to File')) + self.attachFileButton.setText(translate('OpenLP.ExceptionDialog', + 'Attach File')) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 347bcf8f1..ff37770d2 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -70,8 +70,13 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): self.setupUi(self) self.settingsSection = u'crashreport' + def exec_(self): + self.onDescriptionUpdated() + return QtGui.QDialog.exec_(self) + def _createReport(self): openlp_version = self.parent().applicationVersion[u'full'] + description = unicode(self.descriptionTextEdit.toPlainText()) traceback = unicode(self.exceptionTextEdit.toPlainText()) system = unicode(translate('OpenLP.ExceptionForm', 'Platform: %s\n')) % platform.platform() @@ -90,7 +95,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): system = system + u'Desktop: KDE SC\n' elif os.environ.get(u'GNOME_DESKTOP_SESSION_ID'): system = system + u'Desktop: GNOME\n' - return (openlp_version, traceback, system, libraries) + return (openlp_version, description, traceback, system, libraries) def onSaveReportButtonPressed(self): """ @@ -99,6 +104,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): report = unicode(translate('OpenLP.ExceptionForm', '**OpenLP Bug Report**\n' 'Version: %s\n\n' + '--- Details of the Exception. ---\n\n%s\n\n ' '--- Exception Traceback ---\n%s\n' '--- System information ---\n%s\n' '--- Library Versions ---\n%s\n')) @@ -129,10 +135,11 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): Opening systems default email client and inserting exception log and system informations. """ + attach = None body = unicode(translate('OpenLP.ExceptionForm', '*OpenLP Bug Report*\n' 'Version: %s\n\n' - '--- Please enter the report below this line. ---\n\n\n' + '--- Details of the Exception. ---\n\n%s\n\n ' '--- Exception Traceback ---\n%s\n' '--- System information ---\n%s\n' '--- Library Versions ---\n%s\n', @@ -145,5 +152,20 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): if u':' in line: exception = line.split(u'\n')[-1].split(u':')[0] subject = u'Bug report: %s in %s' % (exception, source) - mailto(address=u'bugs@openlp.org', subject=subject, - body=body % content) + if attach: + mailto(address=u'bugs@openlp.org', subject=subject, + body=body % content, attach=attach) + else: + mailto(address=u'bugs@openlp.org', subject=subject, + body=body % content) + + def onDescriptionUpdated(self): + count = int(20 - len(self.descriptionTextEdit.toPlainText())) + if count < 0: + count = 0 + self.descriptionWordCount.setText( + unicode(translate('OpenLP.ExceptionDialog', + 'Characters to Enter : %s')) % count ) + + def onAttachFileButtonPressed(self): + print self.descriptionTextEdit.toPlainText() diff --git a/resources/forms/exceptiondialog.ui b/resources/forms/exceptiondialog.ui index f6f15cdc7..9fd138092 100644 --- a/resources/forms/exceptiondialog.ui +++ b/resources/forms/exceptiondialog.ui @@ -13,82 +13,128 @@ Dialog - - - 8 + + + + 8 + 194 + 564 + 171 + - - 8 + + true - - - - 0 - - - 0 - - - 0 - - - - - - 64 - 64 - - - - - 64 - 64 - - - - - - - :/graphics/exception.png - - - Qt::AlignCenter - - - - - - - Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred. - - - true - - - - - - - - - true - - - false - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Close - - - - + + false + + + + + + 8 + 373 + 83 + 26 + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + 8 + 103 + 561 + 71 + + + + + 0 + 0 + + + + + + + 10 + 170 + 301 + 17 + + + + TextLabel + + + + + + 10 + 80 + 59 + 17 + + + + TextLabel + + + + + + 0 + + + 0 + + + 0 + + + + + + 64 + 64 + + + + + 64 + 64 + + + + + + + :/graphics/exception.png + + + Qt::AlignCenter + + + + + + + Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred. + + + true + + + + +