From 00cb0d1277dd9a067fdd7d244a8802b22f4475f1 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Tue, 23 Mar 2010 19:41:54 +0000 Subject: [PATCH] Close down presentation apps at end correctly --- .../presentations/lib/impresscontroller.py | 5 +++-- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- .../presentations/lib/powerpointcontroller.py | 18 ++++++++++-------- .../presentations/lib/pptviewcontroller.py | 8 +++++--- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index dd0f86840..637e629c0 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -147,8 +147,9 @@ class ImpressController(PresentationController): Called at system exit to clean up any running presentations """ log.debug(u'Kill OpenOffice') - for doc in self.docs: - doc.close_presentation() + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array if os.name != u'nt': desktop = self.get_uno_desktop() else: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 35ec1721b..6e9bbfaed 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -143,7 +143,7 @@ class PresentationMediaItem(MediaManagerItem): for cidx in self.controllers: doc = self.controllers[cidx].add_doc(filepath) doc.presentation_deleted() - self.controllers[cidx].remove_doc(doc) + doc.close_presentation() def generateSlideData(self, service_item): items = self.ListView.selectedIndexes() @@ -171,7 +171,7 @@ class PresentationMediaItem(MediaManagerItem): service_item.add_from_command(path, name, img) i = i + 1 img = doc.get_slide_preview_file(i) - controller.remove_doc(doc) + doc.close_presentation() return True def findControllerByType(self, filename): diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 45d040b45..3dedcec75 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -81,8 +81,10 @@ class PowerpointController(PresentationController): """ Called at system exit to clean up any running presentations """ - for doc in self.docs: - doc.close_presentation() + log.debug(u'Kill powerpoint') + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array if self.process is None: return if self.process.Presentations.Count > 0: @@ -149,12 +151,12 @@ class PowerpointDocument(PresentationDocument): Triggerent by new object being added to SlideController orOpenLP being shut down """ - if self.presentation is None: - return - try: - self.presentation.Close() - except: - pass + log.debug(u'ClosePresentation') + if self.presentation: + try: + self.presentation.Close() + except: + pass self.presentation = None self.controller.remove_doc(self) diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 574441850..5646c7258 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -88,9 +88,10 @@ class PptviewController(PresentationController): """ Called at system exit to clean up any running presentations """ - log.debug(u'Kill') - for doc in self.docs: - doc.close_presentation() + log.debug(u'Kill pptviewer') + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array def add_doc(self, name): log.debug(u'Add Doc PPTView') @@ -137,6 +138,7 @@ class PptviewDocument(PresentationDocument): Triggerent by new object being added to SlideController orOpenLP being shut down """ + log.debug(u'ClosePresentation') self.controller.process.ClosePPT(self.pptid) self.pptid = -1 self.controller.remove_doc(self)