diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 08c231cd5..c2ec38069 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -519,9 +519,13 @@ class SlideController(QtGui.QWidget): """ log.debug(u'processManagerItem') self.onStopLoop() - #If old item was a command tell it to stop - if self.serviceItem and self.serviceItem.is_command(): - self.onMediaStop() + #If old item was a command tell it to stop + if self.serviceItem: + if self.serviceItem.is_command(): + Receiver.send_message(u'%s_stop' % + self.serviceItem.name.lower(), [serviceItem, self.isLive]) + if self.serviceItem.is_media(): + self.onMediaStop() if serviceItem.is_media(): self.onMediaStart(serviceItem) if self.isLive: @@ -827,7 +831,7 @@ class SlideController(QtGui.QWidget): return Receiver.send_message(u'%s_next' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): + if self.serviceItem.is_command() and self.isLive: self.updatePreview() else: row = self.PreviewListWidget.currentRow() + 1 @@ -851,7 +855,7 @@ class SlideController(QtGui.QWidget): return Receiver.send_message(u'%s_previous' % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) - if self.serviceItem.is_command(): + if self.serviceItem.is_command() and self.isLive: self.updatePreview() else: row = self.PreviewListWidget.currentRow() - 1 diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 6cb8c349c..52de42ca7 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -132,18 +132,13 @@ class ImpressController(PresentationController): def get_com_desktop(self): log.debug(u'get COM Desktop OpenOffice') - try: - desktop = self.manager.createInstance(u'com.sun.star.frame.Desktop') - return desktop - except: - log.exception(u'Failed to get COM desktop') - return None + return self.manager.createInstance(u'com.sun.star.frame.Desktop') def get_com_servicemanager(self): log.debug(u'get_com_servicemanager openoffice') try: return Dispatch(u'com.sun.star.ServiceManager') - except: + except pywintypes.com_error: log.exception(u'Failed to get COM service manager') return None diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 13a589ec3..2f8a1aec7 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -70,16 +70,16 @@ class Controller(object): if self.doc.slidenumber > 1: self.doc.goto_slide(self.doc.slidenumber) - def slide(self, slide, live): - log.debug(u'Live = %s, slide' % live) - if not live: + def slide(self, slide): + log.debug(u'Live = %s, slide' % self.is_live) + if not self.is_live: return if self.doc.is_blank(): self.doc.slidenumber = int(slide) + 1 return self.activate() self.doc.goto_slide(int(slide) + 1) - self.doc.poll_slidenumber(live) + self.doc.poll_slidenumber(self.is_live) def first(self): """ @@ -248,11 +248,10 @@ class MessageListener(object): def slide(self, message): is_live = message[1] slide = message[2] - item = message[0] if is_live: - self.live_handler.slide(slide, item) + self.live_handler.slide(slide) else: - self.preview_handler.slide(slide, item) + self.preview_handler.slide(slide) def first(self, message): is_live = message[1]