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)
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

View File

@ -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):
"""

View File

@ -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)

View File

@ -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)

View File

@ -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')