forked from openlp/openlp
r1457
This commit is contained in:
commit
004bbc8865
@ -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`
|
||||
|
@ -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
|
||||
|
@ -5,32 +5,6 @@ Frequently Asked Questions
|
||||
General Questions
|
||||
=================
|
||||
|
||||
What is OpenLP?
|
||||
---------------
|
||||
|
||||
|
||||
OpenLP stands for "Open source Lyric Projection" and is presentation software
|
||||
developed for Churches to provide a single easy to use interface for the
|
||||
projection needs of a typical act of Worship. First created in 2004, it has
|
||||
steadily grown in features and maturity such that is it now a mainstay in
|
||||
hundreds of churches around the world.
|
||||
|
||||
It can hold a searchable database of song lyrics and Bible verses allowing them
|
||||
to be projected instantly or saved in a pre-prepared order of service file.
|
||||
Themes allow song backgrounds to be changed instantly. PowerPoint 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 phone.
|
||||
|
||||
Being free, this software can be installed on as many computers as required,
|
||||
even on the home computers of worship leaders without additional cost. Compared
|
||||
to the expensive site licenses or restrictions of commercial software we believe
|
||||
OpenLP cannot be beaten for value. Still in active development by a growing team
|
||||
of enthusiastic developers, features are being added all the time, meaning the
|
||||
software just improves all the time.
|
||||
|
||||
When is the release date for OpenLP 2.0?
|
||||
----------------------------------------
|
||||
|
||||
@ -67,7 +41,7 @@ A variety of places!
|
||||
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.
|
||||
@ -377,7 +351,7 @@ please post a new bug report.
|
||||
``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
|
||||
|
@ -8,7 +8,7 @@ About
|
||||
OpenLP stands for "Open Source Lyrics Projection" and is presentation software
|
||||
developed for churches to provide a single easy to use interface for the
|
||||
projection needs of a typical worship service. First created in 2004, it has
|
||||
steadily grown in features and maturity such that is it now a mainstay in
|
||||
steadily grown in features and maturity such that it is now a mainstay in
|
||||
hundreds of churches around the world.
|
||||
|
||||
OpenLP has searchable databases of songs and Bible verses allowing them to be
|
||||
@ -40,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>`_.
|
||||
|
@ -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
|
||||
======
|
||||
|
@ -3,7 +3,7 @@ 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
|
||||
@ -18,7 +18,7 @@ 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
|
||||
@ -29,8 +29,8 @@ 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
|
||||
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.
|
||||
@ -40,7 +40,7 @@ Mac
|
||||
|
||||
If you are using a Mac. You may wish to play Windows formats. flip4mac enables
|
||||
you to use popular Windows formats such as .wmv on your Mac. You can get it
|
||||
here `<http://dynamic.telestream.net/downloads/download-flip4macwmv.htm>`_.
|
||||
`from here <http://dynamic.telestream.net/downloads/download-flip4macwmv.htm>`_.
|
||||
|
||||
Ubuntu Linux (and variants)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -56,8 +56,8 @@ ubuntu-restricted-extras and Kubuntu-restricted-extras, or from the terminal::
|
||||
**Note** if you are running Kubuntu there is no need to install the
|
||||
ubuntu-restricted-extras meta-package
|
||||
|
||||
For more information on Ubuntu and multimedia issues please check out
|
||||
`<https://help.ubuntu.com/community/RestrictedFormats/>`_.
|
||||
For more information on Ubuntu and multimedia issues please check out the
|
||||
`community documentation <https://help.ubuntu.com/community/RestrictedFormats/>`_.
|
||||
|
||||
Arch Linux
|
||||
^^^^^^^^^^
|
||||
@ -67,8 +67,8 @@ Linux::
|
||||
|
||||
root@linux:~ # pacman -S gstreamer0.10-{base,good,bad,ugly}-plugins gstreamer0.10-ffmpeg
|
||||
|
||||
If you need more help with Arch Linux and multimedia please see the Arch Linux
|
||||
documentation at `<https://wiki.archlinux.org/index.php/Codecs>`_.
|
||||
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
|
||||
^^^^^^^^^^^^
|
||||
@ -92,7 +92,7 @@ You will need to set up Fedora to play most media formats. This is relatively
|
||||
simple using the rpmfusion repository.
|
||||
|
||||
**Note** the following commands will enable a third party repository to your
|
||||
system. Please check out `<http://rpmfusion.org>`_. for more information.
|
||||
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::
|
||||
@ -103,11 +103,11 @@ After enabling the rpmfusion repository you will want to refresh your package
|
||||
list, perform any updates and search for gstreamer-good, bad, and ugly and
|
||||
install.
|
||||
|
||||
Here is a good tutorial video on the rpmfusion repository
|
||||
`<http://www.linuxjournal.com/video/getting-mp3-support-fedora-using-rpmfusion-repositories>`_.
|
||||
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.
|
||||
@ -122,11 +122,56 @@ By default all plugins should be enabled during the first run wizard except the
|
||||
remotes plugin, unless you specify differently.
|
||||
|
||||
I can not see the book, chapter, and verse when I display scripture
|
||||
===================================================================
|
||||
-------------------------------------------------------------------
|
||||
|
||||
The book, chapter, and verse should be displayed when you display scripture. If
|
||||
you can not see this your theme probably has the text size too small for the
|
||||
info to be seen. See the section of the manual on themes if you need more info
|
||||
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`.
|
||||
|
||||
|
@ -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,8 +49,10 @@ 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')
|
||||
@ -97,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):
|
||||
@ -315,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)
|
@ -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, \
|
||||
@ -691,9 +692,9 @@ class ServiceManager(QtGui.QWidget):
|
||||
Called by the SlideController to request a preview item be made live
|
||||
and allows the next preview to be updated if relevent.
|
||||
"""
|
||||
id, row = message.split(u':')
|
||||
uuid, row = message.split(u':')
|
||||
for sitem in self.serviceItems:
|
||||
if sitem[u'service_item']._uuid == id:
|
||||
if sitem[u'service_item']._uuid == uuid:
|
||||
item = self.serviceManagerList.topLevelItem(sitem[u'order'] - 1)
|
||||
self.serviceManagerList.setCurrentItem(item)
|
||||
self.makeLive(int(row))
|
||||
@ -1021,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):
|
||||
@ -1261,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()
|
||||
|
||||
|
@ -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'':
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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):
|
||||
"""
|
||||
|
@ -283,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)
|
||||
|
Loading…
Reference in New Issue
Block a user