openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #04142
[Merge] lp:~raoul-snyman/openlp/documentation into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/documentation into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
Some updates to the documentation:
- Added some more classes to the rST files.
- Fixed up some docstrings to proper rST.
--
https://code.launchpad.net/~raoul-snyman/openlp/documentation/+merge/38085
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/documentation into lp:openlp.
=== modified file 'documentation/source/conf.py'
--- documentation/source/conf.py 2010-09-14 18:18:47 +0000
+++ documentation/source/conf.py 2010-10-10 21:18:41 +0000
@@ -17,7 +17,7 @@
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.append(os.path.abspath(os.path.join('..', '..')))
+sys.path.insert(0, os.path.abspath(os.path.join('..', '..')))
# -- General configuration -----------------------------------------------------
=== modified file 'documentation/source/core/lib.rst'
--- documentation/source/core/lib.rst 2010-09-14 18:18:47 +0000
+++ documentation/source/core/lib.rst 2010-10-10 21:18:41 +0000
@@ -60,12 +60,6 @@
.. autoclass:: openlp.core.lib.settingstab.SettingsTab
:members:
-:mod:`ThemeXML`
----------------
-
-.. autoclass:: openlp.core.lib.themexmlhandler.ThemeXML
- :members:
-
:mod:`OpenLPToolbar`
--------------------
=== modified file 'documentation/source/plugins/songs.rst'
--- documentation/source/plugins/songs.rst 2010-09-14 18:18:47 +0000
+++ documentation/source/plugins/songs.rst 2010-10-10 21:18:41 +0000
@@ -6,8 +6,8 @@
.. automodule:: openlp.plugins.songs
:members:
-:mod:`SongsPlugin` Class
-------------------------
+:class:`SongsPlugin` Class
+--------------------------
.. autoclass:: openlp.plugins.songs.songsplugin.SongsPlugin
:members:
@@ -18,8 +18,8 @@
.. automodule:: openlp.plugins.songs.forms
:members:
-:mod:`AuthorsForm`
-^^^^^^^^^^^^^^^^^^
+:class:`AuthorsForm`
+^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openlp.plugins.songs.forms.authorsdialog.Ui_AuthorsDialog
:members:
@@ -27,8 +27,8 @@
.. autoclass:: openlp.plugins.songs.forms.authorsform.AuthorsForm
:members:
-:mod:`EditSongForm`
-^^^^^^^^^^^^^^^^^^^
+:class:`EditSongForm`
+^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openlp.plugins.songs.forms.editsongdialog.Ui_EditSongDialog
:members:
@@ -36,11 +36,158 @@
.. autoclass:: openlp.plugins.songs.forms.editsongform.EditSongForm
:members:
-:mod:`EditVerseForm`
-^^^^^^^^^^^^^^^^^^^^
+:class:`EditVerseForm`
+^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: openlp.plugins.songs.forms.editversedialog.Ui_EditVerseDialog
:members:
.. autoclass:: openlp.plugins.songs.forms.editverseform.EditVerseForm
:members:
+
+:class:`SongBookForm`
+^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openlp.plugins.songs.forms.songbookdialog.Ui_SongBookDialog
+ :members:
+
+.. autoclass:: openlp.plugins.songs.forms.songbookform.SongBookForm
+ :members:
+
+:class:`SongImportForm`
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openlp.plugins.songs.forms.songimportwizard.Ui_SongImportWizard
+ :members:
+
+.. autoclass:: openlp.plugins.songs.forms.songimportform.ImportWizardForm
+ :members:
+
+:class:`SongMaintenanceForm`
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openlp.plugins.songs.forms.songmaintenancedialog.Ui_SongMaintenanceDialog
+ :members:
+
+.. autoclass:: openlp.plugins.songs.forms.songmaintenanceform.SongMaintenanceForm
+ :members:
+
+:class:`TopicsForm`
+^^^^^^^^^^^^^^^^^^^
+
+.. autoclass:: openlp.plugins.songs.forms.topicsdialog.Ui_TopicsDialog
+ :members:
+
+.. autoclass:: openlp.plugins.songs.forms.topicsform.TopicsForm
+ :members:
+
+:mod:`lib` Submodule
+--------------------
+
+.. automodule:: openlp.plugins.songs.lib
+ :members:
+
+:mod:`cclifileimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.cclifileimport
+ :members:
+
+.. autoclass:: openlp.plugins.songs.lib.cclifileimport.CCLIFileImportError
+ :members:
+
+:mod:`db` Submodule
+^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.db
+ :members:
+
+:mod:`ewimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.ewimport
+ :members:
+
+.. autoclass:: openlp.plugins.songs.lib.ewimport.FieldDescEntry
+ :members:
+
+:mod:`importer` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.importer
+ :members:
+
+:mod:`mediaitem` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.mediaitem
+ :members:
+
+.. autoclass:: openlp.plugins.songs.lib.mediaitem.SongListView
+ :members:
+
+:mod:`olp1import` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.olp1import
+ :members:
+
+:mod:`olpimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.olpimport
+ :members:
+
+:mod:`oooimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.oooimport
+ :members:
+
+:mod:`opensongimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.opensongimport
+ :members:
+
+:mod:`sofimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.sofimport
+ :members:
+
+:mod:`songbeamerimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.songbeamerimport
+ :members:
+
+:mod:`songimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.songimport
+ :members:
+
+:mod:`songstab` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.songstab
+ :members:
+
+:mod:`wowimport` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.wowimport
+ :members:
+
+:mod:`songxml` Submodule
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.songxml
+ :members:
+
+:mod:`xml` Submodule
+^^^^^^^^^^^^^^^^^^^^
+
+.. automodule:: openlp.plugins.songs.lib.xml
+ :members:
=== modified file 'openlp/plugins/songs/lib/cclifileimport.py'
--- openlp/plugins/songs/lib/cclifileimport.py 2010-09-14 16:44:21 +0000
+++ openlp/plugins/songs/lib/cclifileimport.py 2010-10-10 21:18:41 +0000
@@ -38,9 +38,9 @@
class CCLIFileImport(SongImport):
"""
- The :class:`CCLIFileImport` class provides OpenLP with the
- ability to import CCLI SongSelect song files in both .txt and
- .usr formats. See http://www.ccli.com
+ The :class:`CCLIFileImport` class provides OpenLP with the ability to
+ import CCLI SongSelect song files in both .txt and .usr formats.
+ See http://www.ccli.com/ for more details.
"""
def __init__(self, manager, **kwargs):
@@ -49,6 +49,7 @@
``manager``
The song manager for the running OpenLP installation.
+
``filenames``
The files to be imported.
"""
@@ -97,7 +98,7 @@
def do_import_usr_file(self, textList):
"""
- The :method:`do_import_usr_file` method provides OpenLP
+ The :func:`do_import_usr_file` method provides OpenLP
with the ability to import CCLI SongSelect songs in
*USR* file format
@@ -105,6 +106,7 @@
An array of strings containing the usr file content.
**SongSelect .usr file format**
+
``[File]``
USR file format first line
``Type=``
@@ -140,6 +142,7 @@
Contains the songs various lyrics in order as shown by the
*Fields* description
e.g. *Words=Above all powers....* [/n = CR, /n/t = CRLF]
+
"""
log.debug(u'USR file text: %s', textList)
lyrics = []
@@ -191,48 +194,32 @@
def do_import_txt_file(self, textList):
"""
- The :method:`do_import_txt_file` method provides OpenLP
+ The :func:`do_import_txt_file` method provides OpenLP
with the ability to import CCLI SongSelect songs in
*TXT* file format
``textList``
An array of strings containing the txt file content.
- **SongSelect .txt file format**
-
- ``Song Title``
- Contains the song title
-
- <Empty line>
-
- ``Title of following verse/chorus and number``
- e.g. Verse 1, Chorus 1
-
- ``Verse/Chorus lyrics``
-
- <Empty line>
-
- <Empty line>
-
- ``Title of next verse/chorus (repeats)``
-
- ``Verse/Chorus lyrics``
-
- <Empty line>
-
- <Empty line>
-
- ``Song CCLI Number``
- e.g. CCLI Number (e.g.CCLI-Liednummer: 2672885)
- ``Song Copyright``
- e.g. © 1999 Integrity's Hosanna! Music | LenSongs Publishing
- ``Song Authors``
- e.g. Lenny LeBlanc | Paul Baloche
- ``Licencing info``
- e.g. For use solely with the SongSelect Terms of Use.
+ SongSelect .txt file format::
+
+ Song Title # Contains the song title
+ <Empty line>
+ Verse type and number # e.g. Verse 1, Chorus 1
+ Verse lyrics
+ <Empty line>
+ <Empty line>
+ Verse type and number (repeats)
+ Verse lyrics
+ <Empty line>
+ <Empty line>
+ Song CCLI number # e.g. CCLI Number (e.g.CCLI-Liednummer: 2672885)
+ Song copyright # e.g. © 1999 Integrity's Hosanna! Music | LenSongs Publishing
+ Song authors # e.g. Lenny LeBlanc | Paul Baloche
+ Licencing info # e.g. For use solely with the SongSelect Terms of Use.
All rights Reserved. www.ccli.com
- ``CCLI Licence number of user``
- e.g. CCL-Liedlizenznummer: 14 / CCLI License No. 14
+ CCLI Licence number of user # e.g. CCL-Liedlizenznummer: 14 / CCLI License No. 14
+
"""
log.debug(u'TXT file text: %s', textList)
self.set_defaults()
=== modified file 'openlp/plugins/songs/lib/songxml.py'
--- openlp/plugins/songs/lib/songxml.py 2010-09-14 18:18:47 +0000
+++ openlp/plugins/songs/lib/songxml.py 2010-10-10 21:18:41 +0000
@@ -282,11 +282,9 @@
def get_author_list(self, asOneString = True):
"""Return the list of authors as a string
- asOneString
- True -- string:
- 'John Newton, A Parker'
- False -- list of strings
- ['John Newton', u'A Parker']
+ ``asOneString``
+ If ``True``, returns 'John Newton, A Parker'. If ``False``, returns
+ [u'John Newton', u'A Parker']
"""
if asOneString:
res = self._assure_string(self.author_list)
@@ -297,7 +295,8 @@
def set_author_list(self, author_list):
"""Set the author_list
- author_list -- a string or list of strings
+ ``author_list``
+ a string or list of strings
"""
if author_list is None:
self.author_list = None
@@ -307,11 +306,9 @@
def get_category_array(self, asOneString = True):
"""Return the list of categories as a string
- asOneString
- True -- string:
- 'Hymn, Gospel'
- False -- list of strings
- ['Hymn', u'Gospel']
+ ``asOneString``
+ If ``True``, returns 'Hymn, Gospel'. If ``False``, returns
+ [u'Hymn', u'Gospel']
"""
if asOneString:
res = self._assure_string(self.category_array)
@@ -381,6 +378,7 @@
properties
slideNumber -- 1 .. numberOfSlides
+
Returns a list as:
[theme_name (string),
title (string),
=== modified file 'openlp/plugins/songs/lib/wowimport.py'
--- openlp/plugins/songs/lib/wowimport.py 2010-10-08 06:16:01 +0000
+++ openlp/plugins/songs/lib/wowimport.py 2010-10-10 21:18:41 +0000
@@ -24,7 +24,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`wowimport` module provides the functionality for importing Words of
+The :mod:`wowimport` module provides the functionality for importing Words of
Worship songs into the OpenLP database.
"""
import os
@@ -38,19 +38,18 @@
class WowImport(SongImport):
"""
- The :class:`WowImport` class provides the ability to import song files from
+ The :class:`WowImport` class provides the ability to import song files from
Words of Worship.
- Words Of Worship Song File Format
- `````````````````````````````````
-
+ **Words Of Worship Song File Format:**
+
The Words Of Worship song file format is as follows:
* The song title is the file name minus the extension.
- * The song has a header, a number of blocks, followed by footer containing
- the author and the copyright.
+ * The song has a header, a number of blocks, followed by footer containing
+ the author and the copyright.
* A block can be a verse, chorus or bridge.
-
+
File Header:
Bytes are counted from one, i.e. the first byte is byte 1. These bytes,
up to the 56 byte, can change but no real meaning has been found. The
@@ -65,29 +64,29 @@
Each block ends with 4 bytes, the first of which defines what type of
block it is, and the rest which are null bytes:
- * ``NUL`` (\x00) - Verse
- * ``SOH`` (\x01) - Chorus
- * ``STX`` (\x02) - Bridge
+ * ``NUL`` (0x00) - Verse
+ * ``SOH`` (0x01) - Chorus
+ * ``STX`` (0x02) - Bridge
- Blocks are seperated by two bytes. The first byte is ``SOH`` (\x01),
- and the second byte is ``â¬`` (\x80).
+ Blocks are seperated by two bytes. The first byte is 0x01, and the
+ second byte is 0x80.
Lines:
Each line starts with a byte which specifies how long that line is,
the line text, and ends with a null byte.
-
+
Footer:
- The footer follows on after the last block, the first byte specifies
- the length of the author text, followed by the author text, if
- this byte is null, then there is no author text. The byte after the
- author text specifies the length of the copyright text, followed
- by the copyright text.
-
+ The footer follows on after the last block, the first byte specifies
+ the length of the author text, followed by the author text, if
+ this byte is null, then there is no author text. The byte after the
+ author text specifies the length of the copyright text, followed
+ by the copyright text.
+
The file is ended with four null bytes.
-
+
Valid extensions for a Words of Worship song file are:
-
+
* .wsg
* .wow-song
"""
@@ -111,7 +110,7 @@
"""
Recieve a single file, or a list of files to import.
"""
-
+
if isinstance(self.import_source, list):
self.import_wizard.importProgressBar.setMaximum(
len(self.import_source))
@@ -127,14 +126,14 @@
if self.songData.read(19) != u'WoW File\nSong Words':
continue
# Seek to byte which stores number of blocks in the song
- self.songData.seek(56)
+ self.songData.seek(56)
self.no_of_blocks = ord(self.songData.read(1))
# Seek to the beging of the first block
- self.songData.seek(82)
+ self.songData.seek(82)
for block in range(self.no_of_blocks):
self.lines_to_read = ord(self.songData.read(1))
# Skip 3 nulls to the beginnig of the 1st line
- self.songData.seek(3, os.SEEK_CUR)
+ self.songData.seek(3, os.SEEK_CUR)
self.block_text = u''
while self.lines_to_read:
self.length_of_line = ord(self.songData.read(1))
@@ -148,7 +147,7 @@
self.block_type = BLOCK_TYPES[ord(self.songData.read(1))]
# Skip 3 nulls at the end of the block
self.songData.seek(3, os.SEEK_CUR)
- # Blocks are seperated by 2 bytes, skip them, but not if
+ # Blocks are seperated by 2 bytes, skip them, but not if
# this is the last block!
if (block + 1) < self.no_of_blocks:
self.songData.seek(2, os.SEEK_CUR)
@@ -170,4 +169,4 @@
self.import_wizard.incrementProgressBar(
"Importing %s" % (self.file_name))
return True
-
+
Follow ups