diff --git a/openlp/plugins/songs/forms/songexportform.py b/openlp/plugins/songs/forms/songexportform.py index 307d91570..a24aec3e2 100644 --- a/openlp/plugins/songs/forms/songexportform.py +++ b/openlp/plugins/songs/forms/songexportform.py @@ -86,102 +86,61 @@ class SongExportForm(OpenLPWizard): """ Song wizard specific signals. """ - QtCore.QObject.connect(self.addButton, - QtCore.SIGNAL(u'clicked()'), self.onAddSelectedClicked) - QtCore.QObject.connect(self.removeButton, - QtCore.SIGNAL(u'clicked()'), self.onRemoveSelectedClicked) - QtCore.QObject.connect(self.availableListWidget, - QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem *)'), - self.onAvailableListItemDoubleClicked) - QtCore.QObject.connect(self.selectedListWidget, - QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem *)'), - self.onSelectedListItemDoubleClicked) QtCore.QObject.connect(self.directoryButton, QtCore.SIGNAL(u'clicked()'), self.onDirectoryButtonClicked) - QtCore.QObject.connect(self.allAvailableButton, - QtCore.SIGNAL(u'clicked()'), self.onAllAvailableButtonClicked) - QtCore.QObject.connect(self.allSelectedButton, - QtCore.SIGNAL(u'clicked()'), self.onAllSelectedButtonClicked) +# QtCore.QObject.connect(self.searchLineEdit, +# QtCore.SIGNAL(u'textEdited(const QString&)'), +# self.onSearchLineEditChanged) def addCustomPages(self): """ Add song wizard specific pages. """ - # Source Page - self.sourcePage = QtGui.QWizardPage() - self.sourcePage.setObjectName(u'sourcePage') - self.horizontalLayout = QtGui.QHBoxLayout(self.sourcePage) - self.horizontalLayout.setObjectName(u'horizontalLayout') - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(u'verticalLayout') + # The page with all available songs. + self.availableSongsPage = QtGui.QWizardPage() + self.availableSongsPage.setObjectName(u'availableSongsPage') + self.availableSongsLayout = QtGui.QHBoxLayout(self.availableSongsPage) + self.availableSongsLayout.setObjectName(u'availableSongsLayout') +# self.gridLayout = QtGui.QGridLayout() +# self.gridLayout.setObjectName(u'gridLayout') + self.availableListWidget = QtGui.QListWidget(self.availableSongsPage) + self.availableListWidget.setObjectName(u'availableListWidget') +# self.gridLayout.addWidget(self.availableListWidget, 0, 0, 1, 1) +# self.searchLineEdit = QtGui.QLineEdit(self.availableSongsPage) +# self.searchLineEdit.setObjectName(u'searchLineEdit') +# self.gridLayout.addWidget(self.searchLineEdit, 1, 0, 1, 1) +# self.availableSongsLayout.addLayout(self.gridLayout) + self.availableSongsLayout.addWidget(self.availableListWidget) + self.addPage(self.availableSongsPage) + + # The page with the selected songs. + self.exportSongPage = QtGui.QWizardPage() + self.exportSongPage.setObjectName(u'availableSongsPage') + self.exportSongLayout = QtGui.QHBoxLayout(self.exportSongPage) + self.exportSongLayout.setObjectName(u'exportSongLayout') self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName(u'gridLayout') - self.selectedListWidget = QtGui.QListWidget(self.sourcePage) + self.selectedListWidget = QtGui.QListWidget(self.exportSongPage) self.selectedListWidget.setObjectName(u'selectedListWidget') - self.selectedListWidget.setSelectionMode( - QtGui.QAbstractItemView.ExtendedSelection) - self.selectedListWidget.setSortingEnabled(True) - self.gridLayout.addWidget(self.selectedListWidget, 1, 2, 1, 1) - self.gridLayout2 = QtGui.QGridLayout() - self.gridLayout2.setObjectName(u'gridLayout2') - self.addButton = QtGui.QToolButton(self.sourcePage) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(u':/exports/export_move_to_list.png'), - QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.addButton.setIcon(icon) - self.addButton.setObjectName(u'addButton') - self.gridLayout2.addWidget(self.addButton, 1, 0, 1, 1) - self.removeButton = QtGui.QToolButton(self.sourcePage) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(u':/exports/export_remove.png'), - QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.removeButton.setIcon(icon) - self.removeButton.setObjectName(u'removeButton') - self.gridLayout2.addWidget(self.removeButton, 2, 0, 1, 1) - spacerItem = QtGui.QSpacerItem(20, 40, - QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout2.addItem(spacerItem, 0, 0, 1, 1) - self.gridLayout2.addItem(spacerItem, 3, 0, 1, 1) - self.gridLayout.addLayout(self.gridLayout2, 1, 1, 1, 1) - self.availableLabel = QtGui.QLabel(self.sourcePage) - self.availableLabel.setObjectName(u'availableLabel') - self.gridLayout.addWidget(self.availableLabel, 0, 0, 1, 1) - self.selectedLabel = QtGui.QLabel(self.sourcePage) - self.selectedLabel.setObjectName(u'selectedLabel') - self.gridLayout.addWidget(self.selectedLabel, 0, 2, 1, 1) - self.availableListWidget = QtGui.QListWidget(self.sourcePage) - self.availableListWidget.setObjectName(u'availableListWidget') - self.availableListWidget.setSelectionMode( - QtGui.QAbstractItemView.ExtendedSelection) - self.availableListWidget.setSortingEnabled(True) - self.gridLayout.addWidget(self.availableListWidget, 1, 0, 1, 1) - # Button to select all songs in the "selectedListWidget". - self.allSelectedButton = QtGui.QToolButton(self.sourcePage) - self.allSelectedButton.setObjectName(u'allSelectedButton') - self.gridLayout.addWidget(self.allSelectedButton, 3, 2, 1, 1) - # Button to select all songs in the "availableListWidget". - self.allAvailableButton = QtGui.QToolButton(self.sourcePage) - self.allAvailableButton.setObjectName(u'allAvailableButton') - self.gridLayout.addWidget(self.allAvailableButton, 3, 0, 1, 1) - self.verticalLayout.addLayout(self.gridLayout) - self.gridLayout3 = QtGui.QGridLayout() - self.gridLayout3.setObjectName(u'gridLayout3') - self.directoryButton = QtGui.QToolButton(self.sourcePage) + self.gridLayout.addWidget(self.selectedListWidget, 1, 0, 1, 1) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(u'horizontalLayout') + self.directoryLabel = QtGui.QLabel(self.exportSongPage) + self.directoryLabel.setObjectName(u'directoryLabel') + self.horizontalLayout.addWidget(self.directoryLabel) + self.directoryLineEdit = QtGui.QLineEdit(self.exportSongPage) + self.directoryLineEdit.setObjectName(u'directoryLineEdit') + self.horizontalLayout.addWidget(self.directoryLineEdit) + self.directoryButton = QtGui.QToolButton(self.exportSongPage) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(u':/exports/export_load.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.directoryButton.setIcon(icon) self.directoryButton.setObjectName(u'directoryButton') - self.gridLayout3.addWidget(self.directoryButton, 0, 2, 1, 1) - self.directoryLineEdit = QtGui.QLineEdit(self.sourcePage) - self.directoryLineEdit.setObjectName(u'directoryLineEdit') - self.gridLayout3.addWidget(self.directoryLineEdit, 0, 1, 1, 1) - self.directoryLabel = QtGui.QLabel(self.sourcePage) - self.directoryLabel.setObjectName(u'directoryLabel') - self.gridLayout3.addWidget(self.directoryLabel, 0, 0, 1, 1) - self.verticalLayout.addLayout(self.gridLayout3) - self.horizontalLayout.addLayout(self.verticalLayout) - self.addPage(self.sourcePage) + self.horizontalLayout.addWidget(self.directoryButton) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.exportSongLayout.addLayout(self.gridLayout) + self.addPage(self.exportSongPage) def retranslateUi(self): """ @@ -197,12 +156,18 @@ class SongExportForm(OpenLPWizard): translate('SongsPlugin.ExportWizardForm', 'This wizard will help to ' 'export your songs to the open and free OpenLyrics worship song ' 'format.')) - self.sourcePage.setTitle( + self.availableSongsPage.setTitle( translate('SongsPlugin.ExportWizardForm', 'Select Songs')) - self.sourcePage.setSubTitle( + self.availableSongsPage.setSubTitle( translate('SongsPlugin.ExportWizardForm', - 'Add the songs, you want to export to the list on the right hand ' - 'side. You can use the buttons below or double click them.')) + 'Check the songs, you want to export.')) + self.exportSongPage.setTitle( + translate('SongsPlugin.ExportWizardForm', 'Select Directory')) + self.exportSongPage.setSubTitle( + translate('SongsPlugin.ExportWizardForm', + 'Select the directory you want the songs to be saved.')) + self.directoryLabel.setText( + translate('SongsPlugin.ExportWizardForm', 'Directory:')) self.progressPage.setTitle( translate('SongsPlugin.ExportWizardForm', 'Exporting')) self.progressPage.setSubTitle( @@ -212,16 +177,6 @@ class SongExportForm(OpenLPWizard): translate('SongsPlugin.ExportWizardForm', 'Ready.')) self.progressBar.setFormat( translate('SongsPlugin.ExportWizardForm', '%p%')) - self.directoryLabel.setText(translate('SongsPlugin.ExportWizardForm', - 'Directory:')) - self.availableLabel.setText( - translate('SongsPlugin.ExportWizardForm', 'Available Songs')) - self.selectedLabel.setText( - translate('SongsPlugin.ExportWizardForm', 'Selected Songs')) - self.allSelectedButton.setText( - translate('SongsPlugin.ExportWizardForm', 'Select all')) - self.allAvailableButton.setText( - translate('SongsPlugin.ExportWizardForm', 'Select all')) def validateCurrentPage(self): """ @@ -229,15 +184,28 @@ class SongExportForm(OpenLPWizard): """ if self.currentPage() == self.welcomePage: return True - elif self.currentPage() == self.sourcePage: - if not self.selectedListWidget.count(): + elif self.currentPage() == self.availableSongsPage: + songs = [song for song in self.availableListWidget.findItems( + QtCore.QString(u''), QtCore.Qt.MatchContains) + if song.checkState() == QtCore.Qt.Checked] + if not songs: critical_error_message_box( translate('SongsPlugin.ExportWizardForm', 'No Song Selected'), translate('SongsPlugin.ExportWizardForm', 'You need to add at least one Song to export.')) return False - elif not self.directoryLineEdit.text(): + self.selectedListWidget.clear() + # Add the songs to the list of selectd songs. + for song in songs: + title = song.text() + new_song = QtGui.QListWidgetItem(title) + new_song.setData(QtCore.Qt.UserRole, QtCore.QVariant(song)) + new_song.setFlags(QtCore.Qt.ItemIsEnabled) + self.selectedListWidget.addItem(new_song) + return True + elif self.currentPage() == self.exportSongPage: + if not self.directoryLineEdit.text(): critical_error_message_box( translate('SongsPlugin.ExportWizardForm', 'No Save Location specified'), @@ -272,11 +240,13 @@ class SongExportForm(OpenLPWizard): for song in songs: authors = u', '.join([author.display_name for author in song.authors]) - song_detail = u'%s (%s)' % (unicode(song.title), authors) - song_name = QtGui.QListWidgetItem(song_detail) - song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song)) - self.availableListWidget.addItem(song_name) - self.availableListWidget.selectAll() + title = u'%s (%s)' % (unicode(song.title), authors) + song = QtGui.QListWidgetItem(title) + song.setData(QtCore.Qt.UserRole, QtCore.QVariant(song)) + song.setFlags(QtCore.Qt.ItemIsSelectable| + QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) + song.setCheckState(QtCore.Qt.Checked) + self.availableListWidget.addItem(song) Receiver.send_message(u'cursor_normal') def preWizard(self): @@ -293,9 +263,9 @@ class SongExportForm(OpenLPWizard): Perform the actual export. This creates an *openlyricsexport* instance and calls the *do_export* method. """ - self.selectedListWidget.selectAll() - songs = [item.data(QtCore.Qt.UserRole).toPyObject() - for item in self.selectedListWidget.selectedItems()] + songs = [song.data(QtCore.Qt.UserRole).toPyObject() + for song in self.selectedListWidget.findItems( + QtCore.QString(u''), QtCore.Qt.MatchContains)] exporter = OpenLyricsExport( self, songs, unicode(self.directoryLineEdit.text())) if exporter.do_export(): @@ -306,59 +276,8 @@ class SongExportForm(OpenLPWizard): translate('SongsPlugin.SongExportForm', 'Your song export failed.')) - def onAddSelectedClicked(self): - """ - Removes the selected items from the list of available songs and add them - to the list of selected songs. - """ - items = self.availableListWidget.selectedItems() - # Save a list with tuples which consist of the item row, and the item. - items = [(self.availableListWidget.row(item), item) for item in items] - items.sort(reverse=True) - for item in items: - self.availableListWidget.takeItem(item[0]) - self.selectedListWidget.addItem(item[1]) - - def onRemoveSelectedClicked(self): - """ - Removes the selected items from the list of selected songs and add them - back to the list of available songs. - """ - items = self.selectedListWidget.selectedItems() - # Save a list with tuples which consist of the item row, and the item. - items = [(self.selectedListWidget.row(item), item) for item in items] - items.sort(reverse=True) - for item in items: - self.selectedListWidget.takeItem(item[0]) - self.availableListWidget.addItem(item[1]) - - def onAvailableListItemDoubleClicked(self, item): - """ - Adds the double clicked item to the list of selected songs and removes - it from the list of availables songs. - - ``item`` - The *QListWidgetItem* which was double clicked. - """ - self.availableListWidget.takeItem(self.availableListWidget.row(item)) - self.selectedListWidget.addItem(item) - - def onSelectedListItemDoubleClicked(self, item): - """ - Adds the double clicked item back to the list of available songs and - removes it from the list of selected songs. - - ``ìtem`` - The *QListWidgetItem* which was double clicked. - """ - self.selectedListWidget.takeItem(self.selectedListWidget.row(item)) - self.availableListWidget.addItem(item) - - def onAllAvailableButtonClicked(self): - """ - Selects all songs in the *availableListWidget*. - """ - self.availableListWidget.selectAll() +# def onSearchLineEditChanged(self, text): +# pass def onDirectoryButtonClicked(self): """ @@ -371,9 +290,3 @@ class SongExportForm(OpenLPWizard): options=QtGui.QFileDialog.ShowDirsOnly)) SettingsManager.set_last_dir(self.plugin.settingsSection, path, 1) self.directoryLineEdit.setText(path) - - def onAllSelectedButtonClicked(self): - """ - Selects all songs in the *selectedListWidget*. - """ - self.selectedListWidget.selectAll() diff --git a/resources/forms/songexportform.ui b/resources/forms/songexportform.ui deleted file mode 100644 index ad3ada947..000000000 --- a/resources/forms/songexportform.ui +++ /dev/null @@ -1,148 +0,0 @@ - - - WizardPage - - - - 0 - 0 - 576 - 334 - - - - WizardPage - - - - - - - - - - - - - - - ... - - - - :/exports/export_move_to_list.png:/exports/export_move_to_list.png - - - - - - - ... - - - - :/exports/export_remove.png:/exports/export_remove.png - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Available Songs - - - - - - - Selected Songs - - - - - - - - - - - 0 - 0 - - - - Select all - - - - - - - Select all - - - - - - - - - - - ... - - - - :/exports/export_load.png:/exports/export_load.png - - - - - - - - - - Directory: - - - - - - - - - - - - - - diff --git a/resources/images/export_move_to_list.png b/resources/images/export_move_to_list.png deleted file mode 100644 index 5c0005856..000000000 Binary files a/resources/images/export_move_to_list.png and /dev/null differ diff --git a/resources/images/export_remove.png b/resources/images/export_remove.png deleted file mode 100644 index ef8e685e2..000000000 Binary files a/resources/images/export_remove.png and /dev/null differ diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 3d953995e..f647eb39d 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -78,9 +78,7 @@ import_load.png - export_remove.png export_load.png - export_move_to_list.png wizard_exportsong.bmp