diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 6f0a9422b..01d15448a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -24,6 +24,7 @@ import logging import os +import time from PyQt4 import QtCore, QtGui from openlp.core.lib import OpenLPToolbar, translate, buildIcon, Receiver, \ @@ -247,7 +248,9 @@ class SlideController(QtGui.QWidget): if self.commandItem is not None and self.commandItem.service_item_type == ServiceType.Command: Receiver().send_message(u'%s_stop'% self.commandItem.name.lower()) self.commandItem = item + before = time.time() item.render() + log.info(u'Rendering took %4s' % (time.time() - before)) self.enableToolBar(item) if item.service_item_type == ServiceType.Command: Receiver().send_message(u'%s_start'%item.name.lower(), \ @@ -279,6 +282,7 @@ class SlideController(QtGui.QWidget): Display the slide number passed """ log.debug(u'displayServiceManagerItems Start') + before = time.time() self.serviceitem = serviceitem slide_image = self.serviceitem.frames[0][u'image'] size = slide_image.size() @@ -306,6 +310,7 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.selectRow(slideno) self.onSlideSelected() self.PreviewListWidget.setFocus() + log.info(u'Display Rendering took %4s' % (time.time() - before)) log.debug(u'displayServiceManagerItems End') #Screen event methods diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 3952bb4ce..a156b5358 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -177,7 +177,30 @@ class ThemeManager(QtGui.QWidget): self.pushThemes() def onExportTheme(self): - pass + """ + Save the theme in a zip file + """ + item = self.ThemeListWidget.currentItem() + if item is None: + QtGui.QMessageBox.critical(self, + translate(u'ThemeManager', u'Error'), + translate(u'ThemeManager', + u'You have not selected a theme!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + return + theme = unicode(item.text()) + path = QtGui.QFileDialog.getExistingDirectory(self, + u'Save Theme',self.config.get_last_dir(1) ) + path = unicode(path) + if path != u'': + self.config.set_last_dir(path, 1) + themePath = os.path.join(path, theme + u'.theme') + zip = zipfile.ZipFile(themePath, 'w') + source = os.path.join(self.path, theme) + for root, dirs, files in os.walk(source): + for name in files: + zip.write(os.path.join(source, name), os.path.join(theme, name)) + zip.close() def onImportTheme(self): files = QtGui.QFileDialog.getOpenFileNames(None, @@ -261,7 +284,16 @@ class ThemeManager(QtGui.QWidget): necessary. """ log.debug(u'Unzipping theme %s', filename) - zip = zipfile.ZipFile(unicode(filename)) + filename = unicode(filename) + try: + zip = zipfile.ZipFile(filename) + except: + QtGui.QMessageBox.critical(self, + translate(u'ThemeManager', u'Error'), + translate(u'ThemeManager', + u'File is not a valid theme!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + return filexml = None themename = None for file in zip.namelist():