From d4d6a88c6f76c773251fa9274fb3307bb92589f1 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 24 Jul 2009 22:40:34 +0200 Subject: [PATCH] Lots of yummy updates to the song maintenance form. --- openlp/plugins/songs/forms/authorsdialog.py | 128 +++------- openlp/plugins/songs/forms/authorsform.py | 223 +++++++++-------- openlp/plugins/songs/forms/maintenanceform.py | 133 ----------- openlp/plugins/songs/forms/songbookdialog.py | 115 +++------ openlp/plugins/songs/forms/songbookform.py | 97 +------- .../songs/forms/songmaintenancedialog.py | 28 +-- .../songs/forms/songmaintenanceform.py | 224 ++++++++++------- openlp/plugins/songs/forms/topicsdialog.py | 81 ++----- openlp/plugins/songs/forms/topicsform.py | 102 +------- openlp/plugins/songs/lib/classes.py | 3 +- openlp/plugins/songs/lib/manager.py | 4 +- openlp/plugins/songs/lib/mediaitem.py | 8 +- openlp/plugins/songs/lib/models.py | 4 +- openlp/plugins/songs/lib/tables.py | 2 +- resources/forms/authorsdialog.ui | 225 ++++-------------- resources/forms/songbookdialog.ui | 213 ++++------------- resources/forms/topicsdialog.ui | 164 +++---------- 17 files changed, 495 insertions(+), 1259 deletions(-) delete mode 100644 openlp/plugins/songs/forms/maintenanceform.py diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index 44fe4c478..d56eaa663 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -22,100 +22,44 @@ from openlp.core.lib import translate class Ui_AuthorsDialog(object): def setupUi(self, AuthorsDialog): - AuthorsDialog.setObjectName(u'AuthorsDialog') - AuthorsDialog.resize(410, 505) - self.DialogLayout = QtGui.QVBoxLayout(AuthorsDialog) - self.DialogLayout.setSpacing(8) - self.DialogLayout.setMargin(8) - self.DialogLayout.setObjectName(u'DialogLayout') - self.AuthorListWidget = QtGui.QListWidget() - self.AuthorListWidget.setAlternatingRowColors(True) - self.DialogLayout.addWidget(self.AuthorListWidget) - self.AuthorDetails = QtGui.QGroupBox(AuthorsDialog) - self.AuthorDetails.setMinimumSize(QtCore.QSize(0, 0)) - self.AuthorDetails.setObjectName(u'AuthorDetails') - self.AuthorLayout = QtGui.QVBoxLayout(self.AuthorDetails) - self.AuthorLayout.setSpacing(8) - self.AuthorLayout.setMargin(8) - self.AuthorLayout.setObjectName(u'AuthorLayout') - self.DetailsWidget = QtGui.QWidget(self.AuthorDetails) - self.DetailsWidget.setObjectName(u'DetailsWidget') - self.DetailsLayout = QtGui.QFormLayout(self.DetailsWidget) - self.DetailsLayout.setMargin(0) - self.DetailsLayout.setSpacing(8) - self.DetailsLayout.setObjectName(u'DetailsLayout') - self.DisplayLabel = QtGui.QLabel(self.DetailsWidget) - self.DisplayLabel.setObjectName(u'DisplayLabel') - self.DetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.DisplayLabel) - self.DisplayEdit = QtGui.QLineEdit(self.DetailsWidget) - self.DisplayEdit.setObjectName(u'DisplayEdit') - self.DetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.DisplayEdit) - self.FirstNameLabel = QtGui.QLabel(self.DetailsWidget) - self.FirstNameLabel.setObjectName(u'FirstNameLabel') - self.DetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FirstNameLabel) - self.FirstNameEdit = QtGui.QLineEdit(self.DetailsWidget) - self.FirstNameEdit.setObjectName(u'FirstNameEdit') - self.DetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FirstNameEdit) - self.LastNameLabel = QtGui.QLabel(self.DetailsWidget) - self.LastNameLabel.setObjectName(u'LastNameLabel') - self.DetailsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.LastNameLabel) - self.LastNameEdit = QtGui.QLineEdit(self.DetailsWidget) - self.LastNameEdit.setObjectName(u'LastNameEdit') - self.DetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.LastNameEdit) - self.AuthorLayout.addWidget(self.DetailsWidget) - self.MessageLabel = QtGui.QLabel(self.AuthorDetails) - self.MessageLabel.setObjectName(u'MessageLabel') - self.AuthorLayout.addWidget(self.MessageLabel) - self.ButtonWidget = QtGui.QWidget(self.AuthorDetails) - self.ButtonWidget.setMinimumSize(QtCore.QSize(0, 0)) - self.ButtonWidget.setObjectName(u'ButtonWidget') - self.ButtonLayout = QtGui.QHBoxLayout(self.ButtonWidget) - self.ButtonLayout.setSpacing(8) - self.ButtonLayout.setMargin(0) - self.ButtonLayout.setObjectName(u'ButtonLayout') - spacerItem = QtGui.QSpacerItem(198, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.ButtonLayout.addItem(spacerItem) - self.ClearButton = QtGui.QPushButton(self.ButtonWidget) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.ClearButton.setIcon(icon) - self.ClearButton.setObjectName(u'ClearButton') - self.ButtonLayout.addWidget(self.ClearButton) - self.AddUpdateButton = QtGui.QPushButton(self.ButtonWidget) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AddUpdateButton.setIcon(icon1) - self.AddUpdateButton.setObjectName(u'AddUpdateButton') - self.ButtonLayout.addWidget(self.AddUpdateButton) - self.DeleteButton = QtGui.QPushButton(self.ButtonWidget) - icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.DeleteButton.setIcon(icon2) - self.DeleteButton.setObjectName(u'DeleteButton') - self.ButtonLayout.addWidget(self.DeleteButton) - self.AuthorLayout.addWidget(self.ButtonWidget) - self.DialogLayout.addWidget(self.AuthorDetails) - self.buttonBox = QtGui.QDialogButtonBox(AuthorsDialog) - self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok) - self.buttonBox.setObjectName(u'buttonBox') - self.DialogLayout.addWidget(self.buttonBox) + AuthorsDialog.setObjectName("AuthorsDialog") + AuthorsDialog.resize(393, 147) + self.AuthorsLayout = QtGui.QFormLayout(AuthorsDialog) + self.AuthorsLayout.setMargin(8) + self.AuthorsLayout.setSpacing(8) + self.AuthorsLayout.setObjectName("AuthorsLayout") + self.FirstNameLabel = QtGui.QLabel(AuthorsDialog) + self.FirstNameLabel.setObjectName("FirstNameLabel") + self.AuthorsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.FirstNameLabel) + self.FirstNameEdit = QtGui.QLineEdit(AuthorsDialog) + self.FirstNameEdit.setObjectName("FirstNameEdit") + self.AuthorsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.FirstNameEdit) + self.LastNameLabel = QtGui.QLabel(AuthorsDialog) + self.LastNameLabel.setObjectName("LastNameLabel") + self.AuthorsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.LastNameLabel) + self.LastNameEdit = QtGui.QLineEdit(AuthorsDialog) + self.LastNameEdit.setObjectName("LastNameEdit") + self.AuthorsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.LastNameEdit) + self.DisplayLabel = QtGui.QLabel(AuthorsDialog) + self.DisplayLabel.setObjectName("DisplayLabel") + self.AuthorsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.DisplayLabel) + self.DisplayEdit = QtGui.QLineEdit(AuthorsDialog) + self.DisplayEdit.setObjectName("DisplayEdit") + self.AuthorsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.DisplayEdit) + self.AuthorButtonBox = QtGui.QDialogButtonBox(AuthorsDialog) + self.AuthorButtonBox.setOrientation(QtCore.Qt.Horizontal) + self.AuthorButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.AuthorButtonBox.setObjectName("AuthorButtonBox") + self.AuthorsLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.AuthorButtonBox) self.retranslateUi(AuthorsDialog) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), AuthorsDialog.accept) - QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), AuthorsDialog.reject) + QtCore.QObject.connect(self.AuthorButtonBox, QtCore.SIGNAL("accepted()"), AuthorsDialog.accept) + QtCore.QObject.connect(self.AuthorButtonBox, QtCore.SIGNAL("rejected()"), AuthorsDialog.reject) QtCore.QMetaObject.connectSlotsByName(AuthorsDialog) def retranslateUi(self, AuthorsDialog): - AuthorsDialog.setWindowTitle(translate(u'AuthorsDialog', u'Author Maintenance')) - self.AuthorDetails.setTitle(translate(u'AuthorsDialog', u'Author Details')) - self.DisplayLabel.setText(translate(u'AuthorsDialog', u'Display Name:')) - self.FirstNameLabel.setText(translate(u'AuthorsDialog', u'First Name:')) - self.LastNameLabel.setText(translate(u'AuthorsDialog', u'Last Name:')) - self.ClearButton.setToolTip(translate(u'AuthorsDialog', u'Clear Selection')) - self.ClearButton.setText(translate(u'AuthorsDialog', u'Clear')) - self.AddUpdateButton.setToolTip(translate(u'AuthorsDialog', u'Add Update Author')) - self.AddUpdateButton.setText(translate(u'AuthorsDialog', u'Save')) - self.DeleteButton.setToolTip(translate(u'AuthorsDialog', u'Delete Author')) - self.DeleteButton.setText(translate(u'AuthorsDialog', u'Delete')) - self.buttonBox.setToolTip(translate(u'AuthorsDialog', u'Exit Screen')) + AuthorsDialog.setWindowTitle(QtGui.QApplication.translate("AuthorsDialog", "Author Maintenance", None, QtGui.QApplication.UnicodeUTF8)) + self.DisplayLabel.setText(QtGui.QApplication.translate("AuthorsDialog", "Display Name:", None, QtGui.QApplication.UnicodeUTF8)) + self.FirstNameLabel.setText(QtGui.QApplication.translate("AuthorsDialog", "First Name:", None, QtGui.QApplication.UnicodeUTF8)) + self.AuthorButtonBox.setToolTip(QtGui.QApplication.translate("AuthorsDialog", "Exit Screen", None, QtGui.QApplication.UnicodeUTF8)) + self.LastNameLabel.setText(QtGui.QApplication.translate("AuthorsDialog", "Last Name:", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index 256ac2002..94acb27ec 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -18,121 +18,142 @@ Place, Suite 330, Boston, MA 02111-1307 USA """ from PyQt4 import QtGui, QtCore from openlp.core.lib import translate -from openlp.plugins.songs.forms.authorsdialog import Ui_AuthorsDialog -from openlp.plugins.songs.lib.classes import Author +from authorsdialog import Ui_AuthorsDialog class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog): """ Class to control the Maintenance of Authors Dialog """ - def __init__(self, songmanager, parent = None): + def __init__(self, parent=None): """ Set up the screen and common data """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - self.songmanager = songmanager - self.currentRow = 0 - self.author = None + self.autoDisplayName = False + QtCore.QObject.connect(self.FirstNameEdit, + QtCore.SIGNAL(u'textEdited(QString)'), self.onFirstNameEditTextEdited) + QtCore.QObject.connect(self.LastNameEdit, + QtCore.SIGNAL(u'textEdited(QString)'), self.onLastNameEditTextEdited) - QtCore.QObject.connect(self.DeleteButton, - QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick) - QtCore.QObject.connect(self.ClearButton, - QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick) - QtCore.QObject.connect(self.AddUpdateButton, - QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick) - QtCore.QObject.connect(self.DisplayEdit, - QtCore.SIGNAL(u'lostFocus()'), self.onDisplayEditLostFocus) - QtCore.QObject.connect(self.AuthorListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onAuthorListWidgetItemClicked) + def exec_(self, clear=True): + if clear: + self.FirstNameEdit.clear() + self.LastNameEdit.clear() + self.DisplayEdit.clear() + self.FirstNameEdit.setFocus() + return QtGui.QDialog.exec_(self) - def load_form(self): - """ - Refresh the screen and rest fields - """ - self.AuthorListWidget.clear() - # tidy up screen - self.onClearButtonClick() - authors = self.songmanager.get_authors() - for author in authors: - author_name = QtGui.QListWidgetItem(author.display_name) - author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id)) - self.AuthorListWidget.addItem(author_name) - if self.currentRow >= self.AuthorListWidget.count() : - self.AuthorListWidget.setCurrentRow(self.AuthorListWidget.count() - 1) - else: - self.AuthorListWidget.setCurrentRow(self.currentRow) - self._validate_form() + def onFirstNameEditTextEdited(self, text): + if not self.autoDisplayName: + return + display_name = text + if self.LastNameEdit.text() != u'': + display_name = display_name + u' ' + self.LastNameEdit.text() + self.DisplayEdit.setText(display_name) - def onDeleteButtonClick(self): - """ - Delete the author is the Author is not attached to any songs - """ - self.songmanager.delete_author(self.author.id) - self.load_form() + def onLastNameEditTextEdited(self, text): + if not self.autoDisplayName: + return + display_name = text + if self.FirstNameEdit.text() != u'': + display_name = self.FirstNameEdit.text() + u' ' + display_name + self.DisplayEdit.setText(display_name) - def onDisplayEditLostFocus(self): - self._validate_form() + def autoDisplayName(self): + return self.autoDisplayName - def onAddUpdateButtonClick(self): - """ - Sent New or update details to the database - """ - if self.author == None: - self.author = Author() - self.author.display_name = unicode(self.DisplayEdit.displayText()) - self.author.first_name = unicode(self.FirstNameEdit.displayText()) - self.author.last_name = unicode(self.LastNameEdit.displayText()) - self.songmanager.save_author(self.author) - self.onClearButtonClick() - self.load_form() + def setAutoDisplayName(self, on): + self.autoDisplayName = on - def onClearButtonClick(self): - """ - Tidy up screen if clear button pressed - """ - self.DisplayEdit.setText(u'') - self.FirstNameEdit.setText(u'') - self.LastNameEdit.setText(u'') - self.MessageLabel.setText(u'') - self.DeleteButton.setEnabled(False) - self.author = None - self._validate_form() - self.DisplayEdit.setFocus() - def onAuthorListWidgetItemClicked(self, index): - """ - An Author has been selected display it - If the author is attached to a Song prevent delete - """ - self.currentRow = self.AuthorListWidget.currentRow() - item = self.AuthorListWidget.currentItem() - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.author = self.songmanager.get_author(item_id) - self.DisplayEdit.setText(self.author.display_name) - if self.author.first_name is None: - self.FirstNameEdit.setText(u'') - else: - self.FirstNameEdit.setText(self.author.first_name) - if self.author.last_name is None: - self.LastNameEdit.setText(u'') - else: - self.LastNameEdit.setText(self.author.last_name) - if len(self.author.songs) > 0: - self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled')) - self.DeleteButton.setEnabled(False) - else: - self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used')) - self.DeleteButton.setEnabled(True) - self._validate_form() - self.DisplayEdit.setFocus() - - def _validate_form(self): - """ - Validate the form and set if Add button if valid. - """ - # We need at lease a display name - if len(self.DisplayEdit.displayText()) == 0: - self.AddUpdateButton.setEnabled(False) - else: - self.AddUpdateButton.setEnabled(True) +# def load_form(self): +# """ +# Refresh the screen and rest fields +# """ +# self.AuthorListWidget.clear() +# # tidy up screen +# self.onClearButtonClick() +# authors = self.songmanager.get_authors() +# for author in authors: +# author_name = QtGui.QListWidgetItem(author.display_name) +# author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id)) +# self.AuthorListWidget.addItem(author_name) +# if self.currentRow >= self.AuthorListWidget.count() : +# self.AuthorListWidget.setCurrentRow(self.AuthorListWidget.count() - 1) +# else: +# self.AuthorListWidget.setCurrentRow(self.currentRow) +# self._validate_form() +# +# def onDeleteButtonClick(self): +# """ +# Delete the author is the Author is not attached to any songs +# """ +# self.songmanager.delete_author(self.author.id) +# self.load_form() +# +# def onDisplayEditLostFocus(self): +# self._validate_form() +# +# def onAddUpdateButtonClick(self): +# """ +# Sent New or update details to the database +# """ +# if self.author == None: +# self.author = Author() +# self.author.display_name = unicode(self.DisplayEdit.displayText()) +# self.author.first_name = unicode(self.FirstNameEdit.displayText()) +# self.author.last_name = unicode(self.LastNameEdit.displayText()) +# self.songmanager.save_author(self.author) +# self.onClearButtonClick() +# self.load_form() +# +# def onClearButtonClick(self): +# """ +# Tidy up screen if clear button pressed +# """ +# self.DisplayEdit.setText(u'') +# self.FirstNameEdit.setText(u'') +# self.LastNameEdit.setText(u'') +# self.MessageLabel.setText(u'') +# self.DeleteButton.setEnabled(False) +# self.author = None +# self._validate_form() +# self.DisplayEdit.setFocus() +# +# def onAuthorListWidgetItemClicked(self, index): +# """ +# An Author has been selected display it +# If the author is attached to a Song prevent delete +# """ +# self.currentRow = self.AuthorListWidget.currentRow() +# item = self.AuthorListWidget.currentItem() +# item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] +# self.author = self.songmanager.get_author(item_id) +# self.DisplayEdit.setText(self.author.display_name) +# if self.author.first_name is None: +# self.FirstNameEdit.setText(u'') +# else: +# self.FirstNameEdit.setText(self.author.first_name) +# if self.author.last_name is None: +# self.LastNameEdit.setText(u'') +# else: +# self.LastNameEdit.setText(self.author.last_name) +# if len(self.author.songs) > 0: +# self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled')) +# self.DeleteButton.setEnabled(False) +# else: +# self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used')) +# self.DeleteButton.setEnabled(True) +# self._validate_form() +# self.DisplayEdit.setFocus() +# +# def _validate_form(self): +# """ +# Validate the form and set if Add button if valid. +# """ +# # We need at lease a display name +# if len(self.DisplayEdit.displayText()) == 0: +# self.AddUpdateButton.setEnabled(False) +# else: +# self.AddUpdateButton.setEnabled(True) diff --git a/openlp/plugins/songs/forms/maintenanceform.py b/openlp/plugins/songs/forms/maintenanceform.py deleted file mode 100644 index efd826d63..000000000 --- a/openlp/plugins/songs/forms/maintenanceform.py +++ /dev/null @@ -1,133 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file '/home/raoul/Projects/openlp/songmaintenance/resources/forms/songmaintenance.ui' -# -# Created: Wed Jul 22 10:03:53 2009 -# by: PyQt4 UI code generator 4.4.4 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -class Ui_SongMaintenanceDialog(object): - def setupUi(self, SongMaintenanceDialog): - SongMaintenanceDialog.setObjectName("SongMaintenanceDialog") - SongMaintenanceDialog.resize(486, 361) - self.verticalLayout = QtGui.QVBoxLayout(SongMaintenanceDialog) - self.verticalLayout.setSpacing(8) - self.verticalLayout.setMargin(8) - self.verticalLayout.setObjectName("verticalLayout") - self.ContentWidget = QtGui.QWidget(SongMaintenanceDialog) - self.ContentWidget.setObjectName("ContentWidget") - self.horizontalLayout = QtGui.QHBoxLayout(self.ContentWidget) - self.horizontalLayout.setSpacing(8) - self.horizontalLayout.setMargin(0) - self.horizontalLayout.setObjectName("horizontalLayout") - self.TypeListWidget = QtGui.QListWidget(self.ContentWidget) - self.TypeListWidget.setMaximumSize(QtCore.QSize(150, 16777215)) - self.TypeListWidget.setProperty("showDropIndicator", QtCore.QVariant(False)) - self.TypeListWidget.setIconSize(QtCore.QSize(32, 32)) - self.TypeListWidget.setFlow(QtGui.QListView.TopToBottom) - self.TypeListWidget.setSpacing(0) - self.TypeListWidget.setViewMode(QtGui.QListView.IconMode) - self.TypeListWidget.setUniformItemSizes(True) - self.TypeListWidget.setObjectName("TypeListWidget") - #self.TypeListWidget.setColumnWidth(0, self.TypeListWidget.viewport().size().width()) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(":/songs/author_maintenance.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - item = QtGui.QListWidgetItem(self.TypeListWidget) - item.setIcon(icon) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(":/songs/topic_maintenance.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - item = QtGui.QListWidgetItem(self.TypeListWidget) - item.setIcon(icon1) - icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(":/songs/book_maintenance.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - item = QtGui.QListWidgetItem(self.TypeListWidget) - item.setIcon(icon2) - self.horizontalLayout.addWidget(self.TypeListWidget) - self.TypeStackedWidget = QtGui.QStackedWidget(self.ContentWidget) - self.TypeStackedWidget.setObjectName("TypeStackedWidget") - self.AuthorsPage = QtGui.QWidget() - self.AuthorsPage.setObjectName("AuthorsPage") - self.verticalLayout_2 = QtGui.QVBoxLayout(self.AuthorsPage) - self.verticalLayout_2.setSpacing(8) - self.verticalLayout_2.setMargin(0) - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.AuthorsListWidget = QtGui.QListWidget(self.AuthorsPage) - self.AuthorsListWidget.setObjectName("AuthorsListWidget") - self.verticalLayout_2.addWidget(self.AuthorsListWidget) - self.AuthorWidget = QtGui.QWidget(self.AuthorsPage) - self.AuthorWidget.setObjectName("AuthorWidget") - self.horizontalLayout_2 = QtGui.QHBoxLayout(self.AuthorWidget) - self.horizontalLayout_2.setSpacing(8) - self.horizontalLayout_2.setMargin(0) - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_2.addItem(spacerItem) - self.AuthorAddButton = QtGui.QPushButton(self.AuthorWidget) - icon3 = QtGui.QIcon() - icon3.addPixmap(QtGui.QPixmap(":/songs/song_author_edit.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AuthorAddButton.setIcon(icon3) - self.AuthorAddButton.setObjectName("AuthorAddButton") - self.horizontalLayout_2.addWidget(self.AuthorAddButton) - self.AuthorEditButton = QtGui.QPushButton(self.AuthorWidget) - icon4 = QtGui.QIcon() - icon4.addPixmap(QtGui.QPixmap(":/songs/song_edit.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AuthorEditButton.setIcon(icon4) - self.AuthorEditButton.setObjectName("AuthorEditButton") - self.horizontalLayout_2.addWidget(self.AuthorEditButton) - self.AuthorDeleteButton = QtGui.QPushButton(self.AuthorWidget) - icon5 = QtGui.QIcon() - icon5.addPixmap(QtGui.QPixmap(":/songs/song_delete.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AuthorDeleteButton.setIcon(icon5) - self.AuthorDeleteButton.setObjectName("AuthorDeleteButton") - self.horizontalLayout_2.addWidget(self.AuthorDeleteButton) - self.verticalLayout_2.addWidget(self.AuthorWidget) - self.TypeStackedWidget.addWidget(self.AuthorsPage) - self.TopicsPage = QtGui.QWidget() - self.TopicsPage.setObjectName("TopicsPage") - self.TypeStackedWidget.addWidget(self.TopicsPage) - self.BooksPage = QtGui.QWidget() - self.BooksPage.setObjectName("BooksPage") - self.listWidget = QtGui.QListWidget(self.BooksPage) - self.listWidget.setGeometry(QtCore.QRect(30, 20, 256, 192)) - self.listWidget.setObjectName("listWidget") - self.TypeStackedWidget.addWidget(self.BooksPage) - self.horizontalLayout.addWidget(self.TypeStackedWidget) - self.verticalLayout.addWidget(self.ContentWidget) - self.MaintenanceButtonBox = QtGui.QDialogButtonBox(SongMaintenanceDialog) - self.MaintenanceButtonBox.setOrientation(QtCore.Qt.Horizontal) - self.MaintenanceButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Close) - self.MaintenanceButtonBox.setObjectName("MaintenanceButtonBox") - self.verticalLayout.addWidget(self.MaintenanceButtonBox) - - self.retranslateUi(SongMaintenanceDialog) - self.TypeStackedWidget.setCurrentIndex(0) - QtCore.QObject.connect(self.MaintenanceButtonBox, QtCore.SIGNAL("rejected()"), SongMaintenanceDialog.accept) - QtCore.QObject.connect(self.TypeListWidget, QtCore.SIGNAL("currentRowChanged(int)"), self.TypeStackedWidget.setCurrentIndex) - QtCore.QMetaObject.connectSlotsByName(SongMaintenanceDialog) - - def retranslateUi(self, SongMaintenanceDialog): - SongMaintenanceDialog.setWindowTitle(QtGui.QApplication.translate("SongMaintenanceDialog", "Song Maintenance", None, QtGui.QApplication.UnicodeUTF8)) - __sortingEnabled = self.TypeListWidget.isSortingEnabled() - self.TypeListWidget.setSortingEnabled(False) - self.TypeListWidget.item(0).setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Authors", None, QtGui.QApplication.UnicodeUTF8)) - self.TypeListWidget.item(1).setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Topics", None, QtGui.QApplication.UnicodeUTF8)) - self.TypeListWidget.item(2).setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Books/Hymnals", None, QtGui.QApplication.UnicodeUTF8)) - self.TypeListWidget.setSortingEnabled(__sortingEnabled) - self.AuthorAddButton.setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Add", None, QtGui.QApplication.UnicodeUTF8)) - self.AuthorEditButton.setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Edit", None, QtGui.QApplication.UnicodeUTF8)) - self.AuthorDeleteButton.setText(QtGui.QApplication.translate("SongMaintenanceDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8)) - -from openlp.core.resources import * - -if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - SongMaintenanceDialog = QtGui.QDialog() - ui = Ui_SongMaintenanceDialog() - ui.setupUi(SongMaintenanceDialog) - SongMaintenanceDialog.show() - sys.exit(app.exec_()) - diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 90e9989cc..fdeccb06d 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -22,98 +22,37 @@ from openlp.core.lib import translate class Ui_SongBookDialog(object): def setupUi(self, SongBookDialog): - SongBookDialog.setObjectName(u'SongBookDialog') - SongBookDialog.resize(387, 531) - self.DialogLayout = QtGui.QVBoxLayout(SongBookDialog) - self.DialogLayout.setSpacing(8) - self.DialogLayout.setMargin(8) - self.DialogLayout.setObjectName(u'DialogLayout') - self.BookSongListWidget = QtGui.QListWidget() - self.BookSongListWidget.setAlternatingRowColors(True) - self.DialogLayout.addWidget(self.BookSongListWidget) - self.DialogLayout.addWidget(self.BookSongListWidget) - self.SongBookGroup = QtGui.QGroupBox(SongBookDialog) - self.SongBookGroup.setMinimumSize(QtCore.QSize(0, 200)) - self.SongBookGroup.setObjectName(u'SongBookGroup') - self.SongBookLayout = QtGui.QVBoxLayout(self.SongBookGroup) - self.SongBookLayout.setSpacing(8) + SongBookDialog.setObjectName("SongBookDialog") + SongBookDialog.resize(367, 120) + self.SongBookLayout = QtGui.QFormLayout(SongBookDialog) self.SongBookLayout.setMargin(8) - self.SongBookLayout.setObjectName(u'SongBookLayout') - self.DetailsWidget = QtGui.QWidget(self.SongBookGroup) - self.DetailsWidget.setMinimumSize(QtCore.QSize(0, 0)) - self.DetailsWidget.setObjectName(u'DetailsWidget') - self.DetailsLayout = QtGui.QFormLayout(self.DetailsWidget) - self.DetailsLayout.setMargin(0) - self.DetailsLayout.setSpacing(8) - self.DetailsLayout.setObjectName(u'DetailsLayout') - self.NameLabel = QtGui.QLabel(self.DetailsWidget) - self.NameLabel.setObjectName(u'NameLabel') - self.DetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.NameLabel) - self.NameEdit = QtGui.QLineEdit(self.DetailsWidget) - self.NameEdit.setObjectName(u'NameEdit') - self.DetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.NameEdit) - self.PublisherLabel = QtGui.QLabel(self.DetailsWidget) - self.PublisherLabel.setObjectName(u'PublisherLabel') - self.DetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.PublisherLabel) - self.PublisherEdit = QtGui.QLineEdit(self.DetailsWidget) - self.PublisherEdit.setObjectName(u'PublisherEdit') - self.DetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.PublisherEdit) - self.SongBookLayout.addWidget(self.DetailsWidget) - self.MessageLabel = QtGui.QLabel(self.SongBookGroup) - self.MessageLabel.setObjectName(u'MessageLabel') - self.SongBookLayout.addWidget(self.MessageLabel) - self.ButtonWidget = QtGui.QWidget(self.SongBookGroup) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.ButtonWidget.sizePolicy().hasHeightForWidth()) - self.ButtonWidget.setSizePolicy(sizePolicy) - self.ButtonWidget.setMinimumSize(QtCore.QSize(0, 0)) - self.ButtonWidget.setObjectName(u'ButtonWidget') - self.ButtonLayout = QtGui.QHBoxLayout(self.ButtonWidget) - self.ButtonLayout.setSpacing(8) - self.ButtonLayout.setMargin(0) - self.ButtonLayout.setObjectName(u'ButtonLayout') - spacerItem = QtGui.QSpacerItem(61, 24, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.ButtonLayout.addItem(spacerItem) - self.ClearButton = QtGui.QPushButton(self.ButtonWidget) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.ClearButton.setIcon(icon) - self.ClearButton.setObjectName(u'ClearButton') - self.ButtonLayout.addWidget(self.ClearButton) - self.AddUpdateButton = QtGui.QPushButton(self.ButtonWidget) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AddUpdateButton.setIcon(icon1) - self.AddUpdateButton.setObjectName(u'AddUpdateButton') - self.ButtonLayout.addWidget(self.AddUpdateButton) - self.DeleteButton = QtGui.QPushButton(self.ButtonWidget) - icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.DeleteButton.setIcon(icon2) - self.DeleteButton.setObjectName(u'DeleteButton') - self.ButtonLayout.addWidget(self.DeleteButton) - self.SongBookLayout.addWidget(self.ButtonWidget) - self.DialogLayout.addWidget(self.SongBookGroup) + self.SongBookLayout.setSpacing(8) + self.SongBookLayout.setObjectName("SongBookLayout") + self.NameLabel = QtGui.QLabel(SongBookDialog) + self.NameLabel.setObjectName("NameLabel") + self.SongBookLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.NameLabel) + self.NameEdit = QtGui.QLineEdit(SongBookDialog) + self.NameEdit.setObjectName("NameEdit") + self.SongBookLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.NameEdit) + self.PublisherLabel = QtGui.QLabel(SongBookDialog) + self.PublisherLabel.setObjectName("PublisherLabel") + self.SongBookLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.PublisherLabel) + self.PublisherEdit = QtGui.QLineEdit(SongBookDialog) + self.PublisherEdit.setObjectName("PublisherEdit") + self.SongBookLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.PublisherEdit) self.ButtonBox = QtGui.QDialogButtonBox(SongBookDialog) self.ButtonBox.setOrientation(QtCore.Qt.Horizontal) - self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok) - self.ButtonBox.setObjectName(u'ButtonBox') - self.DialogLayout.addWidget(self.ButtonBox) + self.ButtonBox.setStandardButtons( + QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel) + self.ButtonBox.setObjectName("ButtonBox") + self.SongBookLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.ButtonBox) + self.retranslateUi(SongBookDialog) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), SongBookDialog.accept) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), SongBookDialog.reject) + QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("accepted()"), SongBookDialog.accept) + QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("rejected()"), SongBookDialog.reject) QtCore.QMetaObject.connectSlotsByName(SongBookDialog) def retranslateUi(self, SongBookDialog): - SongBookDialog.setWindowTitle(translate(u'SongBookDialog', u'Book Song Maintenance')) - self.SongBookGroup.setTitle(translate(u'SongBookDialog', u'Song Book')) - self.NameLabel.setText(translate(u'SongBookDialog', u'Name:')) - self.PublisherLabel.setText(translate(u'SongBookDialog', u'Publisher:')) - self.ClearButton.setToolTip(translate(u'SongBookDialog', u'Clear Selection')) - self.ClearButton.setText(translate(u'SongBookDialog', u'Clear')) - self.AddUpdateButton.setToolTip(translate(u'SongBookDialog', u'Add Update Author')) - self.AddUpdateButton.setText(translate(u'SongBookDialog', u'Save')) - self.DeleteButton.setToolTip(translate(u'SongBookDialog', u'Delete Author')) - self.DeleteButton.setText(translate(u'SongBookDialog', u'Delete')) + SongBookDialog.setWindowTitle(QtGui.QApplication.translate("SongBookDialog", "Edit Book", None, QtGui.QApplication.UnicodeUTF8)) + self.NameLabel.setText(QtGui.QApplication.translate("SongBookDialog", "Name:", None, QtGui.QApplication.UnicodeUTF8)) + self.PublisherLabel.setText(QtGui.QApplication.translate("SongBookDialog", "Publisher:", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index cc203cdb4..879bfca3e 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -20,107 +20,22 @@ Place, Suite 330, Boston, MA 02111-1307 USA from PyQt4 import QtGui, QtCore from openlp.core.lib import translate from songbookdialog import Ui_SongBookDialog -from openlp.plugins.songs.lib.classes import Book class SongBookForm(QtGui.QDialog, Ui_SongBookDialog): """ Class documentation goes here. """ - def __init__(self, songmanager, parent = None): + def __init__(self, parent=None): """ Constructor """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - self.songmanager = songmanager - self.currentRow = 0 - self.songbook = None - QtCore.QObject.connect(self.DeleteButton, - QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick) - QtCore.QObject.connect(self.ClearButton, - QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick) - QtCore.QObject.connect(self.AddUpdateButton, - QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick) - QtCore.QObject.connect(self.NameEdit, - QtCore.SIGNAL(u'lostFocus()'), self.onBookNameEditLostFocus) - QtCore.QObject.connect(self.BookSongListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onBooksListViewItemClicked) - - def load_form(self): - """ - Refresh the screen and rest fields - """ - self.BookSongListWidget.clear() - self.onClearButtonClick() # tidy up screen - books = self.songmanager.get_books() - for book in books: - book_name = QtGui.QListWidgetItem(book.name) - book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id)) - self.BookSongListWidget.addItem(book_name) - if self.currentRow >= self.BookSongListWidget.count() : - self.BookSongListWidget.setCurrentRow(self.BookSongListWidget.count() - 1) - else: - self.BookSongListWidget.setCurrentRow(self.currentRow) - - def onDeleteButtonClick(self): - """ - Delete the Book is the Book is not attached to any songs - """ - self.songmanager.delete_book(self.Book.id) - self.load_form() - - def onBookNameEditLostFocus(self): - self._validate_form() - - def onAddUpdateButtonClick(self): - """ - Sent New or update details to the database - """ - if self.Book == None: - self.Book = Book() - self.Book.name = unicode(self.NameEdit.displayText()) - self.Book.publisher = unicode(self.PublisherEdit.displayText()) - self.songmanager.save_book(self.Book) - self.onClearButtonClick() - self.load_form() - - def onClearButtonClick(self): - """ - Tidy up screen if clear button pressed - """ - self.NameEdit.setText(u'') - self.PublisherEdit.setText(u'') - self.MessageLabel.setText(u'') - self.DeleteButton.setEnabled(False) - self.AddUpdateButton.setEnabled(True) - self.Book = None - self._validate_form() + def exec_(self, clear=True): + if clear: + self.NameEdit.clear() + self.PublisherEdit.clear() self.NameEdit.setFocus() + return QtGui.QDialog.exec_(self) - def onBooksListViewItemClicked(self, index): - """ - An Book has been selected display it - If the Book is attached to a Song prevent delete - """ - self.currentRow = self.BookSongListWidget.currentRow() - item = self.BookSongListWidget.currentItem() - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.Book = self.songmanager.get_book(item_id) - self.NameEdit.setText(self.Book.name) - self.PublisherEdit.setText(self.Book.publisher) - if len(self.Book.songs) > 0: - self.MessageLabel.setText(translate(u'BookForm', u'Book in use "Delete" is disabled')) - self.DeleteButton.setEnabled(False) - else: - self.MessageLabel.setText(translate(u'BookForm', u'Book in not used')) - self.DeleteButton.setEnabled(True) - self._validate_form() - self.NameEdit.setFocus() - - def _validate_form(self): - # We need at lease a display name - if len(self.NameEdit.displayText()) == 0: - self.AddUpdateButton.setEnabled(False) - else: - self.AddUpdateButton.setEnabled(True) diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index e91ce735c..ecaab5653 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -42,7 +42,6 @@ class Ui_SongMaintenanceDialog(object): sizePolicy.setHeightForWidth(self.TypeListWidget.sizePolicy().hasHeightForWidth()) self.TypeListWidget.setSizePolicy(sizePolicy) self.TypeListWidget.setProperty("showDropIndicator", QtCore.QVariant(False)) - #self.TypeListWidget.setFlow(QtGui.QListView.TopToBottom) self.TypeListWidget.setSpacing(0) self.TypeListWidget.setViewMode(QtGui.QListView.IconMode) self.TypeListWidget.setIconSize(QtCore.QSize(128, 100)); @@ -69,23 +68,12 @@ class Ui_SongMaintenanceDialog(object): self.AuthorsPage = QtGui.QWidget() self.AuthorsPage.setObjectName("AuthorsPage") self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsPage) - self.AuthorsLayout.setSpacing(8) + self.AuthorsLayout.setSpacing(4) self.AuthorsLayout.setMargin(0) self.AuthorsLayout.setObjectName("AuthorsLayout") self.AuthorsListWidget = QtGui.QListWidget(self.AuthorsPage) self.AuthorsListWidget.setObjectName("AuthorsListWidget") self.AuthorsLayout.addWidget(self.AuthorsListWidget) - self.AuthorsErrorLabel = QtGui.QLabel(self.AuthorsPage) - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.AuthorsErrorLabel.sizePolicy().hasHeightForWidth()) - self.AuthorsErrorLabel.setSizePolicy(sizePolicy) - self.AuthorsErrorLabel.setSize(QtCore.QSize(0, 0)) - self.AuthorsErrorLabel.setMargin(4) - self.AuthorsErrorLabel.setStyleSheet(u'background-color: #900; color: #fff;') - self.AuthorsErrorLabel.setObjectName("AuthorsErrorLabel") - self.AuthorsLayout.addWidget(self.AuthorsErrorLabel) self.AuthorButtonWidget = QtGui.QWidget(self.AuthorsPage) self.AuthorButtonWidget.setObjectName("AuthorButtonWidget") self.AuthorButtonsLayout = QtGui.QHBoxLayout(self.AuthorButtonWidget) @@ -128,13 +116,6 @@ class Ui_SongMaintenanceDialog(object): self.TopicsListWidget = QtGui.QListWidget(self.TopicsPage) self.TopicsListWidget.setObjectName("TopicsListWidget") self.TopicLayout.addWidget(self.TopicsListWidget) - self.TopicsErrorLabel = QtGui.QLabel(self.TopicsPage) - self.TopicsErrorLabel.setMaximumHeight(0) - self.TopicsErrorLabel.setMinimumHeight(0) - self.TopicsErrorLabel.setIndent(4) - self.TopicsErrorLabel.setStyleSheet(u'background-color: #900; color: #fff;') - self.TopicsErrorLabel.setObjectName("TopicsErrorLabel") - self.TopicLayout.addWidget(self.TopicsErrorLabel) self.TopicButtonWidget = QtGui.QWidget(self.TopicsPage) self.TopicButtonWidget.setObjectName("TopicButtonWidget") self.TopicButtonLayout = QtGui.QHBoxLayout(self.TopicButtonWidget) @@ -177,13 +158,6 @@ class Ui_SongMaintenanceDialog(object): self.BooksListWidget = QtGui.QListWidget(self.BooksPage) self.BooksListWidget.setObjectName("BooksListWidget") self.BookLayout.addWidget(self.BooksListWidget) - self.BooksErrorLabel = QtGui.QLabel(self.BooksPage) - self.BooksErrorLabel.setMaximumHeight(0) - self.BooksErrorLabel.setMinimumHeight(0) - self.BooksErrorLabel.setIndent(4) - self.BooksErrorLabel.setStyleSheet(u'background-color: #900; color: #fff;') - self.BooksErrorLabel.setObjectName("BooksErrorLabel") - self.BookLayout.addWidget(self.BooksErrorLabel) self.BookButtonWidget = QtGui.QWidget(self.BooksPage) self.BookButtonWidget.setObjectName("BookButtonWidget") self.BookButtonLayout = QtGui.QHBoxLayout(self.BookButtonWidget) diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index c39bcd5ec..8730ad1ac 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -19,9 +19,11 @@ Place, Suite 330, Boston, MA 02111-1307 USA from PyQt4 import QtGui, QtCore from openlp.core.lib import translate -from openlp.plugins.songs.forms import SongBookForm from openlp.plugins.songs.lib.classes import Author, Book, Topic from songmaintenancedialog import Ui_SongMaintenanceDialog +from authorsform import AuthorsForm +from topicsform import TopicsForm +from songbookform import SongBookForm class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): """ @@ -34,9 +36,21 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): QtGui.QDialog.__init__(self, parent) self.setupUi(self) self.songmanager = songmanager - self.timer = QtCore.QTimer() - QtCore.QObject.connect(self.timer, - QtCore.SIGNAL(u'timeout()'), self._hideErrors) + self.authorform = AuthorsForm(self) + self.topicform = TopicsForm(self) + self.bookform = SongBookForm(self) + QtCore.QObject.connect(self.AuthorAddButton, + QtCore.SIGNAL(u'pressed()'), self.onAuthorAddButtonClick) + QtCore.QObject.connect(self.TopicAddButton, + QtCore.SIGNAL(u'pressed()'), self.onTopicAddButtonClick) + QtCore.QObject.connect(self.BookAddButton, + QtCore.SIGNAL(u'pressed()'), self.onBookAddButtonClick) + QtCore.QObject.connect(self.AuthorEditButton, + QtCore.SIGNAL(u'pressed()'), self.onAuthorEditButtonClick) + QtCore.QObject.connect(self.TopicEditButton, + QtCore.SIGNAL(u'pressed()'), self.onTopicEditButtonClick) + QtCore.QObject.connect(self.BookEditButton, + QtCore.SIGNAL(u'pressed()'), self.onBookEditButtonClick) QtCore.QObject.connect(self.AuthorDeleteButton, QtCore.SIGNAL(u'pressed()'), self.onAuthorDeleteButtonClick) QtCore.QObject.connect(self.TopicDeleteButton, @@ -59,28 +73,23 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: return -1 - def _showError(self, error): - self.AuthorsErrorLabel.setSize(QtCore.QSize(0, 32)) - self.AuthorsErrorLabel.setText(error) - self.TopicsErrorLabel.setMaximumHeight(32) - self.TopicsErrorLabel.setMinimumHeight(32) - self.TopicsErrorLabel.setText(error) - self.BooksErrorLabel.setMaximumHeight(32) - self.BooksErrorLabel.setMinimumHeight(32) - self.BooksErrorLabel.setText(error) - self.timer.start(2000) - - def _hideErrors(self): - self.timer.stop() - self.AuthorsErrorLabel.setMaximumHeight(0) - self.AuthorsErrorLabel.setMinimumHeight(0) - self.AuthorsErrorLabel.clear() - self.TopicsErrorLabel.setMaximumHeight(0) - self.TopicsErrorLabel.setMinimumHeight(0) - self.TopicsErrorLabel.clear() - self.BooksErrorLabel.setMaximumHeight(0) - self.BooksErrorLabel.setMinimumHeight(0) - self.BooksErrorLabel.clear() + def _deleteItem(self, list_widget, get_func, del_func, reset_func, + dlg_title, del_text, err_text, sel_text): + item_id = self._getCurrentItemId(list_widget) + if item_id != -1: + item = get_func(item_id) + if QtGui.QMessageBox.warning(self, dlg_title, del_text, + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes) + ) == QtGui.QMessageBox.Yes: + if item is not None and len(item.songs) == 0: + del_func(item.id) + reset_func() + else: + QtGui.QMessageBox.critical(self, dlg_title, err_text, + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + else: + QtGui.QMessageBox.critical(self, dlg_title, sel_text, + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) def resetAuthors(self): self.AuthorsListWidget.clear() @@ -110,72 +119,125 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id)) self.BooksListWidget.addItem(book_name) + def onAuthorAddButtonClick(self): + self.authorform.setAutoDisplayName(True) + if self.authorform.exec_(): + author = Author.populate( + first_name=unicode(self.authorform.FirstNameEdit.text(), u'utf-8'), + last_name=unicode(self.authorform.LastNameEdit.text(), u'utf-8'), + display_name=unicode(self.authorform.DisplayEdit.text(), u'utf-8')) + if self.songmanager.save_author(author): + self.resetAuthors() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t add your author!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + + def onTopicAddButtonClick(self): + if self.topicform.exec_(): + topic = Topic.populate(name=unicode(self.topicform.NameEdit.text(), u'utf-8')) + if self.songmanager.save_topic(topic): + self.resetTopics() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t add your topic!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + + def onBookAddButtonClick(self): + if self.bookform.exec_(): + book = Book.populate(name=unicode(self.bookform.NameEdit.text(), u'utf-8'), + publisher=unicode(self.bookform.PublisherEdit.text(), u'utf-8')) + if self.songmanager.save_book(book): + self.resetBooks() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t add your book!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + + def onAuthorEditButtonClick(self): + author_id = self._getCurrentItemId(self.AuthorsListWidget) + if author_id != -1: + author = self.songmanager.get_author(author_id) + self.authorform.setAutoDisplayName(False) + self.authorform.FirstNameEdit.setText(author.first_name) + self.authorform.LastNameEdit.setText(author.last_name) + self.authorform.DisplayEdit.setText(author.display_name) + if self.authorform.exec_(False): + author.first_name = unicode(self.authorform.FirstNameEdit.text(), u'utf-8') + author.last_name = unicode(self.authorform.LastNameEdit.text(), u'utf-8') + author.display_name = unicode(self.authorform.DisplayEdit.text(), u'utf-8') + if self.songmanager.save_author(author): + self.resetAuthors() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t save your author!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + + def onTopicEditButtonClick(self): + topic_id = self._getCurrentItemId(self.TopicsListWidget) + if topic_id != -1: + topic = self.songmanager.get_topic(topic_id) + self.topicform.NameEdit.setText(topic.name) + if self.topicform.exec_(False): + topic.name = unicode(self.topicform.NameEdit.text(), u'utf-8') + if self.songmanager.save_topic(topic): + self.resetTopics() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t save your topic!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + + def onBookEditButtonClick(self): + book_id = self._getCurrentItemId(self.BooksListWidget) + if book_id != -1: + book = self.songmanager.get_book(book_id) + self.bookform.NameEdit.setText(book.name) + self.bookform.PublisherEdit.setText(book.publisher) + if self.bookform.exec_(False): + book.name = unicode(self.bookform.NameEdit.text(), u'utf-8') + book.publisher = unicode(self.bookform.PublisherEdit.text(), u'utf-8') + if self.songmanager.save_book(book): + self.resetBooks() + else: + QtGui.QMessageBox.critical(self, + translate(u'SongMaintenanceForm', u'Error'), + translate(u'SongMaintenanceForm', u'Couldn\'t save your book!'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + def onAuthorDeleteButtonClick(self): """ Delete the author if the author is not attached to any songs """ - author_id = self._getCurrentItemId(self.AuthorsListWidget) - if author_id != -1: - author = self.songmanager.get_author(author_id) - if QtGui.QMessageBox.warning(None, - translate(u'SongMaintenanceForm', u'Delete Author'), - translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected author?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes) - ) == QtGui.QMessageBox.Yes: - if len(author.songs) == 0: - self.songmanager.delete_author(author.id) - self.resetAuthors() - else: - QtGui.QMessageBox.critical(None, - translate(u'SongMaintenanceForm', u'Delete Author'), - translate(u'SongMaintenanceForm', u'This author can\'t be deleted, they are currently assigned to at least one song!'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) - else: - self._showError(translate(u'SongMaintenanceForm', u'No author selected!')) + self._deleteItem(self.AuthorsListWidget, self.songmanager.get_author, + self.songmanager.delete_author, self.resetAuthors, + translate(u'SongMaintenanceForm', u'Delete Author'), + translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected author?'), + translate(u'SongMaintenanceForm', u'This author can\'t be deleted, they are currently assigned to at least one song!'), + translate(u'SongMaintenanceForm', u'No author selected!')) def onTopicDeleteButtonClick(self): """ Delete the Book is the Book is not attached to any songs """ - topic_id = self._getCurrentItemId(self.TopicsListWidget) - if topic_id != -1: - topic = self.songmanager.get_topic(topic_id) - if QtGui.QMessageBox.warning(None, - translate(u'SongMaintenanceForm', u'Delete Topic'), - translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected topic?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes) - ) == QtGui.QMessageBox.Yes: - if len(topic.songs) == 0: - self.songmanager.delete_topic(topic.id) - self.resetTopics() - else: - #QtGui.QMessageBox.critical(None, - # translate(u'SongMaintenanceForm', u'Delete Topic'), - # translate(u'SongMaintenanceForm', u'This topic can\'t be deleted, it is currently assigned to at least one song!'), - # QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) - self._showError(translate(u'SongMaintenanceForm', u'This topic can\'t be deleted, it is currently assigned to at least one song!')) - else: - self._showError(translate(u'SongMaintenanceForm', u'No topic selected!')) + self._deleteItem(self.TopicsListWidget, self.songmanager.get_topic, + self.songmanager.delete_topic, self.resetTopics, + translate(u'SongMaintenanceForm', u'Delete Topic'), + translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected topic?'), + translate(u'SongMaintenanceForm', u'This topic can\'t be deleted, it is currently assigned to at least one song!'), + translate(u'SongMaintenanceForm', u'No topic selected!')) def onBookDeleteButtonClick(self): """ Delete the Book is the Book is not attached to any songs """ - book_id = self._getCurrentItemId(self.BooksListWidget) - if book_id != -1: - book = self.songmanager.get_book(book_id) - if QtGui.QMessageBox.warning(None, - translate(u'SongMaintenanceForm', u'Delete Book'), - translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected book?'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes) - ) == QtGui.QMessageBox.Yes: - if len(book.songs) == 0: - self.songmanager.delete_book(book.id) - self.resetBooks() - else: - QtGui.QMessageBox.critical(None, - translate(u'SongMaintenanceForm', u'Delete Book'), - translate(u'SongMaintenanceForm', u'This book can\'t be deleted, it is currently assigned to at least one song!'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) - else: - self._showError(translate(u'SongMaintenanceForm', u'No book selected!')) + self._deleteItem(self.BooksListWidget, self.songmanager.get_book, + self.songmanager.delete_book, self.resetBooks, + translate(u'SongMaintenanceForm', u'Delete Book'), + translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected book?'), + translate(u'SongMaintenanceForm', u'This book can\'t be deleted, it is currently assigned to at least one song!'), + translate(u'SongMaintenanceForm', u'No book selected!')) diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 2a56837fa..589fb8ccc 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -22,67 +22,32 @@ from openlp.core.lib import translate class Ui_TopicsDialog(object): def setupUi(self, TopicsDialog): - TopicsDialog.setObjectName(u'TopicsDialog') - TopicsDialog.resize(387, 463) - self.gridLayout_2 = QtGui.QGridLayout(TopicsDialog) - self.gridLayout_2.setObjectName(u'gridLayout_2') - self.TopicGroupBox = QtGui.QGroupBox(TopicsDialog) - self.TopicGroupBox.setObjectName(u'TopicGroupBox') - self.gridLayout = QtGui.QGridLayout(self.TopicGroupBox) - self.gridLayout.setObjectName(u'gridLayout') - self.TopicNameLabel = QtGui.QLabel(self.TopicGroupBox) - self.TopicNameLabel.setObjectName(u'TopicNameLabel') - self.gridLayout.addWidget(self.TopicNameLabel, 0, 0, 1, 1) - self.TopicNameEdit = QtGui.QLineEdit(self.TopicGroupBox) - self.TopicNameEdit.setObjectName(u'TopicNameEdit') - self.gridLayout.addWidget(self.TopicNameEdit, 0, 1, 1, 4) - spacerItem = QtGui.QSpacerItem(198, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.gridLayout.addItem(spacerItem, 1, 0, 1, 2) - self.DeleteButton = QtGui.QPushButton(self.TopicGroupBox) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.DeleteButton.setIcon(icon) - self.DeleteButton.setObjectName(u'DeleteButton') - self.gridLayout.addWidget(self.DeleteButton, 1, 3, 1, 1) - self.AddUpdateButton = QtGui.QPushButton(self.TopicGroupBox) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.AddUpdateButton.setIcon(icon1) - self.AddUpdateButton.setObjectName(u'AddUpdateButton') - self.gridLayout.addWidget(self.AddUpdateButton, 1, 4, 1, 1) - self.ClearButton = QtGui.QPushButton(self.TopicGroupBox) - icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.ClearButton.setIcon(icon2) - self.ClearButton.setObjectName(u'ClearButton') - self.gridLayout.addWidget(self.ClearButton, 1, 2, 1, 1) - self.gridLayout_2.addWidget(self.TopicGroupBox, 1, 0, 1, 1) - self.MessageLabel = QtGui.QLabel(TopicsDialog) - self.MessageLabel.setObjectName(u'MessageLabel') - self.gridLayout_2.addWidget(self.MessageLabel, 3, 0, 1, 1) - self.TopicsListWidget = QtGui.QListWidget() - self.TopicsListWidget.setAlternatingRowColors(True) - self.gridLayout_2.addWidget(self.TopicsListWidget, 0, 0, 1, 1) - self.ButtonBox = QtGui.QDialogButtonBox(TopicsDialog) - self.ButtonBox.setOrientation(QtCore.Qt.Horizontal) - self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok) - self.ButtonBox.setObjectName(u'ButtonBox') - self.gridLayout_2.addWidget(self.ButtonBox, 2, 0, 1, 1) + TopicsDialog.setObjectName("TopicsDialog") + TopicsDialog.resize(365, 77) + self.TopicLayout = QtGui.QFormLayout(TopicsDialog) + self.TopicLayout.setFieldGrowthPolicy(QtGui.QFormLayout.ExpandingFieldsGrow) + self.TopicLayout.setMargin(8) + self.TopicLayout.setSpacing(8) + self.TopicLayout.setObjectName("TopicLayout") + self.NameLabel = QtGui.QLabel(TopicsDialog) + self.NameLabel.setObjectName("NameLabel") + self.TopicLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.NameLabel) + self.NameEdit = QtGui.QLineEdit(TopicsDialog) + self.NameEdit.setObjectName("NameEdit") + self.TopicLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.NameEdit) + self.TopicButtonBox = QtGui.QDialogButtonBox(TopicsDialog) + self.TopicButtonBox.setOrientation(QtCore.Qt.Horizontal) + self.TopicButtonBox.setStandardButtons( + QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel) + self.TopicButtonBox.setObjectName("TopicButtonBox") + self.TopicLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.TopicButtonBox) self.retranslateUi(TopicsDialog) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), TopicsDialog.accept) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), TopicsDialog.reject) + QtCore.QObject.connect(self.TopicButtonBox, QtCore.SIGNAL("accepted()"), TopicsDialog.accept) + QtCore.QObject.connect(self.TopicButtonBox, QtCore.SIGNAL("rejected()"), TopicsDialog.reject) QtCore.QMetaObject.connectSlotsByName(TopicsDialog) def retranslateUi(self, TopicsDialog): - TopicsDialog.setWindowTitle(translate(u'TopicsDialog', u'Topic Maintenance')) - self.TopicGroupBox.setTitle(translate(u'TopicsDialog', u'Topic')) - self.TopicNameLabel.setText(translate(u'TopicsDialog', u'Topic Name:')) - - self.DeleteButton.setToolTip(translate(u'TopicsDialog', u'Delete Author')) - self.DeleteButton.setText(translate(u'AuthorsDialog', u'Delete')) - self.AddUpdateButton.setToolTip(translate(u'TopicsDialog', u'Add Update Author')) - self.AddUpdateButton.setText(translate(u'AuthorsDialog', u'Save')) - self.ClearButton.setToolTip(translate(u'TopicsDialog', u'Clear Selection')) - self.ClearButton.setText(translate(u'TopicsDialog', u'Clear')) + TopicsDialog.setWindowTitle(QtGui.QApplication.translate("TopicsDialog", "Topic Maintenance", None, QtGui.QApplication.UnicodeUTF8)) + self.NameLabel.setText(QtGui.QApplication.translate("TopicsDialog", "Topic Name:", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 825d1a66b..810bf760f 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -18,110 +18,22 @@ Place, Suite 330, Boston, MA 02111-1307 USA """ from PyQt4 import QtGui, QtCore from openlp.core.lib import translate -from openlp.plugins.songs.forms.topicsdialog import Ui_TopicsDialog -from openlp.plugins.songs.lib.classes import Topic +from topicsdialog import Ui_TopicsDialog class TopicsForm(QtGui.QDialog, Ui_TopicsDialog): """ Class documentation goes here. """ - def __init__(self, songmanager, parent = None): + def __init__(self, parent=None): """ Constructor """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - self.songmanager = songmanager - self.currentRow = 0 - self.topic = None - QtCore.QObject.connect(self.DeleteButton, - QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick) - QtCore.QObject.connect(self.ClearButton, - QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick) - QtCore.QObject.connect(self.AddUpdateButton, - QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick) - QtCore.QObject.connect(self.TopicNameEdit, - QtCore.SIGNAL(u'lostFocus()'), self.onTopicNameEditLostFocus) - QtCore.QObject.connect(self.TopicsListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onTopicsListWidgetItemClicked) + def exec_(self, clear=True): + if clear: + self.NameEdit.clear() + self.NameEdit.setFocus() + return QtGui.QDialog.exec_(self) - def load_form(self): - """ - Refresh the screen and rest fields - """ - self.TopicsListWidget.clear() - # tidy up screen - self.onClearButtonClick() - topics = self.songmanager.get_topics() - for topic in topics: - topic_name = QtGui.QListWidgetItem(topic.name) - topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) - self.TopicsListWidget.addItem(topic_name) - if self.currentRow >= self.TopicsListWidget.count() : - self.TopicsListWidget.setCurrentRow(self.TopicsListWidget.count() - 1) - else: - self.TopicsListWidget.setCurrentRow(self.currentRow) - self._validate_form() - - def onDeleteButtonClick(self): - """ - Delete the Topic is the Topic is not attached to any songs - """ - self.songmanager.delete_topic(self.topic.id) - self.load_form() - - def onTopicNameEditLostFocus(self): - self._validate_form() - - def onAddUpdateButtonClick(self): - """ - Sent New or update details to the database - """ - if self._validate_form(): - if self.topic == None: - self.topic = Topic() - self.topic.name = unicode(self.TopicNameEdit.displayText()) - self.songmanager.save_topic(self.topic) - self.onClearButtonClick() - self.load_form() - - def onClearButtonClick(self): - """ - Tidy up screen if clear button pressed - """ - self.TopicNameEdit.setText(u'') - self.MessageLabel.setText(u'') - self.DeleteButton.setEnabled(False) - self.topic = None - self._validate_form() - self.TopicNameEdit.setFocus() - - def onTopicsListWidgetItemClicked(self, index): - """ - An Topic has been selected display it - If the Topic is attached to a Song prevent delete - """ - self.currentRow = self.TopicsListWidget.currentRow() - item = self.TopicsListWidget.currentItem() - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.topic = self.songmanager.get_topic(item_id) - self.TopicNameEdit.setText(self.topic.name) - if len(self.topic.songs) > 0: - self.MessageLabel.setText(translate(u'TopicForm', u'Topic in use "Delete" is disabled')) - self.DeleteButton.setEnabled(False) - else: - self.MessageLabel.setText(translate(u'TopicForm', u'Topic in not used')) - self.DeleteButton.setEnabled(True) - self._validate_form() - self.TopicNameEdit.setFocus() - - def _validate_form(self): - # We need at lease a display name - valid = True - if len(self.TopicNameEdit.displayText()) == 0: - valid = False - self.TopicNameEdit.setStyleSheet(u'background-color: red; color: white') - else: - self.TopicNameEdit.setStyleSheet(u'') - return valid diff --git a/openlp/plugins/songs/lib/classes.py b/openlp/plugins/songs/lib/classes.py index a693641d3..49dcd6dc1 100644 --- a/openlp/plugins/songs/lib/classes.py +++ b/openlp/plugins/songs/lib/classes.py @@ -43,7 +43,8 @@ class Book(BaseModel): """ Book model """ - pass + def __repr__(self): + return u'' % (str(self.id), self.name, self.publisher) class Song(BaseModel): """ diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 8775a51b1..a3ad8423a 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -218,9 +218,9 @@ class SongManager(): self.session.add(book) self.session.commit() return True - except: + except Exception, e: self.session.rollback() - log.error(u'Errow thrown %s', sys.exc_info()[1]) + log.error(u'Errow thrown %s', e.args[0]) return False def delete_book(self, bookid): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 5b9dbae38..826bbb786 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -60,10 +60,10 @@ class SongMediaItem(MediaManagerItem): self.ConfigSection = u'song' MediaManagerItem.__init__(self, parent, icon, title) self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager) - self.authors_form = AuthorsForm(self.parent.songmanager) - self.topics_form = TopicsForm(self.parent.songmanager) - self.song_book_form = SongBookForm(self.parent.songmanager) - self.song_maintenance_form = SongMaintenanceForm(self.parent.songmanager) + #self.authors_form = AuthorsForm(self.parent.songmanager) + #self.topics_form = TopicsForm(self.parent.songmanager) + #self.song_book_form = SongBookForm(self.parent.songmanager) + self.song_maintenance_form = SongMaintenanceForm(self.parent.songmanager, self) def setupUi(self): # Add a toolbar diff --git a/openlp/plugins/songs/lib/models.py b/openlp/plugins/songs/lib/models.py index a609adf99..6f518b8c0 100644 --- a/openlp/plugins/songs/lib/models.py +++ b/openlp/plugins/songs/lib/models.py @@ -27,8 +27,8 @@ from openlp.plugins.songs.lib.classes import * def init_models(url): engine = create_engine(url) metadata.bind = engine - session = scoped_session(sessionmaker(autoflush=True, autocommit=False, - bind=engine)) + session = scoped_session(sessionmaker(autoflush=True, + autocommit=False, bind=engine)) mapper(Author, authors_table) mapper(Book, song_books_table) mapper(Song, songs_table, diff --git a/openlp/plugins/songs/lib/tables.py b/openlp/plugins/songs/lib/tables.py index 617c53b7d..b8fe0eeb0 100644 --- a/openlp/plugins/songs/lib/tables.py +++ b/openlp/plugins/songs/lib/tables.py @@ -31,7 +31,7 @@ authors_table = Table(u'authors', metadata, # Definition of the "song_books" table song_books_table = Table(u'song_books', metadata, - Column(u'id', types.Integer, primary_key=True), + Column(u'id', types.Integer, primary_key=True), Column(u'name', types.Unicode(128), nullable=False), Column(u'publisher', types.Unicode(128)) ) diff --git a/resources/forms/authorsdialog.ui b/resources/forms/authorsdialog.ui index 4be1ef2a7..41810b539 100644 --- a/resources/forms/authorsdialog.ui +++ b/resources/forms/authorsdialog.ui @@ -1,229 +1,104 @@ - + + AuthorsDialog - - + + 0 0 - 410 - 505 + 393 + 147 - + Author Maintenance - - + + 8 - + 8 - - - - true - - - true - - - 0 + + 8 + + + + + + + + + + + Display Name: - - - - - 0 - 0 - + + + + First Name: - - Author Details - - - - 8 - - - 8 - - - - - - 8 - - - 8 - - - 0 - - - - - Display Name: - - - - - - - - - - First Name: - - - - - - - - - - Last Name: - - - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - 8 - - - 0 - - - - - Qt::Horizontal - - - - 198 - 20 - - - - - - - - Clear Selection - - - New - - - - :/services/service_new.png:/services/service_new.png - - - - - - - Add Update Author - - - Save - - - - :/services/service_save.png:/services/service_save.png - - - - - - - Delete Author - - - Delete - - - - :/services/service_delete.png:/services/service_delete.png - - - - - - - - - - + + + Exit Screen - + Qt::Horizontal - - QDialogButtonBox::Ok + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + + + + + + + + Last Name: - + - buttonBox + AuthorButtonBox accepted() AuthorsDialog accept() - + 248 254 - + 157 274 - buttonBox + AuthorButtonBox rejected() AuthorsDialog reject() - + 316 260 - + 286 274 diff --git a/resources/forms/songbookdialog.ui b/resources/forms/songbookdialog.ui index 54476ce98..f29d5fa14 100644 --- a/resources/forms/songbookdialog.ui +++ b/resources/forms/songbookdialog.ui @@ -1,195 +1,62 @@ - + + SongBookDialog - - + + 0 0 - 387 - 531 + 367 + 120 - + Book Song Maintenance - - + + 8 - + 8 - - - - - - - - 0 - 200 - + + 8 + + + + + Name: - - Song Book - - - - 8 - - - 8 - - - - - - 0 - 0 - - - - - 8 - - - 8 - - - 0 - - - - - Name: - - - - - - - - - - Publisher: - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 8 - - - 0 - - - - - Qt::Horizontal - - - - 61 - 24 - - - - - - - - Clear Selection - - - New - - - - :/services/service_new.png:/services/service_new.png - - - - - - - Add Update Author - - - Save - - - - :/services/service_save.png:/services/service_save.png - - - - - - - Delete Author - - - Delete - - - - :/services/service_delete.png:/services/service_delete.png - - - - - - - - - - + + + + + + + Publisher: + + + + + + + + + Qt::Horizontal - - QDialogButtonBox::Ok + + QDialogButtonBox::Cancel|QDialogButtonBox::Save - + @@ -198,11 +65,11 @@ SongBookDialog accept() - + 248 254 - + 157 274 @@ -214,11 +81,11 @@ SongBookDialog reject() - + 316 260 - + 286 274 diff --git a/resources/forms/topicsdialog.ui b/resources/forms/topicsdialog.ui index 768681e33..ffee5761f 100644 --- a/resources/forms/topicsdialog.ui +++ b/resources/forms/topicsdialog.ui @@ -1,158 +1,52 @@ - + + TopicsDialog - - + + 0 0 - 471 - 470 + 365 + 77 - + Topic Maintenance - - + + + QFormLayout::ExpandingFieldsGrow + + 8 - + 8 - - - - Topic Details - - - - 8 - - - 8 - - - - - Topic Name: - - - - - - - - - - Qt::Horizontal - - - - 198 - 20 - - - - - - - - Delete Author - - - Delete - - - - :/services/service_delete.png:/services/service_delete.png - - - - - - - Add Update Author - - - Save - - - - :/services/service_save.png:/services/service_save.png - - - - - - - Clear Selection - - - New - - - - :/services/service_new.png:/services/service_new.png - - - - - - - - - - true + + 8 + + + + + Topic Name: - - - - Qt::Horizontal - - - QDialogButtonBox::Ok + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save - + - - - ButtonBox - accepted() - TopicsDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - ButtonBox - rejected() - TopicsDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - +