head
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
|
||||
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_list = ActionList.get_instance()
|
||||
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
|
||||
|
||||
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)
|
||||
if 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:
|
||||
action.setShortcuts(shortcuts)
|
||||
action.setShortcutContext(context)
|
||||
|
@ -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)
|
||||
|
@ -896,7 +896,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
def toggleThemeManager(self):
|
||||
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
|
||||
and updating the menu.
|
||||
@ -906,14 +906,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
True - Visible
|
||||
False - Hidden
|
||||
"""
|
||||
if visible is None:
|
||||
visible = self.ViewPreviewPanel.isVisible()
|
||||
self.previewController.panel.setVisible(visible)
|
||||
QtCore.QSettings().setValue(u'user interface/preview panel',
|
||||
QtCore.QVariant(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
|
||||
updating the menu.
|
||||
@ -923,8 +921,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
True - Visible
|
||||
False - Hidden
|
||||
"""
|
||||
if visible is None:
|
||||
visible = self.ViewLivePanel.isVisible()
|
||||
self.liveController.panel.setVisible(visible)
|
||||
QtCore.QSettings().setValue(u'user interface/live panel',
|
||||
QtCore.QVariant(visible))
|
||||
@ -1011,4 +1007,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
self.recentFiles.insert(0, QtCore.QString(filename))
|
||||
while self.recentFiles.count() > maxRecentFiles:
|
||||
# Don't care what API says takeLast works, removeLast doesn't!
|
||||
self.recentFiles.takeLast()
|
||||
self.recentFiles.takeLast()
|
||||
|
@ -347,7 +347,8 @@ class ServiceManager(QtGui.QWidget):
|
||||
has been 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)
|
||||
|
||||
def isModified(self):
|
||||
@ -614,7 +615,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
u'%s' % fileName)
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('OpenLP.ServiceManager', 'Corrupt File'),
|
||||
translate('OpenLP.ServiceManager', 'This file is either'
|
||||
translate('OpenLP.ServiceManager', 'This file is either '
|
||||
'corrupt or not an OpenLP 2.0 service file.'))
|
||||
return
|
||||
finally:
|
||||
|
@ -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):
|
||||
"""
|
||||
|
@ -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):
|
||||
"""
|
||||
|
@ -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):
|
||||
"""
|
||||
|