forked from openlp/openlp
Head r1441
This commit is contained in:
commit
c2518565de
@ -1,112 +1,112 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
|
|
||||||
REM Command file for Sphinx documentation
|
REM Command file for Sphinx documentation
|
||||||
|
|
||||||
set SPHINXBUILD=sphinx-build
|
set SPHINXBUILD=sphinx-build
|
||||||
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
||||||
if NOT "%PAPER%" == "" (
|
if NOT "%PAPER%" == "" (
|
||||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "" goto help
|
if "%1" == "" goto help
|
||||||
|
|
||||||
if "%1" == "help" (
|
if "%1" == "help" (
|
||||||
:help
|
:help
|
||||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||||
echo. html to make standalone HTML files
|
echo. html to make standalone HTML files
|
||||||
echo. dirhtml to make HTML files named index.html in directories
|
echo. dirhtml to make HTML files named index.html in directories
|
||||||
echo. pickle to make pickle files
|
echo. pickle to make pickle files
|
||||||
echo. json to make JSON files
|
echo. json to make JSON files
|
||||||
echo. htmlhelp to make HTML files and a HTML help project
|
echo. htmlhelp to make HTML files and a HTML help project
|
||||||
echo. qthelp to make HTML files and a qthelp 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. 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. changes to make an overview over all changed/added/deprecated items
|
||||||
echo. linkcheck to check all external links for integrity
|
echo. linkcheck to check all external links for integrity
|
||||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "clean" (
|
if "%1" == "clean" (
|
||||||
for /d %%i in (build\*) do rmdir /q /s %%i
|
for /d %%i in (build\*) do rmdir /q /s %%i
|
||||||
del /q /s build\*
|
del /q /s build\*
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "html" (
|
if "%1" == "html" (
|
||||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished. The HTML pages are in build/html.
|
echo.Build finished. The HTML pages are in build/html.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "dirhtml" (
|
if "%1" == "dirhtml" (
|
||||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished. The HTML pages are in build/dirhtml.
|
echo.Build finished. The HTML pages are in build/dirhtml.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "pickle" (
|
if "%1" == "pickle" (
|
||||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished; now you can process the pickle files.
|
echo.Build finished; now you can process the pickle files.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "json" (
|
if "%1" == "json" (
|
||||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished; now you can process the JSON files.
|
echo.Build finished; now you can process the JSON files.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "htmlhelp" (
|
if "%1" == "htmlhelp" (
|
||||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||||
.hhp project file in build/htmlhelp.
|
.hhp project file in build/htmlhelp.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "qthelp" (
|
if "%1" == "qthelp" (
|
||||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||||
.qhcp project file in build/qthelp, like this:
|
.qhcp project file in build/qthelp, like this:
|
||||||
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
||||||
echo.To view the help file:
|
echo.To view the help file:
|
||||||
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "latex" (
|
if "%1" == "latex" (
|
||||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
||||||
echo.
|
echo.
|
||||||
echo.Build finished; the LaTeX files are in build/latex.
|
echo.Build finished; the LaTeX files are in build/latex.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "changes" (
|
if "%1" == "changes" (
|
||||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
||||||
echo.
|
echo.
|
||||||
echo.The overview file is in build/changes.
|
echo.The overview file is in build/changes.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "linkcheck" (
|
if "%1" == "linkcheck" (
|
||||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
||||||
echo.
|
echo.
|
||||||
echo.Link check complete; look for any errors in the above output ^
|
echo.Link check complete; look for any errors in the above output ^
|
||||||
or in build/linkcheck/output.txt.
|
or in build/linkcheck/output.txt.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%1" == "doctest" (
|
if "%1" == "doctest" (
|
||||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
||||||
echo.
|
echo.
|
||||||
echo.Testing of doctests in the sources finished, look at the ^
|
echo.Testing of doctests in the sources finished, look at the ^
|
||||||
results in build/doctest/output.txt.
|
results in build/doctest/output.txt.
|
||||||
goto end
|
goto end
|
||||||
)
|
)
|
||||||
|
|
||||||
:end
|
:end
|
||||||
|
@ -42,7 +42,7 @@ master_doc = 'index'
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'OpenLP'
|
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
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |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
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
# a list of builtin themes.
|
# 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
|
# 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
|
# further. For a list of options available for each theme, see the
|
||||||
# documentation.
|
# 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.
|
# 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
|
# The name for this set of Sphinx documents. If None, it defaults to
|
||||||
# "<project> v<release> documentation".
|
# "<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.
|
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||||
#html_short_title = None
|
#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,
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||||
# using the given strftime format.
|
# 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
|
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||||
# typographically correct entities.
|
# typographically correct entities.
|
||||||
@ -165,7 +176,7 @@ html_static_path = ['_static']
|
|||||||
#html_file_suffix = None
|
#html_file_suffix = None
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
# Output file base name for HTML help builder.
|
||||||
htmlhelp_basename = 'OpenLPdoc'
|
htmlhelp_basename = 'OpenLP'
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output --------------------------------------------------
|
# -- Options for LaTeX output --------------------------------------------------
|
||||||
@ -179,7 +190,7 @@ htmlhelp_basename = 'OpenLPdoc'
|
|||||||
# Grouping the document tree into LaTeX files. List of tuples
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
('index', 'OpenLP.tex', u'OpenLP Documentation',
|
('index', 'OpenLP.tex', u'OpenLP Reference Manual',
|
||||||
u'Wesley Stout', 'manual'),
|
u'Wesley Stout', 'manual'),
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -212,6 +223,6 @@ latex_documents = [
|
|||||||
# One entry per manual page. List of tuples
|
# One entry per manual page. List of tuples
|
||||||
# (source start file, name, description, authors, manual section).
|
# (source start file, name, description, authors, manual section).
|
||||||
man_pages = [
|
man_pages = [
|
||||||
('index', 'openlp', u'OpenLP Documentation',
|
('index', 'openlp', u'OpenLP Reference Manual',
|
||||||
[u'Wesley Stout'], 1)
|
[u'Wesley Stout'], 1)
|
||||||
]
|
]
|
||||||
|
@ -18,4 +18,5 @@ Contents:
|
|||||||
bibles
|
bibles
|
||||||
themes
|
themes
|
||||||
mediamanager
|
mediamanager
|
||||||
songs
|
songs
|
||||||
|
troubleshooting
|
||||||
|
@ -5,33 +5,31 @@ Introduction
|
|||||||
About
|
About
|
||||||
-----
|
-----
|
||||||
|
|
||||||
OpenLP is an open source lyrics projection application developed specifically
|
OpenLP stands for "Open Source Lyrics Projection" and is presentation software
|
||||||
for churches. It is licensed under the GNU Generic Public License, which means
|
developed for churches to provide a single easy to use interface for the
|
||||||
that it is free to use and distribute, and it stays free.
|
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
|
Being free, this software can be installed on as many PCs as required,
|
||||||
computer and a data projector. OpenLP also has the ability to project videos,
|
including the home PCs of worship leader(s) at no additional cost. Compared to
|
||||||
images, and also play audio. OpenLP also is highly customizable providing users
|
the expensive site licenses and restrictions of commercial software we believe
|
||||||
with the ability to set up a wide variety of themes, including themes with
|
OpenLP is the perfect choice for quality and value. Still in active development
|
||||||
video backgrounds.
|
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 licensed under the GNU Generic Public License, which means
|
||||||
-----------
|
that it is free to use, distribute, modify, and it stays free.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
GNU General Public License
|
GNU General Public License
|
||||||
--------------------------
|
--------------------------
|
||||||
@ -42,5 +40,5 @@ to charge for the software, and that you have to distribute the source code as
|
|||||||
well.
|
well.
|
||||||
|
|
||||||
You can find a copy of the GNU General Public License from the Help menu
|
You can find a copy of the GNU General Public License from the Help menu
|
||||||
selecting about OpenLP or on-line
|
selecting about OpenLP or on-line at:
|
||||||
at: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
`<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
|
.. image:: pics/mediamanager.png
|
||||||
|
|
||||||
To enable the plugins navigate to :menuselection:`Settings --> Plugins` or
|
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
|
press :kbd:`Alt+F7`. You will want to click on the plugin to the left that you
|
||||||
enable and select **active** from the drop down box to the right.
|
would like to enable and select **active** from the drop down box to the right.
|
||||||
|
|
||||||
.. image:: pics/plugins.png
|
.. 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 PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Receiver, check_directory_exists
|
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.resources import qInitResources
|
||||||
from openlp.core.ui.mainwindow import MainWindow
|
from openlp.core.ui.mainwindow import MainWindow
|
||||||
from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm
|
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.
|
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):
|
def run(self):
|
||||||
"""
|
"""
|
||||||
Run the OpenLP application.
|
Run the OpenLP application.
|
||||||
@ -107,7 +115,8 @@ class OpenLP(QtGui.QApplication):
|
|||||||
# make sure Qt really display the splash screen
|
# make sure Qt really display the splash screen
|
||||||
self.processEvents()
|
self.processEvents()
|
||||||
# start the main app window
|
# start the main app window
|
||||||
self.mainWindow = MainWindow(screens, self.clipboard())
|
self.mainWindow = MainWindow(screens, self.clipboard(),
|
||||||
|
self.arguments())
|
||||||
self.mainWindow.show()
|
self.mainWindow.show()
|
||||||
if show_splash:
|
if show_splash:
|
||||||
# now kill the splashscreen
|
# now kill the splashscreen
|
||||||
@ -122,6 +131,24 @@ class OpenLP(QtGui.QApplication):
|
|||||||
VersionThread(self.mainWindow).start()
|
VersionThread(self.mainWindow).start()
|
||||||
return self.exec_()
|
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):
|
def hookException(self, exctype, value, traceback):
|
||||||
if not hasattr(self, u'mainWindow'):
|
if not hasattr(self, u'mainWindow'):
|
||||||
log.exception(''.join(format_exception(exctype, value, traceback)))
|
log.exception(''.join(format_exception(exctype, value, traceback)))
|
||||||
@ -194,6 +221,9 @@ def main():
|
|||||||
qInitResources()
|
qInitResources()
|
||||||
# Now create and actually run the application.
|
# Now create and actually run the application.
|
||||||
app = OpenLP(qt_args)
|
app = OpenLP(qt_args)
|
||||||
|
# Instance check
|
||||||
|
if app.isAlreadyRunning():
|
||||||
|
sys.exit()
|
||||||
app.setOrganizationName(u'OpenLP')
|
app.setOrganizationName(u'OpenLP')
|
||||||
app.setOrganizationDomain(u'openlp.org')
|
app.setOrganizationDomain(u'openlp.org')
|
||||||
app.setApplicationName(u'OpenLP')
|
app.setApplicationName(u'OpenLP')
|
||||||
|
@ -101,6 +101,10 @@ class EventReceiver(QtCore.QObject):
|
|||||||
``servicemanager_previous_item``
|
``servicemanager_previous_item``
|
||||||
Display the previous item in the service
|
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``
|
``servicemanager_next_item``
|
||||||
Display the next item in the service
|
Display the next item in the service
|
||||||
|
|
||||||
|
@ -85,7 +85,12 @@ body {
|
|||||||
}
|
}
|
||||||
/* lyric css */
|
/* lyric css */
|
||||||
%s
|
%s
|
||||||
|
sup {
|
||||||
|
font-size:0.6em;
|
||||||
|
vertical-align:top;
|
||||||
|
position:relative;
|
||||||
|
top:-0.3em;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
var timer = null;
|
var timer = null;
|
||||||
|
@ -145,7 +145,8 @@ class RenderManager(object):
|
|||||||
else:
|
else:
|
||||||
self.theme = self.service_theme
|
self.theme = self.service_theme
|
||||||
else:
|
else:
|
||||||
if theme:
|
# Images have a theme of -1
|
||||||
|
if theme and theme != -1:
|
||||||
self.theme = theme
|
self.theme = theme
|
||||||
elif theme_level == ThemeLevel.Song or \
|
elif theme_level == ThemeLevel.Song or \
|
||||||
theme_level == ThemeLevel.Service:
|
theme_level == ThemeLevel.Service:
|
||||||
|
@ -109,7 +109,9 @@ class ServiceItem(object):
|
|||||||
self.edit_id = None
|
self.edit_id = None
|
||||||
self.xml_version = None
|
self.xml_version = None
|
||||||
self.start_time = 0
|
self.start_time = 0
|
||||||
|
self.end_time = 0
|
||||||
self.media_length = 0
|
self.media_length = 0
|
||||||
|
self.from_service = False
|
||||||
self._new_item()
|
self._new_item()
|
||||||
|
|
||||||
def _new_item(self):
|
def _new_item(self):
|
||||||
@ -261,6 +263,7 @@ class ServiceItem(object):
|
|||||||
u'data': self.data_string,
|
u'data': self.data_string,
|
||||||
u'xml_version': self.xml_version,
|
u'xml_version': self.xml_version,
|
||||||
u'start_time': self.start_time,
|
u'start_time': self.start_time,
|
||||||
|
u'end_time': self.end_time,
|
||||||
u'media_length': self.media_length
|
u'media_length': self.media_length
|
||||||
}
|
}
|
||||||
service_data = []
|
service_data = []
|
||||||
@ -307,6 +310,8 @@ class ServiceItem(object):
|
|||||||
self.xml_version = header[u'xml_version']
|
self.xml_version = header[u'xml_version']
|
||||||
if u'start_time' in header:
|
if u'start_time' in header:
|
||||||
self.start_time = header[u'start_time']
|
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:
|
if u'media_length' in header:
|
||||||
self.media_length = header[u'media_length']
|
self.media_length = header[u'media_length']
|
||||||
if self.service_item_type == ServiceItemType.Text:
|
if self.service_item_type == ServiceItemType.Text:
|
||||||
@ -449,4 +454,3 @@ class ServiceItem(object):
|
|||||||
return end
|
return end
|
||||||
else:
|
else:
|
||||||
return u'%s : %s' % (start, end)
|
return u'%s : %s' % (start, end)
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ class UiStrings(object):
|
|||||||
Export = translate('OpenLP.Ui', 'Export')
|
Export = translate('OpenLP.Ui', 'Export')
|
||||||
FontSizePtUnit = translate('OpenLP.Ui', 'pt',
|
FontSizePtUnit = translate('OpenLP.Ui', 'pt',
|
||||||
'Abbreviated font pointsize unit')
|
'Abbreviated font pointsize unit')
|
||||||
|
Hours = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours')
|
||||||
Image = translate('OpenLP.Ui', 'Image')
|
Image = translate('OpenLP.Ui', 'Image')
|
||||||
Import = translate('OpenLP.Ui', 'Import')
|
Import = translate('OpenLP.Ui', 'Import')
|
||||||
LengthTime = unicode(translate('OpenLP.Ui', 'Length %s'))
|
LengthTime = unicode(translate('OpenLP.Ui', 'Length %s'))
|
||||||
@ -64,6 +65,7 @@ class UiStrings(object):
|
|||||||
LiveBGError = translate('OpenLP.Ui', 'Live Background Error')
|
LiveBGError = translate('OpenLP.Ui', 'Live Background Error')
|
||||||
LivePanel = translate('OpenLP.Ui', 'Live Panel')
|
LivePanel = translate('OpenLP.Ui', 'Live Panel')
|
||||||
Load = translate('OpenLP.Ui', 'Load')
|
Load = translate('OpenLP.Ui', 'Load')
|
||||||
|
Minutes = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes')
|
||||||
Middle = translate('OpenLP.Ui', 'Middle')
|
Middle = translate('OpenLP.Ui', 'Middle')
|
||||||
New = translate('OpenLP.Ui', 'New')
|
New = translate('OpenLP.Ui', 'New')
|
||||||
NewService = translate('OpenLP.Ui', 'New Service')
|
NewService = translate('OpenLP.Ui', 'New Service')
|
||||||
@ -75,6 +77,8 @@ class UiStrings(object):
|
|||||||
OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x')
|
OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x')
|
||||||
OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0')
|
OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0')
|
||||||
OpenFile = translate('OpenLP.Ui', 'Open File')
|
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')
|
OpenService = translate('OpenLP.Ui', 'Open Service')
|
||||||
Preview = translate('OpenLP.Ui', 'Preview')
|
Preview = translate('OpenLP.Ui', 'Preview')
|
||||||
PreviewPanel = translate('OpenLP.Ui', 'Preview Panel')
|
PreviewPanel = translate('OpenLP.Ui', 'Preview Panel')
|
||||||
@ -83,7 +87,7 @@ class UiStrings(object):
|
|||||||
ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background')
|
ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background')
|
||||||
ResetBG = translate('OpenLP.Ui', 'Reset Background')
|
ResetBG = translate('OpenLP.Ui', 'Reset Background')
|
||||||
ResetLiveBG = translate('OpenLP.Ui', 'Reset Live 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')
|
SaveAndPreview = translate('OpenLP.Ui', 'Save && Preview')
|
||||||
Search = translate('OpenLP.Ui', 'Search')
|
Search = translate('OpenLP.Ui', 'Search')
|
||||||
SelectDelete = translate('OpenLP.Ui', 'You must select an item to delete.')
|
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'en_ZA': [u'Raoul "superfly" Snyman'],
|
||||||
u'et': [u'Mattias "mahfiaz" P\xf5ldaru'],
|
u'et': [u'Mattias "mahfiaz" P\xf5ldaru'],
|
||||||
u'fr': [u'Stephan\xe9 "stbrunner" Brunner'],
|
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'ja': [u'Kunio "Kunio" Nakamaru'],
|
||||||
u'nb': [u'Atle "pendlaren" Weibell', u'Frode "frodus" Woldsund'],
|
u'nb': [u'Atle "pendlaren" Weibell', u'Frode "frodus" Woldsund'],
|
||||||
u'nl': [u'Arjen "typovar" van Voorst'],
|
u'nl': [u'Arjen "typovar" van Voorst'],
|
||||||
|
@ -57,6 +57,7 @@ except ImportError:
|
|||||||
from openlp.core.lib import translate, SettingsManager
|
from openlp.core.lib import translate, SettingsManager
|
||||||
from openlp.core.lib.mailto import mailto
|
from openlp.core.lib.mailto import mailto
|
||||||
from openlp.core.lib.ui import UiStrings
|
from openlp.core.lib.ui import UiStrings
|
||||||
|
from openlp.core.utils import get_application_version
|
||||||
|
|
||||||
from exceptiondialog import Ui_ExceptionDialog
|
from exceptiondialog import Ui_ExceptionDialog
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
|||||||
return QtGui.QDialog.exec_(self)
|
return QtGui.QDialog.exec_(self)
|
||||||
|
|
||||||
def _createReport(self):
|
def _createReport(self):
|
||||||
openlp_version = self.parent().applicationVersion[u'full']
|
openlp_version = get_application_version()
|
||||||
description = unicode(self.descriptionTextEdit.toPlainText())
|
description = unicode(self.descriptionTextEdit.toPlainText())
|
||||||
traceback = unicode(self.exceptionTextEdit.toPlainText())
|
traceback = unicode(self.exceptionTextEdit.toPlainText())
|
||||||
system = unicode(translate('OpenLP.ExceptionForm',
|
system = unicode(translate('OpenLP.ExceptionForm',
|
||||||
|
@ -105,6 +105,9 @@ class GeneralTab(SettingsTab):
|
|||||||
self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||||
self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox')
|
self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox')
|
||||||
self.settingsLayout.addRow(self.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 = QtGui.QCheckBox(self.settingsGroupBox)
|
||||||
self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox')
|
self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox')
|
||||||
self.settingsLayout.addRow(self.autoPreviewCheckBox)
|
self.settingsLayout.addRow(self.autoPreviewCheckBox)
|
||||||
@ -224,6 +227,8 @@ class GeneralTab(SettingsTab):
|
|||||||
translate('OpenLP.GeneralTab', 'Application Settings'))
|
translate('OpenLP.GeneralTab', 'Application Settings'))
|
||||||
self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab',
|
self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||||
'Prompt to save before starting a new service'))
|
'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',
|
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||||
'Automatically preview next item in service'))
|
'Automatically preview next item in service'))
|
||||||
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
||||||
@ -262,6 +267,8 @@ class GeneralTab(SettingsTab):
|
|||||||
u'songselect password', QtCore.QVariant(u'')).toString()))
|
u'songselect password', QtCore.QVariant(u'')).toString()))
|
||||||
self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt',
|
self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt',
|
||||||
QtCore.QVariant(False)).toBool())
|
QtCore.QVariant(False)).toBool())
|
||||||
|
self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank',
|
||||||
|
QtCore.QVariant(False)).toBool())
|
||||||
self.monitorComboBox.setCurrentIndex(self.monitorNumber)
|
self.monitorComboBox.setCurrentIndex(self.monitorNumber)
|
||||||
self.displayOnMonitorCheck.setChecked(self.screens.display)
|
self.displayOnMonitorCheck.setChecked(self.screens.display)
|
||||||
self.warningCheckBox.setChecked(settings.value(u'blank warning',
|
self.warningCheckBox.setChecked(settings.value(u'blank warning',
|
||||||
@ -312,6 +319,8 @@ class GeneralTab(SettingsTab):
|
|||||||
QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked()))
|
QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked()))
|
||||||
settings.setValue(u'save prompt',
|
settings.setValue(u'save prompt',
|
||||||
QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked()))
|
QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked()))
|
||||||
|
settings.setValue(u'auto unblank',
|
||||||
|
QtCore.QVariant(self.autoUnblankCheckBox.isChecked()))
|
||||||
settings.setValue(u'auto preview',
|
settings.setValue(u'auto preview',
|
||||||
QtCore.QVariant(self.autoPreviewCheckBox.isChecked()))
|
QtCore.QVariant(self.autoPreviewCheckBox.isChecked()))
|
||||||
settings.setValue(u'loop delay',
|
settings.setValue(u'loop delay',
|
||||||
|
@ -367,7 +367,7 @@ class MainDisplay(DisplayWidget):
|
|||||||
self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))
|
self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))
|
||||||
# Need the timer to trigger set the trigger to 200ms
|
# Need the timer to trigger set the trigger to 200ms
|
||||||
# Value taken from web documentation.
|
# Value taken from web documentation.
|
||||||
if self.serviceItem.start_time != 0:
|
if self.serviceItem.end_time != 0:
|
||||||
self.mediaObject.setTickInterval(200)
|
self.mediaObject.setTickInterval(200)
|
||||||
self.mediaObject.play()
|
self.mediaObject.play()
|
||||||
self.webView.setVisible(False)
|
self.webView.setVisible(False)
|
||||||
@ -401,9 +401,9 @@ class MainDisplay(DisplayWidget):
|
|||||||
def videoTick(self, tick):
|
def videoTick(self, tick):
|
||||||
"""
|
"""
|
||||||
Triggered on video tick every 200 milli seconds
|
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):
|
def isWebLoaded(self):
|
||||||
"""
|
"""
|
||||||
@ -489,7 +489,11 @@ class MainDisplay(DisplayWidget):
|
|||||||
self.footer(serviceItem.foot_text)
|
self.footer(serviceItem.foot_text)
|
||||||
# if was hidden keep it hidden
|
# if was hidden keep it hidden
|
||||||
if self.hideMode and self.isLive:
|
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
|
# display hidden for video end we have a new item so must be shown
|
||||||
if self.videoHide and self.isLive:
|
if self.videoHide and self.isLive:
|
||||||
self.videoHide = False
|
self.videoHide = False
|
||||||
|
@ -469,7 +469,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
actionList = ActionList()
|
actionList = ActionList()
|
||||||
|
|
||||||
def __init__(self, screens, clipboard):
|
def __init__(self, screens, clipboard, arguments):
|
||||||
"""
|
"""
|
||||||
This constructor sets up the interface, the various managers, and the
|
This constructor sets up the interface, the various managers, and the
|
||||||
plugins.
|
plugins.
|
||||||
@ -477,6 +477,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
QtGui.QMainWindow.__init__(self)
|
QtGui.QMainWindow.__init__(self)
|
||||||
self.screens = screens
|
self.screens = screens
|
||||||
self.clipboard = clipboard
|
self.clipboard = clipboard
|
||||||
|
self.arguments = arguments
|
||||||
# Set up settings sections for the main application
|
# Set up settings sections for the main application
|
||||||
# (not for use by plugins)
|
# (not for use by plugins)
|
||||||
self.uiSettingsSection = u'user interface'
|
self.uiSettingsSection = u'user interface'
|
||||||
@ -660,7 +661,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
if self.liveController.display.isVisible():
|
if self.liveController.display.isVisible():
|
||||||
self.liveController.display.setFocus()
|
self.liveController.display.setFocus()
|
||||||
self.activateWindow()
|
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',
|
self.generalSettingsSection + u'/auto open',
|
||||||
QtCore.QVariant(False)).toBool():
|
QtCore.QVariant(False)).toBool():
|
||||||
self.ServiceManagerContents.loadLastFile()
|
self.ServiceManagerContents.loadLastFile()
|
||||||
|
@ -33,12 +33,12 @@ from openlp.core.ui.printservicedialog import Ui_PrintServiceDialog, ZoomSize
|
|||||||
|
|
||||||
class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||||
|
|
||||||
def __init__(self, parent, serviceManager):
|
def __init__(self, mainWindow, serviceManager):
|
||||||
"""
|
"""
|
||||||
Constructor
|
Constructor
|
||||||
"""
|
"""
|
||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, mainWindow)
|
||||||
self.parent = parent
|
self.mainWindow = mainWindow
|
||||||
self.serviceManager = serviceManager
|
self.serviceManager = serviceManager
|
||||||
self.printer = QtGui.QPrinter()
|
self.printer = QtGui.QPrinter()
|
||||||
self.printDialog = QtGui.QPrintDialog(self.printer, self)
|
self.printDialog = QtGui.QPrintDialog(self.printer, self)
|
||||||
@ -134,9 +134,12 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
item.notes.replace(u'\n', u'<br />'))
|
item.notes.replace(u'\n', u'<br />'))
|
||||||
# Add play length of media files.
|
# Add play length of media files.
|
||||||
if item.is_media() and self.metaDataCheckBox.isChecked():
|
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(
|
text += u'<p><strong>%s</strong> %s</p>' % (translate(
|
||||||
'OpenLP.ServiceManager', u'Playing time:'),
|
'OpenLP.ServiceManager', u'Playing time:'),
|
||||||
unicode(datetime.timedelta(seconds=item.media_length)))
|
unicode(datetime.timedelta(seconds=tme)))
|
||||||
if self.footerTextEdit.toPlainText():
|
if self.footerTextEdit.toPlainText():
|
||||||
text += u'<h4>%s</h4>%s' % (translate('OpenLP.ServiceManager',
|
text += u'<h4>%s</h4>%s' % (translate('OpenLP.ServiceManager',
|
||||||
u'Custom Service Notes:'), self.footerTextEdit.toPlainText())
|
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
|
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):
|
def copyHtmlText(self):
|
||||||
"""
|
"""
|
||||||
Copies the display text to the clipboard as Html
|
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):
|
def printServiceOrder(self):
|
||||||
"""
|
"""
|
||||||
|
@ -141,4 +141,3 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
|
|||||||
else:
|
else:
|
||||||
self.upButton.setEnabled(True)
|
self.upButton.setEnabled(True)
|
||||||
self.deleteButton.setEnabled(True)
|
self.deleteButton.setEnabled(True)
|
||||||
|
|
||||||
|
@ -231,13 +231,15 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
QtCore.QObject.connect(self.themeComboBox,
|
QtCore.QObject.connect(self.themeComboBox,
|
||||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
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.QObject.connect(self.serviceManagerList,
|
||||||
QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
|
QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
|
||||||
QtCore.QObject.connect(self.serviceManagerList,
|
QtCore.QObject.connect(self.serviceManagerList,
|
||||||
QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
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.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
@ -561,6 +563,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
self.newFile()
|
self.newFile()
|
||||||
for item in items:
|
for item in items:
|
||||||
serviceItem = ServiceItem()
|
serviceItem = ServiceItem()
|
||||||
|
serviceItem.from_service = True
|
||||||
serviceItem.render_manager = self.mainwindow.renderManager
|
serviceItem.render_manager = self.mainwindow.renderManager
|
||||||
serviceItem.set_from_service(item, self.servicePath)
|
serviceItem.set_from_service(item, self.servicePath)
|
||||||
self.validateItem(serviceItem)
|
self.validateItem(serviceItem)
|
||||||
@ -585,6 +588,21 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
message=translate('OpenLP.ServiceManager',
|
message=translate('OpenLP.ServiceManager',
|
||||||
'File could not be opened because it is corrupt.'))
|
'File could not be opened because it is corrupt.'))
|
||||||
log.exception(u'Problem loading service file %s' % fileName)
|
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:
|
finally:
|
||||||
if fileTo:
|
if fileTo:
|
||||||
fileTo.close()
|
fileTo.close()
|
||||||
@ -658,10 +676,6 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
item = self.findServiceItem()[0]
|
item = self.findServiceItem()[0]
|
||||||
self.startTimeForm.item = self.serviceItems[item]
|
self.startTimeForm.item = self.serviceItems[item]
|
||||||
if self.startTimeForm.exec_():
|
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)
|
self.repaintServiceList(item, -1)
|
||||||
|
|
||||||
def onServiceItemEditForm(self):
|
def onServiceItemEditForm(self):
|
||||||
@ -672,6 +686,19 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
self.addServiceItem(self.serviceItemEditForm.getServiceItem(),
|
self.addServiceItem(self.serviceItemEditForm.getServiceItem(),
|
||||||
replace=True, expand=self.serviceItems[item][u'expanded'])
|
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):
|
def nextItem(self):
|
||||||
"""
|
"""
|
||||||
Called by the SlideController to select the next service item.
|
Called by the SlideController to select the next service item.
|
||||||
@ -1027,6 +1054,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
if expand is None:
|
if expand is None:
|
||||||
expand = self.expandTabs
|
expand = self.expandTabs
|
||||||
item.render()
|
item.render()
|
||||||
|
item.from_service = True
|
||||||
if replace:
|
if replace:
|
||||||
sitem, child = self.findServiceItem()
|
sitem, child = self.findServiceItem()
|
||||||
item.merge(self.serviceItems[sitem][u'service_item'])
|
item.merge(self.serviceItems[sitem][u'service_item'])
|
||||||
@ -1081,11 +1109,24 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
else:
|
else:
|
||||||
return self.serviceItems[item][u'service_item']
|
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
|
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()
|
item, child = self.findServiceItem()
|
||||||
|
if row != -1:
|
||||||
|
child = row
|
||||||
if self.serviceItems[item][u'service_item'].is_valid:
|
if self.serviceItems[item][u'service_item'].is_valid:
|
||||||
self.mainwindow.liveController.addServiceManagerItem(
|
self.mainwindow.liveController.addServiceManagerItem(
|
||||||
self.serviceItems[item][u'service_item'], child)
|
self.serviceItems[item][u'service_item'], child)
|
||||||
|
@ -185,7 +185,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.delaySpinBox.setMinimum(1)
|
self.delaySpinBox.setMinimum(1)
|
||||||
self.delaySpinBox.setMaximum(180)
|
self.delaySpinBox.setMaximum(180)
|
||||||
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
||||||
self.delaySpinBox.setSuffix(UiStrings.S)
|
self.delaySpinBox.setSuffix(UiStrings.Seconds)
|
||||||
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
||||||
'Delay between slides in seconds'))
|
'Delay between slides in seconds'))
|
||||||
else:
|
else:
|
||||||
@ -1014,8 +1014,12 @@ class SlideController(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
row = self.previewListWidget.currentRow()
|
row = self.previewListWidget.currentRow()
|
||||||
if row > -1 and row < self.previewListWidget.rowCount():
|
if row > -1 and row < self.previewListWidget.rowCount():
|
||||||
self.parent.liveController.addServiceManagerItem(
|
if self.serviceItem.from_service:
|
||||||
self.serviceItem, row)
|
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):
|
def onMediaStart(self, item):
|
||||||
"""
|
"""
|
||||||
|
@ -32,39 +32,90 @@ from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box
|
|||||||
class Ui_StartTimeDialog(object):
|
class Ui_StartTimeDialog(object):
|
||||||
def setupUi(self, StartTimeDialog):
|
def setupUi(self, StartTimeDialog):
|
||||||
StartTimeDialog.setObjectName(u'StartTimeDialog')
|
StartTimeDialog.setObjectName(u'StartTimeDialog')
|
||||||
StartTimeDialog.resize(300, 10)
|
StartTimeDialog.resize(350, 10)
|
||||||
self.dialogLayout = QtGui.QGridLayout(StartTimeDialog)
|
self.dialogLayout = QtGui.QGridLayout(StartTimeDialog)
|
||||||
self.dialogLayout.setObjectName(u'dialogLayout')
|
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 = QtGui.QLabel(StartTimeDialog)
|
||||||
self.hourLabel.setObjectName("hourLabel")
|
self.hourLabel.setObjectName(u'hourLabel')
|
||||||
self.dialogLayout.addWidget(self.hourLabel, 0, 0, 1, 1)
|
self.dialogLayout.addWidget(self.hourLabel, 1, 0, 1, 1)
|
||||||
self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||||
self.hourSpinBox.setObjectName("hourSpinBox")
|
self.hourSpinBox.setObjectName(u'hourSpinBox')
|
||||||
self.dialogLayout.addWidget(self.hourSpinBox, 0, 1, 1, 1)
|
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 = QtGui.QLabel(StartTimeDialog)
|
||||||
self.minuteLabel.setObjectName("minuteLabel")
|
self.minuteLabel.setObjectName(u'minuteLabel')
|
||||||
self.dialogLayout.addWidget(self.minuteLabel, 1, 0, 1, 1)
|
self.dialogLayout.addWidget(self.minuteLabel, 2, 0, 1, 1)
|
||||||
self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||||
self.minuteSpinBox.setObjectName("minuteSpinBox")
|
self.minuteSpinBox.setObjectName(u'minuteSpinBox')
|
||||||
self.dialogLayout.addWidget(self.minuteSpinBox, 1, 1, 1, 1)
|
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 = QtGui.QLabel(StartTimeDialog)
|
||||||
self.secondLabel.setObjectName("secondLabel")
|
self.secondLabel.setObjectName(u'secondLabel')
|
||||||
self.dialogLayout.addWidget(self.secondLabel, 2, 0, 1, 1)
|
self.dialogLayout.addWidget(self.secondLabel, 3, 0, 1, 1)
|
||||||
self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||||
self.secondSpinBox.setObjectName("secondSpinBox")
|
self.secondSpinBox.setObjectName(u'secondSpinBox')
|
||||||
self.dialogLayout.addWidget(self.secondSpinBox, 2, 1, 1, 1)
|
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.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.retranslateUi(StartTimeDialog)
|
||||||
self.setMaximumHeight(self.sizeHint().height())
|
self.setMaximumHeight(self.sizeHint().height())
|
||||||
QtCore.QMetaObject.connectSlotsByName(StartTimeDialog)
|
QtCore.QMetaObject.connectSlotsByName(StartTimeDialog)
|
||||||
|
|
||||||
def retranslateUi(self, StartTimeDialog):
|
def retranslateUi(self, StartTimeDialog):
|
||||||
self.setWindowTitle(translate('OpenLP.StartTimeForm',
|
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.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.minuteLabel.setText(translate('OpenLP.StartTimeForm', 'Minutes:'))
|
||||||
self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:'))
|
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 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):
|
class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
||||||
"""
|
"""
|
||||||
The exception dialog
|
The exception dialog
|
||||||
@ -40,13 +43,51 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
|||||||
"""
|
"""
|
||||||
Run the Dialog with correct heading.
|
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
|
hours = seconds / 3600
|
||||||
seconds -= 3600 * hours
|
seconds -= 3600 * hours
|
||||||
minutes = seconds / 60
|
minutes = seconds / 60
|
||||||
seconds -= 60 * minutes
|
seconds -= 60 * minutes
|
||||||
self.hourSpinBox.setValue(hours)
|
return hours, minutes, seconds
|
||||||
self.minuteSpinBox.setValue(minutes)
|
|
||||||
self.secondSpinBox.setValue(seconds)
|
|
||||||
return QtGui.QDialog.exec_(self)
|
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class LanguageManager(object):
|
|||||||
"""
|
"""
|
||||||
Retrieve a saved language to use from settings
|
Retrieve a saved language to use from settings
|
||||||
"""
|
"""
|
||||||
settings = QtCore.QSettings(u'OpenLP', u'OpenLP')
|
settings = QtCore.QSettings()
|
||||||
language = unicode(settings.value(
|
language = unicode(settings.value(
|
||||||
u'general/language', QtCore.QVariant(u'[en]')).toString())
|
u'general/language', QtCore.QVariant(u'[en]')).toString())
|
||||||
log.info(u'Language file: \'%s\' Loaded from conf file' % language)
|
log.info(u'Language file: \'%s\' Loaded from conf file' % language)
|
||||||
|
@ -112,7 +112,7 @@ class AlertsTab(SettingsTab):
|
|||||||
self.FontSizeSpinBox.setSuffix(UiStrings.FontSizePtUnit)
|
self.FontSizeSpinBox.setSuffix(UiStrings.FontSizePtUnit)
|
||||||
self.TimeoutLabel.setText(
|
self.TimeoutLabel.setText(
|
||||||
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
||||||
self.TimeoutSpinBox.setSuffix(UiStrings.S)
|
self.TimeoutSpinBox.setSuffix(UiStrings.Seconds)
|
||||||
self.PreviewGroupBox.setTitle(UiStrings.Preview)
|
self.PreviewGroupBox.setTitle(UiStrings.Preview)
|
||||||
self.FontPreview.setText(UiStrings.OLPV2)
|
self.FontPreview.setText(UiStrings.OLPV2)
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog):
|
|||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
# Connecting signals and slots
|
# Connecting signals and slots
|
||||||
QtCore.QObject.connect(self.splitButton,
|
QtCore.QObject.connect(self.splitButton,
|
||||||
QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed)
|
QtCore.SIGNAL(u'clicked()'), self.onSplitButtonPressed)
|
||||||
|
|
||||||
def setText(self, text):
|
def setText(self, text):
|
||||||
"""
|
"""
|
||||||
|
@ -93,7 +93,6 @@ window.OpenLP = {
|
|||||||
},
|
},
|
||||||
setSlide: function (event) {
|
setSlide: function (event) {
|
||||||
var slide = OpenLP.getElement(event);
|
var slide = OpenLP.getElement(event);
|
||||||
console.log(slide);
|
|
||||||
var id = slide.attr("value");
|
var id = slide.attr("value");
|
||||||
var text = JSON.stringify({"request": {"id": id}});
|
var text = JSON.stringify({"request": {"id": id}});
|
||||||
$.getJSON(
|
$.getJSON(
|
||||||
|
@ -269,6 +269,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
if index is None:
|
if index is None:
|
||||||
index = VerseType.Other
|
index = VerseType.Other
|
||||||
verse[0][u'type'] = VerseType.Tags[index]
|
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'])
|
verse_def = u'%s%s' % (verse[0][u'type'], verse[0][u'label'])
|
||||||
item = QtGui.QTableWidgetItem(verse[1])
|
item = QtGui.QTableWidgetItem(verse[1])
|
||||||
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
|
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
|
||||||
|
@ -30,15 +30,16 @@ import chardet
|
|||||||
import codecs
|
import codecs
|
||||||
|
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import translate
|
||||||
|
from openlp.plugins.songs.lib import VerseType
|
||||||
from songimport import SongImport
|
from songimport import SongImport
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
class CCLIFileImport(SongImport):
|
class CCLIFileImport(SongImport):
|
||||||
"""
|
"""
|
||||||
The :class:`CCLIFileImport` class provides OpenLP with the ability to
|
The :class:`CCLIFileImport` class provides OpenLP with the ability to import
|
||||||
import CCLI SongSelect song files in both .txt and .usr formats.
|
CCLI SongSelect song files in both .txt and .usr formats. See
|
||||||
See http://www.ccli.com/ for more details.
|
`<http://www.ccli.com/>`_ for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, manager, **kwargs):
|
def __init__(self, manager, **kwargs):
|
||||||
@ -55,7 +56,7 @@ class CCLIFileImport(SongImport):
|
|||||||
|
|
||||||
def do_import(self):
|
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')
|
log.debug(u'Starting CCLI File Import')
|
||||||
song_total = len(self.import_source)
|
song_total = len(self.import_source)
|
||||||
@ -67,6 +68,7 @@ class CCLIFileImport(SongImport):
|
|||||||
(song_count, song_total))
|
(song_count, song_total))
|
||||||
filename = unicode(filename)
|
filename = unicode(filename)
|
||||||
log.debug(u'Importing CCLI File: %s', filename)
|
log.debug(u'Importing CCLI File: %s', filename)
|
||||||
|
self.set_defaults()
|
||||||
lines = []
|
lines = []
|
||||||
if os.path.isfile(filename):
|
if os.path.isfile(filename):
|
||||||
detect_file = open(filename, u'r')
|
detect_file = open(filename, u'r')
|
||||||
@ -81,12 +83,10 @@ class CCLIFileImport(SongImport):
|
|||||||
lines = infile.readlines()
|
lines = infile.readlines()
|
||||||
ext = os.path.splitext(filename)[1]
|
ext = os.path.splitext(filename)[1]
|
||||||
if ext.lower() == u'.usr':
|
if ext.lower() == u'.usr':
|
||||||
log.info(u'SongSelect .usr format file found %s: ',
|
log.info(u'SongSelect .usr format file found: %s', filename)
|
||||||
filename)
|
|
||||||
self.do_import_usr_file(lines)
|
self.do_import_usr_file(lines)
|
||||||
elif ext.lower() == u'.txt':
|
elif ext.lower() == u'.txt':
|
||||||
log.info(u'SongSelect .txt format file found %s: ',
|
log.info(u'SongSelect .txt format file found: %s', filename)
|
||||||
filename)
|
|
||||||
self.do_import_txt_file(lines)
|
self.do_import_txt_file(lines)
|
||||||
else:
|
else:
|
||||||
log.info(u'Extension %s is not valid', filename)
|
log.info(u'Extension %s is not valid', filename)
|
||||||
@ -97,9 +97,8 @@ class CCLIFileImport(SongImport):
|
|||||||
|
|
||||||
def do_import_usr_file(self, textList):
|
def do_import_usr_file(self, textList):
|
||||||
"""
|
"""
|
||||||
The :func:`do_import_usr_file` method provides OpenLP
|
The :func:`do_import_usr_file` method provides OpenLP with the ability
|
||||||
with the ability to import CCLI SongSelect songs in
|
to import CCLI SongSelect songs in *USR* file format.
|
||||||
*USR* file format
|
|
||||||
|
|
||||||
``textList``
|
``textList``
|
||||||
An array of strings containing the usr file content.
|
An array of strings containing the usr file content.
|
||||||
@ -108,35 +107,46 @@ class CCLIFileImport(SongImport):
|
|||||||
|
|
||||||
``[File]``
|
``[File]``
|
||||||
USR file format first line
|
USR file format first line
|
||||||
|
|
||||||
``Type=``
|
``Type=``
|
||||||
Indicates the file type
|
Indicates the file type
|
||||||
e.g. *Type=SongSelect Import File*
|
e.g. *Type=SongSelect Import File*
|
||||||
|
|
||||||
``Version=3.0``
|
``Version=3.0``
|
||||||
File format version
|
File format version
|
||||||
|
|
||||||
``[S A2672885]``
|
``[S A2672885]``
|
||||||
Contains the CCLI Song number e.g. *2672885*
|
Contains the CCLI Song number e.g. *2672885*
|
||||||
|
|
||||||
``Title=``
|
``Title=``
|
||||||
Contains the song title (e.g. *Title=Above All*)
|
Contains the song title (e.g. *Title=Above All*)
|
||||||
|
|
||||||
``Author=``
|
``Author=``
|
||||||
Contains a | delimited list of the song authors
|
Contains a | delimited list of the song authors
|
||||||
e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
|
e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
|
||||||
|
|
||||||
``Copyright=``
|
``Copyright=``
|
||||||
Contains a | delimited list of the song copyrights
|
Contains a | delimited list of the song copyrights
|
||||||
e.g. Copyright=1999 Integrity's Hosanna! Music |
|
e.g. Copyright=1999 Integrity's Hosanna! Music |
|
||||||
LenSongs Publishing (Verwaltet von Gerth Medien
|
LenSongs Publishing (Verwaltet von Gerth Medien
|
||||||
Musikverlag)
|
Musikverlag)
|
||||||
|
|
||||||
``Admin=``
|
``Admin=``
|
||||||
Contains the song administrator
|
Contains the song administrator
|
||||||
e.g. *Admin=Gerth Medien Musikverlag*
|
e.g. *Admin=Gerth Medien Musikverlag*
|
||||||
|
|
||||||
``Themes=``
|
``Themes=``
|
||||||
Contains a /t delimited list of the song themes
|
Contains a /t delimited list of the song themes
|
||||||
e.g. *Themes=Cross/tKingship/tMajesty/tRedeemer*
|
e.g. *Themes=Cross/tKingship/tMajesty/tRedeemer*
|
||||||
|
|
||||||
``Keys=``
|
``Keys=``
|
||||||
Contains the keys in which the music is played??
|
Contains the keys in which the music is played??
|
||||||
e.g. *Keys=A*
|
e.g. *Keys=A*
|
||||||
|
|
||||||
``Fields=``
|
``Fields=``
|
||||||
Contains a list of the songs fields in order /t delimited
|
Contains a list of the songs fields in order /t delimited
|
||||||
e.g. *Fields=Vers 1/tVers 2/tChorus 1/tAndere 1*
|
e.g. *Fields=Vers 1/tVers 2/tChorus 1/tAndere 1*
|
||||||
|
|
||||||
``Words=``
|
``Words=``
|
||||||
Contains the songs various lyrics in order as shown by the
|
Contains the songs various lyrics in order as shown by the
|
||||||
*Fields* description
|
*Fields* description
|
||||||
@ -144,57 +154,60 @@ class CCLIFileImport(SongImport):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
log.debug(u'USR file text: %s', textList)
|
log.debug(u'USR file text: %s', textList)
|
||||||
self.set_defaults()
|
song_author = u''
|
||||||
|
song_topics = u''
|
||||||
for line in textList:
|
for line in textList:
|
||||||
if line.startswith(u'Title='):
|
if line.startswith(u'Title='):
|
||||||
song_name = line[6:].strip()
|
self.title = line[6:].strip()
|
||||||
elif line.startswith(u'Author='):
|
elif line.startswith(u'Author='):
|
||||||
song_author = line[7:].strip()
|
song_author = line[7:].strip()
|
||||||
elif line.startswith(u'Copyright='):
|
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'):
|
elif line.startswith(u'[S A'):
|
||||||
song_ccli = line[4:-3].strip()
|
self.ccli_number = line[4:-3].strip()
|
||||||
elif line.startswith(u'Fields='):
|
elif line.startswith(u'Fields='):
|
||||||
#Fields contain single line indicating verse, chorus, etc,
|
# Fields contain single line indicating verse, chorus, etc,
|
||||||
#/t delimited, same as with words field. store seperately
|
# /t delimited, same as with words field. store seperately
|
||||||
#and process at end.
|
# and process at end.
|
||||||
song_fields = line[7:].strip()
|
song_fields = line[7:].strip()
|
||||||
elif line.startswith(u'Words='):
|
elif line.startswith(u'Words='):
|
||||||
song_words = line[6:].strip()
|
song_words = line[6:].strip()
|
||||||
#Unhandled usr keywords:Type,Version,Admin,Themes,Keys
|
# Unhandled usr keywords: Type, Version, Admin, Keys
|
||||||
#Process Fields and words sections
|
# Process Fields and words sections.
|
||||||
check_first_verse_line = False
|
check_first_verse_line = False
|
||||||
field_list = song_fields.split(u'/t')
|
field_list = song_fields.split(u'/t')
|
||||||
words_list = song_words.split(u'/t')
|
words_list = song_words.split(u'/t')
|
||||||
for counter in range(0, len(field_list)):
|
for counter in range(0, len(field_list)):
|
||||||
if field_list[counter].startswith(u'Ver'):
|
if field_list[counter].startswith(u'Ver'):
|
||||||
verse_type = u'V'
|
verse_type = VerseType.Tags[VerseType.Verse]
|
||||||
elif field_list[counter].startswith(u'Ch'):
|
elif field_list[counter].startswith(u'Ch'):
|
||||||
verse_type = u'C'
|
verse_type = VerseType.Tags[VerseType.Chorus]
|
||||||
elif field_list[counter].startswith(u'Br'):
|
elif field_list[counter].startswith(u'Br'):
|
||||||
verse_type = u'B'
|
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||||
else: #Other
|
else:
|
||||||
verse_type = u'O'
|
verse_type = VerseType.Tags[VerseType.Other]
|
||||||
check_first_verse_line = True
|
check_first_verse_line = True
|
||||||
verse_text = unicode(words_list[counter])
|
verse_text = unicode(words_list[counter])
|
||||||
verse_text = verse_text.replace(u'/n', u'\n')
|
verse_text = verse_text.replace(u'/n', u'\n')
|
||||||
verse_lines = verse_text.split(u'\n', 1)
|
verse_lines = verse_text.split(u'\n', 1)
|
||||||
if check_first_verse_line:
|
if check_first_verse_line:
|
||||||
if verse_lines[0].startswith(u'(PRE-CHORUS'):
|
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])
|
log.debug(u'USR verse PRE-CHORUS: %s', verse_lines[0])
|
||||||
verse_text = verse_lines[1]
|
verse_text = verse_lines[1]
|
||||||
elif verse_lines[0].startswith(u'(BRIDGE'):
|
elif verse_lines[0].startswith(u'(BRIDGE'):
|
||||||
verse_type = u'B'
|
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||||
log.debug(u'USR verse BRIDGE')
|
log.debug(u'USR verse BRIDGE')
|
||||||
verse_text = verse_lines[1]
|
verse_text = verse_lines[1]
|
||||||
elif verse_lines[0].startswith(u'('):
|
elif verse_lines[0].startswith(u'('):
|
||||||
verse_type = u'O'
|
verse_type = VerseType.Tags[VerseType.Other]
|
||||||
verse_text = verse_lines[1]
|
verse_text = verse_lines[1]
|
||||||
if len(verse_text) > 0:
|
if len(verse_text) > 0:
|
||||||
self.add_verse(verse_text, verse_type)
|
self.add_verse(verse_text, verse_type)
|
||||||
check_first_verse_line = False
|
check_first_verse_line = False
|
||||||
#Handle multiple authors
|
# Handle multiple authors
|
||||||
author_list = song_author.split(u'/')
|
author_list = song_author.split(u'/')
|
||||||
if len(author_list) < 2:
|
if len(author_list) < 2:
|
||||||
author_list = song_author.split(u'|')
|
author_list = song_author.split(u'|')
|
||||||
@ -204,16 +217,13 @@ class CCLIFileImport(SongImport):
|
|||||||
self.add_author(u' '.join(reversed(separated)))
|
self.add_author(u' '.join(reversed(separated)))
|
||||||
else:
|
else:
|
||||||
self.add_author(author)
|
self.add_author(author)
|
||||||
self.title = song_name
|
self.topics = [topic.strip() for topic in song_topics.split(u'/t')]
|
||||||
self.copyright = song_copyright
|
|
||||||
self.ccli_number = song_ccli
|
|
||||||
self.finish()
|
self.finish()
|
||||||
|
|
||||||
def do_import_txt_file(self, textList):
|
def do_import_txt_file(self, textList):
|
||||||
"""
|
"""
|
||||||
The :func:`do_import_txt_file` method provides OpenLP
|
The :func:`do_import_txt_file` method provides OpenLP with the ability
|
||||||
with the ability to import CCLI SongSelect songs in
|
to import CCLI SongSelect songs in *TXT* file format.
|
||||||
*TXT* file format
|
|
||||||
|
|
||||||
``textList``
|
``textList``
|
||||||
An array of strings containing the txt file content.
|
An array of strings containing the txt file content.
|
||||||
@ -243,12 +253,10 @@ class CCLIFileImport(SongImport):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
log.debug(u'TXT file text: %s', textList)
|
log.debug(u'TXT file text: %s', textList)
|
||||||
self.set_defaults()
|
|
||||||
line_number = 0
|
line_number = 0
|
||||||
check_first_verse_line = False
|
check_first_verse_line = False
|
||||||
verse_text = u''
|
verse_text = u''
|
||||||
song_comments = u''
|
song_author = u''
|
||||||
song_copyright = u''
|
|
||||||
verse_start = False
|
verse_start = False
|
||||||
for line in textList:
|
for line in textList:
|
||||||
clean_line = line.strip()
|
clean_line = line.strip()
|
||||||
@ -258,12 +266,12 @@ class CCLIFileImport(SongImport):
|
|||||||
elif verse_start:
|
elif verse_start:
|
||||||
if verse_text:
|
if verse_text:
|
||||||
self.add_verse(verse_text, verse_type)
|
self.add_verse(verse_text, verse_type)
|
||||||
verse_text = ''
|
verse_text = u''
|
||||||
verse_start = False
|
verse_start = False
|
||||||
else:
|
else:
|
||||||
#line_number=0, song title
|
#line_number=0, song title
|
||||||
if line_number == 0:
|
if line_number == 0:
|
||||||
song_name = clean_line
|
self.title = clean_line
|
||||||
line_number += 1
|
line_number += 1
|
||||||
#line_number=1, verses
|
#line_number=1, verses
|
||||||
elif line_number == 1:
|
elif line_number == 1:
|
||||||
@ -271,37 +279,37 @@ class CCLIFileImport(SongImport):
|
|||||||
if clean_line.startswith(u'CCLI'):
|
if clean_line.startswith(u'CCLI'):
|
||||||
line_number += 1
|
line_number += 1
|
||||||
ccli_parts = clean_line.split(' ')
|
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:
|
elif not verse_start:
|
||||||
# We have the verse descriptor
|
# 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 len(verse_desc_parts) == 2:
|
||||||
if verse_desc_parts[0].startswith(u'Ver'):
|
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'):
|
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'):
|
elif verse_desc_parts[0].startswith(u'Br'):
|
||||||
verse_type = u'B'
|
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||||
else:
|
else:
|
||||||
#we need to analyse the next line for
|
# we need to analyse the next line for
|
||||||
#verse type, so set flag
|
# verse type, so set flag
|
||||||
verse_type = u'O'
|
verse_type = VerseType.Tags[VerseType.Other]
|
||||||
check_first_verse_line = True
|
check_first_verse_line = True
|
||||||
verse_number = verse_desc_parts[1]
|
verse_number = verse_desc_parts[1]
|
||||||
else:
|
else:
|
||||||
verse_type = u'O'
|
verse_type = VerseType.Tags[VerseType.Other]
|
||||||
verse_number = 1
|
verse_number = 1
|
||||||
verse_start = True
|
verse_start = True
|
||||||
else:
|
else:
|
||||||
#check first line for verse type
|
# check first line for verse type
|
||||||
if check_first_verse_line:
|
if check_first_verse_line:
|
||||||
if line.startswith(u'(PRE-CHORUS'):
|
if line.startswith(u'(PRE-CHORUS'):
|
||||||
verse_type = u'P'
|
verse_type = VerseType.Tags[VerseType.PreChorus]
|
||||||
elif line.startswith(u'(BRIDGE'):
|
elif line.startswith(u'(BRIDGE'):
|
||||||
verse_type = u'B'
|
verse_type = VerseType.Tags[VerseType.Bridge]
|
||||||
# Handle all other misc types
|
# Handle all other misc types
|
||||||
elif line.startswith(u'('):
|
elif line.startswith(u'('):
|
||||||
verse_type = u'O'
|
verse_type = VerseType.Tags[VerseType.Other]
|
||||||
else:
|
else:
|
||||||
verse_text = verse_text + line
|
verse_text = verse_text + line
|
||||||
check_first_verse_line = False
|
check_first_verse_line = False
|
||||||
@ -313,24 +321,19 @@ class CCLIFileImport(SongImport):
|
|||||||
#line_number=2, copyright
|
#line_number=2, copyright
|
||||||
if line_number == 2:
|
if line_number == 2:
|
||||||
line_number += 1
|
line_number += 1
|
||||||
song_copyright = clean_line
|
self.copyright = clean_line
|
||||||
#n=3, authors
|
#n=3, authors
|
||||||
elif line_number == 3:
|
elif line_number == 3:
|
||||||
line_number += 1
|
line_number += 1
|
||||||
song_author = clean_line
|
song_author = clean_line
|
||||||
#line_number=4, comments lines before last line
|
#line_number=4, comments lines before last line
|
||||||
elif (line_number == 4) and \
|
elif line_number == 4 and not clean_line.startswith(u'CCL'):
|
||||||
(not clean_line.startswith(u'CCL')):
|
self.comments += clean_line
|
||||||
song_comments = song_comments + clean_line
|
|
||||||
# split on known separators
|
# split on known separators
|
||||||
author_list = song_author.split(u'/')
|
author_list = song_author.split(u'/')
|
||||||
if len(author_list) < 2:
|
if len(author_list) < 2:
|
||||||
author_list = song_author.split(u'|')
|
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:
|
for author_name in author_list:
|
||||||
self.add_author(author_name.strip())
|
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()
|
self.finish()
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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>
|
<context>
|
||||||
<name>AlertPlugin.AlertForm</name>
|
<name>AlertPlugin.AlertForm</name>
|
||||||
<message>
|
<message>
|
||||||
@ -696,7 +697,7 @@ demand and thus an internet connection is required.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/custom/customplugin.py" line="59"/>
|
<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>
|
<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>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -717,7 +718,7 @@ demand and thus an internet connection is required.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="106"/>
|
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="106"/>
|
||||||
<source>Edit Custom Slides</source>
|
<source>Edit Custom Slides</source>
|
||||||
<translation>Speciális diák szerkesztése</translation>
|
<translation>Speciális diasor szerkesztése</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="108"/>
|
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="108"/>
|
||||||
@ -841,7 +842,7 @@ demand and thus an internet connection is required.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/images/imageplugin.py" line="44"/>
|
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/images/imageplugin.py" line="72"/>
|
<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>
|
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ő
|
<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/
|
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
|
„Úgy szerette Isten a világot, hogy
|
||||||
egyszülött Fiát adta oda, hogy egyetlen
|
egyszülött Fiát adta oda, hogy egyetlen
|
||||||
benne hívő se vesszen el, hanem
|
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
|
É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
|
Istené, Atyánké, mert elküldte a Fiát, hogy meghaljon
|
||||||
a kereszten, megszabadítva bennünket a bűntől. Ezért
|
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>
|
tett minket szabaddá.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@ -1245,14 +1246,12 @@ Tinggaard, Frode Woldsund</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/aboutdialog.py" line="231"/>
|
<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>
|
<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>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>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/aboutdialog.py" line="236"/>
|
<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>
|
<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>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>
|
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1343,7 +1342,7 @@ Tinggaard, Frode Woldsund</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
|
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
|
||||||
<source>Start tag</source>
|
<source>Start tag</source>
|
||||||
<translation>Kezdő címke</translation>
|
<translation>Nyitó címke</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/displaytagdialog.py" line="137"/>
|
<location filename="openlp/core/ui/displaytagdialog.py" line="137"/>
|
||||||
@ -1358,12 +1357,12 @@ Tinggaard, Frode Woldsund</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
|
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
|
||||||
<source>Tag Id</source>
|
<source>Tag Id</source>
|
||||||
<translation>Címke ID</translation>
|
<translation>ID</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/displaytagdialog.py" line="147"/>
|
<location filename="openlp/core/ui/displaytagdialog.py" line="147"/>
|
||||||
<source>Start HTML</source>
|
<source>Start HTML</source>
|
||||||
<translation>Kezdő HTML</translation>
|
<translation>Nyitó HTML</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/displaytagdialog.py" line="149"/>
|
<location filename="openlp/core/ui/displaytagdialog.py" line="149"/>
|
||||||
@ -1394,7 +1393,7 @@ Tinggaard, Frode Woldsund</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/exceptiondialog.py" line="102"/>
|
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/exceptiondialog.py" line="97"/>
|
<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"/>
|
<location filename="openlp/core/ui/exceptiondialog.py" line="99"/>
|
||||||
<source>Please enter a description of what you were doing to cause this error
|
<source>Please enter a description of what you were doing to cause this error
|
||||||
(Minimum 20 characters)</source>
|
(Minimum 20 characters)</source>
|
||||||
<translation>Írd le mit tettél, ami a hibát okozta
|
<translation>Írd le mit tettél, ami a hibához vezetett (minimum 20 karakter)</translation>
|
||||||
(minimum 20 karakter)</translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/exceptiondialog.py" line="112"/>
|
<location filename="openlp/core/ui/exceptiondialog.py" line="112"/>
|
||||||
<source>Attach File</source>
|
<source>Attach File</source>
|
||||||
<translation>Csatolt fájl</translation>
|
<translation>Fájl csatolása</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/exceptionform.py" line="171"/>
|
<location filename="openlp/core/ui/exceptionform.py" line="171"/>
|
||||||
@ -1536,7 +1534,7 @@ Version: %s
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimeform.py" line="252"/>
|
<location filename="openlp/core/ui/firsttimeform.py" line="252"/>
|
||||||
<source>Enabling selected plugins...</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="191"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="191"/>
|
||||||
@ -1556,12 +1554,12 @@ Version: %s
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="201"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="201"/>
|
||||||
<source>Activate required Plugins</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="203"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="203"/>
|
||||||
<source>Select the Plugins you wish to use. </source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="205"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="205"/>
|
||||||
@ -1571,7 +1569,7 @@ Version: %s
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="206"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="206"/>
|
||||||
<source>Custom Text</source>
|
<source>Custom Text</source>
|
||||||
<translation>Egyedi szöveg</translation>
|
<translation>Speciális</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="208"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="208"/>
|
||||||
@ -1596,17 +1594,17 @@ Version: %s
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="215"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="215"/>
|
||||||
<source>Allow remote access</source>
|
<source>Allow remote access</source>
|
||||||
<translation>Távvezérlés engedélyezése</translation>
|
<translation>Távvezérlő</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="217"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="217"/>
|
||||||
<source>Monitor Song Usage</source>
|
<source>Monitor Song Usage</source>
|
||||||
<translation>Dalstatisztika monitorozása</translation>
|
<translation>Dalstatisztika</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="219"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="219"/>
|
||||||
<source>Allow Alerts</source>
|
<source>Allow Alerts</source>
|
||||||
<translation>Értesítések engedélyezése</translation>
|
<translation>Értesítések</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="221"/>
|
<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>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="252"/>
|
<location filename="openlp/core/ui/firsttimewizard.py" line="252"/>
|
||||||
<source>Please wait while OpenLP is set up and your data is imported.</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/firsttimewizard.py" line="254"/>
|
<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>
|
<message>
|
||||||
<location filename="openlp/core/ui/generaltab.py" line="229"/>
|
<location filename="openlp/core/ui/generaltab.py" line="229"/>
|
||||||
<source>Slide loop delay:</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/generaltab.py" line="231"/>
|
<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>
|
<context>
|
||||||
<name>OpenLP.LanguageManager</name>
|
<name>OpenLP.LanguageManager</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/utils/languagemanager.py" line="130"/>
|
<location filename="openlp/core/utils/languagemanager.py" line="132"/>
|
||||||
<source>Language</source>
|
<source>Language</source>
|
||||||
<translation>Nyelv</translation>
|
<translation>Nyelv</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<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>
|
<translation>A nyelvi beállítások az OpenLP újraindítása után lépnek érvénybe.</translation>
|
||||||
</message>
|
</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>
|
<context>
|
||||||
<name>OpenLP.MainWindow</name>
|
<name>OpenLP.MainWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="313"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
||||||
<source>&File</source>
|
<source>&File</source>
|
||||||
<translation>&Fájl</translation>
|
<translation>&Fájl</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="314"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
||||||
<source>&Import</source>
|
<source>&Import</source>
|
||||||
<translation>&Importálás</translation>
|
<translation>&Importálás</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
||||||
<source>&Export</source>
|
<source>&Export</source>
|
||||||
<translation>&Exportálás</translation>
|
<translation>&Exportálás</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
||||||
<source>&View</source>
|
<source>&View</source>
|
||||||
<translation>&Nézet</translation>
|
<translation>&Nézet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
||||||
<source>M&ode</source>
|
<source>M&ode</source>
|
||||||
<translation>&Mód</translation>
|
<translation>&Mód</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="320"/>
|
||||||
<source>&Tools</source>
|
<source>&Tools</source>
|
||||||
<translation>&Eszközök</translation>
|
<translation>&Eszközök</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="321"/>
|
||||||
<source>&Settings</source>
|
<source>&Settings</source>
|
||||||
<translation>&Beállítások</translation>
|
<translation>&Beállítások</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
||||||
<source>&Language</source>
|
<source>&Language</source>
|
||||||
<translation>&Nyelv</translation>
|
<translation>&Nyelv</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="322"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="324"/>
|
||||||
<source>&Help</source>
|
<source>&Help</source>
|
||||||
<translation>&Súgó</translation>
|
<translation>&Súgó</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="323"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
||||||
<source>Media Manager</source>
|
<source>Media Manager</source>
|
||||||
<translation>Médiakezelő</translation>
|
<translation>Médiakezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
||||||
<source>Service Manager</source>
|
<source>Service Manager</source>
|
||||||
<translation>Sorrendkezelő</translation>
|
<translation>Sorrendkezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
||||||
<source>Theme Manager</source>
|
<source>Theme Manager</source>
|
||||||
<translation>Témakezelő</translation>
|
<translation>Témakezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="331"/>
|
||||||
<source>&New</source>
|
<source>&New</source>
|
||||||
<translation>&Új</translation>
|
<translation>&Új</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="332"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="334"/>
|
||||||
<source>Ctrl+N</source>
|
<source>Ctrl+N</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="333"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="335"/>
|
||||||
<source>&Open</source>
|
<source>&Open</source>
|
||||||
<translation>Meg&nyitás</translation>
|
<translation>Meg&nyitás</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Open an existing service.</source>
|
||||||
<translation>Meglévő sorrend megnyitása.</translation>
|
<translation>Meglévő sorrend megnyitása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="337"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="339"/>
|
||||||
<source>Ctrl+O</source>
|
<source>Ctrl+O</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="338"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="340"/>
|
||||||
<source>&Save</source>
|
<source>&Save</source>
|
||||||
<translation>&Mentés</translation>
|
<translation>&Mentés</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Save the current service to disk.</source>
|
||||||
<translation>Aktuális sorrend mentése lemezre.</translation>
|
<translation>Aktuális sorrend mentése lemezre.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="342"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="344"/>
|
||||||
<source>Ctrl+S</source>
|
<source>Ctrl+S</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="343"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="345"/>
|
||||||
<source>Save &As...</source>
|
<source>Save &As...</source>
|
||||||
<translation>Mentés má&sként…</translation>
|
<translation>Mentés má&sként…</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Save Service As</source>
|
||||||
<translation>Sorrend mentése másként</translation>
|
<translation>Sorrend mentése másként</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Save the current service under a new name.</source>
|
||||||
<translation>Az aktuális sorrend más néven való mentése.</translation>
|
<translation>Az aktuális sorrend más néven való mentése.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Ctrl+Shift+S</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
||||||
<source>E&xit</source>
|
<source>E&xit</source>
|
||||||
<translation>&Kilépés</translation>
|
<translation>&Kilépés</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
||||||
<source>Quit OpenLP</source>
|
<source>Quit OpenLP</source>
|
||||||
<translation>OpenLP bezárása</translation>
|
<translation>OpenLP bezárása</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="362"/>
|
||||||
<source>Alt+F4</source>
|
<source>Alt+F4</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="366"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
||||||
<source>&Theme</source>
|
<source>&Theme</source>
|
||||||
<translation>&Téma</translation>
|
<translation>&Téma</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="374"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
||||||
<source>&Configure OpenLP...</source>
|
<source>&Configure OpenLP...</source>
|
||||||
<translation>OpenLP &beállítása…</translation>
|
<translation>OpenLP &beállítása…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="378"/>
|
||||||
<source>&Media Manager</source>
|
<source>&Media Manager</source>
|
||||||
<translation>&Médiakezelő</translation>
|
<translation>&Médiakezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle Media Manager</source>
|
||||||
<translation>Médiakezelő átváltása</translation>
|
<translation>Médiakezelő átváltása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle the visibility of the media manager.</source>
|
||||||
<translation>A médiakezelő láthatóságának átváltása.</translation>
|
<translation>A médiakezelő láthatóságának átváltása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="382"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
||||||
<source>F8</source>
|
<source>F8</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="386"/>
|
||||||
<source>&Theme Manager</source>
|
<source>&Theme Manager</source>
|
||||||
<translation>&Témakezelő</translation>
|
<translation>&Témakezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle Theme Manager</source>
|
||||||
<translation>Témakezelő átváltása</translation>
|
<translation>Témakezelő átváltása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle the visibility of the theme manager.</source>
|
||||||
<translation>A témakezelő láthatóságának átváltása.</translation>
|
<translation>A témakezelő láthatóságának átváltása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="390"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
||||||
<source>F10</source>
|
<source>F10</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="394"/>
|
||||||
<source>&Service Manager</source>
|
<source>&Service Manager</source>
|
||||||
<translation>&Sorrendkezelő</translation>
|
<translation>&Sorrendkezelő</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle Service Manager</source>
|
||||||
<translation>Sorrendkezelő átváltása</translation>
|
<translation>Sorrendkezelő átváltása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle the visibility of the service manager.</source>
|
||||||
<translation>A sorrendkezelő láthatóságának átváltása.</translation>
|
<translation>A sorrendkezelő láthatóságának átváltása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="398"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
||||||
<source>F9</source>
|
<source>F9</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="402"/>
|
||||||
<source>&Preview Panel</source>
|
<source>&Preview Panel</source>
|
||||||
<translation>&Előnézet panel</translation>
|
<translation>&Előnézet panel</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle Preview Panel</source>
|
||||||
<translation>Előnézet panel átváltása</translation>
|
<translation>Előnézet panel átváltása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle the visibility of the preview panel.</source>
|
||||||
<translation>Az előnézet panel láthatóságának átváltása.</translation>
|
<translation>Az előnézet panel láthatóságának átváltása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="406"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
||||||
<source>F11</source>
|
<source>F11</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="410"/>
|
||||||
<source>&Live Panel</source>
|
<source>&Live Panel</source>
|
||||||
<translation>&Élő adás panel</translation>
|
<translation>&Élő adás panel</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle Live Panel</source>
|
||||||
<translation>Élő adás panel átváltása</translation>
|
<translation>Élő adás panel átváltása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Toggle the visibility of the live panel.</source>
|
||||||
<translation>Az élő adás panel láthatóságának átváltása.</translation>
|
<translation>Az élő adás panel láthatóságának átváltása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="414"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
||||||
<source>F12</source>
|
<source>F12</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="418"/>
|
||||||
<source>&Plugin List</source>
|
<source>&Plugin List</source>
|
||||||
<translation>&Bővítménylista</translation>
|
<translation>&Bővítménylista</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>List the Plugins</source>
|
||||||
<translation>Bővítmények listája</translation>
|
<translation>Bővítmények listája</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="420"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
||||||
<source>Alt+F7</source>
|
<source>Alt+F7</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
||||||
<source>&User Guide</source>
|
<source>&User Guide</source>
|
||||||
<translation>&Felhasználói kézikönyv</translation>
|
<translation>&Felhasználói kézikönyv</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="426"/>
|
||||||
<source>&About</source>
|
<source>&About</source>
|
||||||
<translation>&Névjegy</translation>
|
<translation>&Névjegy</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>More information about OpenLP</source>
|
||||||
<translation>További információ az OpenLP-ről</translation>
|
<translation>További információ az OpenLP-ről</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="427"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
||||||
<source>Ctrl+F1</source>
|
<source>Ctrl+F1</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="431"/>
|
||||||
<source>&Online Help</source>
|
<source>&Online Help</source>
|
||||||
<translation>&Online súgó</translation>
|
<translation>&Online súgó</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="434"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="433"/>
|
||||||
<source>&Web Site</source>
|
<source>&Web Site</source>
|
||||||
<translation>&Weboldal</translation>
|
<translation>&Weboldal</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Use the system language, if available.</source>
|
||||||
<translation>Rendszernyelv használata, ha elérhető.</translation>
|
<translation>Rendszernyelv használata, ha elérhető.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Set the interface language to %s</source>
|
||||||
<translation>A felhasználói felület nyelvének átváltása erre: %s</translation>
|
<translation>A felhasználói felület nyelvének átváltása erre: %s</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="444"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="443"/>
|
||||||
<source>Add &Tool...</source>
|
<source>Add &Tool...</source>
|
||||||
<translation>&Eszköz hozzáadása…</translation>
|
<translation>&Eszköz hozzáadása…</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Add an application to the list of tools.</source>
|
||||||
<translation>Egy alkalmazás hozzáadása az eszközök listához.</translation>
|
<translation>Egy alkalmazás hozzáadása az eszközök listához.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="452"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="451"/>
|
||||||
<source>&Default</source>
|
<source>&Default</source>
|
||||||
<translation>&Alapértelmezett</translation>
|
<translation>&Alapértelmezett</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Set the view mode back to the default.</source>
|
||||||
<translation>Nézetmód visszaállítása az alapértelmezettre.</translation>
|
<translation>Nézetmód visszaállítása az alapértelmezettre.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="456"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="455"/>
|
||||||
<source>&Setup</source>
|
<source>&Setup</source>
|
||||||
<translation>&Szerkesztés</translation>
|
<translation>&Szerkesztés</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Set the view mode to Setup.</source>
|
||||||
<translation>Nézetmód váltása a Beállítás módra.</translation>
|
<translation>Nézetmód váltása a Beállítás módra.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="459"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="458"/>
|
||||||
<source>&Live</source>
|
<source>&Live</source>
|
||||||
<translation>&Élő adás</translation>
|
<translation>&Élő adás</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Set the view mode to Live.</source>
|
||||||
<translation>Nézetmód váltása a Élő módra.</translation>
|
<translation>Nézetmód váltása a Élő módra.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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).
|
<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>
|
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>
|
A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>OpenLP Version Updated</source>
|
||||||
<translation>OpenLP verziófrissítés</translation>
|
<translation>OpenLP verziófrissítés</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>OpenLP Main Display Blanked</source>
|
||||||
<translation>Sötét OpenLP fő képernyő</translation>
|
<translation>Sötét OpenLP fő képernyő</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>The Main Display has been blanked out</source>
|
||||||
<translation>A fő képernyő el lett sötétítve</translation>
|
<translation>A fő képernyő el lett sötétítve</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Default Theme: %s</source>
|
||||||
<translation>Alapértelmezett téma: %s</translation>
|
<translation>Alapértelmezett téma: %s</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="372"/>
|
||||||
<source>Configure &Shortcuts...</source>
|
<source>Configure &Shortcuts...</source>
|
||||||
<translation>&Gyorsbillentyűk beállítása…</translation>
|
<translation>&Gyorsbillentyűk beállítása…</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -2219,42 +2217,42 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translatio
|
|||||||
<translation>Magyar</translation>
|
<translation>Magyar</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Print the current Service Order.</source>
|
||||||
<translation>Az aktuális sorrend nyomtatása.</translation>
|
<translation>Az aktuális sorrend nyomtatása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="354"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
||||||
<source>Ctrl+P</source>
|
<source>Ctrl+P</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="440"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="439"/>
|
||||||
<source>&Autodetect</source>
|
<source>&Autodetect</source>
|
||||||
<translation>&Automatikus felismerés</translation>
|
<translation>&Automatikus felismerés</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Open &Data Folder...</source>
|
||||||
<translation>&Adatmappa megnyitása…</translation>
|
<translation>&Adatmappa megnyitása…</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<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>
|
<translation>A dalokat, Bibliákat és egyéb adatokat tartalmazó mappa megnyitása.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/mainwindow.py" line="842"/>
|
<location filename="openlp/core/ui/mainwindow.py" line="832"/>
|
||||||
<source>Close OpenLP</source>
|
<source>Close OpenLP</source>
|
||||||
<translation>OpenLP bezárása</translation>
|
<translation>OpenLP bezárása</translation>
|
||||||
</message>
|
</message>
|
||||||
<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>
|
<source>Are you sure you want to close OpenLP?</source>
|
||||||
<translation>Biztosan bezárható az OpenLP?</translation>
|
<translation>Biztosan bezárható az OpenLP?</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -3158,7 +3156,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="448"/>
|
<location filename="openlp/core/ui/themewizard.py" line="448"/>
|
||||||
<source>Define the font and display characteristics for the Display text</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="473"/>
|
<location filename="openlp/core/ui/themewizard.py" line="473"/>
|
||||||
@ -3203,7 +3201,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="470"/>
|
<location filename="openlp/core/ui/themewizard.py" line="470"/>
|
||||||
<source>Define the font and display characteristics for the Footer text</source>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="477"/>
|
<location filename="openlp/core/ui/themewizard.py" line="477"/>
|
||||||
@ -3293,7 +3291,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="530"/>
|
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/core/ui/themewizard.py" line="534"/>
|
<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>
|
<message>
|
||||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="367"/>
|
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="395"/>
|
<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>
|
<message>
|
||||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="426"/>
|
<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>
|
<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>
|
||||||
<message>
|
<message>
|
||||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="561"/>
|
<location filename="openlp/plugins/songs/forms/editsongform.py" line="561"/>
|
||||||
|
@ -394,10 +394,7 @@ if __name__ == '__main__':
|
|||||||
--template Info.plist.master \
|
--template Info.plist.master \
|
||||||
--expandto %(target_directory)s/Info.plist' \
|
--expandto %(target_directory)s/Info.plist' \
|
||||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
||||||
os.system('python expander.py --config %(config_file)s \
|
os.system('python get_version.py > .version')
|
||||||
--template version.master \
|
|
||||||
--expandto %(target_directory)s/.version' \
|
|
||||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
|
||||||
|
|
||||||
# prepare variables
|
# prepare variables
|
||||||
app_name_lower = settings['openlp_appname'].lower()
|
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_appname = OpenLP
|
||||||
openlp_dmgname = OpenLP-1.9.4-bzrXXXX
|
openlp_dmgname = OpenLP-1.9.4-bzrXXXX
|
||||||
openlp_version = XXXX
|
openlp_version = XXXX
|
||||||
openlp_full_version = 1.9.4-latest
|
|
||||||
openlp_basedir = /Users/openlp/trunk
|
openlp_basedir = /Users/openlp/trunk
|
||||||
openlp_icon_file = openlp-logo-with-text.icns
|
openlp_icon_file = openlp-logo-with-text.icns
|
||||||
openlp_dmg_icon_file = openlp-logo-420x420.png
|
openlp_dmg_icon_file = openlp-logo-420x420.png
|
||||||
|
@ -1 +0,0 @@
|
|||||||
%(openlp_full_version)s
|
|
Loading…
Reference in New Issue
Block a user