From f5b02659b6c064dfc2bf248ba1c1594c52cd7901 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Wed, 9 Jun 2010 13:11:01 +0200 Subject: [PATCH 01/14] Replaces missed trUtf8('...') -> translate(u'PluginName.ClassName', '...') --- openlp/core/lib/mediamanageritem.py | 72 ++++++++++++--------- openlp/core/ui/splashscreen.py | 5 +- openlp/plugins/bibles/bibleplugin.py | 6 +- openlp/plugins/songs/songsplugin.py | 46 +++++++------ openlp/plugins/songusage/songusageplugin.py | 21 ++++-- 5 files changed, 92 insertions(+), 58 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 8bfefceb0..f7b574be1 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -30,7 +30,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import contextMenuAction, contextMenuSeparator, \ - SettingsManager, OpenLPToolbar, ServiceItem, build_icon + SettingsManager, OpenLPToolbar, ServiceItem, build_icon, translate log = logging.getLogger(__name__) @@ -210,49 +210,54 @@ class MediaManagerItem(QtGui.QWidget): if self.hasImportIcon: self.addToolbarButton( u'Import %s' % self.PluginNameShort, - u'%s %s' % (self.trUtf8('Import a'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'Import a'), + self.PluginNameVisible), u':/general/general_import.png', self.onImportClick) ## File Button ## if self.hasFileIcon: self.addToolbarButton( u'Load %s' % self.PluginNameShort, - u'%s %s' % (self.trUtf8('Load a new'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'Load a new'), + self.PluginNameVisible), u':/general/general_open.png', self.onFileClick) ## New Button ## if self.hasNewIcon: self.addToolbarButton( u'New %s' % self.PluginNameShort, - u'%s %s' % (self.trUtf8('Add a new'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'Add a new'), + self.PluginNameVisible), u':/general/general_new.png', self.onNewClick) ## Edit Button ## if self.hasEditIcon: self.addToolbarButton( u'Edit %s' % self.PluginNameShort, - u'%s %s' % (self.trUtf8('Edit the selected'), + u'%s %s' % ( + translate(u'MediaManagerItem', u'Edit the selected'), self.PluginNameVisible), u':/general/general_edit.png', self.onEditClick) ## Delete Button ## if self.hasDeleteIcon: self.addToolbarButton( u'Delete %s' % self.PluginNameShort, - self.trUtf8('Delete the selected item'), + translate(u'MediaManagerItem', u'Delete the selected item'), u':/general/general_delete.png', self.onDeleteClick) ## Separator Line ## self.addToolbarSeparator() ## Preview ## self.addToolbarButton( u'Preview %s' % self.PluginNameShort, - self.trUtf8('Preview the selected item'), + translate(u'MediaManagerItem', u'Preview the selected item'), u':/general/general_preview.png', self.onPreviewClick) ## Live Button ## self.addToolbarButton( u'Go Live', - self.trUtf8('Send the selected item live'), + translate(u'MediaManagerItem', u'Send the selected item live'), u':/general/general_live.png', self.onLiveClick) ## Add to service Button ## self.addToolbarButton( u'Add %s to Service' % self.PluginNameShort, - self.trUtf8('Add the selected item(s) to the service'), + translate(u'MediaManagerItem', + u'Add the selected item(s) to the service'), u':/general/general_add.png', self.onAddClick) def addListViewToToolBar(self): @@ -274,34 +279,39 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_edit.png', - u'%s %s' % (self.trUtf8('&Edit'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'&Edit'), + self.PluginNameVisible), self.onEditClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) if self.hasDeleteIcon: self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_delete.png', - u'%s %s' % (self.trUtf8('&Delete'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'&Delete'), + self.PluginNameVisible), self.onDeleteClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_preview.png', - u'%s %s' % (self.trUtf8('&Preview'), self.PluginNameVisible), + u'%s %s' % (translate(u'MediaManagerItem', u'&Preview'), + self.PluginNameVisible), self.onPreviewClick)) self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_live.png', - self.trUtf8('&Show Live'), self.onLiveClick)) + translate(u'MediaManagerItem', u'&Show Live'), self.onLiveClick)) self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_add.png', - self.trUtf8('&Add to Service'), self.onAddClick)) + translate(u'MediaManagerItem', u'&Add to Service'), + self.onAddClick)) if self.addToServiceItem: self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_add.png', - self.trUtf8('&Add to selected Service Item'), + translate(u'MediaManagerItem', + u'&Add to selected Service Item'), self.onAddEditClick)) QtCore.QObject.connect( self.ListView, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), @@ -394,8 +404,9 @@ class MediaManagerItem(QtGui.QWidget): def onPreviewClick(self): if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, - self.trUtf8('No Items Selected'), - self.trUtf8('You must select one or more items.')) + translate(u'MediaManagerItem', u'No Items Selected'), + translate(u'MediaManagerItem', + u'You must select one or more items.')) else: log.debug(self.PluginNameShort + u' Preview requested') service_item = self.buildServiceItem() @@ -406,8 +417,9 @@ class MediaManagerItem(QtGui.QWidget): def onLiveClick(self): if not self.ListView.selectedIndexes(): QtGui.QMessageBox.information(self, - self.trUtf8('No Items Selected'), - self.trUtf8('You must select one or more items.')) + translate(u'MediaManagerItem', u'No Items Selected'), + translate(u'MediaManagerItem', + u'You must select one or more items.')) else: log.debug(self.PluginNameShort + u' Live requested') service_item = self.buildServiceItem() @@ -418,8 +430,9 @@ class MediaManagerItem(QtGui.QWidget): def onAddClick(self): if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, - self.trUtf8('No Items Selected'), - self.trUtf8('You must select one or more items.')) + translate(u'MediaManagerItem', u'No Items Selected'), + translate(u'MediaManagerItem', + u'You must select one or more items.')) else: #Is it posssible to process multiple list items to generate multiple #service items? @@ -441,16 +454,17 @@ class MediaManagerItem(QtGui.QWidget): def onAddEditClick(self): if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, - self.trUtf8('No items selected'), - self.trUtf8('You must select one or more items')) + translate(u'MediaManagerItem', u'No items selected'), + translate(u'MediaManagerItem', + u'You must select one or more items')) else: log.debug(self.PluginNameShort + u' Add requested') service_item = self.parent.service_manager.getServiceItem() if not service_item: QtGui.QMessageBox.information(self, - self.trUtf8('No Service Item Selected'), - self.trUtf8( - 'You must select an existing service item to add to.')) + translate(u'MediaManagerItem', u'No Service Item Selected'), + translate(u'MediaManagerItem', + u'You must select an existing service item to add to.')) elif self.title.lower() == service_item.name.lower(): self.generateSlideData(service_item) self.parent.service_manager.addServiceItem(service_item, @@ -458,9 +472,9 @@ class MediaManagerItem(QtGui.QWidget): else: #Turn off the remote edit update message indicator QtGui.QMessageBox.information(self, - self.trUtf8('Invalid Service Item'), - self.trUtf8(unicode( - 'You must select a %s service item.' % self.title))) + translate(u'MediaManagerItem', u'Invalid Service Item'), + translate(unicode(u'MediaManagerItem', + u'You must select a %s service item.' % self.title))) def buildServiceItem(self, item=None): """ diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index 10cea5a11..b13c3c8c4 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -30,7 +30,8 @@ class SplashScreen(object): def __init__(self, version): self.splash_screen = QtGui.QSplashScreen() self.setupUi() - self.message = self.splash_screen.trUtf8('Starting')\ + self.message = self.splash_screen.translate( + u'Splashscreen', u'Starting')\ + '..... ' + version def setupUi(self): @@ -58,7 +59,7 @@ class SplashScreen(object): def retranslateUi(self): self.splash_screen.setWindowTitle( - self.splash_screen.trUtf8('Splash Screen')) + self.splash_screen.translate(u'Splashscreen', u'Splash Screen')) def show(self): self.splash_screen.show() diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index ca018cabd..cfc6aa361 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -70,7 +70,8 @@ class BiblePlugin(Plugin): self.ImportBibleItem = QtGui.QAction(import_menu) self.ImportBibleItem.setObjectName(u'ImportBibleItem') import_menu.addAction(self.ImportBibleItem) - self.ImportBibleItem.setText(import_menu.trUtf8('&Bible')) + self.ImportBibleItem.setText( + import_menu.translate(u'BiblesPlugin.BiblePlugin', u'&Bible')) # Signals and slots QtCore.QObject.connect(self.ImportBibleItem, QtCore.SIGNAL(u'triggered()'), self.onBibleImportClick) @@ -80,7 +81,8 @@ class BiblePlugin(Plugin): self.ExportBibleItem = QtGui.QAction(export_menu) self.ExportBibleItem.setObjectName(u'ExportBibleItem') export_menu.addAction(self.ExportBibleItem) - self.ExportBibleItem.setText(export_menu.trUtf8('&Bible')) + self.ExportBibleItem.setText(export_menu.translate( + u'BiblesPlugin.BiblePlugin', u'&Bible')) self.ExportBibleItem.setVisible(False) def onBibleImportClick(self): diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 993b18bb9..f311d7072 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -94,36 +94,44 @@ class SongsPlugin(Plugin): # Main song import menu item - will eventually be the only one self.SongImportItem = QtGui.QAction(import_menu) self.SongImportItem.setObjectName(u'SongImportItem') - self.SongImportItem.setText(import_menu.trUtf8('&Song')) + self.SongImportItem.setText(import_menu.translate( + u'SongsPlugin.SongsPlugin', u'&Song')) self.SongImportItem.setToolTip( - import_menu.trUtf8('Import songs using the import wizard.')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) # Songs of Fellowship import menu item - will be removed and the # functionality will be contained within the import wizard self.ImportSofItem = QtGui.QAction(import_menu) self.ImportSofItem.setObjectName(u'ImportSofItem') self.ImportSofItem.setText( - import_menu.trUtf8('Songs of Fellowship (temp menu item)')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Songs of Fellowship (temp menu item)')) self.ImportSofItem.setToolTip( - import_menu.trUtf8('Import songs from the VOLS1_2.RTF, sof3words' \ - + '.rtf and sof4words.rtf supplied with the music books')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Import songs from the VOLS1_2.RTF, sof3words' \ + + u'.rtf and sof4words.rtf supplied with the music books')) self.ImportSofItem.setStatusTip( - import_menu.trUtf8('Import songs from the VOLS1_2.RTF, sof3words' \ - + '.rtf and sof4words.rtf supplied with the music books')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Import songs from the VOLS1_2.RTF, sof3words' \ + + u'.rtf and sof4words.rtf supplied with the music books')) import_menu.addAction(self.ImportSofItem) # OpenOffice.org import menu item - will be removed and the # functionality will be contained within the import wizard self.ImportOooItem = QtGui.QAction(import_menu) self.ImportOooItem.setObjectName(u'ImportOooItem') self.ImportOooItem.setText( - import_menu.trUtf8('Generic Document/Presentation Import ' - '(temp menu item)')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Generic Document/Presentation Import ' + u'(temp menu item)')) self.ImportOooItem.setToolTip( - import_menu.trUtf8('Import songs from ' - 'Word/Writer/Powerpoint/Impress')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Import songs from ' + u'Word/Writer/Powerpoint/Impress')) self.ImportOooItem.setStatusTip( - import_menu.trUtf8('Import songs from ' - 'Word/Writer/Powerpoint/Impress')) + import_menu.translate(u'SongsPlugin.SongsPlugin', + u'Import songs from ' + u'Word/Writer/Powerpoint/Impress')) import_menu.addAction(self.ImportOooItem) # Signals and slots QtCore.QObject.connect(self.SongImportItem, @@ -161,11 +169,13 @@ class SongsPlugin(Plugin): except: log.exception('Could not import SoF file') QtGui.QMessageBox.critical(None, - self.ImportSongMenu.trUtf8('Import Error'), - self.ImportSongMenu.trUtf8('Error importing Songs of ' - 'Fellowship file.\nOpenOffice.org must be installed' - ' and you must be using an unedited copy of the RTF' - ' included with the Songs of Fellowship Music Editions'), + self.ImportSongMenu.translate(u'SongsPlugin.SongsPlugin', + u'Import Error'), + self.ImportSongMenu.translate(u'SongsPlugin.SongsPlugin', + u'Error importing Songs of ' + u'Fellowship file.\nOpenOffice.org must be installed' + u' and you must be using an unedited copy of the RTF' + u' included with the Songs of Fellowship Music Editions'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok) Receiver.send_message(u'songs_load_list') diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 6cbb08e1a..35d86a16a 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -59,20 +59,25 @@ class SongUsagePlugin(Plugin): self.toolsMenu = tools_menu self.SongUsageMenu = QtGui.QMenu(tools_menu) self.SongUsageMenu.setObjectName(u'SongUsageMenu') - self.SongUsageMenu.setTitle(tools_menu.trUtf8('&Song Usage')) + self.SongUsageMenu.setTitle(tools_menu.translate( + u'SongUsagePlugin.SongUsagePlugin', u'&Song Usage')) #SongUsage Delete self.SongUsageDelete = QtGui.QAction(tools_menu) self.SongUsageDelete.setText( - tools_menu.trUtf8('&Delete recorded data')) + tools_menu.translate(u'SongUsagePlugin.SongUsagePlugin', + u'&Delete recorded data')) self.SongUsageDelete.setStatusTip( - tools_menu.trUtf8('Delete song usage to specified date')) + tools_menu.translate(u'SongUsagePlugin.SongUsagePlugin', + u'Delete song usage to specified date')) self.SongUsageDelete.setObjectName(u'SongUsageDelete') #SongUsage Report self.SongUsageReport = QtGui.QAction(tools_menu) self.SongUsageReport.setText( - tools_menu.trUtf8('&Extract recorded data')) + tools_menu.translate(u'SongUsagePlugin.SongUsagePlugin', + u'&Extract recorded data')) self.SongUsageReport.setStatusTip( - tools_menu.trUtf8('Generate report on Song Usage')) + tools_menu.translate(u'SongUsagePlugin.SongUsagePlugin', + u'Generate report on Song Usage')) self.SongUsageReport.setObjectName(u'SongUsageReport') #SongUsage activation SongUsageIcon = build_icon(u':/tools/tools_alert.png') @@ -80,9 +85,11 @@ class SongUsagePlugin(Plugin): self.SongUsageStatus.setIcon(SongUsageIcon) self.SongUsageStatus.setCheckable(True) self.SongUsageStatus.setChecked(False) - self.SongUsageStatus.setText(tools_menu.trUtf8('Song Usage Status')) + self.SongUsageStatus.setText(tools_menu.translate( + u'SongUsagePlugin.SongUsagePlugin', u'Song Usage Status')) self.SongUsageStatus.setStatusTip( - tools_menu.trUtf8('Start/Stop live song usage recording')) + tools_menu.translate(u'SongUsagePlugin.SongUsagePlugin', + u'Start/Stop live song usage recording')) self.SongUsageStatus.setShortcut(u'F4') self.SongUsageStatus.setObjectName(u'SongUsageStatus') #Add Menus together From 752e06383767f75535fe6446183a1b1560808e54 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Fri, 11 Jun 2010 09:36:08 +0200 Subject: [PATCH 02/14] Fixed doublespace in import --- openlp/core/lib/mediamanageritem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index f7b574be1..c9725ab62 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -30,7 +30,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import contextMenuAction, contextMenuSeparator, \ - SettingsManager, OpenLPToolbar, ServiceItem, build_icon, translate + SettingsManager, OpenLPToolbar, ServiceItem, build_icon, translate log = logging.getLogger(__name__) From b6057c01567dd895f4e694c019a0b4cf72094cd4 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 14 Jun 2010 21:59:07 +0100 Subject: [PATCH 03/14] resize thumbs --- openlp/plugins/presentations/lib/powerpointcontroller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 67870574d..80fc8f54a 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -142,7 +142,7 @@ class PowerpointDocument(PresentationDocument): if self.check_thumbnails(): return self.presentation.Export(os.path.join(self.thumbnailpath, '') - , 'png', 640, 480) + , 'png', 320, 240) def close_presentation(self): """ From f2a0fb9f2952a3e371960732b7ca77d09c6e11e6 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 14 Jun 2010 23:01:04 +0100 Subject: [PATCH 04/14] Well at least you can open a presentation now. Can't see it yet though cos of some silly black window in the way --- openlp/plugins/presentations/lib/impresscontroller.py | 2 +- openlp/plugins/presentations/lib/powerpointcontroller.py | 2 +- openlp/plugins/presentations/lib/pptviewcontroller.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 6c360355c..10add26b4 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -181,7 +181,7 @@ class ImpressController(PresentationController): class ImpressDocument(PresentationDocument): def __init__(self, controller, presentation): log.debug(u'Init Presentation OpenOffice') - PresentationDocument.__init__(controller, presentation) + PresentationDocument.__init__(self, controller, presentation) self.document = None self.presentation = None self.control = None diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 32d951c0e..93c48e86c 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -104,7 +104,7 @@ class PowerpointController(PresentationController): class PowerpointDocument(PresentationDocument): def __init__(self, controller, presentation): log.debug(u'Init Presentation Powerpoint') - PresentationDocument.__init__(controller, presentation) + PresentationDocument.__init__(self, controller, presentation) self.presentation = None def load_presentation(self): diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 409a0b760..42a12be1d 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -102,7 +102,7 @@ class PptviewController(PresentationController): class PptviewDocument(PresentationDocument): def __init__(self, controller, presentation): log.debug(u'Init Presentation PowerPoint') - PresentationDocument.__init__(controller, presentation) + PresentationDocument.__init__(self, controller, presentation) self.presentation = None self.pptid = None self.blanked = False From 814a4f023dc9c37c4881def86910274dd62409e2 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Wed, 16 Jun 2010 01:31:44 +0100 Subject: [PATCH 05/14] Fix Bible Import setField errors --- openlp/core/lib/plugin.py | 3 ++- openlp/plugins/bibles/forms/importwizardform.py | 11 +++++++---- openlp/plugins/bibles/lib/mediaitem.py | 1 - 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index ebb38615d..0c22723a4 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -231,7 +231,8 @@ class Plugin(QtCore.QObject): Show a dialog when the user clicks on the 'About' button in the plugin manager. """ - pass + raise NotImplementedError( + u'Plugin.about needs to be defined by the plugin') def initialise(self): """ diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index e486b3acd..fbaa2ec14 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -303,17 +303,20 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.setField(u'csv_versefile', QtCore.QVariant('')) self.setField(u'opensong_file', QtCore.QVariant('')) self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk)) - self.setField(u'web_biblename', QtCore.QVariant(self.BibleComboBox)) + self.setField(u'web_biblename', + QtCore.QVariant(self.BibleComboBox.currentIndex())) self.setField(u'proxy_server', settings.value(u'proxy address', QtCore.QVariant(u''))) self.setField(u'proxy_username', settings.value(u'proxy username', QtCore.QVariant(u''))) self.setField(u'proxy_password', settings.value(u'proxy password', QtCore.QVariant(u''))) - self.setField(u'license_version', QtCore.QVariant(self.VersionNameEdit)) - self.setField(u'license_copyright', QtCore.QVariant(self.CopyrightEdit)) + self.setField(u'license_version', + QtCore.QVariant(self.VersionNameEdit.text())) + self.setField(u'license_copyright', + QtCore.QVariant(self.CopyrightEdit.text())) self.setField(u'license_permission', - QtCore.QVariant(self.PermissionEdit)) + QtCore.QVariant(self.PermissionEdit.text())) self.onLocationComboBoxChanged(WebDownload.Crosswalk) settings.endGroup() diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 6c5f21f23..191f26d44 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -79,7 +79,6 @@ class BibleMediaItem(MediaManagerItem): self.hasNewIcon = False self.hasEditIcon = False self.hasDeleteIcon = False - self.addToServiceItem = True def addEndHeaderBar(self): self.SearchTabWidget = QtGui.QTabWidget(self) From 5e0ab4a7f6d8a06855e7b9803294cbdeecd049d7 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Wed, 16 Jun 2010 02:23:57 +0100 Subject: [PATCH 06/14] Fix lack of feedback for edit and delete --- openlp/core/lib/mediamanageritem.py | 17 +++++++++++++++-- openlp/plugins/custom/lib/mediaitem.py | 16 ++++++++++++---- openlp/plugins/images/lib/mediaitem.py | 12 ++++++++---- openlp/plugins/media/lib/mediaitem.py | 9 ++++++--- openlp/plugins/presentations/lib/mediaitem.py | 8 ++++++-- openlp/plugins/songs/lib/mediaitem.py | 17 ++++++++++++----- 6 files changed, 59 insertions(+), 20 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 92efd152c..8df8bded9 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -325,6 +325,19 @@ class MediaManagerItem(QtGui.QWidget): """ pass + def checkItemSelected(self, message): + """ + Check if a list item is selected so an action may be performed on it + + ``message`` + The message to give the user if no item is selected + """ + if not self.ListView.selectedIndexes(): + QtGui.QMessageBox.information(self, + self.trUtf8('No Items Selected'), message) + return False + return True + def onFileClick(self): files = QtGui.QFileDialog.getOpenFileNames( self, self.OnNewPrompt, @@ -392,7 +405,7 @@ class MediaManagerItem(QtGui.QWidget): if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, self.trUtf8('No Items Selected'), - self.trUtf8('You must select one or more items.')) + self.trUtf8('You must select one or more items to preview.')) else: log.debug(self.PluginNameShort + u' Preview requested') service_item = self.buildServiceItem() @@ -404,7 +417,7 @@ class MediaManagerItem(QtGui.QWidget): if not self.ListView.selectedIndexes(): QtGui.QMessageBox.information(self, self.trUtf8('No Items Selected'), - self.trUtf8('You must select one or more items.')) + self.trUtf8('You must select one or more items to send live.')) else: log.debug(self.PluginNameShort + u' Live requested') service_item = self.buildServiceItem() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 581334410..4cbf25476 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -115,16 +115,24 @@ class CustomMediaItem(MediaManagerItem): self.parent.edit_custom_form.exec_() def onEditClick(self): - item = self.ListView.currentItem() - if item: + """ + Edit a custom item + """ + if self.checkItemSelected(translate(u'CustomPlugin.MediaItem', + u'You must select an item to edit.')): + item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.parent.edit_custom_form.loadCustom(item_id, False) self.parent.edit_custom_form.exec_() self.initialise() def onDeleteClick(self): - item = self.ListView.currentItem() - if item: + """ + Remove a custom item from the list and database + """ + if self.checkItemSelected(translate(u'CustomPlugin.MediaItem', + u'You must select an item to delete.')): + item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.parent.custommanager.delete_custom(item_id) row = self.ListView.row(item) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 6e791badd..0ab86f3f7 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -116,14 +116,18 @@ class ImageMediaItem(MediaManagerItem): self.PageLayout.addWidget(self.ImageWidget) def onDeleteClick(self): - items = self.ListView.selectedIndexes() - if items: + """ + Remove an image item from the list + """ + if self.checkItemSelected(translate(u'ImagePlugin.MediaItem', + u'You must select an item to delete.')): + items = self.ListView.selectedIndexes() for item in items: text = self.ListView.item(item.row()) if text: try: - os.remove( - os.path.join(self.servicePath, unicode(text.text()))) + os.remove(os.path.join(self.servicePath, + unicode(text.text()))) except OSError: #if not present do not worry pass diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index fd397a35f..60bc190dc 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -137,8 +137,12 @@ class MediaMediaItem(MediaManagerItem): self.settingsSection)) def onDeleteClick(self): - item = self.ListView.currentItem() - if item: + """ + Remove a media item from the list + """ + if self.checkItemSelected(translate(u'MediaPlugin.MediaItem', + u'You must select an item to delete.')): + item = self.ListView.currentItem() row = self.ListView.row(item) self.ListView.takeItem(row) SettingsManager.set_list(self.settingsSection, @@ -152,4 +156,3 @@ class MediaMediaItem(MediaManagerItem): item_name.setIcon(build_icon(img)) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) self.ListView.addItem(item_name) - diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index be2cecff4..51e2db23b 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -174,8 +174,12 @@ class PresentationMediaItem(MediaManagerItem): self.ListView.addItem(item_name) def onDeleteClick(self): - item = self.ListView.currentItem() - if item: + """ + Remove a presentation item from the list + """ + if self.checkItemSelected(translate(u'PresentationPlugin.MediaItem', + u'You must select an item to delete.')): + item = self.ListView.currentItem() row = self.ListView.row(item) self.ListView.takeItem(row) SettingsManager.set_list(self.settingsSection, diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index d6f2f5ce8..60faaa826 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -275,15 +275,23 @@ class SongMediaItem(MediaManagerItem): self.edit_song_form.exec_() def onEditClick(self): - item = self.ListView.currentItem() - if item: + """ + Edit a song + """ + if self.checkItemSelected(translate(u'SongsPlugin.MediaItem', + u'You must select an item to edit.')): + item = self.ListView.currentItem() item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.edit_song_form.loadSong(item_id, False) self.edit_song_form.exec_() def onDeleteClick(self): - items = self.ListView.selectedIndexes() - if items: + """ + Remove a song from the list and database + """ + if self.checkItemSelected(translate(u'SongsPlugin.MediaItem', + u'You must select an item to delete.')): + items = self.ListView.selectedIndexes() if len(items) == 1: del_message = translate(u'SongsPlugin.MediaItem', u'Delete song?') @@ -371,4 +379,3 @@ class SongMediaItem(MediaManagerItem): song.title, author_audit, song.copyright, song.ccli_number ] return True - From 04f2a9797b374f4141cca7c89f398200a3a39e80 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Wed, 16 Jun 2010 02:48:52 +0100 Subject: [PATCH 07/14] Bible search fix: * Add feedback * cater for partial file-based bibles * Prevent an uncaught exception --- openlp/plugins/bibles/lib/db.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 97983e72c..377803b19 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -29,8 +29,9 @@ import chardet import re from sqlalchemy import or_ -from PyQt4 import QtCore +from PyQt4 import QtCore, QtGui +from openlp.core.lib import translate from openlp.plugins.bibles.lib.models import * log = logging.getLogger(__name__) @@ -304,14 +305,22 @@ class BibleDB(QtCore.QObject): if db_book: book = db_book.name log.debug(u'Book name corrected to "%s"', book) - verses = self.session.query(Verse)\ - .filter_by(book_id=db_book.id)\ - .filter_by(chapter=chapter)\ - .filter(Verse.verse >= start_verse)\ - .filter(Verse.verse <= end_verse)\ - .order_by(Verse.verse)\ - .all() - verse_list.extend(verses) + verses = self.session.query(Verse)\ + .filter_by(book_id=db_book.id)\ + .filter_by(chapter=chapter)\ + .filter(Verse.verse >= start_verse)\ + .filter(Verse.verse <= end_verse)\ + .order_by(Verse.verse)\ + .all() + verse_list.extend(verses) + else: + log.debug(u'OpenLP failed to find book %s', book) + QtGui.QMessageBox.information(self.bible_plugin.media_item, + translate(u'BibleDB', u'Book not found'), + translate(u'BibleDB', u'The book you requested could not ' + u'be found in this bible. Please check your spelling ' + u'and that this is a complete bible not just one ' + u'testament.')) return verse_list def verse_search(self, text): @@ -383,4 +392,3 @@ class BibleDB(QtCore.QObject): log.debug(u'...............................Verses ') verses = self.session.query(Verse).all() log.debug(verses) - From 674b9e00ad8abaf939cebc652eb214ca522b906c Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 16 Jun 2010 22:22:02 +0100 Subject: [PATCH 08/14] Remove the main display so we can see the ppt's --- openlp/plugins/presentations/lib/messagelistener.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 0e98b377a..c6ab1e921 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -29,6 +29,7 @@ import os from PyQt4 import QtCore from openlp.core.lib import Receiver +from openlp.core.ui import HideMode log = logging.getLogger(__name__) @@ -55,7 +56,7 @@ class Controller(object): self.doc.start_presentation() if isBlank: self.blank() - Receiver.send_message(u'maindisplay_hide') + Receiver.send_message(u'maindisplay_hide', HideMode.Screen) self.doc.slidenumber = 0 def activate(self): @@ -179,6 +180,7 @@ class Controller(object): self.doc.slidenumber != self.doc.get_slide_number(): self.doc.goto_slide(self.doc.slidenumber) self.doc.unblank_screen() + Receiver.send_message(u'maindisplay_hide', HideMode.Screen) def poll(self): self.doc.poll_slidenumber(self.isLive) From 40fbf5ad6369590adfe1120c4323a6ac0a1c5835 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Thu, 17 Jun 2010 00:11:11 +0200 Subject: [PATCH 09/14] Fixed syntax in translate() function that contained u'%s' and % stuff --- openlp/core/lib/mediamanageritem.py | 53 ++++++++++++++++------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 1d2c6bd41..0715a0c7f 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -208,43 +208,49 @@ class MediaManagerItem(QtGui.QWidget): ## Import Button ## if self.hasImportIcon: self.addToolbarButton( - u'Import %s' % self.PluginNameShort, - u'%s %s' % (translate(u'MediaManagerItem', u'Import a'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'Import %s')) % \ + self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Import a %s')) % \ + self.PluginNameVisible, u':/general/general_import.png', self.onImportClick) ## File Button ## if self.hasFileIcon: self.addToolbarButton( - u'Load %s' % self.PluginNameShort, - u'%s %s' % (translate(u'MediaManagerItem', u'Load a new'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'Load %s')) % \ + self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Load a new %s')) % \ + self.PluginNameVisible, u':/general/general_open.png', self.onFileClick) ## New Button ## if self.hasNewIcon: self.addToolbarButton( - u'New %s' % self.PluginNameShort, - u'%s %s' % (translate(u'MediaManagerItem', u'Add a new'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'New %s')) % \ + self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Add a new %s')) % \ + self.PluginNameVisible, u':/general/general_new.png', self.onNewClick) ## Edit Button ## if self.hasEditIcon: self.addToolbarButton( - u'Edit %s' % self.PluginNameShort, - u'%s %s' % ( - translate(u'MediaManagerItem', u'Edit the selected'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'Edit %s')) % \ + self.PluginNameShort, + unicode(translate( + u'MediaManagerItem', u'Edit the selected %s')) % \ + self.PluginNameVisible, u':/general/general_edit.png', self.onEditClick) ## Delete Button ## if self.hasDeleteIcon: self.addToolbarButton( - u'Delete %s' % self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Delete %s')) % \ + self.PluginNameShort, translate(u'MediaManagerItem', u'Delete the selected item'), u':/general/general_delete.png', self.onDeleteClick) ## Separator Line ## self.addToolbarSeparator() ## Preview ## self.addToolbarButton( - u'Preview %s' % self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Preview %s')) % \ + self.PluginNameShort, translate(u'MediaManagerItem', u'Preview the selected item'), u':/general/general_preview.png', self.onPreviewClick) ## Live Button ## @@ -254,7 +260,8 @@ class MediaManagerItem(QtGui.QWidget): u':/general/general_live.png', self.onLiveClick) ## Add to service Button ## self.addToolbarButton( - u'Add %s to Service' % self.PluginNameShort, + unicode(translate(u'MediaManagerItem', u'Add %s to Service')) % \ + self.PluginNameShort, translate(u'MediaManagerItem', u'Add the selected item(s) to the service'), u':/general/general_add.png', self.onAddClick) @@ -278,23 +285,23 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_edit.png', - u'%s %s' % (translate(u'MediaManagerItem', u'&Edit'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'&Edit %s')) % \ + self.PluginNameVisible, self.onEditClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) if self.hasDeleteIcon: self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_delete.png', - u'%s %s' % (translate(u'MediaManagerItem', u'&Delete'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'&Delete %s')) % \ + self.PluginNameVisible, self.onDeleteClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_preview.png', - u'%s %s' % (translate(u'MediaManagerItem', u'&Preview'), - self.PluginNameVisible), + unicode(translate(u'MediaManagerItem', u'&Preview %s')) % \ + self.PluginNameVisible, self.onPreviewClick)) self.ListView.addAction( contextMenuAction( @@ -471,7 +478,7 @@ class MediaManagerItem(QtGui.QWidget): QtGui.QMessageBox.information(self, translate(u'MediaManagerItem', u'Invalid Service Item'), translate(unicode(u'MediaManagerItem', - u'You must select a %s service item.' % self.title))) + u'You must select a %s service item.')) % self.title) def buildServiceItem(self, item=None): """ From 99d97a95a31aa1b4e5b88902b8c7d2939f98650e Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Thu, 17 Jun 2010 00:17:50 +0200 Subject: [PATCH 10/14] removed a "enter-space" --- openlp/core/lib/mediamanageritem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index fae9143b3..93cf1f92c 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -31,7 +31,6 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import context_menu_action, context_menu_separator, \ SettingsManager, OpenLPToolbar, ServiceItem, build_icon, translate - log = logging.getLogger(__name__) class MediaManagerItem(QtGui.QWidget): From 4683e208607b936a793479cb3d56e03acd5d09d2 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 17 Jun 2010 02:56:05 +0100 Subject: [PATCH 11/14] Fix addToServiceItem location --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 8df8bded9..f423005b4 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -110,7 +110,6 @@ class MediaManagerItem(QtGui.QWidget): self.remoteTriggered = None self.ServiceItemIconName = None self.singleServiceItem = True - self.addToServiceItem = False self.PageLayout = QtGui.QVBoxLayout(self) self.PageLayout.setSpacing(0) self.PageLayout.setContentsMargins(4, 0, 4, 0) @@ -133,6 +132,7 @@ class MediaManagerItem(QtGui.QWidget): self.hasEditIcon = True self.hasFileIcon = False self.hasDeleteIcon = True + self.addToServiceItem = False def retranslateUi(self): """ diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 191f26d44..9bda44ede 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -57,7 +57,6 @@ class BibleMediaItem(MediaManagerItem): self.IconPath = u'songs/song' self.ListViewWithDnD_class = BibleListView self.lastReference = [] - self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) # place to store the search results self.search_results = {} @@ -79,6 +78,7 @@ class BibleMediaItem(MediaManagerItem): self.hasNewIcon = False self.hasEditIcon = False self.hasDeleteIcon = False + self.addToServiceItem = True def addEndHeaderBar(self): self.SearchTabWidget = QtGui.QTabWidget(self) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 0ab86f3f7..3fbde6af2 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -54,7 +54,6 @@ class ImageMediaItem(MediaManagerItem): # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = ImageListView MediaManagerItem.__init__(self, parent, icon, title) - self.addToServiceItem = True def initPluginNameVisible(self): self.PluginNameVisible = translate(u'ImagePlugin.MediaItem', u'Image') @@ -74,6 +73,7 @@ class ImageMediaItem(MediaManagerItem): self.hasFileIcon = True self.hasNewIcon = False self.hasEditIcon = False + self.addToServiceItem = True def initialise(self): log.debug(u'initialise') From 143f361f8d3c2ae2dad70aa1ab67f2eb77c6b72b Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 17 Jun 2010 12:43:58 +0100 Subject: [PATCH 12/14] Fix translate and remove unused script --- openlp/core/lib/mediamanageritem.py | 2 +- scripts/get-strings.py | 116 ---------------------------- 2 files changed, 1 insertion(+), 117 deletions(-) delete mode 100755 scripts/get-strings.py diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index f423005b4..6b8d015bb 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -334,7 +334,7 @@ class MediaManagerItem(QtGui.QWidget): """ if not self.ListView.selectedIndexes(): QtGui.QMessageBox.information(self, - self.trUtf8('No Items Selected'), message) + translate(u'MediaManagerItem', u'No Items Selected'), message) return False return True diff --git a/scripts/get-strings.py b/scripts/get-strings.py deleted file mode 100755 index 5fa42a1fc..000000000 --- a/scripts/get-strings.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # -# Thompson, Jon Tibble, Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# 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 os -from cgi import escape -from ast import parse, NodeVisitor, Str - -ts_file = u""" - - -%s - -""" -ts_context = u""" - %s -%s -""" -ts_message = u""" - - %s - - -""" - -class StringExtractor(NodeVisitor): - - def __init__(self, strings, filename, base_path): - self.base_path = base_path - self.filename = filename - self.strings = strings - self.classname = 'unknown' - - def visit_ClassDef(self, node): - self.classname = node.name - self.generic_visit(node) - - def visit_Call(self, node): - if hasattr(node.func, 'attr') and node.func.attr == 'trUtf8' and isinstance(node.args[0], Str): - string = node.args[0].s - key = '%s-%s' % (self.classname, string) - self.strings[key] = [self.classname, self.filename[len(self.base_path) + 1:], node.lineno, escape(string)] - self.generic_visit(node) - -def parse_file(base_path, filename, strings): - file = open(filename, u'r') - try: - ast = parse(file.read()) - except SyntaxError, e: - print "Unable to parse %s: %s" % (filename, e) - return - file.close() - - StringExtractor(strings, filename, base_path).visit(ast) - -def write_file(filename, strings): - translation_file = u'' - translation_contexts = [] - translation_messages = [] - class_name = strings[strings.keys()[0]][0] - current_context = u'' - for key, translation in strings.iteritems(): - if class_name != translation[0]: - current_context = ts_context % (class_name, u''.join(translation_messages)) - translation_contexts.append(current_context) - translation_messages = [] - class_name = translation[0] - translation_messages.append(ts_message % (translation[1], translation[2], translation[3])) - current_context = ts_context % (class_name, u''.join(translation_messages)) - translation_contexts.append(current_context) - translation_file = ts_file % (u''.join(translation_contexts)) - file = open(filename, u'w') - file.write(translation_file.encode('utf8')) - file.close() - -def main(): - strings = {} - start_dir = os.path.abspath(u'..') - for root, dirs, files in os.walk(start_dir): - for file in files: - if file.startswith(u'hook-') or file.startswith(u'test_'): - continue - if file.endswith(u'.py'): - print u'Parsing "%s"' % file - parse_file(start_dir, os.path.join(root, file), strings) - print u'Generating TS file...', - write_file(os.path.join(start_dir, u'resources', u'i18n', u'openlp_en.ts'), strings) - print u'done.' - -if __name__ == u'__main__': - if os.path.split(os.path.abspath(u'.'))[1] != u'scripts': - print u'You need to run this script from the scripts directory.' - else: - main() From 7c6b5c0b9991ce4814e5f71b300a269927548979 Mon Sep 17 00:00:00 2001 From: Frode Woldsund Date: Thu, 17 Jun 2010 14:02:18 +0200 Subject: [PATCH 13/14] translate(pluginName.pluginName) -> translate(pluginName) and removed some spaces --- openlp/core/lib/mediamanageritem.py | 8 +++--- openlp/plugins/alerts/alertsplugin.py | 6 ++--- openlp/plugins/bibles/bibleplugin.py | 6 ++--- openlp/plugins/custom/customplugin.py | 2 +- openlp/plugins/images/imageplugin.py | 2 +- openlp/plugins/media/mediaplugin.py | 2 +- .../presentations/presentationplugin.py | 2 +- openlp/plugins/remotes/remoteplugin.py | 2 +- openlp/plugins/songs/songsplugin.py | 26 +++++++++---------- openlp/plugins/songusage/songusageplugin.py | 16 ++++++------ 10 files changed, 36 insertions(+), 36 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 93cf1f92c..516dd6f44 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -224,7 +224,7 @@ class MediaManagerItem(QtGui.QWidget): ## New Button ## if self.hasNewIcon: self.addToolbarButton( - unicode(translate(u'MediaManagerItem', u'New %s')) % \ + unicode(translate(u'MediaManagerItem', u'New %s')) % \ self.PluginNameShort, unicode(translate(u'MediaManagerItem', u'Add a new %s')) % \ self.PluginNameVisible, @@ -232,7 +232,7 @@ class MediaManagerItem(QtGui.QWidget): ## Edit Button ## if self.hasEditIcon: self.addToolbarButton( - unicode(translate(u'MediaManagerItem', u'Edit %s')) % \ + unicode(translate(u'MediaManagerItem', u'Edit %s')) % \ self.PluginNameShort, unicode(translate( u'MediaManagerItem', u'Edit the selected %s')) % \ @@ -241,7 +241,7 @@ class MediaManagerItem(QtGui.QWidget): ## Delete Button ## if self.hasDeleteIcon: self.addToolbarButton( - unicode(translate(u'MediaManagerItem', u'Delete %s')) % \ + unicode(translate(u'MediaManagerItem', u'Delete %s')) % \ self.PluginNameShort, translate(u'MediaManagerItem', u'Delete the selected item'), u':/general/general_delete.png', self.onDeleteClick) @@ -260,7 +260,7 @@ class MediaManagerItem(QtGui.QWidget): u':/general/general_live.png', self.onLiveClick) ## Add to service Button ## self.addToolbarButton( - unicode(translate(u'MediaManagerItem', u'Add %s to Service')) % \ + unicode(translate(u'MediaManagerItem', u'Add %s to Service')) % \ self.PluginNameShort, translate(u'MediaManagerItem', u'Add the selected item(s) to the service'), diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 7474a0564..eb6d1f116 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -64,9 +64,9 @@ class alertsPlugin(Plugin): self.toolsAlertItem.setIcon(AlertIcon) self.toolsAlertItem.setObjectName(u'toolsAlertItem') self.toolsAlertItem.setText( - translate(u'AlertsPlugin.AlertsPlugin', u'&Alert')) + translate(u'AlertsPlugin', u'&Alert')) self.toolsAlertItem.setStatusTip( - translate(u'AlertsPlugin.AlertsPlugin', u'Show an alert message')) + translate(u'AlertsPlugin', u'Show an alert message')) self.toolsAlertItem.setShortcut(u'F7') self.service_manager.parent.ToolsMenu.addAction(self.toolsAlertItem) QtCore.QObject.connect(self.toolsAlertItem, @@ -94,7 +94,7 @@ class alertsPlugin(Plugin): self.alertForm.exec_() def about(self): - about_text = translate(u'AlertsPlugin.AlertsPlugin', + about_text = translate(u'AlertsPlugin', u'Alerts Plugin
This plugin ' u'controls the displaying of alerts on the presentations screen') return about_text diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index bfaa535a9..f3998e5a5 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -71,7 +71,7 @@ class BiblePlugin(Plugin): self.ImportBibleItem.setObjectName(u'ImportBibleItem') import_menu.addAction(self.ImportBibleItem) self.ImportBibleItem.setText( - translate(u'BiblesPlugin.BiblePlugin', u'&Bible')) + translate(u'BiblePlugin', u'&Bible')) # Signals and slots QtCore.QObject.connect(self.ImportBibleItem, QtCore.SIGNAL(u'triggered()'), self.onBibleImportClick) @@ -82,7 +82,7 @@ class BiblePlugin(Plugin): self.ExportBibleItem.setObjectName(u'ExportBibleItem') export_menu.addAction(self.ExportBibleItem) self.ExportBibleItem.setText(translate( - u'BiblesPlugin.BiblePlugin', u'&Bible')) + u'BiblePlugin', u'&Bible')) self.ExportBibleItem.setVisible(False) def onBibleImportClick(self): @@ -90,7 +90,7 @@ class BiblePlugin(Plugin): self.media_item.onImportClick() def about(self): - about_text = translate(u'BiblesPlugin.BiblePlugin', + about_text = translate(u'BiblePlugin', u'Bible Plugin
This ' u'plugin allows bible verses from different sources to be ' u'displayed on the screen during the service.') diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 9ae208a28..2ad95b026 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -67,7 +67,7 @@ class CustomPlugin(Plugin): self.remove_toolbox_item() def about(self): - about_text = translate(u'CustomPlugin.CustomPlugin', + about_text = translate(u'CustomPlugin', u'Custom Plugin
This plugin ' u'allows slides to be displayed on the screen in the same way ' u'songs are. This plugin provides greater freedom over the ' diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index ca375ed6c..343a87491 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -56,7 +56,7 @@ class ImagePlugin(Plugin): return ImageMediaItem(self, self.icon, self.name) def about(self): - about_text = translate(u'ImagePlugin.ImagePlugin', u'Image Plugin' + about_text = translate(u'ImagePlugin', u'Image Plugin' u'
Allows images of all types to be displayed. If a number ' u'of images are selected together and presented on the live ' u'controller it is possible to turn them into a timed loop.' diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 7c773c5a7..7f6e54472 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -81,7 +81,7 @@ class MediaPlugin(Plugin): return MediaMediaItem(self, self.icon, self.name) def about(self): - about_text = translate(u'MediaPlugin.MediaPlugin', + about_text = translate(u'MediaPlugin', u'Media Plugin
This plugin ' u'allows the playing of audio and video media') return about_text diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 036e8fc42..f59968287 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -108,7 +108,7 @@ class PresentationPlugin(Plugin): return False def about(self): - about_text = translate(u'PresentationPlugin.PresentationPlugin', + about_text = translate(u'PresentationPlugin', u'Presentation Plugin
Delivers ' u'the ability to show presentations using a number of different ' u'programs. The choice of available presentation programs is ' diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index e3d68a9a3..c839f1595 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -69,7 +69,7 @@ class RemotesPlugin(Plugin): """ Information about this plugin """ - about_text = translate(u'RemotePlugin.RemotePlugin', + about_text = translate(u'RemotePlugin', u'Remote Plugin
This plugin ' u'provides the ability to send messages to a running version of ' u'openlp on a different computer via a web browser or other app
' diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index dad471043..21ec610b2 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -95,9 +95,9 @@ class SongsPlugin(Plugin): self.SongImportItem = QtGui.QAction(import_menu) self.SongImportItem.setObjectName(u'SongImportItem') self.SongImportItem.setText(translate( - u'SongsPlugin.SongsPlugin', u'&Song')) + u'SongsPlugin', u'&Song')) self.SongImportItem.setToolTip( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import songs using the import wizard.')) import_menu.addAction(self.SongImportItem) # Songs of Fellowship import menu item - will be removed and the @@ -105,14 +105,14 @@ class SongsPlugin(Plugin): self.ImportSofItem = QtGui.QAction(import_menu) self.ImportSofItem.setObjectName(u'ImportSofItem') self.ImportSofItem.setText( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Songs of Fellowship (temp menu item)')) self.ImportSofItem.setToolTip( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import songs from the VOLS1_2.RTF, sof3words' \ + u'.rtf and sof4words.rtf supplied with the music books')) self.ImportSofItem.setStatusTip( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import songs from the VOLS1_2.RTF, sof3words' \ + u'.rtf and sof4words.rtf supplied with the music books')) import_menu.addAction(self.ImportSofItem) @@ -121,15 +121,15 @@ class SongsPlugin(Plugin): self.ImportOooItem = QtGui.QAction(import_menu) self.ImportOooItem.setObjectName(u'ImportOooItem') self.ImportOooItem.setText( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Generic Document/Presentation Import ' u'(temp menu item)')) self.ImportOooItem.setToolTip( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import songs from ' u'Word/Writer/Powerpoint/Impress')) self.ImportOooItem.setStatusTip( - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import songs from ' u'Word/Writer/Powerpoint/Impress')) import_menu.addAction(self.ImportOooItem) @@ -159,7 +159,7 @@ class SongsPlugin(Plugin): def onImportSofItemClick(self): filenames = QtGui.QFileDialog.getOpenFileNames( - None, translate(u'SongsPlugin.Songsplugin', + None, translate(u'SongsPlugin', u'Open Songs of Fellowship file'), u'', u'Songs of Fellowship file (*.rtf *.RTF)') try: @@ -169,9 +169,9 @@ class SongsPlugin(Plugin): except: log.exception('Could not import SoF file') QtGui.QMessageBox.critical(None, - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Import Error'), - translate(u'SongsPlugin.SongsPlugin', + translate(u'SongsPlugin', u'Error importing Songs of ' u'Fellowship file.\nOpenOffice.org must be installed' u' and you must be using an unedited copy of the RTF' @@ -182,7 +182,7 @@ class SongsPlugin(Plugin): def onImportOooItemClick(self): filenames = QtGui.QFileDialog.getOpenFileNames( - None, translate(u'SongsPlugin.Songsplugin', + None, translate(u'SongsPlugin', u'Open documents or presentations'), u'', u'All Files(*.*)') oooimport = OooImport(self.manager) @@ -190,7 +190,7 @@ class SongsPlugin(Plugin): Receiver.send_message(u'songs_load_list') def about(self): - about_text = translate(u'SongsPlugin.Songsplugin', + about_text = translate(u'SongsPlugin', u'Song Plugin
' u'This plugin allows songs to be managed and displayed.') return about_text diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 7cc75f764..0b3d7971c 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -60,23 +60,23 @@ class SongUsagePlugin(Plugin): self.SongUsageMenu = QtGui.QMenu(tools_menu) self.SongUsageMenu.setObjectName(u'SongUsageMenu') self.SongUsageMenu.setTitle(translate( - u'SongUsagePlugin.SongUsagePlugin', u'&Song Usage')) + u'SongUsagePlugin', u'&Song Usage')) #SongUsage Delete self.SongUsageDelete = QtGui.QAction(tools_menu) self.SongUsageDelete.setText( - translate(u'SongUsagePlugin.SongUsagePlugin', + translate(u'SongUsagePlugin', u'&Delete recorded data')) self.SongUsageDelete.setStatusTip( - translate(u'SongUsagePlugin.SongUsagePlugin', + translate(u'SongUsagePlugin', u'Delete song usage to specified date')) self.SongUsageDelete.setObjectName(u'SongUsageDelete') #SongUsage Report self.SongUsageReport = QtGui.QAction(tools_menu) self.SongUsageReport.setText( - translate(u'SongUsagePlugin.SongUsagePlugin', + translate(u'SongUsagePlugin', u'&Extract recorded data')) self.SongUsageReport.setStatusTip( - translate(u'SongUsagePlugin.SongUsagePlugin', + translate(u'SongUsagePlugin', u'Generate report on Song Usage')) self.SongUsageReport.setObjectName(u'SongUsageReport') #SongUsage activation @@ -86,9 +86,9 @@ class SongUsagePlugin(Plugin): self.SongUsageStatus.setCheckable(True) self.SongUsageStatus.setChecked(False) self.SongUsageStatus.setText(translate( - u'SongUsagePlugin.SongUsagePlugin', u'Song Usage Status')) + u'SongUsagePlugin', u'Song Usage Status')) self.SongUsageStatus.setStatusTip( - translate(u'SongUsagePlugin.SongUsagePlugin', + translate(u'SongUsagePlugin', u'Start/Stop live song usage recording')) self.SongUsageStatus.setShortcut(u'F4') self.SongUsageStatus.setObjectName(u'SongUsageStatus') @@ -163,7 +163,7 @@ class SongUsagePlugin(Plugin): self.SongUsagedetailform.exec_() def about(self): - about_text = translate(u'SongsPlugin.SongUsagePlugin', + about_text = translate(u'SongUsagePlugin', u'SongUsage Plugin
This plugin ' u'records the use of songs and when they have been used during ' u'a live service') From 035ae84f39ff9230fa987ff0c396f258cdbbcb3c Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 17 Jun 2010 15:23:50 +0100 Subject: [PATCH 14/14] Import translate --- openlp/core/ui/splashscreen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index d964ed610..f49d73815 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -24,7 +24,8 @@ ############################################################################### from PyQt4 import QtCore, QtGui -from openlp.core.lib import build_icon + +from openlp.core.lib import build_icon, translate class SplashScreen(object): def __init__(self, version):