diff --git a/openlp/core/ui/mailto/__init__.py b/openlp/core/lib/mailto/__init__.py similarity index 100% rename from openlp/core/ui/mailto/__init__.py rename to openlp/core/lib/mailto/__init__.py diff --git a/openlp/core/ui/mailto/README b/openlp/core/lib/mailto/mailto.INFO similarity index 100% rename from openlp/core/ui/mailto/README rename to openlp/core/lib/mailto/mailto.INFO diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 49e2c8151..6fb7c7985 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -26,7 +26,7 @@ from PyQt4 import QtCore, QtGui -from openlp.core.lib import translate +from openlp.core.lib import translate, build_icon class Ui_ExceptionDialog(object): def setupUi(self, exceptionDialog): @@ -63,12 +63,26 @@ class Ui_ExceptionDialog(object): self.exceptionButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Close) self.exceptionButtonBox.setObjectName(u'exceptionButtonBox') self.exceptionLayout.addWidget(self.exceptionButtonBox) - + self.saveReportButton = QtGui.QPushButton(exceptionDialog) + self.saveReportButton.setIcon(build_icon(u':/general/general_save.png')) + self.saveReportButton.setObjectName(u'saveReportButton') + self.exceptionButtonBox.addButton(self.saveReportButton, + QtGui.QDialogButtonBox.ActionRole) + self.sendReportButton = QtGui.QPushButton(exceptionDialog) + self.sendReportButton.setIcon(build_icon( + u':/general/general_email.png')) + self.sendReportButton.setObjectName(u'sendReportButton') + self.exceptionButtonBox.addButton(self.sendReportButton, + QtGui.QDialogButtonBox.ActionRole) self.retranslateUi(exceptionDialog) QtCore.QObject.connect(self.exceptionButtonBox, QtCore.SIGNAL(u'accepted()'), exceptionDialog.accept) QtCore.QObject.connect(self.exceptionButtonBox, QtCore.SIGNAL(u'rejected()'), exceptionDialog.reject) + QtCore.QObject.connect(self.saveReportButton, + QtCore.SIGNAL(u'pressed()'), self.onSaveReportButtonPressed) + QtCore.QObject.connect(self.sendReportButton, + QtCore.SIGNAL(u'pressed()'), self.onSendReportButtonPressed) QtCore.QMetaObject.connectSlotsByName(exceptionDialog) def retranslateUi(self, exceptionDialog): @@ -80,3 +94,7 @@ class Ui_ExceptionDialog(object): 'developers, so please e-mail it to bugs@openlp.org, along with a ' 'detailed description of what you were doing when the problem ' 'occurred.')) + self.saveReportButton.setText(translate('OpenLP.ExceptionDialog', + 'Save Report to File')) + self.sendReportButton.setText(translate('OpenLP.ExceptionDialog', + 'Send Report Mail')) diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 2a7b872c9..09cdc1414 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -25,11 +25,22 @@ ############################################################################### import os +import platform -from PyQt4 import QtCore, QtGui +import sqlalchemy +import BeautifulSoup +import enchant +import chardet +try: + import sqlite + sqlite_version = sqlite.version +except ImportError: + sqlite_version = u'-' -from openlp.core.lib import translate, build_icon, SettingsManager -from openlp.core.ui.mailto import mailto +from lxml import etree +from PyQt4 import Qt, QtCore, QtGui + +from openlp.core.lib import translate, SettingsManager, mailto from exceptiondialog import Ui_ExceptionDialog @@ -42,48 +53,36 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): self.setupUi(self) self.settingsSection = u'crashreport' #TODO: Icons - self.saveReportButton = QtGui.QPushButton(self) - self.saveReportButton.setIcon(build_icon(u':/icon/openlp-logo-16x16.png')) - self.saveReportButton.setText(translate('OpenLP.ExceptionForm', 'Save Report to File')) - self.saveReportButton.setObjectName(u'saveReportButton') - self.sendReportButton = QtGui.QPushButton(self) - self.sendReportButton.setIcon(build_icon(u':/icon/openlp-logo-16x16.png')) - self.sendReportButton.setText(translate('OpenLP.ExceptionForm', 'Send Report Mail')) - self.sendReportButton.setObjectName(u'sendReportButton') - self.exceptionButtonBox.addButton(self.saveReportButton, - QtGui.QDialogButtonBox.ActionRole) - self.exceptionButtonBox.addButton(self.sendReportButton, - QtGui.QDialogButtonBox.ActionRole) - QtCore.QObject.connect(self.saveReportButton, - QtCore.SIGNAL(u'pressed()'), self.onSaveReportButtonPressed) - QtCore.QObject.connect(self.sendReportButton, - QtCore.SIGNAL(u'pressed()'), self.onSendReportButtonPressed) def _createReport(self): + openlp_version = self.parent().applicationVersion[u'full'] + traceback = unicode(self.exceptionTextEdit.toPlainText()) system = unicode(translate('OpenLP.ExceptionForm', - 'Operating System: %s\n' - 'Desktop Envoirnment: %s')) + 'Platform: %s\n')) % (platform.platform()) libraries = unicode(translate('OpenLP.ExceptionForm', 'Python: %s\n' - 'PyQt: %s\n' + 'PyQt4: %s\n' + 'Qt4: %s\n' 'SQLAlchemy: %s\n' 'lxml: %s\n' 'BeautifulSoup: %s\n' 'PyEnchant: %s\n' 'Chardet: %s\n' - 'pysqlite: %s')) - #TODO: collect the informations - version = self.parent().applicationVersion[u'full'] - return (version, system, libraries) + 'PySQLite: %s\n')) % (platform.python_version(), + Qt.PYQT_VERSION_STR, Qt.qVersion(), sqlalchemy.__version__, + etree.__version__, BeautifulSoup.__version__ , enchant.__version__, + chardet.__version__, sqlite_version) + return (openlp_version, traceback, system, libraries) def onSaveReportButtonPressed(self): """ Saving exception log and system informations to a file. """ report = unicode(translate('OpenLP.ExceptionForm', - '*OpenLP Bug Report*\n' - 'Version: %s\n' - '--- System information. ---\n%s\n' + '**OpenLP Bug Report**\n' + 'Version: %s\n\n' + '--- Exception Traceback ---\n%s\n' + '--- System information ---\n%s\n' '--- Library Versions ---\n%s\n')) filename = QtGui.QFileDialog.getSaveFileName(self, translate('OpenLP.ExceptionForm', 'Save Crash Report'), @@ -113,9 +112,10 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): """ email_body = unicode(translate('OpenLP.ExceptionForm', '*OpenLP Bug Report*\n' - 'Version: %s\n' + 'Version: %s\n\n' '--- Please enter the report below this line. ---\n\n\n' - '--- System information. ---\n%s\n' + '--- Exception Traceback ---\n%s\n' + '--- System information ---\n%s\n' '--- Library Versions ---\n%s\n')) - mailto(address=u'bugs@openlp.org', subject=u'OpenLP Bug Report', + mailto.mailto(address=u'bugs@openlp.org', subject=u'OpenLP Bug Report', body=email_body % self._createReport()) diff --git a/resources/images/general_email.png b/resources/images/general_email.png new file mode 100644 index 000000000..d1e9f2b64 Binary files /dev/null and b/resources/images/general_email.png differ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 2a3282461..e9ec5c0a3 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -39,6 +39,7 @@ general_new.png general_open.png general_save.png + general_email.png slide_close.png