This commit is contained in:
Raoul Snyman 2010-08-29 19:54:36 +02:00
commit 130e315333
13 changed files with 220 additions and 195 deletions

View File

@ -343,10 +343,10 @@ def build_lyrics(item):
shadow = u'display: none;' shadow = u'display: none;'
if theme: if theme:
lyricscommon = u'width: %spx; height: %spx; word-wrap: break-word; ' \ lyricscommon = u'width: %spx; height: %spx; word-wrap: break-word; ' \
u'font-family: %s; font-size: %spx; color: %s; line-height: %d%%;' % \ u'font-family: %s; font-size: %spx; color: %s; line-height: %d%%;' \
(item.main.width(), item.main.height(), % (item.main.width(), item.main.height(), theme.font_main_name,
theme.font_main_name, theme.font_main_proportion, theme.font_main_proportion, theme.font_main_color,
theme.font_main_color, 100 + int(theme.font_main_line_adjustment)) 100 + int(theme.font_main_line_adjustment))
lyricstable = u'left: %spx; top: %spx;' % \ lyricstable = u'left: %spx; top: %spx;' % \
(item.main.x(), item.main.y()) (item.main.x(), item.main.y())
outlinetable = u'left: %spx; top: %spx;' % \ outlinetable = u'left: %spx; top: %spx;' % \
@ -375,7 +375,7 @@ def build_lyrics(item):
theme.display_outline_color) theme.display_outline_color)
if theme.display_shadow: if theme.display_shadow:
shadow = u'-webkit-text-stroke: %sem %s; ' \ shadow = u'-webkit-text-stroke: %sem %s; ' \
u'-webkit-text-fill-color: %s; '% \ u'-webkit-text-fill-color: %s; ' % \
(float(theme.display_outline_size) / 16, (float(theme.display_outline_size) / 16,
theme.display_shadow_color, theme.display_shadow_color) theme.display_shadow_color, theme.display_shadow_color)
else: else:

View File

@ -200,7 +200,7 @@ class RenderManager(object):
serviceItem.raw_footer = footer serviceItem.raw_footer = footer
serviceItem.render(True) serviceItem.render(True)
self.display.buildHtml(serviceItem) self.display.buildHtml(serviceItem)
frame, raw_html = serviceItem.get_rendered_frame(0) raw_html = serviceItem.get_rendered_frame(0)[1]
preview = self.display.text(raw_html) preview = self.display.text(raw_html)
# Reset the real screen size for subsequent render requests # Reset the real screen size for subsequent render requests
self.calculate_default(self.screens.current[u'size']) self.calculate_default(self.screens.current[u'size'])

View File

@ -41,7 +41,6 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import html_expands, translate, context_menu_action from openlp.core.lib import html_expands, translate, context_menu_action
class SpellTextEdit(QtGui.QPlainTextEdit): class SpellTextEdit(QtGui.QPlainTextEdit):
def __init__(self, *args): def __init__(self, *args):
QtGui.QPlainTextEdit.__init__(self, *args) QtGui.QPlainTextEdit.__init__(self, *args)
# Default dictionary based on the current locale. # Default dictionary based on the current locale.
@ -54,18 +53,17 @@ class SpellTextEdit(QtGui.QPlainTextEdit):
if event.button() == QtCore.Qt.RightButton: if event.button() == QtCore.Qt.RightButton:
# Rewrite the mouse event to a left button event so the cursor is # Rewrite the mouse event to a left button event so the cursor is
# moved to the location of the pointer. # moved to the location of the pointer.
event = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, event.pos(), event = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress,
QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier) event.pos(), QtCore.Qt.LeftButton, QtCore.Qt.LeftButton,
QtCore.Qt.NoModifier)
QtGui.QPlainTextEdit.mousePressEvent(self, event) QtGui.QPlainTextEdit.mousePressEvent(self, event)
def contextMenuEvent(self, event): def contextMenuEvent(self, event):
popup_menu = self.createStandardContextMenu() popup_menu = self.createStandardContextMenu()
# Select the word under the cursor. # Select the word under the cursor.
cursor = self.textCursor() cursor = self.textCursor()
cursor.select(QtGui.QTextCursor.WordUnderCursor) cursor.select(QtGui.QTextCursor.WordUnderCursor)
self.setTextCursor(cursor) self.setTextCursor(cursor)
# Check if the selected word is misspelled and offer spelling # Check if the selected word is misspelled and offer spelling
# suggestions if it is. # suggestions if it is.
if enchant_available and self.textCursor().hasSelection(): if enchant_available and self.textCursor().hasSelection():
@ -94,9 +92,9 @@ class SpellTextEdit(QtGui.QPlainTextEdit):
popup_menu.exec_(event.globalPos()) popup_menu.exec_(event.globalPos())
def correctWord(self, word): def correctWord(self, word):
''' """
Replaces the selected text with word. Replaces the selected text with word.
''' """
cursor = self.textCursor() cursor = self.textCursor()
cursor.beginEditBlock() cursor.beginEditBlock()
@ -106,9 +104,9 @@ class SpellTextEdit(QtGui.QPlainTextEdit):
cursor.endEditBlock() cursor.endEditBlock()
def htmlTag(self, tag): def htmlTag(self, tag):
''' """
Replaces the selected text with word. Replaces the selected text with word.
''' """
for html in html_expands: for html in html_expands:
if tag == html[u'desc']: if tag == html[u'desc']:
cursor = self.textCursor() cursor = self.textCursor()
@ -153,9 +151,9 @@ class Highlighter(QtGui.QSyntaxHighlighter):
word_object.end() - word_object.start(), format) word_object.end() - word_object.start(), format)
class SpellAction(QtGui.QAction): class SpellAction(QtGui.QAction):
''' """
A special QAction that returns the text in a signal. A special QAction that returns the text in a signal.
''' """
correct = QtCore.pyqtSignal(unicode) correct = QtCore.pyqtSignal(unicode)
def __init__(self, *args): def __init__(self, *args):

View File

@ -94,8 +94,10 @@ class Ui_MainWindow(object):
self.ControlSplitter.setObjectName(u'ControlSplitter') self.ControlSplitter.setObjectName(u'ControlSplitter')
self.MainContentLayout.addWidget(self.ControlSplitter) self.MainContentLayout.addWidget(self.ControlSplitter)
# Create slide controllers # Create slide controllers
self.PreviewController = SlideController(self, self.settingsmanager, self.screens) self.PreviewController = SlideController(self, self.settingsmanager,
self.LiveController = SlideController(self, self.settingsmanager, self.screens, True) self.screens)
self.LiveController = SlideController(self, self.settingsmanager,
self.screens, True)
# Create menu # Create menu
self.MenuBar = QtGui.QMenuBar(MainWindow) self.MenuBar = QtGui.QMenuBar(MainWindow)
self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27))

