forked from openlp/openlp
Head r1441
This commit is contained in:
commit
c2518565de
@ -1,112 +1,112 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
set SPHINXBUILD=sphinx-build
|
||||
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (build\*) do rmdir /q /s %%i
|
||||
del /q /s build\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in build/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in build/qthelp, like this:
|
||||
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in build/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
||||
echo.
|
||||
echo.The overview file is in build/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in build/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in build/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
set SPHINXBUILD=sphinx-build
|
||||
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (build\*) do rmdir /q /s %%i
|
||||
del /q /s build\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in build/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in build/qthelp, like this:
|
||||
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in build/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
||||
echo.
|
||||
echo.The overview file is in build/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in build/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in build/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
|
@ -42,7 +42,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'OpenLP'
|
||||
copyright = u'2010, Raoul Snyman'
|
||||
copyright = u'2004 - 2011, Raoul Snyman'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@ -92,19 +92,30 @@ pygments_style = 'sphinx'
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
if sys.argv[2] == 'qthelp' or sys.argv[2] == 'htmlhelp':
|
||||
html_theme = 'openlp_qthelp'
|
||||
else:
|
||||
html_theme = 'default'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
if sys.argv[2] == 'html':
|
||||
html_theme_options = {
|
||||
'sidebarbgcolor': '#3a60a9',
|
||||
'relbarbgcolor': '#203b6f',
|
||||
'footerbgcolor': '#26437c',
|
||||
'headtextcolor': '#203b6f',
|
||||
'linkcolor': '#26437c',
|
||||
'sidebarlinkcolor': '#ceceff'
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
html_theme_path = [os.path.join(os.path.abspath('..'), 'themes')]
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
html_title = u'OpenLP 2.0 Reference Manual'
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
@ -125,7 +136,7 @@ html_static_path = ['_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
@ -165,7 +176,7 @@ html_static_path = ['_static']
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'OpenLPdoc'
|
||||
htmlhelp_basename = 'OpenLP'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
@ -179,7 +190,7 @@ htmlhelp_basename = 'OpenLPdoc'
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'OpenLP.tex', u'OpenLP Documentation',
|
||||
('index', 'OpenLP.tex', u'OpenLP Reference Manual',
|
||||
u'Wesley Stout', 'manual'),
|
||||
]
|
||||
|
||||
@ -212,6 +223,6 @@ latex_documents = [
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'openlp', u'OpenLP Documentation',
|
||||
('index', 'openlp', u'OpenLP Reference Manual',
|
||||
[u'Wesley Stout'], 1)
|
||||
]
|
||||
|
@ -18,4 +18,5 @@ Contents:
|
||||
bibles
|
||||
themes
|
||||
mediamanager
|
||||
songs
|
||||
songs
|
||||
troubleshooting
|
||||
|
@ -5,33 +5,31 @@ Introduction
|
||||
About
|
||||
-----
|
||||
|
||||
OpenLP is an open source lyrics projection application developed specifically
|
||||
for churches. It is licensed under the GNU Generic Public License, which means
|
||||
that it is free to use and distribute, and it stays free.
|
||||
OpenLP stands for "Open Source Lyrics Projection" and is presentation software
|
||||
developed for churches to provide a single easy to use interface for the
|
||||
projection needs of a typical worship service. First created in 2004, it has
|
||||
steadily grown in features and maturity such that is it now a mainstay in
|
||||
hundreds of churches around the world.
|
||||
|
||||
Lyrics Projection
|
||||
-----------------
|
||||
OpenLP has searchable databases of songs and Bible verses allowing them to be
|
||||
projected instantly or saved in a pre-prepared order of service file. Themes
|
||||
allow for a variety of presentation options and allow you to add attractive
|
||||
visuals to enhance your presentations. PowerPoint and OpenOffice presentations,
|
||||
videos and audio files can be run from within the program removing the need to
|
||||
switch between different programs. Alert messages can be displayed so the
|
||||
nursery or car park stewards can notify the congregation easily. Remote
|
||||
capability allows the worship leader to change songs, or for alert messages to
|
||||
be sent from anywhere on the network, even via a smart phone or tablet.
|
||||
|
||||
OpenLP's purpose is to project the lyrics of songs and Bible verses using a
|
||||
computer and a data projector. OpenLP also has the ability to project videos,
|
||||
images, and also play audio. OpenLP also is highly customizable providing users
|
||||
with the ability to set up a wide variety of themes, including themes with
|
||||
video backgrounds.
|
||||
Being free, this software can be installed on as many PCs as required,
|
||||
including the home PCs of worship leader(s) at no additional cost. Compared to
|
||||
the expensive site licenses and restrictions of commercial software we believe
|
||||
OpenLP is the perfect choice for quality and value. Still in active development
|
||||
by a growing team of enthusiastic developers, features are being added all the
|
||||
time resulting in continual improvement of the software.
|
||||
|
||||
Open Source
|
||||
-----------
|
||||
|
||||
OpenLP is open source software. This means that the source code (the
|
||||
programming instructions the developers write) is open to anyone who wants to
|
||||
look at it. This gives you, the end user, a few freedoms.
|
||||
|
||||
From a developer's perspective, it gives you the freedom to inspect the code
|
||||
and make sure that it is not malicious. Also, it gives you the freedom to
|
||||
change the code and the freedom to "fork" the project and make it your own.
|
||||
|
||||
For end users open source software gives you the freedom to use software as
|
||||
you wish. You are not required to pay for the software and you are free to
|
||||
make copies and distribute it to anyone you want.
|
||||
OpenLP is licensed under the GNU Generic Public License, which means
|
||||
that it is free to use, distribute, modify, and it stays free.
|
||||
|
||||
GNU General Public License
|
||||
--------------------------
|
||||
@ -42,5 +40,5 @@ to charge for the software, and that you have to distribute the source code as
|
||||
well.
|
||||
|
||||
You can find a copy of the GNU General Public License from the Help menu
|
||||
selecting about OpenLP or on-line
|
||||
at: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
||||
selecting about OpenLP or on-line at:
|
||||
`<http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>`_.
|
||||
|
@ -16,8 +16,8 @@ this is what the `Media Manager` looks like with all the plugins enabled.
|
||||
.. image:: pics/mediamanager.png
|
||||
|
||||
To enable the plugins navigate to :menuselection:`Settings --> Plugins` or
|
||||
press `F7`. You will want to click on the plugin to the left that you want to
|
||||
enable and select **active** from the drop down box to the right.
|
||||
press :kbd:`Alt+F7`. You will want to click on the plugin to the left that you
|
||||
would like to enable and select **active** from the drop down box to the right.
|
||||
|
||||
.. image:: pics/plugins.png
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 58 KiB |
BIN
documentation/manual/source/pics/phononcheckbox.png
Normal file
BIN
documentation/manual/source/pics/phononcheckbox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 36 KiB |
132
documentation/manual/source/troubleshooting.rst
Normal file
132
documentation/manual/source/troubleshooting.rst
Normal file
@ -0,0 +1,132 @@
|
||||
===============
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
I can not play videos or other media
|
||||
====================================
|
||||
|
||||
If you can not play video or audio through openlp, there are several areas that
|
||||
could be an issue. First thing is to make sure you can play the media file
|
||||
through your default media player. OpenLP should be able to play any file that
|
||||
you can play through your default media player.
|
||||
|
||||
If you can play a file through your media player but not on OpenLP it may help
|
||||
to enable Phonon for multimedia playback. Go to the OpenLP configuration
|
||||
:menuselection:`Settings --> Configure OpenLP...` and select the Media tab.
|
||||
Make sure the check box for `Use Phonon for video playback` is checked.
|
||||
|
||||
.. image:: pics/phononcheckbox.png
|
||||
|
||||
Codecs
|
||||
------
|
||||
|
||||
You may need to install codecs for certain files to play. Most newer versions
|
||||
of Windows and OS X will support most media types. Most Linux distributions
|
||||
will require a little more help to get certain media types to play.
|
||||
|
||||
Microsoft Windows
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Later versions of Microsoft Windows (Vista, Windows 7) generally come with
|
||||
everything you need to play most media formats. If for some reason you need
|
||||
additional codecs we have seen success from the Combined Community Codec Pack
|
||||
(CCCP): `<http://www.cccp-project.net/>`_. You might also wish to check out the
|
||||
K-Lite Codec Pack. If you are having issues, results do seem to vary with the
|
||||
different options. What works for some may not for others, so some trial and
|
||||
error may be required.
|
||||
|
||||
Mac
|
||||
^^^
|
||||
|
||||
If you are using a Mac. You may wish to play Windows formats. flip4mac enables
|
||||
you to use popular Windows formats such as .wmv on your Mac. You can get it
|
||||
here `<http://dynamic.telestream.net/downloads/download-flip4macwmv.htm>`_.
|
||||
|
||||
Ubuntu Linux (and variants)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you are using Ubuntu Linux, or one of its variants (Kubuntu, Edubuntu, etc...)
|
||||
it is a fairly quick and easy process to get all the codecs you need to make
|
||||
things work. You will need to install two meta-packages that contain all the
|
||||
multimedia codecs that you will generally need. From the Software Center install
|
||||
ubuntu-restricted-extras and Kubuntu-restricted-extras, or from the terminal::
|
||||
|
||||
user@linux:~ $ sudo apt-get install ubuntu-restricted-extras kubuntu-restricted-extras
|
||||
|
||||
**Note** if you are running Kubuntu there is no need to install the
|
||||
ubuntu-restricted-extras meta-package
|
||||
|
||||
For more information on Ubuntu and multimedia issues please check out
|
||||
`<https://help.ubuntu.com/community/RestrictedFormats/>`_.
|
||||
|
||||
Arch Linux
|
||||
^^^^^^^^^^
|
||||
|
||||
The following command provides the most complete solution for codecs on Arch
|
||||
Linux::
|
||||
|
||||
root@linux:~ # pacman -S gstreamer0.10-{base,good,bad,ugly}-plugins gstreamer0.10-ffmpeg
|
||||
|
||||
If you need more help with Arch Linux and multimedia please see the Arch Linux
|
||||
documentation at `<https://wiki.archlinux.org/index.php/Codecs>`_.
|
||||
|
||||
Debian Linux
|
||||
^^^^^^^^^^^^
|
||||
|
||||
You will need to add the Debian Multimedia Repository. So add the folowing to
|
||||
/etc/apt/sources.list::
|
||||
|
||||
deb http://www.debian-multimedia.org testing main non-free
|
||||
|
||||
Then update the repository info::
|
||||
|
||||
root@linux:~ # apt-get update
|
||||
|
||||
Then install the following packages::
|
||||
|
||||
root@linux:~ # apt-get install gstreamer0.10-ffmpeg gstreamer0.10-lame gstreamer0.10-plugins-really-bad gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-plugins-good gstreamer0.10-x264
|
||||
|
||||
Fedora Linux
|
||||
^^^^^^^^^^^^
|
||||
You will need to set up Fedora to play most media formats. This is relatively
|
||||
simple using the rpmfusion repository.
|
||||
|
||||
**Note** the following commands will enable a third party repository to your
|
||||
system. Please check out `<http://rpmfusion.org>`_. for more information.
|
||||
|
||||
To enable both the free and nonfree components for any Fedora official release
|
||||
enter the following commands::
|
||||
|
||||
su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'
|
||||
|
||||
After enabling the rpmfusion repository you will want to refresh your package
|
||||
list, perform any updates and search for gstreamer-good, bad, and ugly and
|
||||
install.
|
||||
|
||||
Here is a good tutorial video on the rpmfusion repository
|
||||
`<http://www.linuxjournal.com/video/getting-mp3-support-fedora-using-rpmfusion-repositories>`_.
|
||||
|
||||
The Media Manager appears to be missing some features
|
||||
=====================================================
|
||||
|
||||
If you do not see all the features listed in the Media Manager, you may need
|
||||
to enable them.
|
||||
|
||||
To enable the plugins navigate to :menuselection:`Settings --> Plugins` or
|
||||
press :kbd:`Alt+F7`. You will want to click on the plugin to the left that you
|
||||
would like to enable and select **active** from the drop down box to the right.
|
||||
|
||||
.. image:: pics/plugins.png
|
||||
|
||||
By default all plugins should be enabled during the first run wizard except the
|
||||
remotes plugin, unless you specify differently.
|
||||
|
||||
I can not see the book, chapter, and verse when I display scripture
|
||||
===================================================================
|
||||
|
||||
The book, chapter, and verse should be displayed when you display scripture. If
|
||||
you can not see this your theme probably has the text size too small for the
|
||||
info to be seen. See the section of the manual on themes if you need more info
|
||||
on text sizes in themes.
|
||||
|
||||
|
32
openlp.pyw
32
openlp.pyw
@ -38,6 +38,7 @@ from traceback import format_exception
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Receiver, check_directory_exists
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.resources import qInitResources
|
||||
from openlp.core.ui.mainwindow import MainWindow
|
||||
from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm
|
||||
@ -77,6 +78,13 @@ class OpenLP(QtGui.QApplication):
|
||||
class in order to provide the core of the application.
|
||||
"""
|
||||
|
||||
def exec_(self):
|
||||
"""
|
||||
Override exec method to allow the shared memory to be released on exit
|
||||
"""
|
||||
QtGui.QApplication.exec_()
|
||||
self.sharedMemory.detach()
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
Run the OpenLP application.
|
||||
@ -107,7 +115,8 @@ class OpenLP(QtGui.QApplication):
|
||||
# make sure Qt really display the splash screen
|
||||
self.processEvents()
|
||||
# start the main app window
|
||||
self.mainWindow = MainWindow(screens, self.clipboard())
|
||||
self.mainWindow = MainWindow(screens, self.clipboard(),
|
||||
self.arguments())
|
||||
self.mainWindow.show()
|
||||
if show_splash:
|
||||
# now kill the splashscreen
|
||||
@ -122,6 +131,24 @@ class OpenLP(QtGui.QApplication):
|
||||
VersionThread(self.mainWindow).start()
|
||||
return self.exec_()
|
||||
|
||||
def isAlreadyRunning(self):
|
||||
"""
|
||||
Look to see if OpenLP is already running and ask if a 2nd copy
|
||||
is to be started.
|
||||
"""
|
||||
self.sharedMemory = QtCore.QSharedMemory('OpenLP')
|
||||
if self.sharedMemory.attach():
|
||||
status = QtGui.QMessageBox.critical(None,
|
||||
UiStrings.Error, UiStrings.OpenLPStart,
|
||||
QtGui.QMessageBox.StandardButtons(
|
||||
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
|
||||
if status == QtGui.QMessageBox.No:
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
self.sharedMemory.create(1)
|
||||
return False
|
||||
|
||||
def hookException(self, exctype, value, traceback):
|
||||
if not hasattr(self, u'mainWindow'):
|
||||
log.exception(''.join(format_exception(exctype, value, traceback)))
|
||||
@ -194,6 +221,9 @@ def main():
|
||||
qInitResources()
|
||||
# Now create and actually run the application.
|
||||
app = OpenLP(qt_args)
|
||||
# Instance check
|
||||
if app.isAlreadyRunning():
|
||||
sys.exit()
|
||||
app.setOrganizationName(u'OpenLP')
|
||||
app.setOrganizationDomain(u'openlp.org')
|
||||
app.setApplicationName(u'OpenLP')
|
||||
|
@ -101,6 +101,10 @@ class EventReceiver(QtCore.QObject):
|
||||
``servicemanager_previous_item``
|
||||
Display the previous item in the service
|
||||
|
||||
``servicemanager_preview_live``
|
||||
Requests a Preview item from the Service Manager to update live and
|
||||
add a new item to the preview panel
|
||||
|
||||
``servicemanager_next_item``
|
||||
Display the next item in the service
|
||||
|
||||
|
@ -85,7 +85,12 @@ body {
|
||||
}
|
||||
/* lyric css */
|
||||
%s
|
||||
|
||||
sup {
|
||||
font-size:0.6em;
|
||||
vertical-align:top;
|
||||
position:relative;
|
||||
top:-0.3em;
|
||||
}
|
||||
</style>
|
||||
<script language="javascript">
|
||||
var timer = null;
|
||||
|
@ -145,7 +145,8 @@ class RenderManager(object):
|
||||
else:
|
||||
self.theme = self.service_theme
|
||||
else:
|
||||
if theme:
|
||||
# Images have a theme of -1
|
||||
if theme and theme != -1:
|
||||
self.theme = theme
|
||||
elif theme_level == ThemeLevel.Song or \
|
||||
theme_level == ThemeLevel.Service:
|
||||
|
@ -109,7 +109,9 @@ class ServiceItem(object):
|
||||
self.edit_id = None
|
||||
self.xml_version = None
|
||||
self.start_time = 0
|
||||
self.end_time = 0
|
||||
self.media_length = 0
|
||||
self.from_service = False
|
||||
self._new_item()
|
||||
|
||||
def _new_item(self):
|
||||
@ -261,6 +263,7 @@ class ServiceItem(object):
|
||||
u'data': self.data_string,
|
||||
u'xml_version': self.xml_version,
|
||||
u'start_time': self.start_time,
|
||||
u'end_time': self.end_time,
|
||||
u'media_length': self.media_length
|
||||
}
|
||||
service_data = []
|
||||
@ -307,6 +310,8 @@ class ServiceItem(object):
|
||||
self.xml_version = header[u'xml_version']
|
||||
if u'start_time' in header:
|
||||
self.start_time = header[u'start_time']
|
||||
if u'end_time' in header:
|
||||
self.end_time = header[u'end_time']
|
||||
if u'media_length' in header:
|
||||
self.media_length = header[u'media_length']
|
||||
if self.service_item_type == ServiceItemType.Text:
|
||||
@ -449,4 +454,3 @@ class ServiceItem(object):
|
||||
return end
|
||||
else:
|
||||
return u'%s : %s' % (start, end)
|
||||
|
||||
|
@ -57,6 +57,7 @@ class UiStrings(object):
|
||||
Export = translate('OpenLP.Ui', 'Export')
|
||||
FontSizePtUnit = translate('OpenLP.Ui', 'pt',
|
||||
'Abbreviated font pointsize unit')
|
||||
Hours = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours')
|
||||
Image = translate('OpenLP.Ui', 'Image')
|
||||
Import = translate('OpenLP.Ui', 'Import')
|
||||
LengthTime = unicode(translate('OpenLP.Ui', 'Length %s'))
|
||||
@ -64,6 +65,7 @@ class UiStrings(object):
|
||||
LiveBGError = translate('OpenLP.Ui', 'Live Background Error')
|
||||
LivePanel = translate('OpenLP.Ui', 'Live Panel')
|
||||
Load = translate('OpenLP.Ui', 'Load')
|
||||
Minutes = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes')
|
||||
Middle = translate('OpenLP.Ui', 'Middle')
|
||||
New = translate('OpenLP.Ui', 'New')
|
||||
NewService = translate('OpenLP.Ui', 'New Service')
|
||||
@ -75,6 +77,8 @@ class UiStrings(object):
|
||||
OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x')
|
||||
OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0')
|
||||
OpenFile = translate('OpenLP.Ui', 'Open File')
|
||||
OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you '
|
||||
'wish to continue?')
|
||||
OpenService = translate('OpenLP.Ui', 'Open Service')
|
||||
Preview = translate('OpenLP.Ui', 'Preview')
|
||||
PreviewPanel = translate('OpenLP.Ui', 'Preview Panel')
|
||||
@ -83,7 +87,7 @@ class UiStrings(object):
|
||||
ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background')
|
||||
ResetBG = translate('OpenLP.Ui', 'Reset Background')
|
||||
ResetLiveBG = translate('OpenLP.Ui', 'Reset Live Background')
|
||||
S = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds')
|
||||
Seconds = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds')
|
||||
SaveAndPreview = translate('OpenLP.Ui', 'Save && Preview')
|
||||
Search = translate('OpenLP.Ui', 'Search')
|
||||
SelectDelete = translate('OpenLP.Ui', 'You must select an item to delete.')
|
||||
|
@ -133,7 +133,7 @@ class Ui_AboutDialog(object):
|
||||
u'en_ZA': [u'Raoul "superfly" Snyman'],
|
||||
u'et': [u'Mattias "mahfiaz" P\xf5ldaru'],
|
||||
u'fr': [u'Stephan\xe9 "stbrunner" Brunner'],
|
||||
u'hu': [u'Gyuris Gell\xe9t'],
|
||||
u'hu': [u'Gyuris Gell\xe9rt'],
|
||||
u'ja': [u'Kunio "Kunio" Nakamaru'],
|
||||
u'nb': [u'Atle "pendlaren" Weibell', u'Frode "frodus" Woldsund'],
|
||||
u'nl': [u'Arjen "typovar" van Voorst'],
|
||||
|
@ -57,6 +57,7 @@ except ImportError:
|
||||
from openlp.core.lib import translate, SettingsManager
|
||||
from openlp.core.lib.mailto import mailto
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.utils import get_application_version
|
||||
|
||||
from exceptiondialog import Ui_ExceptionDialog
|
||||
|
||||
@ -78,7 +79,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
def _createReport(self):
|
||||
openlp_version = self.parent().applicationVersion[u'full']
|
||||
openlp_version = get_application_version()
|
||||
description = unicode(self.descriptionTextEdit.toPlainText())
|
||||
traceback = unicode(self.exceptionTextEdit.toPlainText())
|
||||
system = unicode(translate('OpenLP.ExceptionForm',
|
||||
|
@ -105,6 +105,9 @@ class GeneralTab(SettingsTab):
|
||||
self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox')
|
||||
self.settingsLayout.addRow(self.saveCheckServiceCheckBox)
|
||||
self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox')
|
||||
self.settingsLayout.addRow(self.autoUnblankCheckBox)
|
||||
self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox')
|
||||
self.settingsLayout.addRow(self.autoPreviewCheckBox)
|
||||
@ -224,6 +227,8 @@ class GeneralTab(SettingsTab):
|
||||
translate('OpenLP.GeneralTab', 'Application Settings'))
|
||||
self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Prompt to save before starting a new service'))
|
||||
self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Unblank display when adding new live item'))
|
||||
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Automatically preview next item in service'))
|
||||
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
||||
@ -262,6 +267,8 @@ class GeneralTab(SettingsTab):
|
||||
u'songselect password', QtCore.QVariant(u'')).toString()))
|
||||
self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.monitorComboBox.setCurrentIndex(self.monitorNumber)
|
||||
self.displayOnMonitorCheck.setChecked(self.screens.display)
|
||||
self.warningCheckBox.setChecked(settings.value(u'blank warning',
|
||||
@ -312,6 +319,8 @@ class GeneralTab(SettingsTab):
|
||||
QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked()))
|
||||
settings.setValue(u'save prompt',
|
||||
QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked()))
|
||||
settings.setValue(u'auto unblank',
|
||||
QtCore.QVariant(self.autoUnblankCheckBox.isChecked()))
|
||||
settings.setValue(u'auto preview',
|
||||
QtCore.QVariant(self.autoPreviewCheckBox.isChecked()))
|
||||
settings.setValue(u'loop delay',
|
||||
|
@ -367,7 +367,7 @@ class MainDisplay(DisplayWidget):
|
||||
self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))
|
||||
# Need the timer to trigger set the trigger to 200ms
|
||||
# Value taken from web documentation.
|
||||
if self.serviceItem.start_time != 0:
|
||||
if self.serviceItem.end_time != 0:
|
||||
self.mediaObject.setTickInterval(200)
|
||||
self.mediaObject.play()
|
||||
self.webView.setVisible(False)
|
||||
@ -401,9 +401,9 @@ class MainDisplay(DisplayWidget):
|
||||
def videoTick(self, tick):
|
||||
"""
|
||||
Triggered on video tick every 200 milli seconds
|
||||
Will be used to manage stop time later
|
||||
"""
|
||||
pass
|
||||
if tick > self.serviceItem.end_time * 1000:
|
||||
self.videoFinished()
|
||||
|
||||
def isWebLoaded(self):
|
||||
"""
|
||||
@ -489,7 +489,11 @@ class MainDisplay(DisplayWidget):
|
||||
self.footer(serviceItem.foot_text)
|
||||
# if was hidden keep it hidden
|
||||
if self.hideMode and self.isLive:
|
||||
self.hideDisplay(self.hideMode)
|
||||
if QtCore.QSettings().value(u'general/auto unblank',
|
||||
QtCore.QVariant(False)).toBool():
|
||||
Receiver.send_message(u'slidecontroller_live_unblank')
|
||||
else:
|
||||
self.hideDisplay(self.hideMode)
|
||||
# display hidden for video end we have a new item so must be shown
|
||||
if self.videoHide and self.isLive:
|
||||
self.videoHide = False
|
||||
|
@ -469,7 +469,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
|
||||
actionList = ActionList()
|
||||
|
||||
def __init__(self, screens, clipboard):
|
||||
def __init__(self, screens, clipboard, arguments):
|
||||
"""
|
||||
This constructor sets up the interface, the various managers, and the
|
||||
plugins.
|
||||
@ -477,6 +477,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
QtGui.QMainWindow.__init__(self)
|
||||
self.screens = screens
|
||||
self.clipboard = clipboard
|
||||
self.arguments = arguments
|
||||
# Set up settings sections for the main application
|
||||
# (not for use by plugins)
|
||||
self.uiSettingsSection = u'user interface'
|
||||
@ -660,7 +661,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
if self.liveController.display.isVisible():
|
||||
self.liveController.display.setFocus()
|
||||
self.activateWindow()
|
||||
if QtCore.QSettings().value(
|
||||
# On Windows, arguments contains the entire commandline
|
||||
# So args[0]=='python' args[1]=='openlp.pyw'
|
||||
# Therefore this approach is not going to work
|
||||
# Bypass for now.
|
||||
if len(self.arguments) and os.name != u'nt':
|
||||
args = []
|
||||
for a in self.arguments:
|
||||
args.extend([a])
|
||||
self.ServiceManagerContents.loadFile(unicode(args[0]))
|
||||
elif QtCore.QSettings().value(
|
||||
self.generalSettingsSection + u'/auto open',
|
||||
QtCore.QVariant(False)).toBool():
|
||||
self.ServiceManagerContents.loadLastFile()
|
||||
|
@ -33,12 +33,12 @@ from openlp.core.ui.printservicedialog import Ui_PrintServiceDialog, ZoomSize
|
||||
|
||||
class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
|
||||
def __init__(self, parent, serviceManager):
|
||||
def __init__(self, mainWindow, serviceManager):
|
||||
"""
|
||||
Constructor
|
||||
"""
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.parent = parent
|
||||
QtGui.QDialog.__init__(self, mainWindow)
|
||||
self.mainWindow = mainWindow
|
||||
self.serviceManager = serviceManager
|
||||
self.printer = QtGui.QPrinter()
|
||||
self.printDialog = QtGui.QPrintDialog(self.printer, self)
|
||||
@ -134,9 +134,12 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
item.notes.replace(u'\n', u'<br />'))
|
||||
# Add play length of media files.
|
||||
if item.is_media() and self.metaDataCheckBox.isChecked():
|
||||
tme = item.media_length
|
||||
if item.end_time > 0:
|
||||
tme = item.end_time - item.start_time
|
||||
text += u'<p><strong>%s</strong> %s</p>' % (translate(
|
||||
'OpenLP.ServiceManager', u'Playing time:'),
|
||||
unicode(datetime.timedelta(seconds=item.media_length)))
|
||||
unicode(datetime.timedelta(seconds=tme)))
|
||||
if self.footerTextEdit.toPlainText():
|
||||
text += u'<h4>%s</h4>%s' % (translate('OpenLP.ServiceManager',
|
||||
u'Custom Service Notes:'), self.footerTextEdit.toPlainText())
|
||||
@ -181,13 +184,14 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
"""
|
||||
Copies the display text to the clipboard as plain text
|
||||
"""
|
||||
self.parent.clipboard.setText(self.document.toPlainText())
|
||||
self.mainWindow.clipboard.setText(
|
||||
self.document.toPlainText())
|
||||
|
||||
def copyHtmlText(self):
|
||||
"""
|
||||
Copies the display text to the clipboard as Html
|
||||
"""
|
||||
self.parent.clipboard.setText(self.document.toHtml())
|
||||
self.mainWindow.clipboard.setText(self.document.toHtml())
|
||||
|
||||
def printServiceOrder(self):
|
||||
"""
|
||||
|
@ -141,4 +141,3 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
|
||||
else:
|
||||
self.upButton.setEnabled(True)
|
||||
self.deleteButton.setEnabled(True)
|
||||
|
||||
|
@ -231,13 +231,15 @@ class ServiceManager(QtGui.QWidget):
|
||||
QtCore.QObject.connect(self.themeComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.makeLive)
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onMakeLive)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'servicemanager_preview_live'), self.previewLive)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
@ -561,6 +563,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.newFile()
|
||||
for item in items:
|
||||
serviceItem = ServiceItem()
|
||||
serviceItem.from_service = True
|
||||
serviceItem.render_manager = self.mainwindow.renderManager
|
||||
serviceItem.set_from_service(item, self.servicePath)
|
||||
self.validateItem(serviceItem)
|
||||
@ -585,6 +588,21 @@ class ServiceManager(QtGui.QWidget):
|
||||
message=translate('OpenLP.ServiceManager',
|
||||
'File could not be opened because it is corrupt.'))
|
||||
log.exception(u'Problem loading service file %s' % fileName)
|
||||
except zipfile.BadZipfile:
|
||||
if os.path.getsize(fileName) == 0:
|
||||
log.exception(u'Service file is zero sized: %s' % fileName)
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('OpenLP.ServiceManager', 'Empty File'),
|
||||
translate('OpenLP.ServiceManager', 'This service file '
|
||||
'does not contain any data.'))
|
||||
else:
|
||||
log.exception(u'Service file is cannot be extracted as zip: '
|
||||
u'%s' % fileName)
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('OpenLP.ServiceManager', 'Corrupt File'),
|
||||
translate('OpenLP.ServiceManager', 'This file is either'
|
||||
'corrupt or not an OpenLP 2.0 service file.'))
|
||||
return
|
||||
finally:
|
||||
if fileTo:
|
||||
fileTo.close()
|
||||
@ -658,10 +676,6 @@ class ServiceManager(QtGui.QWidget):
|
||||
item = self.findServiceItem()[0]
|
||||
self.startTimeForm.item = self.serviceItems[item]
|
||||
if self.startTimeForm.exec_():
|
||||
self.serviceItems[item][u'service_item'].start_time = \
|
||||
self.startTimeForm.hourSpinBox.value() * 3600 + \
|
||||
self.startTimeForm.minuteSpinBox.value() * 60 + \
|
||||
self.startTimeForm.secondSpinBox.value()
|
||||
self.repaintServiceList(item, -1)
|
||||
|
||||
def onServiceItemEditForm(self):
|
||||
@ -672,6 +686,19 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.addServiceItem(self.serviceItemEditForm.getServiceItem(),
|
||||
replace=True, expand=self.serviceItems[item][u'expanded'])
|
||||
|
||||
def previewLive(self, message):
|
||||
"""
|
||||
Called by the SlideController to request a preview item be made live
|
||||
and allows the next preview to be updated if relevent.
|
||||
"""
|
||||
id, row = message.split(u':')
|
||||
for sitem in self.serviceItems:
|
||||
if sitem[u'service_item']._uuid == id:
|
||||
item = self.serviceManagerList.topLevelItem(sitem[u'order'] - 1)
|
||||
self.serviceManagerList.setCurrentItem(item)
|
||||
self.makeLive(int(row))
|
||||
return
|
||||
|
||||
def nextItem(self):
|
||||
"""
|
||||
Called by the SlideController to select the next service item.
|
||||
@ -1027,6 +1054,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
if expand is None:
|
||||
expand = self.expandTabs
|
||||
item.render()
|
||||
item.from_service = True
|
||||
if replace:
|
||||
sitem, child = self.findServiceItem()
|
||||
item.merge(self.serviceItems[sitem][u'service_item'])
|
||||
@ -1081,11 +1109,24 @@ class ServiceManager(QtGui.QWidget):
|
||||
else:
|
||||
return self.serviceItems[item][u'service_item']
|
||||
|
||||
def makeLive(self):
|
||||
def onMakeLive(self):
|
||||
"""
|
||||
Send the current item to the Live slide controller but triggered
|
||||
by a tablewidget click event.
|
||||
"""
|
||||
self.makeLive()
|
||||
|
||||
def makeLive(self, row=-1):
|
||||
"""
|
||||
Send the current item to the Live slide controller
|
||||
|
||||
``row``
|
||||
Row number to be displayed if from preview.
|
||||
-1 is passed if the value is not set
|
||||
"""
|
||||
item, child = self.findServiceItem()
|
||||
if row != -1:
|
||||
child = row
|
||||
if self.serviceItems[item][u'service_item'].is_valid:
|
||||
self.mainwindow.liveController.addServiceManagerItem(
|
||||
self.serviceItems[item][u'service_item'], child)
|
||||
|
@ -185,7 +185,7 @@ class SlideController(QtGui.QWidget):
|
||||
self.delaySpinBox.setMinimum(1)
|
||||
self.delaySpinBox.setMaximum(180)
|
||||
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
||||
self.delaySpinBox.setSuffix(UiStrings.S)
|
||||
self.delaySpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
||||
'Delay between slides in seconds'))
|
||||
else:
|
||||
@ -1014,8 +1014,12 @@ class SlideController(QtGui.QWidget):
|
||||
"""
|
||||
row = self.previewListWidget.currentRow()
|
||||
if row > -1 and row < self.previewListWidget.rowCount():
|
||||
self.parent.liveController.addServiceManagerItem(
|
||||
self.serviceItem, row)
|
||||
if self.serviceItem.from_service:
|
||||
Receiver.send_message('servicemanager_preview_live',
|
||||
u'%s:%s' % (self.serviceItem._uuid, row))
|
||||
else:
|
||||
self.parent.liveController.addServiceManagerItem(
|
||||
self.serviceItem, row)
|
||||
|
||||
def onMediaStart(self, item):
|
||||
"""
|
||||
|
@ -32,39 +32,90 @@ from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box
|
||||
class Ui_StartTimeDialog(object):
|
||||
def setupUi(self, StartTimeDialog):
|
||||
StartTimeDialog.setObjectName(u'StartTimeDialog')
|
||||
StartTimeDialog.resize(300, 10)
|
||||
StartTimeDialog.resize(350, 10)
|
||||
self.dialogLayout = QtGui.QGridLayout(StartTimeDialog)
|
||||
self.dialogLayout.setObjectName(u'dialogLayout')
|
||||
self.startLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.startLabel.setObjectName(u'startLabel')
|
||||
self.startLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.startLabel, 0, 1, 1, 1)
|
||||
self.finishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.finishLabel.setObjectName(u'finishLabel')
|
||||
self.finishLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.finishLabel, 0, 2, 1, 1)
|
||||
self.lengthLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.lengthLabel.setObjectName(u'startLabel')
|
||||
self.lengthLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.lengthLabel, 0, 3, 1, 1)
|
||||
self.hourLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.hourLabel.setObjectName("hourLabel")
|
||||
self.dialogLayout.addWidget(self.hourLabel, 0, 0, 1, 1)
|
||||
self.hourLabel.setObjectName(u'hourLabel')
|
||||
self.dialogLayout.addWidget(self.hourLabel, 1, 0, 1, 1)
|
||||
self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.hourSpinBox.setObjectName("hourSpinBox")
|
||||
self.dialogLayout.addWidget(self.hourSpinBox, 0, 1, 1, 1)
|
||||
self.hourSpinBox.setObjectName(u'hourSpinBox')
|
||||
self.hourSpinBox.setMinimum(0)
|
||||
self.hourSpinBox.setMaximum(4)
|
||||
self.dialogLayout.addWidget(self.hourSpinBox, 1, 1, 1, 1)
|
||||
self.hourFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.hourFinishSpinBox.setObjectName(u'hourFinishSpinBox')
|
||||
self.hourFinishSpinBox.setMinimum(0)
|
||||
self.hourFinishSpinBox.setMaximum(4)
|
||||
self.dialogLayout.addWidget(self.hourFinishSpinBox, 1, 2, 1, 1)
|
||||
self.hourFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.hourFinishLabel.setObjectName(u'hourLabel')
|
||||
self.hourFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.hourFinishLabel, 1, 3, 1, 1)
|
||||
self.minuteLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.minuteLabel.setObjectName("minuteLabel")
|
||||
self.dialogLayout.addWidget(self.minuteLabel, 1, 0, 1, 1)
|
||||
self.minuteLabel.setObjectName(u'minuteLabel')
|
||||
self.dialogLayout.addWidget(self.minuteLabel, 2, 0, 1, 1)
|
||||
self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.minuteSpinBox.setObjectName("minuteSpinBox")
|
||||
self.dialogLayout.addWidget(self.minuteSpinBox, 1, 1, 1, 1)
|
||||
self.minuteSpinBox.setObjectName(u'minuteSpinBox')
|
||||
self.minuteSpinBox.setMinimum(0)
|
||||
self.minuteSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.minuteSpinBox, 2, 1, 1, 1)
|
||||
self.minuteFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.minuteFinishSpinBox.setObjectName(u'minuteFinishSpinBox')
|
||||
self.minuteFinishSpinBox.setMinimum(0)
|
||||
self.minuteFinishSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.minuteFinishSpinBox, 2, 2, 1, 1)
|
||||
self.minuteFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.minuteFinishLabel.setObjectName(u'minuteLabel')
|
||||
self.minuteFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.minuteFinishLabel, 2, 3, 1, 1)
|
||||
self.secondLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.secondLabel.setObjectName("secondLabel")
|
||||
self.dialogLayout.addWidget(self.secondLabel, 2, 0, 1, 1)
|
||||
self.secondLabel.setObjectName(u'secondLabel')
|
||||
self.dialogLayout.addWidget(self.secondLabel, 3, 0, 1, 1)
|
||||
self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.secondSpinBox.setObjectName("secondSpinBox")
|
||||
self.dialogLayout.addWidget(self.secondSpinBox, 2, 1, 1, 1)
|
||||
self.secondSpinBox.setObjectName(u'secondSpinBox')
|
||||
self.secondSpinBox.setMinimum(0)
|
||||
self.secondSpinBox.setMaximum(59)
|
||||
self.secondFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.secondFinishSpinBox.setObjectName(u'secondFinishSpinBox')
|
||||
self.secondFinishSpinBox.setMinimum(0)
|
||||
self.secondFinishSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.secondFinishSpinBox, 3, 2, 1, 1)
|
||||
self.secondFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.secondFinishLabel.setObjectName(u'secondLabel')
|
||||
self.secondFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.secondFinishLabel, 3, 3, 1, 1)
|
||||
self.dialogLayout.addWidget(self.secondSpinBox, 3, 1, 1, 1)
|
||||
self.buttonBox = create_accept_reject_button_box(StartTimeDialog, True)
|
||||
self.dialogLayout.addWidget(self.buttonBox, 4, 0, 1, 2)
|
||||
self.dialogLayout.addWidget(self.buttonBox, 5, 2, 1, 2)
|
||||
self.retranslateUi(StartTimeDialog)
|
||||
self.setMaximumHeight(self.sizeHint().height())
|
||||
QtCore.QMetaObject.connectSlotsByName(StartTimeDialog)
|
||||
|
||||
def retranslateUi(self, StartTimeDialog):
|
||||
self.setWindowTitle(translate('OpenLP.StartTimeForm',
|
||||
'Item Start Time'))
|
||||
'Item Start and Finish Time'))
|
||||
self.hourSpinBox.setSuffix(UiStrings.Hours)
|
||||
self.minuteSpinBox.setSuffix(UiStrings.Minutes)
|
||||
self.secondSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.hourFinishSpinBox.setSuffix(UiStrings.Hours)
|
||||
self.minuteFinishSpinBox.setSuffix(UiStrings.Minutes)
|
||||
self.secondFinishSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.hourLabel.setText(translate('OpenLP.StartTimeForm', 'Hours:'))
|
||||
self.hourSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'h'))
|
||||
self.minuteSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'm'))
|
||||
self.secondSpinBox.setSuffix(UiStrings.S)
|
||||
self.minuteLabel.setText(translate('OpenLP.StartTimeForm', 'Minutes:'))
|
||||
self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:'))
|
||||
self.startLabel.setText(translate('OpenLP.StartTimeForm', 'Start'))
|
||||
self.finishLabel.setText(translate('OpenLP.StartTimeForm', 'Finish'))
|
||||
self.lengthLabel.setText(translate('OpenLP.StartTimeForm', 'Length'))
|
||||
|
@ -28,6 +28,9 @@ from PyQt4 import QtGui
|
||||
|
||||
from starttimedialog import Ui_StartTimeDialog
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
||||
|
||||
class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
||||
"""
|
||||
The exception dialog
|
||||
@ -40,13 +43,51 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
||||
"""
|
||||
Run the Dialog with correct heading.
|
||||
"""
|
||||
seconds = self.item[u'service_item'].start_time
|
||||
hour, minutes, seconds = self._time_split(
|
||||
self.item[u'service_item'].start_time)
|
||||
self.hourSpinBox.setValue(hour)
|
||||
self.minuteSpinBox.setValue(minutes)
|
||||
self.secondSpinBox.setValue(seconds)
|
||||
hours, minutes, seconds = self._time_split(
|
||||
self.item[u'service_item'].media_length)
|
||||
self.hourFinishSpinBox.setValue(hours)
|
||||
self.minuteFinishSpinBox.setValue(minutes)
|
||||
self.secondFinishSpinBox.setValue(seconds)
|
||||
self.hourFinishLabel.setText(u'%s%s' % (unicode(hour), UiStrings.Hours))
|
||||
self.minuteFinishLabel.setText(u'%s%s' %
|
||||
(unicode(minutes), UiStrings.Minutes))
|
||||
self.secondFinishLabel.setText(u'%s%s' %
|
||||
(unicode(seconds), UiStrings.Seconds))
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
def accept(self):
|
||||
start = self.hourSpinBox.value() * 3600 + \
|
||||
self.minuteSpinBox.value() * 60 + \
|
||||
self.secondSpinBox.value()
|
||||
end = self.hourFinishSpinBox.value() * 3600 + \
|
||||
self.minuteFinishSpinBox.value() * 60 + \
|
||||
self.secondFinishSpinBox.value()
|
||||
if end > self.item[u'service_item'].media_length:
|
||||
critical_error_message_box(
|
||||
title=translate('OpenLP.StartTimeForm',
|
||||
'Time Validation Error'),
|
||||
message=translate('OpenLP.StartTimeForm',
|
||||
'End time is set after the end of the media item'))
|
||||
return
|
||||
elif start > end:
|
||||
critical_error_message_box(
|
||||
title=translate('OpenLP.StartTimeForm',
|
||||
'Time Validation Error'),
|
||||
message=translate('OpenLP.StartTimeForm',
|
||||
'Start time is after the End Time of the media item'))
|
||||
return
|
||||
self.item[u'service_item'].start_time = start
|
||||
self.item[u'service_item'].end_time = end
|
||||
return QtGui.QDialog.accept(self)
|
||||
|
||||
def _time_split(self, seconds):
|
||||
hours = seconds / 3600
|
||||
seconds -= 3600 * hours
|
||||
minutes = seconds / 60
|
||||
seconds -= 60 * minutes
|
||||
self.hourSpinBox.setValue(hours)
|
||||
self.minuteSpinBox.setValue(minutes)
|
||||
self.secondSpinBox.setValue(seconds)
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
return hours, minutes, seconds
|
||||
|
@ -91,7 +91,7 @@ class LanguageManager(object):
|
||||
"""
|
||||
Retrieve a saved language to use from settings
|
||||
"""
|
||||
settings = QtCore.QSettings(u'OpenLP', u'OpenLP')
|
||||
settings = QtCore.QSettings()
|
||||
language = unicode(settings.value(
|
||||
u'general/language', QtCore.QVariant(u'[en]')).toString())
|
||||
log.info(u'Language file: \'%s\' Loaded from conf file' % language)
|
||||
|
@ -112,7 +112,7 @@ class AlertsTab(SettingsTab):
|
||||
self.FontSizeSpinBox.setSuffix(UiStrings.FontSizePtUnit)
|
||||
self.TimeoutLabel.setText(
|
||||
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
||||
self.TimeoutSpinBox.setSuffix(UiStrings.S)
|
||||
self.TimeoutSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.PreviewGroupBox.setTitle(UiStrings.Preview)
|
||||
self.FontPreview.setText(UiStrings.OLPV2)
|
||||
|
||||
|
@ -45,7 +45,7 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog):
|
||||
self.setupUi(self)
|
||||
# Connecting signals and slots
|
||||
QtCore.QObject.connect(self.splitButton,
|
||||
QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onSplitButtonPressed)
|
||||
|
||||
def setText(self, text):
|
||||
"""
|
||||
|
@ -93,7 +93,6 @@ window.OpenLP = {
|
||||
},
|
||||
setSlide: function (event) {
|
||||
var slide = OpenLP.getElement(event);
|
||||
console.log(slide);
|
||||
var id = slide.attr("value");
|
||||
var text = JSON.stringify({"request": {"id": id}});
|
||||
$.getJSON(
|
||||
|
@ -269,6 +269,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
if index is None:
|
||||
index = VerseType.Other
|
||||
verse[0][u'type'] = VerseType.Tags[index]
|
||||
if verse[0][u'label'] == u'':
|
||||
verse[0][u'label'] = u'1'
|
||||
verse_def = u'%s%s' % (verse[0][u'type'], verse[0][u'label'])
|
||||
item = QtGui.QTableWidgetItem(verse[1])
|
||||
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
|
||||
|
@ -30,15 +30,16 @@ import chardet
|
||||
import codecs
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from openlp.plugins.songs.lib import VerseType
|
||||
from songimport import SongImport
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
class CCLIFileImport(SongImport):
|
||||
"""
|
||||
The :class:`CCLIFileImport` class provides OpenLP with the ability to
|
||||
import CCLI SongSelect song files in both .txt and .usr formats.
|
||||
See http://www.ccli.com/ for more details.
|
||||
The :class:`CCLIFileImport` class provides OpenLP with the ability to import
|
||||
CCLI SongSelect song files in both .txt and .usr formats. See
|
||||
`<http://www.ccli.com/>`_ for more details.
|
||||
"""
|
||||
|
||||
def __init__(self, manager, **kwargs):
|
||||
@ -55,7 +56,7 @@ class CCLIFileImport(SongImport):
|
||||
|
||||
def do_import(self):
|
||||
"""
|
||||
Import either a .usr or a .txt SongSelect file
|
||||
Import either a ``.usr`` or a ``.txt`` SongSelect file.
|
||||
"""
|
||||
log.debug(u'Starting CCLI File Import')
|
||||
song_total = len(self.import_source)
|
||||
@ -67,6 +68,7 @@ class CCLIFileImport(SongImport):
|
||||
(song_count, song_total))
|
||||
filename = unicode(filename)
|
||||
log.debug(u'Importing CCLI File: %s', filename)
|
||||
self.set_defaults()
|
||||
lines = []
|
||||
if os.path.isfile(filename):
|
||||
detect_file = open(filename, u'r')
|
||||
@ -81,12 +83,10 @@ class CCLIFileImport(SongImport):
|
||||
lines = infile.readlines()
|
||||
ext = os.path.splitext(filename)[1]
|
||||
if ext.lower() == u'.usr':
|
||||
log.info(u'SongSelect .usr format file found %s: ',
|
||||
filename)
|
||||
log.info(u'SongSelect .usr format file found: %s', filename)
|
||||
self.do_import_usr_file(lines)
|
||||
elif ext.lower() == u'.txt':
|
||||
log.info(u'SongSelect .txt format file found %s: ',
|
||||
filename)
|
||||
log.info(u'SongSelect .txt format file found: %s', filename)
|
||||
self.do_import_txt_file(lines)
|
||||
else:
|
||||
log.info(u'Extension %s is not valid', filename)
|
||||
@ -97,9 +97,8 @@ class CCLIFileImport(SongImport):
|
||||
|
||||
def do_import_usr_file(self, textList):
|
||||
"""
|
||||
The :func:`do_import_usr_file` method provides OpenLP
|
||||
with the ability to import CCLI SongSelect songs in
|
||||
*USR* file format
|
||||
The :func:`do_import_usr_file` method provides OpenLP with the ability
|
||||
to import CCLI SongSelect songs in *USR* file format.
|
||||
|
||||
``textList``
|
||||
An array of strings containing the usr file content.
|
||||
@ -108,35 +107,46 @@ class CCLIFileImport(SongImport):
|
||||
|
||||
``[File]``
|
||||
USR file format first line
|
||||
|
||||
``Type=``
|
||||
Indicates the file type
|
||||
e.g. *Type=SongSelect Import File*
|
||||
|
||||
``Version=3.0``
|
||||
File format version
|
||||
|
||||
``[S A2672885]``
|
||||
Contains the CCLI Song number e.g. *2672885*
|
||||
|
||||
``Title=``
|
||||
Contains the song title (e.g. *Title=Above All*)
|
||||
|
||||
``Author=``
|
||||
Contains a | delimited list of the song authors
|
||||
e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
|
||||
|
||||
``Copyright=``
|
||||
Contains a | delimited list of the song copyrights
|
||||
e.g. Copyright=1999 Integrity's Hosanna! Music |
|
||||
LenSongs Publishing (Verwaltet von Gerth Medien
|
||||
Musikverlag)
|
||||
|
||||
``Admin=``
|
||||
Contains the song administrator
|
||||
e.g. *Admin=Gerth Medien Musikverlag*
|
||||
|
||||
``Themes=``
|
||||
Contains a /t delimited list of the song themes
|
||||
e.g. *Themes=Cross/tKingship/tMajesty/tRedeemer*
|
||||
|
||||
``Keys=``
|
||||
Contains the keys in which the music is played??
|
||||
e.g. *Keys=A*
|
||||
|
||||
``Fields=``
|
||||
Contains a list of the songs fields in order /t delimited
|
||||
e.g. *Fields=Vers 1/tVers 2/tChorus 1/tAndere 1*
|
||||
|
||||
``Words=``
|
||||
Contains the songs various lyrics in order as shown by the
|
||||
*Fields* description
|
||||
@ -144,57 +154,60 @@ class CCLIFileImport(SongImport):
|
||||
|
||||
"""
|
||||
log.debug(u'USR file text: %s', textList)
|
||||
self.set_defaults()
|
||||
song_author = u''
|
||||
song_topics = u''
|
||||
for line in textList:
|
||||
if line.startswith(u'Title='):
|
||||
song_name = line[6:].strip()
|
||||
self.title = line[6:].strip()
|
||||
elif line.startswith(u'Author='):
|
||||
song_author = line[7:].strip()
|
||||
elif line.startswith(u'Copyright='):
|
||||
song_copyright = line[10:].strip()
|
||||
self.copyright = line[10:].strip()
|
||||
elif line.startswith(u'Themes='):
|
||||
song_topics = line[7:].strip()
|
||||
elif line.startswith(u'[S A'):
|
||||
song_ccli = line[4:-3].strip()
|
||||
self.ccli_number = line[4:-3].strip()
|
||||
elif line.startswith(u'Fields='):
|
||||
#Fields contain single line indicating verse, chorus, etc,
|
||||
#/t delimited, same as with words field. store seperately
|
||||
#and process at end.
|
||||
# Fields contain single line indicating verse, chorus, etc,
|
||||
# /t delimited, same as with words field. store seperately
|
||||
# and process at end.
|
||||
song_fields = line[7:].strip()
|
||||
elif line.startswith(u'Words='):
|
||||
song_words = line[6:].strip()
|
||||
#Unhandled usr keywords:Type,Version,Admin,Themes,Keys
|
||||
#Process Fields and words sections
|
||||
# Unhandled usr keywords: Type, Version, Admin, Keys
|
||||
# Process Fields and words sections.
|
||||
check_first_verse_line = False
|
||||
field_list = song_fields.split(u'/t')
|
||||
words_list = song_words.split(u'/t')
|
||||
for counter in range(0, len(field_list)):
|
||||
if field_list[counter].startswith(u'Ver'):
|
||||
verse_type = u'V'
|
||||
verse_type = VerseType.Tags[VerseType.Verse]
|
||||
elif field_list[counter].startswith(u'Ch'):
|
||||
verse_type = u'C'
|
||||
verse_type = VerseType.Tags[VerseType.Chorus]
|
||||
elif field_list[counter].startswith(u'Br'):
|
||||
verse_type = u'B'
|
||||
else: #Other
|
||||
verse_type = u'O'
|
||||
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||
else:
|
||||
verse_type = VerseType.Tags[VerseType.Other]
|
||||
check_first_verse_line = True
|
||||
verse_text = unicode(words_list[counter])
|
||||
verse_text = verse_text.replace(u'/n', u'\n')
|
||||
verse_lines = verse_text.split(u'\n', 1)
|
||||
if check_first_verse_line:
|
||||
if verse_lines[0].startswith(u'(PRE-CHORUS'):
|
||||
verse_type = u'P'
|
||||
verse_type = VerseType.Tags[VerseType.PreChorus]
|
||||
log.debug(u'USR verse PRE-CHORUS: %s', verse_lines[0])
|
||||
verse_text = verse_lines[1]
|
||||
elif verse_lines[0].startswith(u'(BRIDGE'):
|
||||
verse_type = u'B'
|
||||
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||
log.debug(u'USR verse BRIDGE')
|
||||
verse_text = verse_lines[1]
|
||||
elif verse_lines[0].startswith(u'('):
|
||||
verse_type = u'O'
|
||||
verse_type = VerseType.Tags[VerseType.Other]
|
||||
verse_text = verse_lines[1]
|
||||
if len(verse_text) > 0:
|
||||
self.add_verse(verse_text, verse_type)
|
||||
check_first_verse_line = False
|
||||
#Handle multiple authors
|
||||
# Handle multiple authors
|
||||
author_list = song_author.split(u'/')
|
||||
if len(author_list) < 2:
|
||||
author_list = song_author.split(u'|')
|
||||
@ -204,16 +217,13 @@ class CCLIFileImport(SongImport):
|
||||
self.add_author(u' '.join(reversed(separated)))
|
||||
else:
|
||||
self.add_author(author)
|
||||
self.title = song_name
|
||||
self.copyright = song_copyright
|
||||
self.ccli_number = song_ccli
|
||||
self.topics = [topic.strip() for topic in song_topics.split(u'/t')]
|
||||
self.finish()
|
||||
|
||||
def do_import_txt_file(self, textList):
|
||||
"""
|
||||
The :func:`do_import_txt_file` method provides OpenLP
|
||||
with the ability to import CCLI SongSelect songs in
|
||||
*TXT* file format
|
||||
The :func:`do_import_txt_file` method provides OpenLP with the ability
|
||||
to import CCLI SongSelect songs in *TXT* file format.
|
||||
|
||||
``textList``
|
||||
An array of strings containing the txt file content.
|
||||
@ -243,12 +253,10 @@ class CCLIFileImport(SongImport):
|
||||
|
||||
"""
|
||||
log.debug(u'TXT file text: %s', textList)
|
||||
self.set_defaults()
|
||||
line_number = 0
|
||||
check_first_verse_line = False
|
||||
verse_text = u''
|
||||
song_comments = u''
|
||||
song_copyright = u''
|
||||
song_author = u''
|
||||
verse_start = False
|
||||
for line in textList:
|
||||
clean_line = line.strip()
|
||||
@ -258,12 +266,12 @@ class CCLIFileImport(SongImport):
|
||||
elif verse_start:
|
||||
if verse_text:
|
||||
self.add_verse(verse_text, verse_type)
|
||||
verse_text = ''
|
||||
verse_text = u''
|
||||
verse_start = False
|
||||
else:
|
||||
#line_number=0, song title
|
||||
if line_number == 0:
|
||||
song_name = clean_line
|
||||
self.title = clean_line
|
||||
line_number += 1
|
||||
#line_number=1, verses
|
||||
elif line_number == 1:
|
||||
@ -271,37 +279,37 @@ class CCLIFileImport(SongImport):
|
||||
if clean_line.startswith(u'CCLI'):
|
||||
line_number += 1
|
||||
ccli_parts = clean_line.split(' ')
|
||||
song_ccli = ccli_parts[len(ccli_parts)-1]
|
||||
self.ccli_number = ccli_parts[len(ccli_parts) - 1]
|
||||
elif not verse_start:
|
||||
# We have the verse descriptor
|
||||
verse_desc_parts = clean_line.split(' ')
|
||||
verse_desc_parts = clean_line.split(u' ')
|
||||
if len(verse_desc_parts) == 2:
|
||||
if verse_desc_parts[0].startswith(u'Ver'):
|
||||
verse_type = u'V'
|
||||
verse_type = VerseType.Tags[VerseType.Verse]
|
||||
elif verse_desc_parts[0].startswith(u'Ch'):
|
||||
verse_type = u'C'
|
||||
verse_type = VerseType.Tags[VerseType.Chorus]
|
||||
elif verse_desc_parts[0].startswith(u'Br'):
|
||||
verse_type = u'B'
|
||||
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||
else:
|
||||
#we need to analyse the next line for
|
||||
#verse type, so set flag
|
||||
verse_type = u'O'
|
||||
# we need to analyse the next line for
|
||||
# verse type, so set flag
|
||||
verse_type = VerseType.Tags[VerseType.Other]
|
||||
check_first_verse_line = True
|
||||
verse_number = verse_desc_parts[1]
|
||||
else:
|
||||
verse_type = u'O'
|
||||
verse_type = VerseType.Tags[VerseType.Other]
|
||||
verse_number = 1
|
||||
verse_start = True
|
||||
else:
|
||||
#check first line for verse type
|
||||
# check first line for verse type
|
||||
if check_first_verse_line:
|
||||
if line.startswith(u'(PRE-CHORUS'):
|
||||
verse_type = u'P'
|
||||
verse_type = VerseType.Tags[VerseType.PreChorus]
|
||||
elif line.startswith(u'(BRIDGE'):
|
||||
verse_type = u'B'
|
||||
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||
# Handle all other misc types
|
||||
elif line.startswith(u'('):
|
||||
verse_type = u'O'
|
||||
verse_type = VerseType.Tags[VerseType.Other]
|
||||
else:
|
||||
verse_text = verse_text + line
|
||||
check_first_verse_line = False
|
||||
@ -313,24 +321,19 @@ class CCLIFileImport(SongImport):
|
||||
#line_number=2, copyright
|
||||
if line_number == 2:
|
||||
line_number += 1
|
||||
song_copyright = clean_line
|
||||
self.copyright = clean_line
|
||||
#n=3, authors
|
||||
elif line_number == 3:
|
||||
line_number += 1
|
||||
song_author = clean_line
|
||||
#line_number=4, comments lines before last line
|
||||
elif (line_number == 4) and \
|
||||
(not clean_line.startswith(u'CCL')):
|
||||
song_comments = song_comments + clean_line
|
||||
elif line_number == 4 and not clean_line.startswith(u'CCL'):
|
||||
self.comments += clean_line
|
||||
# split on known separators
|
||||
author_list = song_author.split(u'/')
|
||||
if len(author_list) < 2:
|
||||
author_list = song_author.split(u'|')
|
||||
#Clean spaces before and after author names
|
||||
# Clean spaces before and after author names.
|
||||
for author_name in author_list:
|
||||
self.add_author(author_name.strip())
|
||||
self.title = song_name
|
||||
self.copyright = song_copyright
|
||||
self.ccli_number = song_ccli
|
||||
self.comments = song_comments
|
||||
self.finish()
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1" language="hu_HU">
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="hu_HU">
|
||||
<context>
|
||||
<name>AlertPlugin.AlertForm</name>
|
||||
<message>
|
||||
@ -696,7 +697,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/customplugin.py" line="59"/>
|
||||
<source><strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
|
||||
<translation><strong>Speciális bővítmény</strong><br />Az speciális bővítmény dalokhoz hasonló egyéni diák vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény.</translation>
|
||||
<translation><strong>Speciális bővítmény</strong><br />Az speciális bővítmény dalokhoz hasonló egyéni diasor vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -717,7 +718,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="106"/>
|
||||
<source>Edit Custom Slides</source>
|
||||
<translation>Speciális diák szerkesztése</translation>
|
||||
<translation>Speciális diasor szerkesztése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="108"/>
|
||||
@ -841,7 +842,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/images/imageplugin.py" line="44"/>
|
||||
<source><strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.</source>
|
||||
<translation><strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diákat automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.</translation>
|
||||
<translation><strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diasort automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/images/imageplugin.py" line="72"/>
|
||||
@ -1078,7 +1079,7 @@ Find out more about OpenLP: http://openlp.org/
|
||||
OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below.</source>
|
||||
<translation>OpenLP <version> <revision> – Nyílt forrású dalszöveg vetítő
|
||||
|
||||
Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az OpenOffice.org, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével.
|
||||
Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely énekek, bibliai versek, videók, képek és bemutatók (ha az OpenOffice.org, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére használható a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével.
|
||||
|
||||
Többet az OpenLP-ről: http://openlp.org/
|
||||
|
||||
@ -1221,12 +1222,12 @@ Végső köszönet
|
||||
„Úgy szerette Isten a világot, hogy
|
||||
egyszülött Fiát adta oda, hogy egyetlen
|
||||
benne hívő se vesszen el, hanem
|
||||
örök élete legyen." ‒ János 3,16
|
||||
örök élete legyen.” (Jn 3,16)
|
||||
|
||||
És végül, de nem utolsósorban, a végső köszönet
|
||||
Istené, Atyánké, mert elküldte a Fiát, hogy meghaljon
|
||||
a kereszten, megszabadítva bennünket a bűntől. Ezért
|
||||
ezt a programot ingyen készítettük neked, mert Ő
|
||||
ezt a programot szabadnak és ingyenesnek készítettük, mert Ő
|
||||
tett minket szabaddá.</translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -1245,14 +1246,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/aboutdialog.py" line="231"/>
|
||||
<source>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.</source>
|
||||
<translation>Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint -- 2. verzió --, melyet a Szabad Szoftver Alapítvány ad ki.
|
||||
</translation>
|
||||
<translation>Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/aboutdialog.py" line="236"/>
|
||||
<source>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See below for more details.</source>
|
||||
<translation>Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve. További részletekért lásd a alább.
|
||||
</translation>
|
||||
<translation>Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve. További részletekért lásd a alább.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1343,7 +1342,7 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
|
||||
<source>Start tag</source>
|
||||
<translation>Kezdő címke</translation>
|
||||
<translation>Nyitó címke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="137"/>
|
||||
@ -1358,12 +1357,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
|
||||
<source>Tag Id</source>
|
||||
<translation>Címke ID</translation>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="147"/>
|
||||
<source>Start HTML</source>
|
||||
<translation>Kezdő HTML</translation>
|
||||
<translation>Nyitó HTML</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="149"/>
|
||||
@ -1394,7 +1393,7 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="102"/>
|
||||
<source>Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred.</source>
|
||||
<translation>Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alábbi dobozban található szöveg olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen merre és mit tettél, amikor a hiba történt.</translation>
|
||||
<translation>Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alsó szövegdoboz olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el a bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen hol és mit tettél, amikor a hiba történt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="97"/>
|
||||
@ -1415,13 +1414,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="99"/>
|
||||
<source>Please enter a description of what you were doing to cause this error
|
||||
(Minimum 20 characters)</source>
|
||||
<translation>Írd le mit tettél, ami a hibát okozta
|
||||
(minimum 20 karakter)</translation>
|
||||
<translation>Írd le mit tettél, ami a hibához vezetett (minimum 20 karakter)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="112"/>
|
||||
<source>Attach File</source>
|
||||
<translation>Csatolt fájl</translation>
|
||||
<translation>Fájl csatolása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptionform.py" line="171"/>
|
||||
@ -1536,7 +1534,7 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimeform.py" line="252"/>
|
||||
<source>Enabling selected plugins...</source>
|
||||
<translation>Kijelölt beépülők engedélyezése…</translation>
|
||||
<translation>Kijelölt bővítmények engedélyezése…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="191"/>
|
||||
@ -1556,12 +1554,12 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="201"/>
|
||||
<source>Activate required Plugins</source>
|
||||
<translation>Szükséges beépülők aktiválása</translation>
|
||||
<translation>Igényelt bővítmények aktiválása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="203"/>
|
||||
<source>Select the Plugins you wish to use. </source>
|
||||
<translation>Jelöld ki az alkalmazni kívánt beépülőket.</translation>
|
||||
<translation>Jelöld ki az alkalmazni kívánt bővítményeket.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="205"/>
|
||||
@ -1571,7 +1569,7 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="206"/>
|
||||
<source>Custom Text</source>
|
||||
<translation>Egyedi szöveg</translation>
|
||||
<translation>Speciális</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="208"/>
|
||||
@ -1596,17 +1594,17 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="215"/>
|
||||
<source>Allow remote access</source>
|
||||
<translation>Távvezérlés engedélyezése</translation>
|
||||
<translation>Távvezérlő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="217"/>
|
||||
<source>Monitor Song Usage</source>
|
||||
<translation>Dalstatisztika monitorozása</translation>
|
||||
<translation>Dalstatisztika</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="219"/>
|
||||
<source>Allow Alerts</source>
|
||||
<translation>Értesítések engedélyezése</translation>
|
||||
<translation>Értesítések</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="221"/>
|
||||
@ -1679,7 +1677,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="252"/>
|
||||
<source>Please wait while OpenLP is set up and your data is imported.</source>
|
||||
<translation>Várj, amíg az OpenLP beállítások érvényre jutnak és míg at adatok importálódnak.</translation>
|
||||
<translation>Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok importálódnak.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="254"/>
|
||||
@ -1757,7 +1755,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<message>
|
||||
<location filename="openlp/core/ui/generaltab.py" line="229"/>
|
||||
<source>Slide loop delay:</source>
|
||||
<translation>Időzített diák késleltetése:</translation>
|
||||
<translation>Időzített dia késleltetése:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/generaltab.py" line="231"/>
|
||||
@ -1818,12 +1816,12 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<context>
|
||||
<name>OpenLP.LanguageManager</name>
|
||||
<message>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="130"/>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="132"/>
|
||||
<source>Language</source>
|
||||
<translation>Nyelv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="130"/>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="132"/>
|
||||
<source>Please restart OpenLP to use your new language setting.</source>
|
||||
<translation>A nyelvi beállítások az OpenLP újraindítása után lépnek érvénybe.</translation>
|
||||
</message>
|
||||
@ -1839,347 +1837,347 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<context>
|
||||
<name>OpenLP.MainWindow</name>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="313"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fájl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="314"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
||||
<source>&Import</source>
|
||||
<translation>&Importálás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
||||
<source>&Export</source>
|
||||
<translation>&Exportálás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
||||
<source>&View</source>
|
||||
<translation>&Nézet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
||||
<source>M&ode</source>
|
||||
<translation>&Mód</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="320"/>
|
||||
<source>&Tools</source>
|
||||
<translation>&Eszközök</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="321"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Beállítások</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
||||
<source>&Language</source>
|
||||
<translation>&Nyelv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="322"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="324"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Súgó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="323"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
||||
<source>Media Manager</source>
|
||||
<translation>Médiakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
||||
<source>Service Manager</source>
|
||||
<translation>Sorrendkezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
||||
<source>Theme Manager</source>
|
||||
<translation>Témakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="331"/>
|
||||
<source>&New</source>
|
||||
<translation>&Új</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="332"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="334"/>
|
||||
<source>Ctrl+N</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="333"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="335"/>
|
||||
<source>&Open</source>
|
||||
<translation>Meg&nyitás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="335"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="337"/>
|
||||
<source>Open an existing service.</source>
|
||||
<translation>Meglévő sorrend megnyitása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="337"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="339"/>
|
||||
<source>Ctrl+O</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="338"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="340"/>
|
||||
<source>&Save</source>
|
||||
<translation>&Mentés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="340"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="342"/>
|
||||
<source>Save the current service to disk.</source>
|
||||
<translation>Aktuális sorrend mentése lemezre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="342"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="344"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="343"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="345"/>
|
||||
<source>Save &As...</source>
|
||||
<translation>Mentés má&sként…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="345"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="347"/>
|
||||
<source>Save Service As</source>
|
||||
<translation>Sorrend mentése másként</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="347"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="349"/>
|
||||
<source>Save the current service under a new name.</source>
|
||||
<translation>Az aktuális sorrend más néven való mentése.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="349"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="351"/>
|
||||
<source>Ctrl+Shift+S</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
||||
<source>E&xit</source>
|
||||
<translation>&Kilépés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
||||
<source>Quit OpenLP</source>
|
||||
<translation>OpenLP bezárása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="362"/>
|
||||
<source>Alt+F4</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="366"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
||||
<source>&Theme</source>
|
||||
<translation>&Téma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="374"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
||||
<source>&Configure OpenLP...</source>
|
||||
<translation>OpenLP &beállítása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="378"/>
|
||||
<source>&Media Manager</source>
|
||||
<translation>&Médiakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="378"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="380"/>
|
||||
<source>Toggle Media Manager</source>
|
||||
<translation>Médiakezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="380"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="382"/>
|
||||
<source>Toggle the visibility of the media manager.</source>
|
||||
<translation>A médiakezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="382"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
||||
<source>F8</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="386"/>
|
||||
<source>&Theme Manager</source>
|
||||
<translation>&Témakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="386"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="388"/>
|
||||
<source>Toggle Theme Manager</source>
|
||||
<translation>Témakezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="388"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="390"/>
|
||||
<source>Toggle the visibility of the theme manager.</source>
|
||||
<translation>A témakezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="390"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
||||
<source>F10</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="394"/>
|
||||
<source>&Service Manager</source>
|
||||
<translation>&Sorrendkezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="394"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="396"/>
|
||||
<source>Toggle Service Manager</source>
|
||||
<translation>Sorrendkezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="396"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="398"/>
|
||||
<source>Toggle the visibility of the service manager.</source>
|
||||
<translation>A sorrendkezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="398"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
||||
<source>F9</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="402"/>
|
||||
<source>&Preview Panel</source>
|
||||
<translation>&Előnézet panel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="402"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="404"/>
|
||||
<source>Toggle Preview Panel</source>
|
||||
<translation>Előnézet panel átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="404"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="406"/>
|
||||
<source>Toggle the visibility of the preview panel.</source>
|
||||
<translation>Az előnézet panel láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="406"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
||||
<source>F11</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="410"/>
|
||||
<source>&Live Panel</source>
|
||||
<translation>&Élő adás panel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="410"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="412"/>
|
||||
<source>Toggle Live Panel</source>
|
||||
<translation>Élő adás panel átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="412"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="414"/>
|
||||
<source>Toggle the visibility of the live panel.</source>
|
||||
<translation>Az élő adás panel láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="414"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
||||
<source>F12</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="418"/>
|
||||
<source>&Plugin List</source>
|
||||
<translation>&Bővítménylista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="418"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="420"/>
|
||||
<source>List the Plugins</source>
|
||||
<translation>Bővítmények listája</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="420"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
||||
<source>Alt+F7</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
||||
<source>&User Guide</source>
|
||||
<translation>&Felhasználói kézikönyv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="426"/>
|
||||
<source>&About</source>
|
||||
<translation>&Névjegy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="425"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="427"/>
|
||||
<source>More information about OpenLP</source>
|
||||
<translation>További információ az OpenLP-ről</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="427"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
||||
<source>Ctrl+F1</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="431"/>
|
||||
<source>&Online Help</source>
|
||||
<translation>&Online súgó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="434"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="433"/>
|
||||
<source>&Web Site</source>
|
||||
<translation>&Weboldal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="442"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="441"/>
|
||||
<source>Use the system language, if available.</source>
|
||||
<translation>Rendszernyelv használata, ha elérhető.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="438"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="437"/>
|
||||
<source>Set the interface language to %s</source>
|
||||
<translation>A felhasználói felület nyelvének átváltása erre: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="444"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="443"/>
|
||||
<source>Add &Tool...</source>
|
||||
<translation>&Eszköz hozzáadása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="446"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="445"/>
|
||||
<source>Add an application to the list of tools.</source>
|
||||
<translation>Egy alkalmazás hozzáadása az eszközök listához.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="452"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="451"/>
|
||||
<source>&Default</source>
|
||||
<translation>&Alapértelmezett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="454"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="453"/>
|
||||
<source>Set the view mode back to the default.</source>
|
||||
<translation>Nézetmód visszaállítása az alapértelmezettre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="456"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="455"/>
|
||||
<source>&Setup</source>
|
||||
<translation>&Szerkesztés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="457"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="456"/>
|
||||
<source>Set the view mode to Setup.</source>
|
||||
<translation>Nézetmód váltása a Beállítás módra.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="459"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="458"/>
|
||||
<source>&Live</source>
|
||||
<translation>&Élő adás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="460"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="459"/>
|
||||
<source>Set the view mode to Live.</source>
|
||||
<translation>Nézetmód váltása a Élő módra.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="648"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="645"/>
|
||||
<source>Version %s of OpenLP is now available for download (you are currently running version %s).
|
||||
|
||||
You can download the latest version from http://openlp.org/.</source>
|
||||
@ -2188,27 +2186,27 @@ You can download the latest version from http://openlp.org/.</source>
|
||||
A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="652"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="649"/>
|
||||
<source>OpenLP Version Updated</source>
|
||||
<translation>OpenLP verziófrissítés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="704"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="701"/>
|
||||
<source>OpenLP Main Display Blanked</source>
|
||||
<translation>Sötét OpenLP fő képernyő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="704"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="701"/>
|
||||
<source>The Main Display has been blanked out</source>
|
||||
<translation>A fő képernyő el lett sötétítve</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="920"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="910"/>
|
||||
<source>Default Theme: %s</source>
|
||||
<translation>Alapértelmezett téma: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="372"/>
|
||||
<source>Configure &Shortcuts...</source>
|
||||
<translation>&Gyorsbillentyűk beállítása…</translation>
|
||||
</message>
|
||||
@ -2219,42 +2217,42 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translatio
|
||||
<translation>Magyar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="352"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="354"/>
|
||||
<source>Print the current Service Order.</source>
|
||||
<translation>Az aktuális sorrend nyomtatása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="354"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
||||
<source>Ctrl+P</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="372"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="374"/>
|
||||
<source>&Configure Display Tags</source>
|
||||
<translation>Megjelenítési &címkek beállítása</translation>
|
||||
<translation>Megjelenítési &címkék beállítása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="440"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="439"/>
|
||||
<source>&Autodetect</source>
|
||||
<translation>&Automatikus felismerés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="448"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="447"/>
|
||||
<source>Open &Data Folder...</source>
|
||||
<translation>&Adatmappa megnyitása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="450"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="449"/>
|
||||
<source>Open the folder where songs, bibles and other data resides.</source>
|
||||
<translation>A dalokat, Bibliákat és egyéb adatokat tartalmazó mappa megnyitása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="842"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="832"/>
|
||||
<source>Close OpenLP</source>
|
||||
<translation>OpenLP bezárása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="842"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="832"/>
|
||||
<source>Are you sure you want to close OpenLP?</source>
|
||||
<translation>Biztosan bezárható az OpenLP?</translation>
|
||||
</message>
|
||||
@ -3158,7 +3156,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="448"/>
|
||||
<source>Define the font and display characteristics for the Display text</source>
|
||||
<translation>A fő szöveg betűkészlete és a megjelenési tulajdonságai</translation>
|
||||
<translation>A fő szöveg betűkészlete és megjelenési tulajdonságai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="473"/>
|
||||
@ -3203,7 +3201,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="470"/>
|
||||
<source>Define the font and display characteristics for the Footer text</source>
|
||||
<translation>A lábléc szöveg betűkészlete és a megjelenési tulajdonságai</translation>
|
||||
<translation>A lábléc szöveg betűkészlete és megjelenési tulajdonságai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="477"/>
|
||||
@ -3293,7 +3291,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="530"/>
|
||||
<source>View the theme and save it replacing the current one or change the name to create a new theme</source>
|
||||
<translation>A téma előnézete és mentése. Felülírható már egy meglévő vagy egy új név megadásával új téma hozható létre</translation>
|
||||
<translation>A téma előnézete és mentése: egy már meglévő téma felülírható vagy egy új név megadásával új téma hozható létre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="534"/>
|
||||
@ -4439,7 +4437,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért.</translation>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="367"/>
|
||||
<source>You have not selected a valid author. Either select an author from the list, or type in a new author and click the "Add Author to Song" button to add the new author.</source>
|
||||
<translation>Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints az „Szerző hozzáadása a dalhoz” gombon a szerző megjelöléséhez.</translation>
|
||||
<translation>Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints a Hozzáadás gombra a szerző megjelöléséhez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="395"/>
|
||||
@ -4459,7 +4457,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért.</translation>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="426"/>
|
||||
<source>You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic.</source>
|
||||
<translation>Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Témakör hozzáadása a dalhoz gombon a témakör megjelöléséhez.</translation>
|
||||
<translation>Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Hozzáadás gombraa témakör megjelöléséhez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="561"/>
|
||||
|
@ -394,10 +394,7 @@ if __name__ == '__main__':
|
||||
--template Info.plist.master \
|
||||
--expandto %(target_directory)s/Info.plist' \
|
||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
||||
os.system('python expander.py --config %(config_file)s \
|
||||
--template version.master \
|
||||
--expandto %(target_directory)s/.version' \
|
||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
||||
os.system('python get_version.py > .version')
|
||||
|
||||
# prepare variables
|
||||
app_name_lower = settings['openlp_appname'].lower()
|
||||
|
36
resources/osx/get_version.py
Normal file
36
resources/osx/get_version.py
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import os
|
||||
from bzrlib.branch import Branch
|
||||
|
||||
def get_version(path):
|
||||
b = Branch.open_containing(path)[0]
|
||||
b.lock_read()
|
||||
result = '0.0.0'
|
||||
try:
|
||||
# Get the branch's latest revision number.
|
||||
revno = b.revno()
|
||||
# Convert said revision number into a bzr revision id.
|
||||
revision_id = b.dotted_revno_to_revision_id((revno,))
|
||||
# Get a dict of tags, with the revision id as the key.
|
||||
tags = b.tags.get_reverse_tag_dict()
|
||||
# Check if the latest
|
||||
if revision_id in tags:
|
||||
result = tags[revision_id][0]
|
||||
else:
|
||||
result = '%s-bzr%s' % (sorted(b.tags.get_tag_dict().keys())[-1], revno)
|
||||
finally:
|
||||
b.unlock()
|
||||
return result
|
||||
|
||||
def get_path():
|
||||
if len(sys.argv) > 1:
|
||||
return os.path.abspath(sys.argv[1])
|
||||
else:
|
||||
return os.path.abspath('.')
|
||||
|
||||
if __name__ == u'__main__':
|
||||
path = get_path()
|
||||
print get_version(path)
|
||||
|
@ -2,7 +2,6 @@
|
||||
openlp_appname = OpenLP
|
||||
openlp_dmgname = OpenLP-1.9.4-bzrXXXX
|
||||
openlp_version = XXXX
|
||||
openlp_full_version = 1.9.4-latest
|
||||
openlp_basedir = /Users/openlp/trunk
|
||||
openlp_icon_file = openlp-logo-with-text.icns
|
||||
openlp_dmg_icon_file = openlp-logo-420x420.png
|
||||
|
@ -1 +0,0 @@
|
||||
%(openlp_full_version)s
|
Loading…
Reference in New Issue
Block a user