r1476
After Width: | Height: | Size: 16 KiB |
BIN
documentation/manual/source/pics/song_edit_authors.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
documentation/manual/source/pics/song_edit_lyrics.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
documentation/manual/source/pics/song_edit_maintenance.png
Normal file
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 12 KiB |
BIN
documentation/manual/source/pics/song_edit_theme_copyright.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
documentation/manual/source/pics/song_edit_topic_maintenance.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
documentation/manual/source/pics/song_edit_verse_error.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
documentation/manual/source/pics/song_edit_verse_type.png
Normal file
After Width: | Height: | Size: 45 KiB |
@ -99,4 +99,134 @@ completed.
|
|||||||
Press :guilabel:`Finish` and OpenLP will be ready to use your songs imported
|
Press :guilabel:`Finish` and OpenLP will be ready to use your songs imported
|
||||||
from CCLI SongSelect.
|
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.
|
||||||
|
@ -323,7 +323,7 @@ def shortcut_action(parent, name, shortcuts, function, icon=None, checked=None,
|
|||||||
action.setShortcutContext(context)
|
action.setShortcutContext(context)
|
||||||
action_list = ActionList.get_instance()
|
action_list = ActionList.get_instance()
|
||||||
action_list.add_action(action, category)
|
action_list.add_action(action, category)
|
||||||
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), function)
|
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered(bool)'), function)
|
||||||
return action
|
return action
|
||||||
|
|
||||||
def context_menu_action(base, icon, text, slot, shortcuts=None, category=None,
|
def context_menu_action(base, icon, text, slot, shortcuts=None, category=None,
|
||||||
@ -356,7 +356,7 @@ def context_menu_action(base, icon, text, slot, shortcuts=None, category=None,
|
|||||||
action = QtGui.QAction(text, base)
|
action = QtGui.QAction(text, base)
|
||||||
if icon:
|
if icon:
|
||||||
action.setIcon(build_icon(icon))
|
action.setIcon(build_icon(icon))
|
||||||
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), slot)
|
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered(bool)'), slot)
|
||||||
if shortcuts is not None:
|
if shortcuts is not None:
|
||||||
action.setShortcuts(shortcuts)
|
action.setShortcuts(shortcuts)
|
||||||
action.setShortcutContext(context)
|
action.setShortcutContext(context)
|
||||||
|
@ -896,7 +896,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
def toggleThemeManager(self):
|
def toggleThemeManager(self):
|
||||||
self.themeManagerDock.setVisible(not self.themeManagerDock.isVisible())
|
self.themeManagerDock.setVisible(not self.themeManagerDock.isVisible())
|
||||||
|
|
||||||
def setPreviewPanelVisibility(self, visible=None):
|
def setPreviewPanelVisibility(self, visible):
|
||||||
"""
|
"""
|
||||||
Sets the visibility of the preview panel including saving the setting
|
Sets the visibility of the preview panel including saving the setting
|
||||||
and updating the menu.
|
and updating the menu.
|
||||||
@ -906,14 +906,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
True - Visible
|
True - Visible
|
||||||
False - Hidden
|
False - Hidden
|
||||||
"""
|
"""
|
||||||
if visible is None:
|
|
||||||
visible = self.ViewPreviewPanel.isVisible()
|
|
||||||
self.previewController.panel.setVisible(visible)
|
self.previewController.panel.setVisible(visible)
|
||||||
QtCore.QSettings().setValue(u'user interface/preview panel',
|
QtCore.QSettings().setValue(u'user interface/preview panel',
|
||||||
QtCore.QVariant(visible))
|
QtCore.QVariant(visible))
|
||||||
self.ViewPreviewPanel.setChecked(visible)
|
self.ViewPreviewPanel.setChecked(visible)
|
||||||
|
|
||||||
def setLivePanelVisibility(self, visible=None):
|
def setLivePanelVisibility(self, visible):
|
||||||
"""
|
"""
|
||||||
Sets the visibility of the live panel including saving the setting and
|
Sets the visibility of the live panel including saving the setting and
|
||||||
updating the menu.
|
updating the menu.
|
||||||
@ -923,8 +921,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
True - Visible
|
True - Visible
|
||||||
False - Hidden
|
False - Hidden
|
||||||
"""
|
"""
|
||||||
if visible is None:
|
|
||||||
visible = self.ViewLivePanel.isVisible()
|
|
||||||
self.liveController.panel.setVisible(visible)
|
self.liveController.panel.setVisible(visible)
|
||||||
QtCore.QSettings().setValue(u'user interface/live panel',
|
QtCore.QSettings().setValue(u'user interface/live panel',
|
||||||
QtCore.QVariant(visible))
|
QtCore.QVariant(visible))
|
||||||
|
@ -347,7 +347,8 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
has been modified.
|
has been modified.
|
||||||
"""
|
"""
|
||||||
self._modified = modified
|
self._modified = modified
|
||||||
serviceFile = self.shortFileName() or u'Untitled Service'
|
serviceFile = self.shortFileName() or translate(
|
||||||
|
'OpenLP.ServiceManager', 'Untitled Service')
|
||||||
self.mainwindow.setServiceModified(modified, serviceFile)
|
self.mainwindow.setServiceModified(modified, serviceFile)
|
||||||
|
|
||||||
def isModified(self):
|
def isModified(self):
|
||||||
|
@ -75,6 +75,7 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
|||||||
Add a tab to the form at a specific location
|
Add a tab to the form at a specific location
|
||||||
"""
|
"""
|
||||||
log.debug(u'Inserting %s tab' % tab.tabTitle)
|
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)
|
pos = self.stackedLayout.addWidget(tab)
|
||||||
if is_active:
|
if is_active:
|
||||||
item_name = QtGui.QListWidgetItem(tab.tabTitleVisible)
|
item_name = QtGui.QListWidgetItem(tab.tabTitleVisible)
|
||||||
@ -82,7 +83,9 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
|||||||
item_name.setIcon(icon)
|
item_name.setIcon(icon)
|
||||||
self.settingListWidget.insertItem(location, item_name)
|
self.settingListWidget.insertItem(location, item_name)
|
||||||
else:
|
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):
|
def accept(self):
|
||||||
"""
|
"""
|
||||||
|
@ -280,6 +280,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
|
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
|
||||||
if self.fileRenameForm.exec_():
|
if self.fileRenameForm.exec_():
|
||||||
newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
|
newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
|
||||||
|
if oldThemeName == newThemeName:
|
||||||
|
return
|
||||||
if self.checkIfThemeExists(newThemeName):
|
if self.checkIfThemeExists(newThemeName):
|
||||||
oldThemeData = self.getThemeData(oldThemeName)
|
oldThemeData = self.getThemeData(oldThemeName)
|
||||||
self.cloneThemeData(oldThemeData, newThemeName)
|
self.cloneThemeData(oldThemeData, newThemeName)
|
||||||
@ -333,6 +335,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.oldBackgroundImage = theme.background_filename
|
self.oldBackgroundImage = theme.background_filename
|
||||||
self.themeForm.theme = theme
|
self.themeForm.theme = theme
|
||||||
self.themeForm.exec_(True)
|
self.themeForm.exec_(True)
|
||||||
|
self.oldBackgroundImage = None
|
||||||
|
|
||||||
def onDeleteTheme(self):
|
def onDeleteTheme(self):
|
||||||
"""
|
"""
|
||||||
|
@ -61,6 +61,12 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
|
|||||||
QtCore.QObject.connect(self.alertListWidget,
|
QtCore.QObject.connect(self.alertListWidget,
|
||||||
QtCore.SIGNAL(u'currentRowChanged(int)'), self.onCurrentRowChanged)
|
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):
|
def loadList(self):
|
||||||
"""
|
"""
|
||||||
Loads the list with alerts.
|
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.
|
# Only enable the button, if we are editing an item.
|
||||||
if self.item_id:
|
if self.item_id:
|
||||||
self.saveButton.setEnabled(True)
|
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):
|
def onDoubleClick(self):
|
||||||
"""
|
"""
|
||||||
|