forked from openlp/openlp
r1373
This commit is contained in:
commit
bb93aed796
@ -4,11 +4,11 @@ Dual Monitor Setup
|
||||
|
||||
The first step in getting OpenLP working on your system is to setup your
|
||||
computer properly for dual monitors. This is not very difficult, but the steps
|
||||
do vary depending on operating system.
|
||||
will vary depending on operating system.
|
||||
|
||||
Most modern computers do have the ability for dual monitors. To be certain
|
||||
Most modern computers have the ability for dual monitors. To be certain,
|
||||
check your computer's documentation. A typical desktop computer capable of dual
|
||||
monitors will have two of, or a combination of the two connectors below.
|
||||
monitors will have two of, or a combination of the two, connectors below.
|
||||
|
||||
**VGA**
|
||||
|
||||
@ -18,8 +18,8 @@ monitors will have two of, or a combination of the two connectors below.
|
||||
|
||||
.. image:: pics/dvi.png
|
||||
|
||||
A laptop computer setup only varies slightly, generally you will need only one
|
||||
of outputs pictured above since your laptops screen serves as one of the
|
||||
A laptop computer setup only varies slightly. Generally you will need only one
|
||||
of the outputs pictured above since your laptop screen serves as one of the
|
||||
monitors. Sometimes with older laptops a key stroke generally involving the
|
||||
:kbd:`Fn` key and another key is required to enable the second monitor on
|
||||
laptops.
|
||||
@ -27,9 +27,10 @@ laptops.
|
||||
Some computers also incorporate the use of :abbr:`S-Video (Separate Video)` or
|
||||
:abbr:`HDMI (High-Definition Multimedia Interface)` connections.
|
||||
|
||||
A typical OpenLP set up consist of your normal single monitor setup, with your
|
||||
projector setup as the second monitor. With the option of extending your
|
||||
desktop across the second monitor, or your operating system's equivalent.
|
||||
A typical OpenLP setup consist of your normal single monitor, with your
|
||||
projector hooked up to your computer as the second monitor. With the option of
|
||||
extending your desktop across the second monitor, or your operating system's
|
||||
equivalent.
|
||||
|
||||
Microsoft Windows
|
||||
-----------------
|
||||
@ -46,8 +47,8 @@ press :kbd:`Windows+P`.
|
||||
|
||||
The more traditional way is also fairly straight forward. Go to
|
||||
:guilabel:`Control Panel` and click on :guilabel:`Display`. This will open up
|
||||
the :guilabel:`Display` dialog. You can also bypass this step by right click on
|
||||
a blank area on your desktop and selecting :guilabel:`Resolution`.
|
||||
the :guilabel:`Display` dialog. You may also bypass this step by a right click
|
||||
on a blank area on your desktop and selecting :guilabel:`Resolution`.
|
||||
|
||||
.. image:: pics/winsevendisplay.png
|
||||
|
||||
@ -66,7 +67,7 @@ a blank place on the desktop and click :guilabel:`Personalization`.
|
||||
.. image:: pics/vistapersonalize.png
|
||||
|
||||
From the :guilabel:`Personalization` window click on :guilabel:`Display
|
||||
Settings`. Then enable the montior that represents your projector and make sure
|
||||
Settings`. Click on the monitor that represents your projector and make sure
|
||||
you have checked :guilabel:`Extend the desktop onto this monitor`.
|
||||
|
||||
.. image:: pics/vistadisplaysettings.png
|
||||
@ -77,7 +78,7 @@ Windows XP
|
||||
From :guilabel:`Control Panel` select :guilabel:`Display`, or right click on a
|
||||
blank area of the desktop and select :guilabel:`Properties`. From the
|
||||
:guilabel:`Display Properties` window click on the :guilabel:`Settings` tab.
|
||||
Then click on the monitor that represents your projector and make sure you have
|
||||
Click on the monitor that represents your projector and make sure you have
|
||||
checked :guilabel:`Extend my Windows desktop onto this monitor`.
|
||||
|
||||
.. image:: pics/xpdisplaysettings.png
|
||||
@ -87,7 +88,7 @@ Linux
|
||||
|
||||
Due to the vast varieties of hardware, distributions, desktops, and drivers
|
||||
this is not an exhaustive guide to dual monitor setup on Linux. This guide
|
||||
assumes that you have properly set up any proprietary drivers if needed. You
|
||||
assumes you have properly set up any proprietary drivers if needed. You
|
||||
should seek out your distributions documentation if this general guide does not
|
||||
work.
|
||||
|
||||
@ -123,7 +124,8 @@ Linux Systems Using nVidia Drivers
|
||||
|
||||
This guide is for users of the proprietary nVidia driver on Linux Distributions.
|
||||
It is assumed that you have properly setup your drivers according to your
|
||||
distribution's documentation, and you have a working ``xorg.conf`` file in place.
|
||||
distribution's documentation, and you have a working ``xorg.conf`` file in
|
||||
place.
|
||||
|
||||
If you wish to make the changes permanent in setting up your system for dual
|
||||
monitors it will be necessary to modify your ``xorg.conf`` file. It is always a
|
||||
@ -166,7 +168,7 @@ After clicking :guilabel:`Configure`, select :guilabel:`TwinView`. Then click
|
||||
|
||||
.. image:: pics/twinview.png
|
||||
|
||||
Then click :guilabel:`Apply` and if you are happy with the way things look click
|
||||
Click :guilabel:`Apply` and if you are happy with the way things look click
|
||||
:guilabel:`Keep` to keep your new settings. Don't worry if all goes wrong the
|
||||
settings will return back to the previous settings in 15 seconds without any
|
||||
action. nVidia Settings should take care of selecting your optimum resolution
|
||||
@ -175,6 +177,6 @@ on :guilabel:`Save to X Configuration File`.
|
||||
|
||||
.. image:: pics/xorgwrite.png
|
||||
|
||||
Then click :guilabel:`Save` and you should be set. You may want to restart X or
|
||||
Click :guilabel:`Save` and you should be set. You may want to restart X or
|
||||
your machine just to make sure all the settings carry over the next time you log
|
||||
in.
|
||||
|
@ -18,7 +18,7 @@ The Main Window contains all the tools and plugins that make OpenLP function
|
||||
Media Manager
|
||||
-------------
|
||||
|
||||
The Media Manager contains a number of tabs that plugins supply to OpenLP.
|
||||
The Media Manager contains a number of tabs the plugins supply to OpenLP.
|
||||
Each tab in the Media Manager is called a **Media Item**
|
||||
|
||||
.. image:: pics/mediamanager.png
|
||||
@ -36,20 +36,20 @@ with them.
|
||||
Service File
|
||||
------------
|
||||
|
||||
A service file, is the file that is created when you save your work on OpenLP.
|
||||
A service file is the file that is created when you save your service in OpenLP.
|
||||
The service file consist of **Service Items**
|
||||
|
||||
Service Item
|
||||
------------
|
||||
|
||||
A service item are the **media items** that are in the **service manager**
|
||||
Service items are the **media items** that are in the **service manager**
|
||||
|
||||
Service Manger
|
||||
--------------
|
||||
|
||||
The service manager contains the media items in your service file. This is the
|
||||
area from which your media items go live, and you can also save, open, and edit
|
||||
services files.
|
||||
area where your media items go live. You can also save, open, and edit
|
||||
services files from here.
|
||||
|
||||
.. image:: pics/servicemanager.png
|
||||
|
||||
@ -65,6 +65,6 @@ Theme Manager
|
||||
-------------
|
||||
|
||||
The theme manager is where themes are created and edited. Themes are the text
|
||||
styles backgrounds that you use to personalize your services.
|
||||
styles and backgrounds that you use to personalize your services.
|
||||
|
||||
.. image:: pics/thememanager.png
|
||||
|
@ -15,5 +15,4 @@ Contents:
|
||||
glossary
|
||||
dualmonitors
|
||||
mediamanager
|
||||
songs
|
||||
|
||||
songs
|
@ -8,26 +8,26 @@ converters provided to get data from other formats into OpenLP.
|
||||
Song Importer
|
||||
=============
|
||||
|
||||
If you are using an earlier version of OpenLP or come from another software
|
||||
If you are using an earlier version of OpenLP or, come from another software
|
||||
package, you may be able to convert your existing database to work in OpenLP
|
||||
2.0. To access the Song Importer :menuselection:`File --> Import --> Song`.
|
||||
You will then see the Song Importer window, then click :guilabel:`Next`.
|
||||
2.0. To access the Song Importer click :menuselection:`File --> Import --> Song`.
|
||||
You will see the Song Importer window, then click :guilabel:`Next`.
|
||||
|
||||
.. image:: pics/songimporter.png
|
||||
|
||||
After choosing :guilabel:`Next` you can then select from the various types of
|
||||
After choosing :guilabel:`Next` you can select from the various types of
|
||||
software that OpenLP will convert songs from.
|
||||
|
||||
.. image:: pics/songimporterchoices.png
|
||||
|
||||
Then click on the file folder icon to choose the file of the song database you
|
||||
Click on the file folder icon to choose the file of the song database you
|
||||
want to import. See the following sections for information on the different
|
||||
formats that OpenLP will import.
|
||||
|
||||
Importing from OpenLP Version 1
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Converting from OpenLP Version 1 is a pretty simple process. You will first
|
||||
Converting from OpenLP Version 1 is a simple process. First you will
|
||||
need to locate your version 1 database file.
|
||||
|
||||
Windows XP::
|
||||
@ -38,33 +38,34 @@ Windows Vista / Windows 7::
|
||||
|
||||
C:\ProgramData\openlp.org\Data\songs.olp
|
||||
|
||||
After clicking :guilabel:`Next` your conversion should be complete.
|
||||
After clicking :guilabel:`Next` your conversion will be complete.
|
||||
|
||||
.. image:: pics/finishedimport.png
|
||||
|
||||
Then press :guilabel:`Finish` and you should now be ready to use your OpenLP
|
||||
version one songs.
|
||||
Press :guilabel:`Finish` and you will now be ready to use your OpenLP
|
||||
version 1 songs.
|
||||
|
||||
Importing from OpenSong
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Converting from OpenSong you will need to locate your songs database. In the
|
||||
Converting from OpenSong, you will need to locate your songs database. In the
|
||||
later versions of OpenSong you are asked to define the location of this. The
|
||||
songs will be located in a folder named :guilabel:`Songs`. This folder should
|
||||
contain files with all your songs in them without a file extension. (file.xxx).
|
||||
When you have located this folder you will then need to select the songs from
|
||||
songs will be located in a folder named :guilabel:`Songs`. This folder will
|
||||
contain files with all your songs in them, without a file extension. (file.xxx).
|
||||
When you have located this folder you will need to select the songs from
|
||||
the folder.
|
||||
|
||||
.. image:: pics/selectsongs.png
|
||||
|
||||
On most operating systems to select all the songs, first select the first song
|
||||
in the lest then press shift and select the last song in the list. After this
|
||||
press :guilabel:`Next` and you should see that your import has been successful.
|
||||
On most operating systems, to select all the songs, first select the first song
|
||||
in the list, press the shift key, and select the last song in the list. After
|
||||
this press :guilabel:`Next` and you will see that your import has been
|
||||
successful.
|
||||
|
||||
.. image:: pics/finishedimport.png
|
||||
|
||||
Press :guilabel:`Finish` and you will now be ready to use your songs imported
|
||||
from OpenSong.
|
||||
Press :guilabel:`Finish` and OpenLP will be ready to use your songs that you
|
||||
imported from OpenSong.
|
||||
|
||||
Importing from CCLI Song Select
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -79,22 +80,23 @@ Then search for your desired song. For this example we will be adding the song
|
||||
|
||||
.. image:: pics/songselectsongsearch.png
|
||||
|
||||
For the song you are searching for select `lyrics` This should take you to a
|
||||
page displaying the lyrics and copyright info for your song.
|
||||
For the song you are searching for, select `lyrics` This will take you to a
|
||||
page displaying the lyrics and copyright information for your song.
|
||||
|
||||
.. image:: pics/songselectlyrics.png
|
||||
|
||||
Next, hover over the :guilabel:`Lyrics` menu from the upper right corner. Then
|
||||
choose either the .txt or .usr file. You will then be asked to chose a download
|
||||
Next, hover over the :guilabel:`Lyrics` menu from the upper right corner.
|
||||
Choose either the .txt or .usr file. You will be asked to chose a download
|
||||
location if your browser does not automatically select that for you. Select
|
||||
this file from the OpenLP import window and then click :guilabel:`Next` You can
|
||||
also select multiple songs for import at once on most operating systems by
|
||||
selecting the first item in the list then holding shift select the last item in
|
||||
the list. When finished you should see that your import has completed.
|
||||
selecting the first item in the list then holding the shift key and select the
|
||||
last item in the list. When finished, you will see that your import has
|
||||
completed.
|
||||
|
||||
.. image:: pics/finishedimport.png
|
||||
|
||||
Press :guilabel:`Finish` and you will now be ready to use your songs imported
|
||||
Press :guilabel:`Finish` and OpenLP will be ready to use your songs imported
|
||||
from CCLI SongSelect.
|
||||
|
||||
|
||||
|
@ -248,9 +248,8 @@ def resize_image(image, width, height, background=QtCore.Qt.black):
|
||||
``height``
|
||||
The new image height.
|
||||
|
||||
``background``
|
||||
``background``
|
||||
The background colour defaults to black.
|
||||
|
||||
"""
|
||||
log.debug(u'resize_image - start')
|
||||
if isinstance(image, QtGui.QImage):
|
||||
|
@ -349,11 +349,11 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
Validates whether an image still exists and, if it does, is the
|
||||
thumbnail representation of the image up to date.
|
||||
"""
|
||||
if not os.path.exists(image):
|
||||
if not os.path.exists(unicode(image)):
|
||||
return False
|
||||
if os.path.exists(thumb):
|
||||
imageDate = os.stat(image).st_mtime
|
||||
thumbDate = os.stat(thumb).st_mtime
|
||||
imageDate = os.stat(unicode(image)).st_mtime
|
||||
thumbDate = os.stat(unicode(thumb)).st_mtime
|
||||
# If image has been updated rebuild icon
|
||||
if imageDate > thumbDate:
|
||||
self.iconFromFile(image, thumb)
|
||||
|
@ -114,8 +114,8 @@ class Plugin(QtCore.QObject):
|
||||
"""
|
||||
log.info(u'loaded')
|
||||
|
||||
def __init__(self, name, version=None, pluginHelpers=None,
|
||||
mediaItemClass=None, settingsTabClass=None):
|
||||
def __init__(self, name, pluginHelpers=None, mediaItemClass=None,
|
||||
settingsTabClass=None, version=None):
|
||||
"""
|
||||
This is the constructor for the plugin object. This provides an easy
|
||||
way for descendent plugins to populate common data. This method *must*
|
||||
@ -123,7 +123,7 @@ class Plugin(QtCore.QObject):
|
||||
|
||||
class MyPlugin(Plugin):
|
||||
def __init__(self):
|
||||
Plugin.__init__(self, u'MyPlugin', u'0.1')
|
||||
Plugin.__init__(self, u'MyPlugin', version=u'0.1')
|
||||
|
||||
``name``
|
||||
Defaults to *None*. The name of the plugin.
|
||||
@ -145,8 +145,7 @@ class Plugin(QtCore.QObject):
|
||||
self.textStrings = {}
|
||||
self.setPluginTextStrings()
|
||||
self.nameStrings = self.textStrings[StringContent.Name]
|
||||
if version:
|
||||
self.version = version
|
||||
self.version = version if version else u'1.9.4'
|
||||
self.settingsSection = self.name.lower()
|
||||
self.icon = None
|
||||
self.mediaItemClass = mediaItemClass
|
||||
|
@ -226,7 +226,7 @@ class Ui_AboutDialog(object):
|
||||
'Portions copyright \xa9 2004-2011 '
|
||||
'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri,\n'
|
||||
'Meinert Jordan, Andreas Preikschat, Christian Richter, Philip\n'
|
||||
'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carstenn'
|
||||
'Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten\n'
|
||||
'Tinggaard, Frode Woldsund')
|
||||
licence = translate('OpenLP.AboutForm',
|
||||
'This program is free software; you can redistribute it and/or '
|
||||
|
@ -66,6 +66,9 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
||||
'Starting Updates')
|
||||
self.downloading = unicode(translate('OpenLP.FirstTimeWizard',
|
||||
'Downloading %s'))
|
||||
QtCore.QObject.connect(self,
|
||||
QtCore.SIGNAL(u'currentIdChanged(int)'),
|
||||
self.onCurrentIdChanged)
|
||||
|
||||
def exec_(self, edit=False):
|
||||
"""
|
||||
@ -83,9 +86,13 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
||||
if self.webAccess:
|
||||
self.internetGroupBox.setVisible(True)
|
||||
self.noInternetLabel.setVisible(False)
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.selectionTreeWidget)
|
||||
treewidgetitem.setText(0, self.songsText)
|
||||
self._loadChild(treewidgetitem, u'songs', u'languages', u'songs')
|
||||
# If songs database exists do not allow a copy
|
||||
songs = os.path.join(AppLocation.get_section_data_path(u'songs'),
|
||||
u'songs.sqlite')
|
||||
if not os.path.exists(songs):
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.selectionTreeWidget)
|
||||
treewidgetitem.setText(0, self.songsText)
|
||||
self._loadChild(treewidgetitem, u'songs', u'languages', u'songs')
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.selectionTreeWidget)
|
||||
treewidgetitem.setText(0, self.biblesText)
|
||||
self._loadChild(treewidgetitem, u'bibles', u'translations',
|
||||
@ -112,12 +119,12 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
||||
child.setFlags(QtCore.Qt.ItemIsUserCheckable |
|
||||
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||
|
||||
def initializePage(self, id):
|
||||
def onCurrentIdChanged(self, pageId):
|
||||
"""
|
||||
Set up the pages for Initial run through dialog
|
||||
Detects Page changes and updates as approprate.
|
||||
"""
|
||||
wizardPage = self.page(id)
|
||||
if wizardPage == self.DefaultsPage:
|
||||
if self.page(pageId) == self.DefaultsPage:
|
||||
self.themeSelectionComboBox.clear()
|
||||
listIterator = QtGui.QTreeWidgetItemIterator(
|
||||
self.selectionTreeWidget)
|
||||
while listIterator.value():
|
||||
@ -130,6 +137,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
||||
listIterator += 1
|
||||
|
||||
def accept(self):
|
||||
Receiver.send_message(u'cursor_busy')
|
||||
self._updateMessage(self.startUpdates)
|
||||
# Set up the Plugin status's
|
||||
self._pluginStatus(self.songsCheckBox, u'songs/status')
|
||||
@ -193,6 +201,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
||||
QtCore.QVariant(self.themeSelectionComboBox.currentText()))
|
||||
QtCore.QSettings().setValue(u'general/first time',
|
||||
QtCore.QVariant(False))
|
||||
Receiver.send_message(u'cursor_normal')
|
||||
return QtGui.QWizard.accept(self)
|
||||
|
||||
def _pluginStatus(self, field, tag):
|
||||
|
@ -224,4 +224,4 @@ class Ui_FirstTimeWizard(object):
|
||||
self.themeSelectionLabel.setText(translate('OpenLP.FirstTimeWizard',
|
||||
'Select the default Theme'))
|
||||
self.messageLabel.setText(translate('OpenLP.FirstTimeWizard',
|
||||
'Press Finish to apply all you changes and start OpenLP'))
|
||||
'Press finish to apply all your changes and start OpenLP'))
|
||||
|
@ -90,8 +90,8 @@ class MainDisplay(DisplayWidget):
|
||||
"""
|
||||
Set up and build the output screen
|
||||
"""
|
||||
log.debug(u'Setup live = %s for monitor %s ' % (self.isLive,
|
||||
self.screens.monitor_number))
|
||||
log.debug(u'Start setup for monitor %s (live = %s)' %
|
||||
(self.screens.monitor_number, self.isLive))
|
||||
self.usePhonon = QtCore.QSettings().value(
|
||||
u'media/use phonon', QtCore.QVariant(True)).toBool()
|
||||
self.phononActive = False
|
||||
@ -102,6 +102,7 @@ class MainDisplay(DisplayWidget):
|
||||
self.videoWidget.setVisible(False)
|
||||
self.videoWidget.setGeometry(QtCore.QRect(0, 0,
|
||||
self.screen[u'size'].width(), self.screen[u'size'].height()))
|
||||
log.debug(u'Setup Phonon for monitor %s' % self.screens.monitor_number)
|
||||
self.mediaObject = Phonon.MediaObject(self)
|
||||
self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject)
|
||||
Phonon.createPath(self.mediaObject, self.videoWidget)
|
||||
@ -109,6 +110,7 @@ class MainDisplay(DisplayWidget):
|
||||
QtCore.QObject.connect(self.mediaObject,
|
||||
QtCore.SIGNAL(u'stateChanged(Phonon::State, Phonon::State)'),
|
||||
self.videoStart)
|
||||
log.debug(u'Setup webView for monitor %s' % self.screens.monitor_number)
|
||||
self.webView = QtWebKit.QWebView(self)
|
||||
self.webView.setGeometry(0, 0,
|
||||
self.screen[u'size'].width(), self.screen[u'size'].height())
|
||||
@ -165,6 +167,8 @@ class MainDisplay(DisplayWidget):
|
||||
self.primary = False
|
||||
else:
|
||||
self.primary = True
|
||||
log.debug(
|
||||
u'Finished setup for monitor %s' % self.screens.monitor_number)
|
||||
|
||||
def text(self, slide):
|
||||
"""
|
||||
@ -245,7 +249,8 @@ class MainDisplay(DisplayWidget):
|
||||
js = u'show_image("");'
|
||||
self.frame.evaluateJavaScript(js)
|
||||
# Update the preview frame.
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
if self.isLive:
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
|
||||
def resetImage(self):
|
||||
"""
|
||||
@ -259,7 +264,8 @@ class MainDisplay(DisplayWidget):
|
||||
self.displayImage(None)
|
||||
self.override = {}
|
||||
# Update the preview frame.
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
if self.isLive:
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
|
||||
def resetVideo(self):
|
||||
"""
|
||||
@ -276,7 +282,8 @@ class MainDisplay(DisplayWidget):
|
||||
self.frame.evaluateJavaScript(u'show_video("close");')
|
||||
self.override = {}
|
||||
# Update the preview frame.
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
if self.isLive:
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
|
||||
def videoPlay(self):
|
||||
"""
|
||||
@ -347,7 +354,8 @@ class MainDisplay(DisplayWidget):
|
||||
self.videoWidget.setVisible(True)
|
||||
self.audio.setVolume(vol)
|
||||
# Update the preview frame.
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
if self.isLive:
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
return self.preview()
|
||||
|
||||
def videoStart(self, newState, oldState):
|
||||
@ -481,7 +489,8 @@ class MainDisplay(DisplayWidget):
|
||||
self.videoPlay()
|
||||
self.hideMode = None
|
||||
# Trigger actions when display is active again
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
if self.isLive:
|
||||
Receiver.send_message(u'maindisplay_active')
|
||||
|
||||
def __hideMouse(self):
|
||||
# Hide mouse cursor when moved over display if enabled in settings
|
||||
@ -507,9 +516,6 @@ class AudioPlayer(QtCore.QObject):
|
||||
|
||||
``parent``
|
||||
The parent widget.
|
||||
|
||||
``screens``
|
||||
The list of screens.
|
||||
"""
|
||||
log.debug(u'AudioPlayer Initialisation started')
|
||||
QtCore.QObject.__init__(self, parent)
|
||||
|
@ -232,7 +232,7 @@ class Ui_MainWindow(object):
|
||||
self.LanguageGroup = QtGui.QActionGroup(mainWindow)
|
||||
self.LanguageGroup.setExclusive(True)
|
||||
self.LanguageGroup.setObjectName(u'LanguageGroup')
|
||||
self.LanguageGroup.setDisabled(LanguageManager.auto_language)
|
||||
add_actions(self.LanguageGroup, [self.AutoLanguageItem])
|
||||
qmList = LanguageManager.get_qm_list()
|
||||
savedLanguage = LanguageManager.get_language()
|
||||
for key in sorted(qmList.keys()):
|
||||
@ -425,14 +425,14 @@ class Ui_MainWindow(object):
|
||||
translate('OpenLP.MainWindow', '&Online Help'))
|
||||
self.helpWebSiteItem.setText(
|
||||
translate('OpenLP.MainWindow', '&Web Site'))
|
||||
self.AutoLanguageItem.setText(
|
||||
translate('OpenLP.MainWindow', '&Auto Detect'))
|
||||
self.AutoLanguageItem.setStatusTip(translate('OpenLP.MainWindow',
|
||||
'Use the system language, if available.'))
|
||||
for item in self.LanguageGroup.actions():
|
||||
item.setText(item.objectName())
|
||||
item.setStatusTip(unicode(translate('OpenLP.MainWindow',
|
||||
'Set the interface language to %s')) % item.objectName())
|
||||
self.AutoLanguageItem.setText(
|
||||
translate('OpenLP.MainWindow', '&Autodetect'))
|
||||
self.AutoLanguageItem.setStatusTip(translate('OpenLP.MainWindow',
|
||||
'Use the system language, if available.'))
|
||||
self.ToolsAddToolItem.setText(
|
||||
translate('OpenLP.MainWindow', 'Add &Tool...'))
|
||||
self.ToolsAddToolItem.setStatusTip(translate('OpenLP.MainWindow',
|
||||
@ -550,8 +550,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
||||
QtCore.SIGNAL(u'triggered()'),
|
||||
self.ServiceManagerContents.printServiceOrder)
|
||||
# i18n set signals for languages
|
||||
QtCore.QObject.connect(self.AutoLanguageItem,
|
||||
QtCore.SIGNAL(u'toggled(bool)'), self.setAutoLanguage)
|
||||
self.LanguageGroup.triggered.connect(LanguageManager.set_language)
|
||||
QtCore.QObject.connect(self.ModeDefaultItem,
|
||||
QtCore.SIGNAL(u'triggered()'), self.onModeDefaultItemClicked)
|
||||
|
@ -415,47 +415,75 @@ class ServiceManager(QtGui.QWidget):
|
||||
"""
|
||||
if not self.fileName():
|
||||
return self.saveFileAs()
|
||||
else:
|
||||
fileName = self.fileName()
|
||||
log.debug(u'ServiceManager.saveFile - %s' % fileName)
|
||||
SettingsManager.set_last_dir(self.mainwindow.serviceSettingsSection,
|
||||
split_filename(fileName)[0])
|
||||
service = []
|
||||
serviceFileName = fileName.replace(u'.osz', u'.osd')
|
||||
zip = None
|
||||
file = None
|
||||
try:
|
||||
write_list = []
|
||||
zip = zipfile.ZipFile(unicode(fileName), 'w')
|
||||
for item in self.serviceItems:
|
||||
service.append({u'serviceitem': \
|
||||
item[u'service_item'].get_service_repr()})
|
||||
if item[u'service_item'].uses_file():
|
||||
for frame in item[u'service_item'].get_frames():
|
||||
if item[u'service_item'].is_image():
|
||||
path_from = frame[u'path']
|
||||
else:
|
||||
path_from = unicode(os.path.join(
|
||||
frame[u'path'],
|
||||
frame[u'title']))
|
||||
# On write a file once
|
||||
if not path_from in write_list:
|
||||
write_list.append(path_from)
|
||||
zip.write(path_from.encode(u'utf-8'))
|
||||
file = open(serviceFileName, u'wb')
|
||||
cPickle.dump(service, file)
|
||||
file.close()
|
||||
zip.write(serviceFileName.encode(u'utf-8'))
|
||||
except IOError:
|
||||
log.exception(u'Failed to save service to disk')
|
||||
finally:
|
||||
if file:
|
||||
file.close()
|
||||
if zip:
|
||||
zip.close()
|
||||
delete_file(serviceFileName)
|
||||
self.mainwindow.addRecentFile(fileName)
|
||||
self.setModified(False)
|
||||
path_file_name = unicode(self.fileName())
|
||||
(path, file_name) = os.path.split(path_file_name)
|
||||
(basename, extension) = os.path.splitext(file_name)
|
||||
service_file_name = basename + '.osd'
|
||||
log.debug(u'ServiceManager.saveFile - %s' % path_file_name)
|
||||
SettingsManager.set_last_dir(self.mainwindow.serviceSettingsSection,
|
||||
path)
|
||||
service = []
|
||||
write_list = []
|
||||
total_size = 0
|
||||
for item in self.serviceItems:
|
||||
service.append({u'serviceitem':
|
||||
item[u'service_item'].get_service_repr()})
|
||||
if not item[u'service_item'].uses_file():
|
||||
continue
|
||||
for frame in item[u'service_item'].get_frames():
|
||||
if item[u'service_item'].is_image():
|
||||
path_from = frame[u'path']
|
||||
else:
|
||||
path_from = os.path.join(frame[u'path'], frame[u'title'])
|
||||
# Only write a file once
|
||||
if path_from in write_list:
|
||||
continue
|
||||
file_size = os.path.getsize(path_from)
|
||||
size_limit = 52428800 # 50MiB
|
||||
#if file_size > size_limit:
|
||||
# # File exeeds size_limit bytes, ask user
|
||||
# message = unicode(translate('OpenLP.ServiceManager',
|
||||
# 'Do you want to include \n%.1f MB file "%s"\n'
|
||||
# 'into the service file?\nThis may take some time.\n\n'
|
||||
# 'Please note that you need to\ntake care of that file'
|
||||
# ' yourself,\nif you leave it out.')) % \
|
||||
# (file_size/1048576, os.path.split(path_from)[1])
|
||||
# ans = QtGui.QMessageBox.question(self.mainwindow,
|
||||
# translate('OpenLP.ServiceManager', 'Including Large '
|
||||
# 'File'), message, QtGui.QMessageBox.StandardButtons(
|
||||
# QtGui.QMessageBox.Ok|QtGui.QMessageBox.Cancel),
|
||||
# QtGui.QMessageBox.Ok)
|
||||
# if ans == QtGui.QMessageBox.Cancel:
|
||||
# continue
|
||||
write_list.append(path_from)
|
||||
total_size += file_size
|
||||
log.debug(u'ServiceManager.saveFile - ZIP contents size is %i bytes' %
|
||||
total_size)
|
||||
service_content = cPickle.dumps(service)
|
||||
# Usual Zip file cannot exceed 2GiB, file with Zip64 cannot be
|
||||
# extracted using unzip in UNIX.
|
||||
allow_zip_64 = (total_size > 2147483648 + len(service_content))
|
||||
log.debug(u'ServiceManager.saveFile - allowZip64 is %s' %
|
||||
allow_zip_64)
|
||||
zip = None
|
||||
try:
|
||||
zip = zipfile.ZipFile(path_file_name, 'w', zipfile.ZIP_STORED,
|
||||
allow_zip_64)
|
||||
# First we add service contents.
|
||||
# We save ALL filenames into ZIP using UTF-8.
|
||||
zip.writestr(service_file_name.encode(u'utf-8'),
|
||||
service_content)
|
||||
# Finally add all the listed media files.
|
||||
for path_from in write_list:
|
||||
zip.write(path_from, path_from.encode(u'utf-8'))
|
||||
except IOError:
|
||||
log.exception(u'Failed to save service to disk')
|
||||
return False
|
||||
finally:
|
||||
if zip:
|
||||
zip.close()
|
||||
self.mainwindow.addRecentFile(path_file_name)
|
||||
self.setModified(False)
|
||||
return True
|
||||
|
||||
def saveFileAs(self):
|
||||
|
@ -162,7 +162,7 @@ class SlideController(QtGui.QWidget):
|
||||
self.themeScreen.setText(
|
||||
translate('OpenLP.SlideController', 'Blank to Theme'))
|
||||
self.desktopScreen = icon_action(self.hideMenu, u'Desktop Screen',
|
||||
u':/slides/slide_desktop.png', False)
|
||||
u':/slides/slide_desktop.png', False)
|
||||
self.desktopScreen.setText(
|
||||
translate('OpenLP.SlideController', 'Show Desktop'))
|
||||
self.hideMenu.setDefaultAction(self.blankScreen)
|
||||
|
@ -112,9 +112,13 @@ class LanguageManager(object):
|
||||
"""
|
||||
language = u'en'
|
||||
if action:
|
||||
action_name = u'%s' % action.objectName()
|
||||
qm_list = LanguageManager.get_qm_list()
|
||||
language = u'%s' % qm_list[action_name]
|
||||
action_name = unicode(action.objectName())
|
||||
if action_name == u'AutoLanguageItem':
|
||||
LanguageManager.auto_language = True
|
||||
else:
|
||||
LanguageManager.auto_language = False
|
||||
qm_list = LanguageManager.get_qm_list()
|
||||
language = unicode(qm_list[action_name])
|
||||
if LanguageManager.auto_language:
|
||||
language = u'[%s]' % language
|
||||
# This needs to be here for the setValue to work
|
||||
|
@ -40,7 +40,7 @@ class AlertsPlugin(Plugin):
|
||||
log.info(u'Alerts Plugin loaded')
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'Alerts', u'1.9.4', plugin_helpers,
|
||||
Plugin.__init__(self, u'Alerts', plugin_helpers,
|
||||
settingsTabClass=AlertsTab)
|
||||
self.weight = -3
|
||||
self.icon = build_icon(u':/plugins/plugin_alerts.png')
|
||||
|
@ -37,7 +37,7 @@ class BiblePlugin(Plugin):
|
||||
log.info(u'Bible Plugin loaded')
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'Bibles', u'1.9.4', plugin_helpers,
|
||||
Plugin.__init__(self, u'Bibles', plugin_helpers,
|
||||
BibleMediaItem, BiblesTab)
|
||||
self.weight = -9
|
||||
self.icon_path = u':/plugins/plugin_bibles.png'
|
||||
|
@ -449,8 +449,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
if restore:
|
||||
old_text = unicode(combo.currentText())
|
||||
combo.clear()
|
||||
for i in range(range_from, range_to + 1):
|
||||
combo.addItem(unicode(i))
|
||||
combo.addItems([unicode(i) for i in range(range_from, range_to + 1)])
|
||||
if restore and combo.findText(old_text) != -1:
|
||||
combo.setCurrentIndex(combo.findText(old_text))
|
||||
|
||||
@ -704,8 +703,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
service_item.theme = None
|
||||
else:
|
||||
service_item.theme = self.settings.bible_theme
|
||||
for slide in raw_slides:
|
||||
service_item.add_from_text(slide[:30], slide)
|
||||
[service_item.add_from_text(slide[:30], slide) for slide in raw_slides]
|
||||
return True
|
||||
|
||||
def formatTitle(self, start_item, old_item):
|
||||
@ -744,8 +742,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
else:
|
||||
verse_range = start_chapter + verse_separator + start_verse + \
|
||||
range_separator + old_chapter + verse_separator + old_verse
|
||||
title = u'%s %s (%s)' % (start_book, verse_range, bibles)
|
||||
return title
|
||||
return u'%s %s (%s)' % (start_book, verse_range, bibles)
|
||||
|
||||
def checkTitle(self, item, old_item):
|
||||
"""
|
||||
|
@ -47,7 +47,7 @@ class CustomPlugin(Plugin):
|
||||
log.info(u'Custom Plugin loaded')
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'Custom', u'1.9.4', plugin_helpers,
|
||||
Plugin.__init__(self, u'Custom', plugin_helpers,
|
||||
CustomMediaItem, CustomTab)
|
||||
self.weight = -5
|
||||
self.manager = Manager(u'custom', init_schema)
|
||||
|
@ -35,8 +35,7 @@ class ImagePlugin(Plugin):
|
||||
log.info(u'Image Plugin loaded')
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'Images', u'1.9.4', plugin_helpers,
|
||||
ImageMediaItem)
|
||||
Plugin.__init__(self, u'Images', plugin_helpers, ImageMediaItem)
|
||||
self.weight = -7
|
||||
self.icon_path = u':/plugins/plugin_images.png'
|
||||
self.icon = build_icon(self.icon_path)
|
||||
|
@ -38,7 +38,7 @@ class MediaPlugin(Plugin):
|
||||
log.info(u'%s MediaPlugin loaded', __name__)
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'Media', u'1.9.4', plugin_helpers,
|
||||
Plugin.__init__(self, u'Media', plugin_helpers,
|
||||
MediaMediaItem, MediaTab)
|
||||
self.weight = -6
|
||||
self.icon_path = u':/plugins/plugin_media.png'
|
||||
|
@ -51,7 +51,7 @@ class PresentationPlugin(Plugin):
|
||||
"""
|
||||
log.debug(u'Initialised')
|
||||
self.controllers = {}
|
||||
Plugin.__init__(self, u'Presentations', u'1.9.4', plugin_helpers)
|
||||
Plugin.__init__(self, u'Presentations', plugin_helpers)
|
||||
self.weight = -8
|
||||
self.icon_path = u':/plugins/plugin_presentations.png'
|
||||
self.icon = build_icon(self.icon_path)
|
||||
|
@ -38,7 +38,7 @@ class RemotesPlugin(Plugin):
|
||||
"""
|
||||
remotes constructor
|
||||
"""
|
||||
Plugin.__init__(self, u'Remotes', u'1.9.4', plugin_helpers,
|
||||
Plugin.__init__(self, u'Remotes', plugin_helpers,
|
||||
settingsTabClass=RemoteTab)
|
||||
self.icon = build_icon(u':/plugins/plugin_remote.png')
|
||||
self.weight = -1
|
||||
|
@ -159,15 +159,15 @@ class SongMediaItem(MediaManagerItem):
|
||||
def onSearchTextButtonClick(self):
|
||||
search_keywords = unicode(self.searchTextEdit.displayText())
|
||||
search_results = []
|
||||
# search_type = self.searchTypeComboBox.currentIndex()
|
||||
search_type = self.searchTextEdit.currentSearchType()
|
||||
if search_type == SongSearch.Entire:
|
||||
log.debug(u'Entire Song Search')
|
||||
search_results = self.parent.manager.get_all_objects(Song,
|
||||
or_(Song.search_title.like(u'%' + self.whitespace.sub(u' ',
|
||||
search_keywords.lower()) + u'%'),
|
||||
Song.search_lyrics.like(u'%' + search_keywords.lower() + \
|
||||
u'%')), Song.search_title.asc())
|
||||
Song.search_lyrics.like(u'%' + search_keywords.lower() + u'%'),
|
||||
Song.comments.like(u'%' + search_keywords.lower() + u'%')),
|
||||
Song.search_title.asc())
|
||||
self.displayResultsSong(search_results)
|
||||
elif search_type == SongSearch.Titles:
|
||||
log.debug(u'Titles Search')
|
||||
@ -198,7 +198,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
Handle the exit from the edit dialog and trigger remote updates
|
||||
of songs
|
||||
"""
|
||||
log.debug(u'onSongListLoad')
|
||||
log.debug(u'onSongListLoad - start')
|
||||
# Called to redisplay the song list screen edit from a search
|
||||
# or from the exit of the Song edit dialog. If remote editing is active
|
||||
# Trigger it and clean up so it will not update again.
|
||||
@ -213,6 +213,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
self.parent.serviceManager.replaceServiceItem(item)
|
||||
self.onRemoteEditClear()
|
||||
self.onSearchTextButtonClick()
|
||||
log.debug(u'onSongListLoad - finished')
|
||||
|
||||
def displayResultsSong(self, searchresults):
|
||||
log.debug(u'display results Song')
|
||||
@ -252,11 +253,13 @@ class SongMediaItem(MediaManagerItem):
|
||||
if self.searchAsYouType:
|
||||
search_length = 1
|
||||
if self.searchTextEdit.currentSearchType() == SongSearch.Entire:
|
||||
search_length = 3
|
||||
elif self.searchTextEdit.currentSearchType() == SongSearch.Lyrics:
|
||||
search_length = 7
|
||||
elif self.searchTextEdit.currentSearchType() == SongSearch.Lyrics:
|
||||
search_length = 6
|
||||
if len(text) > search_length:
|
||||
self.onSearchTextButtonClick()
|
||||
elif len(text) == 0:
|
||||
self.onClearTextButtonClick()
|
||||
|
||||
def onImportClick(self):
|
||||
if not hasattr(self, u'import_wizard'):
|
||||
@ -445,10 +448,9 @@ class SongMediaItem(MediaManagerItem):
|
||||
add_song = False
|
||||
editId = song.id
|
||||
break
|
||||
if add_song:
|
||||
if self.addSongFromService:
|
||||
editId = self.openLyrics.xml_to_song(item.xml_version)
|
||||
self.onSearchTextButtonClick()
|
||||
if add_song and self.addSongFromService:
|
||||
editId = self.openLyrics.xml_to_song(item.xml_version)
|
||||
self.onSearchTextButtonClick()
|
||||
# Update service with correct song id.
|
||||
if editId:
|
||||
Receiver.send_message(u'service_item_update',
|
||||
|
@ -96,7 +96,7 @@ class OooImport(SongImport):
|
||||
"""
|
||||
if os.name == u'nt':
|
||||
self.start_ooo_process()
|
||||
self.desktop = self.manager.createInstance(
|
||||
self.desktop = self.ooo_manager.createInstance(
|
||||
u'com.sun.star.frame.Desktop')
|
||||
else:
|
||||
context = uno.getComponentContext()
|
||||
@ -118,9 +118,9 @@ class OooImport(SongImport):
|
||||
def start_ooo_process(self):
|
||||
try:
|
||||
if os.name == u'nt':
|
||||
self.manager = Dispatch(u'com.sun.star.ServiceManager')
|
||||
self.manager._FlagAsMethod(u'Bridge_GetStruct')
|
||||
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
|
||||
self.ooo_manager = Dispatch(u'com.sun.star.ServiceManager')
|
||||
self.ooo_manager._FlagAsMethod(u'Bridge_GetStruct')
|
||||
self.ooo_manager._FlagAsMethod(u'Bridge_GetValueObject')
|
||||
else:
|
||||
cmd = get_uno_command()
|
||||
process = QtCore.QProcess()
|
||||
@ -134,9 +134,11 @@ class OooImport(SongImport):
|
||||
"""
|
||||
Open the passed file in OpenOffice.org Impress
|
||||
"""
|
||||
self.filepath = filepath
|
||||
if os.name == u'nt':
|
||||
url = u'file:///' + filepath.replace(u'\\', u'/')
|
||||
url = filepath.replace(u'\\', u'/')
|
||||
url = url.replace(u':', u'|').replace(u' ', u'%20')
|
||||
url = u'file:///' + url
|
||||
else:
|
||||
url = uno.systemPathToFileUrl(filepath)
|
||||
properties = []
|
||||
@ -190,10 +192,7 @@ class OooImport(SongImport):
|
||||
if slidetext.strip() == u'':
|
||||
slidetext = u'\f'
|
||||
text += slidetext
|
||||
song = SongImport(self.manager)
|
||||
songs = SongImport.process_songs_text(self.manager, text)
|
||||
for song in songs:
|
||||
song.finish()
|
||||
self.process_songs_text(text)
|
||||
return
|
||||
|
||||
def process_doc(self):
|
||||
@ -215,6 +214,16 @@ class OooImport(SongImport):
|
||||
if textportion.BreakType in (PAGE_AFTER, PAGE_BOTH):
|
||||
paratext += u'\f'
|
||||
text += paratext + u'\n'
|
||||
songs = SongImport.process_songs_text(self.manager, text)
|
||||
for song in songs:
|
||||
song.finish()
|
||||
self.process_songs_text(text)
|
||||
|
||||
def process_songs_text(self, text):
|
||||
songtexts = self.tidy_text(text).split(u'\f')
|
||||
self.set_defaults()
|
||||
for songtext in songtexts:
|
||||
if songtext.strip():
|
||||
self.process_song_text(songtext.strip())
|
||||
if self.check_complete():
|
||||
self.finish()
|
||||
self.set_defaults()
|
||||
if self.check_complete():
|
||||
self.finish()
|
||||
|
@ -29,10 +29,11 @@ songs from the database to the OpenLyrics format.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
|
||||
from lxml import etree
|
||||
|
||||
from openlp.core.lib import Receiver, translate
|
||||
from openlp.core.lib import check_directory_exists, Receiver, translate
|
||||
from openlp.plugins.songs.lib import OpenLyrics
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@ -50,8 +51,7 @@ class OpenLyricsExport(object):
|
||||
self.manager = parent.plugin.manager
|
||||
self.songs = songs
|
||||
self.save_path = save_path
|
||||
if not os.path.exists(self.save_path):
|
||||
os.mkdir(self.save_path)
|
||||
check_directory_exists(self.save_path)
|
||||
|
||||
def do_export(self):
|
||||
"""
|
||||
@ -69,6 +69,10 @@ class OpenLyricsExport(object):
|
||||
song.title)
|
||||
xml = openLyrics.song_to_xml(song)
|
||||
tree = etree.ElementTree(etree.fromstring(xml))
|
||||
tree.write(os.path.join(self.save_path, song.title + u'.xml'),
|
||||
filename = u'%s (%s).xml' % (song.title,
|
||||
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),
|
||||
encoding=u'utf-8', xml_declaration=True, pretty_print=True)
|
||||
return True
|
||||
|
@ -72,6 +72,7 @@ class SofImport(OooImport):
|
||||
to SongImport for writing song to disk
|
||||
"""
|
||||
OooImport.__init__(self, manager, **kwargs)
|
||||
self.song = False
|
||||
|
||||
def process_ooo_document(self):
|
||||
"""
|
||||
@ -94,8 +95,8 @@ class SofImport(OooImport):
|
||||
if paragraph.supportsService("com.sun.star.text.Paragraph"):
|
||||
self.process_paragraph(paragraph)
|
||||
if self.song:
|
||||
self.song.finish()
|
||||
self.song = None
|
||||
self.finish()
|
||||
self.song = False
|
||||
|
||||
def process_paragraph(self, paragraph):
|
||||
"""
|
||||
@ -143,7 +144,7 @@ class SofImport(OooImport):
|
||||
self.blanklines += 1
|
||||
if self.blanklines > 1:
|
||||
return
|
||||
if self.song.title != u'':
|
||||
if self.title != u'':
|
||||
self.finish_verse()
|
||||
return
|
||||
self.blanklines = 0
|
||||
@ -161,17 +162,17 @@ class SofImport(OooImport):
|
||||
self.skip_to_close_bracket = True
|
||||
return
|
||||
if text.startswith(u'Copyright'):
|
||||
self.song.add_copyright(text)
|
||||
self.add_copyright(text)
|
||||
return
|
||||
if text == u'(Repeat)':
|
||||
self.finish_verse()
|
||||
self.song.repeat_verse()
|
||||
self.repeat_verse()
|
||||
return
|
||||
if self.song.title == u'':
|
||||
if self.song.copyright == u'':
|
||||
self.add_author(text)
|
||||
if self.title == u'':
|
||||
if self.copyright == u'':
|
||||
self.add_sof_author(text)
|
||||
else:
|
||||
self.song.add_copyright(text)
|
||||
self.add_copyright(text)
|
||||
return
|
||||
self.add_verse_line(text)
|
||||
|
||||
@ -183,15 +184,15 @@ class SofImport(OooImport):
|
||||
into line
|
||||
"""
|
||||
text = textportion.getString()
|
||||
text = SongImport.tidy_text(text)
|
||||
text = self.tidy_text(text)
|
||||
if text.strip() == u'':
|
||||
return text
|
||||
if textportion.CharWeight == BOLD:
|
||||
boldtext = text.strip()
|
||||
if boldtext.isdigit() and self.song.song_number == '':
|
||||
if boldtext.isdigit() and self.song_number == '':
|
||||
self.add_songnumber(boldtext)
|
||||
return u''
|
||||
if self.song.title == u'':
|
||||
if self.title == u'':
|
||||
text = self.uncap_text(text)
|
||||
self.add_title(text)
|
||||
return text
|
||||
@ -207,10 +208,11 @@ class SofImport(OooImport):
|
||||
"""
|
||||
if self.song:
|
||||
self.finish_verse()
|
||||
if not self.song.check_complete():
|
||||
if not self.check_complete():
|
||||
return
|
||||
self.song.finish()
|
||||
self.song = SongImport(self.manager)
|
||||
self.finish()
|
||||
self.song = True
|
||||
self.set_defaults()
|
||||
self.skip_to_close_bracket = False
|
||||
self.is_chorus = False
|
||||
self.italics = False
|
||||
@ -221,17 +223,17 @@ class SofImport(OooImport):
|
||||
Add a song number, store as alternate title. Also use the song
|
||||
number to work out which songbook we're in
|
||||
"""
|
||||
self.song.song_number = song_no
|
||||
self.song.alternate_title = song_no + u'.'
|
||||
self.song.song_book_pub = u'Kingsway Publications'
|
||||
self.song_number = song_no
|
||||
self.alternate_title = song_no + u'.'
|
||||
self.song_book_pub = u'Kingsway Publications'
|
||||
if int(song_no) <= 640:
|
||||
self.song.song_book = u'Songs of Fellowship 1'
|
||||
self.song_book = u'Songs of Fellowship 1'
|
||||
elif int(song_no) <= 1150:
|
||||
self.song.song_book = u'Songs of Fellowship 2'
|
||||
self.song_book = u'Songs of Fellowship 2'
|
||||
elif int(song_no) <= 1690:
|
||||
self.song.song_book = u'Songs of Fellowship 3'
|
||||
self.song_book = u'Songs of Fellowship 3'
|
||||
else:
|
||||
self.song.song_book = u'Songs of Fellowship 4'
|
||||
self.song_book = u'Songs of Fellowship 4'
|
||||
|
||||
def add_title(self, text):
|
||||
"""
|
||||
@ -243,10 +245,10 @@ class SofImport(OooImport):
|
||||
title = title[1:]
|
||||
if title.endswith(u','):
|
||||
title = title[:-1]
|
||||
self.song.title = title
|
||||
self.title = title
|
||||
self.import_wizard.incrementProgressBar(u'Processing song ' + title, 0)
|
||||
|
||||
def add_author(self, text):
|
||||
def add_sof_author(self, text):
|
||||
"""
|
||||
Add the author. OpenLP stores them individually so split by 'and', '&'
|
||||
and comma.
|
||||
@ -254,7 +256,7 @@ class SofImport(OooImport):
|
||||
"Mr Smith" and "Mrs Smith".
|
||||
"""
|
||||
text = text.replace(u' and ', u' & ')
|
||||
self.song.parse_author(text)
|
||||
self.parse_author(text)
|
||||
|
||||
def add_verse_line(self, text):
|
||||
"""
|
||||
@ -262,7 +264,7 @@ class SofImport(OooImport):
|
||||
we're beyond the second line of first verse, then this indicates
|
||||
a change of verse. Italics are a chorus
|
||||
"""
|
||||
if self.italics != self.is_chorus and ((len(self.song.verses) > 0) or
|
||||
if self.italics != self.is_chorus and ((len(self.verses) > 0) or
|
||||
(self.currentverse.count(u'\n') > 1)):
|
||||
self.finish_verse()
|
||||
if self.italics:
|
||||
@ -282,14 +284,14 @@ class SofImport(OooImport):
|
||||
splitat = None
|
||||
else:
|
||||
versetag = u'V'
|
||||
splitat = self.verse_splits(self.song.song_number)
|
||||
splitat = self.verse_splits(self.song_number)
|
||||
if splitat:
|
||||
ln = 0
|
||||
verse = u''
|
||||
for line in self.currentverse.split(u'\n'):
|
||||
ln += 1
|
||||
if line == u'' or ln > splitat:
|
||||
self.song.add_verse(verse, versetag)
|
||||
self.add_sof_verse(verse, versetag)
|
||||
ln = 0
|
||||
if line:
|
||||
verse = line + u'\n'
|
||||
@ -298,12 +300,18 @@ class SofImport(OooImport):
|
||||
else:
|
||||
verse += line + u'\n'
|
||||
if verse:
|
||||
self.song.add_verse(verse, versetag)
|
||||
self.add_sof_verse(verse, versetag)
|
||||
else:
|
||||
self.song.add_verse(self.currentverse, versetag)
|
||||
self.add_sof_verse(self.currentverse, versetag)
|
||||
self.currentverse = u''
|
||||
self.is_chorus = False
|
||||
|
||||
def add_sof_verse(self, lyrics, tag):
|
||||
self.add_verse(lyrics, tag)
|
||||
if not self.is_chorus and u'C1' in self.verse_order_list_generated:
|
||||
self.verse_order_list_generated.append(u'C1')
|
||||
self.verse_order_list_generated_useful = True
|
||||
|
||||
def uncap_text(self, text):
|
||||
"""
|
||||
Words in the title are in all capitals, so we lowercase them.
|
||||
|
@ -103,23 +103,7 @@ class SongImport(QtCore.QObject):
|
||||
def register(self, import_wizard):
|
||||
self.import_wizard = import_wizard
|
||||
|
||||
@staticmethod
|
||||
def process_songs_text(manager, text):
|
||||
songs = []
|
||||
songtexts = SongImport.tidy_text(text).split(u'\f')
|
||||
song = SongImport(manager)
|
||||
for songtext in songtexts:
|
||||
if songtext.strip():
|
||||
song.process_song_text(songtext.strip())
|
||||
if song.check_complete():
|
||||
songs.append(song)
|
||||
song = SongImport(manager)
|
||||
if song.check_complete():
|
||||
songs.append(song)
|
||||
return songs
|
||||
|
||||
@staticmethod
|
||||
def tidy_text(text):
|
||||
def tidy_text(self, text):
|
||||
"""
|
||||
Get rid of some dodgy unicode and formatting characters we're not
|
||||
interested in. Some can be converted to ascii.
|
||||
@ -146,12 +130,12 @@ class SongImport(QtCore.QObject):
|
||||
def process_verse_text(self, text):
|
||||
lines = text.split(u'\n')
|
||||
if text.lower().find(self.copyright_string) >= 0 \
|
||||
or text.find(SongStrings.CopyrightSymbol) >= 0:
|
||||
or text.find(unicode(SongStrings.CopyrightSymbol)) >= 0:
|
||||
copyright_found = False
|
||||
for line in lines:
|
||||
if (copyright_found or
|
||||
line.lower().find(self.copyright_string) >= 0 or
|
||||
line.find(SongStrings.CopyrightSymbol) >= 0):
|
||||
line.find(unicode(SongStrings.CopyrightSymbol)) >= 0):
|
||||
copyright_found = True
|
||||
self.add_copyright(line)
|
||||
else:
|
||||
@ -240,7 +224,7 @@ class SongImport(QtCore.QObject):
|
||||
self.verse_counts[verse_def[0]] = int(verse_def[1:])
|
||||
self.verses.append([verse_def, verse_text.rstrip(), lang])
|
||||
self.verse_order_list_generated.append(verse_def)
|
||||
|
||||
|
||||
def repeat_verse(self):
|
||||
"""
|
||||
Repeat the previous verse in the verse order
|
||||
|
@ -53,8 +53,7 @@ class SongsPlugin(Plugin):
|
||||
"""
|
||||
Create and set up the Songs plugin.
|
||||
"""
|
||||
Plugin.__init__(self, u'Songs', u'1.9.4', plugin_helpers,
|
||||
SongMediaItem, SongsTab)
|
||||
Plugin.__init__(self, u'Songs', plugin_helpers, SongMediaItem, SongsTab)
|
||||
self.weight = -10
|
||||
self.manager = Manager(u'songs', init_schema)
|
||||
self.icon_path = u':/plugins/plugin_songs.png'
|
||||
|
@ -42,7 +42,7 @@ class SongUsagePlugin(Plugin):
|
||||
log.info(u'SongUsage Plugin loaded')
|
||||
|
||||
def __init__(self, plugin_helpers):
|
||||
Plugin.__init__(self, u'SongUsage', u'1.9.4', plugin_helpers)
|
||||
Plugin.__init__(self, u'SongUsage', plugin_helpers)
|
||||
self.weight = -4
|
||||
self.icon = build_icon(u':/plugins/plugin_songusage.png')
|
||||
self.manager = None
|
||||
|
13
resources/debian/Makefile
Normal file
13
resources/debian/Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
build:
|
||||
mkdir -p openlp/i18n
|
||||
for TSFILE in resources/i18n/*.ts; do\
|
||||
lrelease-qt4 $$TSFILE -qm openlp/i18n/`basename $$TSFILE .ts`.qm;\
|
||||
done
|
||||
|
||||
install:
|
||||
|
||||
clean:
|
||||
|
389
resources/debian/debian/changelog
Normal file
389
resources/debian/debian/changelog
Normal file
@ -0,0 +1,389 @@
|
||||
openlp (1.9.4+bzr1355-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 06 Mar 2011 00:10:03 -0500
|
||||
|
||||
openlp (1.9.4+bzr1355-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 06 Mar 2011 00:07:03 -0500
|
||||
|
||||
openlp (1.9.4+bzr1355-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 06 Mar 2011 00:05:27 -0500
|
||||
|
||||
openlp (1.9.4+bzr1355-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 06 Mar 2011 00:03:17 -0500
|
||||
|
||||
openlp (1.9.4+bzr1350-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 05 Mar 2011 00:08:15 -0500
|
||||
|
||||
openlp (1.9.4+bzr1350-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 05 Mar 2011 00:06:40 -0500
|
||||
|
||||
openlp (1.9.4+bzr1350-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 05 Mar 2011 00:05:09 -0500
|
||||
|
||||
openlp (1.9.4+bzr1350-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 05 Mar 2011 00:03:14 -0500
|
||||
|
||||
openlp (1.9.4+bzr1347-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 04 Mar 2011 00:04:49 -0500
|
||||
|
||||
openlp (1.9.4+bzr1347-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 04 Mar 2011 00:04:15 -0500
|
||||
|
||||
openlp (1.9.4+bzr1347-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 04 Mar 2011 00:03:34 -0500
|
||||
|
||||
openlp (1.9.4+bzr1347-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 04 Mar 2011 00:02:43 -0500
|
||||
|
||||
openlp (1.9.4+bzr1344-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 03 Mar 2011 00:03:56 -0500
|
||||
|
||||
openlp (1.9.4+bzr1344-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 03 Mar 2011 00:03:30 -0500
|
||||
|
||||
openlp (1.9.4+bzr1344-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 03 Mar 2011 00:03:05 -0500
|
||||
|
||||
openlp (1.9.4+bzr1344-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 03 Mar 2011 00:02:26 -0500
|
||||
|
||||
openlp (1.9.4+bzr1342-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 01 Mar 2011 00:03:44 -0500
|
||||
|
||||
openlp (1.9.4+bzr1342-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 01 Mar 2011 00:03:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1342-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 01 Mar 2011 00:03:03 -0500
|
||||
|
||||
openlp (1.9.4+bzr1342-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 01 Mar 2011 00:02:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1341-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 27 Feb 2011 00:04:05 -0500
|
||||
|
||||
openlp (1.9.4+bzr1341-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 27 Feb 2011 00:03:48 -0500
|
||||
|
||||
openlp (1.9.4+bzr1341-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 27 Feb 2011 00:03:20 -0500
|
||||
|
||||
openlp (1.9.4+bzr1341-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 27 Feb 2011 00:02:34 -0500
|
||||
|
||||
openlp (1.9.4+bzr1337-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 26 Feb 2011 00:04:02 -0500
|
||||
|
||||
openlp (1.9.4+bzr1337-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 26 Feb 2011 00:03:44 -0500
|
||||
|
||||
openlp (1.9.4+bzr1337-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 26 Feb 2011 00:03:18 -0500
|
||||
|
||||
openlp (1.9.4+bzr1337-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 26 Feb 2011 00:02:32 -0500
|
||||
|
||||
openlp (1.9.4+bzr1332-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 25 Feb 2011 00:04:00 -0500
|
||||
|
||||
openlp (1.9.4+bzr1332-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 25 Feb 2011 00:03:41 -0500
|
||||
|
||||
openlp (1.9.4+bzr1332-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 25 Feb 2011 00:03:16 -0500
|
||||
|
||||
openlp (1.9.4+bzr1332-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Fri, 25 Feb 2011 00:02:36 -0500
|
||||
|
||||
openlp (1.9.4+bzr1328-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 24 Feb 2011 00:03:47 -0500
|
||||
|
||||
openlp (1.9.4+bzr1328-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 24 Feb 2011 00:03:31 -0500
|
||||
|
||||
openlp (1.9.4+bzr1328-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 24 Feb 2011 00:03:07 -0500
|
||||
|
||||
openlp (1.9.4+bzr1328-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Thu, 24 Feb 2011 00:02:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1324-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Wed, 23 Feb 2011 00:03:48 -0500
|
||||
|
||||
openlp (1.9.4+bzr1324-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Wed, 23 Feb 2011 00:03:33 -0500
|
||||
|
||||
openlp (1.9.4+bzr1324-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Wed, 23 Feb 2011 00:03:08 -0500
|
||||
|
||||
openlp (1.9.4+bzr1324-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Wed, 23 Feb 2011 00:02:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1322-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 22 Feb 2011 00:04:06 -0500
|
||||
|
||||
openlp (1.9.4+bzr1322-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 22 Feb 2011 00:03:52 -0500
|
||||
|
||||
openlp (1.9.4+bzr1322-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 22 Feb 2011 00:03:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1322-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Tue, 22 Feb 2011 00:02:42 -0500
|
||||
|
||||
openlp (1.9.4+bzr1320-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Mon, 21 Feb 2011 00:03:59 -0500
|
||||
|
||||
openlp (1.9.4+bzr1320-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Mon, 21 Feb 2011 00:03:45 -0500
|
||||
|
||||
openlp (1.9.4+bzr1320-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Mon, 21 Feb 2011 00:03:21 -0500
|
||||
|
||||
openlp (1.9.4+bzr1320-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Mon, 21 Feb 2011 00:02:41 -0500
|
||||
|
||||
openlp (1.9.4+bzr1316-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 20 Feb 2011 05:32:08 -0500
|
||||
|
||||
openlp (1.9.4+bzr1316-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 20 Feb 2011 05:31:51 -0500
|
||||
|
||||
openlp (1.9.4+bzr1316-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 20 Feb 2011 05:31:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1316-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sun, 20 Feb 2011 05:30:49 -0500
|
||||
|
||||
openlp (1.9.4+bzr1315-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 16:24:12 -0500
|
||||
|
||||
openlp (1.9.4+bzr1315-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 16:23:51 -0500
|
||||
|
||||
openlp (1.9.4+bzr1315-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 16:23:28 -0500
|
||||
|
||||
openlp (1.9.4+bzr1315-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 16:22:49 -0500
|
||||
|
||||
openlp (1.9.4+bzr1314-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 15:35:36 -0500
|
||||
|
||||
openlp (1.9.4+bzr1314-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 15:35:21 -0500
|
||||
|
||||
openlp (1.9.4+bzr1314-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 15:34:53 -0500
|
||||
|
||||
openlp (1.9.4+bzr1314-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 15:34:10 -0500
|
||||
|
||||
openlp (1.9.4+bzr1313-0ubuntu1~natty1) natty; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 13:58:14 -0500
|
||||
|
||||
openlp (1.9.4+bzr1313-0ubuntu1~maverick1) maverick; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 13:57:40 -0500
|
||||
|
||||
openlp (1.9.4+bzr1313-0ubuntu1~lucid1) lucid; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 13:57:11 -0500
|
||||
|
||||
openlp (1.9.4+bzr1313-0ubuntu1~karmic1) karmic; urgency=low
|
||||
|
||||
* Autobuild
|
||||
|
||||
-- <openlp@projecthq.biz> Sat, 19 Feb 2011 13:56:17 -0500
|
||||
|
||||
openlp (0.0.0+bzr664-0ubuntu1) karmic; urgency=low
|
||||
|
||||
* Initial release
|
||||
|
||||
-- Michael Gorven <michael@gorven.za.net> Fri, 06 Nov 2009 09:46:40 +0200
|
1
resources/debian/debian/compat
Normal file
1
resources/debian/debian/compat
Normal file
@ -0,0 +1 @@
|
||||
5
|
19
resources/debian/debian/control
Normal file
19
resources/debian/debian/control
Normal file
@ -0,0 +1,19 @@
|
||||
Source: openlp
|
||||
Section: python
|
||||
Priority: extra
|
||||
Maintainer: OpenLP Developers <openlp-dev@lists.launchpad.net>
|
||||
Build-Depends: cdbs, debhelper (>= 5), python-setuptools, python-support,
|
||||
python, qt4-dev-tools
|
||||
Standards-Version: 3.8.3
|
||||
Homepage: http://openlp.org/
|
||||
|
||||
Package: openlp
|
||||
Architecture: all
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python-qt4,
|
||||
python-qt4-phonon, python-sqlalchemy, python-chardet, python-beautifulsoup,
|
||||
python-lxml, python-sqlite, python-enchant
|
||||
Conflicts: python-openlp
|
||||
Description: Church lyrics projection application
|
||||
OpenLP is free church presentation software, or lyrics projection software,
|
||||
used to display slides of songs, Bible verses, videos, images, and even
|
||||
presentations for church worship using a computer and a data projector.
|
10
resources/debian/debian/copyright
Normal file
10
resources/debian/debian/copyright
Normal file
@ -0,0 +1,10 @@
|
||||
Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat
|
||||
Upstream-Name: OpenLP
|
||||
Upstream-Maintainer: OpenLP Developers <openlp-dev@lists.launchpad.net>
|
||||
Upstream-Source: http://openlp.org/
|
||||
|
||||
Files: *
|
||||
Copyright: (c) 2008-2009 Raoul Snyman
|
||||
License: GPL-2
|
||||
X-Comment: On Debian GNU/Linux systems, the complete text of the
|
||||
GPL-2 License can be found in /usr/share/common-licenses/GPL-2
|
1
resources/debian/debian/docs
Normal file
1
resources/debian/debian/docs
Normal file
@ -0,0 +1 @@
|
||||
documentation
|
1
resources/debian/debian/openlp.install
Normal file
1
resources/debian/debian/openlp.install
Normal file
@ -0,0 +1 @@
|
||||
resources/openlp.desktop /usr/share/applications
|
1
resources/debian/debian/pycompat
Normal file
1
resources/debian/debian/pycompat
Normal file
@ -0,0 +1 @@
|
||||
2
|
1
resources/debian/debian/pyversions
Normal file
1
resources/debian/debian/pyversions
Normal file
@ -0,0 +1 @@
|
||||
2.5-
|
21
resources/debian/debian/rules
Executable file
21
resources/debian/debian/rules
Executable file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
DEB_PYTHON_SYSTEM := pysupport
|
||||
DEB_MAKE_BUILD_TARGET := build
|
||||
DEB_MAKE_INSTALL_TARGET :=
|
||||
DEB_MAKE_CLEAN_TARGET :=
|
||||
|
||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
||||
include /usr/share/cdbs/1/class/python-distutils.mk
|
||||
include /usr/share/cdbs/1/class/makefile.mk
|
||||
|
||||
binary-post-install/openlp::
|
||||
for SIZE in 16x16 32x32 48x48 64x64 128x128 256x256; do \
|
||||
mkdir -p debian/openlp/usr/share/icons/hicolor/$$SIZE/apps && \
|
||||
cp resources/images/openlp-logo-$$SIZE.png debian/openlp/usr/share/icons/hicolor/$$SIZE/apps/openlp.png; \
|
||||
done
|
||||
|
||||
mkdir -p debian/openlp/usr/share/icons/hicolor/scalable/apps && \
|
||||
cp resources/images/openlp-logo.svg debian/openlp/usr/share/icons/hicolor/scalable/apps/openlp.svg
|
||||
|
||||
cd debian/openlp/usr/bin/ && mv openlp.pyw openlp
|
30
resources/gentoo/openlp-1.9.4.ebuild
Normal file
30
resources/gentoo/openlp-1.9.4.ebuild
Normal file
@ -0,0 +1,30 @@
|
||||
# Copyright 1999-2009 Gentoo Foundation
|
||||
# Copyright 2010 Jaak Ristioja
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=2
|
||||
RESTRICT_PYTHON_ABIS="3.*"
|
||||
inherit python
|
||||
|
||||
DESCRIPTION="Free church presentation software"
|
||||
HOMEPAGE="http://openlp.org/"
|
||||
SRC_URI="mirror://sourceforge/${PN}/${PV}/OpenLP-${PV}-src.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sparc x86 x86-fbsd x86-freebsd amd64-linux x86-linux x86-macos x86-solaris"
|
||||
|
||||
RDEPEND=">=dev-lang/python-2.5.0
|
||||
dev-python/beautifulsoup
|
||||
dev-python/chardet
|
||||
dev-python/lxml
|
||||
dev-python/pyenchant
|
||||
dev-python/PyQt4[X,multimedia]
|
||||
dev-python/sqlalchemy"
|
||||
DEPEND="${RDEPEND}"
|
||||
|
||||
PYTHON_DEPEND="2:2.5"
|
||||
PYTHON_MODNAME="openlp"
|
||||
|
||||
S=${WORKDIR}/OpenLP-${PV}-src
|
Loading…
Reference in New Issue
Block a user