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