More cleanups of slide controller and friends

This commit is contained in:
Tim Bentley 2013-02-20 20:43:20 +00:00
parent ad7d78ff26
commit ffb10c0149
6 changed files with 434 additions and 430 deletions

View File

@ -218,7 +218,7 @@ def build_html(item, screen, is_live, background, image=None, plugins=None):
``screen``
Current display information
``islive``
``is_live``
Item is going live, rather than preview/theme building
``background``

View File

@ -68,7 +68,7 @@ class Display(QtGui.QGraphicsView):
self.parent = lambda: parent
else:
QtGui.QGraphicsView.__init__(self, parent)
self.isLive = live
self.is_live = live
self.controller = controller
self.screen = {}
# FIXME: On Mac OS X (tested on 10.7) the display screen is corrupt with
@ -82,7 +82,7 @@ class Display(QtGui.QGraphicsView):
"""
Set up and build the screen base
"""
log.debug(u'Start Display base setup (live = %s)' % self.isLive)
log.debug(u'Start Display base setup (live = %s)' % self.is_live)
self.setGeometry(self.screen[u'size'])
log.debug(u'Setup webView')
self.web_view = QtWebKit.QWebView(self)
@ -94,7 +94,7 @@ class Display(QtGui.QGraphicsView):
self.web_view.setAttribute(QtCore.Qt.WA_OpaquePaintEvent, False)
self.page = self.web_view.page()
self.frame = self.page.mainFrame()
if self.isLive and log.getEffectiveLevel() == logging.DEBUG:
if self.is_live and log.getEffectiveLevel() == logging.DEBUG:
self.web_view.settings().setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True)
self.web_view.loadFinished.connect(self.is_web_loaded)
self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
@ -154,7 +154,7 @@ class MainDisplay(Display):
self.setWindowFlags(windowFlags)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.set_transparency(False)
if self.isLive:
if self.is_live:
Registry().register_function(u'live_display_hide', self.hide_display)
Registry().register_function(u'live_display_show', self.show_display)
Registry().register_function(u'update_display_css', self.css_changed)
@ -197,11 +197,11 @@ class MainDisplay(Display):
"""
Set up and build the output screen
"""
log.debug(u'Start MainDisplay setup (live = %s)' % self.isLive)
log.debug(u'Start MainDisplay setup (live = %s)' % self.is_live)
self.screen = self.screens.current
self.setVisible(False)
Display.setup(self)
if self.isLive:
if self.is_live:
# Build the initial frame.
background_color = QtGui.QColor()
background_color.setNamedColor(Settings().value(u'advanced/default color'))
@ -222,7 +222,7 @@ class MainDisplay(Display):
splash_image)
serviceItem = ServiceItem()
serviceItem.bg_image_bytes = image_to_byte(self.initialFrame)
self.web_view.setHtml(build_html(serviceItem, self.screen, self.isLive, None,
self.web_view.setHtml(build_html(serviceItem, self.screen, self.is_live, None,
plugins=self.plugin_manager.plugins))
self.__hideMouse()
log.debug(u'Finished MainDisplay setup')
@ -296,7 +296,7 @@ class MainDisplay(Display):
self.override[u'theme'] = self.serviceItem.themedata.background_filename
self.image(path)
# Update the preview frame.
if self.isLive:
if self.is_live:
self.parent().updatePreview()
return True
@ -343,10 +343,10 @@ class MainDisplay(Display):
"""
Generates a preview of the image displayed.
"""
log.debug(u'preview for %s', self.isLive)
log.debug(u'preview for %s', self.is_live)
self.application.process_events()
# We must have a service item to preview.
if self.isLive and hasattr(self, u'serviceItem'):
if self.is_live and hasattr(self, u'serviceItem'):
# Wait for the fade to finish before geting the preview.
# Important otherwise preview will have incorrect text if at all!
if self.serviceItem.themedata and self.serviceItem.themedata.display_slide_transition:
@ -357,7 +357,7 @@ class MainDisplay(Display):
while not self.webLoaded:
self.application.process_events()
# if was hidden keep it hidden
if self.isLive:
if self.is_live:
if self.hide_mode:
self.hide_display(self.hide_mode)
else:
@ -403,7 +403,7 @@ class MainDisplay(Display):
image_bytes = self.image_manager.get_image_bytes(image_path, ImageSource.ImagePlugin)
else:
image_bytes = None
html = build_html(self.serviceItem, self.screen, self.isLive, background, image_bytes,
html = build_html(self.serviceItem, self.screen, self.is_live, background, image_bytes,
plugins=self.plugin_manager.plugins)
log.debug(u'buildHtml - pre setHtml')
self.web_view.setHtml(html)
@ -411,7 +411,7 @@ class MainDisplay(Display):
if serviceItem.foot_text:
self.footer(serviceItem.foot_text)
# if was hidden keep it hidden
if self.hide_mode and self.isLive and not serviceItem.is_media():
if self.hide_mode and self.is_live and not serviceItem.is_media():
if Settings().value(u'general/auto unblank'):
Registry().execute(u'slidecontroller_live_unblank')
else:
@ -464,7 +464,7 @@ class MainDisplay(Display):
self.setVisible(True)
self.hide_mode = None
# Trigger actions when display is active again.
if self.isLive:
if self.is_live:
Registry().execute(u'live_display_active')
def __hideMouse(self):
@ -639,3 +639,9 @@ class AudioPlayer(QtCore.QObject):
self.media_object.enqueue(self.playlist[self.currentIndex])
if isPlaying:
self.media_object.play()
def connectSlot(self, signal, slot):
"""
Connect a slot to a signal on the media object
"""
QtCore.QObject.connect(self.media_object, signal, slot)

View File

@ -257,7 +257,7 @@ class MediaController(object):
``controller``
The controller where a player will be placed
"""
self.displayControllers[controller.controllerType] = controller
self.displayControllers[controller.controller_type] = controller
self.setup_generic_controls(controller)
def setup_generic_controls(self, controller):
@ -272,13 +272,13 @@ class MediaController(object):
controller.mediabar = OpenLPToolbar(controller)
controller.mediabar.addToolbarAction(u'playbackPlay', text=u'media_playback_play',
icon=u':/slides/media_playback_start.png',
tooltip=translate('OpenLP.SlideController', 'Start playing media.'), triggers=controller.sendToPlugins)
tooltip=translate('OpenLP.SlideController', 'Start playing media.'), triggers=controller.send_to_plugins)
controller.mediabar.addToolbarAction(u'playbackPause', text=u'media_playback_pause',
icon=u':/slides/media_playback_pause.png',
tooltip=translate('OpenLP.SlideController', 'Pause playing media.'), triggers=controller.sendToPlugins)
tooltip=translate('OpenLP.SlideController', 'Pause playing media.'), triggers=controller.send_to_plugins)
controller.mediabar.addToolbarAction(u'playbackStop', text=u'media_playback_stop',
icon=u':/slides/media_playback_stop.png',
tooltip=translate('OpenLP.SlideController', 'Stop playing media.'), triggers=controller.sendToPlugins)
tooltip=translate('OpenLP.SlideController', 'Stop playing media.'), triggers=controller.send_to_plugins)
# Build the seekSlider.
controller.seekSlider = MediaSlider(QtCore.Qt.Horizontal, self, controller)
controller.seekSlider.setMaximum(1000)
@ -300,11 +300,11 @@ class MediaController(object):
controller.volumeSlider.setGeometry(QtCore.QRect(90, 160, 221, 24))
controller.volumeSlider.setObjectName(u'volumeSlider')
controller.mediabar.addToolbarWidget(controller.volumeSlider)
controller.controllerLayout.addWidget(controller.mediabar)
controller.controller_layout.addWidget(controller.mediabar)
controller.mediabar.setVisible(False)
# Signals
QtCore.QObject.connect(controller.seekSlider, QtCore.SIGNAL(u'valueChanged(int)'), controller.sendToPlugins)
QtCore.QObject.connect(controller.volumeSlider, QtCore.SIGNAL(u'valueChanged(int)'), controller.sendToPlugins)
controller.seekSlider.valueChanged.connect(controller.send_to_plugins)
controller.volumeSlider.valueChanged.connect(controller.send_to_plugins)
def setup_display(self, display, preview):
"""
@ -322,7 +322,7 @@ class MediaController(object):
# update player status
self._set_active_players()
display.hasAudio = True
if display.isLive and preview:
if display.is_live and preview:
return
if preview:
display.hasAudio = False
@ -343,9 +343,9 @@ class MediaController(object):
"""
# Generic controls
controller.mediabar.setVisible(value)
if controller.isLive and controller.display:
if controller.is_live and controller.display:
if self.currentMediaPlayer and value:
if self.currentMediaPlayer[controller.controllerType] != self.mediaPlayers[u'webkit']:
if self.currentMediaPlayer[controller.controller_type] != self.mediaPlayers[u'webkit']:
controller.display.setTransparency(False)
def resize(self, display, player):
@ -387,7 +387,7 @@ class MediaController(object):
controller.media_info.is_background = videoBehindText
controller.media_info.file_info = QtCore.QFileInfo(serviceItem.get_frame_path())
display = self._define_display(controller)
if controller.isLive:
if controller.is_live:
isValid = self._check_file_type(controller, display, serviceItem)
display.override[u'theme'] = u''
display.override[u'video'] = True
@ -406,12 +406,12 @@ class MediaController(object):
translate('MediaPlugin.MediaItem', 'Unsupported File'))
return False
# dont care about actual theme, set a black background
if controller.isLive and not controller.media_info.is_background:
if controller.is_live and not controller.media_info.is_background:
display.frame.evaluateJavaScript(u'show_video( "setBackBoard", null, null, null,"visible");')
# now start playing - Preview is autoplay!
autoplay = False
# Preview requested
if not controller.isLive:
if not controller.is_live:
autoplay = True
# Visible or background requested or Service Item wants to autostart
elif not hidden or controller.media_info.is_background or serviceItem.will_auto_start:
@ -425,7 +425,7 @@ class MediaController(object):
translate('MediaPlugin.MediaItem', 'Unsupported File'))
return False
self.set_controls_visible(controller, True)
log.debug(u'use %s controller' % self.currentMediaPlayer[controller.controllerType])
log.debug(u'use %s controller' % self.currentMediaPlayer[controller.controller_type])
return True
def media_length(self, serviceItem):
@ -454,7 +454,7 @@ class MediaController(object):
return False
serviceItem.set_media_length(controller.media_info.length)
self.media_stop(controller)
log.debug(u'use %s controller' % self.currentMediaPlayer[controller.controllerType])
log.debug(u'use %s controller' % self.currentMediaPlayer[controller.controller_type])
return True
def _check_file_type(self, controller, display, serviceItem):
@ -479,12 +479,12 @@ class MediaController(object):
player.canBackground:
self.resize(display, player)
if player.load(display):
self.currentMediaPlayer[controller.controllerType] = player
self.currentMediaPlayer[controller.controller_type] = player
controller.media_info.media_type = MediaType.Video
return True
if suffix in player.audio_extensions_list:
if player.load(display):
self.currentMediaPlayer[controller.controllerType] = player
self.currentMediaPlayer[controller.controller_type] = player
controller.media_info.media_type = MediaType.Audio
return True
else:
@ -493,7 +493,7 @@ class MediaController(object):
if player.canFolder:
self.resize(display, player)
if player.load(display):
self.currentMediaPlayer[controller.controllerType] = player
self.currentMediaPlayer[controller.controller_type] = player
controller.media_info.media_type = MediaType.Video
return True
# no valid player found
@ -520,7 +520,7 @@ class MediaController(object):
controller.seekSlider.blockSignals(True)
controller.volumeSlider.blockSignals(True)
display = self._define_display(controller)
if not self.currentMediaPlayer[controller.controllerType].play(display):
if not self.currentMediaPlayer[controller.controller_type].play(display):
controller.seekSlider.blockSignals(False)
controller.volumeSlider.blockSignals(False)
return False
@ -530,7 +530,7 @@ class MediaController(object):
self.media_volume(controller, controller.media_info.volume)
if status:
display.frame.evaluateJavaScript(u'show_blank("desktop");')
self.currentMediaPlayer[controller.controllerType].set_visible(display, True)
self.currentMediaPlayer[controller.controller_type].set_visible(display, True)
# Flash needs to be played and will not AutoPlay
if controller.media_info.is_flash:
controller.mediabar.actions[u'playbackPlay'].setVisible(True)
@ -539,9 +539,9 @@ class MediaController(object):
controller.mediabar.actions[u'playbackPlay'].setVisible(False)
controller.mediabar.actions[u'playbackPause'].setVisible(True)
controller.mediabar.actions[u'playbackStop'].setVisible(True)
if controller.isLive:
if controller.hideMenu.defaultAction().isChecked():
controller.hideMenu.defaultAction().trigger()
if controller.is_live:
if controller.hide_menu.defaultAction().isChecked():
controller.hide_menu.defaultAction().trigger()
# Start Timer for ui updates
if not self.timer.isActive():
self.timer.start()
@ -568,7 +568,7 @@ class MediaController(object):
"""
log.debug(u'media_pause')
display = self._define_display(controller)
self.currentMediaPlayer[controller.controllerType].pause(display)
self.currentMediaPlayer[controller.controller_type].pause(display)
controller.mediabar.actions[u'playbackPlay'].setVisible(True)
controller.mediabar.actions[u'playbackStop'].setVisible(True)
controller.mediabar.actions[u'playbackPause'].setVisible(False)
@ -592,10 +592,10 @@ class MediaController(object):
"""
log.debug(u'media_stop')
display = self._define_display(controller)
if controller.controllerType in self.currentMediaPlayer:
if controller.controller_type in self.currentMediaPlayer:
display.frame.evaluateJavaScript(u'show_blank("black");')
self.currentMediaPlayer[controller.controllerType].stop(display)
self.currentMediaPlayer[controller.controllerType].set_visible(display, False)
self.currentMediaPlayer[controller.controller_type].stop(display)
self.currentMediaPlayer[controller.controller_type].set_visible(display, False)
controller.seekSlider.setSliderPosition(0)
controller.mediabar.actions[u'playbackPlay'].setVisible(True)
controller.mediabar.actions[u'playbackStop'].setVisible(False)
@ -621,7 +621,7 @@ class MediaController(object):
"""
log.debug(u'media_volume %d' % volume)
display = self._define_display(controller)
self.currentMediaPlayer[controller.controllerType].volume(display, volume)
self.currentMediaPlayer[controller.controller_type].volume(display, volume)
controller.volumeSlider.setValue(volume)
def media_seek_msg(self, msg):
@ -647,7 +647,7 @@ class MediaController(object):
"""
log.debug(u'media_seek')
display = self._define_display(controller)
self.currentMediaPlayer[controller.controllerType].seek(display, seekVal)
self.currentMediaPlayer[controller.controller_type].seek(display, seekVal)
def media_reset(self, controller):
"""
@ -656,12 +656,12 @@ class MediaController(object):
log.debug(u'media_reset')
self.set_controls_visible(controller, False)
display = self._define_display(controller)
if controller.controllerType in self.currentMediaPlayer:
if controller.controller_type in self.currentMediaPlayer:
display.override = {}
self.currentMediaPlayer[controller.controllerType].reset(display)
self.currentMediaPlayer[controller.controllerType].set_visible(display, False)
self.currentMediaPlayer[controller.controller_type].reset(display)
self.currentMediaPlayer[controller.controller_type].set_visible(display, False)
display.frame.evaluateJavaScript(u'show_video( "setBackBoard", null, null, null,"hidden");')
del self.currentMediaPlayer[controller.controllerType]
del self.currentMediaPlayer[controller.controller_type]
def media_hide(self, msg):
"""
@ -670,15 +670,15 @@ class MediaController(object):
``msg``
First element is the boolean for Live indication
"""
isLive = msg[1]
if not isLive:
is_live = msg[1]
if not is_live:
return
controller = self.mainWindow.liveController
display = self._define_display(controller)
if controller.controllerType in self.currentMediaPlayer and \
self.currentMediaPlayer[controller.controllerType].state == MediaState.Playing:
self.currentMediaPlayer[controller.controllerType].pause(display)
self.currentMediaPlayer[controller.controllerType].set_visible(display, False)
if controller.controller_type in self.currentMediaPlayer and \
self.currentMediaPlayer[controller.controller_type].state == MediaState.Playing:
self.currentMediaPlayer[controller.controller_type].pause(display)
self.currentMediaPlayer[controller.controller_type].set_visible(display, False)
def media_blank(self, msg):
"""
@ -688,16 +688,16 @@ class MediaController(object):
First element is the boolean for Live indication
Second element is the hide mode
"""
isLive = msg[1]
is_live = msg[1]
hide_mode = msg[2]
if not isLive:
if not is_live:
return
Registry().execute(u'live_display_hide', hide_mode)
controller = self.mainWindow.liveController
display = self._define_display(controller)
if self.currentMediaPlayer[controller.controllerType].state == MediaState.Playing:
self.currentMediaPlayer[controller.controllerType].pause(display)
self.currentMediaPlayer[controller.controllerType].set_visible(display, False)
if self.currentMediaPlayer[controller.controller_type].state == MediaState.Playing:
self.currentMediaPlayer[controller.controller_type].pause(display)
self.currentMediaPlayer[controller.controller_type].set_visible(display, False)
def media_unblank(self, msg):
"""
@ -708,15 +708,15 @@ class MediaController(object):
Second element is the boolean for Live indication
"""
Registry().execute(u'live_display_show')
isLive = msg[1]
if not isLive:
is_live = msg[1]
if not is_live:
return
controller = self.mainWindow.liveController
display = self._define_display(controller)
if controller.controllerType in self.currentMediaPlayer and \
self.currentMediaPlayer[controller.controllerType].state != MediaState.Playing:
if self.currentMediaPlayer[controller.controllerType].play(display):
self.currentMediaPlayer[controller.controllerType].set_visible(display, True)
if controller.controller_type in self.currentMediaPlayer and \
self.currentMediaPlayer[controller.controller_type].state != MediaState.Playing:
if self.currentMediaPlayer[controller.controller_type].play(display):
self.currentMediaPlayer[controller.controller_type].set_visible(display, True)
# Start Timer for ui updates
if not self.timer.isActive():
self.timer.start()
@ -736,9 +736,9 @@ class MediaController(object):
``controller``
Controller to be used
"""
if controller.isLive:
if controller.is_live:
return controller.display
return controller.previewDisplay
return controller.preview_display
def _get_service_manager(self):
"""

View File

@ -122,7 +122,7 @@ class VlcPlayer(MediaPlayer):
command_line_options = u'--no-video-title-show'
if not display.hasAudio:
command_line_options += u' --no-audio --no-video-title-show'
if Settings().value(u'advanced/hide mouse') and display.controller.isLive:
if Settings().value(u'advanced/hide mouse') and display.controller.is_live:
command_line_options += u' --mouse-hide-timeout=0'
display.vlcInstance = vlc.Instance(command_line_options)
display.vlcInstance.set_log_verbosity(2)

File diff suppressed because it is too large Load Diff

View File

@ -61,16 +61,16 @@ class MediaMediaItem(MediaManagerItem):
self.singleServiceItem = False
self.hasSearch = True
self.mediaObject = None
self.displayController = DisplayController(parent)
self.displayController.controllerLayout = QtGui.QVBoxLayout()
self.media_controller.register_controller(self.displayController)
self.media_controller.set_controls_visible(self.displayController, False)
self.displayController.previewDisplay = Display(self.displayController, False, self.displayController)
self.displayController.previewDisplay.hide()
self.displayController.previewDisplay.setGeometry(QtCore.QRect(0, 0, 300, 300))
self.displayController.previewDisplay.screen = {u'size':self.displayController.previewDisplay.geometry()}
self.displayController.previewDisplay.setup()
self.media_controller.setup_display(self.displayController.previewDisplay, False)
self.display_controller = DisplayController(parent)
self.display_controller.controller_layout = QtGui.QVBoxLayout()
self.media_controller.register_controller(self.display_controller)
self.media_controller.set_controls_visible(self.display_controller, False)
self.display_controller.preview_display = Display(self.display_controller, False, self.display_controller)
self.display_controller.preview_display.hide()
self.display_controller.preview_display.setGeometry(QtCore.QRect(0, 0, 300, 300))
self.display_controller.preview_display.screen = {u'size': self.display_controller.preview_display.geometry()}
self.display_controller.preview_display.setup()
self.media_controller.setup_display(self.display_controller.preview_display, False)
Registry().register_function(u'video_background_replaced', self.video_background_replaced)
Registry().register_function(u'mediaitem_media_rebuild', self.rebuild_players)
Registry().register_function(u'config_screen_changed', self.display_setup)
@ -214,7 +214,7 @@ class MediaMediaItem(MediaManagerItem):
u' '.join(self.media_controller.audio_extensions_list), UiStrings().AllFiles)
def display_setup(self):
self.media_controller.setup_display(self.displayController.previewDisplay, False)
self.media_controller.setup_display(self.display_controller.previewDisplay, False)
def populateDisplayTypes(self):
"""