diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index dc93c1a9e..afe53fe13 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -44,7 +44,6 @@ from openlp.core.lib.settings import Settings log = logging.getLogger(__name__) - class MediaManagerItem(QtGui.QWidget): """ MediaManagerItem is a helper widget for plugins. diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 5c606740e..05a206660 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -52,7 +52,7 @@ class ServiceItemType(object): class ItemCapabilities(object): """ - Provides an enumeration of a serviceitem's capabilities + Provides an enumeration of a service item's capabilities """ CanPreview = 1 CanEdit = 2 @@ -310,7 +310,9 @@ class ServiceItem(object): The item to extract data from. ``path`` - Defaults to *None*. Any path data, usually for images. + Defaults to *None*. This is the service manager path for things + which have their files saved with them or None when the saved + service is lite and the original file paths need to be preserved.. """ log.debug(u'set_from_service called with path %s' % path) header = serviceitem[u'serviceitem'][u'header'] diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index dc9cb1dc6..0bf983b74 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -71,6 +71,25 @@ class AlertLocation(object): Middle = 1 Bottom = 2 +class DisplayControllerType(object): + """ + This is an enumeration class which controls where Alerts are placed on the + screen. + + ``Top`` + Place the text at the top of the screen. + + ``Middle`` + Place the text in the middle of the screen. + + ``Bottom`` + Place the text at the bottom of the screen. + """ + Live = 0 + Preview = 1 + Plugin = 2 + + from firsttimeform import FirstTimeForm from firsttimelanguageform import FirstTimeLanguageForm from themelayoutform import ThemeLayoutForm diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index d0d5779c7..fbd4ffc22 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -38,6 +38,7 @@ from openlp.core.ui.media import MediaState, MediaInfo, MediaType, \ get_media_players, set_media_players from openlp.core.ui.media.mediaplayer import MediaPlayer from openlp.core.utils import AppLocation +from openlp.core.ui import DisplayControllerType log = logging.getLogger(__name__) @@ -51,6 +52,7 @@ class MediaController(object): self.mainWindow = parent self.mediaPlayers = {} self.controller = [] + self.displayControllers = {} self.curDisplayMediaPlayer = {} # Timer for video state self.timer = QtCore.QTimer() @@ -116,7 +118,7 @@ class MediaController(object): def register_players(self, player): """ - Register each media Player controller (Webkit, Phonon, etc) and store + Register each media Player (Webkit, Phonon, etc) and store for later use ``player`` @@ -126,8 +128,7 @@ class MediaController(object): def check_available_media_players(self): """ - Check to see if we have any media Player's available. If Not do not - install the plugin. + Check to see if we have any media Player's available. """ log.debug(u'_check_available_media_players') controller_dir = os.path.join( @@ -221,7 +222,7 @@ class MediaController(object): html += player.get_media_display_html() return html - def register_controller(self, controller, control_panel): + def register_controller(self, controller ,source, control_panel): """ Registers media controls where the players will be placed to run. @@ -231,6 +232,7 @@ class MediaController(object): ``controller_panel`` The controllers toolbar where the widgets reside """ + #self.displayControllers[source] = controller self.controller.append(controller) self.setup_generic_controls(controller, control_panel) @@ -293,21 +295,23 @@ class MediaController(object): QtCore.SIGNAL(u'valueChanged(int)'), controller.sendToPlugins) - def setup_display(self, display): + def setup_display(self, display, preview): """ After a new display is configured, all media related widget will be created too ``display`` Display on which the output is to be played + + ``preview`` + Whether the display is a main or preview display """ # clean up possible running old media files self.finalise() # update player status self._set_active_players() display.hasAudio = True - if display == self.mainWindow.previewController.previewDisplay or \ - display == self.mainWindow.liveController.previewDisplay: + if preview: display.hasAudio = False for player in self.mediaPlayers.values(): if player.isActive: diff --git a/openlp/core/ui/media/playertab.py b/openlp/core/ui/media/playertab.py index 85d3daa1c..f84bd6316 100644 --- a/openlp/core/ui/media/playertab.py +++ b/openlp/core/ui/media/playertab.py @@ -46,7 +46,7 @@ class PlayerTab(SettingsTab): MediaTab is the Media settings tab in the settings dialog. """ def __init__(self, parent, mainWindow): - self.settingsForm = parent + self.parent = parent self.mainWindow = mainWindow self.mediaPlayers = mainWindow.mediaController.mediaPlayers self.savedUsedPlayers = None @@ -222,8 +222,8 @@ class PlayerTab(SettingsTab): def postSetUp(self, postUpdate=False): """ - Late stup for players as the MediaController has to be initialised - firest. + Late setup for players as the MediaController has to be initialised + first. """ for key, player in self.mediaPlayers.iteritems(): player = self.mediaPlayers[key] @@ -231,6 +231,7 @@ class PlayerTab(SettingsTab): checkbox.setEnabled(player.available) checkbox.setObjectName(player.name + u'CheckBox') checkbox.setToolTip(player.get_info()) + checkbox.setPlayerName(player.name) self.playerCheckBoxes[player.name] = checkbox QtCore.QObject.connect(checkbox,QtCore.SIGNAL(u'stateChanged(int)'), self.onPlayerCheckBoxChanged) @@ -239,6 +240,7 @@ class PlayerTab(SettingsTab): checkbox.setChecked(True) else: checkbox.setChecked(False) + self.updatePlayerList() self.retranslatePlayers() def retranslatePlayers(self): diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ccd165f3c..0a99960d5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -38,7 +38,8 @@ from openlp.core.lib import OpenLPToolbar, Receiver, ItemCapabilities, \ from openlp.core.lib.ui import UiStrings, create_action from openlp.core.lib.settings import Settings from openlp.core.lib import SlideLimits, ServiceItemAction -from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList +from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList, \ + DisplayControllerType from openlp.core.utils.actions import ActionList, CategoryOrder log = logging.getLogger(__name__) @@ -192,7 +193,9 @@ class SlideController(DisplayController): category=self.category, triggers=self.onSlideSelectedNextAction) self.toolbar.addAction(self.nextItem) self.toolbar.addSeparator() + self.controllerType = DisplayControllerType.Preview if self.isLive: + self.controllerType = DisplayControllerType.Live # Hide Menu self.hideMenu = QtGui.QToolButton(self.toolbar) self.hideMenu.setObjectName(u'hideMenu') @@ -270,7 +273,8 @@ class SlideController(DisplayController): 'Edit and reload song preview.'), triggers=self.onEditSong) self.controllerLayout.addWidget(self.toolbar) # Build the Media Toolbar - self.mediaController.register_controller(self, self.controllerLayout) + self.mediaController.register_controller(self, + self.controllerType, self.controllerLayout) if self.isLive: # Build the Song Toolbar self.songMenu = QtGui.QToolButton(self.toolbar) @@ -593,14 +597,14 @@ class SlideController(DisplayController): float(self.screens.current[u'size'].height()) except ZeroDivisionError: self.ratio = 1 - self.mediaController.setup_display(self.display) + self.mediaController.setup_display(self.display, False) self.previewSizeChanged() self.previewDisplay.setup() serviceItem = ServiceItem() self.previewDisplay.webView.setHtml(build_html(serviceItem, self.previewDisplay.screen, None, self.isLive, plugins=PluginManager.get_instance().plugins)) - self.mediaController.setup_display(self.previewDisplay) + self.mediaController.setup_display(self.previewDisplay,True) if self.serviceItem: self.refreshServiceItem() diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 319ff861a..77afade60 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -37,7 +37,7 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ from openlp.core.lib.settings import Settings from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ create_horizontal_adjusting_combo_box -from openlp.core.ui import DisplayController, Display +from openlp.core.ui import DisplayController, Display, DisplayControllerType from openlp.core.ui.media import get_media_players, set_media_players from openlp.core.utils import locale_compare @@ -65,8 +65,9 @@ class MediaMediaItem(MediaManagerItem): self.mediaObject = None self.mediaController = DisplayController(parent) self.mediaController.controllerLayout = QtGui.QVBoxLayout() - self.plugin.mediaController.register_controller(self - .mediaController, self.mediaController.controllerLayout) + self.plugin.mediaController.register_controller(self.mediaController, + DisplayControllerType.Plugin, + self.mediaController.controllerLayout) self.plugin.mediaController.set_controls_visible(self.mediaController, False) self.mediaController.previewDisplay = Display(self.mediaController, @@ -76,15 +77,8 @@ class MediaMediaItem(MediaManagerItem): self.mediaController.previewDisplay.screen = \ {u'size':self.mediaController.previewDisplay.geometry()} self.mediaController.previewDisplay.setup() - serviceItem = ServiceItem() - self.mediaController.previewDisplay.webView.setHtml(build_html( - serviceItem, self.mediaController.previewDisplay.screen, None, - False, None)) - self.mediaController.previewDisplay.setup() self.plugin.mediaController.setup_display( - self.mediaController.previewDisplay) - self.mediaController.previewDisplay.hide() - + self.mediaController.previewDisplay, False) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'video_background_replaced'), self.videobackgroundReplaced) @@ -97,11 +91,6 @@ class MediaMediaItem(MediaManagerItem): def retranslateUi(self): self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') - #self.onNewFileMasks = unicode(translate('MediaPlugin.MediaItem', - # 'Videos (%s);;Audio (%s);;%s (*)')) % ( - # u' '.join(self.plugin.video_extensions_list), - # u' '.join(self.plugin.audio_extensions_list), - # UiStrings().AllFiles) self.replaceAction.setText(UiStrings().ReplaceBG) self.replaceAction.setToolTip(UiStrings().ReplaceLiveBG) self.resetAction.setText(UiStrings().ResetBG) @@ -253,7 +242,7 @@ class MediaMediaItem(MediaManagerItem): def displaySetup(self): self.plugin.mediaController.setup_display( - self.mediaController.previewDisplay) + self.mediaController.previewDisplay, False) def populateDisplayTypes(self): """