From 41782ae8a76e35a83403a00cbfc3059ef17f0f41 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 24 Aug 2009 06:10:04 +0100 Subject: [PATCH] SlideController clean up part 3 --- openlp/core/lib/eventreceiver.py | 9 --- openlp/core/ui/slidecontroller.py | 21 +++++ .../images/lib/imageslidecontroller.py | 76 ++++--------------- openlp/plugins/remotes/remoteclient-cli.py | 7 ++ openlp/plugins/remotes/remoteplugin.py | 5 +- 5 files changed, 47 insertions(+), 71 deletions(-) diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index eb78aa445..ef8e0d97f 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -30,13 +30,8 @@ class EventReceiver(QtCore.QObject): QtCore.QObject.__init__(self) def send_message(self, event, msg=None): - print "send_message ", event , msg self.emit(QtCore.SIGNAL(event), msg) -# def received(self, msg=None): -# print "received ", msg - - class Receiver(): """ Class to allow events to be passed from different parts of the system. @@ -56,10 +51,6 @@ class Receiver(): def send_message(event, msg=None): Receiver.eventreceiver.send_message(event, msg) -# @staticmethod -# def receive(): -# Receiver.eventreceiver.receive() - @staticmethod def get_receiver(): return Receiver.eventreceiver diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 8df86d7a5..2ca39f30c 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -149,6 +149,11 @@ class SlideController(QtGui.QWidget): QtCore.SIGNAL(u'%sslide_next'% self.prefix), self.onSlideSelectedNext) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%sslide_last'% self.prefix), self.onSlideSelectedLast) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%sslide_start_loop'% self.prefix), self.onStartLoop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%sslide_stop_loop'% self.prefix), self.onStopLoop) + def registerToolbar(self, handle,controller): """ @@ -307,6 +312,22 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) self.onSlideSelected() + def onStartLoop(self, value): + """ + Go to the last slide. + """ + if self.PreviewListWidget.rowCount() > 1: + self.timer_id = self.startTimer(int(value) * 1000) + + def onStopLoop(self): + """ + Go to the last slide. + """ + self.killTimer(self.timer_id) + + def timerEvent(self, event): + if event.timerId() == self.timer_id: + self.onSlideSelectedNext() class MasterToolbar(QtCore.QObject): """ diff --git a/openlp/plugins/images/lib/imageslidecontroller.py b/openlp/plugins/images/lib/imageslidecontroller.py index bc179c652..7d37bfe81 100644 --- a/openlp/plugins/images/lib/imageslidecontroller.py +++ b/openlp/plugins/images/lib/imageslidecontroller.py @@ -21,7 +21,7 @@ import logging import os from PyQt4 import QtCore, QtGui -from openlp.core.lib import OpenLPToolbar, translate +from openlp.core.lib import OpenLPToolbar, translate, Receiver from openlp.core.ui.slidecontroller import MasterToolbar class ImageToolbar(MasterToolbar): @@ -31,77 +31,33 @@ class ImageToolbar(MasterToolbar): self.parent = parent self.Toolbar = None self.isLive = isLive - self.defineToolbar() - def defineToolbar(self): - # Controller toolbar - self.Toolbar = OpenLPToolbar(self) - sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, - QtGui.QSizePolicy.Fixed) - sizeToolbarPolicy.setHorizontalStretch(0) - sizeToolbarPolicy.setVerticalStretch(0) - sizeToolbarPolicy.setHeightForWidth( - self.Toolbar.sizePolicy().hasHeightForWidth()) - if self.isLive: - pass -# self.Toolbar.addToolbarButton(u'First Slide', -# u':/slides/slide_first.png', -# translate(u'SlideController', u'Move to first'), -# self.onSlideSelectedFirst) -# self.Toolbar.addToolbarButton(u'Previous Slide', -# u':/slides/slide_previous.png', -# translate(u'SlideController', u'Move to previous'), -# self.onSlideSelectedPrevious) -# self.Toolbar.addToolbarButton(u'Next Slide', -# u':/slides/slide_next.png', -# translate(u'SlideController', u'Move to next'), -# self.onSlideSelectedNext) -# if self.isLive: -# self.Toolbar.addToolbarButton(u'Last Slide', -# u':/slides/slide_last.png', -# translate(u'SlideController', u'Move to last'), -# self.onSlideSelectedLast) -# self.Toolbar.addSeparator() -# self.Toolbar.addToolbarButton(u'Close Screen', -# u':/slides/slide_close.png', -# translate(u'SlideController', u'Close Screen'), -# self.onBlankScreen) -# self.Toolbar.addSeparator() -# self.Toolbar.addToolbarButton(u'Start Loop', -# u':/media/media_time.png', -# translate(u'SlideController', u'Start continuous loop'), -# self.onStartLoop) -# self.Toolbar.addToolbarButton(u'Stop Loop', -# u':/media/media_stop.png', -# translate(u'SlideController', u'Stop continuous loop'), -# self.onStopLoop) + def defineZone5(self): + self.Toolbar.addSeparator() + self.Toolbar.addToolbarButton(u'Start Loop', + u':/media/media_time.png', + translate(u'SlideController', u'Start continuous loop'), + self.onStartLoop) + self.Toolbar.addToolbarButton(u'Stop Loop', + u':/media/media_stop.png', + translate(u'SlideController', u'Stop continuous loop'), + self.onStopLoop) self.Toolbar.addSeparator() self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar) self.SpinWidget = QtGui.QWidgetAction(self.Toolbar) self.SpinWidget.setDefaultWidget(self.DelaySpinBox) self.Toolbar.addAction(self.SpinWidget) - #self.Layout.addWidget(self.Toolbar) - self.Toolbar.setSizePolicy(sizeToolbarPolicy) - self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's')) - - def serviceLoaded(self): self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay) - if self.PreviewListWidget.rowCount() == 1: - self.DelaySpinBox.setEnabled(False) + self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's')) def onStartLoop(self): """ - Go to the last slide. + Trigger the slide controller to start to loop passing the delay """ - if self.PreviewListWidget.rowCount() > 1: - self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000) + Receiver().send_message(u'%sslide_start_loop' % self.prefix, self.DelaySpinBox.value()) def onStopLoop(self): """ - Go to the last slide. + Trigger the slide controller to stop the loop """ - self.killTimer(self.timer_id) - - def timerEvent(self, event): - if event.timerId() == self.timer_id: - self.onSlideSelectedNext() + Receiver().send_message(u'%sslide_stop_loop' % self.prefix) diff --git a/openlp/plugins/remotes/remoteclient-cli.py b/openlp/plugins/remotes/remoteclient-cli.py index 7228d1d0a..1186414c4 100755 --- a/openlp/plugins/remotes/remoteclient-cli.py +++ b/openlp/plugins/remotes/remoteclient-cli.py @@ -51,6 +51,8 @@ def main(): help="Action to be undertaken") parser.add_option("-m", "--message", help="Message to be passed for the action") + parser.add_option("-n", "--slidenext", + help="Trigger the next slide") (options, args) = parser.parse_args() if len(args) > 0: @@ -62,6 +64,11 @@ def main(): elif options.address is None: parser.print_help() parser.error("IP address missing") + elif options.slidenext is not None: + options.event = u'next_slide' + options.message = u'' + text = format_message(options) + sendData(options, text) else: text = format_message(options) sendData(options, text) diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 40b68cf36..601deec66 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -22,7 +22,7 @@ import sys from PyQt4 import QtNetwork, QtGui, QtCore -from openlp.core.lib import Plugin, Event, EventType +from openlp.core.lib import Plugin, Event, EventType, Receiver from openlp.plugins.remotes.lib import RemoteTab class RemotesPlugin(Plugin): @@ -59,7 +59,8 @@ class RemotesPlugin(Plugin): if event == u'alert': self.event_manager.post_event(Event(u'RemotePlugin', EventType.TriggerAlert , unicode(datagram[pos + 1:]))) - + if event == u'next_slide': + Receiver().send_message(u'live_slide_next')