From e934c7e623c92b58e73d0ef4c21ad2a1ebc39562 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 5 Apr 2010 12:06:37 +0100 Subject: [PATCH] Compress Impress previews --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 1 - .../presentations/lib/impresscontroller.py | 16 ++++++++++++---- openlp/plugins/presentations/lib/mediaitem.py | 9 ++++++--- .../presentations/lib/presentationcontroller.py | 8 +++++--- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 6ed2775f1..f68db32fe 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -387,7 +387,7 @@ class MediaManagerItem(QtGui.QWidget): raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to ' u'be defined by the plugin') - def generateSlideData(self, item, item1): + def generateSlideData(self, service_item, item): raise NotImplementedError(u'MediaManagerItem.generateSlideData needs ' u'to be defined by the plugin') diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 072b4924e..c35c652c7 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -121,7 +121,6 @@ class ImageMediaItem(MediaManagerItem): def loadList(self, list): for file in list: - print file (path, filename) = os.path.split(unicode(file)) thumb = os.path.join(self.servicePath, filename) if os.path.exists(thumb): diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 14e98273e..3e7a17990 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -37,6 +37,8 @@ import logging import os import time +from openlp.core.lib import resize_image + if os.name == u'nt': from win32com.client import Dispatch else: @@ -239,17 +241,22 @@ class ImpressDocument(PresentationDocument): for idx in range(pages.getCount()): page = pages.getByIndex(idx) doc.getCurrentController().setCurrentPage(page) - path = u'%s/%s%s.png'% (thumbdir, self.controller.thumbnailprefix, + path = u'%s/%s%s.png' % (thumbdir, self.controller.thumbnailprefix, unicode(idx + 1)) try: doc.storeToURL(path , props) + preview = resize_image(path, 640, 480) + if os.path.exists(path): + os.remove(path) + preview.save(path, u'png') except: - log.exception(u'%s\nUnable to store preview' % path) + log.exception(u'%s - Unable to store openoffice preview' % path) def create_property(self, name, value): log.debug(u'create property OpenOffice') if os.name == u'nt': - prop = self.controller.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue') + prop = self.controller.manager.\ + Bridge_GetStruct(u'com.sun.star.beans.PropertyValue') else: prop = PropertyValue() prop.Name = name @@ -356,7 +363,8 @@ class ImpressDocument(PresentationDocument): def get_slide_preview_file(self, slide_no): """ - Returns an image path containing a preview for the requested slide + Returns an image path containing a preview for theimpresscontroller.py + requested slide ``slide_no`` The slide an image is required for, starting at 1 diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index ec7a2b705..b761ead12 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -140,10 +140,13 @@ class PresentationMediaItem(MediaManagerItem): self.parent.config.set_list( self.ConfigSection, self.getFileList()) filepath = unicode((item.data(QtCore.Qt.UserRole)).toString()) + #not sure of this has errors + #John please can you look at . for cidx in self.controllers: - doc = self.controllers[cidx].add_doc(filepath) - doc.presentation_deleted() - doc.close_presentation() + if self.controllers[cidx].enabled: + self.controllers[cidx].remove_doc(filepath) + self.controllers[cidx].presentation_deleted() + self.controllers[cidx].close_presentation() def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 382d24b8e..145cd4566 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -138,13 +138,15 @@ class PresentationController(object): self.docs.append(doc) return doc - def remove_doc(self, doc): + def remove_doc(self, doc=None): """ Called to remove an open document from the collection """ log.debug(u'remove_doc Presentation') - self.docs.remove(doc) - + if doc is None: + return + if doc in self.docs: + self.docs.remove(doc) class PresentationDocument(object): """