From 3d478ec975eb4a206ce4b6b4ecc03fa9925bacf0 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 20 Aug 2010 21:40:07 +0200 Subject: [PATCH] Song Wizard! --- openlp/plugins/songs/forms/songimportform.py | 189 +++++++-- .../plugins/songs/forms/songimportwizard.py | 362 +++++++++++++----- openlp/plugins/songs/lib/__init__.py | 38 +- 3 files changed, 438 insertions(+), 151 deletions(-) diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 025bf4011..b2c7ee195 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -25,6 +25,7 @@ ############################################################################### import logging +import os from PyQt4 import QtCore, QtGui @@ -66,21 +67,36 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): self.manager = manager self.plugin = plugin #self.manager.set_process_dialog(self) - QtCore.QObject.connect(self.OpenLyricsAddButton, + QtCore.QObject.connect(self.openLP2BrowseButton, + QtCore.SIGNAL(u'clicked()'), + self.onOpenLP2BrowseButtonClicked) + QtCore.QObject.connect(self.openLP1BrowseButton, + QtCore.SIGNAL(u'clicked()'), + self.onOpenLP1BrowseButtonClicked) + QtCore.QObject.connect(self.openLyricsAddButton, QtCore.SIGNAL(u'clicked()'), self.onOpenLyricsAddButtonClicked) - QtCore.QObject.connect(self.OpenLyricsRemoveButton, + QtCore.QObject.connect(self.openLyricsRemoveButton, QtCore.SIGNAL(u'clicked()'), self.onOpenLyricsRemoveButtonClicked) -# QtCore.QObject.connect(self.BooksFileButton, -# QtCore.SIGNAL(u'clicked()'), -# self.onBooksFileButtonClicked) -# QtCore.QObject.connect(self.CsvVersesFileButton, -# QtCore.SIGNAL(u'clicked()'), -# self.onCsvVersesFileButtonClicked) -# QtCore.QObject.connect(self.OpenSongBrowseButton, -# QtCore.SIGNAL(u'clicked()'), -# self.onOpenSongBrowseButtonClicked) + QtCore.QObject.connect(self.openSongAddButton, + QtCore.SIGNAL(u'clicked()'), + self.onOpenSongAddButtonClicked) + QtCore.QObject.connect(self.openSongRemoveButton, + QtCore.SIGNAL(u'clicked()'), + self.onOpenSongRemoveButtonClicked) + QtCore.QObject.connect(self.wordsOfWorshipAddButton, + QtCore.SIGNAL(u'clicked()'), + self.onWordsOfWorshipAddButtonClicked) + QtCore.QObject.connect(self.wordsOfWorshipRemoveButton, + QtCore.SIGNAL(u'clicked()'), + self.onWordsOfWorshipRemoveButtonClicked) + QtCore.QObject.connect(self.songsOfFellowshipBrowseButton, + QtCore.SIGNAL(u'clicked()'), + self.onSongsOfFellowshipBrowseButtonClicked) + QtCore.QObject.connect(self.genericBrowseButton, + QtCore.SIGNAL(u'clicked()'), + self.onGenericBrowseButtonClicked) QtCore.QObject.connect(self.cancelButton, QtCore.SIGNAL(u'clicked(bool)'), self.onCancelButtonClicked) @@ -105,25 +121,55 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): elif self.currentId() == 1: # Select page source_format = self.field(u'source_format').toInt()[0] - if source_format == SongFormat.OpenLyrics: - if self.OpenLyricsFileListWidget.count() == 0: + if source_format == SongFormat.OpenLP2: + if self.openLP2FilenameEdit.text().isEmpty(): + QtGui.QMessageBox.critical(self, + translate('SongsPlugin.ImportWizardForm', + 'No OpenLP 2.0 Song Database Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to select an OpenLP 2.0 song database ' + 'file to import from.')) + self.openLP2BrowseButton.setFocus() + return False + elif source_format == SongFormat.OpenLP1: + if self.openSongFilenameEdit.text().isEmpty(): + QtGui.QMessageBox.critical(self, + translate('SongsPlugin.ImportWizardForm', + 'No openlp.org 1.x Song Database Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to select an openlp.org 1.x song ' + 'database file to import from.')) + self.openLP1BrowseButton.setFocus() + return False + elif source_format == SongFormat.OpenLyrics: + if self.openLyricsFileListWidget.count() == 0: QtGui.QMessageBox.critical(self, translate('SongsPlugin.ImportWizardForm', 'No OpenLyrics Files Selected'), translate('SongsPlugin.ImportWizardForm', 'You need to add at least one OpenLyrics ' 'song file to import from.')) - self.OpenLyricsAddButton.setFocus() + self.openLyricsAddButton.setFocus() return False elif source_format == SongFormat.OpenSong: - if self.OpenSongFileListWidget.count() == 0: + if self.openSongFileListWidget.count() == 0: QtGui.QMessageBox.critical(self, translate('SongsPlugin.ImportWizardForm', 'No OpenSong Files Selected'), translate('SongsPlugin.ImportWizardForm', 'You need to add at least one OpenSong ' 'song file to import from.')) - self.OpenSongAddButton.setFocus() + self.openSongAddButton.setFocus() + return False + elif source_format == SongFormat.WordsOfWorship: + if self.wordsOfWorshipListWidget.count() == 0: + QtGui.QMessageBox.critical(self, + translate('SongsPlugin.ImportWizardForm', + 'No Words of Worship Files Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to add at least one Words of Worship ' + 'file to import from.')) + self.wordsOfWorshipAddButton.setFocus() return False elif source_format == SongFormat.CCLI: if self.CCLIFileListWidget.count() == 0: @@ -135,42 +181,108 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): 'to import from.')) self.CCLIAddButton.setFocus() return False - elif source_format == SongFormat.CSV: - if self.CSVFilenameEdit.text().isEmpty(): + elif source_format == SongFormat.SongsOfFellowship: + if self.songsOfFellowshipFilenameEdit.text().isEmpty(): QtGui.QMessageBox.critical(self, translate('SongsPlugin.ImportWizardForm', - 'No CSV File Selected'), + 'No Songs of Fellowship File Selected'), translate('SongsPlugin.ImportWizardForm', - 'You need to specify a CSV file to import from.')) - self.CSVFilenameEdit.setFocus() + 'You need to select a Songs of Fellowship file to ' + 'import from.')) + self.songsOfFellowshipBrowseButton.setFocus() + return False + elif source_format == SongFormat.Generic: + if self.genericFilenameEdit.text().isEmpty(): + QtGui.QMessageBox.critical(self, + translate('SongsPlugin.ImportWizardForm', + 'No Document/Presentation Selected'), + translate('SongsPlugin.ImportWizardForm', + 'You need to select a document/presentation file ' + 'to import from.')) + self.genericBrowseButton.setFocus() return False return True elif self.currentId() == 2: # Progress page return True + def getFileName(self, title, editbox): + filename = QtGui.QFileDialog.getOpenFileName(self, title, + SettingsManager.get_last_dir(self.plugin.settingsSection, 1)) + if filename: + editbox.setText(filename) + SettingsManager.set_last_dir( + self.plugin.settingsSection, + os.path.split(unicode(filename))[0], 1) + def getFiles(self, title, listbox): filenames = QtGui.QFileDialog.getOpenFileNames(self, title, SettingsManager.get_last_dir(self.plugin.settingsSection, 1)) if filenames: listbox.addItems(filenames) - #SettingsManager.set_last_dir( - # self.plugin.settingsSection, - # os.path.split(unicode(filenames[0]))[0], 1) + SettingsManager.set_last_dir( + self.plugin.settingsSection, + os.path.split(unicode(filenames[0]))[0], 1) def removeSelectedItems(self, listbox): for item in listbox.selectedItems(): item = listbox.takeItem(listbox.row(item)) del item + def onOpenLP2BrowseButtonClicked(self): + self.getFileName( + translate('SongsPlugin.ImportWizardForm', + 'Select OpenLP 2.0 Database File'), + self.openLP2FilenameEdit + ) + + def onOpenLP1BrowseButtonClicked(self): + self.getFileName( + translate('SongsPlugin.ImportWizardForm', + 'Select openlp.org 1.x Database File'), + self.openLP1FilenameEdit + ) + def onOpenLyricsAddButtonClicked(self): self.getFiles( - translate('SongsPlugin.ImportWizard', 'Select OpenLyrics Files'), - self.OpenLyricsFileListWidget + translate('SongsPlugin.ImportWizardForm', 'Select OpenLyrics Files'), + self.openLyricsFileListWidget ) def onOpenLyricsRemoveButtonClicked(self): - self.removeSelectedItems(self.OpenLyricsFileListWidget) + self.removeSelectedItems(self.openLyricsFileListWidget) + + def onOpenSongAddButtonClicked(self): + self.getFiles( + translate('SongsPlugin.ImportWizardForm', 'Select Open Song Files'), + self.openSongFileListWidget + ) + + def onOpenSongRemoveButtonClicked(self): + self.removeSelectedItems(self.openSongFileListWidget) + + def onWordsOfWorshipAddButtonClicked(self): + self.getFiles( + translate('SongsPlugin.ImportWizardForm', 'Select Words of Worship Files'), + self.wordsOfWorshipFileListWidget + ) + + def onWordsOfWorshipRemoveButtonClicked(self): + self.removeSelectedItems(self.wordsOfWorshipFileListWidget) + + def onSongsOfFellowshipBrowseButtonClicked(self): + self.getFileName( + translate('SongsPlugin.ImportWizardForm', + 'Select Songs of Fellowship File'), + self.songsOfFellowshipFilenameEdit + ) + + def onGenericBrowseButtonClicked(self): + self.getFileName( + translate('SongsPlugin.ImportWizardForm', + 'Select Document/Presentation File'), + self.genericFilenameEdit + ) def onCancelButtonClicked(self, checked): """ @@ -191,18 +303,15 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): def setDefaults(self): self.setField(u'source_format', QtCore.QVariant(0)) - self.OpenLyricsFileListWidget.clear() - self.OpenSongFileListWidget.clear() + self.openLP2FilenameEdit.setText(u'') + self.openLP1FilenameEdit.setText(u'') + self.openLyricsFileListWidget.clear() + self.openSongFileListWidget.clear() + self.wordsOfWorshipFileListWidget.clear() self.CCLIFileListWidget.clear() - self.CSVFilenameEdit.setText(u'') - - def getFileName(self, title, editbox): - filename = QtGui.QFileDialog.getOpenFileName(self, title, - SettingsManager.get_last_dir(self.songsplugin.settingsSection, 1)) - if filename: - editbox.setText(filename) - SettingsManager.set_last_dir(self.songsplugin.settingsSection, - filename, 1) + self.songsOfFellowshipFilenameEdit.setText(u'') + self.genericFilenameEdit.setText(u'') +# self.CSVFilenameEdit.setText(u'') def incrementProgressBar(self, status_text): log.debug(u'IncrementBar %s', status_text) @@ -223,9 +332,9 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): pass # source_format = self.field(u'source_format').toInt()[0] # importer = None -# if bible_type == BibleFormat.OSIS: +# if bible_type == SongFormat.OSIS: # # Import an OSIS bible -# importer = self.manager.import_bible(BibleFormat.OSIS, +# importer = self.plugin.import_songs(BibleFormat.OSIS, # name=license_version, # filename=unicode(self.field(u'osis_location').toString()) # ) diff --git a/openlp/plugins/songs/forms/songimportwizard.py b/openlp/plugins/songs/forms/songimportwizard.py index 48fef5774..8f6c0949b 100644 --- a/openlp/plugins/songs/forms/songimportwizard.py +++ b/openlp/plugins/songs/forms/songimportwizard.py @@ -29,12 +29,14 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import build_icon, translate class Ui_SongImportWizard(object): - def setupUi(self, SongImportWizard): - SongImportWizard.setObjectName(u'SongImportWizard') - SongImportWizard.resize(550, 386) - SongImportWizard.setModal(True) - SongImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle) - SongImportWizard.setOptions( + def setupUi(self, songImportWizard): + openIcon = build_icon(u':/general/general_open.png') + deleteIcon = build_icon(u':/general/general_delete.png') + songImportWizard.setObjectName(u'songImportWizard') + songImportWizard.resize(550, 386) + songImportWizard.setModal(True) + songImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle) + songImportWizard.setOptions( QtGui.QWizard.IndependentPages | QtGui.QWizard.NoBackButtonOnStartPage | QtGui.QWizard.NoBackButtonOnLastPage) @@ -64,7 +66,7 @@ class Ui_SongImportWizard(object): QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.WelcomeTextLayout.addItem(self.WelcomeBottomSpacer) self.WelcomeLayout.addLayout(self.WelcomeTextLayout) - SongImportWizard.addPage(self.WelcomePage) + songImportWizard.addPage(self.WelcomePage) self.SourcePage = QtGui.QWizardPage() self.SourcePage.setObjectName(u'SourcePage') self.SourceLayout = QtGui.QVBoxLayout(self.SourcePage) @@ -90,6 +92,11 @@ class Ui_SongImportWizard(object): self.FormatComboBox.addItem(u'') self.FormatComboBox.addItem(u'') self.FormatComboBox.addItem(u'') + self.FormatComboBox.addItem(u'') + self.FormatComboBox.addItem(u'') + self.FormatComboBox.addItem(u'') + self.FormatComboBox.addItem(u'') +# self.FormatComboBox.addItem(u'') self.FormatLayout.addWidget(self.FormatComboBox) self.FormatSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) @@ -97,60 +104,139 @@ class Ui_SongImportWizard(object): self.SourceLayout.addLayout(self.FormatLayout) self.FormatStackedWidget = QtGui.QStackedWidget(self.SourcePage) self.FormatStackedWidget.setObjectName(u'FormatStackedWidget') - self.OpenLyricsPage = QtGui.QWidget() - self.OpenLyricsPage.setObjectName(u'OpenLyricsPage') - self.OpenLyricsLayout = QtGui.QVBoxLayout(self.OpenLyricsPage) - self.OpenLyricsLayout.setSpacing(8) - self.OpenLyricsLayout.setMargin(0) - self.OpenLyricsLayout.setObjectName(u'OpenLyricsLayout') - self.OpenLyricsFileListWidget = QtGui.QListWidget(self.OpenLyricsPage) - self.OpenLyricsFileListWidget.setSelectionMode( + # OpenLP 2.0 + self.openLP2Page = QtGui.QWidget() + self.openLP2Page.setObjectName(u'openLP2Page') + self.openLP2Layout = QtGui.QFormLayout(self.openLP2Page) + self.openLP2Layout.setMargin(0) + self.openLP2Layout.setSpacing(8) + self.openLP2Layout.setObjectName(u'openLP2Layout') + self.openLP2FilenameLabel = QtGui.QLabel(self.openLP2Page) + self.openLP2FilenameLabel.setObjectName(u'openLP2FilenameLabel') + self.openLP2Layout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.openLP2FilenameLabel) + self.openLP2FileLayout = QtGui.QHBoxLayout() + self.openLP2FileLayout.setSpacing(8) + self.openLP2FileLayout.setObjectName(u'openLP2FileLayout') + self.openLP2FilenameEdit = QtGui.QLineEdit(self.openLP2Page) + self.openLP2FilenameEdit.setObjectName(u'openLP2FilenameEdit') + self.openLP2FileLayout.addWidget(self.openLP2FilenameEdit) + self.openLP2BrowseButton = QtGui.QToolButton(self.openLP2Page) + self.openLP2BrowseButton.setIcon(openIcon) + self.openLP2BrowseButton.setObjectName(u'openLP2BrowseButton') + self.openLP2FileLayout.addWidget(self.openLP2BrowseButton) + self.openLP2Layout.setLayout(0, QtGui.QFormLayout.FieldRole, + self.openLP2FileLayout) + self.FormatStackedWidget.addWidget(self.openLP2Page) + # openlp.org 1.x + self.openLP1Page = QtGui.QWidget() + self.openLP1Page.setObjectName(u'openLP1Page') + self.openLP1Layout = QtGui.QFormLayout(self.openLP1Page) + self.openLP1Layout.setMargin(0) + self.openLP1Layout.setSpacing(8) + self.openLP1Layout.setObjectName(u'openLP1Layout') + self.openLP1FilenameLabel = QtGui.QLabel(self.openLP1Page) + self.openLP1FilenameLabel.setObjectName(u'openLP1FilenameLabel') + self.openLP1Layout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.openLP1FilenameLabel) + self.openLP1FileLayout = QtGui.QHBoxLayout() + self.openLP1FileLayout.setSpacing(8) + self.openLP1FileLayout.setObjectName(u'openLP1FileLayout') + self.openLP1FilenameEdit = QtGui.QLineEdit(self.openLP1Page) + self.openLP1FilenameEdit.setObjectName(u'openLP1FilenameEdit') + self.openLP1FileLayout.addWidget(self.openLP1FilenameEdit) + self.openLP1BrowseButton = QtGui.QToolButton(self.openLP1Page) + self.openLP1BrowseButton.setIcon(openIcon) + self.openLP1BrowseButton.setObjectName(u'openLP1BrowseButton') + self.openLP1FileLayout.addWidget(self.openLP1BrowseButton) + self.openLP1Layout.setLayout(0, QtGui.QFormLayout.FieldRole, + self.openLP1FileLayout) + self.FormatStackedWidget.addWidget(self.openLP1Page) + # OpenLyrics + self.openLyricsPage = QtGui.QWidget() + self.openLyricsPage.setObjectName(u'OpenLyricsPage') + self.openLyricsLayout = QtGui.QVBoxLayout(self.openLyricsPage) + self.openLyricsLayout.setSpacing(8) + self.openLyricsLayout.setMargin(0) + self.openLyricsLayout.setObjectName(u'OpenLyricsLayout') + self.openLyricsFileListWidget = QtGui.QListWidget(self.openLyricsPage) + self.openLyricsFileListWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) - self.OpenLyricsFileListWidget.setObjectName(u'OpenLyricsFileListWidget') - self.OpenLyricsLayout.addWidget(self.OpenLyricsFileListWidget) - self.OpenLyricsButtonLayout = QtGui.QHBoxLayout() - self.OpenLyricsButtonLayout.setSpacing(8) - self.OpenLyricsButtonLayout.setObjectName(u'OpenLyricsButtonLayout') - self.OpenLyricsAddButton = QtGui.QPushButton(self.OpenLyricsPage) - openIcon = build_icon(u':/general/general_open.png') - self.OpenLyricsAddButton.setIcon(openIcon) - self.OpenLyricsAddButton.setObjectName(u'OpenLyricsAddButton') - self.OpenLyricsButtonLayout.addWidget(self.OpenLyricsAddButton) - self.OpenLyricsButtonSpacer = QtGui.QSpacerItem(40, 20, + self.openLyricsFileListWidget.setObjectName(u'OpenLyricsFileListWidget') + self.openLyricsLayout.addWidget(self.openLyricsFileListWidget) + self.openLyricsButtonLayout = QtGui.QHBoxLayout() + self.openLyricsButtonLayout.setSpacing(8) + self.openLyricsButtonLayout.setObjectName(u'OpenLyricsButtonLayout') + self.openLyricsAddButton = QtGui.QPushButton(self.openLyricsPage) + self.openLyricsAddButton.setIcon(openIcon) + self.openLyricsAddButton.setObjectName(u'OpenLyricsAddButton') + self.openLyricsButtonLayout.addWidget(self.openLyricsAddButton) + self.openLyricsButtonSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.OpenLyricsButtonLayout.addItem(self.OpenLyricsButtonSpacer) - self.OpenLyricsRemoveButton = QtGui.QPushButton(self.OpenLyricsPage) - deleteIcon = build_icon(u':/general/general_delete.png') - self.OpenLyricsRemoveButton.setIcon(deleteIcon) - self.OpenLyricsRemoveButton.setObjectName(u'OpenLyricsRemoveButton') - self.OpenLyricsButtonLayout.addWidget(self.OpenLyricsRemoveButton) - self.OpenLyricsLayout.addLayout(self.OpenLyricsButtonLayout) - self.FormatStackedWidget.addWidget(self.OpenLyricsPage) - self.OpenSongPage = QtGui.QWidget() - self.OpenSongPage.setObjectName(u'OpenSongPage') - self.OpenSongLayout = QtGui.QVBoxLayout(self.OpenSongPage) - self.OpenSongLayout.setSpacing(8) - self.OpenSongLayout.setMargin(0) - self.OpenSongLayout.setObjectName(u'OpenSongLayout') - self.OpenSongFileListWidget = QtGui.QListWidget(self.OpenSongPage) - self.OpenSongFileListWidget.setObjectName(u'OpenSongFileListWidget') - self.OpenSongLayout.addWidget(self.OpenSongFileListWidget) - self.OpenSongButtonLayout = QtGui.QHBoxLayout() - self.OpenSongButtonLayout.setSpacing(8) - self.OpenSongButtonLayout.setObjectName(u'OpenSongButtonLayout') - self.OpenSongAddButton = QtGui.QPushButton(self.OpenSongPage) - self.OpenSongAddButton.setIcon(openIcon) - self.OpenSongAddButton.setObjectName(u'OpenSongAddButton') - self.OpenSongButtonLayout.addWidget(self.OpenSongAddButton) - self.OpenSongButtonSpacer = QtGui.QSpacerItem(40, 20, + self.openLyricsButtonLayout.addItem(self.openLyricsButtonSpacer) + self.openLyricsRemoveButton = QtGui.QPushButton(self.openLyricsPage) + self.openLyricsRemoveButton.setIcon(deleteIcon) + self.openLyricsRemoveButton.setObjectName(u'OpenLyricsRemoveButton') + self.openLyricsButtonLayout.addWidget(self.openLyricsRemoveButton) + self.openLyricsLayout.addLayout(self.openLyricsButtonLayout) + self.FormatStackedWidget.addWidget(self.openLyricsPage) + # Open Song + self.openSongPage = QtGui.QWidget() + self.openSongPage.setObjectName(u'OpenSongPage') + self.openSongLayout = QtGui.QVBoxLayout(self.openSongPage) + self.openSongLayout.setSpacing(8) + self.openSongLayout.setMargin(0) + self.openSongLayout.setObjectName(u'OpenSongLayout') + self.openSongFileListWidget = QtGui.QListWidget(self.openSongPage) + self.openSongFileListWidget.setSelectionMode( + QtGui.QAbstractItemView.ExtendedSelection) + self.openSongFileListWidget.setObjectName(u'OpenSongFileListWidget') + self.openSongLayout.addWidget(self.openSongFileListWidget) + self.openSongButtonLayout = QtGui.QHBoxLayout() + self.openSongButtonLayout.setSpacing(8) + self.openSongButtonLayout.setObjectName(u'OpenSongButtonLayout') + self.openSongAddButton = QtGui.QPushButton(self.openSongPage) + self.openSongAddButton.setIcon(openIcon) + self.openSongAddButton.setObjectName(u'OpenSongAddButton') + self.openSongButtonLayout.addWidget(self.openSongAddButton) + self.openSongButtonSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.OpenSongButtonLayout.addItem(self.OpenSongButtonSpacer) - self.OpenSongRemoveButton = QtGui.QPushButton(self.OpenSongPage) - self.OpenSongRemoveButton.setIcon(deleteIcon) - self.OpenSongRemoveButton.setObjectName(u'OpenSongRemoveButton') - self.OpenSongButtonLayout.addWidget(self.OpenSongRemoveButton) - self.OpenSongLayout.addLayout(self.OpenSongButtonLayout) - self.FormatStackedWidget.addWidget(self.OpenSongPage) + self.openSongButtonLayout.addItem(self.openSongButtonSpacer) + self.openSongRemoveButton = QtGui.QPushButton(self.openSongPage) + self.openSongRemoveButton.setIcon(deleteIcon) + self.openSongRemoveButton.setObjectName(u'OpenSongRemoveButton') + self.openSongButtonLayout.addWidget(self.openSongRemoveButton) + self.openSongLayout.addLayout(self.openSongButtonLayout) + self.FormatStackedWidget.addWidget(self.openSongPage) + # Words of Worship + self.wordsOfWorshipPage = QtGui.QWidget() + self.wordsOfWorshipPage.setObjectName(u'wordsOfWorshipPage') + self.wordsOfWorshipLayout = QtGui.QVBoxLayout(self.wordsOfWorshipPage) + self.wordsOfWorshipLayout.setSpacing(8) + self.wordsOfWorshipLayout.setMargin(0) + self.wordsOfWorshipLayout.setObjectName(u'wordsOfWorshipLayout') + self.wordsOfWorshipFileListWidget = QtGui.QListWidget(self.wordsOfWorshipPage) + self.wordsOfWorshipFileListWidget.setSelectionMode( + QtGui.QAbstractItemView.ExtendedSelection) + self.wordsOfWorshipFileListWidget.setObjectName(u'wordsOfWorshipFileListWidget') + self.wordsOfWorshipLayout.addWidget(self.wordsOfWorshipFileListWidget) + self.wordsOfWorshipButtonLayout = QtGui.QHBoxLayout() + self.wordsOfWorshipButtonLayout.setSpacing(8) + self.wordsOfWorshipButtonLayout.setObjectName(u'wordsOfWorshipButtonLayout') + self.wordsOfWorshipAddButton = QtGui.QPushButton(self.wordsOfWorshipPage) + self.wordsOfWorshipAddButton.setIcon(openIcon) + self.wordsOfWorshipAddButton.setObjectName(u'wordsOfWorshipAddButton') + self.wordsOfWorshipButtonLayout.addWidget(self.wordsOfWorshipAddButton) + self.wordsOfWorshipButtonSpacer = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.wordsOfWorshipButtonLayout.addItem(self.wordsOfWorshipButtonSpacer) + self.wordsOfWorshipRemoveButton = QtGui.QPushButton(self.wordsOfWorshipPage) + self.wordsOfWorshipRemoveButton.setIcon(deleteIcon) + self.wordsOfWorshipRemoveButton.setObjectName(u'wordsOfWorshipRemoveButton') + self.wordsOfWorshipButtonLayout.addWidget(self.wordsOfWorshipRemoveButton) + self.wordsOfWorshipLayout.addLayout(self.wordsOfWorshipButtonLayout) + self.FormatStackedWidget.addWidget(self.wordsOfWorshipPage) + # CCLI File Import self.CCLIPage = QtGui.QWidget() self.CCLIPage.setObjectName(u'CCLIPage') self.CCLILayout = QtGui.QVBoxLayout(self.CCLIPage) @@ -158,6 +244,8 @@ class Ui_SongImportWizard(object): self.CCLILayout.setMargin(0) self.CCLILayout.setObjectName(u'CCLILayout') self.CCLIFileListWidget = QtGui.QListWidget(self.CCLIPage) + self.CCLIFileListWidget.setSelectionMode( + QtGui.QAbstractItemView.ExtendedSelection) self.CCLIFileListWidget.setObjectName(u'CCLIFileListWidget') self.CCLILayout.addWidget(self.CCLIFileListWidget) self.CCLIButtonLayout = QtGui.QHBoxLayout() @@ -176,31 +264,80 @@ class Ui_SongImportWizard(object): self.CCLIButtonLayout.addWidget(self.CCLIRemoveButton) self.CCLILayout.addLayout(self.CCLIButtonLayout) self.FormatStackedWidget.addWidget(self.CCLIPage) - self.CSVPage = QtGui.QWidget() - self.CSVPage.setObjectName(u'CSVPage') - self.CSVLayout = QtGui.QFormLayout(self.CSVPage) - self.CSVLayout.setMargin(0) - self.CSVLayout.setSpacing(8) - self.CSVLayout.setObjectName(u'CSVLayout') - self.CSVFilenameLabel = QtGui.QLabel(self.CSVPage) - self.CSVFilenameLabel.setObjectName(u'CSVFilenameLabel') - self.CSVLayout.setWidget(0, QtGui.QFormLayout.LabelRole, - self.CSVFilenameLabel) - self.CSVFileLayout = QtGui.QHBoxLayout() - self.CSVFileLayout.setSpacing(8) - self.CSVFileLayout.setObjectName(u'CSVFileLayout') - self.CSVFilenameEdit = QtGui.QLineEdit(self.CSVPage) - self.CSVFilenameEdit.setObjectName(u'CSVFilenameEdit') - self.CSVFileLayout.addWidget(self.CSVFilenameEdit) - self.CSVBrowseButton = QtGui.QToolButton(self.CSVPage) - self.CSVBrowseButton.setIcon(openIcon) - self.CSVBrowseButton.setObjectName(u'CSVBrowseButton') - self.CSVFileLayout.addWidget(self.CSVBrowseButton) - self.CSVLayout.setLayout(0, QtGui.QFormLayout.FieldRole, - self.CSVFileLayout) - self.FormatStackedWidget.addWidget(self.CSVPage) + # Songs of Fellowship + self.songsOfFellowshipPage = QtGui.QWidget() + self.songsOfFellowshipPage.setObjectName(u'songsOfFellowshipPage') + self.songsOfFellowshipLayout = QtGui.QFormLayout(self.songsOfFellowshipPage) + self.songsOfFellowshipLayout.setMargin(0) + self.songsOfFellowshipLayout.setSpacing(8) + self.songsOfFellowshipLayout.setObjectName(u'songsOfFellowshipLayout') + self.songsOfFellowshipFilenameLabel = QtGui.QLabel(self.songsOfFellowshipPage) + self.songsOfFellowshipFilenameLabel.setObjectName(u'songsOfFellowshipFilenameLabel') + self.songsOfFellowshipLayout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.songsOfFellowshipFilenameLabel) + self.songsOfFellowshipFileLayout = QtGui.QHBoxLayout() + self.songsOfFellowshipFileLayout.setSpacing(8) + self.songsOfFellowshipFileLayout.setObjectName(u'songsOfFellowshipFileLayout') + self.songsOfFellowshipFilenameEdit = QtGui.QLineEdit(self.songsOfFellowshipPage) + self.songsOfFellowshipFilenameEdit.setObjectName(u'songsOfFellowshipFilenameEdit') + self.songsOfFellowshipFileLayout.addWidget(self.songsOfFellowshipFilenameEdit) + self.songsOfFellowshipBrowseButton = QtGui.QToolButton(self.songsOfFellowshipPage) + self.songsOfFellowshipBrowseButton.setIcon(openIcon) + self.songsOfFellowshipBrowseButton.setObjectName(u'songsOfFellowshipBrowseButton') + self.songsOfFellowshipFileLayout.addWidget(self.songsOfFellowshipBrowseButton) + self.songsOfFellowshipLayout.setLayout(0, QtGui.QFormLayout.FieldRole, + self.songsOfFellowshipFileLayout) + self.FormatStackedWidget.addWidget(self.songsOfFellowshipPage) + # Generic Document/Presentation Import + self.genericPage = QtGui.QWidget() + self.genericPage.setObjectName(u'genericPage') + self.genericLayout = QtGui.QFormLayout(self.genericPage) + self.genericLayout.setMargin(0) + self.genericLayout.setSpacing(8) + self.genericLayout.setObjectName(u'genericLayout') + self.genericFilenameLabel = QtGui.QLabel(self.genericPage) + self.genericFilenameLabel.setObjectName(u'genericFilenameLabel') + self.genericLayout.setWidget(0, QtGui.QFormLayout.LabelRole, + self.genericFilenameLabel) + self.genericFileLayout = QtGui.QHBoxLayout() + self.genericFileLayout.setSpacing(8) + self.genericFileLayout.setObjectName(u'genericFileLayout') + self.genericFilenameEdit = QtGui.QLineEdit(self.genericPage) + self.genericFilenameEdit.setObjectName(u'genericFilenameEdit') + self.genericFileLayout.addWidget(self.genericFilenameEdit) + self.genericBrowseButton = QtGui.QToolButton(self.genericPage) + self.genericBrowseButton.setIcon(openIcon) + self.genericBrowseButton.setObjectName(u'genericBrowseButton') + self.genericFileLayout.addWidget(self.genericBrowseButton) + self.genericLayout.setLayout(0, QtGui.QFormLayout.FieldRole, + self.genericFileLayout) + self.FormatStackedWidget.addWidget(self.genericPage) +# Commented out for future use. +# self.CSVPage = QtGui.QWidget() +# self.CSVPage.setObjectName(u'CSVPage') +# self.CSVLayout = QtGui.QFormLayout(self.CSVPage) +# self.CSVLayout.setMargin(0) +# self.CSVLayout.setSpacing(8) +# self.CSVLayout.setObjectName(u'CSVLayout') +# self.CSVFilenameLabel = QtGui.QLabel(self.CSVPage) +# self.CSVFilenameLabel.setObjectName(u'CSVFilenameLabel') +# self.CSVLayout.setWidget(0, QtGui.QFormLayout.LabelRole, +# self.CSVFilenameLabel) +# self.CSVFileLayout = QtGui.QHBoxLayout() +# self.CSVFileLayout.setSpacing(8) +# self.CSVFileLayout.setObjectName(u'CSVFileLayout') +# self.CSVFilenameEdit = QtGui.QLineEdit(self.CSVPage) +# self.CSVFilenameEdit.setObjectName(u'CSVFilenameEdit') +# self.CSVFileLayout.addWidget(self.CSVFilenameEdit) +# self.CSVBrowseButton = QtGui.QToolButton(self.CSVPage) +# self.CSVBrowseButton.setIcon(openIcon) +# self.CSVBrowseButton.setObjectName(u'CSVBrowseButton') +# self.CSVFileLayout.addWidget(self.CSVBrowseButton) +# self.CSVLayout.setLayout(0, QtGui.QFormLayout.FieldRole, +# self.CSVFileLayout) +# self.FormatStackedWidget.addWidget(self.CSVPage) self.SourceLayout.addWidget(self.FormatStackedWidget) - SongImportWizard.addPage(self.SourcePage) + songImportWizard.addPage(self.SourcePage) self.ImportPage = QtGui.QWizardPage() self.ImportPage.setObjectName(u'ImportPage') self.ImportLayout = QtGui.QVBoxLayout(self.ImportPage) @@ -215,16 +352,16 @@ class Ui_SongImportWizard(object): self.ImportProgressBar.setInvertedAppearance(False) self.ImportProgressBar.setObjectName(u'ImportProgressBar') self.ImportLayout.addWidget(self.ImportProgressBar) - SongImportWizard.addPage(self.ImportPage) - self.retranslateUi(SongImportWizard) + songImportWizard.addPage(self.ImportPage) + self.retranslateUi(songImportWizard) self.FormatStackedWidget.setCurrentIndex(0) QtCore.QObject.connect(self.FormatComboBox, QtCore.SIGNAL(u'currentIndexChanged(int)'), self.FormatStackedWidget.setCurrentIndex) - QtCore.QMetaObject.connectSlotsByName(SongImportWizard) + QtCore.QMetaObject.connectSlotsByName(songImportWizard) - def retranslateUi(self, SongImportWizard): - SongImportWizard.setWindowTitle( + def retranslateUi(self, songImportWizard): + songImportWizard.setWindowTitle( translate('SongsPlugin.ImportWizardForm', 'Song Import Wizard')) self.TitleLabel.setText( u'%s' % \ @@ -243,29 +380,60 @@ class Ui_SongImportWizard(object): self.FormatLabel.setText( translate('SongsPlugin.ImportWizardForm', 'Format:')) self.FormatComboBox.setItemText(0, - translate('SongsPlugin.ImportWizardForm', 'OpenLyrics')) + translate('SongsPlugin.ImportWizardForm', 'OpenLP 2.0')) self.FormatComboBox.setItemText(1, - translate('SongsPlugin.ImportWizardForm', 'OpenSong')) + translate('SongsPlugin.ImportWizardForm', 'openlp.org 1.x')) self.FormatComboBox.setItemText(2, - translate('SongsPlugin.ImportWizardForm', 'CCLI')) + translate('SongsPlugin.ImportWizardForm', 'OpenLyrics')) self.FormatComboBox.setItemText(3, - translate('SongsPlugin.ImportWizardForm', 'CSV')) - self.OpenLyricsAddButton.setText( + translate('SongsPlugin.ImportWizardForm', 'OpenSong')) + self.FormatComboBox.setItemText(4, + translate('SongsPlugin.ImportWizardForm', 'Words of Worship')) + self.FormatComboBox.setItemText(5, + translate('SongsPlugin.ImportWizardForm', 'CCLI')) + self.FormatComboBox.setItemText(6, + translate('SongsPlugin.ImportWizardForm', 'Songs of Fellowship')) + self.FormatComboBox.setItemText(7, + translate('SongsPlugin.ImportWizardForm', + 'Generic Document/Presentation')) +# self.FormatComboBox.setItemText(8, +# translate('SongsPlugin.ImportWizardForm', 'CSV')) + self.openLP2FilenameLabel.setText( + translate('SongsPlugin.ImportWizardForm', 'Filename:')) + self.openLP2BrowseButton.setText( + translate('SongsPlugin.ImportWizardForm', 'Browse...')) + self.openLP1FilenameLabel.setText( + translate('SongsPlugin.ImportWizardForm', 'Filename:')) + self.openLP1BrowseButton.setText( + translate('SongsPlugin.ImportWizardForm', 'Browse...')) + self.openLyricsAddButton.setText( translate('SongsPlugin.ImportWizardForm', 'Add Files...')) - self.OpenLyricsRemoveButton.setText( + self.openLyricsRemoveButton.setText( translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) - self.OpenSongAddButton.setText( + self.openSongAddButton.setText( translate('SongsPlugin.ImportWizardForm', 'Add Files...')) - self.OpenSongRemoveButton.setText( + self.openSongRemoveButton.setText( + translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) + self.wordsOfWorshipAddButton.setText( + translate('SongsPlugin.ImportWizardForm', 'Add Files...')) + self.wordsOfWorshipRemoveButton.setText( translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) self.CCLIAddButton.setText( translate('SongsPlugin.ImportWizardForm', 'Add Files...')) self.CCLIRemoveButton.setText( translate('SongsPlugin.ImportWizardForm', 'Remove File(s)')) - self.CSVFilenameLabel.setText( + self.songsOfFellowshipFilenameLabel.setText( translate('SongsPlugin.ImportWizardForm', 'Filename:')) - self.CSVBrowseButton.setText( + self.songsOfFellowshipBrowseButton.setText( translate('SongsPlugin.ImportWizardForm', 'Browse...')) + self.genericFilenameLabel.setText( + translate('SongsPlugin.ImportWizardForm', 'Filename:')) + self.genericBrowseButton.setText( + translate('SongsPlugin.ImportWizardForm', 'Browse...')) +# self.CSVFilenameLabel.setText( +# translate('SongsPlugin.ImportWizardForm', 'Filename:')) +# self.CSVBrowseButton.setText( +# translate('SongsPlugin.ImportWizardForm', 'Browse...')) self.ImportPage.setTitle( translate('SongsPlugin.ImportWizardForm', 'Importing')) self.ImportPage.setSubTitle( diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index b8f4d9a05..396650ff2 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -26,7 +26,8 @@ from openlp.core.lib import translate -#from openlp.plugins.songs.lib import OpenLyricsSong, OpenSongSong, CCLISong, \ +from openlp.plugins.songs.lib import OpenLPSongImport, OpenSongImport, \ + OooImport, SofImport # CSVSong class SongFormat(object): @@ -36,10 +37,15 @@ class SongFormat(object): for importing. """ Unknown = -1 - OpenLyrics = 0 - OpenSong = 1 - CCLI = 2 - CSV = 3 + OpenLP2 = 0 + OpenLP1 = 1 + OpenLyrics = 2 + OpenSong = 3 + WordsOfWorship = 4 + CCLI = 5 + SongsOfFellowship = 6 + Generic = 7 + CSV = 8 @staticmethod def get_class(format): @@ -49,14 +55,14 @@ class SongFormat(object): ``format`` The song format. """ -# if format == SongFormat.OpenLyrics: -# return OpenLyricsSong -# elif format == SongFormat.OpenSong: -# return OpenSongSong -# elif format == SongFormat.CCLI: -# return CCLISong -# elif format == SongFormat.CSV: -# return CSVSong + if format == SongFormat.OpenLP2: + return OpenLPSongImport + elif format == SongFormat.OpenSong: + return OpenSongImport + elif format == SongFormat.SongsOfFellowship: + return SofImport + elif format == SongFormat.Generic: + return OooImport # else: return None @@ -66,10 +72,14 @@ class SongFormat(object): Return a list of the supported song formats. """ return [ + SongFormat.OpenLP2, + SongFormat.OpenLP1, SongFormat.OpenLyrics, SongFormat.OpenSong, + SongFormat.WordsOfWorship, SongFormat.CCLI, - SongFormat.CSV + SongFormat.SongsOfFellowship, + SongFormat.Generic ] class VerseType(object):