r1457
@ -1,112 +1,112 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
set SPHINXBUILD=sphinx-build
|
||||
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (build\*) do rmdir /q /s %%i
|
||||
del /q /s build\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in build/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in build/qthelp, like this:
|
||||
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in build/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
||||
echo.
|
||||
echo.The overview file is in build/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in build/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in build/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
set SPHINXBUILD=sphinx-build
|
||||
set ALLSPHINXOPTS=-d build/doctrees %SPHINXOPTS% source
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (build\*) do rmdir /q /s %%i
|
||||
del /q /s build\*
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% build/html
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% build/dirhtml
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in build/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% build/pickle
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% build/json
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% build/htmlhelp
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in build/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% build/qthelp
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in build/qthelp, like this:
|
||||
echo.^> qcollectiongenerator build\qthelp\OpenLP.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile build\qthelp\OpenLP.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% build/latex
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in build/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% build/changes
|
||||
echo.
|
||||
echo.The overview file is in build/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% build/linkcheck
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in build/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% build/doctest
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in build/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
|
57
documentation/manual/source/alert.rst
Normal file
@ -0,0 +1,57 @@
|
||||
=====
|
||||
Alert
|
||||
=====
|
||||
|
||||
From time to time it may be necessary to display a small unobtrusive message to
|
||||
the congregation. In OpenLP this is known as an `Alert`. Examples could be a car
|
||||
with the headlights left on, a parent needed in nursery, or anything else
|
||||
somebody may need notified about. This is easily accomplished using the Alert,
|
||||
which is accessible from the top Menu under :menuselection:`Tools --> Alert`.
|
||||
|
||||
.. image:: pics/alert.png
|
||||
|
||||
:guilabel:`Alert text:` Enter the message you want displayed in this box.
|
||||
|
||||
:guilabel:`Parameter:` This box is used for words you want to insert into the
|
||||
alert text.
|
||||
|
||||
You will add the Parameter text into the alert text using “<>” (without
|
||||
quotations). Anywhere in the Alert text that you add these two symbols, <> side
|
||||
by side, will insert any text you have in the parameter box into the Alert
|
||||
message.
|
||||
|
||||
Examples of use
|
||||
---------------
|
||||
|
||||
:guilabel:`Alert text:` The owner of the vehicle with license plate number <>
|
||||
your lights are on.
|
||||
|
||||
:guilabel:`Parameter:` HNN432
|
||||
|
||||
These two settings will display like this:
|
||||
|
||||
The owner of the vehicle with the license plate number HNN432 your lights are on.
|
||||
|
||||
You could also reverse this example:
|
||||
|
||||
:guilabel:`Alert text:` HNN432 <>
|
||||
|
||||
:guilabel:`Parameter:` left their lights on.
|
||||
|
||||
`Will display like this:` HNN432 left their lights on.
|
||||
|
||||
If you use the same alerts on a regular basis, Save your Alert and you will have
|
||||
access to the alert with a click of the mouse. You may also click on `New` to
|
||||
make a new alert or `Delete` an alert you do not need.
|
||||
|
||||
When you are ready to Display your Alert you have two options. Clicking on
|
||||
Display will display the Alert and the Alert Message window will remain open.
|
||||
Clicking Display & Close will display the alert and close the Alert Message
|
||||
window.
|
||||
|
||||
All details of the display, font, color, size and position are adjusted from the
|
||||
top Menu item :menuselection:`Settings --> Configure OpenLP`, Alert tab and the
|
||||
instructions here. :doc:`configure`
|
||||
|
||||
**Please note:** Alert Message is a Plugin that needs to be Active in the Plugin
|
||||
List for use.
|
@ -5,6 +5,8 @@ Bibles
|
||||
Managing Bibles in OpenLP is a relatively simple process. There are also
|
||||
converters provided to get data from other formats into OpenLP.
|
||||
|
||||
.. _bibleimporter:
|
||||
|
||||
Bible Importer
|
||||
==============
|
||||
|
||||
@ -60,11 +62,12 @@ Importing OSIS Bibles
|
||||
|
||||
**About OSIS Formatted Bibles**
|
||||
|
||||
OSIS is a format intended to provide a common format for Bibles. More
|
||||
information can be found out here: http://www.bibletechnologies.net/
|
||||
The OSIS XML standard was designed to provide a common format for distribution
|
||||
of electronic Bibles. More information can be found out at the `Bible Technologies website
|
||||
<http://www.bibletechnologies.net/>`_.
|
||||
|
||||
If you have any software installed that is part of the Sword Project
|
||||
http://www.crosswire.org/sword/index.jsp it can be easily converted.
|
||||
If you have any software installed that is part of the `Sword Project
|
||||
<http://www.crosswire.org/sword/index.jsp>`_ it can be easily converted.
|
||||
|
||||
Importing OSIS files is very simple. Select your OSIS Bible file and click
|
||||
:guilabel:`Next`
|
||||
|
@ -42,7 +42,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'OpenLP'
|
||||
copyright = u'2010, Raoul Snyman'
|
||||
copyright = u'2004 - 2011, Raoul Snyman'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@ -92,19 +92,30 @@ pygments_style = 'sphinx'
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
if sys.argv[2] == 'qthelp' or sys.argv[2] == 'htmlhelp':
|
||||
html_theme = 'openlp_qthelp'
|
||||
else:
|
||||
html_theme = 'default'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
if sys.argv[2] == 'html':
|
||||
html_theme_options = {
|
||||
'sidebarbgcolor': '#3a60a9',
|
||||
'relbarbgcolor': '#203b6f',
|
||||
'footerbgcolor': '#26437c',
|
||||
'headtextcolor': '#203b6f',
|
||||
'linkcolor': '#26437c',
|
||||
'sidebarlinkcolor': '#ceceff'
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
html_theme_path = [os.path.join(os.path.abspath('..'), 'themes')]
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
html_title = u'OpenLP 2.0 Reference Manual'
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
@ -125,7 +136,7 @@ html_static_path = ['_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
@ -165,7 +176,7 @@ html_static_path = ['_static']
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'OpenLPdoc'
|
||||
htmlhelp_basename = 'OpenLP'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
@ -179,7 +190,7 @@ htmlhelp_basename = 'OpenLPdoc'
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'OpenLP.tex', u'OpenLP Documentation',
|
||||
('index', 'OpenLP.tex', u'OpenLP Reference Manual',
|
||||
u'Wesley Stout', 'manual'),
|
||||
]
|
||||
|
||||
@ -212,6 +223,6 @@ latex_documents = [
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'openlp', u'OpenLP Documentation',
|
||||
('index', 'openlp', u'OpenLP Reference Manual',
|
||||
[u'Wesley Stout'], 1)
|
||||
]
|
||||
|
@ -43,9 +43,14 @@ working on when you closed the program.
|
||||
|
||||
**Show the splash screen:**
|
||||
|
||||
When this box it selected, the OpenLP logo will be displayed in the center of
|
||||
the screen until the program opens. This is useful to know if the program is
|
||||
opening.
|
||||
The OpenLP logo is displayed while OpenLP loads when this checkbox is checked.
|
||||
This is useful to give some indication that the program is loading.
|
||||
|
||||
**Check for updates to OpenLP**
|
||||
|
||||
OpenLP will check to see if there is a newer version available on a regular
|
||||
basis when this checkbox is checked. Please note that this requires Internet
|
||||
access.
|
||||
|
||||
Application Settings
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
@ -60,6 +65,14 @@ working on before starting a new service.
|
||||
When this box is selected, the next item in the Service Manager will show in the
|
||||
Preview pane.
|
||||
|
||||
**Unblank display when adding new live item**
|
||||
|
||||
When using the :guilabel:`blank to` button with this checkbox checked, on going
|
||||
live with the next item, the screen will be automatically re-enabled. If this
|
||||
checkbox is not checked you will need to click the :guilabel:`blank to` button
|
||||
again to reverse the action.
|
||||
|
||||
|
||||
**Slide loop delay**
|
||||
|
||||
This setting is the time delay in seconds if you want to continuously loop
|
||||
|
572
documentation/manual/source/faq.rst
Normal file
@ -0,0 +1,572 @@
|
||||
==========================
|
||||
Frequently Asked Questions
|
||||
==========================
|
||||
|
||||
General Questions
|
||||
=================
|
||||
|
||||
When is the release date for OpenLP 2.0?
|
||||
----------------------------------------
|
||||
|
||||
*It will be ready when it's ready!* We do not have fixed dates, but we have
|
||||
set some `targets for the releases <http://wiki.openlp.org/Version_2_Milestones>`_.
|
||||
If you take part in the `development <http://wiki.openlp.org/Development:Getting_Started>`_,
|
||||
start to `test OpenLP <http://wiki.openlp.org/Testing:Getting_Started>`_ and
|
||||
`provide feedback <http://wiki.openlp.org/Help:Contents>`_ this will speed up
|
||||
the progress.
|
||||
|
||||
Can I help with OpenLP?
|
||||
-----------------------
|
||||
|
||||
OpenLP is possible because of the commitment of individuals. If you would like
|
||||
to help there are several things that you can get involved with. Please see:
|
||||
`Contributing <http://openlp.org/en/documentation/introduction/contributing.html>`_
|
||||
for more information.
|
||||
|
||||
I use and like OpenLP and would like to tell others online. Where can I do this?
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
A variety of places!
|
||||
|
||||
* Are you on facebook? Then `become a fan <http://www.facebook.com/openlp>`_
|
||||
* Are you on twitter? Then `follow openlp <http://twitter.com/openlp>`_, and
|
||||
retweet the announcements.
|
||||
* Give us a thumbs up on the
|
||||
`SourceForge project page <http://www.sourceforge.net/projects/openlp>`_
|
||||
* If you have a website or blog, then link to our site http://www.openlp.org
|
||||
with a few words saying what the software is and why you like it.
|
||||
* Add a placemark on our `Worldwide Usage map <http://maps.google.com/maps/ms?ie=UTF8&source=embed&msa=0&msid=113314234297482809599.00047e88b1985e07ad495&ll=13.923404,0&spn=155.179835,316.054688&z=2>`_,
|
||||
so others in your locality can see someone close by is using it.
|
||||
* If you are a member of any Christian Forums or websites, and their rules allow
|
||||
it, then perhaps review the software or ask others to review it.
|
||||
|
||||
What operating systems will OpenLP 2.0 support?
|
||||
-----------------------------------------------
|
||||
|
||||
OpenLP 2.0 is designed to be cross platform. Currently it has been known to run
|
||||
on Windows (XP, Vista, 7), Linux (Ubuntu/Kubuntu, Fedora), FreeBSD & Mac OSX.
|
||||
`Please let us know <http://wiki.openlp.org/Help:Contents>`_ if you've
|
||||
successfully run it on something else.
|
||||
|
||||
Which programming language is 2.0 developed in?
|
||||
-----------------------------------------------
|
||||
|
||||
OpenLP 2.0 is written in `Python <http://www.python.org>`_ and uses the
|
||||
`Qt4 toolkit <http://qt.nokia.com>`_. Both are cross-platform which allows the
|
||||
software to run on different types of machine and so allow more people access to
|
||||
free worship software. Python is one of the easier programming languages to
|
||||
learn, so this helps us develop and `find bugs <http://wiki.openlp.org/Bug#Something_has_gone_wrong.2C_what_should_I_do_to_help_get_it_fixed.3F>`_
|
||||
quicker, and also allows more developers to contribute with the project.
|
||||
|
||||
Which written languages does OpenLP support?
|
||||
--------------------------------------------
|
||||
|
||||
The beta now has support for a few languages which can be seen on the
|
||||
:menuselection:`Settings -->Translate` menu. However some of these translations
|
||||
are incomplete. If you would like to help complete or start to translate OpenLP
|
||||
into your language then see the `Getting started page <http://wiki.openlp.org/Translation:Getting_Started>`_.
|
||||
|
||||
What is a beta release?
|
||||
-----------------------
|
||||
|
||||
A beta release is a release which is almost feature complete and is fairly
|
||||
stable. However there may still be a few `features <http://wiki.openlp.org/Version_2_Features>`_
|
||||
to complete, and `bugs <https://bugs.launchpad.net/openlp>`_ we've not yet fixed.
|
||||
It is used by several people without serious problems. However there is a small
|
||||
possibility that it could still crash occasionally or do unexpected things. It
|
||||
is intended for those who want the latest version, and are prepared to give the
|
||||
program a good test before using it in a live situation to ensure they won't
|
||||
encounter any unexpected problems. If you want to have a look at the latest beta
|
||||
release then just `download it <http://openlp.org/en/download.html>`_.
|
||||
|
||||
Should I use this beta release at Church in my Sunday services?
|
||||
---------------------------------------------------------------
|
||||
|
||||
As long as you have taken the time to run through your service a couple of times
|
||||
on your target machine, the answer to this question is **yes**. The OpenLP
|
||||
team believes that OpenLP 2.0 beta 1 is stable enough to be used in Sunday
|
||||
services. As of beta 1, there are a good number of churches already using
|
||||
version 2.0 successfully. The OpenLP team works hard to make sure each release
|
||||
is solid, but cannot yet guarantee that everything works perfectly, or even
|
||||
correctly.
|
||||
|
||||
If however your congregation is made up of 85 year old women who snarl when you
|
||||
suggest replacing the gas lamps with electric light bulbs and consider the pipe
|
||||
organ too loud and modern, then we recommend sticking with version 1.2 for now.
|
||||
|
||||
As of beta 1, version 1.2 of OpenLP is "put out to pasture" - no more
|
||||
development or even bugfixes will be performed on that version.
|
||||
|
||||
Upgrading
|
||||
=========
|
||||
|
||||
Does 2.0 replace 1.2, or can they be run side by side?
|
||||
------------------------------------------------------
|
||||
|
||||
It is perfectly safe to install 2.0 on a system with 1.2. Both versions are
|
||||
installed in separate places, so you can still go back to 1.2. You can even run
|
||||
them at the same time!
|
||||
|
||||
2.0 stores its data in a separate folder to 1.2, so your data is perfectly safe,
|
||||
and whatever you do in 2.0 will not damage 1.2
|
||||
|
||||
Are 1.2 and 2.0 compatible?
|
||||
---------------------------
|
||||
|
||||
No. However imports exist to transfer your data to the new version.
|
||||
|
||||
I have a computer that is quite old, should I upgrade?
|
||||
------------------------------------------------------
|
||||
|
||||
2.0 does require significantly more resources than v1.2. Therefore if your
|
||||
computer does not have much memory you may find 2.0 will struggle, `especially`
|
||||
when changing between slides.
|
||||
|
||||
Why can I not see my 1.2 songs, bibles and themes in 2.0?
|
||||
---------------------------------------------------------
|
||||
|
||||
This is an beta release, which means it is not finished and one of the things we
|
||||
haven't completely finished yet is importing 1.2 data automatically. We plan to
|
||||
do this `Version 1.9.6 (beta 2) <http://wiki.openlp.org/Version_2_Milestones#Version_1.9.6_.28beta_2.29>`_.
|
||||
|
||||
How do I transfer my 1.2 song database?
|
||||
---------------------------------------
|
||||
|
||||
In OpenLP 2.0, go to the :menuselection:`File --> Import --> Song` menu.
|
||||
In the Wizard that appears, click Next and choose "openlp.org v1.x" from the
|
||||
Format list. Click the search button on the Filename prompt, and at the bottom
|
||||
of the dialog, copy the following into the File name prompt::
|
||||
|
||||
%ALLUSERSPROFILE%\Application Data\openlp.org\Data\songs.olp
|
||||
|
||||
*(This must be in the popup file chooser dialog. Don't enter it directly into
|
||||
the wizard).*
|
||||
|
||||
Click Open, then in the wizard just click Next and wait for the import to complete.
|
||||
|
||||
How do I transfer my 1.2 Bibles?
|
||||
--------------------------------
|
||||
|
||||
In OpenLP 2.0, go to the :menuselection:`File --> Import --> Bible` menu.
|
||||
In the Wizard that appears, click Next and choose "openlp.org v1.x" from the
|
||||
Format list.
|
||||
Click the search button on the Filename prompt, and at the bottom of the dialog,
|
||||
copy the following into the File name prompt::
|
||||
|
||||
%ALLUSERSPROFILE%\Application Data\openlp.org\Data\Bibles
|
||||
|
||||
*(This must be in the popup file chooser dialog. Don't enter it directly into
|
||||
the wizard).*
|
||||
|
||||
Choose the Bible, Click Open, then in the wizard just click Next, enter the
|
||||
License details, and wait for the import to complete.
|
||||
|
||||
How do I transfer my 1.2 Themes?
|
||||
--------------------------------
|
||||
|
||||
In openlp.org v1, export each theme by selecting it in the Theme Manager, and
|
||||
then clicking the picture of a blue folder with red arrow on the Theme Managers
|
||||
toolbox. This theme file can then be imported into V2 using the
|
||||
:menuselection:`File --> Import --> Theme` menu.
|
||||
|
||||
I can't get my 2.0 theme to look the same as 1.2
|
||||
------------------------------------------------
|
||||
|
||||
OpenLP 2.0 is a complete rewrite using a completely different programming
|
||||
language so it would work on different types of system. There are differences in
|
||||
how the old and new languages draw text on the screen, and therefore it is
|
||||
unlikely you'll get an exact match.
|
||||
|
||||
Using OpenLP
|
||||
============
|
||||
|
||||
Is there a manual or any documentation for 2.0?
|
||||
-----------------------------------------------
|
||||
|
||||
Some folks are working on a brand new manual for OpenLP 2.0. You can find the
|
||||
latest version of this manual at http://manual.openlp.org. If you need help,
|
||||
use the live chat feature or ask in the forums. If you would like to help write
|
||||
the manual, please let us know - we are always happy for new volunteers to join
|
||||
the team and contribute to the project.
|
||||
|
||||
I've started OpenLP, but I can't see the songs or bibles section in the Media Manager
|
||||
-------------------------------------------------------------------------------------
|
||||
|
||||
When you installed OpenLP, the first time wizard would have asked which plugins
|
||||
you wanted, and songs and bibles should have been selected. If for some reason
|
||||
they were not, then you will need to activate them yourself. See
|
||||
`How do I activate / deactivate a plugin <http://wiki.openlp.org/Bug#How_do_I_activate_.2F_deactivate_a_plugin.3F>`_
|
||||
for instructions.
|
||||
|
||||
How do I activate / deactivate a plugin?
|
||||
----------------------------------------
|
||||
|
||||
Plugins can be turned on and off from the Plugin List Screen. Select the plugin
|
||||
you wish to start/stop and change it's status. You should not need to restart
|
||||
OpenLP.
|
||||
|
||||
What are these plugins that I keep seeing mentioned?
|
||||
----------------------------------------------------
|
||||
|
||||
The plugins allow OpenLP to be extend easily. A number have been written
|
||||
(Songs, Bibles, Presentations) etc but it is possible for the application to be
|
||||
extended with functionality only you require. If this is the case then go for
|
||||
it but lets us know as we can help and it may be something someone else wants.
|
||||
|
||||
How do I enable PowerPoint/Impress/PowerPoint Viewer?
|
||||
-----------------------------------------------------
|
||||
|
||||
First of all ensure that the presentation plugin is enabled (see above).
|
||||
Then to enable a presentation application, go to the `Settings` dialog, switch
|
||||
to the `Presentations` tab and check one of the enabled checkboxes. OpenLP will
|
||||
automatically detect which of the three you have installed, and enable the
|
||||
appropriate checkbox(es). Check the applications you require, and then restart
|
||||
OpenLP for the change to be detected.
|
||||
Note, PowerPoint Viewer 2010 is not yet supported, use 2003 or 2007.
|
||||
|
||||
See also `I'm on Windows and PowerPoint is installed, but it doesn't appear as an option <http://wiki.openlp.org/OpenLP_2_Introduction_and_FAQ#I.27m_on_Windows_and_PowerPoint_is_installed.2C_but_it_doesn.27t_appear_as_an_option>`_
|
||||
and `Why is there no presentations plugin available on OS X? <http://wiki.openlp.org/OpenLP_2_Introduction_and_FAQ#Why_is_there_no_presentations_plugin_available_on_OS_X.3F>`_
|
||||
|
||||
Why is there no presentations plugin available on OS X?
|
||||
-------------------------------------------------------
|
||||
|
||||
Currently the presentations plugin is not bundled with OpenLP on OS X. The
|
||||
reason for that is that the OpenOffice.org version on Mac OS X does not contain
|
||||
the (more exact: does only contain a broken) interoperability component (the so
|
||||
called pyuno bridge) which could be used by OpenLP. As soon as the
|
||||
interoperability component works on OS X we can re-enable the plugin and bundle
|
||||
it. We are really sorry for that.
|
||||
|
||||
Is it possible to get Bible x? How?
|
||||
-----------------------------------
|
||||
|
||||
The Bible plugin has a much improved `Import Wizard` which can import Bibles
|
||||
from a variety of sources. The following sources are supported:
|
||||
|
||||
CSV
|
||||
The same format as documented for `openlp.org 1.x <http://www.openlp.org/en/documentation/importing_exporting_data/bibles/importing_comma_delimited_files.html>`_.
|
||||
|
||||
OSIS
|
||||
An XML format for Bible. You can export Bibles from the `Sword Project <http://www.crosswire.org/sword/software/>`_
|
||||
into OSIS using the ``mod2osis`` tool. After using the Sword software Media
|
||||
Manager (or other Sword frontend, like BibleTime or Xiphos) to download the
|
||||
required Bible, run the following command from the command line (works on
|
||||
Windows and Linux)::
|
||||
|
||||
mod2osis <name> > <name>.osis
|
||||
|
||||
The ``<name>`` parameter is the name of your Bible, as you see it in Sword.
|
||||
Note that the ``<name>`` is case sensitive on all environments. Once you
|
||||
have exported your Bible to OSIS, the Bible import wizard will the read
|
||||
``<name>.osis`` file and import your Bible.
|
||||
|
||||
OpenSong
|
||||
OpenSong have a good selection of Bibles on their
|
||||
`download page <http://www.opensong.org/d/downloads#bible_translations>`_.
|
||||
|
||||
Web Download
|
||||
OpenLP can download Bibles on demand from the following 3 sites:
|
||||
|
||||
* `Crosswalk <http://biblestudy.crosswalk.com/bibles/>`_
|
||||
* `BibleGateway <http://www.biblegateway.com/versions/>`_
|
||||
* `BibleServer <http://www.bibleserver.com>`_
|
||||
|
||||
Why do my Bible verses take a long time to load?
|
||||
------------------------------------------------
|
||||
|
||||
In order to better conform to copyright law, the Web Download Bibles are not
|
||||
downloaded when you import them, but on the fly as you search for them. As a
|
||||
result, the search takes a little longer if you need to download those
|
||||
particular verses. Having said that, the Web Download Bibles cache downloaded
|
||||
verses so that you don't need to download them again.
|
||||
|
||||
My Bible is on the Web Download sites, but my Church isn't on the internet. What options do I have?
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
When you create and save a service, all the items in the service are saved with
|
||||
it. That means any images, presentations, songs and media items are saved. This
|
||||
is also true for bibles. What this means is you can create the service on your
|
||||
home computer, insert a Bible passage from the web, save it and then open the
|
||||
service using your church computer and voila, the Bible passage should be there!
|
||||
Note this can also be done with songs, etc!
|
||||
|
||||
(Advanced) Where do I find the configuration file?
|
||||
==================================================
|
||||
|
||||
Linux, FreeBSD & PC-BSD
|
||||
-----------------------
|
||||
|
||||
If your distribution supports the XDG standard, you'll find OpenLP's
|
||||
configuration file in::
|
||||
|
||||
/home/<user>/.config/OpenLP/OpenLP.conf
|
||||
|
||||
If that file and/or directory does not exist, look for::
|
||||
|
||||
/home/<user>/.openlp/openlp.conf
|
||||
|
||||
``<user>`` is your username.
|
||||
|
||||
OS X
|
||||
----
|
||||
|
||||
You'll find your configuration file here::
|
||||
|
||||
/Users/<user>/Library/Preferences/org.openlp.OpenLP.plist
|
||||
|
||||
``<user>`` is your username.
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
On Windows, OpenLP does not use a configuration file, it uses the Windows
|
||||
registry. You can find the settings here::
|
||||
|
||||
HKEY_CURRENT_USER\Software\OpenLP\OpenLP
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
Something has gone wrong, what should I do to help get it fixed?
|
||||
----------------------------------------------------------------
|
||||
|
||||
If you have found an error in the program (what we call a bug) you should report
|
||||
this to us so that OpenLP can be improved. Before reporting any bugs please
|
||||
first make sure that there isn't already a bug report about your problem:
|
||||
|
||||
#. Check the `Launchpad bug list <https://bugs.launchpad.net/openlp>`_
|
||||
#. `OpenLP support System <http://www.support.openlp.org/projects/openlp>`_
|
||||
#. Check the `bug reports <http://openlp.org/en/forums/openlp_20/bug_reports.html>`_ forum
|
||||
|
||||
If there **is already a bug report**, you may be able to help by providing
|
||||
further information. However, **if no one else has reported** it yet, then
|
||||
please post a new bug report.
|
||||
|
||||
#. The **preferred place** for reporting bugs is the
|
||||
`bugs list <https://bugs.launchpad.net/openlp>`_ on Launchpad.
|
||||
#. Alternatively, if you don't have a Launchpad account and don't want to sign
|
||||
up for one, you can post in the
|
||||
`bug reports forum <http://openlp.org/en/forums/openlp_20/bug_reports.html>`_.
|
||||
#. If none of these ways suits you, you can send an email to
|
||||
``bugs (at) openlp.org``.
|
||||
|
||||
What information should I include in a bug report?
|
||||
--------------------------------------------------
|
||||
|
||||
Since OpenLP 1.9.4, there is a bug report dialog which automatically opens when
|
||||
OpenLP hits a serious bug. However, this doesn't appear all the time, and in
|
||||
some behavioural bugs, you'll have to file a bug report yourself. The following
|
||||
items are information the developers need in order to reproduce the bug.
|
||||
|
||||
Operating System
|
||||
Include information such as the version of your operating system, the
|
||||
distribution (e.g. Ubuntu, Fedora, etc.) if you're using Linux, or the
|
||||
edition (e.g. Home, Basic, Business, etc.) if you're using Windows.
|
||||
|
||||
Version of OpenLP
|
||||
You can find out the version of OpenLP by going to :menuselection:`Help --> About`
|
||||
|
||||
Steps to Reproduce
|
||||
The exact steps the developers need to follow in order to reproduce the bug.
|
||||
|
||||
Version of MS Office or OpenOffice
|
||||
If you're using the song imports or the presentation plugin, you'll need to
|
||||
supply the version of Office, OpenOffice.org or LibreOffice.
|
||||
|
||||
Bible Translation and Source
|
||||
If the bug occurred while you were working with Bibles, specify the
|
||||
translation of the Bible, and the source format if you imported it yourself.
|
||||
|
||||
**Any** Other Information
|
||||
Often bugs are caused by something that might not seem to be directly
|
||||
related to the bug itself. If you have any other information with regards to
|
||||
actions you performed or other activities when the bug occurred, it would be
|
||||
welcomed by the developers.
|
||||
|
||||
The more information you give us, the better we can help you.
|
||||
|
||||
I've been asked to email a debug log, where do I find this?
|
||||
-----------------------------------------------------------
|
||||
|
||||
We may need a debug log to help pin-point the issue. A new log file is created
|
||||
each time you start OpenLP so copy the file before you run the software a second
|
||||
time. On Windows a Debug option is available in the start menu. On other systems,
|
||||
you will need to run OpenLP from the command line, with the following
|
||||
option: ```-l debug```. Please note, that is a lowercase **L**.
|
||||
|
||||
If you haven't been given a specific email address to send it to, then please do
|
||||
not paste the log contents straight into a forum post. Instead, open the log
|
||||
file in a text editor (such as notepad on Windows) and copy and paste the
|
||||
contents into somewhere like `pastebin.com <http://pastebin.com>`_. Then give us
|
||||
the link to the page that is created.
|
||||
|
||||
Windows
|
||||
^^^^^^^
|
||||
|
||||
Find the OpenLP 2.0 folder in your Start menu. Choose the "OpenLP (Debug)" option.
|
||||
|
||||
OpenLP will start up. Go to the :menuselection:`Tools --> Open Data Folder` menu
|
||||
option, and an Explorer window will appear containing folders such as alerts,
|
||||
bibles, custom etc. Keep this Explorer window open.
|
||||
|
||||
Now repeat the steps you need to take in OpenLP to reproduce the problem you had,
|
||||
and then close down OpenLP.
|
||||
|
||||
In the Explorer window you left open, navigate up one level into the openlp
|
||||
folder. You will see the ``openlp.log`` file. This is the file to e-mail.
|
||||
|
||||
Linux/FreeBSD
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
If you installed OpenLP from a package::
|
||||
|
||||
@:~$ openlp -l debug
|
||||
|
||||
Alternately, if you're running OpenLP from source::
|
||||
|
||||
@:~$ ./openlp.pyw -l debug
|
||||
|
||||
If your Linux distribution supports the XDG standard, you'll find the log in::
|
||||
|
||||
~/.cache/openlp/openlp.log
|
||||
|
||||
Otherwise, you'll find the log file in::
|
||||
|
||||
~/.openlp/openlp.log
|
||||
|
||||
Mac OS X
|
||||
^^^^^^^^
|
||||
|
||||
Open Terminal.app and navigate to where you installed OpenLP, usually
|
||||
``/Applications``::
|
||||
|
||||
@:~$ cd /Applications
|
||||
|
||||
Then go into the OpenLP.app directory, down to the OpenLP executable::
|
||||
|
||||
@:~$ cd OpenLP.app/Contents/MacOS
|
||||
|
||||
And then run OpenLP in debug mode::
|
||||
|
||||
@:~$ ./openlp -l debug
|
||||
|
||||
Once you've done that, you need to get the log file. In your home directory,
|
||||
open the Library directory, and the Application Support directory within that.
|
||||
Then open the openlp directory, and you should find the openlp.log file in that
|
||||
directory::
|
||||
|
||||
/Users/<username>/Library/Application Support/openlp/openlp.log
|
||||
|
||||
``<username>`` is your username.
|
||||
|
||||
I'm on Windows and PowerPoint is installed, but it doesn't appear as an option
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Try installing the `Visual C++ Runtime Redistributable <http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en>`_.
|
||||
|
||||
The command line shows many error messages
|
||||
------------------------------------------
|
||||
|
||||
When running OpenLP from the command line, you might get something like this::
|
||||
|
||||
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
|
||||
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
|
||||
WARNING: Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName ) to VideoDisplay ( no objectName ).
|
||||
WARNING: Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName ) to Phonon::AudioOutput ( no objectName ).
|
||||
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
|
||||
|
||||
These error messages indicate that you need to install an appropriate backend
|
||||
for Phonon.
|
||||
|
||||
Linux/FreeBSD
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
If you're using Gnome, you need to install the GStreamer backend for Phonon. On
|
||||
Ubuntu you would install the ```phonon-backend-gstreamer``` package::
|
||||
|
||||
@:~$ sudo aptitude install phonon-backend-gstreamer
|
||||
|
||||
If you're using KDE, you need to install the Xine backend for Phonon. On Kubuntu
|
||||
you would install the ```phonon-backend-xine``` package::
|
||||
|
||||
@:~$ sudo aptitude install phonon-backend-xine
|
||||
|
||||
If you know which audiovisual system you're using, then install the appropriate
|
||||
backend.
|
||||
|
||||
phonon-backend-vlc may also be worth trying on some systems.
|
||||
|
||||
Windows & Mac OS X
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Phonon should already be set up properly. If you're still having issues, let the
|
||||
developers know.
|
||||
|
||||
I've upgraded from 1.9.2 to a newer version, and now OpenLP crashes on load
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
You need to upgrade your song database. See this `blog post <http://openlp.org/en/users/jt/blog/2010-07-20-flag_day_database_schema_changes_in_trunk_revision_956.html>`_
|
||||
for information on how to do this.
|
||||
|
||||
I've upgraded to 1.9.5, and now OpenLP has duplicates of many songs in the Media Manager
|
||||
----------------------------------------------------------------------------------------
|
||||
|
||||
You need to run :menuselection:`Tools --> Re-index Songs`.
|
||||
|
||||
There are no menu icons in OpenLP
|
||||
---------------------------------
|
||||
|
||||
This may affect (only) Linux users with XFCE or Gnome. To solve the problem,
|
||||
follow the instructions on `this bug report <https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/501468/comments/3>`_.
|
||||
|
||||
JPEG images don't work
|
||||
----------------------
|
||||
|
||||
This is a known issue on some Mac OS X 10.5 systems, and has also been seen on
|
||||
Windows XP too. The solution is to convert the image into another format such as
|
||||
PNG.
|
||||
|
||||
MP3's and other audio formats don't work
|
||||
----------------------------------------
|
||||
|
||||
This is a known issue on some systems, including some XP machines, and we have
|
||||
no solution at the moment.
|
||||
|
||||
Videos can be slow or pixelated. Background Videos are very slow
|
||||
----------------------------------------------------------------
|
||||
|
||||
If you are just playing videos from the Media plugin, try selecting the
|
||||
:guilabel:`Use Phonon for Video playback` option in the Media configuration,
|
||||
accessible by going to :menuselection:`Settings --> Configure OpenLP --> Media`.
|
||||
As for text over video, we have no solution for speeding this up. Reducing the
|
||||
monitor resolution and avoiding shadows and outline text will help. We are
|
||||
hoping a future release of the toolkit we are using (QtWebKit) will help improve
|
||||
this, but there is no timeframe at present.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
What new features will I find in 2.0?
|
||||
-------------------------------------
|
||||
|
||||
Since 2.0 was a rewrite from the ground up, you won't find a great deal of new
|
||||
features since initially we want to ensure all the 1.2 features are included.
|
||||
However the developers have managed to sneak a few in. Take a look at the
|
||||
`complete list <http://wiki.openlp.org/Version_2_Features>`_.
|
||||
|
||||
Why hasn't popular feature request X been implemented?
|
||||
------------------------------------------------------
|
||||
|
||||
We made a decision to first implement 1.2 features, before going wild on new
|
||||
features. There are only a handful of developers working in their spare time. If
|
||||
we were to try and include everything we wanted to implement, then 2.0 would not
|
||||
likely ever get released.
|
||||
|
||||
I have a great idea for a new feature, where should I suggest it?
|
||||
-----------------------------------------------------------------
|
||||
|
||||
First of all check it isn't on the `Feature Requests <http://wiki.openlp.org/Feature_Requests>`_
|
||||
page. If it is, then you need to say no more, it's already been suggested! If it
|
||||
isn't on the list, then head to the
|
||||
`feature request forum <http://openlp.org/en/forums/openlp_20/feature_requests.html>`_
|
||||
and post the idea there.
|
@ -13,9 +13,13 @@ Contents:
|
||||
|
||||
introduction
|
||||
glossary
|
||||
wizard
|
||||
dualmonitors
|
||||
configure
|
||||
bibles
|
||||
themes
|
||||
mediamanager
|
||||
songs
|
||||
songs
|
||||
alert
|
||||
faq
|
||||
troubleshooting
|
||||
|
@ -5,33 +5,31 @@ Introduction
|
||||
About
|
||||
-----
|
||||
|
||||
OpenLP is an open source lyrics projection application developed specifically
|
||||
for churches. It is licensed under the GNU Generic Public License, which means
|
||||
that it is free to use and distribute, and it stays free.
|
||||
OpenLP stands for "Open Source Lyrics Projection" and is presentation software
|
||||
developed for churches to provide a single easy to use interface for the
|
||||
projection needs of a typical worship service. First created in 2004, it has
|
||||
steadily grown in features and maturity such that it is now a mainstay in
|
||||
hundreds of churches around the world.
|
||||
|
||||
Lyrics Projection
|
||||
-----------------
|
||||
OpenLP has searchable databases of songs and Bible verses allowing them to be
|
||||
projected instantly or saved in a pre-prepared order of service file. Themes
|
||||
allow for a variety of presentation options and allow you to add attractive
|
||||
visuals to enhance your presentations. PowerPoint and OpenOffice presentations,
|
||||
videos and audio files can be run from within the program removing the need to
|
||||
switch between different programs. Alert messages can be displayed so the
|
||||
nursery or car park stewards can notify the congregation easily. Remote
|
||||
capability allows the worship leader to change songs, or for alert messages to
|
||||
be sent from anywhere on the network, even via a smart phone or tablet.
|
||||
|
||||
OpenLP's purpose is to project the lyrics of songs and Bible verses using a
|
||||
computer and a data projector. OpenLP also has the ability to project videos,
|
||||
images, and also play audio. OpenLP also is highly customizable providing users
|
||||
with the ability to set up a wide variety of themes, including themes with
|
||||
video backgrounds.
|
||||
Being free, this software can be installed on as many PCs as required,
|
||||
including the home PCs of worship leader(s) at no additional cost. Compared to
|
||||
the expensive site licenses and restrictions of commercial software we believe
|
||||
OpenLP is the perfect choice for quality and value. Still in active development
|
||||
by a growing team of enthusiastic developers, features are being added all the
|
||||
time resulting in continual improvement of the software.
|
||||
|
||||
Open Source
|
||||
-----------
|
||||
|
||||
OpenLP is open source software. This means that the source code (the
|
||||
programming instructions the developers write) is open to anyone who wants to
|
||||
look at it. This gives you, the end user, a few freedoms.
|
||||
|
||||
From a developer's perspective, it gives you the freedom to inspect the code
|
||||
and make sure that it is not malicious. Also, it gives you the freedom to
|
||||
change the code and the freedom to "fork" the project and make it your own.
|
||||
|
||||
For end users open source software gives you the freedom to use software as
|
||||
you wish. You are not required to pay for the software and you are free to
|
||||
make copies and distribute it to anyone you want.
|
||||
OpenLP is licensed under the GNU Generic Public License, which means
|
||||
that it is free to use, distribute, modify, and it stays free.
|
||||
|
||||
GNU General Public License
|
||||
--------------------------
|
||||
@ -42,5 +40,4 @@ to charge for the software, and that you have to distribute the source code as
|
||||
well.
|
||||
|
||||
You can find a copy of the GNU General Public License from the Help menu
|
||||
selecting about OpenLP or on-line
|
||||
at: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
||||
selecting about OpenLP or `view the license on-line <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>`_.
|
||||
|
@ -16,8 +16,8 @@ this is what the `Media Manager` looks like with all the plugins enabled.
|
||||
.. image:: pics/mediamanager.png
|
||||
|
||||
To enable the plugins navigate to :menuselection:`Settings --> Plugins` or
|
||||
press `F7`. You will want to click on the plugin to the left that you want to
|
||||
enable and select **active** from the drop down box to the right.
|
||||
press :kbd:`Alt+F7`. You will want to click on the plugin to the left that you
|
||||
would like to enable and select **active** from the drop down box to the right.
|
||||
|
||||
.. image:: pics/plugins.png
|
||||
|
||||
@ -99,9 +99,10 @@ You will type your search query in this box for the following two searches.
|
||||
Book Chapter
|
||||
Book Chapter-Chapter
|
||||
Book Chapter:Verse-Verse
|
||||
Book Chapter:Verse-End (this will display verses to the end of the chapter)
|
||||
Book Chapter:Verse-Verse, Verse-Verse
|
||||
Book Chapter:Verse-Verse,Chapter:Verse-Verse
|
||||
Book Chapter: Verse-Chapter:Verse
|
||||
Book Chapter:Verse-Chapter:Verse
|
||||
|
||||
`Text Search:`
|
||||
|
||||
|
BIN
documentation/manual/source/pics/001-first-time-language.png
Normal file
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 30 KiB |
BIN
documentation/manual/source/pics/004-first-time-wizard-songs.png
Normal file
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 5.4 KiB |
BIN
documentation/manual/source/pics/012-openlp-main-window.png
Normal file
After Width: | Height: | Size: 138 KiB |
BIN
documentation/manual/source/pics/alert.png
Normal file
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 58 KiB |
BIN
documentation/manual/source/pics/phononcheckbox.png
Normal file
After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 36 KiB |
@ -71,8 +71,8 @@ Importing from CCLI Song Select
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To import from CCLI Song Select you must be a CCLI Subscriber and also a
|
||||
subscriber of the Song Select service. For info on that go to:
|
||||
http://www.ccli.com
|
||||
subscriber of the Song Select service. For more info check out the `CCLI website.
|
||||
<http://www.ccli.com>`_
|
||||
|
||||
The first step for importing from CCLI Song Select is to log into your account.
|
||||
Then search for your desired song. For this example we will be adding the song
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _themes:
|
||||
|
||||
======
|
||||
Themes
|
||||
======
|
||||
|
177
documentation/manual/source/troubleshooting.rst
Normal file
@ -0,0 +1,177 @@
|
||||
===============
|
||||
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
|
||||
`from 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 the
|
||||
`community documentation <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 <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 `the RPM Fusion site <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.
|
||||
|
||||
Follow the tutorial `using the rpmfusion repository <http://www.linuxjournal.com/video/getting-mp3-support-fedora-using-rpmfusion-repositories>`_
|
||||
to enable extra audio and video formats on Fedora
|
||||
|
||||
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 :ref:`themes` if you need more info
|
||||
on text sizes in themes.
|
||||
|
||||
I am running Mac OS X and I do not have a presentations plugin
|
||||
--------------------------------------------------------------
|
||||
|
||||
Due to software limitations with Keynote and OpenOffice Impress, the
|
||||
presentations plugin on OS X is not currently available.
|
||||
|
||||
I am using PowerPoint 2010 or PowerPoint Viewer 2010 and presentations do not work
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
Currently OpenLP does not support PowerPoint Viewer 2010. PowerPoint 2010 should
|
||||
work correctly, although some users have reported problems. If you have issues
|
||||
with PowerPoint 2010 or PowerPoint Viewer 2010 try the PowerPoint 2003 or 2007
|
||||
Viewers. `Download the PowerPoint 2007 viewer for free
|
||||
<http://www.microsoft.com/downloads/en/details.aspx?FamilyID=048dc840-14e1-467d-8dca-19d2a8fd7485&displaylang=en>`_.
|
||||
|
||||
I have PowerPoint installed but it does not show as a presentation option
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Installing the `Visual C++ Runtime Redistributable. <http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en>`_
|
||||
has fixed this problem according to some of our users.
|
||||
|
||||
I have JPG images and they will not work on my system
|
||||
-----------------------------------------------------
|
||||
|
||||
This is a known issue on some Mac OS X 10.5 systems and on a few Windows XP
|
||||
systems. Currently the only solution is to convert your images into another
|
||||
format. We would suggest using PNG images when possible with OpenLP.
|
||||
|
||||
I am running a Linux Distro and can not see the menus
|
||||
-----------------------------------------------------
|
||||
|
||||
This seems to be a problem with XFCE and some versions of Gnome too. To correct
|
||||
this problem, open a terminal and type in the following commands::
|
||||
|
||||
gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true
|
||||
|
||||
gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true
|
||||
|
||||
I chose to use a web Bible but it did not download the entire Bible
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Due to copyright restrictions OpenLP cannot download an entire Bible. It can
|
||||
only download the section you search for. If you do not have an internet
|
||||
connection where you intend to use OpenLP you will need another scripture
|
||||
source. For more information about acquiring Bibles please see :ref:`bibleimporter`.
|
||||
|
102
documentation/manual/source/wizard.rst
Normal file
@ -0,0 +1,102 @@
|
||||
================
|
||||
First Run Wizard
|
||||
================
|
||||
|
||||
When using OpenLP for the first time, the **First Run Wizard** will help you
|
||||
with setting up your installation. This wizard is not intended to be a
|
||||
comprehensive setup but will help you with the basics.
|
||||
|
||||
Select Translation
|
||||
------------------
|
||||
|
||||
.. image:: pics/001-first-time-language.png
|
||||
|
||||
You can choose the translation you want to use or let OpenLP
|
||||
automatically select it based on your operating system locale. Click
|
||||
:guilabel:`OK` to continue.
|
||||
|
||||
The "Welcome to the First Time Wizard" dialog box will appear next. Click
|
||||
:guilabel:`Next`.
|
||||
|
||||
.. image:: pics/002-first-time-wizard-welcome.png
|
||||
|
||||
Activate required Plugins
|
||||
-------------------------
|
||||
|
||||
.. image:: pics/003-first-time-wizard-plugins.png
|
||||
|
||||
OpenLP has several plugins to choose from. By default, all plugins are enabled,
|
||||
except the *Remote Access* plugin. For more information on these plugins, please
|
||||
read the :doc:`mediamanager` section in the manual. If you are not sure of which
|
||||
plugins to enable or disable, leave the selection as is. You can easily activate
|
||||
or deactivate plugins later, when OpenLP is running, by going to
|
||||
:menuselection:`Settings --> Plugin List`. Click :guilabel:`Next` to continue.
|
||||
|
||||
Sample Songs
|
||||
------------
|
||||
|
||||
.. image:: pics/004-first-time-wizard-songs.png
|
||||
|
||||
OpenLP provides some sample songs in a few languages for downloading and
|
||||
importing into your new song database. This is convenient for new users who do
|
||||
not have any songs yet. If you already have songs in your database, OpenLP will
|
||||
simply add these sample songs to your database, leaving your existing songs
|
||||
intact. Once you are happy with which songs you'd like, click :guilabel:`Next`.
|
||||
|
||||
Sample Bibles
|
||||
-------------
|
||||
|
||||
.. image:: pics/005-first-time-wizard-bibles.png
|
||||
|
||||
There are also a number of free Bibles that you can download and install. Using
|
||||
the check box next to each Bible, select each Bible that you would like
|
||||
installed. If you do not wish to install any Bibles, simply leave them all
|
||||
unchecked. Once you are happy with your selection, click :guilabel:`Next` to
|
||||
continue.
|
||||
|
||||
Sample Themes
|
||||
-------------
|
||||
|
||||
.. image:: pics/006-first-time-wizard-themes.png
|
||||
|
||||
Some sample themes are also available for download and installation into OpenLP.
|
||||
As with the Bibles, simply check the check box next to each theme to select it.
|
||||
If you are a new user, these themes can help you understand how themes work. If
|
||||
you are happy with your selected themes, click :guilabel:`Next` to continue.
|
||||
|
||||
Default Settings
|
||||
----------------
|
||||
|
||||
.. image:: pics/007-first-time-wizard-settings.png
|
||||
|
||||
Default Display Monitor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Screen 2. If you are installing OpenLP but are not connected to a second output
|
||||
at the time, you can set this up later by going to
|
||||
:menuselection:`Settings --> Configure OpenLP`.
|
||||
|
||||
Default Theme
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
If you have selected one or more themes on the themes page of the wizard, you
|
||||
can select which theme you'd like to be the default theme.
|
||||
|
||||
If you are happy with the selections you have made, click :guilabel:`Next` to
|
||||
continue to the next page.
|
||||
|
||||
.. image:: pics/009-first-time-wizard-progress.png
|
||||
|
||||
Making progress.
|
||||
|
||||
.. image:: pics/010-first-time-wizard-finished.png
|
||||
|
||||
On the last page of the wizard, OpenLP will download the sample songs, Bibles
|
||||
and themes, and set up OpenLP for you. Click :guilabel:`Finish` and OpenLP will
|
||||
start.
|
||||
|
||||
.. image:: pics/011-first-time-wizard-song-import.png
|
||||
|
||||
The main window.
|
||||
|
||||
.. image:: pics/012-openlp-main-window.png
|
33
openlp.pyw
@ -38,6 +38,7 @@ from traceback import format_exception
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Receiver, check_directory_exists
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.resources import qInitResources
|
||||
from openlp.core.ui.mainwindow import MainWindow
|
||||
from openlp.core.ui.firsttimelanguageform import FirstTimeLanguageForm
|
||||
@ -77,6 +78,13 @@ class OpenLP(QtGui.QApplication):
|
||||
class in order to provide the core of the application.
|
||||
"""
|
||||
|
||||
def exec_(self):
|
||||
"""
|
||||
Override exec method to allow the shared memory to be released on exit
|
||||
"""
|
||||
QtGui.QApplication.exec_()
|
||||
self.sharedMemory.detach()
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
Run the OpenLP application.
|
||||
@ -107,11 +115,13 @@ class OpenLP(QtGui.QApplication):
|
||||
# make sure Qt really display the splash screen
|
||||
self.processEvents()
|
||||
# start the main app window
|
||||
self.mainWindow = MainWindow(screens, self.clipboard())
|
||||
self.mainWindow = MainWindow(screens, self.clipboard(),
|
||||
self.arguments())
|
||||
self.mainWindow.show()
|
||||
if show_splash:
|
||||
# now kill the splashscreen
|
||||
self.splash.finish(self.mainWindow)
|
||||
log.debug(u'Splashscreen closed')
|
||||
self.mainWindow.repaint()
|
||||
self.processEvents()
|
||||
if not has_run_wizard:
|
||||
@ -122,6 +132,24 @@ class OpenLP(QtGui.QApplication):
|
||||
VersionThread(self.mainWindow).start()
|
||||
return self.exec_()
|
||||
|
||||
def isAlreadyRunning(self):
|
||||
"""
|
||||
Look to see if OpenLP is already running and ask if a 2nd copy
|
||||
is to be started.
|
||||
"""
|
||||
self.sharedMemory = QtCore.QSharedMemory('OpenLP')
|
||||
if self.sharedMemory.attach():
|
||||
status = QtGui.QMessageBox.critical(None,
|
||||
UiStrings.Error, UiStrings.OpenLPStart,
|
||||
QtGui.QMessageBox.StandardButtons(
|
||||
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No))
|
||||
if status == QtGui.QMessageBox.No:
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
self.sharedMemory.create(1)
|
||||
return False
|
||||
|
||||
def hookException(self, exctype, value, traceback):
|
||||
if not hasattr(self, u'mainWindow'):
|
||||
log.exception(''.join(format_exception(exctype, value, traceback)))
|
||||
@ -194,6 +222,9 @@ def main():
|
||||
qInitResources()
|
||||
# Now create and actually run the application.
|
||||
app = OpenLP(qt_args)
|
||||
# Instance check
|
||||
if app.isAlreadyRunning():
|
||||
sys.exit()
|
||||
app.setOrganizationName(u'OpenLP')
|
||||
app.setOrganizationDomain(u'openlp.org')
|
||||
app.setApplicationName(u'OpenLP')
|
||||
|
@ -166,7 +166,7 @@ def build_icon(icon):
|
||||
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
return button_icon
|
||||
|
||||
def context_menu_action(base, icon, text, slot):
|
||||
def context_menu_action(base, icon, text, slot, shortcuts=None):
|
||||
"""
|
||||
Utility method to help build context menus for plugins
|
||||
|
||||
@ -186,6 +186,8 @@ def context_menu_action(base, icon, text, slot):
|
||||
if icon:
|
||||
action.setIcon(build_icon(icon))
|
||||
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), slot)
|
||||
if shortcuts:
|
||||
action.setShortcuts(shortcuts)
|
||||
return action
|
||||
|
||||
def context_menu(base, icon, text):
|
||||
|
@ -101,6 +101,10 @@ class EventReceiver(QtCore.QObject):
|
||||
``servicemanager_previous_item``
|
||||
Display the previous item in the service
|
||||
|
||||
``servicemanager_preview_live``
|
||||
Requests a Preview item from the Service Manager to update live and
|
||||
add a new item to the preview panel
|
||||
|
||||
``servicemanager_next_item``
|
||||
Display the next item in the service
|
||||
|
||||
|
@ -85,7 +85,12 @@ body {
|
||||
}
|
||||
/* lyric css */
|
||||
%s
|
||||
|
||||
sup {
|
||||
font-size:0.6em;
|
||||
vertical-align:top;
|
||||
position:relative;
|
||||
top:-0.3em;
|
||||
}
|
||||
</style>
|
||||
<script language="javascript">
|
||||
var timer = null;
|
||||
|
@ -101,6 +101,7 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.toolbar = None
|
||||
self.remoteTriggered = None
|
||||
self.singleServiceItem = True
|
||||
self.quickPreviewAllowed = False
|
||||
self.pageLayout = QtGui.QVBoxLayout(self)
|
||||
self.pageLayout.setSpacing(0)
|
||||
self.pageLayout.setMargin(0)
|
||||
@ -266,23 +267,25 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
context_menu_action(
|
||||
self.listView, u':/general/general_delete.png',
|
||||
self.plugin.getString(StringContent.Delete)[u'title'],
|
||||
self.onDeleteClick))
|
||||
self.onDeleteClick, [QtCore.Qt.Key_Delete]))
|
||||
self.listView.addAction(context_menu_separator(self.listView))
|
||||
self.listView.addAction(
|
||||
context_menu_action(
|
||||
self.listView, u':/general/general_preview.png',
|
||||
self.plugin.getString(StringContent.Preview)[u'title'],
|
||||
self.onPreviewClick))
|
||||
self.onPreviewClick, [QtCore.Qt.Key_Enter]))
|
||||
self.listView.addAction(
|
||||
context_menu_action(
|
||||
self.listView, u':/general/general_live.png',
|
||||
self.plugin.getString(StringContent.Live)[u'title'],
|
||||
self.onLiveClick))
|
||||
self.onLiveClick, [QtCore.Qt.ShiftModifier + \
|
||||
QtCore.Qt.Key_Enter, QtCore.Qt.ShiftModifier + \
|
||||
QtCore.Qt.Key_Return]))
|
||||
self.listView.addAction(
|
||||
context_menu_action(
|
||||
self.listView, u':/general/general_add.png',
|
||||
self.plugin.getString(StringContent.Service)[u'title'],
|
||||
self.onAddClick))
|
||||
self.onAddClick, [QtCore.Qt.Key_Plus, QtCore.Qt.Key_Equal]))
|
||||
if self.addToServiceItem:
|
||||
self.listView.addAction(
|
||||
context_menu_action(
|
||||
@ -293,6 +296,9 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
QtCore.QObject.connect(self.listView,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
|
||||
self.onClickPressed)
|
||||
QtCore.QObject.connect(self.listView,
|
||||
QtCore.SIGNAL(u'itemSelectionChanged()'),
|
||||
self.onSelectionChange)
|
||||
|
||||
def initialise(self):
|
||||
"""
|
||||
@ -411,7 +417,16 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
else:
|
||||
self.onPreviewClick()
|
||||
|
||||
def onPreviewClick(self):
|
||||
def onSelectionChange(self):
|
||||
"""
|
||||
Allows the change of current item in the list to be actioned
|
||||
"""
|
||||
if QtCore.QSettings().value(u'advanced/single click preview',
|
||||
QtCore.QVariant(False)).toBool() and self.quickPreviewAllowed \
|
||||
and self.listView.selectedIndexes():
|
||||
self.onPreviewClick(True)
|
||||
|
||||
def onPreviewClick(self, keepFocus=False):
|
||||
"""
|
||||
Preview an item by building a service item then adding that service
|
||||
item to the preview slide controller.
|
||||
@ -426,6 +441,8 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
if serviceItem:
|
||||
serviceItem.from_plugin = True
|
||||
self.parent.previewController.addServiceItem(serviceItem)
|
||||
if keepFocus:
|
||||
self.listView.setFocus()
|
||||
|
||||
def onLiveClick(self):
|
||||
"""
|
||||
|
@ -145,7 +145,8 @@ class RenderManager(object):
|
||||
else:
|
||||
self.theme = self.service_theme
|
||||
else:
|
||||
if theme:
|
||||
# Images have a theme of -1
|
||||
if theme and theme != -1:
|
||||
self.theme = theme
|
||||
elif theme_level == ThemeLevel.Song or \
|
||||
theme_level == ThemeLevel.Service:
|
||||
|
@ -109,7 +109,9 @@ class ServiceItem(object):
|
||||
self.edit_id = None
|
||||
self.xml_version = None
|
||||
self.start_time = 0
|
||||
self.end_time = 0
|
||||
self.media_length = 0
|
||||
self.from_service = False
|
||||
self._new_item()
|
||||
|
||||
def _new_item(self):
|
||||
@ -261,6 +263,7 @@ class ServiceItem(object):
|
||||
u'data': self.data_string,
|
||||
u'xml_version': self.xml_version,
|
||||
u'start_time': self.start_time,
|
||||
u'end_time': self.end_time,
|
||||
u'media_length': self.media_length
|
||||
}
|
||||
service_data = []
|
||||
@ -307,6 +310,8 @@ class ServiceItem(object):
|
||||
self.xml_version = header[u'xml_version']
|
||||
if u'start_time' in header:
|
||||
self.start_time = header[u'start_time']
|
||||
if u'end_time' in header:
|
||||
self.end_time = header[u'end_time']
|
||||
if u'media_length' in header:
|
||||
self.media_length = header[u'media_length']
|
||||
if self.service_item_type == ServiceItemType.Text:
|
||||
@ -449,4 +454,3 @@ class ServiceItem(object):
|
||||
return end
|
||||
else:
|
||||
return u'%s : %s' % (start, end)
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
import logging
|
||||
import re
|
||||
try:
|
||||
import enchant
|
||||
@ -38,20 +38,24 @@ except ImportError:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate, DisplayTags
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
class SpellTextEdit(QtGui.QPlainTextEdit):
|
||||
"""
|
||||
Spell checking widget based on QPlanTextEdit.
|
||||
"""
|
||||
def __init__(self, *args):
|
||||
global ENCHANT_AVAILABLE
|
||||
QtGui.QPlainTextEdit.__init__(self, *args)
|
||||
# Default dictionary based on the current locale.
|
||||
if ENCHANT_AVAILABLE:
|
||||
try:
|
||||
self.dictionary = enchant.Dict()
|
||||
self.highlighter = Highlighter(self.document())
|
||||
self.highlighter.spellingDictionary = self.dictionary
|
||||
except DictNotFoundError:
|
||||
self.dictionary = enchant.Dict(u'en_US')
|
||||
self.highlighter = Highlighter(self.document())
|
||||
self.highlighter.spellingDictionary = self.dictionary
|
||||
ENCHANT_AVAILABLE = False
|
||||
log.debug(u'Could not load default dictionary')
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
"""
|
||||
|
@ -49,14 +49,17 @@ class UiStrings(object):
|
||||
Cancel = translate('OpenLP.Ui', 'Cancel')
|
||||
CCLINumberLabel = translate('OpenLP.Ui', 'CCLI number:')
|
||||
CreateService = translate('OpenLP.Ui', 'Create a new service.')
|
||||
Continuous = translate('OpenLP.Ui', 'Continuous')
|
||||
Default = unicode(translate('OpenLP.Ui', 'Default'))
|
||||
Delete = translate('OpenLP.Ui', '&Delete')
|
||||
DisplayStyle = translate('OpenLP.Ui', 'Display style:')
|
||||
Edit = translate('OpenLP.Ui', '&Edit')
|
||||
EmptyField = translate('OpenLP.Ui', 'Empty Field')
|
||||
Error = translate('OpenLP.Ui', 'Error')
|
||||
Export = translate('OpenLP.Ui', 'Export')
|
||||
FontSizePtUnit = translate('OpenLP.Ui', 'pt',
|
||||
'Abbreviated font pointsize unit')
|
||||
Hours = translate('OpenLP.Ui', 'h', 'The abbreviated unit for hours')
|
||||
Image = translate('OpenLP.Ui', 'Image')
|
||||
Import = translate('OpenLP.Ui', 'Import')
|
||||
LengthTime = unicode(translate('OpenLP.Ui', 'Length %s'))
|
||||
@ -64,6 +67,7 @@ class UiStrings(object):
|
||||
LiveBGError = translate('OpenLP.Ui', 'Live Background Error')
|
||||
LivePanel = translate('OpenLP.Ui', 'Live Panel')
|
||||
Load = translate('OpenLP.Ui', 'Load')
|
||||
Minutes = translate('OpenLP.Ui', 'm', 'The abbreviated unit for minutes')
|
||||
Middle = translate('OpenLP.Ui', 'Middle')
|
||||
New = translate('OpenLP.Ui', 'New')
|
||||
NewService = translate('OpenLP.Ui', 'New Service')
|
||||
@ -74,6 +78,8 @@ class UiStrings(object):
|
||||
NISp = translate('OpenLP.Ui', 'No Items Selected', 'Plural')
|
||||
OLPV1 = translate('OpenLP.Ui', 'openlp.org 1.x')
|
||||
OLPV2 = translate('OpenLP.Ui', 'OpenLP 2.0')
|
||||
OpenLPStart = translate('OpenLP.Ui', 'OpenLP is already running. Do you '
|
||||
'wish to continue?')
|
||||
OpenService = translate('OpenLP.Ui', 'Open Service')
|
||||
Preview = translate('OpenLP.Ui', 'Preview')
|
||||
PreviewPanel = translate('OpenLP.Ui', 'Preview Panel')
|
||||
@ -82,7 +88,7 @@ class UiStrings(object):
|
||||
ReplaceLiveBG = translate('OpenLP.Ui', 'Replace Live Background')
|
||||
ResetBG = translate('OpenLP.Ui', 'Reset Background')
|
||||
ResetLiveBG = translate('OpenLP.Ui', 'Reset Live Background')
|
||||
S = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds')
|
||||
Seconds = translate('OpenLP.Ui', 's', 'The abbreviated unit for seconds')
|
||||
SaveAndPreview = translate('OpenLP.Ui', 'Save && Preview')
|
||||
Search = translate('OpenLP.Ui', 'Search')
|
||||
SelectDelete = translate('OpenLP.Ui', 'You must select an item to delete.')
|
||||
@ -93,6 +99,8 @@ class UiStrings(object):
|
||||
Theme = translate('OpenLP.Ui', 'Theme', 'Singular')
|
||||
Themes = translate('OpenLP.Ui', 'Themes', 'Plural')
|
||||
Top = translate('OpenLP.Ui', 'Top')
|
||||
VersePerSlide = translate('OpenLP.Ui', 'Verse Per Slide')
|
||||
VersePerLine = translate('OpenLP.Ui', 'Verse Per Line')
|
||||
Version = translate('OpenLP.Ui', 'Version')
|
||||
|
||||
def add_welcome_page(parent, image):
|
||||
@ -311,3 +319,20 @@ def create_valign_combo(form, parent, layout):
|
||||
form.verticalComboBox.addItem(UiStrings.Bottom)
|
||||
verticalLabel.setBuddy(form.verticalComboBox)
|
||||
layout.addRow(verticalLabel, form.verticalComboBox)
|
||||
|
||||
def find_and_set_in_combo_box(combo_box, value_to_find):
|
||||
"""
|
||||
Find a string in a combo box and set it as the selected item if present
|
||||
|
||||
``combo_box``
|
||||
The combo box to check for selected items
|
||||
|
||||
``value_to_find``
|
||||
The value to find
|
||||
"""
|
||||
index = combo_box.findText(value_to_find,
|
||||
QtCore.Qt.MatchExactly)
|
||||
if index == -1:
|
||||
# Not Found.
|
||||
index = 0
|
||||
combo_box.setCurrentIndex(index)
|
@ -133,7 +133,7 @@ class Ui_AboutDialog(object):
|
||||
u'en_ZA': [u'Raoul "superfly" Snyman'],
|
||||
u'et': [u'Mattias "mahfiaz" P\xf5ldaru'],
|
||||
u'fr': [u'Stephan\xe9 "stbrunner" Brunner'],
|
||||
u'hu': [u'Gyuris Gell\xe9t'],
|
||||
u'hu': [u'Gyuris Gell\xe9rt'],
|
||||
u'ja': [u'Kunio "Kunio" Nakamaru'],
|
||||
u'nb': [u'Atle "pendlaren" Weibell', u'Frode "frodus" Woldsund'],
|
||||
u'nl': [u'Arjen "typovar" van Voorst'],
|
||||
|
@ -67,6 +67,10 @@ class AdvancedTab(SettingsTab):
|
||||
self.doubleClickLiveCheckBox = QtGui.QCheckBox(self.uiGroupBox)
|
||||
self.doubleClickLiveCheckBox.setObjectName(u'doubleClickLiveCheckBox')
|
||||
self.uiLayout.addRow(self.doubleClickLiveCheckBox)
|
||||
self.singleClickPreviewCheckBox = QtGui.QCheckBox(self.uiGroupBox)
|
||||
self.singleClickPreviewCheckBox.setObjectName(
|
||||
u'singleClickPreviewCheckBox')
|
||||
self.uiLayout.addRow(self.singleClickPreviewCheckBox)
|
||||
self.expandServiceItemCheckBox = QtGui.QCheckBox(self.uiGroupBox)
|
||||
self.expandServiceItemCheckBox.setObjectName(
|
||||
u'expandServiceItemCheckBox')
|
||||
@ -130,6 +134,8 @@ class AdvancedTab(SettingsTab):
|
||||
'Remember active media manager tab on startup'))
|
||||
self.doubleClickLiveCheckBox.setText(translate('OpenLP.AdvancedTab',
|
||||
'Double-click to send items straight to live'))
|
||||
self.singleClickPreviewCheckBox.setText(translate('OpenLP.AdvancedTab',
|
||||
'Preview items when clicked in Media Manager'))
|
||||
self.expandServiceItemCheckBox.setText(translate('OpenLP.AdvancedTab',
|
||||
'Expand new service items on creation'))
|
||||
self.enableAutoCloseCheckBox.setText(translate('OpenLP.AdvancedTab',
|
||||
@ -164,6 +170,9 @@ class AdvancedTab(SettingsTab):
|
||||
self.doubleClickLiveCheckBox.setChecked(
|
||||
settings.value(u'double click live',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.singleClickPreviewCheckBox.setChecked(
|
||||
settings.value(u'single click preview',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.expandServiceItemCheckBox.setChecked(
|
||||
settings.value(u'expand service item',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
@ -193,6 +202,8 @@ class AdvancedTab(SettingsTab):
|
||||
QtCore.QVariant(self.mediaPluginCheckBox.isChecked()))
|
||||
settings.setValue(u'double click live',
|
||||
QtCore.QVariant(self.doubleClickLiveCheckBox.isChecked()))
|
||||
settings.setValue(u'single click preview',
|
||||
QtCore.QVariant(self.singleClickPreviewCheckBox.isChecked()))
|
||||
settings.setValue(u'expand service item',
|
||||
QtCore.QVariant(self.expandServiceItemCheckBox.isChecked()))
|
||||
settings.setValue(u'enable exit confirmation',
|
||||
|
@ -57,6 +57,7 @@ except ImportError:
|
||||
from openlp.core.lib import translate, SettingsManager
|
||||
from openlp.core.lib.mailto import mailto
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.utils import get_application_version
|
||||
|
||||
from exceptiondialog import Ui_ExceptionDialog
|
||||
|
||||
@ -78,7 +79,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
def _createReport(self):
|
||||
openlp_version = self.parent().applicationVersion[u'full']
|
||||
openlp_version = get_application_version()
|
||||
description = unicode(self.descriptionTextEdit.toPlainText())
|
||||
traceback = unicode(self.exceptionTextEdit.toPlainText())
|
||||
system = unicode(translate('OpenLP.ExceptionForm',
|
||||
|
@ -105,6 +105,9 @@ class GeneralTab(SettingsTab):
|
||||
self.saveCheckServiceCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.saveCheckServiceCheckBox.setObjectName(u'saveCheckServiceCheckBox')
|
||||
self.settingsLayout.addRow(self.saveCheckServiceCheckBox)
|
||||
self.autoUnblankCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.autoUnblankCheckBox.setObjectName(u'autoUnblankCheckBox')
|
||||
self.settingsLayout.addRow(self.autoUnblankCheckBox)
|
||||
self.autoPreviewCheckBox = QtGui.QCheckBox(self.settingsGroupBox)
|
||||
self.autoPreviewCheckBox.setObjectName(u'autoPreviewCheckBox')
|
||||
self.settingsLayout.addRow(self.autoPreviewCheckBox)
|
||||
@ -224,6 +227,8 @@ class GeneralTab(SettingsTab):
|
||||
translate('OpenLP.GeneralTab', 'Application Settings'))
|
||||
self.saveCheckServiceCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Prompt to save before starting a new service'))
|
||||
self.autoUnblankCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Unblank display when adding new live item'))
|
||||
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||
'Automatically preview next item in service'))
|
||||
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
||||
@ -262,6 +267,8 @@ class GeneralTab(SettingsTab):
|
||||
u'songselect password', QtCore.QVariant(u'')).toString()))
|
||||
self.saveCheckServiceCheckBox.setChecked(settings.value(u'save prompt',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.autoUnblankCheckBox.setChecked(settings.value(u'auto unblank',
|
||||
QtCore.QVariant(False)).toBool())
|
||||
self.monitorComboBox.setCurrentIndex(self.monitorNumber)
|
||||
self.displayOnMonitorCheck.setChecked(self.screens.display)
|
||||
self.warningCheckBox.setChecked(settings.value(u'blank warning',
|
||||
@ -312,6 +319,8 @@ class GeneralTab(SettingsTab):
|
||||
QtCore.QVariant(self.checkForUpdatesCheckBox.isChecked()))
|
||||
settings.setValue(u'save prompt',
|
||||
QtCore.QVariant(self.saveCheckServiceCheckBox.isChecked()))
|
||||
settings.setValue(u'auto unblank',
|
||||
QtCore.QVariant(self.autoUnblankCheckBox.isChecked()))
|
||||
settings.setValue(u'auto preview',
|
||||
QtCore.QVariant(self.autoPreviewCheckBox.isChecked()))
|
||||
settings.setValue(u'loop delay',
|
||||
|
@ -367,7 +367,7 @@ class MainDisplay(DisplayWidget):
|
||||
self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath))
|
||||
# Need the timer to trigger set the trigger to 200ms
|
||||
# Value taken from web documentation.
|
||||
if self.serviceItem.start_time != 0:
|
||||
if self.serviceItem.end_time != 0:
|
||||
self.mediaObject.setTickInterval(200)
|
||||
self.mediaObject.play()
|
||||
self.webView.setVisible(False)
|
||||
@ -401,9 +401,9 @@ class MainDisplay(DisplayWidget):
|
||||
def videoTick(self, tick):
|
||||
"""
|
||||
Triggered on video tick every 200 milli seconds
|
||||
Will be used to manage stop time later
|
||||
"""
|
||||
pass
|
||||
if tick > self.serviceItem.end_time * 1000:
|
||||
self.videoFinished()
|
||||
|
||||
def isWebLoaded(self):
|
||||
"""
|
||||
@ -489,7 +489,11 @@ class MainDisplay(DisplayWidget):
|
||||
self.footer(serviceItem.foot_text)
|
||||
# if was hidden keep it hidden
|
||||
if self.hideMode and self.isLive:
|
||||
self.hideDisplay(self.hideMode)
|
||||
if QtCore.QSettings().value(u'general/auto unblank',
|
||||
QtCore.QVariant(False)).toBool():
|
||||
Receiver.send_message(u'slidecontroller_live_unblank')
|
||||
else:
|
||||
self.hideDisplay(self.hideMode)
|
||||
# display hidden for video end we have a new item so must be shown
|
||||
if self.videoHide and self.isLive:
|
||||
self.videoHide = False
|
||||
|
@ -469,7 +469,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
|
||||
actionList = ActionList()
|
||||
|
||||
def __init__(self, screens, clipboard):
|
||||
def __init__(self, screens, clipboard, arguments):
|
||||
"""
|
||||
This constructor sets up the interface, the various managers, and the
|
||||
plugins.
|
||||
@ -477,6 +477,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
QtGui.QMainWindow.__init__(self)
|
||||
self.screens = screens
|
||||
self.clipboard = clipboard
|
||||
self.arguments = arguments
|
||||
# Set up settings sections for the main application
|
||||
# (not for use by plugins)
|
||||
self.uiSettingsSection = u'user interface'
|
||||
@ -660,7 +661,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
if self.liveController.display.isVisible():
|
||||
self.liveController.display.setFocus()
|
||||
self.activateWindow()
|
||||
if QtCore.QSettings().value(
|
||||
# On Windows, arguments contains the entire commandline
|
||||
# So args[0]=='python' args[1]=='openlp.pyw'
|
||||
# Therefore this approach is not going to work
|
||||
# Bypass for now.
|
||||
if len(self.arguments) and os.name != u'nt':
|
||||
args = []
|
||||
for a in self.arguments:
|
||||
args.extend([a])
|
||||
self.ServiceManagerContents.loadFile(unicode(args[0]))
|
||||
elif QtCore.QSettings().value(
|
||||
self.generalSettingsSection + u'/auto open',
|
||||
QtCore.QVariant(False)).toBool():
|
||||
self.ServiceManagerContents.loadLastFile()
|
||||
|
@ -33,12 +33,12 @@ from openlp.core.ui.printservicedialog import Ui_PrintServiceDialog, ZoomSize
|
||||
|
||||
class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
|
||||
def __init__(self, parent, serviceManager):
|
||||
def __init__(self, mainWindow, serviceManager):
|
||||
"""
|
||||
Constructor
|
||||
"""
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.parent = parent
|
||||
QtGui.QDialog.__init__(self, mainWindow)
|
||||
self.mainWindow = mainWindow
|
||||
self.serviceManager = serviceManager
|
||||
self.printer = QtGui.QPrinter()
|
||||
self.printDialog = QtGui.QPrintDialog(self.printer, self)
|
||||
@ -134,9 +134,12 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
item.notes.replace(u'\n', u'<br />'))
|
||||
# Add play length of media files.
|
||||
if item.is_media() and self.metaDataCheckBox.isChecked():
|
||||
tme = item.media_length
|
||||
if item.end_time > 0:
|
||||
tme = item.end_time - item.start_time
|
||||
text += u'<p><strong>%s</strong> %s</p>' % (translate(
|
||||
'OpenLP.ServiceManager', u'Playing time:'),
|
||||
unicode(datetime.timedelta(seconds=item.media_length)))
|
||||
unicode(datetime.timedelta(seconds=tme)))
|
||||
if self.footerTextEdit.toPlainText():
|
||||
text += u'<h4>%s</h4>%s' % (translate('OpenLP.ServiceManager',
|
||||
u'Custom Service Notes:'), self.footerTextEdit.toPlainText())
|
||||
@ -181,13 +184,14 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
||||
"""
|
||||
Copies the display text to the clipboard as plain text
|
||||
"""
|
||||
self.parent.clipboard.setText(self.document.toPlainText())
|
||||
self.mainWindow.clipboard.setText(
|
||||
self.document.toPlainText())
|
||||
|
||||
def copyHtmlText(self):
|
||||
"""
|
||||
Copies the display text to the clipboard as Html
|
||||
"""
|
||||
self.parent.clipboard.setText(self.document.toHtml())
|
||||
self.mainWindow.clipboard.setText(self.document.toHtml())
|
||||
|
||||
def printServiceOrder(self):
|
||||
"""
|
||||
|
@ -141,4 +141,3 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog):
|
||||
else:
|
||||
self.upButton.setEnabled(True)
|
||||
self.deleteButton.setEnabled(True)
|
||||
|
||||
|
@ -35,7 +35,8 @@ from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import OpenLPToolbar, ServiceItem, context_menu_action, \
|
||||
Receiver, build_icon, ItemCapabilities, SettingsManager, translate
|
||||
from openlp.core.lib.theme import ThemeLevel
|
||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box, \
|
||||
find_and_set_in_combo_box
|
||||
from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm
|
||||
from openlp.core.ui.printserviceform import PrintServiceForm
|
||||
from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \
|
||||
@ -231,13 +232,15 @@ class ServiceManager(QtGui.QWidget):
|
||||
QtCore.QObject.connect(self.themeComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onThemeComboBoxSelected)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.makeLive)
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onMakeLive)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'itemCollapsed(QTreeWidgetItem*)'), self.collapsed)
|
||||
QtCore.QObject.connect(self.serviceManagerList,
|
||||
QtCore.SIGNAL(u'itemExpanded(QTreeWidgetItem*)'), self.expanded)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'servicemanager_preview_live'), self.previewLive)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
@ -561,6 +564,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.newFile()
|
||||
for item in items:
|
||||
serviceItem = ServiceItem()
|
||||
serviceItem.from_service = True
|
||||
serviceItem.render_manager = self.mainwindow.renderManager
|
||||
serviceItem.set_from_service(item, self.servicePath)
|
||||
self.validateItem(serviceItem)
|
||||
@ -585,6 +589,21 @@ class ServiceManager(QtGui.QWidget):
|
||||
message=translate('OpenLP.ServiceManager',
|
||||
'File could not be opened because it is corrupt.'))
|
||||
log.exception(u'Problem loading service file %s' % fileName)
|
||||
except zipfile.BadZipfile:
|
||||
if os.path.getsize(fileName) == 0:
|
||||
log.exception(u'Service file is zero sized: %s' % fileName)
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('OpenLP.ServiceManager', 'Empty File'),
|
||||
translate('OpenLP.ServiceManager', 'This service file '
|
||||
'does not contain any data.'))
|
||||
else:
|
||||
log.exception(u'Service file is cannot be extracted as zip: '
|
||||
u'%s' % fileName)
|
||||
QtGui.QMessageBox.information(self,
|
||||
translate('OpenLP.ServiceManager', 'Corrupt File'),
|
||||
translate('OpenLP.ServiceManager', 'This file is either'
|
||||
'corrupt or not an OpenLP 2.0 service file.'))
|
||||
return
|
||||
finally:
|
||||
if fileTo:
|
||||
fileTo.close()
|
||||
@ -658,10 +677,6 @@ class ServiceManager(QtGui.QWidget):
|
||||
item = self.findServiceItem()[0]
|
||||
self.startTimeForm.item = self.serviceItems[item]
|
||||
if self.startTimeForm.exec_():
|
||||
self.serviceItems[item][u'service_item'].start_time = \
|
||||
self.startTimeForm.hourSpinBox.value() * 3600 + \
|
||||
self.startTimeForm.minuteSpinBox.value() * 60 + \
|
||||
self.startTimeForm.secondSpinBox.value()
|
||||
self.repaintServiceList(item, -1)
|
||||
|
||||
def onServiceItemEditForm(self):
|
||||
@ -672,6 +687,19 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.addServiceItem(self.serviceItemEditForm.getServiceItem(),
|
||||
replace=True, expand=self.serviceItems[item][u'expanded'])
|
||||
|
||||
def previewLive(self, message):
|
||||
"""
|
||||
Called by the SlideController to request a preview item be made live
|
||||
and allows the next preview to be updated if relevent.
|
||||
"""
|
||||
uuid, row = message.split(u':')
|
||||
for sitem in self.serviceItems:
|
||||
if sitem[u'service_item']._uuid == uuid:
|
||||
item = self.serviceManagerList.topLevelItem(sitem[u'order'] - 1)
|
||||
self.serviceManagerList.setCurrentItem(item)
|
||||
self.makeLive(int(row))
|
||||
return
|
||||
|
||||
def nextItem(self):
|
||||
"""
|
||||
Called by the SlideController to select the next service item.
|
||||
@ -994,7 +1022,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
editId, uuid = message.split(u':')
|
||||
for item in self.serviceItems:
|
||||
if item[u'service_item']._uuid == uuid:
|
||||
item[u'service_item'].edit_id = editId
|
||||
item[u'service_item'].edit_id = int(editId)
|
||||
self.setModified(True)
|
||||
|
||||
def replaceServiceItem(self, newItem):
|
||||
@ -1027,6 +1055,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
if expand is None:
|
||||
expand = self.expandTabs
|
||||
item.render()
|
||||
item.from_service = True
|
||||
if replace:
|
||||
sitem, child = self.findServiceItem()
|
||||
item.merge(self.serviceItems[sitem][u'service_item'])
|
||||
@ -1081,11 +1110,27 @@ class ServiceManager(QtGui.QWidget):
|
||||
else:
|
||||
return self.serviceItems[item][u'service_item']
|
||||
|
||||
def makeLive(self):
|
||||
def onMakeLive(self):
|
||||
"""
|
||||
Send the current item to the Live slide controller but triggered
|
||||
by a tablewidget click event.
|
||||
"""
|
||||
self.makeLive()
|
||||
|
||||
def makeLive(self, row=-1):
|
||||
"""
|
||||
Send the current item to the Live slide controller
|
||||
|
||||
``row``
|
||||
Row number to be displayed if from preview.
|
||||
-1 is passed if the value is not set
|
||||
"""
|
||||
item, child = self.findServiceItem()
|
||||
# No items in service
|
||||
if item == -1:
|
||||
return
|
||||
if row != -1:
|
||||
child = row
|
||||
if self.serviceItems[item][u'service_item'].is_valid:
|
||||
self.mainwindow.liveController.addServiceManagerItem(
|
||||
self.serviceItems[item][u'service_item'], child)
|
||||
@ -1217,13 +1262,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
action = context_menu_action(self.serviceManagerList, None, theme,
|
||||
self.onThemeChangeAction)
|
||||
self.themeMenu.addAction(action)
|
||||
index = self.themeComboBox.findText(self.service_theme,
|
||||
QtCore.Qt.MatchExactly)
|
||||
# Not Found
|
||||
if index == -1:
|
||||
index = 0
|
||||
self.service_theme = u''
|
||||
self.themeComboBox.setCurrentIndex(index)
|
||||
find_and_set_in_combo_box(self.themeComboBox, self.service_theme)
|
||||
self.mainwindow.renderManager.set_service_theme(self.service_theme)
|
||||
self.regenerateServiceItems()
|
||||
|
||||
@ -1262,4 +1301,4 @@ class ServiceManager(QtGui.QWidget):
|
||||
Print a Service Order Sheet.
|
||||
"""
|
||||
settingDialog = PrintServiceForm(self.mainwindow, self)
|
||||
settingDialog.exec_()
|
||||
settingDialog.exec_()
|
@ -185,7 +185,7 @@ class SlideController(QtGui.QWidget):
|
||||
self.delaySpinBox.setMinimum(1)
|
||||
self.delaySpinBox.setMaximum(180)
|
||||
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
||||
self.delaySpinBox.setSuffix(UiStrings.S)
|
||||
self.delaySpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
||||
'Delay between slides in seconds'))
|
||||
else:
|
||||
@ -1014,8 +1014,12 @@ class SlideController(QtGui.QWidget):
|
||||
"""
|
||||
row = self.previewListWidget.currentRow()
|
||||
if row > -1 and row < self.previewListWidget.rowCount():
|
||||
self.parent.liveController.addServiceManagerItem(
|
||||
self.serviceItem, row)
|
||||
if self.serviceItem.from_service:
|
||||
Receiver.send_message('servicemanager_preview_live',
|
||||
u'%s:%s' % (self.serviceItem._uuid, row))
|
||||
else:
|
||||
self.parent.liveController.addServiceManagerItem(
|
||||
self.serviceItem, row)
|
||||
|
||||
def onMediaStart(self, item):
|
||||
"""
|
||||
|
@ -32,39 +32,90 @@ from openlp.core.lib.ui import UiStrings, create_accept_reject_button_box
|
||||
class Ui_StartTimeDialog(object):
|
||||
def setupUi(self, StartTimeDialog):
|
||||
StartTimeDialog.setObjectName(u'StartTimeDialog')
|
||||
StartTimeDialog.resize(300, 10)
|
||||
StartTimeDialog.resize(350, 10)
|
||||
self.dialogLayout = QtGui.QGridLayout(StartTimeDialog)
|
||||
self.dialogLayout.setObjectName(u'dialogLayout')
|
||||
self.startLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.startLabel.setObjectName(u'startLabel')
|
||||
self.startLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.startLabel, 0, 1, 1, 1)
|
||||
self.finishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.finishLabel.setObjectName(u'finishLabel')
|
||||
self.finishLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.finishLabel, 0, 2, 1, 1)
|
||||
self.lengthLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.lengthLabel.setObjectName(u'startLabel')
|
||||
self.lengthLabel.setAlignment(QtCore.Qt.AlignHCenter)
|
||||
self.dialogLayout.addWidget(self.lengthLabel, 0, 3, 1, 1)
|
||||
self.hourLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.hourLabel.setObjectName("hourLabel")
|
||||
self.dialogLayout.addWidget(self.hourLabel, 0, 0, 1, 1)
|
||||
self.hourLabel.setObjectName(u'hourLabel')
|
||||
self.dialogLayout.addWidget(self.hourLabel, 1, 0, 1, 1)
|
||||
self.hourSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.hourSpinBox.setObjectName("hourSpinBox")
|
||||
self.dialogLayout.addWidget(self.hourSpinBox, 0, 1, 1, 1)
|
||||
self.hourSpinBox.setObjectName(u'hourSpinBox')
|
||||
self.hourSpinBox.setMinimum(0)
|
||||
self.hourSpinBox.setMaximum(4)
|
||||
self.dialogLayout.addWidget(self.hourSpinBox, 1, 1, 1, 1)
|
||||
self.hourFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.hourFinishSpinBox.setObjectName(u'hourFinishSpinBox')
|
||||
self.hourFinishSpinBox.setMinimum(0)
|
||||
self.hourFinishSpinBox.setMaximum(4)
|
||||
self.dialogLayout.addWidget(self.hourFinishSpinBox, 1, 2, 1, 1)
|
||||
self.hourFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.hourFinishLabel.setObjectName(u'hourLabel')
|
||||
self.hourFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.hourFinishLabel, 1, 3, 1, 1)
|
||||
self.minuteLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.minuteLabel.setObjectName("minuteLabel")
|
||||
self.dialogLayout.addWidget(self.minuteLabel, 1, 0, 1, 1)
|
||||
self.minuteLabel.setObjectName(u'minuteLabel')
|
||||
self.dialogLayout.addWidget(self.minuteLabel, 2, 0, 1, 1)
|
||||
self.minuteSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.minuteSpinBox.setObjectName("minuteSpinBox")
|
||||
self.dialogLayout.addWidget(self.minuteSpinBox, 1, 1, 1, 1)
|
||||
self.minuteSpinBox.setObjectName(u'minuteSpinBox')
|
||||
self.minuteSpinBox.setMinimum(0)
|
||||
self.minuteSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.minuteSpinBox, 2, 1, 1, 1)
|
||||
self.minuteFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.minuteFinishSpinBox.setObjectName(u'minuteFinishSpinBox')
|
||||
self.minuteFinishSpinBox.setMinimum(0)
|
||||
self.minuteFinishSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.minuteFinishSpinBox, 2, 2, 1, 1)
|
||||
self.minuteFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.minuteFinishLabel.setObjectName(u'minuteLabel')
|
||||
self.minuteFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.minuteFinishLabel, 2, 3, 1, 1)
|
||||
self.secondLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.secondLabel.setObjectName("secondLabel")
|
||||
self.dialogLayout.addWidget(self.secondLabel, 2, 0, 1, 1)
|
||||
self.secondLabel.setObjectName(u'secondLabel')
|
||||
self.dialogLayout.addWidget(self.secondLabel, 3, 0, 1, 1)
|
||||
self.secondSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.secondSpinBox.setObjectName("secondSpinBox")
|
||||
self.dialogLayout.addWidget(self.secondSpinBox, 2, 1, 1, 1)
|
||||
self.secondSpinBox.setObjectName(u'secondSpinBox')
|
||||
self.secondSpinBox.setMinimum(0)
|
||||
self.secondSpinBox.setMaximum(59)
|
||||
self.secondFinishSpinBox = QtGui.QSpinBox(StartTimeDialog)
|
||||
self.secondFinishSpinBox.setObjectName(u'secondFinishSpinBox')
|
||||
self.secondFinishSpinBox.setMinimum(0)
|
||||
self.secondFinishSpinBox.setMaximum(59)
|
||||
self.dialogLayout.addWidget(self.secondFinishSpinBox, 3, 2, 1, 1)
|
||||
self.secondFinishLabel = QtGui.QLabel(StartTimeDialog)
|
||||
self.secondFinishLabel.setObjectName(u'secondLabel')
|
||||
self.secondFinishLabel.setAlignment(QtCore.Qt.AlignRight)
|
||||
self.dialogLayout.addWidget(self.secondFinishLabel, 3, 3, 1, 1)
|
||||
self.dialogLayout.addWidget(self.secondSpinBox, 3, 1, 1, 1)
|
||||
self.buttonBox = create_accept_reject_button_box(StartTimeDialog, True)
|
||||
self.dialogLayout.addWidget(self.buttonBox, 4, 0, 1, 2)
|
||||
self.dialogLayout.addWidget(self.buttonBox, 5, 2, 1, 2)
|
||||
self.retranslateUi(StartTimeDialog)
|
||||
self.setMaximumHeight(self.sizeHint().height())
|
||||
QtCore.QMetaObject.connectSlotsByName(StartTimeDialog)
|
||||
|
||||
def retranslateUi(self, StartTimeDialog):
|
||||
self.setWindowTitle(translate('OpenLP.StartTimeForm',
|
||||
'Item Start Time'))
|
||||
'Item Start and Finish Time'))
|
||||
self.hourSpinBox.setSuffix(UiStrings.Hours)
|
||||
self.minuteSpinBox.setSuffix(UiStrings.Minutes)
|
||||
self.secondSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.hourFinishSpinBox.setSuffix(UiStrings.Hours)
|
||||
self.minuteFinishSpinBox.setSuffix(UiStrings.Minutes)
|
||||
self.secondFinishSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.hourLabel.setText(translate('OpenLP.StartTimeForm', 'Hours:'))
|
||||
self.hourSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'h'))
|
||||
self.minuteSpinBox.setSuffix(translate('OpenLP.StartTimeForm', 'm'))
|
||||
self.secondSpinBox.setSuffix(UiStrings.S)
|
||||
self.minuteLabel.setText(translate('OpenLP.StartTimeForm', 'Minutes:'))
|
||||
self.secondLabel.setText(translate('OpenLP.StartTimeForm', 'Seconds:'))
|
||||
self.startLabel.setText(translate('OpenLP.StartTimeForm', 'Start'))
|
||||
self.finishLabel.setText(translate('OpenLP.StartTimeForm', 'Finish'))
|
||||
self.lengthLabel.setText(translate('OpenLP.StartTimeForm', 'Length'))
|
||||
|
@ -28,6 +28,9 @@ from PyQt4 import QtGui
|
||||
|
||||
from starttimedialog import Ui_StartTimeDialog
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
||||
|
||||
class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
||||
"""
|
||||
The exception dialog
|
||||
@ -40,13 +43,51 @@ class StartTimeForm(QtGui.QDialog, Ui_StartTimeDialog):
|
||||
"""
|
||||
Run the Dialog with correct heading.
|
||||
"""
|
||||
seconds = self.item[u'service_item'].start_time
|
||||
hour, minutes, seconds = self._time_split(
|
||||
self.item[u'service_item'].start_time)
|
||||
self.hourSpinBox.setValue(hour)
|
||||
self.minuteSpinBox.setValue(minutes)
|
||||
self.secondSpinBox.setValue(seconds)
|
||||
hours, minutes, seconds = self._time_split(
|
||||
self.item[u'service_item'].media_length)
|
||||
self.hourFinishSpinBox.setValue(hours)
|
||||
self.minuteFinishSpinBox.setValue(minutes)
|
||||
self.secondFinishSpinBox.setValue(seconds)
|
||||
self.hourFinishLabel.setText(u'%s%s' % (unicode(hour), UiStrings.Hours))
|
||||
self.minuteFinishLabel.setText(u'%s%s' %
|
||||
(unicode(minutes), UiStrings.Minutes))
|
||||
self.secondFinishLabel.setText(u'%s%s' %
|
||||
(unicode(seconds), UiStrings.Seconds))
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
def accept(self):
|
||||
start = self.hourSpinBox.value() * 3600 + \
|
||||
self.minuteSpinBox.value() * 60 + \
|
||||
self.secondSpinBox.value()
|
||||
end = self.hourFinishSpinBox.value() * 3600 + \
|
||||
self.minuteFinishSpinBox.value() * 60 + \
|
||||
self.secondFinishSpinBox.value()
|
||||
if end > self.item[u'service_item'].media_length:
|
||||
critical_error_message_box(
|
||||
title=translate('OpenLP.StartTimeForm',
|
||||
'Time Validation Error'),
|
||||
message=translate('OpenLP.StartTimeForm',
|
||||
'End time is set after the end of the media item'))
|
||||
return
|
||||
elif start > end:
|
||||
critical_error_message_box(
|
||||
title=translate('OpenLP.StartTimeForm',
|
||||
'Time Validation Error'),
|
||||
message=translate('OpenLP.StartTimeForm',
|
||||
'Start time is after the End Time of the media item'))
|
||||
return
|
||||
self.item[u'service_item'].start_time = start
|
||||
self.item[u'service_item'].end_time = end
|
||||
return QtGui.QDialog.accept(self)
|
||||
|
||||
def _time_split(self, seconds):
|
||||
hours = seconds / 3600
|
||||
seconds -= 3600 * hours
|
||||
minutes = seconds / 60
|
||||
seconds -= 60 * minutes
|
||||
self.hourSpinBox.setValue(hours)
|
||||
self.minuteSpinBox.setValue(minutes)
|
||||
self.secondSpinBox.setValue(seconds)
|
||||
return QtGui.QDialog.exec_(self)
|
||||
|
||||
return hours, minutes, seconds
|
||||
|
@ -63,26 +63,19 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
|
||||
QtCore.SIGNAL(u'currentIndexChanged(int)'),
|
||||
self.onGradientComboBoxCurrentIndexChanged)
|
||||
QtCore.QObject.connect(self.colorButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onColorButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onColorButtonClicked)
|
||||
QtCore.QObject.connect(self.gradientStartButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onGradientStartButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onGradientStartButtonClicked)
|
||||
QtCore.QObject.connect(self.gradientEndButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onGradientEndButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onGradientEndButtonClicked)
|
||||
QtCore.QObject.connect(self.imageBrowseButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onImageBrowseButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onImageBrowseButtonClicked)
|
||||
QtCore.QObject.connect(self.mainColorButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onMainColorButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onMainColorButtonClicked)
|
||||
QtCore.QObject.connect(self.outlineColorButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onOutlineColorButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onOutlineColorButtonClicked)
|
||||
QtCore.QObject.connect(self.shadowColorButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onShadowColorButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onShadowColorButtonClicked)
|
||||
QtCore.QObject.connect(self.outlineCheckBox,
|
||||
QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onOutlineCheckCheckBoxStateChanged)
|
||||
@ -90,8 +83,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
|
||||
QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onShadowCheckCheckBoxStateChanged)
|
||||
QtCore.QObject.connect(self.footerColorButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
self.onFooterColorButtonClicked)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onFooterColorButtonClicked)
|
||||
QtCore.QObject.connect(self.mainPositionCheckBox,
|
||||
QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onMainPositionCheckBoxStateChanged)
|
||||
@ -99,26 +91,23 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
|
||||
QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onFooterPositionCheckBoxStateChanged)
|
||||
QtCore.QObject.connect(self,
|
||||
QtCore.SIGNAL(u'currentIdChanged(int)'),
|
||||
self.onCurrentIdChanged)
|
||||
QtCore.SIGNAL(u'currentIdChanged(int)'), self.onCurrentIdChanged)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'theme_line_count'),
|
||||
self.updateLinesText)
|
||||
QtCore.SIGNAL(u'theme_line_count'), self.updateLinesText)
|
||||
QtCore.QObject.connect(self.mainSizeSpinBox,
|
||||
QtCore.SIGNAL(u'valueChanged(int)'),
|
||||
self.calculateLines)
|
||||
QtCore.SIGNAL(u'valueChanged(int)'), self.calculateLines)
|
||||
QtCore.QObject.connect(self.lineSpacingSpinBox,
|
||||
QtCore.SIGNAL(u'valueChanged(int)'),
|
||||
self.calculateLines)
|
||||
QtCore.SIGNAL(u'valueChanged(int)'), self.calculateLines)
|
||||
QtCore.QObject.connect(self.outlineSizeSpinBox,
|
||||
QtCore.SIGNAL(u'valueChanged(int)'),
|
||||
self.calculateLines)
|
||||
QtCore.SIGNAL(u'valueChanged(int)'), self.calculateLines)
|
||||
QtCore.QObject.connect(self.shadowSizeSpinBox,
|
||||
QtCore.SIGNAL(u'valueChanged(int)'),
|
||||
self.calculateLines)
|
||||
QtCore.SIGNAL(u'valueChanged(int)'), self.calculateLines)
|
||||
QtCore.QObject.connect(self.mainFontComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'),
|
||||
self.calculateLines)
|
||||
QtCore.SIGNAL(u'activated(int)'), self.calculateLines)
|
||||
QtCore.QObject.connect(self.footerFontComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.updateTheme)
|
||||
QtCore.QObject.connect(self.footerSizeSpinBox,
|
||||
QtCore.SIGNAL(u'valueChanged(int)'), self.updateTheme)
|
||||
|
||||
def setDefaults(self):
|
||||
"""
|
||||
@ -389,7 +378,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
|
||||
Handle the display and state of the Footer Area page.
|
||||
"""
|
||||
self.footerFontComboBox.setCurrentFont(
|
||||
QtGui.QFont(self.theme.font_main_name))
|
||||
QtGui.QFont(self.theme.font_footer_name))
|
||||
self.footerColorButton.setStyleSheet(u'background-color: %s' %
|
||||
self.theme.font_footer_color)
|
||||
self.setField(u'footerSizeSpinBox',
|
||||
|
@ -445,6 +445,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
files = SettingsManager.get_files(self.settingsSection, u'.png')
|
||||
if firstTime:
|
||||
self.firstTime()
|
||||
files = SettingsManager.get_files(self.settingsSection, u'.png')
|
||||
# No themes have been found so create one
|
||||
if len(files) == 0:
|
||||
theme = ThemeXML()
|
||||
|
@ -28,7 +28,7 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, Receiver, translate
|
||||
from openlp.core.lib.theme import ThemeLevel
|
||||
from openlp.core.lib.ui import UiStrings
|
||||
from openlp.core.lib.ui import UiStrings, find_and_set_in_combo_box
|
||||
|
||||
class ThemesTab(SettingsTab):
|
||||
"""
|
||||
@ -185,12 +185,7 @@ class ThemesTab(SettingsTab):
|
||||
self.DefaultComboBox.clear()
|
||||
for theme in theme_list:
|
||||
self.DefaultComboBox.addItem(theme)
|
||||
id = self.DefaultComboBox.findText(
|
||||
self.global_theme, QtCore.Qt.MatchExactly)
|
||||
if id == -1:
|
||||
id = 0 # Not Found
|
||||
self.global_theme = u''
|
||||
self.DefaultComboBox.setCurrentIndex(id)
|
||||
find_and_set_in_combo_box(self.DefaultComboBox, self.global_theme)
|
||||
self.parent.renderManager.set_global_theme(
|
||||
self.global_theme, self.theme_level)
|
||||
if self.global_theme is not u'':
|
||||
@ -206,4 +201,4 @@ class ThemesTab(SettingsTab):
|
||||
if not preview.isNull():
|
||||
preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio,
|
||||
QtCore.Qt.SmoothTransformation)
|
||||
self.DefaultListView.setPixmap(preview)
|
||||
self.DefaultListView.setPixmap(preview)
|
@ -91,7 +91,7 @@ class LanguageManager(object):
|
||||
"""
|
||||
Retrieve a saved language to use from settings
|
||||
"""
|
||||
settings = QtCore.QSettings(u'OpenLP', u'OpenLP')
|
||||
settings = QtCore.QSettings()
|
||||
language = unicode(settings.value(
|
||||
u'general/language', QtCore.QVariant(u'[en]')).toString())
|
||||
log.info(u'Language file: \'%s\' Loaded from conf file' % language)
|
||||
|
@ -112,7 +112,7 @@ class AlertsTab(SettingsTab):
|
||||
self.FontSizeSpinBox.setSuffix(UiStrings.FontSizePtUnit)
|
||||
self.TimeoutLabel.setText(
|
||||
translate('AlertsPlugin.AlertsTab', 'Alert timeout:'))
|
||||
self.TimeoutSpinBox.setSuffix(UiStrings.S)
|
||||
self.TimeoutSpinBox.setSuffix(UiStrings.Seconds)
|
||||
self.PreviewGroupBox.setTitle(UiStrings.Preview)
|
||||
self.FontPreview.setText(UiStrings.OLPV2)
|
||||
|
||||
|
@ -85,8 +85,18 @@ class BibleImportForm(OpenLPWizard):
|
||||
"""
|
||||
OpenLPWizard.setupUi(self, image)
|
||||
QtCore.QObject.connect(self.formatComboBox,
|
||||
QtCore.SIGNAL(u'currentIndexChanged(int)'), self.selectStack,
|
||||
QtCore.SLOT(u'setCurrentIndex(int)'))
|
||||
QtCore.SIGNAL(u'currentIndexChanged(int)'),
|
||||
self.onCurrentIndexChanged)
|
||||
|
||||
def onCurrentIndexChanged(self, index):
|
||||
"""
|
||||
Called when the format combo box's index changed. We have to check if
|
||||
the import is available and accordingly to disable or enable the next
|
||||
button.
|
||||
"""
|
||||
self.selectStack.setCurrentIndex(index)
|
||||
next_button = self.button(QtGui.QWizard.NextButton)
|
||||
next_button.setEnabled(BibleFormat.get_availability(index))
|
||||
|
||||
def customInit(self):
|
||||
"""
|
||||
|
@ -30,6 +30,7 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Receiver, SettingsTab, translate
|
||||
from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle
|
||||
from openlp.core.lib.ui import UiStrings, find_and_set_in_combo_box
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@ -48,108 +49,107 @@ class BiblesTab(SettingsTab):
|
||||
def setupUi(self):
|
||||
self.setObjectName(u'BiblesTab')
|
||||
SettingsTab.setupUi(self)
|
||||
self.VerseDisplayGroupBox = QtGui.QGroupBox(self.leftColumn)
|
||||
self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox')
|
||||
self.VerseDisplayLayout = QtGui.QFormLayout(self.VerseDisplayGroupBox)
|
||||
self.VerseDisplayLayout.setObjectName(u'VerseDisplayLayout')
|
||||
self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
|
||||
self.NewChaptersCheckBox.setObjectName(u'NewChaptersCheckBox')
|
||||
self.VerseDisplayLayout.addRow(self.NewChaptersCheckBox)
|
||||
self.DisplayStyleLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
|
||||
self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')
|
||||
self.DisplayStyleComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
|
||||
self.DisplayStyleComboBox.addItems([u'', u'', u'', u''])
|
||||
self.DisplayStyleComboBox.setObjectName(u'DisplayStyleComboBox')
|
||||
self.VerseDisplayLayout.addRow(self.DisplayStyleLabel,
|
||||
self.DisplayStyleComboBox)
|
||||
self.LayoutStyleLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
|
||||
self.LayoutStyleLabel.setObjectName(u'LayoutStyleLabel')
|
||||
self.LayoutStyleComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
|
||||
self.LayoutStyleComboBox.setObjectName(u'LayoutStyleComboBox')
|
||||
self.LayoutStyleComboBox.addItems([u'', u'', u''])
|
||||
self.VerseDisplayLayout.addRow(self.LayoutStyleLabel,
|
||||
self.LayoutStyleComboBox)
|
||||
self.BibleSecondCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
|
||||
self.BibleSecondCheckBox.setObjectName(u'BibleSecondCheckBox')
|
||||
self.VerseDisplayLayout.addRow(self.BibleSecondCheckBox)
|
||||
self.BibleThemeLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
|
||||
self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')
|
||||
self.BibleThemeComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
|
||||
self.BibleThemeComboBox.setSizeAdjustPolicy(
|
||||
self.verseDisplayGroupBox = QtGui.QGroupBox(self.leftColumn)
|
||||
self.verseDisplayGroupBox.setObjectName(u'verseDisplayGroupBox')
|
||||
self.verseDisplayLayout = QtGui.QFormLayout(self.verseDisplayGroupBox)
|
||||
self.verseDisplayLayout.setObjectName(u'verseDisplayLayout')
|
||||
self.newChaptersCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
|
||||
self.newChaptersCheckBox.setObjectName(u'newChaptersCheckBox')
|
||||
self.verseDisplayLayout.addRow(self.newChaptersCheckBox)
|
||||
self.displayStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
||||
self.displayStyleLabel.setObjectName(u'displayStyleLabel')
|
||||
self.displayStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
||||
self.displayStyleComboBox.addItems([u'', u'', u'', u''])
|
||||
self.displayStyleComboBox.setObjectName(u'displayStyleComboBox')
|
||||
self.verseDisplayLayout.addRow(self.displayStyleLabel,
|
||||
self.displayStyleComboBox)
|
||||
self.layoutStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
||||
self.layoutStyleLabel.setObjectName(u'layoutStyleLabel')
|
||||
self.layoutStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
||||
self.layoutStyleComboBox.setObjectName(u'layoutStyleComboBox')
|
||||
self.layoutStyleComboBox.addItems([u'', u'', u''])
|
||||
self.verseDisplayLayout.addRow(self.layoutStyleLabel,
|
||||
self.layoutStyleComboBox)
|
||||
self.bibleSecondCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
|
||||
self.bibleSecondCheckBox.setObjectName(u'bibleSecondCheckBox')
|
||||
self.verseDisplayLayout.addRow(self.bibleSecondCheckBox)
|
||||
self.bibleThemeLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
||||
self.bibleThemeLabel.setObjectName(u'BibleThemeLabel')
|
||||
self.bibleThemeComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
|
||||
self.bibleThemeComboBox.setSizeAdjustPolicy(
|
||||
QtGui.QComboBox.AdjustToMinimumContentsLength)
|
||||
self.BibleThemeComboBox.setSizePolicy(
|
||||
self.bibleThemeComboBox.setSizePolicy(
|
||||
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
|
||||
self.BibleThemeComboBox.addItem(u'')
|
||||
self.BibleThemeComboBox.setObjectName(u'BibleThemeComboBox')
|
||||
self.VerseDisplayLayout.addRow(self.BibleThemeLabel,
|
||||
self.BibleThemeComboBox)
|
||||
self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
|
||||
self.ChangeNoteLabel.setWordWrap(True)
|
||||
self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')
|
||||
self.VerseDisplayLayout.addRow(self.ChangeNoteLabel)
|
||||
self.leftLayout.addWidget(self.VerseDisplayGroupBox)
|
||||
self.bibleThemeComboBox.addItem(u'')
|
||||
self.bibleThemeComboBox.setObjectName(u'BibleThemeComboBox')
|
||||
self.verseDisplayLayout.addRow(self.bibleThemeLabel,
|
||||
self.bibleThemeComboBox)
|
||||
self.changeNoteLabel = QtGui.QLabel(self.verseDisplayGroupBox)
|
||||
self.changeNoteLabel.setWordWrap(True)
|
||||
self.changeNoteLabel.setObjectName(u'changeNoteLabel')
|
||||
self.verseDisplayLayout.addRow(self.changeNoteLabel)
|
||||
self.leftLayout.addWidget(self.verseDisplayGroupBox)
|
||||
self.leftLayout.addStretch()
|
||||
self.rightColumn.setSizePolicy(
|
||||
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
|
||||
self.rightLayout.addStretch()
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(
|
||||
self.NewChaptersCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.newChaptersCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onNewChaptersCheckBoxChanged)
|
||||
QtCore.QObject.connect(
|
||||
self.DisplayStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.displayStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.onDisplayStyleComboBoxChanged)
|
||||
QtCore.QObject.connect(
|
||||
self.BibleThemeComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.bibleThemeComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.onBibleThemeComboBoxChanged)
|
||||
QtCore.QObject.connect(
|
||||
self.LayoutStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.layoutStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.onLayoutStyleComboBoxChanged)
|
||||
QtCore.QObject.connect(
|
||||
self.BibleSecondCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.bibleSecondCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
|
||||
self.onBibleSecondCheckBox)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
|
||||
|
||||
def retranslateUi(self):
|
||||
self.VerseDisplayGroupBox.setTitle(
|
||||
self.verseDisplayGroupBox.setTitle(
|
||||
translate('BiblesPlugin.BiblesTab', 'Verse Display'))
|
||||
self.NewChaptersCheckBox.setText(
|
||||
self.newChaptersCheckBox.setText(
|
||||
translate('BiblesPlugin.BiblesTab',
|
||||
'Only show new chapter numbers'))
|
||||
self.LayoutStyleLabel.setText(
|
||||
self.layoutStyleLabel.setText(
|
||||
translate('BiblesPlugin.BiblesTab', 'Layout style:'))
|
||||
self.DisplayStyleLabel.setText(
|
||||
translate('BiblesPlugin.BiblesTab', 'Display style:'))
|
||||
self.BibleThemeLabel.setText(
|
||||
self.displayStyleLabel.setText(UiStrings.DisplayStyle)
|
||||
self.bibleThemeLabel.setText(
|
||||
translate('BiblesPlugin.BiblesTab', 'Bible theme:'))
|
||||
self.LayoutStyleComboBox.setItemText(LayoutStyle.VersePerSlide,
|
||||
translate('BiblesPlugin.BiblesTab', 'Verse Per Slide'))
|
||||
self.LayoutStyleComboBox.setItemText(LayoutStyle.VersePerLine,
|
||||
translate('BiblesPlugin.BiblesTab', 'Verse Per Line'))
|
||||
self.LayoutStyleComboBox.setItemText(LayoutStyle.Continuous,
|
||||
translate('BiblesPlugin.BiblesTab', 'Continuous'))
|
||||
self.DisplayStyleComboBox.setItemText(DisplayStyle.NoBrackets,
|
||||
self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerSlide,
|
||||
UiStrings.VersePerSlide)
|
||||
self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerLine,
|
||||
UiStrings.VersePerLine)
|
||||
self.layoutStyleComboBox.setItemText(LayoutStyle.Continuous,
|
||||
UiStrings.Continuous)
|
||||
self.displayStyleComboBox.setItemText(DisplayStyle.NoBrackets,
|
||||
translate('BiblesPlugin.BiblesTab', 'No Brackets'))
|
||||
self.DisplayStyleComboBox.setItemText(DisplayStyle.Round,
|
||||
self.displayStyleComboBox.setItemText(DisplayStyle.Round,
|
||||
translate('BiblesPlugin.BiblesTab', '( And )'))
|
||||
self.DisplayStyleComboBox.setItemText(DisplayStyle.Curly,
|
||||
self.displayStyleComboBox.setItemText(DisplayStyle.Curly,
|
||||
translate('BiblesPlugin.BiblesTab', '{ And }'))
|
||||
self.DisplayStyleComboBox.setItemText(DisplayStyle.Square,
|
||||
self.displayStyleComboBox.setItemText(DisplayStyle.Square,
|
||||
translate('BiblesPlugin.BiblesTab', '[ And ]'))
|
||||
self.ChangeNoteLabel.setText(translate('BiblesPlugin.BiblesTab',
|
||||
self.changeNoteLabel.setText(translate('BiblesPlugin.BiblesTab',
|
||||
'Note:\nChanges do not affect verses already in the service.'))
|
||||
self.BibleSecondCheckBox.setText(
|
||||
self.bibleSecondCheckBox.setText(
|
||||
translate('BiblesPlugin.BiblesTab', 'Display second Bible verses'))
|
||||
|
||||
def onBibleThemeComboBoxChanged(self):
|
||||
self.bible_theme = self.BibleThemeComboBox.currentText()
|
||||
self.bible_theme = self.bibleThemeComboBox.currentText()
|
||||
|
||||
def onDisplayStyleComboBoxChanged(self):
|
||||
self.display_style = self.DisplayStyleComboBox.currentIndex()
|
||||
self.display_style = self.displayStyleComboBox.currentIndex()
|
||||
|
||||
def onLayoutStyleComboBoxChanged(self):
|
||||
self.layout_style = self.LayoutStyleComboBox.currentIndex()
|
||||
self.layout_style = self.layoutStyleComboBox.currentIndex()
|
||||
|
||||
def onNewChaptersCheckBoxChanged(self, check_state):
|
||||
self.show_new_chapters = False
|
||||
@ -176,10 +176,10 @@ class BiblesTab(SettingsTab):
|
||||
settings.value(u'bible theme', QtCore.QVariant(u'')).toString())
|
||||
self.second_bibles = settings.value(
|
||||
u'second bibles', QtCore.QVariant(True)).toBool()
|
||||
self.NewChaptersCheckBox.setChecked(self.show_new_chapters)
|
||||
self.DisplayStyleComboBox.setCurrentIndex(self.display_style)
|
||||
self.LayoutStyleComboBox.setCurrentIndex(self.layout_style)
|
||||
self.BibleSecondCheckBox.setChecked(self.second_bibles)
|
||||
self.newChaptersCheckBox.setChecked(self.show_new_chapters)
|
||||
self.displayStyleComboBox.setCurrentIndex(self.display_style)
|
||||
self.layoutStyleComboBox.setCurrentIndex(self.layout_style)
|
||||
self.bibleSecondCheckBox.setChecked(self.second_bibles)
|
||||
settings.endGroup()
|
||||
|
||||
def save(self):
|
||||
@ -204,14 +204,8 @@ class BiblesTab(SettingsTab):
|
||||
|
||||
[u'Bible Theme', u'Song Theme']
|
||||
"""
|
||||
self.BibleThemeComboBox.clear()
|
||||
self.BibleThemeComboBox.addItem(u'')
|
||||
self.bibleThemeComboBox.clear()
|
||||
self.bibleThemeComboBox.addItem(u'')
|
||||
for theme in theme_list:
|
||||
self.BibleThemeComboBox.addItem(theme)
|
||||
index = self.BibleThemeComboBox.findText(
|
||||
unicode(self.bible_theme), QtCore.Qt.MatchExactly)
|
||||
if index == -1:
|
||||
# Not Found.
|
||||
index = 0
|
||||
self.bible_theme = u''
|
||||
self.BibleThemeComboBox.setCurrentIndex(index)
|
||||
self.bibleThemeComboBox.addItem(theme)
|
||||
find_and_set_in_combo_box(self.bibleThemeComboBox, self.bible_theme)
|
||||
|
@ -32,7 +32,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
||||
translate
|
||||
from openlp.core.lib.searchedit import SearchEdit
|
||||
from openlp.core.lib.ui import UiStrings, add_widget_completer, \
|
||||
media_item_combo_box, critical_error_message_box
|
||||
media_item_combo_box, critical_error_message_box, find_and_set_in_combo_box
|
||||
from openlp.plugins.bibles.forms import BibleImportForm
|
||||
from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \
|
||||
VerseReferenceList, get_reference_match
|
||||
@ -106,6 +106,12 @@ class BibleMediaItem(MediaManagerItem):
|
||||
translate('BiblesPlugin.MediaItem', 'Text Search'))
|
||||
])
|
||||
self.quickLayout.addRow(self.quickSearchLabel, self.quickSearchEdit)
|
||||
self.quickLayoutLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickLayoutLabel.setObjectName(u'quickClearLabel')
|
||||
self.quickLayoutComboBox = media_item_combo_box(self.quickTab,
|
||||
u'quickLayoutComboBox')
|
||||
self.quickLayoutComboBox.addItems([u'', u'', u''])
|
||||
self.quickLayout.addRow(self.quickLayoutLabel, self.quickLayoutComboBox)
|
||||
self.quickClearLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickClearLabel.setObjectName(u'quickClearLabel')
|
||||
self.quickClearComboBox = media_item_combo_box(self.quickTab,
|
||||
@ -210,6 +216,9 @@ class BibleMediaItem(MediaManagerItem):
|
||||
QtCore.SIGNAL(u'searchTypeChanged(int)'), self.updateAutoCompleter)
|
||||
QtCore.QObject.connect(self.quickVersionComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
|
||||
QtCore.QObject.connect(
|
||||
self.quickLayoutComboBox, QtCore.SIGNAL(u'activated(int)'),
|
||||
self.onlayoutStyleComboBoxChanged)
|
||||
# Buttons
|
||||
QtCore.QObject.connect(self.advancedSearchButton,
|
||||
QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)
|
||||
@ -234,6 +243,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.advancedSecondComboBox.setVisible(False)
|
||||
self.quickSecondLabel.setVisible(False)
|
||||
self.quickSecondComboBox.setVisible(False)
|
||||
self.quickLayoutComboBox.setCurrentIndex(self.settings.layout_style)
|
||||
|
||||
def retranslateUi(self):
|
||||
log.debug(u'retranslateUi')
|
||||
@ -269,12 +279,19 @@ class BibleMediaItem(MediaManagerItem):
|
||||
translate('BiblesPlugin.MediaItem', 'Clear'))
|
||||
self.advancedClearComboBox.addItem(
|
||||
translate('BiblesPlugin.MediaItem', 'Keep'))
|
||||
self.quickLayoutLabel.setText(UiStrings.DisplayStyle)
|
||||
self.quickLayoutComboBox.setItemText(LayoutStyle.VersePerSlide,
|
||||
UiStrings.VersePerSlide)
|
||||
self.quickLayoutComboBox.setItemText(LayoutStyle.VersePerLine,
|
||||
UiStrings.VersePerLine)
|
||||
self.quickLayoutComboBox.setItemText(LayoutStyle.Continuous,
|
||||
UiStrings.Continuous)
|
||||
|
||||
def initialise(self):
|
||||
log.debug(u'bible manager initialise')
|
||||
self.parent.manager.media = self
|
||||
self.loadBibles()
|
||||
self.updateAutoCompleter()
|
||||
self.updateAutoCompleter(False)
|
||||
self.configUpdated()
|
||||
log.debug(u'bible manager initialise complete')
|
||||
|
||||
@ -298,23 +315,26 @@ class BibleMediaItem(MediaManagerItem):
|
||||
bibles = self.parent.manager.get_bibles().keys()
|
||||
bibles.sort()
|
||||
# Load the bibles into the combo boxes.
|
||||
first = True
|
||||
for bible in bibles:
|
||||
if bible:
|
||||
self.quickVersionComboBox.addItem(bible)
|
||||
self.quickSecondComboBox.addItem(bible)
|
||||
self.advancedVersionComboBox.addItem(bible)
|
||||
self.advancedSecondComboBox.addItem(bible)
|
||||
if first:
|
||||
first = False
|
||||
self.initialiseBible(bible)
|
||||
# set the default value
|
||||
bible = QtCore.QSettings().value(
|
||||
self.settingsSection + u'/advanced bible',
|
||||
QtCore.QVariant(u'')).toString()
|
||||
if bible in bibles:
|
||||
find_and_set_in_combo_box(self.advancedVersionComboBox, bible)
|
||||
self.initialiseAdvancedBible(unicode(bible))
|
||||
|
||||
def reloadBibles(self):
|
||||
log.debug(u'Reloading Bibles')
|
||||
self.parent.manager.reload_bibles()
|
||||
self.loadBibles()
|
||||
|
||||
def initialiseBible(self, bible):
|
||||
def initialiseAdvancedBible(self, bible):
|
||||
"""
|
||||
This initialises the given bible, which means that its book names and
|
||||
their chapter numbers is added to the combo boxes on the
|
||||
@ -324,7 +344,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
``bible``
|
||||
The bible to initialise (unicode).
|
||||
"""
|
||||
log.debug(u'initialiseBible %s', bible)
|
||||
log.debug(u'initialiseAdvancedBible %s', bible)
|
||||
book_data = self.parent.manager.get_books(bible)
|
||||
self.advancedBookComboBox.clear()
|
||||
first = True
|
||||
@ -354,12 +374,20 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.adjustComboBox(1, verse_count, self.advancedFromVerse)
|
||||
self.adjustComboBox(1, verse_count, self.advancedToVerse)
|
||||
|
||||
def updateAutoCompleter(self):
|
||||
def updateAutoCompleter(self, updateConfig=True):
|
||||
"""
|
||||
This updates the bible book completion list for the search field. The
|
||||
completion depends on the bible. It is only updated when we are doing a
|
||||
reference search, otherwise the auto completion list is removed.
|
||||
"""
|
||||
if updateConfig:
|
||||
QtCore.QSettings().setValue(self.settingsSection + u'/quick bible',
|
||||
QtCore.QVariant(self.quickVersionComboBox.currentText()))
|
||||
else:
|
||||
book = QtCore.QSettings().value(
|
||||
self.settingsSection + u'/quick bible',
|
||||
QtCore.QVariant(u'')).toString()
|
||||
find_and_set_in_combo_box(self.quickVersionComboBox, book)
|
||||
books = []
|
||||
# We have to do a 'Reference Search'.
|
||||
if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference:
|
||||
@ -372,7 +400,9 @@ class BibleMediaItem(MediaManagerItem):
|
||||
add_widget_completer(books, self.quickSearchEdit)
|
||||
|
||||
def onAdvancedVersionComboBox(self):
|
||||
self.initialiseBible(
|
||||
QtCore.QSettings().setValue(self.settingsSection + u'/advanced bible',
|
||||
QtCore.QVariant(self.advancedVersionComboBox.currentText()))
|
||||
self.initialiseAdvancedBible(
|
||||
unicode(self.advancedVersionComboBox.currentText()))
|
||||
|
||||
def onAdvancedBookComboBox(self):
|
||||
@ -804,3 +834,11 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if self.settings.display_style == DisplayStyle.Square:
|
||||
return u'{su}[%s]{/su}' % verse_text
|
||||
return u'{su}%s{/su}' % verse_text
|
||||
|
||||
def onlayoutStyleComboBoxChanged(self):
|
||||
self.settings.layout_style = self.quickLayoutComboBox.currentIndex()
|
||||
self.settings.layoutStyleComboBox.setCurrentIndex(
|
||||
self.settings.layout_style)
|
||||
QtCore.QSettings().setValue(
|
||||
self.settingsSection + u'/verse layout style',
|
||||
QtCore.QVariant(self.settings.layout_style))
|
||||
|
@ -96,4 +96,7 @@ class VerseReferenceList(object):
|
||||
version[u'copyright'])
|
||||
if version[u'permission'].strip():
|
||||
result = result + u', ' + version[u'permission']
|
||||
result = result.rstrip()
|
||||
if result.endswith(u','):
|
||||
return result[:len(result)-1]
|
||||
return result
|
||||
|
@ -29,7 +29,7 @@ import logging
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Receiver, translate
|
||||
from openlp.core.lib.ui import critical_error_message_box
|
||||
from openlp.core.lib.ui import critical_error_message_box, find_and_set_in_combo_box
|
||||
from openlp.plugins.custom.lib import CustomXMLBuilder, CustomXMLParser
|
||||
from openlp.plugins.custom.lib.db import CustomSlide
|
||||
from editcustomdialog import Ui_CustomEditDialog
|
||||
@ -98,11 +98,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
||||
for slide in slideList:
|
||||
self.slideListView.addItem(slide[1])
|
||||
theme = self.customSlide.theme_name
|
||||
id = self.themeComboBox.findText(theme, QtCore.Qt.MatchExactly)
|
||||
# No theme match
|
||||
if id == -1:
|
||||
id = 0
|
||||
self.themeComboBox.setCurrentIndex(id)
|
||||
find_and_set_in_combo_box(self.themeComboBox, theme)
|
||||
# If not preview hide the preview button.
|
||||
self.previewButton.setVisible(False)
|
||||
if preview:
|
||||
@ -265,4 +261,4 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
||||
message=translate('CustomPlugin.EditCustomForm',
|
||||
'You need to add at least one slide'))
|
||||
return False
|
||||
return True
|
||||
return True
|
@ -45,7 +45,7 @@ class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog):
|
||||
self.setupUi(self)
|
||||
# Connecting signals and slots
|
||||
QtCore.QObject.connect(self.splitButton,
|
||||
QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed)
|
||||
QtCore.SIGNAL(u'clicked()'), self.onSplitButtonPressed)
|
||||
|
||||
def setText(self, text):
|
||||
"""
|
||||
|
@ -46,6 +46,7 @@ class CustomMediaItem(MediaManagerItem):
|
||||
self.IconPath = u'custom/custom'
|
||||
MediaManagerItem.__init__(self, parent, self, icon)
|
||||
self.singleServiceItem = False
|
||||
self.quickPreviewAllowed = True
|
||||
# Holds information about whether the edit is remotly triggered and
|
||||
# which Custom is required.
|
||||
self.remoteCustom = -1
|
||||
|
@ -46,6 +46,7 @@ class ImageMediaItem(MediaManagerItem):
|
||||
def __init__(self, parent, plugin, icon):
|
||||
self.IconPath = u'images/image'
|
||||
MediaManagerItem.__init__(self, parent, self, icon)
|
||||
self.quickPreviewAllowed = True
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'live_theme_changed'), self.liveThemeChanged)
|
||||
|
||||
|
@ -105,7 +105,7 @@ class PresentationDocument(object):
|
||||
Loads the presentation and starts it
|
||||
|
||||
``presentation``
|
||||
The file name of the presentations to the run.
|
||||
The file name of the presentations to the run.
|
||||
|
||||
Returns False if the file could not be opened
|
||||
"""
|
||||
|
@ -31,7 +31,7 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Receiver, translate
|
||||
from openlp.core.lib.ui import UiStrings, add_widget_completer, \
|
||||
critical_error_message_box
|
||||
critical_error_message_box, find_and_set_in_combo_box
|
||||
from openlp.plugins.songs.forms import EditVerseForm
|
||||
from openlp.plugins.songs.lib import SongXML, VerseType, clean_song
|
||||
from openlp.plugins.songs.lib.db import Book, Song, Author, Topic
|
||||
@ -208,20 +208,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
self.alternativeEdit.setText(u'')
|
||||
if self.song.song_book_id != 0:
|
||||
book_name = self.manager.get_object(Book, self.song.song_book_id)
|
||||
id = self.songBookComboBox.findText(
|
||||
unicode(book_name.name), QtCore.Qt.MatchExactly)
|
||||
if id == -1:
|
||||
# Not Found
|
||||
id = 0
|
||||
self.songBookComboBox.setCurrentIndex(id)
|
||||
find_and_set_in_combo_box(self.songBookComboBox, unicode(book_name.name))
|
||||
if self.song.theme_name:
|
||||
id = self.themeComboBox.findText(
|
||||
unicode(self.song.theme_name), QtCore.Qt.MatchExactly)
|
||||
if id == -1:
|
||||
# Not Found
|
||||
id = 0
|
||||
self.song.theme_name = None
|
||||
self.themeComboBox.setCurrentIndex(id)
|
||||
find_and_set_in_combo_box(self.themeComboBox, unicode(self.song.theme_name))
|
||||
if self.song.copyright:
|
||||
self.copyrightEdit.setText(self.song.copyright)
|
||||
else:
|
||||
@ -269,6 +258,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
if index is None:
|
||||
index = VerseType.Other
|
||||
verse[0][u'type'] = VerseType.Tags[index]
|
||||
if verse[0][u'label'] == u'':
|
||||
verse[0][u'label'] = u'1'
|
||||
verse_def = u'%s%s' % (verse[0][u'type'], verse[0][u'label'])
|
||||
item = QtGui.QTableWidgetItem(verse[1])
|
||||
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(verse_def))
|
||||
@ -788,4 +779,4 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
self.song.verse_order)
|
||||
except:
|
||||
log.exception(u'Problem processing song Lyrics \n%s',
|
||||
sxml.dump_xml())
|
||||
sxml.dump_xml())
|
@ -66,7 +66,17 @@ class SongImportForm(OpenLPWizard):
|
||||
self.formatStack.setCurrentIndex(0)
|
||||
QtCore.QObject.connect(self.formatComboBox,
|
||||
QtCore.SIGNAL(u'currentIndexChanged(int)'),
|
||||
self.formatStack.setCurrentIndex)
|
||||
self.onCurrentIndexChanged)
|
||||
|
||||
def onCurrentIndexChanged(self, index):
|
||||
"""
|
||||
Called when the format combo box's index changed. We have to check if
|
||||
the import is available and accordingly to disable or enable the next
|
||||
button.
|
||||
"""
|
||||
self.formatStack.setCurrentIndex(index)
|
||||
next_button = self.button(QtGui.QWizard.NextButton)
|
||||
next_button.setEnabled(SongFormat.get_availability(index))
|
||||
|
||||
def customInit(self):
|
||||
"""
|
||||
|
@ -73,6 +73,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
self.remoteSong = -1
|
||||
self.editItem = None
|
||||
self.whitespace = re.compile(r'\W+', re.UNICODE)
|
||||
self.quickPreviewAllowed = True
|
||||
|
||||
def addEndHeaderBar(self):
|
||||
self.addToolbarSeparator()
|
||||
@ -282,19 +283,20 @@ class SongMediaItem(MediaManagerItem):
|
||||
self.remoteTriggered = None
|
||||
self.remoteSong = -1
|
||||
|
||||
def onRemoteEdit(self, songid):
|
||||
def onRemoteEdit(self, message):
|
||||
"""
|
||||
Called by ServiceManager or SlideController by event passing
|
||||
the Song Id in the payload along with an indicator to say which
|
||||
type of display is required.
|
||||
"""
|
||||
log.debug(u'onRemoteEdit %s' % songid)
|
||||
fields = songid.split(u':')
|
||||
valid = self.parent.manager.get_object(Song, fields[1])
|
||||
log.debug(u'onRemoteEdit %s' % message)
|
||||
remote_type, song_id = message.split(u':')
|
||||
song_id = int(song_id)
|
||||
valid = self.parent.manager.get_object(Song, song_id)
|
||||
if valid:
|
||||
self.remoteSong = fields[1]
|
||||
self.remoteTriggered = fields[0]
|
||||
self.edit_song_form.loadSong(fields[1], (fields[0] == u'P'))
|
||||
self.remoteSong = song_id
|
||||
self.remoteTriggered = remote_type
|
||||
self.edit_song_form.loadSong(song_id, (remote_type == u'P'))
|
||||
self.edit_song_form.exec_()
|
||||
|
||||
def onEditClick(self):
|
||||
|
@ -39,12 +39,8 @@ if os.name == u'nt':
|
||||
PAGE_AFTER = 5
|
||||
PAGE_BOTH = 6
|
||||
else:
|
||||
try:
|
||||
import uno
|
||||
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, \
|
||||
PAGE_BOTH
|
||||
except ImportError:
|
||||
pass
|
||||
import uno
|
||||
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH
|
||||
|
||||
class OooImport(SongImport):
|
||||
"""
|
||||
|
@ -73,6 +73,8 @@ class OpenLyricsExport(object):
|
||||
u', '.join([author.display_name for author in song.authors]))
|
||||
filename = re.sub(
|
||||
r'[/\\?*|<>\[\]":<>+%]+', u'_', filename).strip(u'_')
|
||||
tree.write(os.path.join(self.save_path, filename),
|
||||
# Pass a file object, because lxml does not cope with some special
|
||||
# characters in the path (see lp:757673 and lp:744337).
|
||||
tree.write(open(os.path.join(self.save_path, filename), u'w'),
|
||||
encoding=u'utf-8', xml_declaration=True, pretty_print=True)
|
||||
return True
|
||||
|
@ -63,7 +63,9 @@ class OpenLyricsImport(SongImport):
|
||||
self.import_wizard.incrementProgressBar(
|
||||
WizardStrings.ImportingType % os.path.basename(file_path))
|
||||
try:
|
||||
parsed_file = etree.parse(file_path, parser)
|
||||
# Pass a file object, because lxml does not cope with some
|
||||
# special characters in the path (see lp:757673 and lp:744337).
|
||||
parsed_file = etree.parse(open(file_path, u'r'), parser)
|
||||
xml = unicode(etree.tostring(parsed_file))
|
||||
if self.openLyrics.xml_to_song(xml) is None:
|
||||
log.debug(u'File could not be imported: %s' % file_path)
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1" language="hu_HU">
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="hu_HU">
|
||||
<context>
|
||||
<name>AlertPlugin.AlertForm</name>
|
||||
<message>
|
||||
@ -696,7 +697,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/customplugin.py" line="59"/>
|
||||
<source><strong>Custom Plugin</strong><br />The custom plugin provides the ability to set up custom text slides that can be displayed on the screen the same way songs are. This plugin provides greater freedom over the songs plugin.</source>
|
||||
<translation><strong>Speciális bővítmény</strong><br />Az speciális bővítmény dalokhoz hasonló egyéni diák vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény.</translation>
|
||||
<translation><strong>Speciális bővítmény</strong><br />Az speciális bővítmény dalokhoz hasonló egyéni diasor vetítését teszi lehetővé. Ugyanakkor több szabadságot enged meg, mint a dalok bővítmény.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -717,7 +718,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="106"/>
|
||||
<source>Edit Custom Slides</source>
|
||||
<translation>Speciális diák szerkesztése</translation>
|
||||
<translation>Speciális diasor szerkesztése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/custom/forms/editcustomdialog.py" line="108"/>
|
||||
@ -841,7 +842,7 @@ demand and thus an internet connection is required.</source>
|
||||
<message>
|
||||
<location filename="openlp/plugins/images/imageplugin.py" line="44"/>
|
||||
<source><strong>Image Plugin</strong><br />The image plugin provides displaying of images.<br />One of the distinguishing features of this plugin is the ability to group a number of images together in the service manager, making the displaying of multiple images easier. This plugin can also make use of OpenLP's "timed looping" feature to create a slide show that runs automatically. In addition to this, images from the plugin can be used to override the current theme's background, which renders text-based items like songs with the selected image as a background instead of the background provided by the theme.</source>
|
||||
<translation><strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diákat automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.</translation>
|
||||
<translation><strong>Kép bővítmény</strong><br />A kép a bővítmény különféle képek vetítését teszi lehetővé.<br />A bővítmény egyik különös figyelmet érdemlő képessége az, hogy képes a sorrendkezelőn csoportba foglalni a képeket, így könnyebbé téve képek tömeges vetítését. A bővítmény képes az OpenLP „időzített körkörös” lejátszásra is, amivel a diasort automatikusan tudjuk léptetni. Továbbá, a bővítményben megadott képekkel felülírhatjuk a téma háttérképét, amellyel a szöveg alapú elemek, mint pl. a dalok, a megadott háttérképpel jelennek meg, a témában beállított háttérkép helyett.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/images/imageplugin.py" line="72"/>
|
||||
@ -1078,7 +1079,7 @@ Find out more about OpenLP: http://openlp.org/
|
||||
OpenLP is written and maintained by volunteers. If you would like to see more free Christian software being written, please consider contributing by using the button below.</source>
|
||||
<translation>OpenLP <version> <revision> – Nyílt forrású dalszöveg vetítő
|
||||
|
||||
Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely használható énekek, bibliai versek, videók, képek és bemutatók (ha az OpenOffice.org, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével.
|
||||
Az OpenLP egy templomi/gyülekezeti bemutató, ill. dalszöveg vetítő szabad szoftver, mely énekek, bibliai versek, videók, képek és bemutatók (ha az OpenOffice.org, PowerPoint vagy a PowerPoint Viewer telepítve van) vetítésére használható a gyülekezeti dicsőítés alatt egy számítógép és egy projektor segítségével.
|
||||
|
||||
Többet az OpenLP-ről: http://openlp.org/
|
||||
|
||||
@ -1221,12 +1222,12 @@ Végső köszönet
|
||||
„Úgy szerette Isten a világot, hogy
|
||||
egyszülött Fiát adta oda, hogy egyetlen
|
||||
benne hívő se vesszen el, hanem
|
||||
örök élete legyen." ‒ János 3,16
|
||||
örök élete legyen.” (Jn 3,16)
|
||||
|
||||
És végül, de nem utolsósorban, a végső köszönet
|
||||
Istené, Atyánké, mert elküldte a Fiát, hogy meghaljon
|
||||
a kereszten, megszabadítva bennünket a bűntől. Ezért
|
||||
ezt a programot ingyen készítettük neked, mert Ő
|
||||
ezt a programot szabadnak és ingyenesnek készítettük, mert Ő
|
||||
tett minket szabaddá.</translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -1245,14 +1246,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/aboutdialog.py" line="231"/>
|
||||
<source>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.</source>
|
||||
<translation>Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint -- 2. verzió --, melyet a Szabad Szoftver Alapítvány ad ki.
|
||||
</translation>
|
||||
<translation>Ez egy szabad szoftver; terjeszthető illetve módosítható a GNU Általános Közreadási Feltételek dokumentumában leírtak szerint - 2. verzió -, melyet a Szabad Szoftver Alapítvány ad ki.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/aboutdialog.py" line="236"/>
|
||||
<source>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See below for more details.</source>
|
||||
<translation>Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve. További részletekért lásd a alább.
|
||||
</translation>
|
||||
<translation>Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb GARANCIA NÉLKÜL, az eladhatóságra vagy valamely célra való alkalmazhatóságra való származtatott garanciát is beleértve. További részletekért lásd a alább.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1343,7 +1342,7 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="135"/>
|
||||
<source>Start tag</source>
|
||||
<translation>Kezdő címke</translation>
|
||||
<translation>Nyitó címke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="137"/>
|
||||
@ -1358,12 +1357,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="145"/>
|
||||
<source>Tag Id</source>
|
||||
<translation>Címke ID</translation>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="147"/>
|
||||
<source>Start HTML</source>
|
||||
<translation>Kezdő HTML</translation>
|
||||
<translation>Nyitó HTML</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/displaytagdialog.py" line="149"/>
|
||||
@ -1394,7 +1393,7 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="102"/>
|
||||
<source>Oops! OpenLP hit a problem, and couldn't recover. The text in the box below contains information that might be helpful to the OpenLP developers, so please e-mail it to bugs@openlp.org, along with a detailed description of what you were doing when the problem occurred.</source>
|
||||
<translation>Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alábbi dobozban található szöveg olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen merre és mit tettél, amikor a hiba történt.</translation>
|
||||
<translation>Hoppá! Az OpenLP hibába ütközött, és nem tudta lekezelni. Az alsó szövegdoboz olyan információkat tartalmaz, amelyek hasznosak lehetnek az OpenLP fejlesztői számára, tehát kérjük, küld el a bugs@openlp.org email címre egy részletes leírás mellett, amely tartalmazza, hogy éppen hol és mit tettél, amikor a hiba történt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="97"/>
|
||||
@ -1415,13 +1414,12 @@ Tinggaard, Frode Woldsund</translation>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="99"/>
|
||||
<source>Please enter a description of what you were doing to cause this error
|
||||
(Minimum 20 characters)</source>
|
||||
<translation>Írd le mit tettél, ami a hibát okozta
|
||||
(minimum 20 karakter)</translation>
|
||||
<translation>Írd le mit tettél, ami a hibához vezetett (minimum 20 karakter)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptiondialog.py" line="112"/>
|
||||
<source>Attach File</source>
|
||||
<translation>Csatolt fájl</translation>
|
||||
<translation>Fájl csatolása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/exceptionform.py" line="171"/>
|
||||
@ -1536,7 +1534,7 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimeform.py" line="252"/>
|
||||
<source>Enabling selected plugins...</source>
|
||||
<translation>Kijelölt beépülők engedélyezése…</translation>
|
||||
<translation>Kijelölt bővítmények engedélyezése…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="191"/>
|
||||
@ -1556,12 +1554,12 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="201"/>
|
||||
<source>Activate required Plugins</source>
|
||||
<translation>Szükséges beépülők aktiválása</translation>
|
||||
<translation>Igényelt bővítmények aktiválása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="203"/>
|
||||
<source>Select the Plugins you wish to use. </source>
|
||||
<translation>Jelöld ki az alkalmazni kívánt beépülőket.</translation>
|
||||
<translation>Jelöld ki az alkalmazni kívánt bővítményeket.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="205"/>
|
||||
@ -1571,7 +1569,7 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="206"/>
|
||||
<source>Custom Text</source>
|
||||
<translation>Egyedi szöveg</translation>
|
||||
<translation>Speciális</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="208"/>
|
||||
@ -1596,17 +1594,17 @@ Version: %s
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="215"/>
|
||||
<source>Allow remote access</source>
|
||||
<translation>Távvezérlés engedélyezése</translation>
|
||||
<translation>Távvezérlő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="217"/>
|
||||
<source>Monitor Song Usage</source>
|
||||
<translation>Dalstatisztika monitorozása</translation>
|
||||
<translation>Dalstatisztika</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="219"/>
|
||||
<source>Allow Alerts</source>
|
||||
<translation>Értesítések engedélyezése</translation>
|
||||
<translation>Értesítések</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="221"/>
|
||||
@ -1679,7 +1677,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="252"/>
|
||||
<source>Please wait while OpenLP is set up and your data is imported.</source>
|
||||
<translation>Várj, amíg az OpenLP beállítások érvényre jutnak és míg at adatok importálódnak.</translation>
|
||||
<translation>Várj, amíg az OpenLP beállítások érvényre jutnak és míg az adatok importálódnak.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/firsttimewizard.py" line="254"/>
|
||||
@ -1757,7 +1755,7 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<message>
|
||||
<location filename="openlp/core/ui/generaltab.py" line="229"/>
|
||||
<source>Slide loop delay:</source>
|
||||
<translation>Időzített diák késleltetése:</translation>
|
||||
<translation>Időzített dia késleltetése:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/generaltab.py" line="231"/>
|
||||
@ -1818,12 +1816,12 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<context>
|
||||
<name>OpenLP.LanguageManager</name>
|
||||
<message>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="130"/>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="132"/>
|
||||
<source>Language</source>
|
||||
<translation>Nyelv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="130"/>
|
||||
<location filename="openlp/core/utils/languagemanager.py" line="132"/>
|
||||
<source>Please restart OpenLP to use your new language setting.</source>
|
||||
<translation>A nyelvi beállítások az OpenLP újraindítása után lépnek érvénybe.</translation>
|
||||
</message>
|
||||
@ -1839,347 +1837,347 @@ Az Első indulás tündér további megkerüléséhez, nyomd meg a Befejezés go
|
||||
<context>
|
||||
<name>OpenLP.MainWindow</name>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="313"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fájl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="314"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
||||
<source>&Import</source>
|
||||
<translation>&Importálás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="315"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
||||
<source>&Export</source>
|
||||
<translation>&Exportálás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="316"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
||||
<source>&View</source>
|
||||
<translation>&Nézet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="317"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
||||
<source>M&ode</source>
|
||||
<translation>&Mód</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="318"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="320"/>
|
||||
<source>&Tools</source>
|
||||
<translation>&Eszközök</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="319"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="321"/>
|
||||
<source>&Settings</source>
|
||||
<translation>&Beállítások</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
||||
<source>&Language</source>
|
||||
<translation>&Nyelv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="322"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="324"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Súgó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="323"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
||||
<source>Media Manager</source>
|
||||
<translation>Médiakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="325"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
||||
<source>Service Manager</source>
|
||||
<translation>Sorrendkezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="327"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
||||
<source>Theme Manager</source>
|
||||
<translation>Témakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="329"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="331"/>
|
||||
<source>&New</source>
|
||||
<translation>&Új</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="332"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="334"/>
|
||||
<source>Ctrl+N</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="333"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="335"/>
|
||||
<source>&Open</source>
|
||||
<translation>Meg&nyitás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="335"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="337"/>
|
||||
<source>Open an existing service.</source>
|
||||
<translation>Meglévő sorrend megnyitása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="337"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="339"/>
|
||||
<source>Ctrl+O</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="338"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="340"/>
|
||||
<source>&Save</source>
|
||||
<translation>&Mentés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="340"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="342"/>
|
||||
<source>Save the current service to disk.</source>
|
||||
<translation>Aktuális sorrend mentése lemezre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="342"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="344"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="343"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="345"/>
|
||||
<source>Save &As...</source>
|
||||
<translation>Mentés má&sként…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="345"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="347"/>
|
||||
<source>Save Service As</source>
|
||||
<translation>Sorrend mentése másként</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="347"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="349"/>
|
||||
<source>Save the current service under a new name.</source>
|
||||
<translation>Az aktuális sorrend más néven való mentése.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="349"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="351"/>
|
||||
<source>Ctrl+Shift+S</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
||||
<source>E&xit</source>
|
||||
<translation>&Kilépés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="358"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
||||
<source>Quit OpenLP</source>
|
||||
<translation>OpenLP bezárása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="360"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="362"/>
|
||||
<source>Alt+F4</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="366"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="368"/>
|
||||
<source>&Theme</source>
|
||||
<translation>&Téma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="374"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
||||
<source>&Configure OpenLP...</source>
|
||||
<translation>OpenLP &beállítása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="376"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="378"/>
|
||||
<source>&Media Manager</source>
|
||||
<translation>&Médiakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="378"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="380"/>
|
||||
<source>Toggle Media Manager</source>
|
||||
<translation>Médiakezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="380"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="382"/>
|
||||
<source>Toggle the visibility of the media manager.</source>
|
||||
<translation>A médiakezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="382"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
||||
<source>F8</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="384"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="386"/>
|
||||
<source>&Theme Manager</source>
|
||||
<translation>&Témakezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="386"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="388"/>
|
||||
<source>Toggle Theme Manager</source>
|
||||
<translation>Témakezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="388"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="390"/>
|
||||
<source>Toggle the visibility of the theme manager.</source>
|
||||
<translation>A témakezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="390"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
||||
<source>F10</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="392"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="394"/>
|
||||
<source>&Service Manager</source>
|
||||
<translation>&Sorrendkezelő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="394"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="396"/>
|
||||
<source>Toggle Service Manager</source>
|
||||
<translation>Sorrendkezelő átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="396"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="398"/>
|
||||
<source>Toggle the visibility of the service manager.</source>
|
||||
<translation>A sorrendkezelő láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="398"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
||||
<source>F9</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="400"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="402"/>
|
||||
<source>&Preview Panel</source>
|
||||
<translation>&Előnézet panel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="402"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="404"/>
|
||||
<source>Toggle Preview Panel</source>
|
||||
<translation>Előnézet panel átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="404"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="406"/>
|
||||
<source>Toggle the visibility of the preview panel.</source>
|
||||
<translation>Az előnézet panel láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="406"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
||||
<source>F11</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="408"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="410"/>
|
||||
<source>&Live Panel</source>
|
||||
<translation>&Élő adás panel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="410"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="412"/>
|
||||
<source>Toggle Live Panel</source>
|
||||
<translation>Élő adás panel átváltása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="412"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="414"/>
|
||||
<source>Toggle the visibility of the live panel.</source>
|
||||
<translation>Az élő adás panel láthatóságának átváltása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="414"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
||||
<source>F12</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="416"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="418"/>
|
||||
<source>&Plugin List</source>
|
||||
<translation>&Bővítménylista</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="418"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="420"/>
|
||||
<source>List the Plugins</source>
|
||||
<translation>Bővítmények listája</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="420"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
||||
<source>Alt+F7</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="422"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
||||
<source>&User Guide</source>
|
||||
<translation>&Felhasználói kézikönyv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="424"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="426"/>
|
||||
<source>&About</source>
|
||||
<translation>&Névjegy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="425"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="427"/>
|
||||
<source>More information about OpenLP</source>
|
||||
<translation>További információ az OpenLP-ről</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="427"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
||||
<source>Ctrl+F1</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="429"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="431"/>
|
||||
<source>&Online Help</source>
|
||||
<translation>&Online súgó</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="434"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="433"/>
|
||||
<source>&Web Site</source>
|
||||
<translation>&Weboldal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="442"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="441"/>
|
||||
<source>Use the system language, if available.</source>
|
||||
<translation>Rendszernyelv használata, ha elérhető.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="438"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="437"/>
|
||||
<source>Set the interface language to %s</source>
|
||||
<translation>A felhasználói felület nyelvének átváltása erre: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="444"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="443"/>
|
||||
<source>Add &Tool...</source>
|
||||
<translation>&Eszköz hozzáadása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="446"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="445"/>
|
||||
<source>Add an application to the list of tools.</source>
|
||||
<translation>Egy alkalmazás hozzáadása az eszközök listához.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="452"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="451"/>
|
||||
<source>&Default</source>
|
||||
<translation>&Alapértelmezett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="454"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="453"/>
|
||||
<source>Set the view mode back to the default.</source>
|
||||
<translation>Nézetmód visszaállítása az alapértelmezettre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="456"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="455"/>
|
||||
<source>&Setup</source>
|
||||
<translation>&Szerkesztés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="457"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="456"/>
|
||||
<source>Set the view mode to Setup.</source>
|
||||
<translation>Nézetmód váltása a Beállítás módra.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="459"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="458"/>
|
||||
<source>&Live</source>
|
||||
<translation>&Élő adás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="460"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="459"/>
|
||||
<source>Set the view mode to Live.</source>
|
||||
<translation>Nézetmód váltása a Élő módra.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="648"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="645"/>
|
||||
<source>Version %s of OpenLP is now available for download (you are currently running version %s).
|
||||
|
||||
You can download the latest version from http://openlp.org/.</source>
|
||||
@ -2188,27 +2186,27 @@ You can download the latest version from http://openlp.org/.</source>
|
||||
A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="652"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="649"/>
|
||||
<source>OpenLP Version Updated</source>
|
||||
<translation>OpenLP verziófrissítés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="704"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="701"/>
|
||||
<source>OpenLP Main Display Blanked</source>
|
||||
<translation>Sötét OpenLP fő képernyő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="704"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="701"/>
|
||||
<source>The Main Display has been blanked out</source>
|
||||
<translation>A fő képernyő el lett sötétítve</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="920"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="910"/>
|
||||
<source>Default Theme: %s</source>
|
||||
<translation>Alapértelmezett téma: %s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="370"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="372"/>
|
||||
<source>Configure &Shortcuts...</source>
|
||||
<translation>&Gyorsbillentyűk beállítása…</translation>
|
||||
</message>
|
||||
@ -2219,42 +2217,42 @@ A legfrissebb verzió a http://openlp.org/ oldalról szerezhető be.</translatio
|
||||
<translation>Magyar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="352"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="354"/>
|
||||
<source>Print the current Service Order.</source>
|
||||
<translation>Az aktuális sorrend nyomtatása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="354"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="356"/>
|
||||
<source>Ctrl+P</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="372"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="374"/>
|
||||
<source>&Configure Display Tags</source>
|
||||
<translation>Megjelenítési &címkek beállítása</translation>
|
||||
<translation>Megjelenítési &címkék beállítása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="440"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="439"/>
|
||||
<source>&Autodetect</source>
|
||||
<translation>&Automatikus felismerés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="448"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="447"/>
|
||||
<source>Open &Data Folder...</source>
|
||||
<translation>&Adatmappa megnyitása…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="450"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="449"/>
|
||||
<source>Open the folder where songs, bibles and other data resides.</source>
|
||||
<translation>A dalokat, Bibliákat és egyéb adatokat tartalmazó mappa megnyitása.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="842"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="832"/>
|
||||
<source>Close OpenLP</source>
|
||||
<translation>OpenLP bezárása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="842"/>
|
||||
<location filename="openlp/core/ui/mainwindow.py" line="832"/>
|
||||
<source>Are you sure you want to close OpenLP?</source>
|
||||
<translation>Biztosan bezárható az OpenLP?</translation>
|
||||
</message>
|
||||
@ -3158,7 +3156,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="448"/>
|
||||
<source>Define the font and display characteristics for the Display text</source>
|
||||
<translation>A fő szöveg betűkészlete és a megjelenési tulajdonságai</translation>
|
||||
<translation>A fő szöveg betűkészlete és megjelenési tulajdonságai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="473"/>
|
||||
@ -3203,7 +3201,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="470"/>
|
||||
<source>Define the font and display characteristics for the Footer text</source>
|
||||
<translation>A lábléc szöveg betűkészlete és a megjelenési tulajdonságai</translation>
|
||||
<translation>A lábléc szöveg betűkészlete és megjelenési tulajdonságai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="477"/>
|
||||
@ -3293,7 +3291,7 @@ A tartalom kódolása nem UTF-8.</translation>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="530"/>
|
||||
<source>View the theme and save it replacing the current one or change the name to create a new theme</source>
|
||||
<translation>A téma előnézete és mentése. Felülírható már egy meglévő vagy egy új név megadásával új téma hozható létre</translation>
|
||||
<translation>A téma előnézete és mentése: egy már meglévő téma felülírható vagy egy új név megadásával új téma hozható létre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/core/ui/themewizard.py" line="534"/>
|
||||
@ -4439,7 +4437,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért.</translation>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="367"/>
|
||||
<source>You have not selected a valid author. Either select an author from the list, or type in a new author and click the "Add Author to Song" button to add the new author.</source>
|
||||
<translation>Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints az „Szerző hozzáadása a dalhoz” gombon a szerző megjelöléséhez.</translation>
|
||||
<translation>Nincs kijelölve egyetlen szerző sem. Vagy válassz egy szerzőt a listából, vagy írj az új szerző mezőbe és kattints a Hozzáadás gombra a szerző megjelöléséhez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="395"/>
|
||||
@ -4459,7 +4457,7 @@ A kódlap felelős a karakterek helyes megjelenítéséért.</translation>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="426"/>
|
||||
<source>You have not selected a valid topic. Either select a topic from the list, or type in a new topic and click the "Add Topic to Song" button to add the new topic.</source>
|
||||
<translation>Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Témakör hozzáadása a dalhoz gombon a témakör megjelöléséhez.</translation>
|
||||
<translation>Nincs kijelölve egyetlen témakör sem. Vagy válassz egy témakört a listából, vagy írj az új témakör mezőbe és kattints a Hozzáadás gombraa témakör megjelöléséhez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="openlp/plugins/songs/forms/editsongform.py" line="561"/>
|
||||
|
@ -394,10 +394,7 @@ if __name__ == '__main__':
|
||||
--template Info.plist.master \
|
||||
--expandto %(target_directory)s/Info.plist' \
|
||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
||||
os.system('python expander.py --config %(config_file)s \
|
||||
--template version.master \
|
||||
--expandto %(target_directory)s/.version' \
|
||||
% { 'config_file' : options.config, 'target_directory' : os.getcwd() })
|
||||
os.system('python get_version.py > .version')
|
||||
|
||||
# prepare variables
|
||||
app_name_lower = settings['openlp_appname'].lower()
|
||||
|
36
resources/osx/get_version.py
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import os
|
||||
from bzrlib.branch import Branch
|
||||
|
||||
def get_version(path):
|
||||
b = Branch.open_containing(path)[0]
|
||||
b.lock_read()
|
||||
result = '0.0.0'
|
||||
try:
|
||||
# Get the branch's latest revision number.
|
||||
revno = b.revno()
|
||||
# Convert said revision number into a bzr revision id.
|
||||
revision_id = b.dotted_revno_to_revision_id((revno,))
|
||||
# Get a dict of tags, with the revision id as the key.
|
||||
tags = b.tags.get_reverse_tag_dict()
|
||||
# Check if the latest
|
||||
if revision_id in tags:
|
||||
result = tags[revision_id][0]
|
||||
else:
|
||||
result = '%s-bzr%s' % (sorted(b.tags.get_tag_dict().keys())[-1], revno)
|
||||
finally:
|
||||
b.unlock()
|
||||
return result
|
||||
|
||||
def get_path():
|
||||
if len(sys.argv) > 1:
|
||||
return os.path.abspath(sys.argv[1])
|
||||
else:
|
||||
return os.path.abspath('.')
|
||||
|
||||
if __name__ == u'__main__':
|
||||
path = get_path()
|
||||
print get_version(path)
|
||||
|
@ -2,7 +2,6 @@
|
||||
openlp_appname = OpenLP
|
||||
openlp_dmgname = OpenLP-1.9.4-bzrXXXX
|
||||
openlp_version = XXXX
|
||||
openlp_full_version = 1.9.4-latest
|
||||
openlp_basedir = /Users/openlp/trunk
|
||||
openlp_icon_file = openlp-logo-with-text.icns
|
||||
openlp_dmg_icon_file = openlp-logo-420x420.png
|
||||
|
@ -1 +0,0 @@
|
||||
%(openlp_full_version)s
|
@ -69,6 +69,7 @@ Source: ..\..\dist\OpenLP\*; DestDir: {app}; Flags: ignoreversion recursesubdirs
|
||||
[Icons]
|
||||
Name: {group}\{#AppName}; Filename: {app}\{#AppExeName}
|
||||
Name: {group}\{#AppName} (Debug); Filename: {app}\{#AppExeName}; Parameters: -l debug
|
||||
Name: {group}\{#AppName} Help; Filename: {app}\{#AppName}.chm
|
||||
Name: {group}\{cm:ProgramOnTheWeb,{#AppName}}; Filename: {#AppURL}
|
||||
Name: {group}\{cm:UninstallProgram,{#AppName}}; Filename: {uninstallexe}
|
||||
Name: {commondesktop}\{#AppName}; Filename: {app}\{#AppExeName}; Tasks: desktopicon
|
||||
|
@ -94,6 +94,10 @@ from subprocess import Popen, PIPE
|
||||
python_exe = sys.executable
|
||||
innosetup_exe = os.path.join(os.getenv(u'PROGRAMFILES'), 'Inno Setup 5',
|
||||
u'ISCC.exe')
|
||||
sphinx_exe = os.path.join(os.path.split(python_exe)[0], u'Scripts',
|
||||
u'sphinx-build.exe')
|
||||
hhc_exe = os.path.join(os.getenv(u'PROGRAMFILES'), 'HTML Help Workshop',
|
||||
u'hhc.exe')
|
||||
|
||||
# Base paths
|
||||
script_path = os.path.split(os.path.abspath(__file__))[0]
|
||||
@ -109,6 +113,7 @@ i18n_utils = os.path.join(script_path, u'translation_utils.py')
|
||||
|
||||
# Paths
|
||||
source_path = os.path.join(branch_path, u'openlp')
|
||||
manual_path = os.path.join(branch_path, u'documentation', u'manual')
|
||||
i18n_path = os.path.join(branch_path, u'resources', u'i18n')
|
||||
winres_path = os.path.join(branch_path, u'resources', u'windows')
|
||||
build_path = os.path.join(branch_path, u'build', u'pyi.win32', u'OpenLP')
|
||||
@ -132,21 +137,6 @@ def update_code():
|
||||
print output
|
||||
raise Exception(u'Error updating the code')
|
||||
|
||||
def clean_build_directories():
|
||||
dist_dir = os.path.join(build_path, u'dist')
|
||||
build_dir = os.path.join(build_path, u'build')
|
||||
if os.path.exists(dist_dir):
|
||||
for root, dirs, files in os.walk(dist_dir, topdown=False):
|
||||
print root
|
||||
for file in files:
|
||||
os.remove(os.path.join(root, file))
|
||||
os.removedirs(dist_dir)
|
||||
if os.path.exists(build_dir):
|
||||
for root, dirs, files in os.walk(build_dir, topdown=False):
|
||||
for file in files:
|
||||
os.remove(os.path.join(root, file))
|
||||
os.removedirs(build_dir)
|
||||
|
||||
def run_pyinstaller():
|
||||
print u'Running PyInstaller...'
|
||||
os.chdir(branch_path)
|
||||
@ -240,6 +230,31 @@ def compile_translations():
|
||||
if code != 0:
|
||||
raise Exception('Error running lconvert on %s' % source_path)
|
||||
|
||||
def run_sphinx():
|
||||
print u'Running Sphinx...'
|
||||
os.chdir(manual_path)
|
||||
sphinx = Popen((sphinx_exe, u'-b', u'htmlhelp', u'-d', u'build/doctrees',
|
||||
u'source', u'build/htmlhelp'), stdout=PIPE)
|
||||
output, error = sphinx.communicate()
|
||||
code = sphinx.wait()
|
||||
if code != 0:
|
||||
print output
|
||||
raise Exception(u'Error running Sphinx')
|
||||
|
||||
def run_htmlhelp():
|
||||
print u'Running HTML Help Workshop...'
|
||||
os.chdir(os.path.join(manual_path, u'build', u'htmlhelp'))
|
||||
hhc = Popen((hhc_exe, u'OpenLP.chm'), stdout=PIPE)
|
||||
output, error = hhc.communicate()
|
||||
code = hhc.wait()
|
||||
if code != 1:
|
||||
print u'Exit code:', code
|
||||
print output
|
||||
raise Exception(u'Error running HTML Help Workshop')
|
||||
else:
|
||||
copy(os.path.join(manual_path, u'build', 'htmlhelp', u'OpenLP.chm'),
|
||||
os.path.join(dist_path, u'OpenLP.chm'))
|
||||
|
||||
def run_innosetup():
|
||||
print u'Running Inno Setup...'
|
||||
os.chdir(winres_path)
|
||||
@ -260,7 +275,6 @@ def main():
|
||||
print "Inno Setup path:", innosetup_path
|
||||
print "Windows resources:", winres_path
|
||||
update_code()
|
||||
#clean_build_directories()
|
||||
run_pyinstaller()
|
||||
write_version_file()
|
||||
copy_enchant()
|
||||
@ -268,6 +282,8 @@ def main():
|
||||
copy_windows_files()
|
||||
update_translations()
|
||||
compile_translations()
|
||||
run_sphinx()
|
||||
run_htmlhelp()
|
||||
run_innosetup()
|
||||
print "Done."
|
||||
|
||||
|