openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #24105
[Merge] lp:~sam92/openlp/bug-1358418 into lp:openlp
Samuel Mehrbrodt has proposed merging lp:~sam92/openlp/bug-1358418 into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
Related bugs:
Bug #1358418 in OpenLP: "Can't import ProPresenter file"
https://bugs.launchpad.net/openlp/+bug/1358418
For more details, see:
https://code.launchpad.net/~sam92/openlp/bug-1358418/+merge/231305
Fix ProPresenter Import
* Use the filename as title since not all songs have the property "CCLISongTitle"
* Ignore slides without text (and don't crash)
* Make it clear that only v4 files are supported
lp:~sam92/openlp/bug-1358418 (revision 2412)
[SUCCESS] http://ci.openlp.org/job/Branch-01-Pull/574/
[SUCCESS] http://ci.openlp.org/job/Branch-02-Functional-Tests/525/
[SUCCESS] http://ci.openlp.org/job/Branch-03-Interface-Tests/469/
[FAILURE] http://ci.openlp.org/job/Branch-04a-Windows_Functional_Tests/429/
(In the windows test is the known failure)
--
https://code.launchpad.net/~sam92/openlp/bug-1358418/+merge/231305
Your team OpenLP Core is requested to review the proposed merge of lp:~sam92/openlp/bug-1358418 into lp:openlp.
=== modified file 'openlp/plugins/songs/lib/importer.py'
--- openlp/plugins/songs/lib/importer.py 2014-07-14 16:50:50 +0000
+++ openlp/plugins/songs/lib/importer.py 2014-08-19 05:58:47 +0000
@@ -290,9 +290,9 @@
},
ProPresenter: {
'class': ProPresenterImport,
- 'name': 'ProPresenter',
+ 'name': 'ProPresenter 4',
'prefix': 'proPresenter',
- 'filter': '%s (*.pro4)' % translate('SongsPlugin.ImportWizardForm', 'ProPresenter Song Files')
+ 'filter': '%s (*.pro4)' % translate('SongsPlugin.ImportWizardForm', 'ProPresenter 4 Song Files')
},
SongBeamer: {
'class': SongBeamerImport,
=== modified file 'openlp/plugins/songs/lib/importers/__init__.py'
--- openlp/plugins/songs/lib/importers/__init__.py 2014-07-03 17:57:13 +0000
+++ openlp/plugins/songs/lib/importers/__init__.py 2014-08-19 05:58:47 +0000
@@ -27,5 +27,5 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`~openlp.plugins.songs.lib.import` module contains importers for the Songs plugin.
+The :mod:`~openlp.plugins.songs.lib.importers` module contains importers for the Songs plugin.
"""
=== modified file 'openlp/plugins/songs/lib/importers/propresenter.py'
--- openlp/plugins/songs/lib/importers/propresenter.py 2014-07-04 09:35:10 +0000
+++ openlp/plugins/songs/lib/importers/propresenter.py 2014-08-19 05:58:47 +0000
@@ -33,17 +33,20 @@
import os
import base64
+import logging
from lxml import objectify
from openlp.core.ui.wizard import WizardStrings
from openlp.plugins.songs.lib import strip_rtf
from .songimport import SongImport
+log = logging.getLogger(__name__)
+
class ProPresenterImport(SongImport):
"""
The :class:`ProPresenterImport` class provides OpenLP with the
- ability to import ProPresenter song files.
+ ability to import ProPresenter 4 song files.
"""
def do_import(self):
self.import_wizard.progress_bar.setMaximum(len(self.import_source))
@@ -52,11 +55,11 @@
return
self.import_wizard.increment_progress_bar(WizardStrings.ImportingType % os.path.basename(file_path))
root = objectify.parse(open(file_path, 'rb')).getroot()
- self.process_song(root)
+ self.process_song(root, file_path)
- def process_song(self, root):
+ def process_song(self, root, filename):
self.set_defaults()
- self.title = root.get('CCLISongTitle')
+ self.title = os.path.basename(filename).rstrip('.pro4')
self.copyright = root.get('CCLICopyrightInfo')
self.comments = root.get('notes')
self.ccli_number = root.get('CCLILicenseNumber')
@@ -67,6 +70,9 @@
count = 0
for slide in root.slides.RVDisplaySlide:
count += 1
+ if not hasattr(slide.displayElements, 'RVTextElement'):
+ log.debug('No text found, may be an image slide')
+ continue
RTFData = slide.displayElements.RVTextElement.get('RTFData')
rtf = base64.standard_b64decode(RTFData)
words, encoding = strip_rtf(rtf.decode())
=== modified file 'scripts/jenkins_script.py'
--- scripts/jenkins_script.py 2014-07-17 21:55:54 +0000
+++ scripts/jenkins_script.py 2014-08-19 05:58:47 +0000
@@ -67,7 +67,8 @@
Branch_PEP = 'Branch-05a-Code_Analysis'
Branch_Coverage = 'Branch-05b-Test_Coverage'
- Jobs = [Branch_Pull, Branch_Functional, Branch_Interface, Branch_Windows_Functional, Branch_Windows_Interface, Branch_PEP, Branch_Coverage]
+ Jobs = [Branch_Pull, Branch_Functional, Branch_Interface, Branch_Windows_Functional,
+ Branch_Windows_Interface, Branch_PEP, Branch_Coverage]
class Colour(object):
=== modified file 'tests/functional/openlp_plugins/songs/test_propresenterimport.py'
--- tests/functional/openlp_plugins/songs/test_propresenterimport.py 2014-07-07 16:21:45 +0000
+++ tests/functional/openlp_plugins/songs/test_propresenterimport.py 2014-08-19 05:58:47 +0000
@@ -52,3 +52,5 @@
"""
self.file_import([os.path.join(TEST_PATH, 'Amazing Grace.pro4')],
self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json')))
+ self.file_import([os.path.join(TEST_PATH, 'Vaste Grond.pro4')],
+ self.load_external_result_data(os.path.join(TEST_PATH, 'Vaste Grond.json')))
=== added file 'tests/resources/propresentersongs/Vaste Grond.json'
--- tests/resources/propresentersongs/Vaste Grond.json 1970-01-01 00:00:00 +0000
+++ tests/resources/propresentersongs/Vaste Grond.json 2014-08-19 05:58:47 +0000
@@ -0,0 +1,34 @@
+{
+ "title": "Vaste Grond",
+ "verse_order_list": [],
+ "verses": [
+ [
+ "God voor U is niets onmogelijk\nHoe ongelofelijk\nU heeft alles in de hand",
+ "v1"
+ ],
+ [
+ "U bent God en trekt Uw eigen plan\nU bent voor niemand bang\nVoor niets en niemand bang",
+ "v2"
+ ],
+ [
+ "U houd me vast en geeft me moed\nOm door te gaan als ik niet durf\nIk wil van U zijn",
+ "v3"
+ ],
+ [
+ "U geeft me kracht, en bent de vaste grond\nwaarop ik stevig sta\nik wil van U zijn, voor altijd van U zijn\nO God.",
+ "v4"
+ ],
+ [
+ "Grote God, U bent uitzonderlijk\nen ondoorgrondelijk\nU biedt Uw liefde aan",
+ "v5"
+ ],
+ [
+ "Wie ben ik, dat U mij ziet staan\nen met mij om wilt gaan?\nIk kan U niet weerstaan",
+ "v6"
+ ],
+ [
+ "Onweerstaanbaar,\nonweerstaanbare God",
+ "v7"
+ ]
+ ]
+}
=== added file 'tests/resources/propresentersongs/Vaste Grond.pro4'
--- tests/resources/propresentersongs/Vaste Grond.pro4 1970-01-01 00:00:00 +0000
+++ tests/resources/propresentersongs/Vaste Grond.pro4 2014-08-19 05:58:47 +0000
@@ -0,0 +1,1 @@
+<RVPresentationDocument height="870" width="1152" versionNumber="400" docType="0" creatorCode="1349676880" lastDateUsed="2011-01-09T09:34:05" usedCount="0" category="Presentation" resourcesDirectory="" backgroundColor="0 0 0 1" drawingBackgroundColor="0" notes="" artist="" author="" album="" CCLIDisplay="0" CCLIArtistCredits="" CCLISongTitle="" CCLIPublisher="" CCLICopyrightInfo="" CCLILicenseNumber=""><slides containerClass="NSMutableArray"><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="0" UUID="01ED5EA2-1674-4B9D-A277-9E114BACA802" drawingBackgroundColor="0" serialization-array-index="0"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgR29kIHZvb3IgVSBpcyBuaWV0cyBvbm1vZ2VsaWprXApIb2Ugb25nZWxvZmVsaWprXApVIGhlZWZ0IGFsbGVzIGluIGRlIGhhbmR9" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="1" UUID="95517344-C447-4FDA-AEDB-48334E59CE47" drawingBackgroundColor="0" serialization-array-index="1"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgVSBiZW50IEdvZCBlbiB0cmVrdCBVdyBlaWdlbiBwbGFuXApVIGJlbnQgdm9vciBuaWVtYW5kIGJhbmdcClZvb3IgbmlldHMgZW4gbmllbWFuZCBiYW5nfQ==" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="2" UUID="931010EB-1B70-4F57-9D19-D2957D96D853" drawingBackgroundColor="0" serialization-array-index="2"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgVSBob3VkIG1lIHZhc3QgZW4gZ2VlZnQgbWUgbW9lZFwKT20gZG9vciB0ZSBnYWFuIGFscyBpayBuaWV0IGR1cmZcCklrIHdpbCB2YW4gVSB6aWpufQ==" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="3" UUID="3D241B4F-026E-4EC9-9A7F-A5DAC287BF11" drawingBackgroundColor="0" serialization-array-index="3"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgVSBnZWVmdCBtZSBrcmFjaHQsIGVuIGJlbnQgZGUgdmFzdGUgZ3JvbmRcCndhYXJvcCBpayBzdGV2aWcgc3RhXAppayB3aWwgdmFuIFUgemlqbiwgdm9vciBhbHRpamQgdmFuIFUgemlqblwKTyBHb2QufQ==" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="4" UUID="C257A8B6-1685-42BD-91B1-36EFF4D9572A" drawingBackgroundColor="0" serialization-array-index="4"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgR3JvdGUgR29kLCBVIGJlbnQgdWl0em9uZGVybGlqa1wKZW4gb25kb29yZ3JvbmRlbGlqa1wKVSBiaWVkdCBVdyBsaWVmZGUgYWFufQ==" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="5" UUID="F4B3AF43-BC5B-4A0E-A365-C4A745E97C33" drawingBackgroundColor="0" serialization-array-index="5"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgV2llIGJlbiBpaywgZGF0IFUgbWlqIHppZXQgc3RhYW5cCmVuIG1ldCBtaWogb20gd2lsdCBnYWFuP1wKSWsga2FuIFUgbmlldCB3ZWVyc3RhYW59" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide><RVDisplaySlide backgroundColor="0 0 0 1" enabled="1" highlightColor="0 0 0 0" hotKey="" label="" notes="" slideType="1" sort_index="6" UUID="6BEEF0BC-E0C3-43CF-A33D-C5EAC5534244" drawingBackgroundColor="0" serialization-array-index="6"><cues containerClass="NSMutableArray"></cues><displayElements containerClass="NSMutableArray"><RVTextElement displayDelay="0" displayName="" locked="0" persistent="0" typeID="0" fromTemplate="0" bezelRadius="0" drawingFill="0" drawingShadow="0" drawingStroke="0" fillColor="1 1 1 1" rotation="0" source="" adjustsHeightToFit="0" verticalAlignment="1" RTFData="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGY5NDlcY29jb2FzdWJydGY1NDAKe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30Ke1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQpccGFyZFx0eDU2MFx0eDExMjBcdHgxNjgwXHR4MjI0MFx0eDI4MDBcdHgzMzYwXHR4MzkyMFx0eDQ0ODBcdHg1MDQwXHR4NTYwMFx0eDYxNjBcdHg2NzIwXHFjXHBhcmRpcm5hdHVyYWwKClxmMFxmczk2IFxjZjEgT253ZWVyc3RhYW5iYWFyLFwKb253ZWVyc3RhYW5iYXJlIEdvZH0=" serialization-array-index="0"><_-RVRect3D-_position x="32.37209" y="29" z="0" width="1074.349" height="818.7442"></_-RVRect3D-_position><_-D-_serializedShadow containerClass="NSMutableDictionary"><NSCalibratedRGBColor serialization-native-value="0 0 0 0.3333333432674408" serialization-dictionary-key="shadowColor"></NSCalibratedRGBColor><NSCFString serialization-native-value="{5, -5}" serialization-dictionary-key="shadowOffset"></NSCFString><NSCFNumber serialization-native-value="0" serialization-dictionary-key="shadowBlurRadius"></NSCFNumber></_-D-_serializedShadow><stroke containerClass="NSMutableDictionary"><NSCachedRGBColor serialization-native-value="0 0 0 1" serialization-dictionary-key="RVShapeElementStrokeColorKey"></NSCachedRGBColor><NSCFNumber serialization-native-value="1" serialization-dictionary-key="RVShapeElementStrokeWidthKey"></NSCFNumber></stroke></RVTextElement></displayElements></RVDisplaySlide></slides><timeline timeOffSet="0" selectedMediaTrackIndex="0" unitOfMeasure="60" duration="0" loop="0"><timeCues containerClass="NSMutableArray"></timeCues><mediaTracks containerClass="NSMutableArray"></mediaTracks></timeline><bibleReference containerClass="NSMutableDictionary"></bibleReference></RVPresentationDocument>
\ No newline at end of file
Follow ups