diff --git a/documentation/manual/source/pics/song_edit_author_maintenance.png b/documentation/manual/source/pics/song_edit_author_maintenance.png new file mode 100644 index 000000000..56b5550d2 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_author_maintenance.png differ diff --git a/documentation/manual/source/pics/song_edit_authors.png b/documentation/manual/source/pics/song_edit_authors.png new file mode 100644 index 000000000..4a4a3a773 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_authors.png differ diff --git a/documentation/manual/source/pics/song_edit_lyrics.png b/documentation/manual/source/pics/song_edit_lyrics.png new file mode 100644 index 000000000..10727376c Binary files /dev/null and b/documentation/manual/source/pics/song_edit_lyrics.png differ diff --git a/documentation/manual/source/pics/song_edit_maintenance.png b/documentation/manual/source/pics/song_edit_maintenance.png new file mode 100644 index 000000000..23bcb62df Binary files /dev/null and b/documentation/manual/source/pics/song_edit_maintenance.png differ diff --git a/documentation/manual/source/pics/song_edit_songbook_maintenance.png b/documentation/manual/source/pics/song_edit_songbook_maintenance.png new file mode 100644 index 000000000..d8634ba31 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_songbook_maintenance.png differ diff --git a/documentation/manual/source/pics/song_edit_theme_copyright.png b/documentation/manual/source/pics/song_edit_theme_copyright.png new file mode 100644 index 000000000..5234ccc13 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_theme_copyright.png differ diff --git a/documentation/manual/source/pics/song_edit_topic_maintenance.png b/documentation/manual/source/pics/song_edit_topic_maintenance.png new file mode 100644 index 000000000..70446b819 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_topic_maintenance.png differ diff --git a/documentation/manual/source/pics/song_edit_verse_error.png b/documentation/manual/source/pics/song_edit_verse_error.png new file mode 100644 index 000000000..4fa10fec3 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_verse_error.png differ diff --git a/documentation/manual/source/pics/song_edit_verse_type.png b/documentation/manual/source/pics/song_edit_verse_type.png new file mode 100644 index 000000000..e4cdfa1a6 Binary files /dev/null and b/documentation/manual/source/pics/song_edit_verse_type.png differ diff --git a/documentation/manual/source/songs.rst b/documentation/manual/source/songs.rst index 56928d831..44cda2f80 100644 --- a/documentation/manual/source/songs.rst +++ b/documentation/manual/source/songs.rst @@ -99,4 +99,134 @@ completed. Press :guilabel:`Finish` and OpenLP will be ready to use your songs imported from CCLI SongSelect. +Creating or editing a song slide +================================ +If you want to create a new song slide or, once you have a song imported, you +want to edit and rearrange the Title & Lyrics, Author, Topics & Song Book, +assign a Theme, or edit Copyright Info & Comments, you will do this through the +`Song Editor`. + +**Edit:** To edit an existing song you can either click on a song in the +`Media Manager` and then click the button to :guilabel:`Edit the selected song` +or right click a song from either the `Media Manager` or additionally from the +`Service Manager` and click :guilabel:`Edit item`. If you are adding a new song +click :guilabel:`Add a new Song` in the `Media Manager`. + +.. image:: pics/song_edit_lyrics.png + +**Title:** This is where you would name your song or edit a song name. + +**Alternate title:**Alternate Title was for songs with two names +"Lord the Light" - "Shine Jesus Shine". You can also add a name in this box that +will bring up the song in Titles search. **Example:** You could use an alternate +title of "hymn" on all your hymn song titles for grouping. When you search "hymn" +it will show all the hymns that have "hymn" for the Alternate title. + +**Lyrics:** The *Lyrics* window shows all lyrics imported or added. On the left +side of the lyrics you will see a capital letter followed by a number. A V1 +would represent verse 1, C1 would be Chorus 1. You will use these letters and +numbers for the order to display the lyrics. + +**Verse Order:** After you entered or edited your song, you will want OpenLP to +display the verses in the correct order you want them displayed. On the left side +of your lyrics you will see C1, V1, V2 etc. the way they were imported or added. +To put your lyrics in the correct order is as simple as typing in the +:guilabel:`Verse order box` at the bottom, the correct order you want them +displayed, with only a blank space in between each entry. The correct format will +look like this: V1 C1 V2 C1 V3 C1. If you forget to put a space in between the +order, or if you do not have the corresponding verse number, OpenLP will politely +tell you with a pop-up error message what is wrong so you can correct your +mistake and save it. Verse order is optional and if left blank the verses will +display in the order seen in *Lyrics*. + +.. image:: pics/song_edit_verse_error.png + +Adding or editing the lyrics +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Add:** To Add a new verse, click on :guilabel:`Add`. The main window is where +you will type your lyrics. OpenLP is packaged with a spell checker for most +languages. If you misspell a word it will be underlined. Right click the +underlined word and left click *Spelling Suggestions* or you can ignore it and +continue typing. You also have the ability to format the font using *Formatting +Tags*. Highlight the word/words you want to format and right click the highlight. +Left click *Formatting Tags* and choose the format you want to apply to the font +and the format tags will be entered with your lyrics. These tags are not visible +when displayed. To remove the format, delete the tag on each end of the word or +sentence. + +**Edit:** To edit an existing verse, click on the verse you wish to *Edit* then click on +:guilabel:`Edit`, make your changes and click :guilabel:`Save`. + +**Edit All:** To edit the whole song at once, click on :guilabel:`Edit All`. + +**Delete:** To delete a verse, click on the verse you want to delete and it will +highlight, click on the :guilabel:`Delete` button and it will be deleted. +**Warning:**, once you click the :guilabel:`Delete` button, you will not be +asked again, it will be deleted immediately. + +.. image:: pics/song_edit_verse_type.png + +**Verse type:** gives you 7 ways to classify your lyrics. Verse, Chorus, Bridge, +Pre-Chorus, Intro, Ending, Other. + +If you have more than one verse, you would number them Verse 1, 2, 3 as needed. +If you find the verse has too many lines for your screen, you can edit and +shorten the verse and :guilabel:`Add` another slide. + +Authors, Topics & Song Book +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Once your *Title & Lyrics* are added or edited the way you want them you must +add or enter the author or authors of the song. OpenLP requires all songs to +have an author entered. You can add a blank space for the author name. + +.. image:: pics/song_edit_authors.png + +**Authors:** Click the drop down arrow to view all authors or start typing a name +in the box and a list will appear. If the authors name has not been added, type +the authors name in the box and click :guilabel:`Add to Song`. The authors name +will appear below and will also be added to your database. If you accidently add +the wrong author you can click on the authors name and click :guilabel:`Remove`. + +:guilabel:`Manage Authors, Topics, Song Books`: Clicking this button will bring +up your complete list of authors. + +.. image:: pics/song_edit_maintenance.png + +**Add:** Clicking the :guilabel:`Add` button will bring up a box where you will +add the Authors First name, Last name and Display name. Click :guilabel:`Save` +when you are finished. + +.. image:: pics/song_edit_author_maintenance.png + +**Edit:** The :guilabel:`Edit` button will bring up window where you can edit +the info that is already there. + +**Delete:** The :guilabel:`Delete` button will remove the author you have +highlighted. Note: You cannot delete an author that is assigned to a song. +Authors names are displayed in the footer. + +Theme, Copyright info & Comments +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +On this tab you can assign a *Theme* to a song, enter the *Copyright information* +and add the *CCLI number*. If you imported a song from SongSelect this +information will usually be entered. + +.. image:: pics/song_edit_theme_copyright.png + +**Theme:** Click the drop down arrow to display your list of themes or start +typing a theme name in the box and the list will appear. You can also create a +new theme by clicking the :guilabel:`New Theme` button. + +**Copyright information:** Add or edit the copyright information in this box. If +you would like to use the © symbol click "guilabel:`©` button. This information +is displayed in the footer. + +**CCLI number:** Enter the CCLI number in this box. Note: this is the CCLI number +of the song, not your contract number. This number is not displayed in the footer + +**Comments:** You can add comments in this box. This information is not +dispayed in the footer. diff --git a/openlp/core/ui/firsttimeform.py b/openlp/core/ui/firsttimeform.py index dc1932015..dade26cf9 100644 --- a/openlp/core/ui/firsttimeform.py +++ b/openlp/core/ui/firsttimeform.py @@ -140,6 +140,8 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): return FirstTimePage.Songs elif self.currentId() == FirstTimePage.Progress: return -1 + elif self.currentId() == FirstTimePage.NoInternet: + return FirstTimePage.Progress else: return self.currentId() + 1 @@ -147,11 +149,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard): """ Detects Page changes and updates as approprate. """ - if pageId == FirstTimePage.NoInternet: - self.finishButton.setVisible(True) - self.finishButton.setEnabled(True) - self.nextButton.setVisible(False) - elif pageId == FirstTimePage.Defaults: + if pageId == FirstTimePage.Defaults: self.themeComboBox.clear() for iter in xrange(self.themesListWidget.count()): item = self.themesListWidget.item(iter) diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 949d907b4..1967412f5 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -75,6 +75,7 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): Add a tab to the form at a specific location """ log.debug(u'Inserting %s tab' % tab.tabTitle) + # add the tab to get it to display in the correct part of the screen pos = self.stackedLayout.addWidget(tab) if is_active: item_name = QtGui.QListWidgetItem(tab.tabTitleVisible) @@ -82,7 +83,9 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): item_name.setIcon(icon) self.settingListWidget.insertItem(location, item_name) else: - self.stackedLayout.takeAt(location) + # then remove tab to stop the UI displaying it even if + # it is not required. + self.stackedLayout.takeAt(pos) def accept(self): """ diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index d2a653a26..335b9b174 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -280,6 +280,8 @@ class ThemeManager(QtGui.QWidget): self.fileRenameForm.fileNameEdit.setText(oldThemeName) if self.fileRenameForm.exec_(): newThemeName = unicode(self.fileRenameForm.fileNameEdit.text()) + if oldThemeName == newThemeName: + return if self.checkIfThemeExists(newThemeName): oldThemeData = self.getThemeData(oldThemeName) self.cloneThemeData(oldThemeData, newThemeName) @@ -333,6 +335,7 @@ class ThemeManager(QtGui.QWidget): self.oldBackgroundImage = theme.background_filename self.themeForm.theme = theme self.themeForm.exec_(True) + self.oldBackgroundImage = None def onDeleteTheme(self): """ diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index b87ff3c5d..6f6311392 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -61,6 +61,12 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): QtCore.QObject.connect(self.alertListWidget, QtCore.SIGNAL(u'currentRowChanged(int)'), self.onCurrentRowChanged) + def exec_(self): + self.displayButton.setEnabled(False) + self.displayCloseButton.setEnabled(False) + self.alertTextEdit.setText(u'') + return QtGui.QDialog.exec_(self) + def loadList(self): """ Loads the list with alerts. @@ -125,6 +131,12 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): # Only enable the button, if we are editing an item. if self.item_id: self.saveButton.setEnabled(True) + if self.alertTextEdit.text(): + self.displayButton.setEnabled(True) + self.displayCloseButton.setEnabled(True) + else: + self.displayButton.setEnabled(False) + self.displayCloseButton.setEnabled(False) def onDoubleClick(self): """