diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index a369e46a1..636ac754a 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -41,7 +41,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): """ log.info(u'%s EditSongForm loaded', __name__) - def __init__(self, songmanager, parent=None): + def __init__(self, parent, songmanager): """ Constructor """ @@ -106,7 +106,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview) # Create other objects and forms self.songmanager = songmanager - self.verse_form = EditVerseForm() + self.verse_form = EditVerseForm(self) self.initialise() self.AuthorsListView.setSortingEnabled(False) self.AuthorsListView.setAlternatingRowColors(True) @@ -317,7 +317,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.VerseDeleteButton.setEnabled(True) def onVerseAddButtonClicked(self): - self.verse_form.setVerse(u'', self.VerseListWidget.count() + 1, True) + self.verse_form.setVerse(u'', True) if self.verse_form.exec_(): afterText, verse, subVerse = self.verse_form.getVerse() data = u'%s:%s' %(verse, subVerse) @@ -331,8 +331,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if item: tempText = item.text() verseId = unicode((item.data(QtCore.Qt.UserRole)).toString()) - self.verse_form.setVerse(tempText, \ - self.VerseListWidget.count(), True, verseId) + self.verse_form.setVerse(tempText, True, verseId) if self.verse_form.exec_(): afterText, verse, subVerse = self.verse_form.getVerse() data = u'%s:%s' %(verse, subVerse) diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 7829e2c27..b8b83b614 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -28,102 +28,75 @@ from PyQt4 import QtCore, QtGui class Ui_EditVerseDialog(object): def setupUi(self, EditVerseDialog): EditVerseDialog.setObjectName(u'EditVerseDialog') - EditVerseDialog.resize(500, 521) + EditVerseDialog.resize(474, 442) EditVerseDialog.setModal(True) - self.layoutWidget = QtGui.QWidget(EditVerseDialog) - self.layoutWidget.setGeometry(QtCore.QRect(11, 1, 471, 491)) - self.layoutWidget.setObjectName(u'layoutWidget') - self.verticalLayout_3 = QtGui.QVBoxLayout(self.layoutWidget) - self.verticalLayout_3.setObjectName(u'verticalLayout_3') - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName(u'horizontalLayout') - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(u'verticalLayout') - self.VerseTypeLabel = QtGui.QLabel(self.layoutWidget) - self.VerseTypeLabel.setTextFormat(QtCore.Qt.PlainText) - self.VerseTypeLabel.setAlignment(QtCore.Qt.AlignCenter) - self.VerseTypeLabel.setObjectName(u'VerseTypeLabel') - self.verticalLayout.addWidget(self.VerseTypeLabel) - self.VerseListComboBox = QtGui.QComboBox(self.layoutWidget) - self.VerseListComboBox.setObjectName(u'VerseListComboBox') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.VerseListComboBox.addItem(u'') - self.verticalLayout.addWidget(self.VerseListComboBox) - self.horizontalLayout.addLayout(self.verticalLayout) - self.verticalLayout_2 = QtGui.QVBoxLayout() - self.verticalLayout_2.setObjectName(u'verticalLayout_2') - self.VerseNumberLabel = QtGui.QLabel(self.layoutWidget) - self.VerseNumberLabel.setAlignment(QtCore.Qt.AlignCenter) - self.VerseNumberLabel.setObjectName(u'VerseNumberLabel') - self.verticalLayout_2.addWidget(self.VerseNumberLabel) - self.SubVerseListComboBox = QtGui.QComboBox(self.layoutWidget) - self.SubVerseListComboBox.setObjectName(u'SubVerseListComboBox') - self.verticalLayout_2.addWidget(self.SubVerseListComboBox) - self.horizontalLayout.addLayout(self.verticalLayout_2) - self.verticalLayout_3.addLayout(self.horizontalLayout) - self.VerseTextEdit = QtGui.QTextEdit(self.layoutWidget) - self.VerseTextEdit.setAcceptRichText(False) + self.EditVerseLayout = QtGui.QVBoxLayout(EditVerseDialog) + self.EditVerseLayout.setSpacing(8) + self.EditVerseLayout.setMargin(8) + self.EditVerseLayout.setObjectName(u'EditVerseLayout') + self.VerseTextEdit = QtGui.QPlainTextEdit(EditVerseDialog) self.VerseTextEdit.setObjectName(u'VerseTextEdit') - self.verticalLayout_3.addWidget(self.VerseTextEdit) - self.horizontalLayout_2 = QtGui.QHBoxLayout() - self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') - self.addBridge = QtGui.QPushButton(self.layoutWidget) - self.addBridge.setObjectName(u'addBridge') - self.horizontalLayout_2.addWidget(self.addBridge) - self.addVerse = QtGui.QPushButton(self.layoutWidget) - self.addVerse.setObjectName(u'addVerse') - self.horizontalLayout_2.addWidget(self.addVerse) - self.addChorus = QtGui.QPushButton(self.layoutWidget) - self.addChorus.setObjectName(u'addChorus') - self.horizontalLayout_2.addWidget(self.addChorus) - self.verticalLayout_3.addLayout(self.horizontalLayout_2) - self.horizontalLayout_3 = QtGui.QHBoxLayout() - self.horizontalLayout_3.setObjectName(u'horizontalLayout_3') - self.addPreChorus = QtGui.QPushButton(self.layoutWidget) - self.addPreChorus.setObjectName(u'addPreChorus') - self.horizontalLayout_3.addWidget(self.addPreChorus) - self.addIntro = QtGui.QPushButton(self.layoutWidget) - self.addIntro.setObjectName(u'addIntro') - self.horizontalLayout_3.addWidget(self.addIntro) - self.addOther = QtGui.QPushButton(self.layoutWidget) - self.addOther.setObjectName(u'addOther') - self.horizontalLayout_3.addWidget(self.addOther) - self.addEnding = QtGui.QPushButton(self.layoutWidget) - self.addEnding.setObjectName(u'addEnding') - self.horizontalLayout_3.addWidget(self.addEnding) - self.verticalLayout_3.addLayout(self.horizontalLayout_3) - self.ButtonBox = QtGui.QDialogButtonBox(self.layoutWidget) - self.ButtonBox.setOrientation(QtCore.Qt.Horizontal) - self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) - self.ButtonBox.setObjectName(u'ButtonBox') - self.verticalLayout_3.addWidget(self.ButtonBox) + self.EditVerseLayout.addWidget(self.VerseTextEdit) + self.VerseTypeLayout = QtGui.QHBoxLayout() + self.VerseTypeLayout.setSpacing(8) + self.VerseTypeLayout.setObjectName(u'VerseTypeLayout') + self.VerseTypeLabel = QtGui.QLabel(EditVerseDialog) + self.VerseTypeLabel.setObjectName(u'VerseTypeLabel') + self.VerseTypeLayout.addWidget(self.VerseTypeLabel) + self.VerseTypeComboBox = QtGui.QComboBox(EditVerseDialog) + self.VerseTypeComboBox.setObjectName(u'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.VerseTypeLayout.addWidget(self.VerseTypeComboBox) + self.VerseNumberBox = QtGui.QSpinBox(EditVerseDialog) + self.VerseNumberBox.setMinimum(1) + self.VerseNumberBox.setObjectName(u'VerseNumberBox') + self.VerseTypeLayout.addWidget(self.VerseNumberBox) + self.InsertButton = QtGui.QPushButton(EditVerseDialog) + self.AddIcon = QtGui.QIcon() + self.AddIcon.addPixmap(QtGui.QPixmap(u':/general/general_add.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.InsertButton.setIcon(self.AddIcon) + self.InsertButton.setObjectName(u'InsertButton') + self.VerseTypeLayout.addWidget(self.InsertButton) + self.VerseTypeSpacer = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.VerseTypeLayout.addItem(self.VerseTypeSpacer) + self.EditVerseLayout.addLayout(self.VerseTypeLayout) + self.EditButtonBox = QtGui.QDialogButtonBox(EditVerseDialog) + self.EditButtonBox.setOrientation(QtCore.Qt.Horizontal) + self.EditButtonBox.setStandardButtons( + QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Save) + self.EditButtonBox.setObjectName(u'EditButtonBox') + self.EditVerseLayout.addWidget(self.EditButtonBox) self.retranslateUi(EditVerseDialog) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), EditVerseDialog.accept) - QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), EditVerseDialog.reject) + QtCore.QObject.connect( + self.EditButtonBox, + QtCore.SIGNAL(u'accepted()'), + EditVerseDialog.accept + ) + QtCore.QObject.connect( + self.EditButtonBox, + QtCore.SIGNAL(u'rejected()'), + EditVerseDialog.reject + ) QtCore.QMetaObject.connectSlotsByName(EditVerseDialog) def retranslateUi(self, EditVerseDialog): EditVerseDialog.setWindowTitle(self.trUtf8('Edit Verse')) - self.VerseTypeLabel.setText(self.trUtf8('Verse Type')) - self.VerseListComboBox.setItemText(0, self.trUtf8('Intro')) - self.VerseListComboBox.setItemText(1, self.trUtf8('Verse')) - self.VerseListComboBox.setItemText(2, self.trUtf8('Pre-Chorus')) - self.VerseListComboBox.setItemText(3, self.trUtf8('Chorus')) - self.VerseListComboBox.setItemText(4, self.trUtf8('Bridge')) - self.VerseListComboBox.setItemText(5, self.trUtf8('Ending')) - self.VerseListComboBox.setItemText(6, self.trUtf8('Other')) - self.VerseNumberLabel.setText(self.trUtf8('Number')) - self.addBridge.setText(self.trUtf8('Bridge')) - self.addVerse.setText(self.trUtf8('Verse')) - self.addChorus.setText(self.trUtf8('Chorus')) - self.addPreChorus.setText(self.trUtf8('Pre-Chorus')) - self.addIntro.setText(self.trUtf8('Intro')) - self.addOther.setText(self.trUtf8('Other')) - self.addEnding.setText(self.trUtf8('Ending')) + self.VerseTypeLabel.setText(self.trUtf8('Verse Type:')) + self.VerseTypeComboBox.setItemText(0, self.trUtf8('Verse')) + self.VerseTypeComboBox.setItemText(1, self.trUtf8('Chorus')) + self.VerseTypeComboBox.setItemText(2, self.trUtf8('Bridge')) + self.VerseTypeComboBox.setItemText(3, self.trUtf8('Pre-Chorus')) + self.VerseTypeComboBox.setItemText(4, self.trUtf8('Intro')) + self.VerseTypeComboBox.setItemText(5, self.trUtf8('Ending')) + self.VerseTypeComboBox.setItemText(6, self.trUtf8('Other')) + self.InsertButton.setText(self.trUtf8('Insert')) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 2666c146e..44590d430 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -23,9 +23,60 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +import re +import logging + from PyQt4 import QtCore, QtGui + from editversedialog import Ui_EditVerseDialog +log = logging.getLogger(__name__) + +class VerseType(object): + Verse = 0 + Chorus = 1 + Bridge = 2 + PreChorus = 3 + Intro = 4 + Ending = 5 + Other = 6 + + @staticmethod + def to_string(verse_type): + if verse_type == VerseType.Verse: + return u'Verse' + elif verse_type == VerseType.Chorus: + return u'Chorus' + elif verse_type == VerseType.Bridge: + return u'Bridge' + elif verse_type == VerseType.PreChorus: + return u'Pre-Chorus' + elif verse_type == VerseType.Intro: + return u'Intro' + elif verse_type == VerseType.Ending: + return u'Ending' + elif verse_type == VerseType.Other: + return u'Other' + + @staticmethod + def from_string(verse_type): + verse_type = verse_type.lower() + if verse_type == u'verse': + return VerseType.Verse + elif verse_type == u'chorus': + return VerseType.Chorus + elif verse_type == u'bridge': + return VerseType.Bridge + elif verse_type == u'pre-chorus': + return VerseType.PreChorus + elif verse_type == u'intro': + return VerseType.Intro + elif verse_type == u'ending': + return VerseType.Ending + elif verse_type == u'other': + return VerseType.Other + + class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): """ This is the form that is used to edit the verses of the song. @@ -36,127 +87,91 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) - QtCore.QObject.connect(self.addVerse, - QtCore.SIGNAL(u'clicked()'), self.onAddVerse) - QtCore.QObject.connect(self.addChorus, - QtCore.SIGNAL(u'clicked()'), self.onAddChorus) - QtCore.QObject.connect(self.addBridge, - QtCore.SIGNAL(u'clicked()'), self.onAddBridge) - QtCore.QObject.connect(self.addIntro, - QtCore.SIGNAL(u'clicked()'), self.onAddIntro) - QtCore.QObject.connect(self.addOther, - QtCore.SIGNAL(u'clicked()'), self.onAddOther) - QtCore.QObject.connect(self.addPreChorus, - QtCore.SIGNAL(u'clicked()'), self.onAddPreChorus) - QtCore.QObject.connect(self.addEnding, - QtCore.SIGNAL(u'clicked()'), self.onAddEnding) - QtCore.QObject.connect(self.VerseListComboBox, - QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged) + QtCore.QObject.connect( + self.InsertButton, + QtCore.SIGNAL(u'clicked()'), + self.onInsertButtonClicked + ) + QtCore.QObject.connect( + self.VerseTextEdit, + QtCore.SIGNAL(u'cursorPositionChanged()'), + self.onCursorPositionChanged + ) +# QtCore.QObject.connect(self.VerseListComboBox, +# QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged) + self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---') - def startNewLine(self): + def insertVerse(self, title, num=1): if self.VerseTextEdit.textCursor().columnNumber() != 0: self.VerseTextEdit.insertPlainText(u'\n') - - def onAddIntro(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Intro')) + self.VerseTextEdit.insertPlainText(u'---[%s:%s]---\n' % (title, num)) self.VerseTextEdit.setFocus() - def onAddEnding(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Ending')) - self.VerseTextEdit.setFocus() + def onInsertButtonClicked(self): + if self.VerseTextEdit.textCursor().columnNumber() != 0: + self.VerseTextEdit.insertPlainText(u'\n') + verse_type = self.VerseTypeComboBox.currentIndex() + if verse_type == VerseType.Verse: + self.insertVerse('Verse', self.VerseNumberBox.value()) + elif verse_type == VerseType.Chorus: + self.insertVerse('Chorus', self.VerseNumberBox.value()) + elif verse_type == VerseType.Bridge: + self.insertVerse('Bridge') + elif verse_type == VerseType.PreChorus: + self.insertVerse('Pre-Chorus') + elif verse_type == VerseType.Intro: + self.insertVerse('Intro') + elif verse_type == VerseType.Ending: + self.insertVerse('Ending') + elif verse_type == VerseType.Other: + self.insertVerse('Other') - def onAddOther(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Other')) - self.VerseTextEdit.setFocus() + def onCursorPositionChanged(self): + position = self.VerseTextEdit.textCursor().position() + text = unicode(self.VerseTextEdit.toPlainText()) + if not text: + return + if text.rfind(u'[', 0, position) > text.rfind(u']', 0, position) and \ + text.find(u']', position) < text.find(u'[', position): + return + position = text.rfind(u'---[', 0, position) + if position == -1: + return + text = text[position:] + position = text.find(u']---') + if position == -1: + return + text = text[:position + 4] + match = self.verse_regex.match(text) + if match: + verse_type = match.group(1) + verse_number = int(match.group(2)) + self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) + self.VerseNumberBox.setValue(verse_number) - def onAddPreChorus(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Pre-Chorus')) - self.VerseTextEdit.setFocus() - - def onAddBridge(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Bridge')) - self.VerseTextEdit.setFocus() - - def onAddChorus(self): - self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Chorus')) - self.VerseTextEdit.setFocus() - - def onAddVerse(self): - self.startNewLine() - count = self.VerseTextEdit.toPlainText().\ - count(u'---[%s' % self.trUtf8('Verse')) - self.VerseTextEdit.insertPlainText(u'---[%s:%s]---\n' - % (self.trUtf8('Verse'), count + 1)) - self.VerseTextEdit.setFocus() - - def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): - posVerse = 0 - posSub = 0 - if len(text) == 0 and not single: - text = u'---[%s:1]---\n' % self.trUtf8('Verse') + def setVerse(self, text, single=False, tag=u'Verse:1'): if single: - id = tag.split(u':') - posVerse = self.VerseListComboBox.findText(id[0], QtCore.Qt.MatchExactly) - posSub = self.SubVerseListComboBox.findText(id[1], QtCore.Qt.MatchExactly) - if posVerse == -1: - posVerse = 0 - if posSub == -1: - posSub = 0 - self.VerseListComboBox.setEnabled(True) - self.SubVerseListComboBox.setEnabled(True) - self.SubVerseListComboBox.clear() - for i in range(1, verseCount + 1): - self.SubVerseListComboBox.addItem(u'%s'% i) - self.addBridge.setEnabled(False) - self.addChorus.setEnabled(False) - self.addVerse.setEnabled(False) - self.addIntro.setEnabled(False) - self.addPreChorus.setEnabled(False) - self.addOther.setEnabled(False) - self.addEnding.setEnabled(False) + verse_type, verse_number = tag.split(u':') + self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) + self.VerseNumberBox.setValue(int(verse_number)) + self.InsertButton.setVisible(False) else: - self.VerseListComboBox.setEnabled(False) - self.SubVerseListComboBox.setEnabled(False) - self.addBridge.setEnabled(True) - self.addChorus.setEnabled(True) - self.addVerse.setEnabled(True) - self.addIntro.setEnabled(True) - self.addPreChorus.setEnabled(True) - self.addOther.setEnabled(True) - self.addEnding.setEnabled(True) - self.VerseListComboBox.setCurrentIndex(posVerse) - self.SubVerseListComboBox.setCurrentIndex(posSub) + if not text: + text = u'---[Verse:1]---\n' + self.VerseTypeComboBox.setCurrentIndex(0) + self.VerseNumberBox.setValue(1) + self.InsertButton.setVisible(True) self.VerseTextEdit.setPlainText(text) self.VerseTextEdit.setFocus(QtCore.Qt.OtherFocusReason) - self.onVerseComboChanged(0) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) def getVerse(self): - return self.VerseTextEdit.toPlainText(), \ - unicode(self.VerseListComboBox.currentText()), \ - unicode(self.SubVerseListComboBox.currentText()) + return self.VerseTextEdit.toPlainText(), \ + VerseType.to_string(self.VerseTypeComboBox.currentIndex()), \ + unicode(self.VerseNumberBox.value()) def getVerseAll(self): text = self.VerseTextEdit.toPlainText() if not text.startsWith(u'---['): - text = u'---[%s:1]---\n%s' % (self.trUtf8('Verse'), text) + text = u'---[Verse:1]---\n%s' % text return text - def onVerseComboChanged(self, id): - if unicode(self.VerseListComboBox.currentText()) == self.trUtf8('Verse'): - self.SubVerseListComboBox.setEnabled(True) - else: - self.SubVerseListComboBox.setEnabled(False) - self.SubVerseListComboBox.setCurrentIndex(0) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 5e57ee9f3..e6f163ef6 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -52,7 +52,7 @@ class SongMediaItem(MediaManagerItem): self.ListViewWithDnD_class = SongListView self.servicePath = None MediaManagerItem.__init__(self, parent, icon, title) - self.edit_song_form = EditSongForm(self.parent.manager, self) + self.edit_song_form = EditSongForm(self, self.parent.manager) self.song_maintenance_form = SongMaintenanceForm( self.parent.manager, self) # Holds information about whether the edit is remotly triggered and @@ -305,8 +305,7 @@ class SongMediaItem(MediaManagerItem): songXML = SongXMLParser(song.lyrics) verseList = songXML.get_verses() #no verse list or only 1 space (in error) - if song.verse_order is None or \ - song.verse_order == u'' or song.verse_order == u' ': + if not song.verse_order or not song.verse_order.strip(): for verse in verseList: service_item.add_from_text(verse[1][:30], unicode(verse[1])) else: diff --git a/resources/forms/editversedialog.ui b/resources/forms/editversedialog.ui index e0917f44d..d2f178159 100644 --- a/resources/forms/editversedialog.ui +++ b/resources/forms/editversedialog.ui @@ -6,8 +6,8 @@ 0 0 - 500 - 521 + 474 + 442 @@ -16,174 +16,118 @@ true - - - - 11 - 1 - 471 - 491 - + + + 8 - - - - - - - - - Verse Type - - - Qt::PlainText - - - Qt::AlignCenter - - - - - - - - Intro - - - - - Verse - - - - - Pre-Chorus - - - - - Chorus - - - - - Bridge - - - - - Ending - - - - - Other - - - - - - - - - - - - Number - - - Qt::AlignCenter - - - - - - - - - - - - - - false - - - - - - - - - Bridge - - - - - + + 8 + + + + + false + + + + + + + 8 + + + + + Verse Type: + + + + + + Verse - - - - + + Chorus - - - - - - - - + + + + Bridge + + + Pre-Chorus - - - - + + Intro - - - - - - Other - - - - - + + Ending - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Save - - - - - + + + + Other + + + + + + + + + + + Insert + + + + :/general/general_add.png:/general/general_add.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + + - + + + - ButtonBox + EditButtonBox accepted() EditVerseDialog accept() @@ -199,7 +143,7 @@ - ButtonBox + EditButtonBox rejected() EditVerseDialog reject()