SlideController clean up part 3

This commit is contained in:
Tim Bentley 2009-08-24 06:10:04 +01:00
parent 7ec0a53d77
commit 41782ae8a7
5 changed files with 47 additions and 71 deletions

View File

@ -30,13 +30,8 @@ class EventReceiver(QtCore.QObject):
QtCore.QObject.__init__(self) QtCore.QObject.__init__(self)
def send_message(self, event, msg=None): def send_message(self, event, msg=None):
print "send_message ", event , msg
self.emit(QtCore.SIGNAL(event), msg) self.emit(QtCore.SIGNAL(event), msg)
# def received(self, msg=None):
# print "received ", msg
class Receiver(): class Receiver():
""" """
Class to allow events to be passed from different parts of the system. 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): def send_message(event, msg=None):
Receiver.eventreceiver.send_message(event, msg) Receiver.eventreceiver.send_message(event, msg)
# @staticmethod
# def receive():
# Receiver.eventreceiver.receive()
@staticmethod @staticmethod
def get_receiver(): def get_receiver():
return Receiver.eventreceiver return Receiver.eventreceiver

View File

@ -149,6 +149,11 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL(u'%sslide_next'% self.prefix), self.onSlideSelectedNext) QtCore.SIGNAL(u'%sslide_next'% self.prefix), self.onSlideSelectedNext)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%sslide_last'% self.prefix), self.onSlideSelectedLast) 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): def registerToolbar(self, handle,controller):
""" """
@ -307,6 +312,22 @@ class SlideController(QtGui.QWidget):
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1)
self.onSlideSelected() 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): class MasterToolbar(QtCore.QObject):
""" """

View File

@ -21,7 +21,7 @@ import logging
import os import os
from PyQt4 import QtCore, QtGui 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 from openlp.core.ui.slidecontroller import MasterToolbar
class ImageToolbar(MasterToolbar): class ImageToolbar(MasterToolbar):
@ -31,77 +31,33 @@ class ImageToolbar(MasterToolbar):
self.parent = parent self.parent = parent
self.Toolbar = None self.Toolbar = None
self.isLive = isLive self.isLive = isLive
self.defineToolbar()
def defineToolbar(self): def defineZone5(self):
# Controller toolbar self.Toolbar.addSeparator()
self.Toolbar = OpenLPToolbar(self) self.Toolbar.addToolbarButton(u'Start Loop',
sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, u':/media/media_time.png',
QtGui.QSizePolicy.Fixed) translate(u'SlideController', u'Start continuous loop'),
sizeToolbarPolicy.setHorizontalStretch(0) self.onStartLoop)
sizeToolbarPolicy.setVerticalStretch(0) self.Toolbar.addToolbarButton(u'Stop Loop',
sizeToolbarPolicy.setHeightForWidth( u':/media/media_stop.png',
self.Toolbar.sizePolicy().hasHeightForWidth()) translate(u'SlideController', u'Stop continuous loop'),
if self.isLive: self.onStopLoop)
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)
self.Toolbar.addSeparator() self.Toolbar.addSeparator()
self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar) self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar)
self.SpinWidget = QtGui.QWidgetAction(self.Toolbar) self.SpinWidget = QtGui.QWidgetAction(self.Toolbar)
self.SpinWidget.setDefaultWidget(self.DelaySpinBox) self.SpinWidget.setDefaultWidget(self.DelaySpinBox)
self.Toolbar.addAction(self.SpinWidget) 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) self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay)
if self.PreviewListWidget.rowCount() == 1: self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's'))
self.DelaySpinBox.setEnabled(False)
def onStartLoop(self): def onStartLoop(self):
""" """
Go to the last slide. Trigger the slide controller to start to loop passing the delay
""" """
if self.PreviewListWidget.rowCount() > 1: Receiver().send_message(u'%sslide_start_loop' % self.prefix, self.DelaySpinBox.value())
self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000)
def onStopLoop(self): def onStopLoop(self):
""" """
Go to the last slide. Trigger the slide controller to stop the loop
""" """
self.killTimer(self.timer_id) Receiver().send_message(u'%sslide_stop_loop' % self.prefix)
def timerEvent(self, event):
if event.timerId() == self.timer_id:
self.onSlideSelectedNext()

View File

@ -51,6 +51,8 @@ def main():
help="Action to be undertaken") help="Action to be undertaken")
parser.add_option("-m", "--message", parser.add_option("-m", "--message",
help="Message to be passed for the action") help="Message to be passed for the action")
parser.add_option("-n", "--slidenext",
help="Trigger the next slide")
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
if len(args) > 0: if len(args) > 0:
@ -62,6 +64,11 @@ def main():
elif options.address is None: elif options.address is None:
parser.print_help() parser.print_help()
parser.error("IP address missing") 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: else:
text = format_message(options) text = format_message(options)
sendData(options, text) sendData(options, text)

View File

@ -22,7 +22,7 @@ import sys
from PyQt4 import QtNetwork, QtGui, QtCore 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 from openlp.plugins.remotes.lib import RemoteTab
class RemotesPlugin(Plugin): class RemotesPlugin(Plugin):
@ -59,7 +59,8 @@ class RemotesPlugin(Plugin):
if event == u'alert': if event == u'alert':
self.event_manager.post_event(Event(u'RemotePlugin', EventType.TriggerAlert , unicode(datagram[pos + 1:]))) 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')