diff --git a/openlp/core/ui/media/media_api.py b/openlp/core/lib/media_player.py similarity index 94% rename from openlp/core/ui/media/media_api.py rename to openlp/core/lib/media_player.py index 265126db0..9a86f708b 100644 --- a/openlp/core/ui/media/media_api.py +++ b/openlp/core/lib/media_player.py @@ -27,13 +27,13 @@ from openlp.core.ui.media import MediaState -class MediaAPI(object): +class MediaPlayer(object): """ - A generic media API class to provide OpenLP with a pluggable media display + This is the base class media Player class to provide OpenLP with a pluggable media display framework. """ - def __init__(self, parent, name=u'media_api'): + def __init__(self, parent, name=u'media_player'): self.parent = parent self.name = name self.available = self.check_available() @@ -47,7 +47,7 @@ class MediaAPI(object): def check_available(self): """ - API is available on this machine + Player is available on this machine """ return False diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index ea10c6190..caeb6736f 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -59,7 +59,7 @@ class Display(QtGui.QGraphicsView): QtGui.QGraphicsView.__init__(self, parent) self.isLive = live self.controller = controller - self.screen = None + self.screen = {} self.plugins = PluginManager.get_instance().plugins self.setViewport(QtOpenGL.QGLWidget()) diff --git a/openlp/core/ui/media/__init__.py b/openlp/core/ui/media/__init__.py index 3ce8b6707..d934c12b5 100644 --- a/openlp/core/ui/media/__init__.py +++ b/openlp/core/ui/media/__init__.py @@ -62,5 +62,4 @@ class MediaInfo(object): end_time = 0 media_type = MediaType() -from media_api import MediaAPI from mediacontroller import MediaController diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index e1bcd0eef..6cc133273 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -31,8 +31,9 @@ import sys, os,time from PyQt4 import QtCore, QtGui, QtWebKit from openlp.core.lib import OpenLPToolbar, Receiver, translate +from openlp.core.lib.media_player import MediaPlayer from openlp.core.lib.ui import UiStrings, critical_error_message_box -from openlp.core.ui.media import MediaAPI, MediaState, MediaInfo, MediaType +from openlp.core.ui.media import MediaState, MediaInfo, MediaType from openlp.core.utils import AppLocation log = logging.getLogger(__name__) @@ -40,20 +41,20 @@ log = logging.getLogger(__name__) class MediaController(object): """ The implementation of the Media Controller. The Media Controller adds an own - class for every API. Currently these are QtWebkit, Phonon and planed Vlc. + class for every Player. Currently these are QtWebkit, Phonon and planed Vlc. """ def __init__(self, parent): self.parent = parent - self.mediaApis = {} + self.mediaPlayers = {} self.controller = [] - self.overridenApi = '' - self.curDisplayMediaAPI = {} + self.overridenPlayer = '' + self.curDisplayMediaPlayer = {} # Timer for video state self.timer = QtCore.QTimer() self.timer.setInterval(200) self.withLivePreview = False - self.check_available_media_apis() + self.check_available_media_players() # Signals QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.video_state) @@ -74,7 +75,7 @@ class MediaController(object): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'media_unblank'), self.video_unblank) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'media_override_api'), self.override_api) + QtCore.SIGNAL(u'media_override_player'), self.override_player) # Signals for background video QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'songs_hide'), self.video_hide) @@ -83,24 +84,24 @@ class MediaController(object): def register_controllers(self, controller): """ - Register each media API controller (Webkit, Phonon, etc) and store for + Register each media Player controller (Webkit, Phonon, etc) and store for later use """ if controller.check_available(): - self.mediaApis[controller.name] = controller + self.mediaPlayers[controller.name] = controller - def check_available_media_apis(self): + def check_available_media_players(self): """ - Check to see if we have any media API's available. If Not do not install + Check to see if we have any media Player's available. If Not do not install the plugin. """ - log.debug(u'check_available_media_apis') + log.debug(u'check_available_media_players') controller_dir = os.path.join( AppLocation.get_directory(AppLocation.AppDir), u'core', u'ui', u'media') for filename in os.listdir(controller_dir): - if filename.endswith(u'api.py') and \ - not filename == 'media_api.py': + if filename.endswith(u'player.py') and \ + not filename == 'media_player.py': path = os.path.join(controller_dir, filename) if os.path.isfile(path): modulename = u'openlp.core.ui.media.' + \ @@ -111,21 +112,21 @@ class MediaController(object): except ImportError: log.warn(u'Failed to import %s on path %s', modulename, path) - controller_classes = MediaAPI.__subclasses__() + controller_classes = MediaPlayer.__subclasses__() for controller_class in controller_classes: controller = controller_class(self) self.register_controllers(controller) - if self.mediaApis: - apiSettings = str(QtCore.QSettings().value(u'media/apis', + if self.mediaPlayers: + playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) - savedAPIs = apiSettings.split(u',') - invalidMediaAPIs = [mediaApi for mediaApi in savedAPIs \ - if not mediaApi in self.mediaApis] - if len(invalidMediaAPIs)>0: - [savedAPIs.remove(invalidApi) for invalidApi in invalidMediaAPIs] - newApiSetting = u','.join(savedAPIs) - QtCore.QSettings().setValue(u'media/apis', - QtCore.QVariant(newApiSetting)) + savedPlayers = playerSettings.split(u',') + invalidMediaPlayers = [mediaPlayer for mediaPlayer in savedPlayers \ + if not mediaPlayer in self.mediaPlayers] + if len(invalidMediaPlayers)>0: + [savedPlayers.remove(invalidPlayer) for invalidPlayer in invalidMediaPlayers] + newPlayerSetting = u','.join(savedPlayers) + QtCore.QSettings().setValue(u'media/players', + QtCore.QVariant(newPlayerSetting)) return True else: return False @@ -135,13 +136,13 @@ class MediaController(object): Check if there is a running media Player and do updating stuff (e.g. update the UI) """ - if len(self.curDisplayMediaAPI.keys()) == 0: + if len(self.curDisplayMediaPlayer.keys()) == 0: self.timer.stop() else: - for display in self.curDisplayMediaAPI.keys(): - self.curDisplayMediaAPI[display].resize(display) - self.curDisplayMediaAPI[display].update_ui(display) - if self.curDisplayMediaAPI[display] \ + for display in self.curDisplayMediaPlayer.keys(): + self.curDisplayMediaPlayer[display].resize(display) + self.curDisplayMediaPlayer[display].update_ui(display) + if self.curDisplayMediaPlayer[display] \ .state == MediaState.Playing: return self.timer.stop() @@ -151,8 +152,8 @@ class MediaController(object): Add css style sheets to htmlbuilder """ css = u'' - for api in self.mediaApis.values(): - css += api.get_media_display_css() + for player in self.mediaPlayers.values(): + css += player.get_media_display_css() return css def get_media_display_javascript(self): @@ -160,8 +161,8 @@ class MediaController(object): Add javascript functions to htmlbuilder """ js = u'' - for api in self.mediaApis.values(): - js += api.get_media_display_javascript() + for player in self.mediaPlayers.values(): + js += player.get_media_display_javascript() return js def get_media_display_html(self): @@ -169,8 +170,8 @@ class MediaController(object): Add html code to htmlbuilder """ html = u'' - for api in self.mediaApis.values(): - html += api.get_media_display_html() + for player in self.mediaPlayers.values(): + html += player.get_media_display_html() return html def add_controller_items(self, controller, control_panel): @@ -248,8 +249,8 @@ class MediaController(object): if display == self.parent.previewController.previewDisplay or \ display == self.parent.liveController.previewDisplay: display.hasAudio = False - for api in self.mediaApis.values(): - api.setup(display) + for player in self.mediaPlayers.values(): + player.setup(display) def set_controls_visible(self, controller, value): # Generic controls @@ -258,12 +259,12 @@ class MediaController(object): # (e.g. for DVD control, ...) # TODO - def resize(self, controller, display, api): + def resize(self, controller, display, player): """ After Mainwindow changes or Splitter moved all related media widgets have to be resized """ - api.resize(display) + player.resize(display) def video(self, controller, file, muted, isBackground): """ @@ -316,7 +317,7 @@ class MediaController(object): display.frame.evaluateJavaScript(u'show_video( \ "setBackBoard", null, null, null,"visible");') self.set_controls_visible(controller, True) - log.debug(u'use %s controller' % self.curDisplayMediaAPI[display]) + log.debug(u'use %s controller' % self.curDisplayMediaPlayer[display]) return True else: critical_error_message_box( @@ -327,42 +328,42 @@ class MediaController(object): def check_file_type(self, controller, display): """ - Used to choose the right media API type from the prioritized API list + Used to choose the right media Player type from the prioritized Player list """ - apiSettings = str(QtCore.QSettings().value(u'media/apis', + playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) - usedAPIs = apiSettings.split(u',') - if QtCore.QSettings().value(u'media/override api', + usedPlayers = playerSettings.split(u',') + if QtCore.QSettings().value(u'media/override player', QtCore.QVariant(QtCore.Qt.Unchecked)) == QtCore.Qt.Checked: - if self.overridenApi != '': - usedAPIs = [self.overridenApi] + if self.overridenPlayer != '': + usedPlayers = [self.overridenPlayer] if controller.media_info.file_info.isFile(): suffix = u'*.%s' % controller.media_info.file_info.suffix().toLower() - for title in usedAPIs: - api = self.mediaApis[title] - if suffix in api.video_extensions_list: + for title in usedPlayers: + player = self.mediaPlayers[title] + if suffix in player.video_extensions_list: if not controller.media_info.is_background or \ - controller.media_info.is_background and api.canBackground: - self.resize(controller, display, api) - if api.load(display): - self.curDisplayMediaAPI[display] = api + controller.media_info.is_background and player.canBackground: + self.resize(controller, display, player) + if player.load(display): + self.curDisplayMediaPlayer[display] = player controller.media_info.media_type = MediaType.Video return True - if suffix in api.audio_extensions_list: - if api.load(display): - self.curDisplayMediaAPI[display] = api + if suffix in player.audio_extensions_list: + if player.load(display): + self.curDisplayMediaPlayer[display] = player controller.media_info.media_type = MediaType.Audio return True else: - for title in usedAPIs: - api = self.mediaApis[title] - if api.canFolder: - self.resize(controller, display, api) - if api.load(display): - self.curDisplayMediaAPI[display] = api + for title in usedPlayers: + player = self.mediaPlayers[title] + if player.canFolder: + self.resize(controller, display, player) + if player.load(display): + self.curDisplayMediaPlayer[display] = player controller.media_info.media_type = MediaType.Video return True - # no valid api found + # no valid player found return False def video_play(self, msg, status=True): @@ -371,16 +372,16 @@ class MediaController(object): """ log.debug(u'video_play') controller = msg[0] - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: if controller.isLive: if controller.hideMenu.defaultAction().isChecked(): controller.hideMenu.defaultAction().trigger() - if not self.curDisplayMediaAPI[display].play(display): + if not self.curDisplayMediaPlayer[display].play(display): return False if status: display.frame.evaluateJavaScript(u'show_blank("desktop");') - self.curDisplayMediaAPI[display].set_visible(display, True) + self.curDisplayMediaPlayer[display].set_visible(display, True) # Start Timer for ui updates if not self.timer.isActive(): self.timer.start() @@ -392,9 +393,9 @@ class MediaController(object): """ log.debug(u'video_pause') controller = msg[0] - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - self.curDisplayMediaAPI[display].pause(display) + self.curDisplayMediaPlayer[display].pause(display) def video_stop(self, msg): """ @@ -402,11 +403,11 @@ class MediaController(object): """ log.debug(u'video_stop') controller = msg[0] - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: display.frame.evaluateJavaScript(u'show_blank("black");') - self.curDisplayMediaAPI[display].stop(display) - self.curDisplayMediaAPI[display].set_visible(display, False) + self.curDisplayMediaPlayer[display].stop(display) + self.curDisplayMediaPlayer[display].set_visible(display, False) def video_volume(self, msg): """ @@ -415,9 +416,9 @@ class MediaController(object): controller = msg[0] vol = msg[1][0] log.debug(u'video_volume %d' % vol) - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - self.curDisplayMediaAPI[display].volume(display, vol) + self.curDisplayMediaPlayer[display].volume(display, vol) def video_seek(self, msg): """ @@ -426,23 +427,23 @@ class MediaController(object): log.debug(u'video_seek') controller = msg[0] seekVal = msg[1][0] - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - self.curDisplayMediaAPI[display].seek(display, seekVal) + self.curDisplayMediaPlayer[display].seek(display, seekVal) def video_reset(self, controller): """ Responds to the request to reset a loaded video """ log.debug(u'video_reset') - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: display.override = {} - self.curDisplayMediaAPI[display].reset(display) - self.curDisplayMediaAPI[display].set_visible(display, False) + self.curDisplayMediaPlayer[display].reset(display) + self.curDisplayMediaPlayer[display].set_visible(display, False) display.frame.evaluateJavaScript(u'show_video( \ "setBackBoard", null, null, null,"hidden");') - del self.curDisplayMediaAPI[display] + del self.curDisplayMediaPlayer[display] self.set_controls_visible(controller, False) def video_hide(self, msg): @@ -452,12 +453,12 @@ class MediaController(object): isLive = msg[1] if isLive: controller = self.parent.liveController - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - if self.curDisplayMediaAPI[display] \ + if self.curDisplayMediaPlayer[display] \ .state == MediaState.Playing: - self.curDisplayMediaAPI[display].pause(display) - self.curDisplayMediaAPI[display] \ + self.curDisplayMediaPlayer[display].pause(display) + self.curDisplayMediaPlayer[display] \ .set_visible(display, False) def video_blank(self, msg): @@ -469,12 +470,12 @@ class MediaController(object): if isLive: Receiver.send_message(u'live_display_hide', hide_mode) controller = self.parent.liveController - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - if self.curDisplayMediaAPI[display] \ + if self.curDisplayMediaPlayer[display] \ .state == MediaState.Playing: - self.curDisplayMediaAPI[display].pause(display) - self.curDisplayMediaAPI[display] \ + self.curDisplayMediaPlayer[display].pause(display) + self.curDisplayMediaPlayer[display] \ .set_visible(display, False) def video_unblank(self, msg): @@ -485,12 +486,12 @@ class MediaController(object): isLive = msg[1] if isLive: controller = self.parent.liveController - for display in self.curDisplayMediaAPI.keys(): + for display in self.curDisplayMediaPlayer.keys(): if display.controller == controller: - if self.curDisplayMediaAPI[display] \ + if self.curDisplayMediaPlayer[display] \ .state == MediaState.Paused: - if self.curDisplayMediaAPI[display].play(display): - self.curDisplayMediaAPI[display] \ + if self.curDisplayMediaPlayer[display].play(display): + self.curDisplayMediaPlayer[display] \ .set_visible(display, True) # Start Timer for ui updates if not self.timer.isActive(): @@ -499,28 +500,28 @@ class MediaController(object): def get_audio_extensions_list(self): audio_list = [] - for api in self.mediaApis.values(): - for item in api.audio_extensions_list: + for player in self.mediaPlayers.values(): + for item in player.audio_extensions_list: if not item in audio_list: audio_list.append(item) return audio_list def get_video_extensions_list(self): video_list = [] - for api in self.mediaApis.values(): - for item in api.video_extensions_list: + for player in self.mediaPlayers.values(): + for item in player.video_extensions_list: if not item in video_list: video_list.append(item) return video_list - def override_api(self, override_api): - apiSettings = str(QtCore.QSettings().value(u'media/apis', + def override_player(self, override_player): + playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) - usedAPIs = apiSettings.split(u',') - if override_api in usedAPIs: - self.overridenApi = override_api + usedPlayers = playerSettings.split(u',') + if override_player in usedPlayers: + self.overridenPlayer = override_player else: - self.overridenApi = '' + self.overridenPlayer = '' def finalise(self): self.timer.stop() diff --git a/openlp/core/ui/media/phononapi.py b/openlp/core/ui/media/phononplayer.py similarity index 97% rename from openlp/core/ui/media/phononapi.py rename to openlp/core/ui/media/phononplayer.py index 0cd086ef6..3e7d68379 100644 --- a/openlp/core/ui/media/phononapi.py +++ b/openlp/core/ui/media/phononplayer.py @@ -33,7 +33,8 @@ from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon from openlp.core.lib import Receiver -from openlp.core.ui.media import MediaAPI, MediaState +from openlp.core.lib.media_player import MediaPlayer +from openlp.core.ui.media import MediaState log = logging.getLogger(__name__) @@ -54,14 +55,14 @@ ADDITIONAL_EXT = { u'video/x-ms-wmv': [u'.wmv']} -class PhononAPI(MediaAPI): +class PhononPlayer(MediaPlayer): """ - A specialised version of the MediaAPI class, which provides a Phonon + A specialised version of the MediaPlayer class, which provides a Phonon display. """ def __init__(self, parent): - MediaAPI.__init__(self, parent, u'phonon') + MediaPlayer.__init__(self, parent, u'phonon') self.parent = parent self.additional_extensions = ADDITIONAL_EXT mimetypes.init() diff --git a/openlp/core/ui/media/webkitapi.py b/openlp/core/ui/media/webkitplayer.py similarity index 98% rename from openlp/core/ui/media/webkitapi.py rename to openlp/core/ui/media/webkitplayer.py index ee7a2c5b3..ad69c5bc9 100644 --- a/openlp/core/ui/media/webkitapi.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -30,7 +30,8 @@ import logging from PyQt4 import QtCore, QtGui, QtWebKit from openlp.core.lib import OpenLPToolbar, translate -from openlp.core.ui.media import MediaAPI, MediaState +from openlp.core.lib.media_player import MediaPlayer +from openlp.core.ui.media import MediaState log = logging.getLogger(__name__) @@ -254,14 +255,14 @@ AUDIO_EXT = [ ] -class WebkitAPI(MediaAPI): +class WebkitPlayer(MediaPlayer): """ - A specialised version of the MediaAPI class, which provides a QtWebKit + A specialised version of the MediaPlayer class, which provides a QtWebKit display. """ def __init__(self, parent): - MediaAPI.__init__(self, parent, u'webkit') + MediaPlayer.__init__(self, parent, u'webkit') self.parent = parent self.canBackground = True self.audio_extensions_list = AUDIO_EXT @@ -403,12 +404,10 @@ class WebkitAPI(MediaAPI): (currentTime, ok) = display.frame.evaluateJavaScript( \ u'show_video("currentTime");').toFloat() # check if conversion was ok and value is not 'NaN' - print currentTime, if ok and currentTime != float('inf'): currentTime = int(currentTime*1000) (length, ok) = display.frame.evaluateJavaScript( \ u'show_video("length");').toFloat() - print length # check if conversion was ok and value is not 'NaN' if ok and length != float('inf'): length = int(length*1000) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 2b2fa4358..003a382e9 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -34,7 +34,7 @@ from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon from openlp.core.lib import OpenLPToolbar, Receiver, ItemCapabilities, \ - translate, build_icon, ServiceItem, build_html + translate, build_icon, ServiceItem, build_html, PluginManager, ServiceItem from openlp.core.lib.ui import UiStrings, shortcut_action from openlp.core.ui import HideMode, MainDisplay, Display, ScreenList from openlp.core.utils.actions import ActionList, CategoryOrder @@ -291,7 +291,7 @@ class SlideController(Controller): self.previewDisplay.setup() serviceItem = ServiceItem() self.previewDisplay.webView.setHtml(build_html(serviceItem, - self.previewDisplay.screen, None, self.isLive, None)) + self.previewDisplay.screen, None, self.isLive, None, PluginManager.get_instance().plugins)) # self.previewDisplay.webView.hide() self.slideLayout.insertWidget(0, self.previewDisplay) self.previewDisplay.hide() @@ -591,6 +591,10 @@ class SlideController(Controller): self.mediaController.setup_display(self.display) self.previewSizeChanged() self.previewDisplay.setup() + serviceItem = ServiceItem() + self.previewDisplay.webView.setHtml(build_html(serviceItem, + self.previewDisplay.screen, None, self.isLive, None, + plugins=PluginManager.get_instance().plugins)) self.mediaController.setup_display(self.previewDisplay) if self.serviceItem: self.refreshServiceItem() diff --git a/openlp/plugins/media/forms/__init__.py b/openlp/plugins/media/forms/__init__.py deleted file mode 100644 index 3cc42db26..000000000 --- a/openlp/plugins/media/forms/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # -# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # -# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # -# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -from mediaopenform import MediaOpenForm diff --git a/openlp/plugins/media/forms/mediaopendialog.py b/openlp/plugins/media/forms/mediaopendialog.py deleted file mode 100644 index 784d1a18c..000000000 --- a/openlp/plugins/media/forms/mediaopendialog.py +++ /dev/null @@ -1,297 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # -# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # -# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # -# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -from PyQt4 import QtCore, QtGui - -from openlp.core.lib import translate -from openlp.core.lib.ui import UiStrings - -class Ui_MediaOpenDialog(object): - def setupUi(self, mediaOpenDialog): - mediaOpenDialog.setObjectName(u'mediaOpenDialog') - mediaOpenDialog.resize(574, 431) - self.verticalLayout = QtGui.QVBoxLayout(mediaOpenDialog) - self.verticalLayout.setObjectName(u'verticalLayout') - self.MediaOpenWidget = QtGui.QTabWidget(mediaOpenDialog) - self.MediaOpenWidget.setTabPosition(QtGui.QTabWidget.North) - self.MediaOpenWidget.setTabShape(QtGui.QTabWidget.Rounded) - self.MediaOpenWidget.setTabsClosable(False) - self.MediaOpenWidget.setObjectName(u'MediaOpenWidget') - self.FileTab = QtGui.QWidget() - self.FileTab.setObjectName(u'FileTab') - self.verticalLayout_2 = QtGui.QVBoxLayout(self.FileTab) - self.verticalLayout_2.setObjectName(u'verticalLayout_2') - self.FileSelectionGroupBox = QtGui.QGroupBox(self.FileTab) - self.FileSelectionGroupBox.setObjectName(u'FileSelectionGroupBox') - self.verticalLayout_7 = QtGui.QVBoxLayout(self.FileSelectionGroupBox) - self.verticalLayout_7.setObjectName(u'verticalLayout_7') - self.ChooseFilesLabel = QtGui.QLabel(self.FileSelectionGroupBox) - self.ChooseFilesLabel.setObjectName(u'ChooseFilesLabel') - self.verticalLayout_7.addWidget(self.ChooseFilesLabel) - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName(u'horizontalLayout') - self.FilesListView = QtGui.QListWidget(self.FileSelectionGroupBox) - self.FilesListView.setObjectName(u'FilesListView') - self.horizontalLayout.addWidget(self.FilesListView) - self.AddRemovelLayout = QtGui.QVBoxLayout() - self.AddRemovelLayout.setObjectName(u'AddRemovelLayout') - self.FileAddButton = QtGui.QPushButton(self.FileSelectionGroupBox) - self.FileAddButton.setObjectName(u'FileAddButton') - self.AddRemovelLayout.addWidget(self.FileAddButton) - self.FileRemoveButton = QtGui.QPushButton(self.FileSelectionGroupBox) - self.FileRemoveButton.setObjectName(u'FileRemoveButton') - self.AddRemovelLayout.addWidget(self.FileRemoveButton) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.AddRemovelLayout.addItem(spacerItem) - self.horizontalLayout.addLayout(self.AddRemovelLayout) - self.verticalLayout_7.addLayout(self.horizontalLayout) - spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout_7.addItem(spacerItem1) - self.verticalLayout_2.addWidget(self.FileSelectionGroupBox) - self.MediaOpenWidget.addTab(self.FileTab, u'') - self.MediaTab = QtGui.QWidget() - self.MediaTab.setObjectName(u'MediaTab') - self.verticalLayout_3 = QtGui.QVBoxLayout(self.MediaTab) - self.verticalLayout_3.setObjectName(u'verticalLayout_3') - self.ChooseMediaGroupBox = QtGui.QGroupBox(self.MediaTab) - self.ChooseMediaGroupBox.setObjectName(u'ChooseMediaGroupBox') - self.verticalLayout_8 = QtGui.QVBoxLayout(self.ChooseMediaGroupBox) - self.verticalLayout_8.setObjectName(u'verticalLayout_8') - self.MediaTypeWidget = QtGui.QWidget(self.ChooseMediaGroupBox) - self.MediaTypeWidget.setObjectName(u'MediaTypeWidget') - self.horizontalLayout_2 = QtGui.QHBoxLayout(self.MediaTypeWidget) - self.horizontalLayout_2.setMargin(0) - self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') - self.DvdRadioButton = QtGui.QRadioButton(self.MediaTypeWidget) - self.DvdRadioButton.setObjectName(u'DvdRadioButton') - self.horizontalLayout_2.addWidget(self.DvdRadioButton) - self.AudioCdRadioButton = QtGui.QRadioButton(self.MediaTypeWidget) - self.AudioCdRadioButton.setObjectName(u'AudioCdRadioButton') - self.horizontalLayout_2.addWidget(self.AudioCdRadioButton) - self.verticalLayout_8.addWidget(self.MediaTypeWidget) - self.DeviceWidget = QtGui.QWidget(self.ChooseMediaGroupBox) - self.DeviceWidget.setObjectName(u'DeviceWidget') - self.horizontalLayout_10 = QtGui.QHBoxLayout(self.DeviceWidget) - self.horizontalLayout_10.setMargin(0) - self.horizontalLayout_10.setObjectName(u'horizontalLayout_10') - self.DeviceLabel = QtGui.QLabel(self.DeviceWidget) - self.DeviceLabel.setObjectName(u'DeviceLabel') - self.horizontalLayout_10.addWidget(self.DeviceLabel) - self.DeviceComboBox = QtGui.QComboBox(self.DeviceWidget) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, - QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.DeviceComboBox.sizePolicy().hasHeightForWidth()) - self.DeviceComboBox.setSizePolicy(sizePolicy) - self.DeviceComboBox.setObjectName(u'DeviceComboBox') - self.horizontalLayout_10.addWidget(self.DeviceComboBox) - self.DeviceEject = QtGui.QPushButton(self.DeviceWidget) - sizePolicy = QtGui.QSizePolicy( \ - QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.DeviceEject.sizePolicy().hasHeightForWidth()) - self.DeviceEject.setSizePolicy(sizePolicy) - self.DeviceEject.setObjectName(u'DeviceEject') - self.horizontalLayout_10.addWidget(self.DeviceEject) - self.DeviceSearchButton = QtGui.QPushButton(self.DeviceWidget) - self.DeviceSearchButton.setObjectName(u'DeviceSearchButton') - self.horizontalLayout_10.addWidget(self.DeviceSearchButton) - self.verticalLayout_8.addWidget(self.DeviceWidget) - self.verticalLayout_3.addWidget(self.ChooseMediaGroupBox) - self.StartpositionGroupBox = QtGui.QGroupBox(self.MediaTab) - self.StartpositionGroupBox.setObjectName(u'StartpositionGroupBox') - self.horizontalLayout_4 = QtGui.QHBoxLayout(self.StartpositionGroupBox) - self.horizontalLayout_4.setObjectName(u'horizontalLayout_4') - self.TitleWidget = QtGui.QWidget(self.StartpositionGroupBox) - self.TitleWidget.setObjectName(u'TitleWidget') - self.horizontalLayout_7 = QtGui.QHBoxLayout(self.TitleWidget) - self.horizontalLayout_7.setMargin(0) - self.horizontalLayout_7.setObjectName(u'horizontalLayout_7') - self.TitleLabel = QtGui.QLabel(self.TitleWidget) - sizePolicy = QtGui.QSizePolicy( \ - QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.TitleLabel.sizePolicy().hasHeightForWidth()) - self.TitleLabel.setSizePolicy(sizePolicy) - self.TitleLabel.setObjectName(u'TitleLabel') - self.horizontalLayout_7.addWidget(self.TitleLabel) - self.horizontalLayout_4.addWidget(self.TitleWidget) - self.ChapterWidget = QtGui.QWidget(self.StartpositionGroupBox) - self.ChapterWidget.setEnabled(True) - self.ChapterWidget.setObjectName(u'ChapterWidget') - self.horizontalLayout_6 = QtGui.QHBoxLayout(self.ChapterWidget) - self.horizontalLayout_6.setMargin(0) - self.horizontalLayout_6.setObjectName(u'horizontalLayout_6') - self.ChapterLabel = QtGui.QLabel(self.ChapterWidget) - sizePolicy = QtGui.QSizePolicy( \ - QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.ChapterLabel.sizePolicy().hasHeightForWidth()) - self.ChapterLabel.setSizePolicy(sizePolicy) - self.ChapterLabel.setObjectName(u'ChapterLabel') - self.horizontalLayout_6.addWidget(self.ChapterLabel) - self.ChapterSpinBox = QtGui.QSpinBox(self.ChapterWidget) - self.ChapterSpinBox.setObjectName(u'ChapterSpinBox') - self.horizontalLayout_6.addWidget(self.ChapterSpinBox) - self.horizontalLayout_4.addWidget(self.ChapterWidget) - self.verticalLayout_3.addWidget(self.StartpositionGroupBox) - self.AudioSubtitleGroupBox = QtGui.QGroupBox(self.MediaTab) - self.AudioSubtitleGroupBox.setObjectName(u'AudioSubtitleGroupBox') - self.horizontalLayout_5 = QtGui.QHBoxLayout(self.AudioSubtitleGroupBox) - self.horizontalLayout_5.setObjectName(u'horizontalLayout_5') - self.AudioTrackWidget = QtGui.QWidget(self.AudioSubtitleGroupBox) - self.AudioTrackWidget.setObjectName(u'AudioTrackWidget') - self.horizontalLayout_9 = QtGui.QHBoxLayout(self.AudioTrackWidget) - self.horizontalLayout_9.setMargin(0) - self.horizontalLayout_9.setObjectName(u'horizontalLayout_9') - self.AudioTrackLabel_2 = QtGui.QLabel(self.AudioTrackWidget) - sizePolicy = QtGui.QSizePolicy( \ - QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.AudioTrackLabel_2.sizePolicy().hasHeightForWidth()) - self.AudioTrackLabel_2.setSizePolicy(sizePolicy) - self.AudioTrackLabel_2.setObjectName(u'AudioTrackLabel_2') - self.horizontalLayout_9.addWidget(self.AudioTrackLabel_2) - self.TitleSpinBox = QtGui.QSpinBox(self.AudioTrackWidget) - self.TitleSpinBox.setObjectName(u'TitleSpinBox') - self.horizontalLayout_9.addWidget(self.TitleSpinBox) - self.horizontalLayout_5.addWidget(self.AudioTrackWidget) - self.SubtitleTrackWidget = QtGui.QWidget(self.AudioSubtitleGroupBox) - self.SubtitleTrackWidget.setObjectName(u'SubtitleTrackWidget') - self.horizontalLayout_8 = QtGui.QHBoxLayout(self.SubtitleTrackWidget) - self.horizontalLayout_8.setMargin(0) - self.horizontalLayout_8.setObjectName(u'horizontalLayout_8') - self.SubtitleTrackLabel = QtGui.QLabel(self.SubtitleTrackWidget) - sizePolicy = QtGui.QSizePolicy( \ - QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth( \ - self.SubtitleTrackLabel.sizePolicy().hasHeightForWidth()) - self.SubtitleTrackLabel.setSizePolicy(sizePolicy) - self.SubtitleTrackLabel.setObjectName(u'SubtitleTrackLabel') - self.horizontalLayout_8.addWidget(self.SubtitleTrackLabel) - self.SubtitleTrackSpinBox = QtGui.QSpinBox(self.SubtitleTrackWidget) - self.SubtitleTrackSpinBox.setObjectName(u'SubtitleTrackSpinBox') - self.horizontalLayout_8.addWidget(self.SubtitleTrackSpinBox) - self.horizontalLayout_5.addWidget(self.SubtitleTrackWidget) - self.verticalLayout_3.addWidget(self.AudioSubtitleGroupBox) - spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, \ - QtGui.QSizePolicy.Expanding) - self.verticalLayout_3.addItem(spacerItem2) - self.MediaOpenWidget.addTab(self.MediaTab, u'') - self.NetworkTab = QtGui.QWidget() - self.NetworkTab.setObjectName(u'NetworkTab') - self.verticalLayout_4 = QtGui.QVBoxLayout(self.NetworkTab) - self.verticalLayout_4.setObjectName(u'verticalLayout_4') - self.NetworkprotocolGroupBox = QtGui.QGroupBox(self.NetworkTab) - self.NetworkprotocolGroupBox.setObjectName(u'NetworkprotocolGroupBox') - self.verticalLayout_5 = QtGui.QVBoxLayout(self.NetworkprotocolGroupBox) - self.verticalLayout_5.setObjectName(u'verticalLayout_5') - self.NetworkAdressLabel = QtGui.QLabel(self.NetworkprotocolGroupBox) - self.NetworkAdressLabel.setObjectName(u'NetworkAdressLabel') - self.verticalLayout_5.addWidget(self.NetworkAdressLabel) - self.NetworkAdressEdit = QtGui.QLineEdit(self.NetworkprotocolGroupBox) - self.NetworkAdressEdit.setObjectName(u'NetworkAdressEdit') - self.verticalLayout_5.addWidget(self.NetworkAdressEdit) - spacerItem3 = QtGui.QSpacerItem(20, 259, QtGui.QSizePolicy.Minimum, \ - QtGui.QSizePolicy.Expanding) - self.verticalLayout_5.addItem(spacerItem3) - self.verticalLayout_4.addWidget(self.NetworkprotocolGroupBox) - self.MediaOpenWidget.addTab(self.NetworkTab, u'') - self.verticalLayout.addWidget(self.MediaOpenWidget) - self.ButtonBox = QtGui.QDialogButtonBox(mediaOpenDialog) - self.ButtonBox.setStandardButtons( \ - QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) - self.ButtonBox.setObjectName(u'ButtonBox') - self.verticalLayout.addWidget(self.ButtonBox) - - self.retranslateUi(mediaOpenDialog) - self.MediaOpenWidget.setCurrentIndex(0) - QtCore.QMetaObject.connectSlotsByName(mediaOpenDialog) - - def retranslateUi(self, mediaOpenDialog): - mediaOpenDialog.setWindowTitle( - translate('MediaPlugin', 'mediaOpenForm')) - self.FileSelectionGroupBox.setTitle(translate( - 'MediaPlugin', 'File Selection')) - self.ChooseFilesLabel.setText( - translate('MediaPlugin', 'Choose Files with the Buttons right.')) - self.FileAddButton.setText( - translate('MediaPlugin', 'Add ...')) - self.FileRemoveButton.setText( - translate('MediaPlugin', 'Remove')) - self.MediaOpenWidget.setTabText( - self.MediaOpenWidget.indexOf(self.FileTab), - translate('MediaPlugin', 'File(s)')) - self.ChooseMediaGroupBox.setTitle( - translate('MediaPlugin', 'Choose Media')) - self.DvdRadioButton.setText( - translate('MediaPlugin', 'DVD')) - self.AudioCdRadioButton.setText( - translate('MediaPlugin', 'Audio-CD')) - self.DeviceLabel.setText( - translate('MediaPlugin', 'Device')) - self.DeviceEject.setText( - translate('MediaPlugin', 'Eject')) - self.DeviceSearchButton.setText( - translate('MediaPlugin', 'Search ...')) - self.StartpositionGroupBox.setTitle( - translate('MediaPlugin', 'Startposition')) - self.TitleLabel.setText( - translate('MediaPlugin', 'Title')) - self.ChapterLabel.setText( - translate('MediaPlugin', 'Chapter')) - self.AudioSubtitleGroupBox.setTitle( - translate('MediaPlugin', 'Audio and Subtitle')) - self.AudioTrackLabel_2.setText( - translate('MediaPlugin', 'Audiotrack')) - self.SubtitleTrackLabel.setText( - translate('MediaPlugin', 'Subtitletrack')) - self.MediaOpenWidget.setTabText( - self.MediaOpenWidget.indexOf(self.MediaTab), - translate('MediaPlugin', 'Location')) - self.NetworkprotocolGroupBox.setTitle( - translate('MediaPlugin', 'Networkprotocol')) - self.NetworkAdressLabel.setText( - translate('MediaPlugin', 'Network adress:')) - self.MediaOpenWidget.setTabText( - self.MediaOpenWidget.indexOf(self.NetworkTab), - translate('MediaPlugin', 'Network')) - diff --git a/openlp/plugins/media/forms/mediaopenform.py b/openlp/plugins/media/forms/mediaopenform.py deleted file mode 100644 index 57d0d6362..000000000 --- a/openlp/plugins/media/forms/mediaopenform.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2011 Raoul Snyman # -# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan # -# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # -# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # -# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # -# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -import logging - -from PyQt4 import QtCore, QtGui - -from openlp.core.lib import Receiver, translate -from mediaopendialog import Ui_MediaOpenDialog - -log = logging.getLogger(__name__) - -class MediaOpenForm(QtGui.QDialog, Ui_MediaOpenDialog): - """ - Class documentation goes here. - """ - log.info(u'Media Open Form loaded') - def __init__(self, parent): - """ - Constructor - """ - QtGui.QDialog.__init__(self, parent) - self.setupUi(self) - # Connecting signals and slots - diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 58575cb95..f161248ce 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -38,7 +38,6 @@ from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ media_item_combo_box from openlp.core.ui import Controller, Display -from openlp.plugins.media.forms import MediaOpenForm log = logging.getLogger(__name__) @@ -59,7 +58,6 @@ class MediaMediaItem(MediaManagerItem): self.Automatic = u'' MediaManagerItem.__init__(self, parent, plugin, icon) self.singleServiceItem = False - self.mediaOpenForm = MediaOpenForm(self.plugin.formparent) self.hasSearch = True self.mediaObject = None self.mediaController = Controller(parent) @@ -105,7 +103,7 @@ class MediaMediaItem(MediaManagerItem): self.Automatic = translate('MediaPlugin.MediaItem', 'Automatic') self.displayTypeLabel.setText( - translate('MediaPlugin.MediaItem', 'Use Api:')) + translate('MediaPlugin.MediaItem', 'Use Player:')) def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -117,11 +115,6 @@ class MediaMediaItem(MediaManagerItem): MediaManagerItem.addListViewToToolBar(self) self.listView.addAction(self.replaceAction) -# TODO activate own media open menu -# def addStartHeaderBar(self): -# self.replaceAction = self.addToolbarButton(u'', u'', -# u':/general/general_open.png', self.onMediaOpenClick, False) - def addEndHeaderBar(self): # Replace backgrounds do not work at present so remove functionality. self.replaceAction = self.addToolbarButton(u'', u'', @@ -144,16 +137,10 @@ class MediaMediaItem(MediaManagerItem): # Add the Media widget to the page layout self.pageLayout.addWidget(self.mediaWidget) QtCore.QObject.connect(self.displayTypeComboBox, - QtCore.SIGNAL(u'currentIndexChanged (int)'), self.overrideApiChanged) + QtCore.SIGNAL(u'currentIndexChanged (int)'), self.overridePlayerChanged) - def onMediaOpenClick(self): - """ - Add a folder to the list widget to make it available for showing - """ - self.mediaOpenForm.exec_() - - def overrideApiChanged(self, index): - Receiver.send_message(u'media_override_api', \ + def overridePlayerChanged(self, index): + Receiver.send_message(u'media_override_player', \ u'%s' % self.displayTypeComboBox.currentText()) def onResetClick(self): @@ -244,20 +231,20 @@ class MediaMediaItem(MediaManagerItem): def populateDisplayTypes(self): """ - Load the combobox with the enabled media apis, - allowing user to select a specific api if settings allow + Load the combobox with the enabled media players, + allowing user to select a specific player if settings allow """ self.displayTypeComboBox.clear() - apiSettings = str(QtCore.QSettings().value(u'media/apis', + playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) - usedAPIs = apiSettings.split(u',') - for title in usedAPIs: + usedPlayers = playerSettings.split(u',') + for title in usedPlayers: # load the drop down selection self.displayTypeComboBox.addItem(title) if self.displayTypeComboBox.count() > 1: self.displayTypeComboBox.insertItem(0, self.Automatic) self.displayTypeComboBox.setCurrentIndex(0) - if QtCore.QSettings().value(self.settingsSection + u'/override api', + if QtCore.QSettings().value(self.settingsSection + u'/override player', QtCore.QVariant(QtCore.Qt.Unchecked)) == QtCore.Qt.Checked: self.mediaWidget.show() else: diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 4e261745d..c390ca82f 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -34,48 +34,48 @@ class MediaTab(SettingsTab): """ MediaTab is the Media settings tab in the settings dialog. """ - def __init__(self, parent, title, visible_title, media_apis, icon_path): - self.media_apis = media_apis + def __init__(self, parent, title, visible_title, media_players, icon_path): + self.media_players = media_players SettingsTab.__init__(self, parent, title, visible_title, icon_path) def setupUi(self): self.setObjectName(u'MediaTab') SettingsTab.setupUi(self) - self.mediaAPIGroupBox = QtGui.QGroupBox(self.leftColumn) - self.mediaAPIGroupBox.setObjectName(u'mediaAPIGroupBox') - self.mediaApiLayout = QtGui.QVBoxLayout(self.mediaAPIGroupBox) - self.mediaApiLayout.setObjectName(u'mediaApiLayout') - self.ApiCheckBoxes = {} - for key in self.media_apis: - api = self.media_apis[key] - checkbox = QtGui.QCheckBox(self.mediaAPIGroupBox) - checkbox.setEnabled(api.available) - checkbox.setObjectName(api.name + u'CheckBox') - self.ApiCheckBoxes[api.name] = checkbox - self.mediaApiLayout.addWidget(checkbox) - self.leftLayout.addWidget(self.mediaAPIGroupBox) - self.apiOrderGroupBox = QtGui.QGroupBox(self.leftColumn) - self.apiOrderGroupBox.setObjectName(u'apiOrderGroupBox') - self.apiOrderLayout = QtGui.QVBoxLayout(self.apiOrderGroupBox) - self.apiOrderLayout.setObjectName(u'apiOrderLayout') - self.apiOrderlistWidget = QtGui.QListWidget( \ - self.apiOrderGroupBox) + self.mediaPlayerGroupBox = QtGui.QGroupBox(self.leftColumn) + self.mediaPlayerGroupBox.setObjectName(u'mediaPlayerGroupBox') + self.mediaPlayerLayout = QtGui.QVBoxLayout(self.mediaPlayerGroupBox) + self.mediaPlayerLayout.setObjectName(u'mediaPlayerLayout') + self.PlayerCheckBoxes = {} + for key in self.media_players: + player = self.media_players[key] + checkbox = QtGui.QCheckBox(self.mediaPlayerGroupBox) + checkbox.setEnabled(player.available) + checkbox.setObjectName(player.name + u'CheckBox') + self.PlayerCheckBoxes[player.name] = checkbox + self.mediaPlayerLayout.addWidget(checkbox) + self.leftLayout.addWidget(self.mediaPlayerGroupBox) + self.playerOrderGroupBox = QtGui.QGroupBox(self.leftColumn) + self.playerOrderGroupBox.setObjectName(u'playerOrderGroupBox') + self.playerOrderLayout = QtGui.QVBoxLayout(self.playerOrderGroupBox) + self.playerOrderLayout.setObjectName(u'playerOrderLayout') + self.playerOrderlistWidget = QtGui.QListWidget( \ + self.playerOrderGroupBox) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.apiOrderlistWidget. \ + sizePolicy.setHeightForWidth(self.playerOrderlistWidget. \ sizePolicy().hasHeightForWidth()) - self.apiOrderlistWidget.setSizePolicy(sizePolicy) - self.apiOrderlistWidget.setVerticalScrollBarPolicy( \ + self.playerOrderlistWidget.setSizePolicy(sizePolicy) + self.playerOrderlistWidget.setVerticalScrollBarPolicy( \ QtCore.Qt.ScrollBarAsNeeded) - self.apiOrderlistWidget.setHorizontalScrollBarPolicy( \ + self.playerOrderlistWidget.setHorizontalScrollBarPolicy( \ QtCore.Qt.ScrollBarAlwaysOff) - self.apiOrderlistWidget.setEditTriggers( \ + self.playerOrderlistWidget.setEditTriggers( \ QtGui.QAbstractItemView.NoEditTriggers) - self.apiOrderlistWidget.setObjectName(u'apiOrderlistWidget') - self.apiOrderLayout.addWidget(self.apiOrderlistWidget) - self.orderingButtonsWidget = QtGui.QWidget(self.apiOrderGroupBox) + self.playerOrderlistWidget.setObjectName(u'playerOrderlistWidget') + self.playerOrderLayout.addWidget(self.playerOrderlistWidget) + self.orderingButtonsWidget = QtGui.QWidget(self.playerOrderGroupBox) self.orderingButtonsWidget.setObjectName(u'orderingButtonsWidget') self.orderingButtonLayout = QtGui.QHBoxLayout( \ self.orderingButtonsWidget) @@ -83,120 +83,120 @@ class MediaTab(SettingsTab): self.orderingDownButton = QtGui.QPushButton(self.orderingButtonsWidget) self.orderingDownButton.setObjectName(u'orderingDownButton') self.orderingButtonLayout.addWidget(self.orderingDownButton) - self.orderingUpButton = QtGui.QPushButton(self.apiOrderGroupBox) + self.orderingUpButton = QtGui.QPushButton(self.playerOrderGroupBox) self.orderingUpButton.setObjectName(u'orderingUpButton') self.orderingButtonLayout.addWidget(self.orderingUpButton) - self.apiOrderLayout.addWidget(self.orderingButtonsWidget) - self.leftLayout.addWidget(self.apiOrderGroupBox) + self.playerOrderLayout.addWidget(self.orderingButtonsWidget) + self.leftLayout.addWidget(self.playerOrderGroupBox) self.AdvancedGroupBox = QtGui.QGroupBox(self.leftColumn) self.AdvancedGroupBox.setObjectName(u'AdvancedGroupBox') self.AdvancedLayout = QtGui.QVBoxLayout(self.AdvancedGroupBox) self.AdvancedLayout.setObjectName(u'AdvancedLayout') - self.OverrideApiCheckBox = QtGui.QCheckBox(self.AdvancedGroupBox) - self.OverrideApiCheckBox.setObjectName(u'OverrideApiCheckBox') - self.AdvancedLayout.addWidget(self.OverrideApiCheckBox) + self.OverridePlayerCheckBox = QtGui.QCheckBox(self.AdvancedGroupBox) + self.OverridePlayerCheckBox.setObjectName(u'OverridePlayerCheckBox') + self.AdvancedLayout.addWidget(self.OverridePlayerCheckBox) self.leftLayout.addWidget(self.AdvancedGroupBox) self.leftLayout.addStretch() self.rightLayout.addStretch() - for key in self.media_apis: - api = self.media_apis[key] - checkbox = self.ApiCheckBoxes[api.name] + for key in self.media_players: + player = self.media_players[key] + checkbox = self.PlayerCheckBoxes[player.name] QtCore.QObject.connect(checkbox, QtCore.SIGNAL(u'stateChanged(int)'), - self.onApiCheckBoxChanged) + self.onPlayerCheckBoxChanged) QtCore.QObject.connect(self.orderingUpButton, QtCore.SIGNAL(u'pressed()'), self.onOrderingUpButtonPressed) QtCore.QObject.connect(self.orderingDownButton, QtCore.SIGNAL(u'pressed()'), self.onOrderingDownButtonPressed) def retranslateUi(self): - self.mediaAPIGroupBox.setTitle( - translate('MediaPlugin.MediaTab', 'Available Media APIs')) - for key in self.media_apis: - api = self.media_apis[key] - checkbox = self.ApiCheckBoxes[api.name] - if api.available: - checkbox.setText(api.name) + self.mediaPlayerGroupBox.setTitle( + translate('MediaPlugin.MediaTab', 'Available Media Players')) + for key in self.media_players: + player = self.media_players[key] + checkbox = self.PlayerCheckBoxes[player.name] + if player.available: + checkbox.setText(player.name) else: checkbox.setText( unicode(translate('MediaPlugin.MediaTab', - '%s (unavailable)')) % api.name) - self.apiOrderGroupBox.setTitle( - translate('MediaPlugin.MediaTab', 'API Order')) + '%s (unavailable)')) % player.name) + self.playerOrderGroupBox.setTitle( + translate('MediaPlugin.MediaTab', 'Player Order')) self.orderingDownButton.setText( translate('MediaPlugin.MediaTab', 'Down')) self.orderingUpButton.setText( translate('MediaPlugin.MediaTab', 'Up')) self.AdvancedGroupBox.setTitle(UiStrings().Advanced) - self.OverrideApiCheckBox.setText( + self.OverridePlayerCheckBox.setText( translate('MediaPlugin.MediaTab', - 'Allow media api to be overriden')) + 'Allow media player to be overriden')) - def onApiCheckBoxChanged(self, check_state): - api = self.sender().text() + def onPlayerCheckBoxChanged(self, check_state): + player = self.sender().text() if check_state == QtCore.Qt.Checked: - if api not in self.usedAPIs: - self.usedAPIs.append(api) + if player not in self.usedPlayers: + self.usedPlayers.append(player) else: - self.usedAPIs.takeAt(self.usedAPIs.indexOf(api)) - self.updateApiList() + self.usedPlayers.takeAt(self.usedPlayers.indexOf(player)) + self.updatePlayerList() - def updateApiList(self): - self.apiOrderlistWidget.clear() - for api in self.usedAPIs: - if api in self.ApiCheckBoxes.keys(): - self.apiOrderlistWidget.addItem(api) + def updatePlayerList(self): + self.playerOrderlistWidget.clear() + for player in self.usedPlayers: + if player in self.PlayerCheckBoxes.keys(): + self.playerOrderlistWidget.addItem(player) def onOrderingUpButtonPressed(self): - currentRow = self.apiOrderlistWidget.currentRow() + currentRow = self.playerOrderlistWidget.currentRow() if currentRow > 0: - item = self.apiOrderlistWidget.takeItem(currentRow) - self.apiOrderlistWidget.insertItem(currentRow - 1, item) - self.apiOrderlistWidget.setCurrentRow(currentRow - 1) - self.usedAPIs.move(currentRow, currentRow - 1) + item = self.playerOrderlistWidget.takeItem(currentRow) + self.playerOrderlistWidget.insertItem(currentRow - 1, item) + self.playerOrderlistWidget.setCurrentRow(currentRow - 1) + self.usedPlayers.move(currentRow, currentRow - 1) def onOrderingDownButtonPressed(self): - currentRow = self.apiOrderlistWidget.currentRow() - if currentRow < self.apiOrderlistWidget.count() - 1: - item = self.apiOrderlistWidget.takeItem(currentRow) - self.apiOrderlistWidget.insertItem(currentRow + 1, item) - self.apiOrderlistWidget.setCurrentRow(currentRow + 1) - self.usedAPIs.move(currentRow, currentRow + 1) + currentRow = self.playerOrderlistWidget.currentRow() + if currentRow < self.playerOrderlistWidget.count() - 1: + item = self.playerOrderlistWidget.takeItem(currentRow) + self.playerOrderlistWidget.insertItem(currentRow + 1, item) + self.playerOrderlistWidget.setCurrentRow(currentRow + 1) + self.usedPlayers.move(currentRow, currentRow + 1) def load(self): - self.usedAPIs = QtCore.QSettings().value( - self.settingsSection + u'/apis', + self.usedPlayers = QtCore.QSettings().value( + self.settingsSection + u'/players', QtCore.QVariant(u'webkit')).toString().split(u',') - for key in self.media_apis: - api = self.media_apis[key] - checkbox = self.ApiCheckBoxes[api.name] - if api.available and api.name in self.usedAPIs: + for key in self.media_players: + player = self.media_players[key] + checkbox = self.PlayerCheckBoxes[player.name] + if player.available and player.name in self.usedPlayers: checkbox.setChecked(True) - self.updateApiList() - self.OverrideApiCheckBox.setChecked(QtCore.QSettings().value( - self.settingsSection + u'/override api', + self.updatePlayerList() + self.OverridePlayerCheckBox.setChecked(QtCore.QSettings().value( + self.settingsSection + u'/override player', QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0]) def save(self): override_changed = False - api_string_changed = False - oldApiString = QtCore.QSettings().value( - self.settingsSection + u'/apis', + player_string_changed = False + oldPlayerString = QtCore.QSettings().value( + self.settingsSection + u'/players', QtCore.QVariant(u'webkit')).toString() - newApiString = self.usedAPIs.join(u',') - if oldApiString != newApiString: + newPlayerString = self.usedPlayers.join(u',') + if oldPlayerString != newPlayerString: # clean old Media stuff - QtCore.QSettings().setValue(self.settingsSection + u'/apis', - QtCore.QVariant(newApiString)) - api_string_changed = True + QtCore.QSettings().setValue(self.settingsSection + u'/players', + QtCore.QVariant(newPlayerString)) + player_string_changed = True override_changed = True - setting_key = self.settingsSection + u'/override api' + setting_key = self.settingsSection + u'/override player' if QtCore.QSettings().value(setting_key) != \ - self.OverrideApiCheckBox.checkState(): + self.OverridePlayerCheckBox.checkState(): QtCore.QSettings().setValue(setting_key, - QtCore.QVariant(self.OverrideApiCheckBox.checkState())) + QtCore.QVariant(self.OverridePlayerCheckBox.checkState())) override_changed = True if override_changed: Receiver.send_message(u'mediaitem_media_rebuild') - if api_string_changed: + if player_string_changed: Receiver.send_message(u'config_screen_changed') diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 9629ea35e..13a84b289 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -59,7 +59,7 @@ class MediaPlugin(Plugin): """ visible_name = self.getString(StringContent.VisibleName) return MediaTab(parent, self.name, visible_name[u'title'], - self.mediaController.mediaApis, self.icon_path) + self.mediaController.mediaPlayers, self.icon_path) def about(self): about_text = translate('MediaPlugin', 'Media Plugin' diff --git a/resources/forms/mediafilesdialog.ui b/resources/forms/mediafilesdialog.ui deleted file mode 100644 index 427e27548..000000000 --- a/resources/forms/mediafilesdialog.ui +++ /dev/null @@ -1,95 +0,0 @@ - - - MediaFilesDialog - - - Qt::ApplicationModal - - - - 0 - 0 - 400 - 300 - - - - Select Media File(s) - - - true - - - - 8 - - - 8 - - - - - Select one or more audio files from the list below, and click OK to import them into this song. - - - true - - - - - - - true - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - - buttonBox - accepted() - MediaFilesDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - MediaFilesDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/resources/pyinstaller/hook-openlp.media.py b/resources/pyinstaller/hook-openlp.core.ui.media.py similarity index 92% rename from resources/pyinstaller/hook-openlp.media.py rename to resources/pyinstaller/hook-openlp.core.ui.media.py index bdc44d2c8..45bc39734 100644 --- a/resources/pyinstaller/hook-openlp.media.py +++ b/resources/pyinstaller/hook-openlp.core.ui.media.py @@ -25,6 +25,5 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -hiddenimports = ['openlp.core.ui.media.phononapi', - 'openlp.core.ui.media.vlcapi', - 'openlp.core.ui.media.webkitapi'] +hiddenimports = ['openlp.core.ui.media.phononplayer', + 'openlp.core.ui.media.webkitplayer']