From 1600e002cb464a1bea429ca3965c81481d0b0495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 5 Mar 2012 23:09:31 +0200 Subject: [PATCH 1/6] Make media backend names translatable. Fixes: https://launchpad.net/bugs/903683 --- openlp/core/ui/media/phononplayer.py | 3 ++- openlp/core/ui/media/vlcplayer.py | 3 ++- openlp/core/ui/media/webkitplayer.py | 2 ++ openlp/plugins/media/lib/mediatab.py | 15 ++++++++------- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 5a9a5f67d..5ba17f72a 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -31,7 +31,7 @@ from datetime import datetime from PyQt4.phonon import Phonon -from openlp.core.lib import Receiver +from openlp.core.lib import Receiver, Translate from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState @@ -63,6 +63,7 @@ class PhononPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'phonon') + self.display_name = translate('MediaPlugin.MediaTab', 'Phonon') self.parent = parent self.additional_extensions = ADDITIONAL_EXT mimetypes.init() diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 2adf0a2d1..6b404cfde 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -43,7 +43,7 @@ except OSError, e: raise from PyQt4 import QtCore, QtGui -from openlp.core.lib import Receiver +from openlp.core.lib import Receiver, translate from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState @@ -89,6 +89,7 @@ class VlcPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'vlc') + self.display_name = translate('MediaPlugin.MediaTab', 'VLC') self.parent = parent self.canFolder = True self.audio_extensions_list = AUDIO_EXT diff --git a/openlp/core/ui/media/webkitplayer.py b/openlp/core/ui/media/webkitplayer.py index abb5355d0..7420b8bf1 100644 --- a/openlp/core/ui/media/webkitplayer.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -27,6 +27,7 @@ import logging +from openlp.core.lib import translate from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState @@ -260,6 +261,7 @@ class WebkitPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'webkit') + self.display_name = translate('MediaPlugin.MediaTab', 'WebKit') self.parent = parent self.canBackground = True self.audio_extensions_list = AUDIO_EXT diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index aed6b96cc..4dbefbffd 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -117,11 +117,11 @@ class MediaTab(SettingsTab): player = self.mediaPlayers[key] checkbox = self.playerCheckBoxes[player.name] if player.available: - checkbox.setText(player.name) + checkbox.setText(player.display_name) else: checkbox.setText( unicode(translate('MediaPlugin.MediaTab', - '%s (unavailable)')) % player.name) + '%s (unavailable)')) % player.display_name) self.playerOrderGroupBox.setTitle( translate('MediaPlugin.MediaTab', 'Player Order')) self.orderingDownButton.setText( @@ -134,7 +134,10 @@ class MediaTab(SettingsTab): 'Allow media player to be overriden')) def onPlayerCheckBoxChanged(self, check_state): - player = self.sender().text() + display_name = self.sender().text() + for key in self.mediaPlayers: + if self.mediaPlayers[key].display_name == display_name: + player = key if check_state == QtCore.Qt.Checked: if player not in self.usedPlayers: self.usedPlayers.append(player) @@ -152,7 +155,8 @@ class MediaTab(SettingsTab): self.playerCheckBoxes[u'%s' % player].setEnabled(False) else: self.playerCheckBoxes[u'%s' % player].setEnabled(True) - self.playerOrderlistWidget.addItem(player) + self.playerOrderlistWidget.addItem( + self.mediaPlayers[unicode(player)].display_name) def onOrderingUpButtonPressed(self): currentRow = self.playerOrderlistWidget.currentRow() @@ -171,9 +175,6 @@ class MediaTab(SettingsTab): self.usedPlayers.move(currentRow, currentRow + 1) def load(self): - if self.savedUsedPlayers: - self.usedPlayers = self.savedUsedPlayers - self.savedUsedPlayers = None self.usedPlayers = QtCore.QSettings().value( self.settingsSection + u'/players', QtCore.QVariant(u'webkit')).toString().split(u',') From e0766fa0181fb89ab090bdf77952d1892af51777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 6 Mar 2012 20:42:59 +0200 Subject: [PATCH 2/6] Extended QCheckBox class to contan an extra data bit so we don't rely on translations to be different. --- openlp/plugins/media/lib/mediatab.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 4dbefbffd..2c5755593 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -30,6 +30,14 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, translate, Receiver from openlp.core.lib.ui import UiStrings +class MediaQCheckBox(QtGui.QCheckBox): + """ + MediaQCheckBox adds an extra property, playerName to the QCheckBox class. + """ + def setPlayerName(self, name): + self.playerName = name + + class MediaTab(SettingsTab): """ MediaTab is the Media settings tab in the settings dialog. @@ -49,7 +57,7 @@ class MediaTab(SettingsTab): self.playerCheckBoxes = {} for key, player in self.mediaPlayers.iteritems(): player = self.mediaPlayers[key] - checkbox = QtGui.QCheckBox(self.mediaPlayerGroupBox) + checkbox = MediaQCheckBox(self.mediaPlayerGroupBox) checkbox.setEnabled(player.available) checkbox.setObjectName(player.name + u'CheckBox') self.playerCheckBoxes[player.name] = checkbox @@ -116,6 +124,7 @@ class MediaTab(SettingsTab): for key in self.mediaPlayers: player = self.mediaPlayers[key] checkbox = self.playerCheckBoxes[player.name] + checkbox.setPlayerName(key) if player.available: checkbox.setText(player.display_name) else: @@ -134,10 +143,7 @@ class MediaTab(SettingsTab): 'Allow media player to be overriden')) def onPlayerCheckBoxChanged(self, check_state): - display_name = self.sender().text() - for key in self.mediaPlayers: - if self.mediaPlayers[key].display_name == display_name: - player = key + player = self.sender().playerName if check_state == QtCore.Qt.Checked: if player not in self.usedPlayers: self.usedPlayers.append(player) From 17233f2d900d57344d7a1732a867615199be7d9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 6 Mar 2012 20:46:08 +0200 Subject: [PATCH 3/6] Use another alias for the same content. --- openlp/plugins/media/lib/mediatab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 2c5755593..41dc1ea40 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -124,7 +124,7 @@ class MediaTab(SettingsTab): for key in self.mediaPlayers: player = self.mediaPlayers[key] checkbox = self.playerCheckBoxes[player.name] - checkbox.setPlayerName(key) + checkbox.setPlayerName(player.name) if player.available: checkbox.setText(player.display_name) else: From 67cd90d5bfcb905c27fff1438f37f157c782fb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Fri, 9 Mar 2012 08:09:19 +0200 Subject: [PATCH 4/6] Don't translate player names. Added some keyboard shortcuts. --- openlp/core/ui/media/phononplayer.py | 3 ++- openlp/core/ui/media/vlcplayer.py | 3 ++- openlp/core/ui/media/webkitplayer.py | 3 ++- openlp/plugins/media/lib/mediatab.py | 10 +++++----- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 5ba17f72a..98cc598f7 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -63,7 +63,8 @@ class PhononPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'phonon') - self.display_name = translate('MediaPlugin.MediaTab', 'Phonon') + self.original_name = u'Phonon' + self.display_name = u'&Phonon' self.parent = parent self.additional_extensions = ADDITIONAL_EXT mimetypes.init() diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 6b404cfde..6bbcff2a5 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -89,7 +89,8 @@ class VlcPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'vlc') - self.display_name = translate('MediaPlugin.MediaTab', 'VLC') + self.original_name = u'VLC' + self.display_name = u'&VLC' self.parent = parent self.canFolder = True self.audio_extensions_list = AUDIO_EXT diff --git a/openlp/core/ui/media/webkitplayer.py b/openlp/core/ui/media/webkitplayer.py index 7420b8bf1..86e96bf67 100644 --- a/openlp/core/ui/media/webkitplayer.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -261,7 +261,8 @@ class WebkitPlayer(MediaPlayer): def __init__(self, parent): MediaPlayer.__init__(self, parent, u'webkit') - self.display_name = translate('MediaPlugin.MediaTab', 'WebKit') + self.original_name = u'WebKit' + self.display_name = u'&WebKit' self.parent = parent self.canBackground = True self.audio_extensions_list = AUDIO_EXT diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index 41dc1ea40..fe76dc4ce 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -132,15 +132,15 @@ class MediaTab(SettingsTab): unicode(translate('MediaPlugin.MediaTab', '%s (unavailable)')) % player.display_name) self.playerOrderGroupBox.setTitle( - translate('MediaPlugin.MediaTab', 'Player Order')) + translate('MediaPlugin.MediaTab', 'Player O&rder')) self.orderingDownButton.setText( - translate('MediaPlugin.MediaTab', 'Down')) + translate('MediaPlugin.MediaTab', '&Down')) self.orderingUpButton.setText( - translate('MediaPlugin.MediaTab', 'Up')) + translate('MediaPlugin.MediaTab', '&Up')) self.advancedGroupBox.setTitle(UiStrings().Advanced) self.overridePlayerCheckBox.setText( translate('MediaPlugin.MediaTab', - 'Allow media player to be overriden')) + '&Allow media player to be overriden')) def onPlayerCheckBoxChanged(self, check_state): player = self.sender().playerName @@ -162,7 +162,7 @@ class MediaTab(SettingsTab): else: self.playerCheckBoxes[u'%s' % player].setEnabled(True) self.playerOrderlistWidget.addItem( - self.mediaPlayers[unicode(player)].display_name) + self.mediaPlayers[unicode(player)].original_name) def onOrderingUpButtonPressed(self): currentRow = self.playerOrderlistWidget.currentRow() From f188e213913bc851137f00d3609aa8c0a9858b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 12 Mar 2012 10:17:20 +0200 Subject: [PATCH 5/6] Fix mediaPlayer override ComboBox items case. --- openlp/core/ui/media/mediacontroller.py | 7 ++++--- openlp/core/ui/media/phononplayer.py | 2 +- openlp/core/ui/media/vlcplayer.py | 2 +- openlp/core/ui/media/webkitplayer.py | 1 - openlp/plugins/media/lib/mediaitem.py | 10 ++++++---- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/openlp/core/ui/media/mediacontroller.py b/openlp/core/ui/media/mediacontroller.py index 3beffbf36..ef15f0721 100644 --- a/openlp/core/ui/media/mediacontroller.py +++ b/openlp/core/ui/media/mediacontroller.py @@ -578,12 +578,13 @@ class MediaController(object): video_list.append(item) return video_list - def override_player(self, override_player): + def override_player(self, override_player_index): playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) usedPlayers = playerSettings.split(u',') - if override_player in usedPlayers: - self.overridenPlayer = override_player + if override_player_index >= 0 and \ + override_player_index < len(usedPlayers): + self.overridenPlayer = usedPlayers[override_player_index] else: self.overridenPlayer = '' diff --git a/openlp/core/ui/media/phononplayer.py b/openlp/core/ui/media/phononplayer.py index 98cc598f7..ea4d16260 100644 --- a/openlp/core/ui/media/phononplayer.py +++ b/openlp/core/ui/media/phononplayer.py @@ -31,7 +31,7 @@ from datetime import datetime from PyQt4.phonon import Phonon -from openlp.core.lib import Receiver, Translate +from openlp.core.lib import Receiver from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState diff --git a/openlp/core/ui/media/vlcplayer.py b/openlp/core/ui/media/vlcplayer.py index 6bbcff2a5..da43c9839 100644 --- a/openlp/core/ui/media/vlcplayer.py +++ b/openlp/core/ui/media/vlcplayer.py @@ -43,7 +43,7 @@ except OSError, e: raise from PyQt4 import QtCore, QtGui -from openlp.core.lib import Receiver, translate +from openlp.core.lib import Receiver from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState diff --git a/openlp/core/ui/media/webkitplayer.py b/openlp/core/ui/media/webkitplayer.py index 86e96bf67..2c2619dbd 100644 --- a/openlp/core/ui/media/webkitplayer.py +++ b/openlp/core/ui/media/webkitplayer.py @@ -27,7 +27,6 @@ import logging -from openlp.core.lib import translate from openlp.core.lib.mediaplayer import MediaPlayer from openlp.core.ui.media import MediaState diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 111a86209..eaf6f0edc 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -104,7 +104,7 @@ class MediaMediaItem(MediaManagerItem): self.automatic = translate('MediaPlugin.MediaItem', 'Automatic') self.displayTypeLabel.setText( - translate('MediaPlugin.MediaItem', 'Use Player:')) + translate('MediaPlugin.MediaItem', 'Use &Player:')) def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -142,8 +142,8 @@ class MediaMediaItem(MediaManagerItem): self.overridePlayerChanged) def overridePlayerChanged(self, index): - Receiver.send_message(u'media_override_player', \ - u'%s' % self.displayTypeComboBox.currentText()) + # index - 1, because the first item is "Automatic". + Receiver.send_message(u'media_override_player', index - 1) def onResetClick(self): """ @@ -249,8 +249,10 @@ class MediaMediaItem(MediaManagerItem): playerSettings = str(QtCore.QSettings().value(u'media/players', QtCore.QVariant(u'webkit')).toString()) usedPlayers = playerSettings.split(u',') - for title in usedPlayers: + mediaPlayers = self.plugin.mediaController.mediaPlayers + for player in usedPlayers: # load the drop down selection + title = mediaPlayers[player].original_name self.displayTypeComboBox.addItem(title) if self.displayTypeComboBox.count() > 1: self.displayTypeComboBox.insertItem(0, self.automatic) From 83341b704c8d27aed54431d91ff867429fbbd6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 12 Mar 2012 12:53:17 +0200 Subject: [PATCH 6/6] Revert string changes. --- openlp/plugins/media/lib/mediaitem.py | 5 ++--- openlp/plugins/media/lib/mediatab.py | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 1d995d84a..d0aec2691 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -104,7 +104,7 @@ class MediaMediaItem(MediaManagerItem): self.automatic = translate('MediaPlugin.MediaItem', 'Automatic') self.displayTypeLabel.setText( - translate('MediaPlugin.MediaItem', 'Use &Player:')) + translate('MediaPlugin.MediaItem', 'Use Player:')) def requiredIcons(self): MediaManagerItem.requiredIcons(self) @@ -252,8 +252,7 @@ class MediaMediaItem(MediaManagerItem): mediaPlayers = self.plugin.mediaController.mediaPlayers for player in usedPlayers: # load the drop down selection - title = mediaPlayers[player].original_name - self.displayTypeComboBox.addItem(title) + self.displayTypeComboBox.addItem(mediaPlayers[player].original_name) if self.displayTypeComboBox.count() > 1: self.displayTypeComboBox.insertItem(0, self.automatic) self.displayTypeComboBox.setCurrentIndex(0) diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py index f245229c4..a93dcf5a9 100644 --- a/openlp/plugins/media/lib/mediatab.py +++ b/openlp/plugins/media/lib/mediatab.py @@ -125,11 +125,11 @@ class MediaTab(SettingsTab): unicode(translate('MediaPlugin.MediaTab', '%s (unavailable)')) % player.display_name) self.playerOrderGroupBox.setTitle( - translate('MediaPlugin.MediaTab', 'Player O&rder')) + translate('MediaPlugin.MediaTab', 'Player Order')) self.advancedGroupBox.setTitle(UiStrings().Advanced) self.overridePlayerCheckBox.setText( translate('MediaPlugin.MediaTab', - '&Allow media player to be overridden')) + 'Allow media player to be overridden')) def onPlayerCheckBoxChanged(self, check_state): player = self.sender().playerName