r1519
|
@ -6,20 +6,36 @@
|
||||||
Welcome to the OpenLP 2.0 User Manual
|
Welcome to the OpenLP 2.0 User Manual
|
||||||
=====================================
|
=====================================
|
||||||
|
|
||||||
Contents:
|
Getting Started With OpenLP
|
||||||
|
---------------------------
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
introduction
|
introduction
|
||||||
glossary
|
installation
|
||||||
wizard
|
|
||||||
dualmonitors
|
Reference Manual
|
||||||
configure
|
----------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
alert
|
||||||
bibles
|
bibles
|
||||||
themes
|
configure
|
||||||
|
dualmonitors
|
||||||
|
wizard
|
||||||
|
glossary
|
||||||
mediamanager
|
mediamanager
|
||||||
songs
|
songs
|
||||||
alert
|
themes
|
||||||
|
|
||||||
|
Questions and Troubleshooting
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
faq
|
faq
|
||||||
troubleshooting
|
troubleshooting
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
Installing OpenLP
|
||||||
|
=================
|
||||||
|
|
||||||
|
Microsoft Windows
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Installing OpenLP is identical over all supported versions of Windows. After
|
||||||
|
downloading the file from the `download page <http://www.openlp.org/en/download.html>`_
|
||||||
|
open the file by double clicking when the download is complete. After opening
|
||||||
|
the downloaded file agree to open the unverified file if you are prompted.
|
||||||
|
|
||||||
|
Next select your language and click :guilabel:`OK`
|
||||||
|
|
||||||
|
.. image:: pics/selectlanguage.png
|
||||||
|
|
||||||
|
After reading the welcome message click :guilabel:`Next` to continue the
|
||||||
|
installation.
|
||||||
|
|
||||||
|
.. image:: pics/welcome.png
|
||||||
|
|
||||||
|
Agree to the license agreement. Click :guilabel:`Next` to continue.
|
||||||
|
|
||||||
|
.. image:: pics/license.png
|
||||||
|
|
||||||
|
Select the install location for OpenLP. Choosing the default location is
|
||||||
|
generally the best choice. Click :guilabel:`Next` to continue.
|
||||||
|
|
||||||
|
.. image:: pics/installlocation.png
|
||||||
|
|
||||||
|
Select a start menu folder for OpenLP to be visible in. The default location
|
||||||
|
here is generally the best choice. Click :guilabel:`Next` to continue.
|
||||||
|
|
||||||
|
.. image:: pics/startmenufolder.png
|
||||||
|
|
||||||
|
Select if you want to create a desktop or Quick Launch icon. Click :guilabel:`Next`
|
||||||
|
to continue.
|
||||||
|
|
||||||
|
.. image:: pics/additionaltask.png
|
||||||
|
|
||||||
|
Review your previous choices. If you need to make any changes click the
|
||||||
|
:guilabel:`Back button` to get to the previous choices, or click :guilabel:`Install`
|
||||||
|
|
||||||
|
.. image:: pics/readytoinstall.png
|
||||||
|
|
||||||
|
The progress bar will update you on how far along the installation has gone.
|
||||||
|
|
||||||
|
.. image:: pics/progress.png
|
||||||
|
|
||||||
|
When the install is complete you will have the option to launch OpenLP. After
|
||||||
|
making your selection click :guilabel:`Finish`
|
||||||
|
|
||||||
|
Mac OS X
|
||||||
|
--------
|
||||||
|
|
||||||
|
Installing OpenLP on OS X is very simple. After downloading the correct file
|
||||||
|
from the OpenLP `download page <http://www.openlp.org/en/download.html>`_
|
||||||
|
double click on the .dmg file. Drag the OpenLP icon over to the Applications
|
||||||
|
folder and you will be ready to use OpenLP. OpenLP will be available in your
|
||||||
|
Applications folder.
|
||||||
|
|
||||||
|
.. image:: pics/osxinstall.png
|
||||||
|
|
||||||
|
Linux
|
||||||
|
-----
|
||||||
|
|
||||||
|
Installation process on Linux distributions vary by distribution. See the OpenLP `download page <http://www.openlp.org/en/download.html>`_ for distribution specific instructions.
|
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 134 KiB |
|
@ -85,7 +85,8 @@ base_html_expands.append({u'desc': u'Underline', u'start tag': u'{u}',
|
||||||
u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True})
|
u'end tag': u'{/u}', u'end html': u'</span>', u'protected': True})
|
||||||
|
|
||||||
def translate(context, text, comment=None,
|
def translate(context, text, comment=None,
|
||||||
encoding=QtCore.QCoreApplication.CodecForTr, n=-1):
|
encoding=QtCore.QCoreApplication.CodecForTr, n=-1,
|
||||||
|
translate=QtCore.QCoreApplication.translate):
|
||||||
"""
|
"""
|
||||||
A special shortcut method to wrap around the Qt4 translation functions.
|
A special shortcut method to wrap around the Qt4 translation functions.
|
||||||
This abstracts the translation procedure so that we can change it if at a
|
This abstracts the translation procedure so that we can change it if at a
|
||||||
|
@ -102,8 +103,7 @@ def translate(context, text, comment=None,
|
||||||
An identifying string for when the same text is used in different roles
|
An identifying string for when the same text is used in different roles
|
||||||
within the same context.
|
within the same context.
|
||||||
"""
|
"""
|
||||||
return QtCore.QCoreApplication.translate(
|
return translate(context, text, comment, encoding, n)
|
||||||
context, text, comment, encoding, n)
|
|
||||||
|
|
||||||
def get_text_file_string(text_file):
|
def get_text_file_string(text_file):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -362,12 +362,11 @@ class GeneralTab(SettingsTab):
|
||||||
Receiver.send_message(u'slidecontroller_live_spin_delay',
|
Receiver.send_message(u'slidecontroller_live_spin_delay',
|
||||||
self.timeoutSpinBox.value())
|
self.timeoutSpinBox.value())
|
||||||
# Reset screens after initial definition
|
# Reset screens after initial definition
|
||||||
if self.overrideChanged:
|
self.screens.override[u'size'] = QtCore.QRect(
|
||||||
self.screens.override[u'size'] = QtCore.QRect(
|
self.customXValueEdit.value(),
|
||||||
self.customXValueEdit.value(),
|
self.customYValueEdit.value(),
|
||||||
self.customYValueEdit.value(),
|
self.customWidthValueEdit.value(),
|
||||||
self.customWidthValueEdit.value(),
|
self.customHeightValueEdit.value())
|
||||||
self.customHeightValueEdit.value())
|
|
||||||
if self.overrideCheckBox.isChecked():
|
if self.overrideCheckBox.isChecked():
|
||||||
self.screens.set_override_display()
|
self.screens.set_override_display()
|
||||||
else:
|
else:
|
||||||
|
@ -394,4 +393,4 @@ class GeneralTab(SettingsTab):
|
||||||
"""
|
"""
|
||||||
Called when the width, height, x position or y position has changed.
|
Called when the width, height, x position or y position has changed.
|
||||||
"""
|
"""
|
||||||
self.overrideChanged = True
|
self.overrideChanged = True
|
||||||
|
|
|
@ -676,17 +676,17 @@ class ServiceManager(QtGui.QWidget):
|
||||||
action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point))
|
action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point))
|
||||||
if action == self.editAction:
|
if action == self.editAction:
|
||||||
self.remoteEdit()
|
self.remoteEdit()
|
||||||
if action == self.maintainAction:
|
elif action == self.maintainAction:
|
||||||
self.onServiceItemEditForm()
|
self.onServiceItemEditForm()
|
||||||
if action == self.deleteAction:
|
elif action == self.deleteAction:
|
||||||
self.onDeleteFromService()
|
self.onDeleteFromService()
|
||||||
if action == self.notesAction:
|
elif action == self.notesAction:
|
||||||
self.onServiceItemNoteForm()
|
self.onServiceItemNoteForm()
|
||||||
if action == self.timeAction:
|
elif action == self.timeAction:
|
||||||
self.onStartTimeForm()
|
self.onStartTimeForm()
|
||||||
if action == self.previewAction:
|
elif action == self.previewAction:
|
||||||
self.makePreview()
|
self.makePreview()
|
||||||
if action == self.liveAction:
|
elif action == self.liveAction:
|
||||||
self.makeLive()
|
self.makeLive()
|
||||||
|
|
||||||
def onServiceItemNoteForm(self):
|
def onServiceItemNoteForm(self):
|
||||||
|
|
|
@ -127,8 +127,8 @@ class ThemeManager(QtGui.QWidget):
|
||||||
QtCore.QObject.connect(self.themeListWidget,
|
QtCore.QObject.connect(self.themeListWidget,
|
||||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
|
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
|
||||||
self.changeGlobalFromScreen)
|
self.changeGlobalFromScreen)
|
||||||
QtCore.QObject.connect(self.themeListWidget,
|
QtCore.QObject.connect(self.themeListWidget, QtCore.SIGNAL(
|
||||||
QtCore.SIGNAL(u'itemClicked(QListWidgetItem *)'),
|
u'currentItemChanged(QListWidgetItem *, QListWidgetItem *)'),
|
||||||
self.checkListState)
|
self.checkListState)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'theme_update_global'), self.changeGlobalFromTab)
|
QtCore.SIGNAL(u'theme_update_global'), self.changeGlobalFromTab)
|
||||||
|
@ -170,6 +170,8 @@ class ThemeManager(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
If Default theme selected remove delete button.
|
If Default theme selected remove delete button.
|
||||||
"""
|
"""
|
||||||
|
if item is None:
|
||||||
|
return
|
||||||
realThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
|
realThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||||
themeName = unicode(item.text())
|
themeName = unicode(item.text())
|
||||||
# If default theme restrict actions
|
# If default theme restrict actions
|
||||||
|
@ -748,7 +750,8 @@ class ThemeManager(QtGui.QWidget):
|
||||||
'Theme %s is used in the %s plugin.')) % \
|
'Theme %s is used in the %s plugin.')) % \
|
||||||
(theme, plugin.name))
|
(theme, plugin.name))
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def _migrateVersion122(self, xml_data):
|
def _migrateVersion122(self, xml_data):
|
||||||
"""
|
"""
|
||||||
|
@ -806,4 +809,5 @@ class ThemeManager(QtGui.QWidget):
|
||||||
vAlignCorrection = VerticalType.Bottom
|
vAlignCorrection = VerticalType.Bottom
|
||||||
newtheme.display_horizontal_align = theme.HorizontalAlign
|
newtheme.display_horizontal_align = theme.HorizontalAlign
|
||||||
newtheme.display_vertical_align = vAlignCorrection
|
newtheme.display_vertical_align = vAlignCorrection
|
||||||
return newtheme.extract_xml()
|
return newtheme.extract_xml()
|
||||||
|
|
||||||
|
|
|
@ -243,6 +243,14 @@ def compile_translations():
|
||||||
code = lconvert.wait()
|
code = lconvert.wait()
|
||||||
if code != 0:
|
if code != 0:
|
||||||
raise Exception('Error running lconvert on %s' % source_path)
|
raise Exception('Error running lconvert on %s' % source_path)
|
||||||
|
print u'Copying qm files...'
|
||||||
|
source = os.path.join(site_packages, u'PyQt4', u'translations')
|
||||||
|
files = os.listdir(source)
|
||||||
|
for filename in files:
|
||||||
|
if filename.startswith(u'qt_') and filename.endswith(u'.qm') and \
|
||||||
|
len(filename) == 8:
|
||||||
|
copy(os.path.join(source, filename),
|
||||||
|
os.path.join(dist_path, u'i18n', filename))
|
||||||
|
|
||||||
def run_sphinx():
|
def run_sphinx():
|
||||||
print u'Running Sphinx...'
|
print u'Running Sphinx...'
|
||||||
|
|