forked from openlp/openlp
commit
fbd514d00f
|
@ -24,28 +24,17 @@ class EventType(object):
|
|||
Types of events are stored in this class.
|
||||
"""
|
||||
# "Default" event - a non-event
|
||||
Default = 0
|
||||
Default = 0
|
||||
# General application events
|
||||
InitApplication = -1
|
||||
ShowApplication = -2
|
||||
BeforeAppClose = -3
|
||||
ApplicationClose = -4
|
||||
# Service events
|
||||
BeforeLoadService = 1
|
||||
AfterLoadService = 2
|
||||
BeforeSaveService = 3
|
||||
AfterSaveService = 4
|
||||
LoadServiceItem = 5
|
||||
LoadServiceItem = 20
|
||||
# Preview events
|
||||
PreviewShow = 10
|
||||
LiveShow = 11
|
||||
#PreviewBeforeLoad = 11
|
||||
#PreviewAfterLoad = 12
|
||||
#PreviewBeforeShow = 13
|
||||
#PreviewAfterShow = 14
|
||||
|
||||
#Theme Related Events
|
||||
ThemeListChanged = 15
|
||||
PreviewShow = 30
|
||||
LiveShow = 31
|
||||
#Theme Related Events
|
||||
ThemeListChanged = 40
|
||||
#Plugin Related Events
|
||||
LoadSongList = 50
|
||||
|
||||
|
||||
class Event(object):
|
||||
|
|
|
@ -94,6 +94,7 @@ class Plugin(object):
|
|||
self.event_manager = plugin_helpers[u'event']
|
||||
self.render_manager = plugin_helpers[u'render']
|
||||
self.service_manager = plugin_helpers[u'service']
|
||||
self.settings= plugin_helpers[u'settings']
|
||||
|
||||
def check_pre_conditions(self):
|
||||
"""
|
||||
|
|
|
@ -165,7 +165,7 @@ class GeneralTab(SettingsTab):
|
|||
def load(self):
|
||||
for screen in self.screen_list:
|
||||
screen_name = translate(u'GeneralTab', u'Screen') + u' ' + \
|
||||
str(screen[u'number'] + 1)
|
||||
unicode(screen[u'number'] + 1)
|
||||
if screen[u'primary']:
|
||||
screen_name = screen_name + u' (' + \
|
||||
translate(u'GeneralTab', u'primary') + u')'
|
||||
|
@ -174,9 +174,9 @@ class GeneralTab(SettingsTab):
|
|||
self.MonitorNumber = int(self.config.get_config(u'Monitor', u'0'))
|
||||
self.Warning = str_to_bool(self.config.get_config(u'Warning', u'False'))
|
||||
self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u'False'))
|
||||
self.CCLNumber = str(self.config.get_config(u'CCL Number', u'XXX'))
|
||||
self.Username = str(self.config.get_config(u'User Name', u''))
|
||||
self.Password = str(self.config.get_config(u'Password', u''))
|
||||
self.CCLNumber = unicode(self.config.get_config(u'CCL Number', u'XXX'))
|
||||
self.Username = unicode(self.config.get_config(u'User Name', u''))
|
||||
self.Password = unicode(self.config.get_config(u'Password', u''))
|
||||
# Set a few things up
|
||||
self.MonitorComboBox.setCurrentIndex(self.MonitorNumber)
|
||||
self.WarningCheckBox.setChecked(self.Warning)
|
||||
|
|
|
@ -70,6 +70,7 @@ class MainWindow(object):
|
|||
self.plugin_helpers[u'theme'] = self.ThemeManagerContents
|
||||
self.plugin_helpers[u'render'] = self.RenderManager
|
||||
self.plugin_helpers[u'service'] = self.ServiceManagerContents
|
||||
self.plugin_helpers[u'settings'] = self.settingsForm
|
||||
self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers,
|
||||
self.EventManager)
|
||||
# hook methods have to happen after find_plugins. Find plugins needs the
|
||||
|
|
|
@ -103,6 +103,8 @@ class ServiceManager(QtGui.QWidget):
|
|||
# Connect up our signals and slots
|
||||
QtCore.QObject.connect(self.ThemeComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
||||
QtCore.QObject.connect(self.ServiceManagerList,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.makeLive)
|
||||
# Last little bits of setting up
|
||||
self.config = PluginConfig(u'Main')
|
||||
self.service_theme = self.config.get_config(u'theme service theme', u'')
|
||||
|
|
|
@ -17,7 +17,7 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|||
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 import TextListData
|
||||
|
||||
|
@ -36,13 +36,13 @@ class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
|
|||
self.author = None
|
||||
|
||||
QtCore.QObject.connect(self.DeleteButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.QObject.connect(self.ClearButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onClearButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
|
||||
QtCore.QObject.connect(self.AddUpdateButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.QObject.connect(self.DisplayEdit,
|
||||
QtCore.SIGNAL('lostFocus()'), self.onDisplayEditLostFocus)
|
||||
QtCore.SIGNAL(u'lostFocus()'), self.onDisplayEditLostFocus)
|
||||
QtCore.QObject.connect(self.AuthorListView,
|
||||
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onAuthorListViewItemClicked)
|
||||
|
||||
|
@ -114,10 +114,10 @@ class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
|
|||
self.FirstNameEdit.setText(self.author.first_name)
|
||||
self.LastNameEdit.setText(self.author.last_name)
|
||||
if len(self.author.songs) > 0:
|
||||
self.MessageLabel.setText("Author in use 'Delete' is disabled")
|
||||
self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled'))
|
||||
self.DeleteButton.setEnabled(False)
|
||||
else:
|
||||
self.MessageLabel.setText("Author is not used")
|
||||
self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used'))
|
||||
self.DeleteButton.setEnabled(True)
|
||||
self._validate_form()
|
||||
|
||||
|
|
|
@ -1,40 +1,33 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '/home/raoul/Projects/openlp-2/resources/forms/editsongdialog.ui'
|
||||
#
|
||||
# Created: Thu Feb 19 23:35:35 2009
|
||||
# by: PyQt4 UI code generator 4.4.4
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
class Ui_EditSongDialog(object):
|
||||
def setupUi(self, EditSongDialog):
|
||||
EditSongDialog.setObjectName("EditSongDialog")
|
||||
EditSongDialog.setObjectName(u'EditSongDialog')
|
||||
EditSongDialog.resize(786, 704)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(":/icon/openlp-logo-16x16.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
EditSongDialog.setWindowIcon(icon)
|
||||
EditSongDialog.setModal(True)
|
||||
self.EditSongLayout = QtGui.QVBoxLayout(EditSongDialog)
|
||||
self.EditSongLayout.setSpacing(8)
|
||||
self.EditSongLayout.setMargin(8)
|
||||
self.EditSongLayout.setObjectName("EditSongLayout")
|
||||
self.EditSongLayout.setObjectName(u'EditSongLayout')
|
||||
self.TopWidget = QtGui.QWidget(EditSongDialog)
|
||||
self.TopWidget.setObjectName("TopWidget")
|
||||
self.TopWidget.setObjectName(u'TopWidget')
|
||||
self.TopLayout = QtGui.QHBoxLayout(self.TopWidget)
|
||||
self.TopLayout.setSpacing(8)
|
||||
self.TopLayout.setMargin(0)
|
||||
self.TopLayout.setObjectName("TopLayout")
|
||||
self.TopLayout.setObjectName(u'TopLayout')
|
||||
self.TextWidget = QtGui.QWidget(self.TopWidget)
|
||||
self.TextWidget.setObjectName("TextWidget")
|
||||
self.TextWidget.setObjectName(u'TextWidget')
|
||||
self.DetailsLayout = QtGui.QVBoxLayout(self.TextWidget)
|
||||
self.DetailsLayout.setSpacing(8)
|
||||
self.DetailsLayout.setMargin(0)
|
||||
self.DetailsLayout.setObjectName("DetailsLayout")
|
||||
self.DetailsLayout.setObjectName(u'DetailsLayout')
|
||||
self.TitleLabel = QtGui.QLabel(self.TextWidget)
|
||||
self.TitleLabel.setObjectName("TitleLabel")
|
||||
self.TitleLabel.setObjectName(u'TitleLabel')
|
||||
self.DetailsLayout.addWidget(self.TitleLabel)
|
||||
self.TitleEditItem = QtGui.QLineEdit(self.TextWidget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
||||
|
@ -42,54 +35,54 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.TitleEditItem.sizePolicy().hasHeightForWidth())
|
||||
self.TitleEditItem.setSizePolicy(sizePolicy)
|
||||
self.TitleEditItem.setObjectName("TitleEditItem")
|
||||
self.TitleEditItem.setObjectName(u'TitleEditItem')
|
||||
self.DetailsLayout.addWidget(self.TitleEditItem)
|
||||
self.AlternativeTitleLabel = QtGui.QLabel(self.TextWidget)
|
||||
self.AlternativeTitleLabel.setObjectName("AlternativeTitleLabel")
|
||||
self.AlternativeTitleLabel.setObjectName(u'AlternativeTitleLabel')
|
||||
self.DetailsLayout.addWidget(self.AlternativeTitleLabel)
|
||||
self.AlternativeEdit = QtGui.QLineEdit(self.TextWidget)
|
||||
self.AlternativeEdit.setObjectName("AlternativeEdit")
|
||||
self.AlternativeEdit.setObjectName(u'AlternativeEdit')
|
||||
self.DetailsLayout.addWidget(self.AlternativeEdit)
|
||||
self.LyricsLabel = QtGui.QLabel(self.TextWidget)
|
||||
self.LyricsLabel.setObjectName("LyricsLabel")
|
||||
self.LyricsLabel.setObjectName(u'LyricsLabel')
|
||||
self.DetailsLayout.addWidget(self.LyricsLabel)
|
||||
self.VerseEditWidget = QtGui.QWidget(self.TextWidget)
|
||||
self.VerseEditWidget.setObjectName("VerseEditWidget")
|
||||
self.VerseEditWidget.setObjectName(u'VerseEditWidget')
|
||||
self.VerseEditLayout = QtGui.QVBoxLayout(self.VerseEditWidget)
|
||||
self.VerseEditLayout.setSpacing(8)
|
||||
self.VerseEditLayout.setMargin(0)
|
||||
self.VerseEditLayout.setObjectName("VerseEditLayout")
|
||||
self.VerseEditLayout.setObjectName(u'VerseEditLayout')
|
||||
self.VerseListWidget = QtGui.QListWidget(self.VerseEditWidget)
|
||||
self.VerseListWidget.setObjectName("VerseListWidget")
|
||||
self.VerseListWidget.setObjectName(u'VerseListWidget')
|
||||
self.VerseListWidget.setAlternatingRowColors(True)
|
||||
self.VerseEditLayout.addWidget(self.VerseListWidget)
|
||||
self.VerseButtonWidget = QtGui.QWidget(self.VerseEditWidget)
|
||||
self.VerseButtonWidget.setObjectName("VerseButtonWidget")
|
||||
self.VerseButtonWidget.setObjectName(u'VerseButtonWidget')
|
||||
self.VerseButtonLayout = QtGui.QHBoxLayout(self.VerseButtonWidget)
|
||||
self.VerseButtonLayout.setSpacing(8)
|
||||
self.VerseButtonLayout.setMargin(0)
|
||||
self.VerseButtonLayout.setObjectName("VerseButtonLayout")
|
||||
self.VerseButtonLayout.setObjectName(u'VerseButtonLayout')
|
||||
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.VerseButtonLayout.addItem(spacerItem)
|
||||
self.AddButton = QtGui.QPushButton(self.VerseButtonWidget)
|
||||
self.AddButton.setObjectName("AddButton")
|
||||
self.AddButton.setObjectName(u'AddButton')
|
||||
self.VerseButtonLayout.addWidget(self.AddButton)
|
||||
self.EditButton = QtGui.QPushButton(self.VerseButtonWidget)
|
||||
self.EditButton.setObjectName("EditButton")
|
||||
self.EditButton.setObjectName(u'EditButton')
|
||||
self.VerseButtonLayout.addWidget(self.EditButton)
|
||||
self.DeleteButton = QtGui.QPushButton(self.VerseButtonWidget)
|
||||
self.DeleteButton.setObjectName("DeleteButton")
|
||||
self.DeleteButton.setObjectName(u'DeleteButton')
|
||||
self.VerseButtonLayout.addWidget(self.DeleteButton)
|
||||
self.VerseEditLayout.addWidget(self.VerseButtonWidget)
|
||||
self.DetailsLayout.addWidget(self.VerseEditWidget)
|
||||
self.VerseOrderLabel = QtGui.QLabel(self.TextWidget)
|
||||
self.VerseOrderLabel.setObjectName("VerseOrderLabel")
|
||||
self.VerseOrderLabel.setObjectName(u'VerseOrderLabel')
|
||||
self.DetailsLayout.addWidget(self.VerseOrderLabel)
|
||||
self.VerseOrderEdit = QtGui.QLineEdit(self.TextWidget)
|
||||
self.VerseOrderEdit.setObjectName("VerseOrderEdit")
|
||||
self.VerseOrderEdit.setObjectName(u'VerseOrderEdit')
|
||||
self.DetailsLayout.addWidget(self.VerseOrderEdit)
|
||||
self.CommentsLabel = QtGui.QLabel(self.TextWidget)
|
||||
self.CommentsLabel.setObjectName("CommentsLabel")
|
||||
self.CommentsLabel.setObjectName(u'CommentsLabel')
|
||||
self.DetailsLayout.addWidget(self.CommentsLabel)
|
||||
self.CommentsEdit = QtGui.QTextEdit(self.TextWidget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
|
||||
|
@ -98,21 +91,17 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setHeightForWidth(self.CommentsEdit.sizePolicy().hasHeightForWidth())
|
||||
self.CommentsEdit.setSizePolicy(sizePolicy)
|
||||
self.CommentsEdit.setMaximumSize(QtCore.QSize(16777215, 84))
|
||||
self.CommentsEdit.setObjectName("CommentsEdit")
|
||||
self.CommentsEdit.setObjectName(u'CommentsEdit')
|
||||
self.DetailsLayout.addWidget(self.CommentsEdit)
|
||||
self.ThemeGroupBox = QtGui.QGroupBox(self.TextWidget)
|
||||
self.ThemeGroupBox.setObjectName("ThemeGroupBox")
|
||||
self.ThemeGroupBox.setObjectName(u'ThemeGroupBox')
|
||||
self.ThemeLayout = QtGui.QHBoxLayout(self.ThemeGroupBox)
|
||||
self.ThemeLayout.setSpacing(8)
|
||||
self.ThemeLayout.setMargin(8)
|
||||
self.ThemeLayout.setObjectName("ThemeLayout")
|
||||
self.ThemeLayout.setObjectName(u'ThemeLayout')
|
||||
self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
|
||||
self.ThemeSelectionComboItem.setObjectName("ThemeSelectionComboItem")
|
||||
self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem')
|
||||
self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
|
||||
# self.ThemeAddItem = QtGui.QPushButton(self.ThemeGroupBox)
|
||||
# self.ThemeAddItem.setMaximumSize(QtCore.QSize(110, 16777215))
|
||||
# self.ThemeAddItem.setObjectName("ThemeAddItem")
|
||||
# self.ThemeLayout.addWidget(self.ThemeAddItem)
|
||||
self.DetailsLayout.addWidget(self.ThemeGroupBox)
|
||||
self.TopLayout.addWidget(self.TextWidget)
|
||||
self.AdditionalWidget = QtGui.QWidget(self.TopWidget)
|
||||
|
@ -122,23 +111,23 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setHeightForWidth(self.AdditionalWidget.sizePolicy().hasHeightForWidth())
|
||||
self.AdditionalWidget.setSizePolicy(sizePolicy)
|
||||
self.AdditionalWidget.setMinimumSize(QtCore.QSize(100, 0))
|
||||
self.AdditionalWidget.setObjectName("AdditionalWidget")
|
||||
self.AdditionalWidget.setObjectName(u'AdditionalWidget')
|
||||
self.AdditionalLayout = QtGui.QVBoxLayout(self.AdditionalWidget)
|
||||
self.AdditionalLayout.setSpacing(8)
|
||||
self.AdditionalLayout.setMargin(0)
|
||||
self.AdditionalLayout.setObjectName("AdditionalLayout")
|
||||
self.AdditionalLayout.setObjectName(u'AdditionalLayout')
|
||||
self.AuthorsGroupBox = QtGui.QGroupBox(self.AdditionalWidget)
|
||||
self.AuthorsGroupBox.setObjectName("AuthorsGroupBox")
|
||||
self.AuthorsGroupBox.setObjectName(u'AuthorsGroupBox')
|
||||
self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsGroupBox)
|
||||
self.AuthorsLayout.setSpacing(8)
|
||||
self.AuthorsLayout.setMargin(8)
|
||||
self.AuthorsLayout.setObjectName("AuthorsLayout")
|
||||
self.AuthorsLayout.setObjectName(u'AuthorsLayout')
|
||||
self.AuthorAddWidget = QtGui.QWidget(self.AuthorsGroupBox)
|
||||
self.AuthorAddWidget.setObjectName("AuthorAddWidget")
|
||||
self.AuthorAddWidget.setObjectName(u'AuthorAddWidget')
|
||||
self.AddAuthorLayout = QtGui.QHBoxLayout(self.AuthorAddWidget)
|
||||
self.AddAuthorLayout.setSpacing(8)
|
||||
self.AddAuthorLayout.setMargin(0)
|
||||
self.AddAuthorLayout.setObjectName("AddAuthorLayout")
|
||||
self.AddAuthorLayout.setObjectName(u'AddAuthorLayout')
|
||||
self.AuthorsSelectionComboItem = QtGui.QComboBox(self.AuthorAddWidget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
|
@ -149,48 +138,46 @@ class Ui_EditSongDialog(object):
|
|||
self.AuthorsSelectionComboItem.setInsertPolicy(QtGui.QComboBox.InsertAlphabetically)
|
||||
self.AuthorsSelectionComboItem.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
|
||||
self.AuthorsSelectionComboItem.setMinimumContentsLength(8)
|
||||
self.AuthorsSelectionComboItem.setObjectName("AuthorsSelectionComboItem")
|
||||
self.AuthorsSelectionComboItem.setObjectName(u'AuthorsSelectionComboItem')
|
||||
self.AddAuthorLayout.addWidget(self.AuthorsSelectionComboItem)
|
||||
self.AuthorAddtoSongItem = QtGui.QPushButton(self.AuthorAddWidget)
|
||||
self.AuthorAddtoSongItem.setMaximumSize(QtCore.QSize(110, 16777215))
|
||||
self.AuthorAddtoSongItem.setObjectName("AuthorAddtoSongItem")
|
||||
self.AuthorAddtoSongItem.setObjectName(u'AuthorAddtoSongItem')
|
||||
self.AddAuthorLayout.addWidget(self.AuthorAddtoSongItem)
|
||||
self.AuthorsLayout.addWidget(self.AuthorAddWidget)
|
||||
self.AuthorsListView = QtGui.QTableWidget(self.AuthorsGroupBox)
|
||||
self.AuthorsListView = QtGui.QListWidget(self.AuthorsGroupBox)
|
||||
self.AuthorsListView.setAlternatingRowColors(True)
|
||||
self.AuthorsListView.setObjectName("AuthorsListView")
|
||||
self.AuthorsListView.setColumnCount(0)
|
||||
self.AuthorsListView.setRowCount(0)
|
||||
self.AuthorsListView.setObjectName(u'AuthorsListView')
|
||||
self.AuthorsLayout.addWidget(self.AuthorsListView)
|
||||
self.AuthorRemoveWidget = QtGui.QWidget(self.AuthorsGroupBox)
|
||||
self.AuthorRemoveWidget.setObjectName("AuthorRemoveWidget")
|
||||
self.AuthorRemoveWidget.setObjectName(u'AuthorRemoveWidget')
|
||||
self.AuthorRemoveLayout = QtGui.QHBoxLayout(self.AuthorRemoveWidget)
|
||||
self.AuthorRemoveLayout.setSpacing(8)
|
||||
self.AuthorRemoveLayout.setMargin(0)
|
||||
self.AuthorRemoveLayout.setObjectName("AuthorRemoveLayout")
|
||||
self.AuthorRemoveLayout.setObjectName(u'AuthorRemoveLayout')
|
||||
spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.AuthorRemoveLayout.addItem(spacerItem1)
|
||||
self.AuthorRemoveItem = QtGui.QPushButton(self.AuthorRemoveWidget)
|
||||
self.AuthorRemoveItem.setObjectName("AuthorRemoveItem")
|
||||
self.AuthorRemoveItem.setObjectName(u'AuthorRemoveItem')
|
||||
self.AuthorRemoveLayout.addWidget(self.AuthorRemoveItem)
|
||||
self.AddAuthorsButton = QtGui.QPushButton(self.AuthorRemoveWidget)
|
||||
self.AddAuthorsButton.setObjectName("AddAuthorsButton")
|
||||
self.AddAuthorsButton.setObjectName(u'AddAuthorsButton')
|
||||
self.AuthorRemoveLayout.addWidget(self.AddAuthorsButton)
|
||||
self.AuthorsLayout.addWidget(self.AuthorRemoveWidget)
|
||||
self.AdditionalLayout.addWidget(self.AuthorsGroupBox)
|
||||
self.SongBookGroup = QtGui.QGroupBox(self.AdditionalWidget)
|
||||
self.SongBookGroup.setObjectName("SongBookGroup")
|
||||
self.SongBookGroup.setObjectName(u'SongBookGroup')
|
||||
self.SongbookLayout = QtGui.QGridLayout(self.SongBookGroup)
|
||||
self.SongbookLayout.setMargin(8)
|
||||
self.SongbookLayout.setSpacing(8)
|
||||
self.SongbookLayout.setObjectName("SongbookLayout")
|
||||
self.SongbookLayout.setObjectName(u'SongbookLayout')
|
||||
self.SongbookCombo = QtGui.QComboBox(self.SongBookGroup)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.SongbookCombo.sizePolicy().hasHeightForWidth())
|
||||
self.SongbookCombo.setSizePolicy(sizePolicy)
|
||||
self.SongbookCombo.setObjectName("SongbookCombo")
|
||||
self.SongbookCombo.setObjectName(u'SongbookCombo')
|
||||
self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
|
||||
self.AddSongBookButton = QtGui.QPushButton(self.SongBookGroup)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
|
||||
|
@ -198,7 +185,7 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.AddSongBookButton.sizePolicy().hasHeightForWidth())
|
||||
self.AddSongBookButton.setSizePolicy(sizePolicy)
|
||||
self.AddSongBookButton.setObjectName("AddSongBookButton")
|
||||
self.AddSongBookButton.setObjectName(u'AddSongBookButton')
|
||||
self.SongbookLayout.addWidget(self.AddSongBookButton, 0, 1, 1, 1)
|
||||
self.AdditionalLayout.addWidget(self.SongBookGroup)
|
||||
self.TopicGroupBox = QtGui.QGroupBox(self.AdditionalWidget)
|
||||
|
@ -207,24 +194,24 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.TopicGroupBox.sizePolicy().hasHeightForWidth())
|
||||
self.TopicGroupBox.setSizePolicy(sizePolicy)
|
||||
self.TopicGroupBox.setObjectName("TopicGroupBox")
|
||||
self.TopicGroupBox.setObjectName(u'TopicGroupBox')
|
||||
self.TopicLayout = QtGui.QVBoxLayout(self.TopicGroupBox)
|
||||
self.TopicLayout.setSpacing(8)
|
||||
self.TopicLayout.setMargin(8)
|
||||
self.TopicLayout.setObjectName("TopicLayout")
|
||||
self.TopicLayout.setObjectName(u'TopicLayout')
|
||||
self.TopicAddWidget = QtGui.QWidget(self.TopicGroupBox)
|
||||
self.TopicAddWidget.setObjectName("TopicAddWidget")
|
||||
self.TopicAddWidget.setObjectName(u'TopicAddWidget')
|
||||
self.TopicAddLayout = QtGui.QHBoxLayout(self.TopicAddWidget)
|
||||
self.TopicAddLayout.setSpacing(8)
|
||||
self.TopicAddLayout.setMargin(0)
|
||||
self.TopicAddLayout.setObjectName("TopicAddLayout")
|
||||
self.TopicAddLayout.setObjectName(u'TopicAddLayout')
|
||||
self.SongTopicCombo = QtGui.QComboBox(self.TopicAddWidget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.SongTopicCombo.sizePolicy().hasHeightForWidth())
|
||||
self.SongTopicCombo.setSizePolicy(sizePolicy)
|
||||
self.SongTopicCombo.setObjectName("SongTopicCombo")
|
||||
self.SongTopicCombo.setObjectName(u'SongTopicCombo')
|
||||
self.TopicAddLayout.addWidget(self.SongTopicCombo)
|
||||
self.AddTopicsToSongButton = QtGui.QPushButton(self.TopicAddWidget)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
|
||||
|
@ -232,62 +219,60 @@ class Ui_EditSongDialog(object):
|
|||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.AddTopicsToSongButton.sizePolicy().hasHeightForWidth())
|
||||
self.AddTopicsToSongButton.setSizePolicy(sizePolicy)
|
||||
self.AddTopicsToSongButton.setObjectName("AddTopicsToSongButton")
|
||||
self.AddTopicsToSongButton.setObjectName(u'AddTopicsToSongButton')
|
||||
self.TopicAddLayout.addWidget(self.AddTopicsToSongButton)
|
||||
self.TopicLayout.addWidget(self.TopicAddWidget)
|
||||
self.TopicsListView = QtGui.QTableWidget(self.TopicGroupBox)
|
||||
self.TopicsListView = QtGui.QListWidget(self.TopicGroupBox)
|
||||
self.TopicsListView.setAlternatingRowColors(True)
|
||||
self.TopicsListView.setObjectName("TopicsListView")
|
||||
self.TopicsListView.setColumnCount(0)
|
||||
self.TopicsListView.setRowCount(0)
|
||||
self.TopicsListView.setObjectName(u'TopicsListView')
|
||||
self.TopicLayout.addWidget(self.TopicsListView)
|
||||
self.TopicRemoveWidget = QtGui.QWidget(self.TopicGroupBox)
|
||||
self.TopicRemoveWidget.setObjectName("TopicRemoveWidget")
|
||||
self.TopicRemoveWidget.setObjectName(u'TopicRemoveWidget')
|
||||
self.TopicRemoveLayout = QtGui.QHBoxLayout(self.TopicRemoveWidget)
|
||||
self.TopicRemoveLayout.setSpacing(8)
|
||||
self.TopicRemoveLayout.setMargin(0)
|
||||
self.TopicRemoveLayout.setObjectName("TopicRemoveLayout")
|
||||
self.TopicRemoveLayout.setObjectName(u'TopicRemoveLayout')
|
||||
spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.TopicRemoveLayout.addItem(spacerItem2)
|
||||
self.pushButton = QtGui.QPushButton(self.TopicRemoveWidget)
|
||||
self.pushButton.setObjectName("pushButton")
|
||||
self.TopicRemoveLayout.addWidget(self.pushButton)
|
||||
self.TopicRemoveItem = QtGui.QPushButton(self.TopicRemoveWidget)
|
||||
self.TopicRemoveItem.setObjectName(u'TopicRemoveItem')
|
||||
self.TopicRemoveLayout.addWidget(self.TopicRemoveItem)
|
||||
self.AddTopicButton = QtGui.QPushButton(self.TopicRemoveWidget)
|
||||
self.AddTopicButton.setObjectName("AddTopicButton")
|
||||
self.AddTopicButton.setObjectName(u'AddTopicButton')
|
||||
self.TopicRemoveLayout.addWidget(self.AddTopicButton)
|
||||
self.TopicLayout.addWidget(self.TopicRemoveWidget)
|
||||
self.AdditionalLayout.addWidget(self.TopicGroupBox)
|
||||
self.CopyrightgroupBox = QtGui.QGroupBox(self.AdditionalWidget)
|
||||
self.CopyrightgroupBox.setObjectName("CopyrightgroupBox")
|
||||
self.CopyrightgroupBox.setObjectName(u'CopyrightgroupBox')
|
||||
self.CopyrightLayout = QtGui.QVBoxLayout(self.CopyrightgroupBox)
|
||||
self.CopyrightLayout.setSpacing(8)
|
||||
self.CopyrightLayout.setMargin(8)
|
||||
self.CopyrightLayout.setObjectName("CopyrightLayout")
|
||||
self.CopyrightLayout.setObjectName(u'CopyrightLayout')
|
||||
self.CopyrightWidget = QtGui.QWidget(self.CopyrightgroupBox)
|
||||
self.CopyrightWidget.setObjectName("CopyrightWidget")
|
||||
self.CopyrightWidget.setObjectName(u'CopyrightWidget')
|
||||
self.CopyLayout = QtGui.QHBoxLayout(self.CopyrightWidget)
|
||||
self.CopyLayout.setSpacing(8)
|
||||
self.CopyLayout.setMargin(0)
|
||||
self.CopyLayout.setObjectName("CopyLayout")
|
||||
self.CopyLayout.setObjectName(u'CopyLayout')
|
||||
self.CopyrightEditItem = QtGui.QLineEdit(self.CopyrightWidget)
|
||||
self.CopyrightEditItem.setObjectName("CopyrightEditItem")
|
||||
self.CopyrightEditItem.setObjectName(u'CopyrightEditItem')
|
||||
self.CopyLayout.addWidget(self.CopyrightEditItem)
|
||||
self.CopyrightInsertItem = QtGui.QPushButton(self.CopyrightWidget)
|
||||
self.CopyrightInsertItem.setMaximumSize(QtCore.QSize(29, 16777215))
|
||||
self.CopyrightInsertItem.setObjectName("CopyrightInsertItem")
|
||||
self.CopyrightInsertItem.setObjectName(u'CopyrightInsertItem')
|
||||
self.CopyLayout.addWidget(self.CopyrightInsertItem)
|
||||
self.CopyrightLayout.addWidget(self.CopyrightWidget)
|
||||
self.CcliWidget = QtGui.QWidget(self.CopyrightgroupBox)
|
||||
self.CcliWidget.setObjectName("CcliWidget")
|
||||
self.CcliWidget.setObjectName(u'CcliWidget')
|
||||
self.CCLILayout = QtGui.QHBoxLayout(self.CcliWidget)
|
||||
self.CCLILayout.setSpacing(8)
|
||||
self.CCLILayout.setMargin(0)
|
||||
self.CCLILayout.setObjectName("CCLILayout")
|
||||
self.CCLILayout.setObjectName(u'CCLILayout')
|
||||
self.CCLILabel = QtGui.QLabel(self.CcliWidget)
|
||||
self.CCLILabel.setObjectName("CCLILabel")
|
||||
self.CCLILabel.setObjectName(u'CCLILabel')
|
||||
self.CCLILayout.addWidget(self.CCLILabel)
|
||||
self.CCLNumberEdit = QtGui.QLineEdit(self.CcliWidget)
|
||||
self.CCLNumberEdit.setObjectName("CCLNumberEdit")
|
||||
self.CCLNumberEdit.setObjectName(u'CCLNumberEdit')
|
||||
self.CCLILayout.addWidget(self.CCLNumberEdit)
|
||||
self.CopyrightLayout.addWidget(self.CcliWidget)
|
||||
self.AdditionalLayout.addWidget(self.CopyrightgroupBox)
|
||||
|
@ -295,12 +280,12 @@ class Ui_EditSongDialog(object):
|
|||
self.EditSongLayout.addWidget(self.TopWidget)
|
||||
self.ButtonBox = QtGui.QDialogButtonBox(EditSongDialog)
|
||||
self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save)
|
||||
self.ButtonBox.setObjectName("ButtonBox")
|
||||
self.ButtonBox.setObjectName(u'ButtonBox')
|
||||
self.EditSongLayout.addWidget(self.ButtonBox)
|
||||
|
||||
self.retranslateUi(EditSongDialog)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("rejected()"), EditSongDialog.close)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("accepted()"), EditSongDialog.close)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), EditSongDialog.close)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), self.onAccept)
|
||||
QtCore.QMetaObject.connectSlotsByName(EditSongDialog)
|
||||
EditSongDialog.setTabOrder(self.TitleEditItem, self.AlternativeEdit)
|
||||
EditSongDialog.setTabOrder(self.AlternativeEdit, self.VerseOrderEdit)
|
||||
|
@ -313,33 +298,33 @@ class Ui_EditSongDialog(object):
|
|||
EditSongDialog.setTabOrder(self.SongbookCombo, self.AddSongBookButton)
|
||||
EditSongDialog.setTabOrder(self.AddSongBookButton, self.SongTopicCombo)
|
||||
EditSongDialog.setTabOrder(self.SongTopicCombo, self.TopicsListView)
|
||||
EditSongDialog.setTabOrder(self.TopicsListView, self.pushButton)
|
||||
EditSongDialog.setTabOrder(self.pushButton, self.CopyrightEditItem)
|
||||
EditSongDialog.setTabOrder(self.TopicsListView, self.TopicRemoveItem)
|
||||
EditSongDialog.setTabOrder(self.TopicRemoveItem, self.CopyrightEditItem)
|
||||
EditSongDialog.setTabOrder(self.CopyrightEditItem, self.CopyrightInsertItem)
|
||||
EditSongDialog.setTabOrder(self.CopyrightInsertItem, self.CCLNumberEdit)
|
||||
EditSongDialog.setTabOrder(self.CCLNumberEdit, self.ButtonBox)
|
||||
|
||||
def retranslateUi(self, EditSongDialog):
|
||||
EditSongDialog.setWindowTitle(QtGui.QApplication.translate("EditSongDialog", "Song Editor", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.TitleLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Title:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AlternativeTitleLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Alternative Title:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.LyricsLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Lyrics:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AddButton.setText(QtGui.QApplication.translate("EditSongDialog", "Add", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.EditButton.setText(QtGui.QApplication.translate("EditSongDialog", "Edit", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.DeleteButton.setText(QtGui.QApplication.translate("EditSongDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.VerseOrderLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Verse Order:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.CommentsLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Comments:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ThemeGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Theme", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AuthorsGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Authors", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AuthorAddtoSongItem.setText(QtGui.QApplication.translate("EditSongDialog", "Add to Song", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AuthorRemoveItem.setText(QtGui.QApplication.translate("EditSongDialog", "Remove", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AddAuthorsButton.setText(QtGui.QApplication.translate("EditSongDialog", "Manage Authors", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.SongBookGroup.setTitle(QtGui.QApplication.translate("EditSongDialog", "Song Book", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AddSongBookButton.setText(QtGui.QApplication.translate("EditSongDialog", "Manage Song Books", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.TopicGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Topic", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AddTopicsToSongButton.setText(QtGui.QApplication.translate("EditSongDialog", "Add to Song", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.pushButton.setText(QtGui.QApplication.translate("EditSongDialog", "Remove", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.AddTopicButton.setText(QtGui.QApplication.translate("EditSongDialog", "Manage Topics", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.CopyrightgroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Copyright Infomaton", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.CopyrightInsertItem.setText(QtGui.QApplication.translate("EditSongDialog", "©", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.CCLILabel.setText(QtGui.QApplication.translate("EditSongDialog", "CCLI Number:", None, QtGui.QApplication.UnicodeUTF8))
|
||||
EditSongDialog.setWindowTitle(translate(u'EditSongDialog', u'Song Editor'))
|
||||
self.TitleLabel.setText(translate(u'EditSongDialog', u'Title:'))
|
||||
self.AlternativeTitleLabel.setText(translate(u'EditSongDialog', u'Alternative Title:'))
|
||||
self.LyricsLabel.setText(translate(u'EditSongDialog', u'Lyrics:'))
|
||||
self.AddButton.setText(translate(u'EditSongDialog', u'Add'))
|
||||
self.EditButton.setText(translate(u'EditSongDialog', u'Edit'))
|
||||
self.DeleteButton.setText(translate(u'EditSongDialog', u'Delete'))
|
||||
self.VerseOrderLabel.setText(translate(u'EditSongDialog', u'Verse Order:'))
|
||||
self.CommentsLabel.setText(translate(u'EditSongDialog', u'Comments:'))
|
||||
self.ThemeGroupBox.setTitle(translate(u'EditSongDialog', u'Theme'))
|
||||
self.AuthorsGroupBox.setTitle(translate(u'EditSongDialog', u'Authors'))
|
||||
self.AuthorAddtoSongItem.setText(translate(u'EditSongDialog', u'Add to Song'))
|
||||
self.AuthorRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
|
||||
self.AddAuthorsButton.setText(translate(u'EditSongDialog', u'Manage Authors'))
|
||||
self.SongBookGroup.setTitle(translate(u'EditSongDialog', u'Song Book'))
|
||||
self.AddSongBookButton.setText(translate(u'EditSongDialog', u'Manage Song Books'))
|
||||
self.TopicGroupBox.setTitle(translate(u'EditSongDialog', u'Topic'))
|
||||
self.AddTopicsToSongButton.setText(translate(u'EditSongDialog', u'Add to Song'))
|
||||
self.TopicRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
|
||||
self.AddTopicButton.setText(translate(u'EditSongDialog', u'Manage Topics'))
|
||||
self.CopyrightgroupBox.setTitle(translate(u'EditSongDialog', u'Copyright Infomaton'))
|
||||
self.CopyrightInsertItem.setText(translate(u'EditSongDialog', u'(c)'))
|
||||
self.CCLILabel.setText(translate(u'EditSongDialog', u'CCLI Number:'))
|
||||
|
|
|
@ -17,18 +17,23 @@ You should have received a copy of the GNU General Public License along with
|
|||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
import logging
|
||||
from PyQt4 import Qt, QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SongXMLBuilder, SongXMLParser, Event, EventType, EventManager
|
||||
from openlp.plugins.songs.forms import AuthorsForm, TopicsForm, SongBookForm, \
|
||||
EditVerseForm
|
||||
from openlp.plugins.songs.lib.models import Song
|
||||
|
||||
from editsongdialog import Ui_EditSongDialog
|
||||
|
||||
class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
"""
|
||||
Class documentation goes here.
|
||||
Class to manage the editing of a song
|
||||
"""
|
||||
def __init__(self, songmanager, parent=None):
|
||||
global log
|
||||
log = logging.getLogger(u'EditSongForm')
|
||||
log.info(u'Song Editor loaded')
|
||||
def __init__(self, songmanager, eventmanager, parent=None):
|
||||
"""
|
||||
Constructor
|
||||
"""
|
||||
|
@ -36,41 +41,59 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
self.setupUi(self)
|
||||
# Connecting signals and slots
|
||||
QtCore.QObject.connect(self.AddAuthorsButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onAddAuthorsButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAddAuthorsButtonClicked)
|
||||
QtCore.QObject.connect(self.AuthorAddtoSongItem,
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAuthorAddtoSongItemClicked)
|
||||
QtCore.QObject.connect(self.AuthorRemoveItem,
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAuthorRemovefromSongItemClicked)
|
||||
QtCore.QObject.connect(self.AuthorsListView,
|
||||
QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onAuthorsListViewPressed)
|
||||
QtCore.QObject.connect(self.AddTopicButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onAddTopicButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAddTopicButtonClicked)
|
||||
QtCore.QObject.connect(self.AddTopicsToSongButton,
|
||||
QtCore.SIGNAL(u'clicked()'), self.onTopicAddtoSongItemClicked)
|
||||
QtCore.QObject.connect(self.TopicRemoveItem,
|
||||
QtCore.SIGNAL(u'clicked()'), self.onTopicRemovefromSongItemClicked)
|
||||
QtCore.QObject.connect(self.TopicsListView,
|
||||
QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onTopicListViewPressed)
|
||||
QtCore.QObject.connect(self.AddSongBookButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onAddSongBookButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAddSongBookButtonClicked)
|
||||
QtCore.QObject.connect(self.CopyrightInsertItem,
|
||||
QtCore.SIGNAL('clicked()'), self.onCopyrightInsertItemTriggered)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertItemTriggered)
|
||||
QtCore.QObject.connect(self.AddButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onAddVerseButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onAddVerseButtonClicked)
|
||||
QtCore.QObject.connect(self.EditButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onEditVerseButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onEditVerseButtonClicked)
|
||||
QtCore.QObject.connect(self.DeleteButton,
|
||||
QtCore.SIGNAL('clicked()'), self.onDeleteVerseButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onDeleteVerseButtonClicked)
|
||||
QtCore.QObject.connect(self.VerseListWidget,
|
||||
QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onVerseListViewPressed)
|
||||
QtCore.QObject.connect(self.SongbookCombo,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onSongBookComboChanged)
|
||||
QtCore.QObject.connect(self.ThemeSelectionComboItem,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboChanged)
|
||||
# Create other objects and forms
|
||||
self.songmanager = songmanager
|
||||
self.eventmanager = eventmanager
|
||||
self.authors_form = AuthorsForm(self.songmanager)
|
||||
self.topics_form = TopicsForm(self.songmanager)
|
||||
self.song_book_form = SongBookForm(self.songmanager)
|
||||
self.verse_form = EditVerseForm()
|
||||
self.initialise()
|
||||
|
||||
self.AuthorsListView.setColumnCount(2)
|
||||
self.AuthorsListView.setColumnHidden(0, True)
|
||||
self.AuthorsListView.setColumnWidth(1, 200)
|
||||
self.AuthorsListView.setShowGrid(False)
|
||||
self.AuthorsListView.setSortingEnabled(False)
|
||||
self.AuthorsListView.setAlternatingRowColors(True)
|
||||
self.AuthorsListView.horizontalHeader().setVisible(False)
|
||||
self.AuthorsListView.verticalHeader().setVisible(False)
|
||||
self.savebutton = self.ButtonBox.button(QtGui.QDialogButtonBox.Save)
|
||||
self.TopicsListView.setSortingEnabled(False)
|
||||
self.TopicsListView.setAlternatingRowColors(True)
|
||||
|
||||
def initialise(self):
|
||||
self.loadAuthors()
|
||||
self.loadTopics()
|
||||
self.loadBooks()
|
||||
self.EditButton.setEnabled(False)
|
||||
self.DeleteButton.setEnabled(False)
|
||||
self.AuthorRemoveItem.setEnabled(False)
|
||||
self.TopicRemoveItem.setEnabled(False)
|
||||
self.title_change = False
|
||||
|
||||
def loadAuthors(self):
|
||||
authors = self.songmanager.get_authors()
|
||||
|
@ -87,29 +110,115 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
def loadBooks(self):
|
||||
books = self.songmanager.get_books()
|
||||
self.SongbookCombo.clear()
|
||||
self.SongbookCombo.addItem(u' ')
|
||||
for book in books:
|
||||
self.SongbookCombo.addItem(book.name)
|
||||
|
||||
def loadThemes(self, theme_list):
|
||||
self.ThemeSelectionComboItem.clear()
|
||||
self.ThemeSelectionComboItem.addItem(u' ')
|
||||
for theme in theme_list:
|
||||
self.ThemeSelectionComboItem.addItem(theme)
|
||||
|
||||
def newSong(self):
|
||||
log.debug(u'New Song')
|
||||
self.song = Song()
|
||||
self.TitleEditItem.setText(u'')
|
||||
self.AlternativeEdit.setText(u'')
|
||||
self.CopyrightEditItem.setText(u'')
|
||||
self.VerseListWidget.clear()
|
||||
self.AuthorsListView.clear()
|
||||
self.TopicsListView.clear()
|
||||
self.title_change = False
|
||||
|
||||
def loadSong(self, id):
|
||||
log.debug(u'Load Song')
|
||||
self.song = self.songmanager.get_song(id)
|
||||
self.TitleEditItem.setText(self.song.title)
|
||||
title = self.song.search_title.split(u'@')
|
||||
if self.song.song_book_id != 0:
|
||||
book_name = self.songmanager.get_book(self.song.song_book_id)
|
||||
id = self.SongbookCombo.findText(unicode(book_name), QtCore.Qt.MatchExactly)
|
||||
if id == -1:
|
||||
# Not Found
|
||||
id = 0
|
||||
book_name.setCurrentIndex(id)
|
||||
if self.song.theme_name is not None and len(self.song.theme_name) > 0:
|
||||
id = self.SongbookCombo.findText(unicode(self.song.theme_name), QtCore.Qt.MatchExactly)
|
||||
if id == -1:
|
||||
# Not Found
|
||||
id = 0
|
||||
self.song.theme_name = None
|
||||
self.SongbookCombo.setCurrentIndex(id)
|
||||
if len(title) > 1:
|
||||
self.AlternativeEdit.setText(title[1])
|
||||
self.CopyrightEditItem.setText(self.song.copyright)
|
||||
#self.LyricsTextEdit.setText(self.song.lyrics)
|
||||
verses = self.song.lyrics.split('\n\n')
|
||||
for verse in verses:
|
||||
self.VerseListWidget.addItem(verse)
|
||||
|
||||
self.AuthorsListView.clear() # clear the results
|
||||
self.AuthorsListView.setRowCount(0)
|
||||
self.VerseListWidget.clear()
|
||||
#lazy xml migration for now
|
||||
if self.song.lyrics.startswith(u'<?xml version='):
|
||||
songXML=SongXMLParser(self.song.lyrics)
|
||||
verseList = songXML.get_verses()
|
||||
for verse in verseList:
|
||||
self.VerseListWidget.addItem(verse[1])
|
||||
else:
|
||||
verses = self.song.lyrics.split(u'\n\n')
|
||||
for verse in verses:
|
||||
self.VerseListWidget.addItem(verse)
|
||||
# clear the results
|
||||
self.AuthorsListView.clear()
|
||||
for author in self.song.authors:
|
||||
row_count = self.AuthorsListView.rowCount()
|
||||
self.AuthorsListView.setRowCount(row_count + 1)
|
||||
author_id = QtGui.QTableWidgetItem(str(author.id))
|
||||
self.AuthorsListView.setItem(row_count, 0, author_id)
|
||||
author_name = QtGui.QTableWidgetItem(str(author.display_name))
|
||||
self.AuthorsListView.setItem(row_count, 1, author_name)
|
||||
self.AuthorsListView.setRowHeight(row_count, 20)
|
||||
author_name = QtGui.QListWidgetItem(unicode(author.display_name))
|
||||
author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
|
||||
self.AuthorsListView.addItem(author_name)
|
||||
# clear the results
|
||||
self.TopicsListView.clear()
|
||||
for topic in self.song.topics:
|
||||
topic_name = QtGui.QListWidgetItem(unicode(topic.name))
|
||||
topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
|
||||
self.TopicsListView.addItem(topic_name)
|
||||
self._validate_song()
|
||||
self.title_change = False
|
||||
|
||||
def onAuthorAddtoSongItemClicked(self):
|
||||
author_name = unicode(self.AuthorsSelectionComboItem.currentText())
|
||||
author = self.songmanager.get_author_by_name(author_name)
|
||||
self.song.authors.append(author)
|
||||
author_item = QtGui.QListWidgetItem(unicode(author.display_name))
|
||||
author_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
|
||||
self.AuthorsListView.addItem(author_item)
|
||||
|
||||
def onAuthorsListViewPressed(self):
|
||||
if self.AuthorsListView.count() >1:
|
||||
self.AuthorRemoveItem.setEnabled(True)
|
||||
|
||||
def onAuthorRemovefromSongItemClicked(self):
|
||||
self.AuthorRemoveItem.setEnabled(False)
|
||||
item = self.AuthorsListView.currentItem()
|
||||
author_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||
author = self.songmanager.get_author(author_id)
|
||||
self.song.authors.remove(author)
|
||||
row = self.AuthorsListView.row(item)
|
||||
self.AuthorsListView.takeItem(row)
|
||||
|
||||
def onTopicAddtoSongItemClicked(self):
|
||||
topic_name = unicode(self.SongTopicCombo.currentText())
|
||||
topic = self.songmanager.get_topic_by_name(topic_name)
|
||||
self.song.topics.append(topic)
|
||||
topic_item = QtGui.QListWidgetItem(unicode(topic.name))
|
||||
topic_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
|
||||
self.TopicsListView.addItem(topic_item)
|
||||
|
||||
def onTopicListViewPressed(self):
|
||||
self.TopicRemoveItem.setEnabled(True)
|
||||
|
||||
def onTopicRemovefromSongItemClicked(self):
|
||||
self.TopicRemoveItem.setEnabled(False)
|
||||
item = self.TopicsListView.currentItem()
|
||||
topic_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||
topic = self.songmanager.get_topic(topic_id)
|
||||
self.song.topics.remove(topic)
|
||||
row = self.TopicsListView.row(item)
|
||||
self.TopicsListView.takeItem(row)
|
||||
|
||||
def onAddAuthorsButtonClicked(self):
|
||||
"""
|
||||
|
@ -135,54 +244,75 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
self.song_book_form.exec_()
|
||||
self.loadBooks()
|
||||
|
||||
def onSongBookComboChanged(self, item):
|
||||
if item == 0:
|
||||
self.song.song_book_id = 0
|
||||
else:
|
||||
book_name = unicode(self.SongbookCombo.itemText(item))
|
||||
book = self.songmanager.get_book_by_name(book_name)
|
||||
self.song.song_book_id = book.id
|
||||
|
||||
def onThemeComboChanged(self, item):
|
||||
if item == 0:
|
||||
#None means no Theme
|
||||
self.song.song_theme = None
|
||||
else:
|
||||
them_name = unicode(self.ThemeSelectionComboItem.itemText(item))
|
||||
self.song.theme_name = them_name
|
||||
|
||||
def onVerseListViewPressed(self):
|
||||
self.EditButton.setEnabled(True)
|
||||
self.DeleteButton.setEnabled(True)
|
||||
|
||||
def onAddVerseButtonClicked(self):
|
||||
self.verse_form.setVerse('')
|
||||
self.verse_form.setVerse(u'')
|
||||
self.verse_form.exec_()
|
||||
self.VerseListWidget.addItem(self.verse_form.getVerse())
|
||||
|
||||
def onEditVerseButtonClicked(self):
|
||||
item = self.VerseListWidget.currentItem()
|
||||
self.verse_form.setVerse(item.text())
|
||||
self.verse_form.exec_()
|
||||
item.setText(self.verse_form.getVerse())
|
||||
if item is not None:
|
||||
self.verse_form.setVerse(item.text())
|
||||
self.verse_form.exec_()
|
||||
item.setText(self.verse_form.getVerse())
|
||||
self.EditButton.setEnabled(False)
|
||||
self.DeleteButton.setEnabled(False)
|
||||
|
||||
def onDeleteVerseButtonClicked(self):
|
||||
item = self.VerseListWidget.takeItem(self.VerseListWidget.currentRow())
|
||||
item = None
|
||||
self.EditButton.setEnabled(False)
|
||||
self.DeleteButton.setEnabled(False)
|
||||
|
||||
def _validate_song(self):
|
||||
"""
|
||||
Check the validity of the form. Only display the 'save' if the data can be saved.
|
||||
"""
|
||||
valid = True # Lets be nice and assume the data is correct.
|
||||
if len(self.TitleEditItem.displayText()) == 0: #Song title missing
|
||||
log.debug(u'Validate Song')
|
||||
# Lets be nice and assume the data is correct.
|
||||
valid = True
|
||||
if len(self.TitleEditItem.displayText()) == 0:
|
||||
valid = False
|
||||
#self._color_widget(self.TitleEditItem, True)
|
||||
#else:
|
||||
#self._color_widget(self.TitleEditItem, False)
|
||||
if len(self.CopyrightEditItem.displayText()) == 0: #Song title missing
|
||||
if len(self.CopyrightEditItem.displayText()) == 0:
|
||||
valid = False
|
||||
#self._color_widget(self.CopyrightEditItem, True)
|
||||
#else:
|
||||
#self._color_widget(self.CopyrightEditItem, False)
|
||||
|
||||
if valid:
|
||||
self.ButtonBox.addButton(self.savebutton, QtGui.QDialogButtonBox.AcceptRole) # hide the save button tile screen is valid
|
||||
else:
|
||||
self.ButtonBox.removeButton(self.savebutton) # hide the save button tile screen is valid
|
||||
if self.VerseListWidget.count() == 0:
|
||||
valid = False
|
||||
if self.AuthorsListView.count() == 0:
|
||||
valid = False
|
||||
return valid
|
||||
|
||||
def _color_widget(self, slot, invalid):
|
||||
r = Qt.QPalette(slot.palette())
|
||||
if invalid == True:
|
||||
r.setColor(Qt.QPalette.Base, Qt.QColor('darkRed'))
|
||||
r.setColor(Qt.QPalette.Base, Qt.QColor(u'darkRed'))
|
||||
else:
|
||||
r.setColor(Qt.QPalette.Base, Qt.QColor('white'))
|
||||
r.setColor(Qt.QPalette.Base, Qt.QColor(u'white'))
|
||||
slot.setPalette(r)
|
||||
slot.setAutoFillBackground(True)
|
||||
|
||||
def on_TitleEditItem_lostFocus(self):
|
||||
#self._validate_song()
|
||||
pass
|
||||
self.song.title = self.TitleEditItem.text()
|
||||
self.title_change = True
|
||||
|
||||
def onCopyrightInsertItemTriggered(self):
|
||||
text = self.CopyrightEditItem.displayText()
|
||||
|
@ -191,3 +321,55 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
self.CopyrightEditItem.setText(text)
|
||||
self.CopyrightEditItem.setFocus()
|
||||
self.CopyrightEditItem.setCursorPosition(pos + 1)
|
||||
|
||||
def onAccept(self):
|
||||
log.debug(u'OnAccept')
|
||||
#self.song.topics.append(9) << need opject here
|
||||
if not self._validate_song():
|
||||
return
|
||||
self.song.title = unicode(self.TitleEditItem.displayText())
|
||||
self.song.copyright = unicode(self.CopyrightEditItem.displayText())
|
||||
self.song.search_title = self.TitleEditItem.displayText() + u'@'+ self.AlternativeEdit.displayText()
|
||||
self.processLyrics()
|
||||
self.processTitle()
|
||||
self.song.song_book_id = 0
|
||||
self.songmanager.save_song(self.song)
|
||||
if self.title_change:
|
||||
self.eventmanager.post_event(Event(EventType.LoadSongList))
|
||||
self.close()
|
||||
|
||||
def processLyrics(self):
|
||||
log.debug(u'processLyrics')
|
||||
sxml=SongXMLBuilder()
|
||||
sxml.new_document()
|
||||
sxml.add_lyrics_to_song()
|
||||
count = 1
|
||||
text = u' '
|
||||
for i in range (0, self.VerseListWidget.count()):
|
||||
sxml.add_verse_to_lyrics(u'Verse', unicode(count), unicode(self.VerseListWidget.item(i).text()))
|
||||
text = text + unicode(self.VerseListWidget.item(i).text()) + u' '
|
||||
count += 1
|
||||
text = text.replace("'", u'')
|
||||
text = text.replace(u',', u'')
|
||||
text = text.replace(u';', u'')
|
||||
text = text.replace(u':', u'')
|
||||
text = text.replace(u'(', u'')
|
||||
text = text.replace(u')', u'')
|
||||
text = text.replace(u'{', u'')
|
||||
text = text.replace(u'}', u'')
|
||||
text = text.replace(u'?', u'')
|
||||
self.song.search_lyrics = unicode(text)
|
||||
self.song.lyrics = unicode(sxml.extract_xml())
|
||||
|
||||
def processTitle(self):
|
||||
log.debug(u'processTitle')
|
||||
self.song.search_title = self.song.search_title.replace("'", u'')
|
||||
self.song.search_title = self.song.search_title.replace(u',', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u';', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u':', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u'(', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u')', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u'{', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u'}', u'')
|
||||
self.song.search_title = self.song.search_title.replace(u'?', u'')
|
||||
self.song.search_title = unicode(self.song.search_title)
|
||||
|
|
|
@ -8,30 +8,31 @@
|
|||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_EditVerseDialog(object):
|
||||
def setupUi(self, EditVerseDialog):
|
||||
EditVerseDialog.setObjectName("EditVerseDialog")
|
||||
EditVerseDialog.setObjectName(u'EditVerseDialog')
|
||||
EditVerseDialog.resize(492, 373)
|
||||
EditVerseDialog.setModal(True)
|
||||
self.DialogLayout = QtGui.QVBoxLayout(EditVerseDialog)
|
||||
self.DialogLayout.setSpacing(8)
|
||||
self.DialogLayout.setMargin(8)
|
||||
self.DialogLayout.setObjectName("DialogLayout")
|
||||
self.DialogLayout.setObjectName(u'DialogLayout')
|
||||
self.VerseTextEdit = QtGui.QTextEdit(EditVerseDialog)
|
||||
self.VerseTextEdit.setAcceptRichText(False)
|
||||
self.VerseTextEdit.setObjectName("VerseTextEdit")
|
||||
self.VerseTextEdit.setObjectName(u'VerseTextEdit')
|
||||
self.DialogLayout.addWidget(self.VerseTextEdit)
|
||||
self.ButtonBox = QtGui.QDialogButtonBox(EditVerseDialog)
|
||||
self.ButtonBox.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save)
|
||||
self.ButtonBox.setObjectName("ButtonBox")
|
||||
self.ButtonBox.setObjectName(u'ButtonBox')
|
||||
self.DialogLayout.addWidget(self.ButtonBox)
|
||||
|
||||
self.retranslateUi(EditVerseDialog)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("accepted()"), EditVerseDialog.accept)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("rejected()"), EditVerseDialog.reject)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), EditVerseDialog.accept)
|
||||
QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), EditVerseDialog.reject)
|
||||
QtCore.QMetaObject.connectSlotsByName(EditVerseDialog)
|
||||
|
||||
def retranslateUi(self, EditVerseDialog):
|
||||
EditVerseDialog.setWindowTitle(QtGui.QApplication.translate("EditVerseDialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
|
||||
EditVerseDialog.setWindowTitle(translate(u'EditVerseDialog', u'Dialog'))
|
||||
|
|
|
@ -18,6 +18,7 @@ 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
|
||||
|
||||
|
@ -36,13 +37,13 @@ class SongBookForm(QtGui.QDialog, Ui_SongBookDialog):
|
|||
self.songbook = None
|
||||
|
||||
QtCore.QObject.connect(self.DeleteButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.QObject.connect(self.ClearButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onClearButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
|
||||
QtCore.QObject.connect(self.AddUpdateButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.QObject.connect(self.NameEdit,
|
||||
QtCore.SIGNAL('lostFocus()'), self.onBookNameEditLostFocus)
|
||||
QtCore.SIGNAL(u'lostFocus()'), self.onBookNameEditLostFocus)
|
||||
QtCore.QObject.connect(self.BookSongListView,
|
||||
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onBooksListViewItemClicked)
|
||||
|
||||
|
@ -112,15 +113,16 @@ class SongBookForm(QtGui.QDialog, Ui_SongBookDialog):
|
|||
self.NameEdit.setText(self.Book.name)
|
||||
self.PublisherEdit.setText(self.Book.publisher)
|
||||
if len(self.Book.songs) > 0:
|
||||
self.MessageLabel.setText("Book in use 'Delete' is disabled")
|
||||
self.MessageLabel.setText(translate(u'BookForm', u'Book in use "Delete" is disabled'))
|
||||
self.DeleteButton.setEnabled(False)
|
||||
else:
|
||||
self.MessageLabel.setText("Book is not used")
|
||||
self.MessageLabel.setText(translate(u'BookForm', u'Book in not used'))
|
||||
self.DeleteButton.setEnabled(True)
|
||||
self._validate_form()
|
||||
|
||||
def _validate_form(self):
|
||||
if len(self.NameEdit.displayText()) == 0: # We need at lease a display name
|
||||
# We need at lease a display name
|
||||
if len(self.NameEdit.displayText()) == 0:
|
||||
self.AddUpdateButton.setEnabled(False)
|
||||
else:
|
||||
self.AddUpdateButton.setEnabled(True)
|
||||
|
|
|
@ -16,10 +16,9 @@ You should have received a copy of the GNU General Public License along with
|
|||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
from PyQt4 import QtGui, QtCore
|
||||
from openlp.core.lib import translate
|
||||
from openlp.plugins.songs.lib import TextListData
|
||||
|
||||
from openlp.plugins.songs.forms.topicsdialog import Ui_TopicsDialog
|
||||
from openlp.plugins.songs.lib.classes import Topic
|
||||
|
||||
|
@ -38,13 +37,13 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog):
|
|||
self.topic = None
|
||||
|
||||
QtCore.QObject.connect(self.DeleteButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
|
||||
QtCore.QObject.connect(self.ClearButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onClearButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
|
||||
QtCore.QObject.connect(self.AddUpdateButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
|
||||
QtCore.QObject.connect(self.TopicNameEdit,
|
||||
QtCore.SIGNAL('lostFocus()'), self.onTopicNameEditLostFocus)
|
||||
QtCore.SIGNAL(u'lostFocus()'), self.onTopicNameEditLostFocus)
|
||||
QtCore.QObject.connect(self.TopicsListView,
|
||||
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onTopicsListViewItemClicked)
|
||||
|
||||
|
@ -111,15 +110,16 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog):
|
|||
|
||||
self.TopicNameEdit.setText(self.topic.name)
|
||||
if len(self.topic.songs) > 0:
|
||||
self.MessageLabel.setText("Topic in use 'Delete' is disabled")
|
||||
self.MessageLabel.setText(translate(u'TopicForm', u'Topic in use "Delete" is disabled'))
|
||||
self.DeleteButton.setEnabled(False)
|
||||
else:
|
||||
self.MessageLabel.setText("Topic is not used")
|
||||
self.MessageLabel.setText(translate(u'TopicForm', u'Topic in not used'))
|
||||
self.DeleteButton.setEnabled(True)
|
||||
self._validate_form()
|
||||
|
||||
def _validate_form(self):
|
||||
if len(self.TopicNameEdit.displayText()) == 0: # We need at lease a display name
|
||||
# We need at lease a display name
|
||||
if len(self.TopicNameEdit.displayText()) == 0:
|
||||
self.AddUpdateButton.setEnabled(False)
|
||||
else:
|
||||
self.AddUpdateButton.setEnabled(True)
|
||||
|
|
|
@ -34,8 +34,8 @@ class SongManager():
|
|||
"""
|
||||
|
||||
global log
|
||||
log = logging.getLogger('SongManager')
|
||||
log.info('Song manager loaded')
|
||||
log = logging.getLogger(u'SongManager')
|
||||
log.info(u'Song manager loaded')
|
||||
|
||||
def __init__(self, config):
|
||||
"""
|
||||
|
@ -43,7 +43,7 @@ class SongManager():
|
|||
don't exist.
|
||||
"""
|
||||
self.config = config
|
||||
log.debug('Song Initialising')
|
||||
log.debug(u'Song Initialising')
|
||||
self.db_url = u''
|
||||
db_type = self.config.get_config(u'db type', u'sqlite')
|
||||
if db_type == u'sqlite':
|
||||
|
@ -58,7 +58,7 @@ class SongManager():
|
|||
self.session = init_models(self.db_url)
|
||||
if not songs_table.exists():
|
||||
metadata.create_all()
|
||||
log.debug('Song Initialised')
|
||||
log.debug(u'Song Initialised')
|
||||
|
||||
def process_dialog(self, dialogobject):
|
||||
self.dialogobject = dialogobject
|
||||
|
@ -99,14 +99,20 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def delete_song(self, song):
|
||||
def delete_song(self, songid):
|
||||
song = self.get_song(songid)
|
||||
try:
|
||||
self.session.delete(song)
|
||||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
print u'Errow thrown ', sys.exc_info()[1]
|
||||
return False
|
||||
|
||||
def get_authors(self):
|
||||
|
@ -121,6 +127,12 @@ class SongManager():
|
|||
"""
|
||||
return self.session.query(Author).get(id)
|
||||
|
||||
def get_author_by_name(self, name):
|
||||
"""
|
||||
Details of the Author
|
||||
"""
|
||||
return self.session.query(Author).filter_by(display_name = name).first()
|
||||
|
||||
def save_author(self, author):
|
||||
"""
|
||||
Save the Author and refresh the cache
|
||||
|
@ -130,6 +142,8 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def delete_author(self, authorid):
|
||||
|
@ -142,7 +156,8 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
log.error("Errow thrown %s", sys.exc_info()[1])
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def get_topics(self):
|
||||
|
@ -157,6 +172,12 @@ class SongManager():
|
|||
"""
|
||||
return self.session.query(Topic).get(id)
|
||||
|
||||
def get_topic_by_name(self, name):
|
||||
"""
|
||||
Details of the Topic
|
||||
"""
|
||||
return self.session.query(Topic).filter_by(name = name).first()
|
||||
|
||||
def save_topic(self, topic):
|
||||
"""
|
||||
Save the Topic
|
||||
|
@ -166,6 +187,8 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def delete_topic(self, topicid):
|
||||
|
@ -178,7 +201,8 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
log.error("Errow thrown %s", sys.exc_info()[1])
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def get_books(self):
|
||||
|
@ -193,6 +217,12 @@ class SongManager():
|
|||
"""
|
||||
return self.session.query(Book).get(id)
|
||||
|
||||
def get_book_by_name(self, name):
|
||||
"""
|
||||
Details of the Books
|
||||
"""
|
||||
return self.session.query(Book).filter_by(name = name).first()
|
||||
|
||||
def save_book(self, book):
|
||||
"""
|
||||
Save the Book
|
||||
|
@ -202,6 +232,8 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
||||
def delete_book(self, bookid):
|
||||
|
@ -214,5 +246,6 @@ class SongManager():
|
|||
self.session.commit()
|
||||
return True
|
||||
except:
|
||||
log.error("Errow thrown %s", sys.exc_info()[1])
|
||||
self.session.rollback()
|
||||
log.error(u'Errow thrown %s', sys.exc_info()[1])
|
||||
return False
|
||||
|
|
|
@ -20,8 +20,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import MediaManagerItem, translate, ServiceItem
|
||||
from openlp.core.lib import MediaManagerItem, translate, ServiceItem, SongXMLParser
|
||||
|
||||
from openlp.plugins.songs.forms import EditSongForm
|
||||
from openlp.plugins.songs.lib import TextListData
|
||||
|
@ -57,7 +56,7 @@ class SongMediaItem(MediaManagerItem):
|
|||
|
||||
def __init__(self, parent, icon, title):
|
||||
MediaManagerItem.__init__(self, parent, icon, title)
|
||||
self.edit_song_form = EditSongForm(self.parent.songmanager)
|
||||
self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager)
|
||||
|
||||
def setupUi(self):
|
||||
# Add a toolbar
|
||||
|
@ -174,7 +173,7 @@ class SongMediaItem(MediaManagerItem):
|
|||
if author_list != u'':
|
||||
author_list = author_list + u', '
|
||||
author_list = author_list + author.display_name
|
||||
song_detail = str(u'%s (%s)' % (str(song.title), str(author_list)))
|
||||
song_detail = unicode(u'%s (%s)' % (unicode(song.title), unicode(author_list)))
|
||||
self.SongListData.addRow(song.id,song_detail)
|
||||
|
||||
def onClearTextButtonClick(self):
|
||||
|
@ -184,14 +183,14 @@ class SongMediaItem(MediaManagerItem):
|
|||
self.SearchTextEdit.clear()
|
||||
|
||||
def onSearchTextEditChanged(self, text):
|
||||
search_length = 3
|
||||
search_length = 1
|
||||
if self.SearchTypeComboBox.currentIndex() == 1:
|
||||
search_length = 7
|
||||
if len(text) > search_length:
|
||||
self.onSearchTextButtonClick()
|
||||
|
||||
def onSearchTextButtonClick(self):
|
||||
search_keywords = str(self.SearchTextEdit.displayText())
|
||||
search_keywords = unicode(self.SearchTextEdit.displayText())
|
||||
search_results = []
|
||||
search_type = self.SearchTypeComboBox.currentIndex()
|
||||
if search_type == 0:
|
||||
|
@ -206,6 +205,7 @@ class SongMediaItem(MediaManagerItem):
|
|||
self.displayResults(search_results)
|
||||
|
||||
def onSongNewClick(self):
|
||||
self.edit_song_form.newSong()
|
||||
self.edit_song_form.exec_()
|
||||
|
||||
def onSongEditClick(self):
|
||||
|
@ -231,20 +231,35 @@ class SongMediaItem(MediaManagerItem):
|
|||
def generateSlideData(self, service_item):
|
||||
raw_slides =[]
|
||||
raw_footer = []
|
||||
author_list = u''
|
||||
ccl = u''
|
||||
indexes = self.SongListView.selectedIndexes()
|
||||
for index in indexes:
|
||||
id = self.SongListData.getId(index)
|
||||
song = self.parent.songmanager.get_song(id)
|
||||
if song.theme_name == None or len(song.theme_name) == 0:
|
||||
service_item.theme = None
|
||||
service_item.theme = song.theme_name
|
||||
if song.lyrics.startswith(u'<?xml version='):
|
||||
songXML=SongXMLParser(song.lyrics)
|
||||
verseList = songXML.get_verses()
|
||||
for verse in verseList:
|
||||
service_item.add_from_text(verse[1][:30], verse[1])
|
||||
else:
|
||||
service_item.theme = song.theme_name
|
||||
verses = song.lyrics.split(u'\n\n')
|
||||
for slide in verses:
|
||||
service_item.add_from_text(slide[:30], slide)
|
||||
verses = song.lyrics.split(u'\n\n')
|
||||
for slide in verses:
|
||||
service_item.add_from_text(slide[:30], slide)
|
||||
service_item.title = song.title
|
||||
raw_footer.append(str(u'%s \n%s \n' % (song.title, song.copyright )))
|
||||
raw_footer.append(song.copyright)
|
||||
for author in song.authors:
|
||||
if len(author_list) > 1:
|
||||
author_list = author_list + u', '
|
||||
author_list = author_list + unicode(author.display_name)
|
||||
if song.ccli_number == None or len(song.ccli_number) == 0:
|
||||
ccl = self.parent.settings.GeneralTab.CCLNumber
|
||||
else:
|
||||
ccl = unicode(song.ccli_number)
|
||||
raw_footer.append(song.title)
|
||||
raw_footer.append(author_list)
|
||||
raw_footer.append(song.copyright )
|
||||
raw_footer.append(unicode(translate(u'SongMediaItem', u'CCL Licence: ') + ccl ))
|
||||
service_item.raw_footer = raw_footer
|
||||
|
||||
def onSongLiveClick(self):
|
||||
|
|
|
@ -38,7 +38,7 @@ song_books_table = Table('song_books', metadata,
|
|||
|
||||
# Definition of the "songs" table
|
||||
songs_table = Table('songs', metadata,
|
||||
Column('id', types.Integer(), primary_key=True),
|
||||
Column('id', types.Integer, primary_key=True),
|
||||
Column('song_book_id', types.Integer, ForeignKey('song_books.id'), default=0),
|
||||
Column('title', types.Unicode(255), nullable=False),
|
||||
Column('lyrics', types.UnicodeText, nullable=False),
|
||||
|
|
|
@ -42,7 +42,6 @@ class TextListData(QtCore.QAbstractListModel):
|
|||
|
||||
def insertRow(self, row, id, title):
|
||||
self.beginInsertRows(QtCore.QModelIndex(),row,row)
|
||||
log.debug("insert row %d:%s for id %d" % (row,title, id))
|
||||
self.items.insert(row, (id, title))
|
||||
self.endInsertRows()
|
||||
|
||||
|
|
|
@ -21,8 +21,7 @@ import logging
|
|||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, Event
|
||||
from openlp.core.lib import EventType
|
||||
from openlp.core.lib import Plugin, Event, EventType, translate
|
||||
from openlp.plugins.songs.lib import SongManager, SongsTab, SongMediaItem
|
||||
from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \
|
||||
OpenSongImportForm, OpenLPExportForm
|
||||
|
@ -54,55 +53,54 @@ class SongsPlugin(Plugin):
|
|||
|
||||
def add_import_menu_item(self, import_menu):
|
||||
self.ImportSongMenu = QtGui.QMenu(import_menu)
|
||||
self.ImportSongMenu.setObjectName("ImportSongMenu")
|
||||
self.ImportSongMenu.setObjectName(u'ImportSongMenu')
|
||||
self.ImportOpenSongItem = QtGui.QAction(import_menu)
|
||||
self.ImportOpenSongItem.setObjectName("ImportOpenSongItem")
|
||||
self.ImportOpenSongItem.setObjectName(u'ImportOpenSongItem')
|
||||
self.ImportOpenlp1Item = QtGui.QAction(import_menu)
|
||||
self.ImportOpenlp1Item.setObjectName("ImportOpenlp1Item")
|
||||
self.ImportOpenlp1Item.setObjectName(u'ImportOpenlp1Item')
|
||||
self.ImportOpenlp2Item = QtGui.QAction(import_menu)
|
||||
self.ImportOpenlp2Item.setObjectName("ImportOpenlp2Item")
|
||||
self.ImportOpenlp2Item.setObjectName(u'ImportOpenlp2Item')
|
||||
# Add to menus
|
||||
self.ImportSongMenu.addAction(self.ImportOpenlp1Item)
|
||||
self.ImportSongMenu.addAction(self.ImportOpenlp2Item)
|
||||
self.ImportSongMenu.addAction(self.ImportOpenSongItem)
|
||||
import_menu.addAction(self.ImportSongMenu.menuAction())
|
||||
# Translations...
|
||||
self.ImportSongMenu.setTitle(QtGui.QApplication.translate("main_window", "&Song", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenSongItem.setText(QtGui.QApplication.translate("main_window", "OpenSong", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp1Item.setText(QtGui.QApplication.translate("main_window", "openlp.org 1.0", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp1Item.setToolTip(QtGui.QApplication.translate("main_window", "Export songs in openlp.org 1.0 format", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp1Item.setStatusTip(QtGui.QApplication.translate("main_window", "Export songs in openlp.org 1.0 format", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp2Item.setText(QtGui.QApplication.translate("main_window", "OpenLP 2.0", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp2Item.setToolTip(QtGui.QApplication.translate("main_window", "Export songs in OpenLP 2.0 format", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportOpenlp2Item.setStatusTip(QtGui.QApplication.translate("main_window", "Export songs in OpenLP 2.0 format", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ImportSongMenu.setTitle(translate(u'main_window', u'&Song'))
|
||||
self.ImportOpenSongItem.setText(translate(u'main_window', u'OpenSong'))
|
||||
self.ImportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0'))
|
||||
self.ImportOpenlp1Item.setToolTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
|
||||
self.ImportOpenlp1Item.setStatusTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
|
||||
self.ImportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0'))
|
||||
self.ImportOpenlp2Item.setToolTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
|
||||
self.ImportOpenlp2Item.setStatusTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL("triggered()"), self.onImportOpenlp1ItemClick)
|
||||
QtCore.QObject.connect(self.ImportOpenlp2Item, QtCore.SIGNAL("triggered()"), self.onImportOpenlp1ItemClick)
|
||||
QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL("triggered()"), self.onImportOpenSongItemClick)
|
||||
|
||||
QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
|
||||
QtCore.QObject.connect(self.ImportOpenlp2Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
|
||||
QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onImportOpenSongItemClick)
|
||||
|
||||
def add_export_menu_item(self, export_menu):
|
||||
self.ExportSongMenu = QtGui.QMenu(export_menu)
|
||||
self.ExportSongMenu.setObjectName("ExportSongMenu")
|
||||
self.ExportSongMenu.setObjectName(u'ExportSongMenu')
|
||||
self.ExportOpenSongItem = QtGui.QAction(export_menu)
|
||||
self.ExportOpenSongItem.setObjectName("ExportOpenSongItem")
|
||||
self.ExportOpenSongItem.setObjectName(u'ExportOpenSongItem')
|
||||
self.ExportOpenlp1Item = QtGui.QAction(export_menu)
|
||||
self.ExportOpenlp1Item.setObjectName("ExportOpenlp1Item")
|
||||
self.ExportOpenlp1Item.setObjectName(u'ExportOpenlp1Item')
|
||||
self.ExportOpenlp2Item = QtGui.QAction(export_menu)
|
||||
self.ExportOpenlp2Item.setObjectName("ExportOpenlp2Item")
|
||||
self.ExportOpenlp2Item.setObjectName(u'ExportOpenlp2Item')
|
||||
# Add to menus
|
||||
self.ExportSongMenu.addAction(self.ExportOpenlp1Item)
|
||||
self.ExportSongMenu.addAction(self.ExportOpenlp2Item)
|
||||
self.ExportSongMenu.addAction(self.ExportOpenSongItem)
|
||||
export_menu.addAction(self.ExportSongMenu.menuAction())
|
||||
# Translations...
|
||||
self.ExportSongMenu.setTitle(QtGui.QApplication.translate("main_window", "&Song", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ExportOpenSongItem.setText(QtGui.QApplication.translate("main_window", "OpenSong", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ExportOpenlp1Item.setText(QtGui.QApplication.translate("main_window", "openlp.org 1.0", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ExportOpenlp2Item.setText(QtGui.QApplication.translate("main_window", "OpenLP 2.0", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.ExportSongMenu.setTitle(translate(u'main_window', u'&Song'))
|
||||
self.ExportOpenSongItem.setText(translate(u'main_window', u'OpenSong'))
|
||||
self.ExportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0'))
|
||||
self.ExportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0'))
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(self.ExportOpenlp1Item, QtCore.SIGNAL("triggered()"), self.onExportOpenlp1ItemClicked)
|
||||
QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL("triggered()"), self.onExportOpenSongItemClicked)
|
||||
QtCore.QObject.connect(self.ExportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onExportOpenlp1ItemClicked)
|
||||
QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked)
|
||||
|
||||
def initialise(self):
|
||||
self.media_item.displayResults(self.songmanager.get_songs())
|
||||
|
@ -126,7 +124,7 @@ class SongsPlugin(Plugin):
|
|||
log.debug(u'Handle event called with event %s' % event.event_type)
|
||||
if event.event_type == EventType.ThemeListChanged:
|
||||
log.debug(u'New Theme request received')
|
||||
#self.edit_custom_form.loadThemes(self.theme_manager.getThemes())
|
||||
self.media_item.edit_song_form.loadThemes(self.theme_manager.getThemes())
|
||||
if event.event_type == EventType.LoadServiceItem and event.payload == 'Song':
|
||||
log.debug(u'Load Service Item received')
|
||||
self.media_item.onSongAddClick()
|
||||
|
@ -136,3 +134,6 @@ class SongsPlugin(Plugin):
|
|||
if event.event_type == EventType.LiveShow and event.payload == 'Song':
|
||||
log.debug(u'Load Live Show Item received')
|
||||
self.media_item.onSongLiveClick()
|
||||
if event.event_type == EventType.LoadSongList :
|
||||
log.debug(u'Load Load Song List Item received')
|
||||
self.media_item.displayResults(self.songmanager.get_songs())
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue