forked from openlp/openlp
Lots of yummy updates to the song maintenance form.
This commit is contained in:
parent
af9b8edd6f
commit
d4d6a88c6f
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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_())
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
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?'),
|
||||
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!'))
|
||||
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,
|
||||
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?'),
|
||||
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!'))
|
||||
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,
|
||||
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?'),
|
||||
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!'))
|
||||
translate(u'SongMaintenanceForm', u'No book selected!'))
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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
|
||||
|
@ -43,7 +43,8 @@ class Book(BaseModel):
|
||||
"""
|
||||
Book model
|
||||
"""
|
||||
pass
|
||||
def __repr__(self):
|
||||
return u'<Book id="%s" name="%s" publisher="%s" />' % (str(self.id), self.name, self.publisher)
|
||||
|
||||
class Song(BaseModel):
|
||||
"""
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -1,229 +1,104 @@
|
||||
<ui version="4.0" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>AuthorsDialog</class>
|
||||
<widget class="QDialog" name="AuthorsDialog" >
|
||||
<property name="geometry" >
|
||||
<widget class="QDialog" name="AuthorsDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>410</width>
|
||||
<height>505</height>
|
||||
<width>393</width>
|
||||
<height>147</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Author Maintenance</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="DialogLayout" >
|
||||
<property name="spacing" >
|
||||
<layout class="QFormLayout" name="AuthorsLayout">
|
||||
<property name="horizontalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="AuthorListView" >
|
||||
<property name="dragEnabled" >
|
||||
<bool>true</bool>
|
||||
<property name="margin">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="alternatingRowColors" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="columnCount" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="FirstNameEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="AuthorDetails" >
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Author Details</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="AuthorLayout" >
|
||||
<property name="spacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" native="1" name="DetailsWidget" >
|
||||
<layout class="QFormLayout" name="DetailsLayout" >
|
||||
<property name="horizontalSpacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="verticalSpacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="DisplayLabel" >
|
||||
<property name="text" >
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="DisplayEdit"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="DisplayLabel">
|
||||
<property name="text">
|
||||
<string>Display Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="DisplayEdit" />
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="FirstNameLabel" >
|
||||
<property name="text" >
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="FirstNameLabel">
|
||||
<property name="text">
|
||||
<string>First Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="FirstNameEdit" />
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QLabel" name="LastNameLabel" >
|
||||
<property name="text" >
|
||||
<string>Last Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" >
|
||||
<widget class="QLineEdit" name="LastNameEdit" />
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="MessageLabel" >
|
||||
<property name="text" >
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" native="1" name="ButtonWidget" >
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="ButtonLayout" >
|
||||
<property name="spacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="ButtonSpacer" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<size>
|
||||
<width>198</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ClearButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Clear Selection</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>New</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="AddUpdateButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Add Update Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Save</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="DeleteButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Delete Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox" >
|
||||
<property name="toolTip" >
|
||||
<item row="3" column="1">
|
||||
<widget class="QDialogButtonBox" name="AuthorButtonBox">
|
||||
<property name="toolTip">
|
||||
<string>Exit Screen</string>
|
||||
</property>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons" >
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="LastNameEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="LastNameLabel">
|
||||
<property name="text">
|
||||
<string>Last Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../images/openlp-2.qrc" />
|
||||
<include location="../images/openlp-2.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<sender>AuthorButtonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>AuthorsDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<sender>AuthorButtonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>AuthorsDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
|
@ -1,195 +1,62 @@
|
||||
<ui version="4.0" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SongBookDialog</class>
|
||||
<widget class="QDialog" name="SongBookDialog" >
|
||||
<property name="geometry" >
|
||||
<widget class="QDialog" name="SongBookDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>387</width>
|
||||
<height>531</height>
|
||||
<width>367</width>
|
||||
<height>120</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Book Song Maintenance</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="DialogLayout" >
|
||||
<property name="spacing" >
|
||||
<layout class="QFormLayout" name="SongBookLayout">
|
||||
<property name="horizontalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="BookSongListView" />
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="SongBookGroup" >
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>200</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Song Book</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="SongBookLayout" >
|
||||
<property name="spacing" >
|
||||
<property name="margin">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" native="1" name="DetailsWidget" >
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="DetailsLayout" >
|
||||
<property name="horizontalSpacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="verticalSpacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="NameLabel" >
|
||||
<property name="text" >
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="NameLabel">
|
||||
<property name="text">
|
||||
<string>Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QLineEdit" name="NameEdit" />
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="NameEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QLabel" name="PublisherLabel" >
|
||||
<property name="text" >
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="PublisherLabel">
|
||||
<property name="text">
|
||||
<string>Publisher:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" >
|
||||
<widget class="QLineEdit" name="PublisherEdit" />
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="PublisherEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="MessageLabel" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" native="1" name="ButtonWidget" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="ButtonLayout" >
|
||||
<property name="spacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="margin" >
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer" >
|
||||
<property name="orientation" >
|
||||
<item row="2" column="1">
|
||||
<widget class="QDialogButtonBox" name="ButtonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<size>
|
||||
<width>61</width>
|
||||
<height>24</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ClearButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Clear Selection</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>New</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="AddUpdateButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Add Update Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Save</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="DeleteButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Delete Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons" >
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../images/openlp-2.qrc" />
|
||||
<include location="../images/openlp-2.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
@ -198,11 +65,11 @@
|
||||
<receiver>SongBookDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
@ -214,11 +81,11 @@
|
||||
<receiver>SongBookDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
|
@ -1,158 +1,52 @@
|
||||
<ui version="4.0" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>TopicsDialog</class>
|
||||
<widget class="QDialog" name="TopicsDialog" >
|
||||
<property name="geometry" >
|
||||
<widget class="QDialog" name="TopicsDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>471</width>
|
||||
<height>470</height>
|
||||
<width>365</width>
|
||||
<height>77</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Topic Maintenance</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="TopicsLayout" >
|
||||
<property name="margin" >
|
||||
<layout class="QFormLayout" name="TopicLayout">
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::ExpandingFieldsGrow</enum>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="verticalSpacing">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item row="1" column="0" >
|
||||
<widget class="QGroupBox" name="TopicGroupBox" >
|
||||
<property name="title" >
|
||||
<string>Topic Details</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="DetailsLayout" >
|
||||
<property name="margin" >
|
||||
<property name="margin">
|
||||
<number>8</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<number>8</number>
|
||||
</property>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="TopicNameLabel" >
|
||||
<property name="text" >
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="TopicNameLabel">
|
||||
<property name="text">
|
||||
<string>Topic Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" colspan="6" >
|
||||
<widget class="QLineEdit" name="TopicNameEdit" />
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="TopicNameEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3" >
|
||||
<spacer name="ButtonsSpacer" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<size>
|
||||
<width>198</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="5" >
|
||||
<widget class="QPushButton" name="DeleteButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Delete Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4" >
|
||||
<widget class="QPushButton" name="AddUpdateButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Add Update Author</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Save</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3" >
|
||||
<widget class="QPushButton" name="ClearButton" >
|
||||
<property name="toolTip" >
|
||||
<string>Clear Selection</string>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>New</string>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../images/openlp-2.qrc" >
|
||||
<normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QTableWidget" name="TopicsListView" >
|
||||
<property name="alternatingRowColors" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" >
|
||||
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons" >
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDialogButtonBox" name="TopicButtonBox">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../images/openlp-2.qrc" />
|
||||
<include location="../images/openlp-2.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>ButtonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>TopicsDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>ButtonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>TopicsDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel" >
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel" >
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
Loading…
Reference in New Issue
Block a user