View File

@ -117,7 +117,8 @@ class SlideController(QtGui.QWidget):
self.split = 1 self.split = 1
self.typePrefix = u'live' self.typePrefix = u'live'
else: else:
self.TypeLabel.setText(translate('OpenLP.SlideController', 'Preview')) self.TypeLabel.setText(translate('OpenLP.SlideController',
'Preview'))
self.split = 0 self.split = 0
self.typePrefix = u'preview' self.typePrefix = u'preview'
self.TypeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') self.TypeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;')
@ -199,7 +200,8 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay) QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay)
if self.screens.display_count > 1: if self.screens.display_count > 1:
self.DesktopScreen = QtGui.QAction(QtGui.QIcon( self.DesktopScreen = QtGui.QAction(QtGui.QIcon(
u':/slides/slide_desktop.png'), u'Show Desktop', self.HideMenu) u':/slides/slide_desktop.png'), u'Show Desktop',
self.HideMenu)
self.DesktopScreen.setCheckable(True) self.DesktopScreen.setCheckable(True)
QtCore.QObject.connect(self.DesktopScreen, QtCore.QObject.connect(self.DesktopScreen,
QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay) QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay)
@ -212,7 +214,8 @@ class SlideController(QtGui.QWidget):
self.Toolbar.addToolbarSeparator(u'Close Separator') self.Toolbar.addToolbarSeparator(u'Close Separator')
self.Toolbar.addToolbarButton( self.Toolbar.addToolbarButton(
u'Go Live', u':/general/general_live.png', u'Go Live', u':/general/general_live.png',
translate('OpenLP.SlideController', 'Move to live'), self.onGoLive) translate('OpenLP.SlideController', 'Move to live'),
self.onGoLive)
self.Toolbar.addToolbarSeparator(u'Close Separator') self.Toolbar.addToolbarSeparator(u'Close Separator')
self.Toolbar.addToolbarButton( self.Toolbar.addToolbarButton(
u'Edit Song', u':/general/general_edit.png', u'Edit Song', u':/general/general_edit.png',
@ -233,7 +236,8 @@ class SlideController(QtGui.QWidget):
self.DelaySpinBox.setMaximum(180) self.DelaySpinBox.setMaximum(180)
self.Toolbar.addToolbarWidget( self.Toolbar.addToolbarWidget(
u'Image SpinBox', self.DelaySpinBox) u'Image SpinBox', self.DelaySpinBox)
self.DelaySpinBox.setSuffix(translate('OpenLP.SlideController', 's')) self.DelaySpinBox.setSuffix(translate('OpenLP.SlideController',
's'))
self.DelaySpinBox.setToolTip(translate('OpenLP.SlideController', self.DelaySpinBox.setToolTip(translate('OpenLP.SlideController',
'Delay between slides in seconds')) 'Delay between slides in seconds'))
self.ControllerLayout.addWidget(self.Toolbar) self.ControllerLayout.addWidget(self.Toolbar)
@ -274,11 +278,13 @@ class SlideController(QtGui.QWidget):
# Build the Song Toolbar # Build the Song Toolbar
if isLive: if isLive:
self.SongMenu = QtGui.QToolButton(self.Toolbar) self.SongMenu = QtGui.QToolButton(self.Toolbar)
self.SongMenu.setText(translate('OpenLP.SlideController', 'Go to Verse')) self.SongMenu.setText(translate('OpenLP.SlideController',
'Go to Verse'))
self.SongMenu.setPopupMode(QtGui.QToolButton.InstantPopup) self.SongMenu.setPopupMode(QtGui.QToolButton.InstantPopup)
self.Toolbar.addToolbarWidget(u'Song Menu', self.SongMenu) self.Toolbar.addToolbarWidget(u'Song Menu', self.SongMenu)
self.SongMenu.setMenu(QtGui.QMenu( self.SongMenu.setMenu(QtGui.QMenu(
translate('OpenLP.SlideController', 'Go to Verse'), self.Toolbar)) translate('OpenLP.SlideController', 'Go to Verse'),
self.Toolbar))
self.Toolbar.makeWidgetsInvisible([u'Song Menu']) self.Toolbar.makeWidgetsInvisible([u'Song Menu'])
# Screen preview area # Screen preview area
self.PreviewFrame = QtGui.QFrame(self.Splitter) self.PreviewFrame = QtGui.QFrame(self.Splitter)

View File

@ -465,9 +465,9 @@ class BibleMediaItem(MediaManagerItem):
self.displayResults(bible, dual_bible) self.displayResults(bible, dual_bible)
def generateSlideData(self, service_item, item=None): def generateSlideData(self, service_item, item=None):
''' """
Generates and formats the slides for the service item. Generates and formats the slides for the service item.
''' """
log.debug(u'generating slide data') log.debug(u'generating slide data')
items = self.listView.selectedIndexes() items = self.listView.selectedIndexes()
if len(items) == 0: if len(items) == 0:
@ -551,7 +551,8 @@ class BibleMediaItem(MediaManagerItem):
if isinstance(reference, QtCore.QVariant): if isinstance(reference, QtCore.QVariant):
reference = reference.toPyObject() reference = reference.toPyObject()
bible_new = self._decodeQtObject(reference, 'bible') bible_new = self._decodeQtObject(reference, 'bible')
dual_bible_new = self._decodeQtObject(reference, 'dual_bible') dual_bible_new = self._decodeQtObject(reference,
'dual_bible')
if dual_bible_new: if dual_bible_new:
raw_slides.append(bible_text) raw_slides.append(bible_text)
bible_text = u'' bible_text = u''
@ -639,10 +640,10 @@ class BibleMediaItem(MediaManagerItem):
combo.addItem(unicode(i)) combo.addItem(unicode(i))
def displayResults(self, bible, dual_bible=None): def displayResults(self, bible, dual_bible=None):
''' """
Displays the search results in the media manager. All data needed for further Displays the search results in the media manager. All data needed for
action is saved for/in each row. further action is saved for/in each row.
''' """
version = self.parent.manager.get_meta_data(bible, u'Version') version = self.parent.manager.get_meta_data(bible, u'Version')
copyright = self.parent.manager.get_meta_data(bible, u'Copyright') copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
#permission = self.parent.manager.get_meta_data(bible, u'Permissions') #permission = self.parent.manager.get_meta_data(bible, u'Permissions')

View File

@ -263,8 +263,8 @@ class Ui_EditSongDialog(object):
self.SongbookLayout.setSpacing(8) self.SongbookLayout.setSpacing(8)
self.SongbookLayout.setObjectName(u'SongbookLayout') self.SongbookLayout.setObjectName(u'SongbookLayout')
self.SongbookCombo = QtGui.QComboBox(self.SongBookGroup) self.SongbookCombo = QtGui.QComboBox(self.SongBookGroup)
sizePolicy = QtGui.QSizePolicy( sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth( sizePolicy.setHeightForWidth(
@ -273,6 +273,12 @@ class Ui_EditSongDialog(object):
self.SongbookCombo.setSizePolicy(sizePolicy) self.SongbookCombo.setSizePolicy(sizePolicy)
self.SongbookCombo.setObjectName(u'SongbookCombo') self.SongbookCombo.setObjectName(u'SongbookCombo')
self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1) self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
self.songBookNumberLabel = QtGui.QLabel(self.SongBookGroup)
self.SongbookLayout.addWidget(self.songBookNumberLabel, 0, 1, 1, 1)
self.songBookNumberEdit = QtGui.QLineEdit(self.SongBookGroup)
self.songBookNumberLabel.setBuddy(self.songBookNumberEdit)
self.songBookNumberEdit.setMaximumWidth(35)
self.SongbookLayout.addWidget(self.songBookNumberEdit, 0, 2, 1, 1)
self.TopicBookLayout.addWidget(self.SongBookGroup) self.TopicBookLayout.addWidget(self.SongBookGroup)
self.AuthorsTabLayout.addWidget(self.TopicBookWidget) self.AuthorsTabLayout.addWidget(self.TopicBookWidget)
self.SongTabWidget.addTab(self.AuthorsTab, u'') self.SongTabWidget.addTab(self.AuthorsTab, u'')
@ -440,6 +446,8 @@ class Ui_EditSongDialog(object):
translate('SongsPlugin.EditSongForm', 'R&emove')) translate('SongsPlugin.EditSongForm', 'R&emove'))
self.SongBookGroup.setTitle( self.SongBookGroup.setTitle(
translate('SongsPlugin.EditSongForm', 'Song Book')) translate('SongsPlugin.EditSongForm', 'Song Book'))
self.songBookNumberLabel.setText(translate('SongsPlugin.EditSongForm',
'Song No.:'))
self.SongTabWidget.setTabText( self.SongTabWidget.setTabText(
self.SongTabWidget.indexOf(self.AuthorsTab), self.SongTabWidget.indexOf(self.AuthorsTab),
translate('SongsPlugin.EditSongForm', translate('SongsPlugin.EditSongForm',

View File

@ -49,6 +49,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
""" """
QtGui.QDialog.__init__(self, parent) QtGui.QDialog.__init__(self, parent)
self.parent = parent self.parent = parent
self.song = None
# can this be automated? # can this be automated?
self.width = 400 self.width = 400
self.setupUi(self) self.setupUi(self)
@ -83,10 +84,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
QtCore.QObject.connect(self.VerseListWidget, QtCore.QObject.connect(self.VerseListWidget,
QtCore.SIGNAL(u'itemClicked(QTableWidgetItem*)'), QtCore.SIGNAL(u'itemClicked(QTableWidgetItem*)'),
self.onVerseListViewPressed) 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)
QtCore.QObject.connect(self.ThemeAddButton, QtCore.QObject.connect(self.ThemeAddButton,
QtCore.SIGNAL(u'clicked()'), QtCore.SIGNAL(u'clicked()'),
self.parent.parent.renderManager.theme_manager.onAddTheme) self.parent.parent.renderManager.theme_manager.onAddTheme)
@ -157,7 +154,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def newSong(self): def newSong(self):
log.debug(u'New Song') log.debug(u'New Song')
self.SongTabWidget.setCurrentIndex(0) self.SongTabWidget.setCurrentIndex(0)
self.song = Song()
self.TitleEditItem.setText(u'') self.TitleEditItem.setText(u'')
self.AlternativeEdit.setText(u'') self.AlternativeEdit.setText(u'')
self.CopyrightEditItem.setText(u'') self.CopyrightEditItem.setText(u'')
@ -298,8 +294,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
else: else:
author = Author.populate(first_name=text.rsplit(u' ', 1)[0], author = Author.populate(first_name=text.rsplit(u' ', 1)[0],
last_name=text.rsplit(u' ', 1)[1], display_name=text) last_name=text.rsplit(u' ', 1)[1], display_name=text)
self.songmanager.save_object(author, False) self.songmanager.save_object(author)
self.song.authors.append(author)
author_item = QtGui.QListWidgetItem( author_item = QtGui.QListWidgetItem(
unicode(author.display_name)) unicode(author.display_name))
author_item.setData(QtCore.Qt.UserRole, author_item.setData(QtCore.Qt.UserRole,
@ -312,13 +307,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
elif item > 0: elif item > 0:
item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0] item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0]
author = self.songmanager.get_object(Author, item_id) author = self.songmanager.get_object(Author, item_id)
if author in self.song.authors: if self.AuthorsListView.findItems(unicode(author.display_name),
QtCore.Qt.MatchExactly):
QtGui.QMessageBox.warning(self, QtGui.QMessageBox.warning(self,
translate('SongsPlugin.EditSongForm', 'Error'), translate('SongsPlugin.EditSongForm', 'Error'),
translate('SongsPlugin.EditSongForm', 'This author is ' translate('SongsPlugin.EditSongForm', 'This author is '
'already in the list.')) 'already in the list.'))
else: else:
self.song.authors.append(author)
author_item = QtGui.QListWidgetItem(unicode( author_item = QtGui.QListWidgetItem(unicode(
author.display_name)) author.display_name))
author_item.setData(QtCore.Qt.UserRole, author_item.setData(QtCore.Qt.UserRole,
@ -340,9 +335,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def onAuthorRemoveButtonClicked(self): def onAuthorRemoveButtonClicked(self):
self.AuthorRemoveButton.setEnabled(False) self.AuthorRemoveButton.setEnabled(False)
item = self.AuthorsListView.currentItem() item = self.AuthorsListView.currentItem()
author_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
author = self.songmanager.get_object(Author, author_id)
self.song.authors.remove(author)
row = self.AuthorsListView.row(item) row = self.AuthorsListView.row(item)
self.AuthorsListView.takeItem(row) self.AuthorsListView.takeItem(row)
@ -357,8 +349,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes: QtGui.QMessageBox.Yes) == QtGui.QMessageBox.Yes:
topic = Topic.populate(name=text) topic = Topic.populate(name=text)
self.songmanager.save_object(topic, False) self.songmanager.save_object(topic)
self.song.topics.append(topic)
topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item = QtGui.QListWidgetItem(unicode(topic.name))
topic_item.setData(QtCore.Qt.UserRole, topic_item.setData(QtCore.Qt.UserRole,
QtCore.QVariant(topic.id)) QtCore.QVariant(topic.id))
@ -370,13 +361,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
elif item > 0: elif item > 0:
item_id = (self.SongTopicCombo.itemData(item)).toInt()[0] item_id = (self.SongTopicCombo.itemData(item)).toInt()[0]
topic = self.songmanager.get_object(Topic, item_id) topic = self.songmanager.get_object(Topic, item_id)
if topic in self.song.topics: if self.TopicsListView.findItems(unicode(topic.name),
QtCore.Qt.MatchExactly):
QtGui.QMessageBox.warning(self, QtGui.QMessageBox.warning(self,
translate('SongsPlugin.EditSongForm', 'Error'), translate('SongsPlugin.EditSongForm', 'Error'),
translate('SongsPlugin.EditSongForm', 'This topic is ' translate('SongsPlugin.EditSongForm', 'This topic is '
'already in the list.')) 'already in the list.'))
else: else:
self.song.topics.append(topic)
topic_item = QtGui.QListWidgetItem(unicode(topic.name)) topic_item = QtGui.QListWidgetItem(unicode(topic.name))
topic_item.setData(QtCore.Qt.UserRole, topic_item.setData(QtCore.Qt.UserRole,
QtCore.QVariant(topic.id)) QtCore.QVariant(topic.id))
@ -396,27 +387,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def onTopicRemoveButtonClicked(self): def onTopicRemoveButtonClicked(self):
self.TopicRemoveButton.setEnabled(False) self.TopicRemoveButton.setEnabled(False)
item = self.TopicsListView.currentItem() item = self.TopicsListView.currentItem()
topic_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
topic = self.songmanager.get_object(Topic, topic_id)
self.song.topics.remove(topic)
row = self.TopicsListView.row(item) row = self.TopicsListView.row(item)
self.TopicsListView.takeItem(row) self.TopicsListView.takeItem(row)
def onSongBookComboChanged(self, item):
if item >= 1:
self.song.song_book_id = \
(self.SongbookCombo.itemData(item)).toInt()[0]
else:
self.song.song_book_id = 0
def onThemeComboChanged(self, item):
if item == 0:
# None means no Theme
self.song.theme_name = None
else:
them_name = unicode(self.ThemeSelectionComboItem.itemText(item))
self.song.theme_name = them_name
def onVerseListViewPressed(self): def onVerseListViewPressed(self):
self.VerseEditButton.setEnabled(True) self.VerseEditButton.setEnabled(True)
self.VerseDeleteButton.setEnabled(True) self.VerseDeleteButton.setEnabled(True)
@ -602,10 +575,17 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.CopyrightEditItem.setCursorPosition(pos + 1) self.CopyrightEditItem.setCursorPosition(pos + 1)
def onMaintenanceButtonClicked(self): def onMaintenanceButtonClicked(self):
temp_song_book = None
item = int(self.SongbookCombo.currentIndex())
text = unicode(self.SongbookCombo.currentText())
if item == 0 and text:
temp_song_book = text
self.parent.song_maintenance_form.exec_() self.parent.song_maintenance_form.exec_()
self.loadAuthors() self.loadAuthors()
self.loadBooks() self.loadBooks()
self.loadTopics() self.loadTopics()
if temp_song_book:
self.SongbookCombo.setEditText(temp_song_book)
def onPreview(self, button): def onPreview(self, button):
""" """
@ -622,6 +602,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def accept(self): def accept(self):
log.debug(u'accept') log.debug(u'accept')
if not self.song:
self.song = Song()
item = int(self.SongbookCombo.currentIndex()) item = int(self.SongbookCombo.currentIndex())
text = unicode(self.SongbookCombo.currentText()) text = unicode(self.SongbookCombo.currentText())
if item == 0 and text: if item == 0 and text:
@ -634,7 +616,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
book = Book.populate(name=text, publisher=u'') book = Book.populate(name=text, publisher=u'')
self.songmanager.save_object(book) self.songmanager.save_object(book)
self.song.book = book self.song.book = book
self.loadBooks()
else: else:
return return
if self.saveSong(): if self.saveSong():
@ -650,9 +631,22 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
self.song.comments = unicode(self.CommentsEdit.toPlainText()) self.song.comments = unicode(self.CommentsEdit.toPlainText())
self.song.verse_order = unicode(self.VerseOrderEdit.text()) self.song.verse_order = unicode(self.VerseOrderEdit.text())
self.song.ccli_number = unicode(self.CCLNumberEdit.text()) self.song.ccli_number = unicode(self.CCLNumberEdit.text())
self.song.song_number = unicode(self.songBookNumberEdit.text())
if self._validate_song(): if self._validate_song():
self.processLyrics() self.processLyrics()
self.processTitle() self.processTitle()
self.song.authors = []
for row in range(self.AuthorsListView.count()):
item = self.AuthorsListView.item(row)
authorId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.song.authors.append(self.songmanager.get_object(Author,
authorId))
self.song.topics = []
for row in range(self.TopicsListView.count()):
item = self.TopicsListView.item(row)
topicId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.song.topics.append(self.songmanager.get_object(Topic,
topicId))
self.songmanager.save_object(self.song) self.songmanager.save_object(self.song)
return True return True
return False return False
@ -684,5 +678,5 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def processTitle(self): def processTitle(self):
log.debug(u'processTitle') log.debug(u'processTitle')
self.song.search_title = \ self.song.search_title = re.sub(r'[\'"`,;:(){}?]+', u'',
re.sub(r'[\'"`,;:(){}?]+', u'', unicode(self.song.search_title)) unicode(self.song.search_title))

View File

@ -31,77 +31,78 @@ from openlp.core.ui import SpellTextEdit
from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib import VerseType
class Ui_EditVerseDialog(object): class Ui_EditVerseDialog(object):
def setupUi(self, EditVerseDialog): def setupUi(self, editVerseDialog):
EditVerseDialog.setObjectName(u'EditVerseDialog') editVerseDialog.setObjectName(u'editVerseDialog')
EditVerseDialog.resize(474, 442) editVerseDialog.resize(474, 442)
EditVerseDialog.setModal(True) editVerseDialog.setModal(True)
self.EditVerseLayout = QtGui.QVBoxLayout(EditVerseDialog) self.editVerseLayout = QtGui.QVBoxLayout(editVerseDialog)
self.EditVerseLayout.setSpacing(8) self.editVerseLayout.setSpacing(8)
self.EditVerseLayout.setMargin(8) self.editVerseLayout.setMargin(8)
self.EditVerseLayout.setObjectName(u'EditVerseLayout') self.editVerseLayout.setObjectName(u'editVerseLayout')
self.VerseTextEdit = SpellTextEdit(EditVerseDialog) self.verseTextEdit = SpellTextEdit(editVerseDialog)
self.VerseTextEdit.setObjectName(u'VerseTextEdit') self.verseTextEdit.setObjectName(u'verseTextEdit')
self.EditVerseLayout.addWidget(self.VerseTextEdit) self.editVerseLayout.addWidget(self.verseTextEdit)
self.VerseTypeLayout = QtGui.QHBoxLayout() self.verseTypeLayout = QtGui.QHBoxLayout()
self.VerseTypeLayout.setSpacing(8) self.verseTypeLayout.setSpacing(8)
self.VerseTypeLayout.setObjectName(u'VerseTypeLayout') self.verseTypeLayout.setObjectName(u'verseTypeLayout')
self.VerseTypeLabel = QtGui.QLabel(EditVerseDialog) self.verseTypeLabel = QtGui.QLabel(editVerseDialog)
self.VerseTypeLabel.setObjectName(u'VerseTypeLabel') self.verseTypeLabel.setObjectName(u'verseTypeLabel')
self.VerseTypeLayout.addWidget(self.VerseTypeLabel) self.verseTypeLayout.addWidget(self.verseTypeLabel)
self.VerseTypeComboBox = QtGui.QComboBox(EditVerseDialog) self.verseTypeComboBox = QtGui.QComboBox(editVerseDialog)
self.VerseTypeComboBox.setObjectName(u'VerseTypeComboBox') self.verseTypeComboBox.setObjectName(u'verseTypeComboBox')
self.VerseTypeComboBox.addItem(u'') self.verseTypeLabel.setBuddy(self.verseTypeComboBox)
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeComboBox.addItem(u'') self.verseTypeComboBox.addItem(u'')
self.VerseTypeLayout.addWidget(self.VerseTypeComboBox) self.verseTypeComboBox.addItem(u'')
self.VerseNumberBox = QtGui.QSpinBox(EditVerseDialog) self.verseTypeLayout.addWidget(self.verseTypeComboBox)
self.VerseNumberBox.setMinimum(1) self.verseNumberBox = QtGui.QSpinBox(editVerseDialog)
self.VerseNumberBox.setObjectName(u'VerseNumberBox') self.verseNumberBox.setMinimum(1)
self.VerseTypeLayout.addWidget(self.VerseNumberBox) self.verseNumberBox.setObjectName(u'verseNumberBox')
self.InsertButton = QtGui.QPushButton(EditVerseDialog) self.verseTypeLayout.addWidget(self.verseNumberBox)
self.InsertButton.setIcon(build_icon(u':/general/general_add.png')) self.insertButton = QtGui.QPushButton(editVerseDialog)
self.InsertButton.setObjectName(u'InsertButton') self.insertButton.setIcon(build_icon(u':/general/general_add.png'))
self.VerseTypeLayout.addWidget(self.InsertButton) self.insertButton.setObjectName(u'insertButton')
self.VerseTypeSpacer = QtGui.QSpacerItem(40, 20, self.verseTypeLayout.addWidget(self.insertButton)
self.verseTypeSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.VerseTypeLayout.addItem(self.VerseTypeSpacer) self.verseTypeLayout.addItem(self.verseTypeSpacer)
self.EditVerseLayout.addLayout(self.VerseTypeLayout) self.editVerseLayout.addLayout(self.verseTypeLayout)
self.EditButtonBox = QtGui.QDialogButtonBox(EditVerseDialog) self.editButtonBox = QtGui.QDialogButtonBox(editVerseDialog)
self.EditButtonBox.setOrientation(QtCore.Qt.Horizontal) self.editButtonBox.setOrientation(QtCore.Qt.Horizontal)
self.EditButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | self.editButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
QtGui.QDialogButtonBox.Save) QtGui.QDialogButtonBox.Save)
self.EditButtonBox.setObjectName(u'EditButtonBox') self.editButtonBox.setObjectName(u'editButtonBox')
self.EditVerseLayout.addWidget(self.EditButtonBox) self.editVerseLayout.addWidget(self.editButtonBox)
self.retranslateUi(EditVerseDialog) self.retranslateUi(editVerseDialog)
QtCore.QObject.connect(self.EditButtonBox, QtCore.SIGNAL(u'accepted()'), QtCore.QObject.connect(self.editButtonBox, QtCore.SIGNAL(u'accepted()'),
EditVerseDialog.accept) editVerseDialog.accept)
QtCore.QObject.connect(self.EditButtonBox, QtCore.SIGNAL(u'rejected()'), QtCore.QObject.connect(self.editButtonBox, QtCore.SIGNAL(u'rejected()'),
EditVerseDialog.reject) editVerseDialog.reject)
QtCore.QMetaObject.connectSlotsByName(EditVerseDialog) QtCore.QMetaObject.connectSlotsByName(editVerseDialog)
def retranslateUi(self, EditVerseDialog): def retranslateUi(self, editVerseDialog):
EditVerseDialog.setWindowTitle( editVerseDialog.setWindowTitle(
translate('SongsPlugin.EditVerseForm', 'Edit Verse')) translate('SongsPlugin.EditVerseForm', 'Edit Verse'))
self.VerseTypeLabel.setText( self.verseTypeLabel.setText(
translate('SongsPlugin.EditVerseForm', '&Verse type:')) translate('SongsPlugin.EditVerseForm', '&Verse type:'))
self.VerseTypeComboBox.setItemText(0, self.verseTypeComboBox.setItemText(0,
VerseType.to_string(VerseType.Verse)) VerseType.to_string(VerseType.Verse))
self.VerseTypeComboBox.setItemText(1, self.verseTypeComboBox.setItemText(1,
VerseType.to_string(VerseType.Chorus)) VerseType.to_string(VerseType.Chorus))
self.VerseTypeComboBox.setItemText(2, self.verseTypeComboBox.setItemText(2,
VerseType.to_string(VerseType.Bridge)) VerseType.to_string(VerseType.Bridge))
self.VerseTypeComboBox.setItemText(3, self.verseTypeComboBox.setItemText(3,
VerseType.to_string(VerseType.PreChorus)) VerseType.to_string(VerseType.PreChorus))
self.VerseTypeComboBox.setItemText(4, self.verseTypeComboBox.setItemText(4,
VerseType.to_string(VerseType.Intro)) VerseType.to_string(VerseType.Intro))
self.VerseTypeComboBox.setItemText(5, self.verseTypeComboBox.setItemText(5,
VerseType.to_string(VerseType.Ending)) VerseType.to_string(VerseType.Ending))
self.VerseTypeComboBox.setItemText(6, self.verseTypeComboBox.setItemText(6,
VerseType.to_string(VerseType.Other)) VerseType.to_string(VerseType.Other))
self.InsertButton.setText( self.insertButton.setText(
translate('SongsPlugin.EditVerseForm', '&Insert')) translate('SongsPlugin.EditVerseForm', '&Insert'))

View File

@ -45,19 +45,14 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
""" """
QtGui.QDialog.__init__(self, parent) QtGui.QDialog.__init__(self, parent)
self.setupUi(self) self.setupUi(self)
QtCore.QObject.connect(self.VerseTextEdit, QtCore.QObject.connect(self.verseTextEdit,
QtCore.SIGNAL('customContextMenuRequested(QPoint)'), QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
self.contextMenu) self.contextMenu)
QtCore.QObject.connect( QtCore.QObject.connect(self.insertButton, QtCore.SIGNAL(u'clicked()'),
self.InsertButton, self.onInsertButtonClicked)
QtCore.SIGNAL(u'clicked()'), QtCore.QObject.connect(self.verseTextEdit,
self.onInsertButtonClicked
)
QtCore.QObject.connect(
self.VerseTextEdit,
QtCore.SIGNAL(u'cursorPositionChanged()'), QtCore.SIGNAL(u'cursorPositionChanged()'),
self.onCursorPositionChanged self.onCursorPositionChanged)
)
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---') self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
def contextMenu(self, point): def contextMenu(self, point):
@ -65,21 +60,21 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
print item print item
def insertVerse(self, title, num=1): def insertVerse(self, title, num=1):
if self.VerseTextEdit.textCursor().columnNumber() != 0: if self.verseTextEdit.textCursor().columnNumber() != 0:
self.VerseTextEdit.insertPlainText(u'\n') self.verseTextEdit.insertPlainText(u'\n')
self.VerseTextEdit.insertPlainText(u'---[%s:%s]---\n' % (title, num)) self.verseTextEdit.insertPlainText(u'---[%s:%s]---\n' % (title, num))
self.VerseTextEdit.setFocus() self.verseTextEdit.setFocus()
def onInsertButtonClicked(self): def onInsertButtonClicked(self):
if self.VerseTextEdit.textCursor().columnNumber() != 0: if self.verseTextEdit.textCursor().columnNumber() != 0:
self.VerseTextEdit.insertPlainText(u'\n') self.verseTextEdit.insertPlainText(u'\n')
verse_type = self.VerseTypeComboBox.currentIndex() verse_type = self.verseTypeComboBox.currentIndex()
if verse_type == VerseType.Verse: if verse_type == VerseType.Verse:
self.insertVerse(VerseType.to_string(VerseType.Verse), self.insertVerse(VerseType.to_string(VerseType.Verse),
self.VerseNumberBox.value()) self.verseNumberBox.value())
elif verse_type == VerseType.Chorus: elif verse_type == VerseType.Chorus:
self.insertVerse(VerseType.to_string(VerseType.Chorus), self.insertVerse(VerseType.to_string(VerseType.Chorus),
self.VerseNumberBox.value()) self.verseNumberBox.value())
elif verse_type == VerseType.Bridge: elif verse_type == VerseType.Bridge:
self.insertVerse(VerseType.to_string(VerseType.Bridge)) self.insertVerse(VerseType.to_string(VerseType.Bridge))
elif verse_type == VerseType.PreChorus: elif verse_type == VerseType.PreChorus:
@ -92,12 +87,12 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
self.insertVerse(VerseType.to_string(VerseType.Other)) self.insertVerse(VerseType.to_string(VerseType.Other))
def onCursorPositionChanged(self): def onCursorPositionChanged(self):
position = self.VerseTextEdit.textCursor().position() position = self.verseTextEdit.textCursor().position()
text = unicode(self.VerseTextEdit.toPlainText()) text = unicode(self.verseTextEdit.toPlainText())
if not text: if not text:
return return
if text.rfind(u'[', 0, position) > text.rfind(u']', 0, position) and \ if text.rfind(u'[', 0, position) > text.rfind(u']', 0, position) and \
text.find(u']', position) < text.find(u'[', position): text.find(u']', position) < text.find(u'[', position):
return return
position = text.rfind(u'---[', 0, position) position = text.rfind(u'---[', 0, position)
if position == -1: if position == -1:
@ -113,8 +108,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
verse_number = int(match.group(2)) verse_number = int(match.group(2))
verse_type_index = VerseType.from_string(verse_type) verse_type_index = VerseType.from_string(verse_type)
if verse_type_index is not None: if verse_type_index is not None:
self.VerseTypeComboBox.setCurrentIndex(verse_type_index) self.verseTypeComboBox.setCurrentIndex(verse_type_index)
self.VerseNumberBox.setValue(verse_number) self.verseNumberBox.setValue(verse_number)
def setVerse(self, text, single=False, def setVerse(self, text, single=False,
tag=u'%s:1' % VerseType.to_string(VerseType.Verse)): tag=u'%s:1' % VerseType.to_string(VerseType.Verse)):
@ -122,26 +117,26 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
verse_type, verse_number = tag.split(u':') verse_type, verse_number = tag.split(u':')
verse_type_index = VerseType.from_string(verse_type) verse_type_index = VerseType.from_string(verse_type)
if verse_type_index is not None: if verse_type_index is not None:
self.VerseTypeComboBox.setCurrentIndex(verse_type_index) self.verseTypeComboBox.setCurrentIndex(verse_type_index)
self.VerseNumberBox.setValue(int(verse_number)) self.verseNumberBox.setValue(int(verse_number))
self.InsertButton.setVisible(False) self.insertButton.setVisible(False)
else: else:
if not text: if not text:
text = u'---[%s:1]---\n' % VerseType.to_string(VerseType.Verse) text = u'---[%s:1]---\n' % VerseType.to_string(VerseType.Verse)
self.VerseTypeComboBox.setCurrentIndex(0) self.verseTypeComboBox.setCurrentIndex(0)
self.VerseNumberBox.setValue(1) self.verseNumberBox.setValue(1)
self.InsertButton.setVisible(True) self.insertButton.setVisible(True)
self.VerseTextEdit.setPlainText(text) self.verseTextEdit.setPlainText(text)
self.VerseTextEdit.setFocus(QtCore.Qt.OtherFocusReason) self.verseTextEdit.setFocus(QtCore.Qt.OtherFocusReason)
self.VerseTextEdit.moveCursor(QtGui.QTextCursor.End) self.verseTextEdit.moveCursor(QtGui.QTextCursor.End)
def getVerse(self): def getVerse(self):
return self.VerseTextEdit.toPlainText(), \ return self.verseTextEdit.toPlainText(), \
VerseType.to_string(self.VerseTypeComboBox.currentIndex()), \ VerseType.to_string(self.verseTypeComboBox.currentIndex()), \
unicode(self.VerseNumberBox.value()) unicode(self.verseNumberBox.value())
def getVerseAll(self): def getVerseAll(self):
text = self.VerseTextEdit.toPlainText() text = self.verseTextEdit.toPlainText()
if not text.startsWith(u'---['): if not text.startsWith(u'---['):
text = u'---[%s:1]---\n%s' % (VerseType.to_string(VerseType.Verse), text = u'---[%s:1]---\n%s' % (VerseType.to_string(VerseType.Verse),
text) text)

View File

@ -215,25 +215,32 @@ class Ui_SongImportWizard(object):
self.wordsOfWorshipLayout.setSpacing(8) self.wordsOfWorshipLayout.setSpacing(8)
self.wordsOfWorshipLayout.setMargin(0) self.wordsOfWorshipLayout.setMargin(0)
self.wordsOfWorshipLayout.setObjectName(u'wordsOfWorshipLayout') self.wordsOfWorshipLayout.setObjectName(u'wordsOfWorshipLayout')
self.wordsOfWorshipFileListWidget = QtGui.QListWidget(self.wordsOfWorshipPage) self.wordsOfWorshipFileListWidget = QtGui.QListWidget(
self.wordsOfWorshipPage)
self.wordsOfWorshipFileListWidget.setSelectionMode( self.wordsOfWorshipFileListWidget.setSelectionMode(
QtGui.QAbstractItemView.ExtendedSelection) QtGui.QAbstractItemView.ExtendedSelection)
self.wordsOfWorshipFileListWidget.setObjectName(u'wordsOfWorshipFileListWidget') self.wordsOfWorshipFileListWidget.setObjectName(
u'wordsOfWorshipFileListWidget')
self.wordsOfWorshipLayout.addWidget(self.wordsOfWorshipFileListWidget) self.wordsOfWorshipLayout.addWidget(self.wordsOfWorshipFileListWidget)
self.wordsOfWorshipButtonLayout = QtGui.QHBoxLayout() self.wordsOfWorshipButtonLayout = QtGui.QHBoxLayout()
self.wordsOfWorshipButtonLayout.setSpacing(8) self.wordsOfWorshipButtonLayout.setSpacing(8)
self.wordsOfWorshipButtonLayout.setObjectName(u'wordsOfWorshipButtonLayout') self.wordsOfWorshipButtonLayout.setObjectName(
self.wordsOfWorshipAddButton = QtGui.QPushButton(self.wordsOfWorshipPage) u'wordsOfWorshipButtonLayout')
self.wordsOfWorshipAddButton = QtGui.QPushButton(
self.wordsOfWorshipPage)
self.wordsOfWorshipAddButton.setIcon(openIcon) self.wordsOfWorshipAddButton.setIcon(openIcon)
self.wordsOfWorshipAddButton.setObjectName(u'wordsOfWorshipAddButton') self.wordsOfWorshipAddButton.setObjectName(u'wordsOfWorshipAddButton')
self.wordsOfWorshipButtonLayout.addWidget(self.wordsOfWorshipAddButton) self.wordsOfWorshipButtonLayout.addWidget(self.wordsOfWorshipAddButton)
self.wordsOfWorshipButtonSpacer = QtGui.QSpacerItem(40, 20, self.wordsOfWorshipButtonSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.wordsOfWorshipButtonLayout.addItem(self.wordsOfWorshipButtonSpacer) self.wordsOfWorshipButtonLayout.addItem(self.wordsOfWorshipButtonSpacer)
self.wordsOfWorshipRemoveButton = QtGui.QPushButton(self.wordsOfWorshipPage) self.wordsOfWorshipRemoveButton = QtGui.QPushButton(
self.wordsOfWorshipPage)
self.wordsOfWorshipRemoveButton.setIcon(deleteIcon) self.wordsOfWorshipRemoveButton.setIcon(deleteIcon)
self.wordsOfWorshipRemoveButton.setObjectName(u'wordsOfWorshipRemoveButton') self.wordsOfWorshipRemoveButton.setObjectName(
self.wordsOfWorshipButtonLayout.addWidget(self.wordsOfWorshipRemoveButton) u'wordsOfWorshipRemoveButton')
self.wordsOfWorshipButtonLayout.addWidget(
self.wordsOfWorshipRemoveButton)
self.wordsOfWorshipLayout.addLayout(self.wordsOfWorshipButtonLayout) self.wordsOfWorshipLayout.addLayout(self.wordsOfWorshipButtonLayout)
self.formatStackedWidget.addWidget(self.wordsOfWorshipPage) self.formatStackedWidget.addWidget(self.wordsOfWorshipPage)
# CCLI File import # CCLI File import
@ -267,30 +274,43 @@ class Ui_SongImportWizard(object):
# Songs of Fellowship # Songs of Fellowship
self.songsOfFellowshipPage = QtGui.QWidget() self.songsOfFellowshipPage = QtGui.QWidget()
self.songsOfFellowshipPage.setObjectName(u'songsOfFellowshipPage') self.songsOfFellowshipPage.setObjectName(u'songsOfFellowshipPage')
self.songsOfFellowshipLayout = QtGui.QVBoxLayout(self.songsOfFellowshipPage) self.songsOfFellowshipLayout = QtGui.QVBoxLayout(
self.songsOfFellowshipPage)
self.songsOfFellowshipLayout.setMargin(0) self.songsOfFellowshipLayout.setMargin(0)
self.songsOfFellowshipLayout.setSpacing(8) self.songsOfFellowshipLayout.setSpacing(8)
self.songsOfFellowshipLayout.setObjectName(u'songsOfFellowshipLayout') self.songsOfFellowshipLayout.setObjectName(u'songsOfFellowshipLayout')
self.songsOfFellowshipFileListWidget = QtGui.QListWidget(self.songsOfFellowshipPage) self.songsOfFellowshipFileListWidget = QtGui.QListWidget(
self.songsOfFellowshipPage)
self.songsOfFellowshipFileListWidget.setSelectionMode( self.songsOfFellowshipFileListWidget.setSelectionMode(
QtGui.QAbstractItemView.ExtendedSelection) QtGui.QAbstractItemView.ExtendedSelection)
self.songsOfFellowshipFileListWidget.setObjectName(u'songsOfFellowshipFileListWidget') self.songsOfFellowshipFileListWidget.setObjectName(
self.songsOfFellowshipLayout.addWidget(self.songsOfFellowshipFileListWidget) u'songsOfFellowshipFileListWidget')
self.songsOfFellowshipLayout.addWidget(
self.songsOfFellowshipFileListWidget)
self.songsOfFellowshipButtonLayout = QtGui.QHBoxLayout() self.songsOfFellowshipButtonLayout = QtGui.QHBoxLayout()
self.songsOfFellowshipButtonLayout.setSpacing(8) self.songsOfFellowshipButtonLayout.setSpacing(8)
self.songsOfFellowshipButtonLayout.setObjectName(u'songsOfFellowshipButtonLayout') self.songsOfFellowshipButtonLayout.setObjectName(
self.songsOfFellowshipAddButton = QtGui.QPushButton(self.songsOfFellowshipPage) u'songsOfFellowshipButtonLayout')
self.songsOfFellowshipAddButton = QtGui.QPushButton(
self.songsOfFellowshipPage)
self.songsOfFellowshipAddButton.setIcon(openIcon) self.songsOfFellowshipAddButton.setIcon(openIcon)
self.songsOfFellowshipAddButton.setObjectName(u'songsOfFellowshipAddButton') self.songsOfFellowshipAddButton.setObjectName(
self.songsOfFellowshipButtonLayout.addWidget(self.songsOfFellowshipAddButton) u'songsOfFellowshipAddButton')
self.songsOfFellowshipButtonLayout.addWidget(
self.songsOfFellowshipAddButton)
self.songsOfFellowshipButtonSpacer = QtGui.QSpacerItem(40, 20, self.songsOfFellowshipButtonSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.songsOfFellowshipButtonLayout.addItem(self.songsOfFellowshipButtonSpacer) self.songsOfFellowshipButtonLayout.addItem(
self.songsOfFellowshipRemoveButton = QtGui.QPushButton(self.songsOfFellowshipPage) self.songsOfFellowshipButtonSpacer)
self.songsOfFellowshipRemoveButton = QtGui.QPushButton(
self.songsOfFellowshipPage)
self.songsOfFellowshipRemoveButton.setIcon(deleteIcon) self.songsOfFellowshipRemoveButton.setIcon(deleteIcon)
self.songsOfFellowshipRemoveButton.setObjectName(u'songsOfFellowshipRemoveButton') self.songsOfFellowshipRemoveButton.setObjectName(
self.songsOfFellowshipButtonLayout.addWidget(self.songsOfFellowshipRemoveButton) u'songsOfFellowshipRemoveButton')
self.songsOfFellowshipLayout.addLayout(self.songsOfFellowshipButtonLayout) self.songsOfFellowshipButtonLayout.addWidget(
self.songsOfFellowshipRemoveButton)
self.songsOfFellowshipLayout.addLayout(
self.songsOfFellowshipButtonLayout)
self.formatStackedWidget.addWidget(self.songsOfFellowshipPage) self.formatStackedWidget.addWidget(self.songsOfFellowshipPage)
# Generic Document/Presentation import # Generic Document/Presentation import
self.genericPage = QtGui.QWidget() self.genericPage = QtGui.QWidget()

View File

@ -404,12 +404,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
book.publisher = temp_publisher book.publisher = temp_publisher
def mergeAuthors(self, old_author): def mergeAuthors(self, old_author):
''' """
Merges two authors into one author. Merges two authors into one author.
``old_author`` ``old_author``
The author which will be deleted afterwards. The author which will be deleted afterwards.
''' """
existing_author = self.songmanager.get_object_filtered(Author, existing_author = self.songmanager.get_object_filtered(Author,
and_(Author.first_name == old_author.first_name, and_(Author.first_name == old_author.first_name,
Author.last_name == old_author.last_name, Author.last_name == old_author.last_name,
@ -426,12 +426,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
self.songmanager.delete_object(Author, old_author.id) self.songmanager.delete_object(Author, old_author.id)
def mergeTopics(self, old_topic): def mergeTopics(self, old_topic):
''' """
Merges two topics into one topic. Merges two topics into one topic.
``old_topic`` ``old_topic``
The topic which will be deleted afterwards. The topic which will be deleted afterwards.
''' """
existing_topic = self.songmanager.get_object_filtered(Topic, existing_topic = self.songmanager.get_object_filtered(Topic,
Topic.name == old_topic.name) Topic.name == old_topic.name)
songs = self.songmanager.get_all_objects(Song, songs = self.songmanager.get_all_objects(Song,
@ -446,12 +446,12 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
self.songmanager.delete_object(Topic, old_topic.id) self.songmanager.delete_object(Topic, old_topic.id)
def mergeBooks(self, old_book): def mergeBooks(self, old_book):
''' """
Merges two books into one book. Merges two books into one book.
``old_book`` ``old_book``
The book which will be deleted afterwards. The book which will be deleted afterwards.
''' """
existing_book = self.songmanager.get_object_filtered(Book, existing_book = self.songmanager.get_object_filtered(Book,
and_(Book.name == old_book.name, and_(Book.name == old_book.name,
Book.publisher == old_book.publisher)) Book.publisher == old_book.publisher))

View File

@ -72,7 +72,7 @@ def init_schema(url):
``url`` ``url``
The database to setup The database to setup
""" """
session, metadata = init_db(url, auto_flush=False) session, metadata = init_db(url)
# Definition of the "authors" table # Definition of the "authors" table
authors_table = Table(u'authors', metadata, authors_table = Table(u'authors', metadata,