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
-
-
-
-
+