From 8124f0e8fe1f12d2be5b5df82b1ba214696a1e99 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 11 Mar 2010 14:02:43 +0000 Subject: [PATCH 001/150] Import and weird character cleanups --- openlp.pyw | 1 - openlp/core/ui/mainwindow.py | 1 - openlp/core/utils/__init__.py | 2 +- .../hook-openlp.plugins.presentations.presentationplugin.py | 2 +- resources/pyinstaller/hook-openlp.py | 2 +- 5 files changed, 3 insertions(+), 5 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index c4a5fb428..1de9c8417 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -34,7 +34,6 @@ from PyQt4 import QtCore, QtGui log = logging.getLogger() -import openlp from openlp.core.lib import Receiver, str_to_bool from openlp.core.resources import qInitResources from openlp.core.ui import MainWindow, SplashScreen, ScreenList diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 41b6d245f..808c4ad4c 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -23,7 +23,6 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -import os import logging import time diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 4083300a6..042b8d88e 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -100,4 +100,4 @@ def check_latest_version(config, current_version): from registry import Registry from confighelper import ConfigHelper -__all__ = [u'Registry', u'ConfigHelper', u'AppLocations', u'check_latest_version'] +__all__ = [u'Registry', u'ConfigHelper', u'AppLocation', u'check_latest_version'] diff --git a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py index 8b7d6b8a2..0ede06f90 100644 --- a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py +++ b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py @@ -1,3 +1,3 @@ -hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller', +hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller', 'openlp.plugins.presentations.lib.powerpointcontroller', 'openlp.plugins.presentations.lib.pptviewcontroller'] \ No newline at end of file diff --git a/resources/pyinstaller/hook-openlp.py b/resources/pyinstaller/hook-openlp.py index bd97e4aec..b77ec8b62 100644 --- a/resources/pyinstaller/hook-openlp.py +++ b/resources/pyinstaller/hook-openlp.py @@ -1,4 +1,4 @@ -hiddenimports = ['plugins.songs.songsplugin', +hiddenimports = ['plugins.songs.songsplugin', 'plugins.bibles.bibleplugin', 'plugins.presentations.presentationplugin', 'plugins.media.mediaplugin', From c7c1a9c06ad8dfeb9cfeb3ccca254ba1e9736ed6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 12 Mar 2010 17:38:56 +0200 Subject: [PATCH 002/150] Added icons for: - Blank Screen - Show Desktop - Show Theme Background --- openlp/core/ui/slidecontroller.py | 2 +- resources/images/openlp-2.qrc | 37 ++++++++++++++++------------- resources/images/slide_blank.png | Bin 0 -> 717 bytes resources/images/slide_desktop.png | Bin 0 -> 696 bytes resources/images/slide_theme.png | Bin 0 -> 815 bytes 5 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 resources/images/slide_blank.png create mode 100644 resources/images/slide_desktop.png create mode 100644 resources/images/slide_theme.png diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index e26df7a18..71b12d95d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -170,7 +170,7 @@ class SlideController(QtGui.QWidget): if self.isLive: self.Toolbar.addToolbarSeparator(u'Close Separator') self.blankButton = self.Toolbar.addToolbarButton( - u'Blank Screen', u':/slides/slide_close.png', + u'Blank Screen', u':/slides/slide_blank.png', self.trUtf8('Blank Screen'), self.onBlankDisplay, True) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_slide_blank'), self.blankScreen) diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 28af4c31a..3f2a6e843 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -1,5 +1,5 @@ - + topic_edit.png author_add.png author_delete.png @@ -21,17 +21,20 @@ song_topic_edit.png song_book_edit.png - + slide_close.png slide_first.png slide_last.png slide_next.png + slide_blank.png + slide_desktop.png + slide_theme.png slide_previous.png media_playback_start.png media_playback_stop.png media_playback_pause.png - + openlp-logo-16x16.png openlp-logo-32x32.png openlp-logo-48x48.png @@ -39,43 +42,43 @@ openlp-logo-128x128.png openlp-logo-256x256.png - + openlp-about-logo.png openlp-splash-screen.png - + import_selectall.png import_move_to_list.png import_remove.png import_load.png - + export_selectall.png export_remove.png export_load.png export_move_to_list.png - + custom_new.png custom_edit.png custom_delete.png - + wizard_importbible.bmp - + presentation_delete.png presentation_load.png - + video_delete.png video_load.png - + image_delete.png image_load.png - + service_edit.png service_notes.png service_item_notes.png @@ -88,7 +91,7 @@ service_open.png service_save.png - + system_close.png system_about.png system_help_contents.png @@ -102,7 +105,7 @@ system_exit.png system_settings.png - + media_custom.png media_presentation.png media_image.png @@ -113,16 +116,16 @@ media_stop.png image_clapperboard.png - + messagebox_critical.png messagebox_info.png messagebox_warning.png - + tools_add.png tools_alert.png - + theme_delete.png theme_new.png theme_edit.png diff --git a/resources/images/slide_blank.png b/resources/images/slide_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..a878468c6b63629e12c7414cc82db6414f62b65b GIT binary patch literal 717 zcmV;;0y6!HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igM+ z4;~9T$nom{00K=(L_t(I%YBl|P82~DhQF>$PtPEknE(=&7>CHtnBdASZ$Q{0dlPvB zgHM2o>`8D%*pv7KM2xK1O)$iTGtx{qGE85prrHJeaMhDk>MZJf|DRL8x3{;qGBGi+ zQLR=RLI^z18=bO>q8Q!IIf|knP1E@F^mNVJ-`|fuZErVv7Xy6XM^`jj`Di5(LIB{L z!`dO%T5@B^^PJ|R8mp_XV^yow8l6sur>zzb)fGfSMPseST1B_}o8uonYPDKJl?qW5 zjTD6tqh88uCs~%!>2z?;;fw)56-9xymR_%SYq;Ep5CZ2MaU7E*2}&un)(q_pKtVwm zhPRZ35J)Mxyu2iiV*s?)1VMn5675&60YMOOeEj_$Ac`WgEE}o%zK<~mr4-GH3Pn*| z0eZb2-EJ2tB>=`4&d<+LN+G4h_kAjr3R#wsrYS)X5L9bd4gjnj5{BWu9~cgYBVeBA zD5XX&>WwCz=UoAe$@yOyV=%@brNkIRnx;(8{9R&_B=PL*lSVu+C?(KRqm@J{i4+nK z59=(}4l%z?8_j03aWlGQWXpx#jd#C)5g#0UUGx6oT5N7^ zzNy#iAM!ls^6y?Als~aa6h>7lH00000NkvXXu0mjflOHv( literal 0 HcmV?d00001 diff --git a/resources/images/slide_desktop.png b/resources/images/slide_desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..e5655f5236ebc2750fb6ffaf3be21b8183e332c6 GIT binary patch literal 696 zcmV;p0!RIcP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00VXa00VXbebs`@00007bV*G`2iOQ1 z2_gW8yBe7Q00KBkL_t(|+LcpHiyA=?t)3abRt0rTApal-@unwXbBMXe+ujy(O@u%$ zf|osKAz<q2*ARjr1W)2s0uuJ%?(FD}x_*q)dDSzc$wCfkEW2yE-mBNu)uP+& zo|&fkF_lW0grR8~2_ck)LrNLW$~@1b^?Gehr_(p0-|ydaIvvxpEJ`F26pO_u8jVsU z5+PmJ8K(fQ>(Xwwqs?Z+V9I8*RIAl2BbiK^i9tQqJ&}cNCR;$(bkbR0Hr04TFOXj2S+gRXjd>;;n7xjAmM~E^0BtXVz>2&%< zE|-h)6=gCRzHbH-{1hJCb13?P&;x;Zs0iT4l}hEbR4P3wm&+Ms7lXlI*6a1IzG2K} evuni35bzuGg&>iM2rO~{0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00VXa00VXbebs`@00007bV*G`2igM+ z4<92IW@u0V00OT`L_t(I%axK%Ya~?^hM!v>UDaLP+Fex{qhTPp5Me@g$tpN5j5{~M z&HM)q2yOz|I9mlF&L4>XATZg91PKI(EF=WPk%kzIOuAD^ch^VXs=8IzMd-u3!8z$?H@VVFRbK#{>TheSeB!lc3&jHw=009XK3 zRUwQqxC%ZQLOX@C3H)#gWS}MFIZ%VD5W1kM=5GNrQ;P5vmraehm@@b99YjZhz5-&f zCM3;->pTIWkZuF5-?|65uFLnsGrYth`DKEkU!sdC=_uynCMAkf(j>-E1q}m|e1g9u z?g2M9H~e_K+P4YtEW*J)RTMx>zD5W?*KmT@n zd;81VAiS>E09#vI@2{_~e{C4XW7l;%ZnujN0^7FHTDPMp`ba7D9C-1s9{|Gl{ReAnYmZk}R^DD+UF|xK tBaV-cM~8=pe;phg9E?VzA)sdqe*@Z{U&e+k@d5w<002ovPDHLkV1g~WY25$- literal 0 HcmV?d00001 From 4c9bd6d34b9c9affd352fb28e6c8e6ea5b553f6d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 12 Mar 2010 16:55:01 +0000 Subject: [PATCH 003/150] Fix text --- openlp/plugins/custom/customplugin.py | 2 +- openlp/plugins/songusage/forms/songusagedeleteform.py | 4 ++-- openlp/plugins/songusage/forms/songusagedetailform.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index ac5384390..29905a760 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -69,7 +69,7 @@ class CustomPlugin(Plugin): def about(self): about_text = self.trUtf8('Custom Plugin
This plugin ' 'allows slides to be displayed on the screen in the same way ' - 'songs are. This plugin provides greater freedom over the ' + 'songs are. This plugin provides greater freedom over the ' 'songs plugin.
') return about_text diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index 56eb1954a..9dda0cafc 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -41,8 +41,8 @@ class SongUsageDeleteForm(QtGui.QDialog, Ui_SongUsageDeleteDialog): def accept(self): ret = QtGui.QMessageBox.question(self, - self.trUtf8('Delete Selected Audit Events?'), - self.trUtf8('Are you sure you want to delete selected Audit Data?'), + self.trUtf8('Delete Selected Song Usage Events?'), + self.trUtf8('Are you sure you want to delete selected Song Usage data?'), QtGui.QMessageBox.StandardButtons( QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel), diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index be548ac35..28690d85f 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -81,7 +81,7 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): instance.copyright, instance.ccl_number , instance.authors) file.write(record) except: - log.exception(u'Failed to write out audit records') + log.exception(u'Failed to write out song usage records') finally: if file: file.close() From ccfa7501ce60bc2e8aa8f1d4604d9bb8bf9f7d98 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 12 Mar 2010 20:31:13 +0200 Subject: [PATCH 004/150] - Fixed up Mac OS X detection - Removed an unnecessary import - Fixed an export --- openlp.pyw | 1 - openlp/core/utils/__init__.py | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index c4a5fb428..1de9c8417 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -34,7 +34,6 @@ from PyQt4 import QtCore, QtGui log = logging.getLogger() -import openlp from openlp.core.lib import Receiver, str_to_bool from openlp.core.resources import qInitResources from openlp.core.ui import MainWindow, SplashScreen, ScreenList diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 4083300a6..5d97dd8f2 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -45,9 +45,9 @@ class AppLocation(object): if dir_type == AppLocation.AppDir: return os.path.abspath(os.path.split(sys.argv[0])[0]) elif dir_type == AppLocation.ConfigDir: - if os.name == u'nt': + if sys.platform == u'win32': path = os.path.join(os.getenv(u'APPDATA'), u'openlp') - elif os.name == u'mac': + elif sys.platform == u'darwin': path = os.path.join(os.getenv(u'HOME'), u'Library', u'Application Support', u'openlp') else: @@ -58,9 +58,9 @@ class AppLocation(object): path = os.path.join(os.getenv(u'HOME'), u'.openlp') return path elif dir_type == AppLocation.DataDir: - if os.name == u'nt': + if sys.platform == u'win32': path = os.path.join(os.getenv(u'APPDATA'), u'openlp', u'data') - elif os.name == u'mac': + elif sys.platform == u'darwin': path = os.path.join(os.getenv(u'HOME'), u'Library', u'Application Support', u'openlp', u'Data') else: @@ -100,4 +100,4 @@ def check_latest_version(config, current_version): from registry import Registry from confighelper import ConfigHelper -__all__ = [u'Registry', u'ConfigHelper', u'AppLocations', u'check_latest_version'] +__all__ = [u'Registry', u'ConfigHelper', u'AppLocation', u'check_latest_version'] From db84256a206f9b777bc76dc1ad3a6be855e25f75 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 12 Mar 2010 19:39:15 +0000 Subject: [PATCH 005/150] Fix yet more text --- openlp/core/ui/servicemanager.py | 2 ++ openlp/core/ui/thememanager.py | 10 +++++----- openlp/plugins/alerts/forms/alerteditform.py | 2 +- openlp/plugins/bibles/forms/importwizardform.py | 10 +++++----- openlp/plugins/images/lib/mediaitem.py | 2 +- openlp/plugins/presentations/presentationplugin.py | 2 +- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index a0a198f2d..e2e343f9e 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -216,6 +216,8 @@ class ServiceManager(QtGui.QWidget): def contextMenu(self, point): item = self.ServiceManagerList.itemAt(point) + if item is None: + return if item.parent() is None: pos = item.data(0, QtCore.Qt.UserRole).toInt()[0] else: diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 5cad41f58..59813a9e7 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -177,20 +177,20 @@ class ThemeManager(QtGui.QWidget): if theme != unicode(item.data(QtCore.Qt.UserRole).toString()): QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('You are unable to delete the default theme!'), + self.trUtf8('You are unable to delete the Default Theme.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) else: for plugin in self.parent.plugin_manager.plugins: if not plugin.can_delete_theme(theme): QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('theme %s is use in %s plugin' % (theme, plugin.name)), + self.trUtf8('Theme %s is use in %s plugin' % (theme, plugin.name)), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) return if unicode(self.parent.ServiceManagerContents.ThemeComboBox.currentText()) == theme: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('theme %s is use Service Manager' % theme), + self.trUtf8('Theme %s is use by Service Manager' % theme), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) return self.themelist.remove(theme) @@ -216,7 +216,7 @@ class ThemeManager(QtGui.QWidget): item = self.ThemeListWidget.currentItem() if item is None: QtGui.QMessageBox.critical(self, self.trUtf8('Error'), - self.trUtf8('You have not selected a theme!'), + self.trUtf8('You have not selected a theme.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) return theme = unicode(item.data(QtCore.Qt.UserRole).toString()) @@ -359,7 +359,7 @@ class ThemeManager(QtGui.QWidget): except: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('File is not a valid theme!'), + self.trUtf8('File is not a valid theme.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) log.exception(u'Importing theme from zip file failed %s' % filename) finally: diff --git a/openlp/plugins/alerts/forms/alerteditform.py b/openlp/plugins/alerts/forms/alerteditform.py index 62c129508..1aa6cc1f5 100644 --- a/openlp/plugins/alerts/forms/alerteditform.py +++ b/openlp/plugins/alerts/forms/alerteditform.py @@ -85,7 +85,7 @@ class AlertEditForm(QtGui.QDialog, Ui_AlertEditDialog): if self.AlertLineEdit.text(): QtGui.QMessageBox.information(self, self.trUtf8('Item selected to Edit'), - self.trUtf8('Please Save or Clear seletced item')) + self.trUtf8('Please Save or Clear selected item')) else: self.EditButton.setEnabled(True) self.DeleteButton.setEnabled(True) diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 742598fdb..03769abcd 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -110,7 +110,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtGui.QMessageBox.critical(self, self.trUtf8('Invalid Bible Location'), self.trUtf8('You need to specify a file to import your ' - 'Bible from!'), + 'Bible from.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OSISLocationEdit.setFocus() return False @@ -119,7 +119,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtGui.QMessageBox.critical(self, self.trUtf8('Invalid Books File'), self.trUtf8('You need to specify a file with books of ' - 'the Bible to use in the import!'), + 'the Bible to use in the import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.BooksLocationEdit.setFocus() return False @@ -127,7 +127,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtGui.QMessageBox.critical(self, self.trUtf8('Invalid Verse File'), self.trUtf8('You need to specify a file of Bible ' - 'verses to import!'), + 'verses to import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.CsvVerseLocationEdit.setFocus() return False @@ -136,7 +136,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtGui.QMessageBox.critical(self, self.trUtf8('Invalid OpenSong Bible'), self.trUtf8('You need to specify an OpenSong Bible ' - 'file to import!'), + 'file to import.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.OpenSongFileEdit.setFocus() return False @@ -147,7 +147,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): QtGui.QMessageBox.critical(self, self.trUtf8('Empty Version Name'), self.trUtf8('You need to specify a version name for your ' - 'Bible!'), + 'Bible.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) self.VersionNameEdit.setFocus() return False diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 75f2fd981..2cde4958c 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -101,7 +101,7 @@ class ImageMediaItem(MediaManagerItem): self.OverrideCheckBox.setChecked(False) self.OverrideCheckBox.setText(self.trUtf8('Override background')) self.OverrideCheckBox.setStatusTip( - self.trUtf8('Allow background of live slide to be overridden')) + self.trUtf8('Allow the background of live slide to be overridden')) self.OverrideLayout.addWidget(self.OverrideCheckBox) self.OverrideLabel = QtGui.QLabel(self.ImageWidget) self.OverrideLabel.setObjectName(u'OverrideLabel') diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 8353611ab..e39259a36 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -111,6 +111,6 @@ class PresentationPlugin(Plugin): def about(self): about_text = self.trUtf8('Presentation Plugin
Delivers ' 'the ability to show presentations using a number of different ' - 'programs. The choice of available presentation programs is ' + 'programs. The choice of available presentation programs is ' 'available to the user in a drop down box.') return about_text From 881c4cea18245f93c78d27c3d13fdfbd831977ab Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 12 Mar 2010 23:55:52 +0200 Subject: [PATCH 006/150] Fixed locations to use the AppLocation class. --- openlp/plugins/bibles/forms/importwizardform.py | 6 +++--- openlp/plugins/bibles/lib/http.py | 6 ++++-- openlp/plugins/bibles/lib/osis.py | 7 ++++--- openlp/plugins/presentations/presentationplugin.py | 9 ++++++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 742598fdb..d25ad4b4c 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui from bibleimportwizard import Ui_BibleImportWizard from openlp.core.lib import Receiver +from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.manager import BibleFormat log = logging.getLogger(__name__) @@ -258,9 +259,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): Load the list of Crosswalk and BibleGateway bibles. """ #Load and store Crosswalk Bibles - filepath = os.path.abspath(os.path.join( - os.path.split(os.path.abspath(__file__))[0], - u'..', u'resources')) + filepath = AppLocation.get_directory(AppLocation.PluginsDir) + filepath = os.path.join(filepath, u'bibles', u'resources') fbibles = None try: self.web_bible_list[DownloadLocation.Crosswalk] = {} diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index bd4ad8e0b..5a170d84c 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -31,6 +31,7 @@ import sqlite3 from BeautifulSoup import BeautifulSoup from openlp.core.lib import Receiver +from openlp.core.utils import AppLocation from common import BibleCommon, SearchResults from db import BibleDB from openlp.plugins.bibles.lib.models import Book @@ -43,8 +44,9 @@ class HTTPBooks(object): @staticmethod def get_cursor(): if HTTPBooks.cursor is None: - filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), - u'..', u'resources', u'httpbooks.sqlite') + filepath = os.path.join( + AppLocation.get_directory(AppLocation.PluginsDir), u'bibles', + u'resources', u'httpbooks.sqlite') conn = sqlite3.connect(filepath) HTTPBooks.cursor = conn.cursor() return HTTPBooks.cursor diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 658ac8a0b..e4cb79e73 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -33,6 +33,7 @@ import re from PyQt4 import QtCore from openlp.core.lib import Receiver +from openlp.core.utils import AppLocation from db import BibleDB log = logging.getLogger(__name__) @@ -66,9 +67,9 @@ class OSISBible(BibleDB): self.q_regex = re.compile(r'') self.spaces_regex = re.compile(r'([ ]{2,})') self.books = {} - filepath = os.path.split(os.path.abspath(__file__))[0] - filepath = os.path.abspath(os.path.join( - filepath, u'..', u'resources', u'osisbooks.csv')) + filepath = os.path.join( + AppLocation.get_directory(AppLocation.PluginsDir), u'bibles', + u'resources', u'osisbooks.csv') fbibles = None try: fbibles = open(filepath, u'r') diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 8353611ab..bfb3bcbca 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -27,6 +27,7 @@ import os import logging from openlp.core.lib import Plugin, build_icon, Receiver, PluginStatus +from openlp.core.utils import AppLocation from openlp.plugins.presentations.lib import * log = logging.getLogger(__name__) @@ -84,11 +85,13 @@ class PresentationPlugin(Plugin): If Not do not install the plugin. """ log.debug(u'check_pre_conditions') - dir = os.path.join(os.path.dirname(__file__), u'lib') - for filename in os.listdir(dir): + controller_dir = os.path.join( + AppLocation.get_directory(AppLocation.PluginsDir), + u'presentations', u'lib') + for filename in os.listdir(controller_dir): if filename.endswith(u'controller.py') and \ not filename == 'presentationcontroller.py': - path = os.path.join(dir, filename) + path = os.path.join(controller_dir, filename) if os.path.isfile(path): modulename = u'openlp.plugins.presentations.lib.' + \ os.path.splitext(filename)[0] From f2bafaaed29b1b854d52347c9f73375b517d2ab8 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 13 Mar 2010 00:14:24 +0200 Subject: [PATCH 007/150] Added lxml hook file. Made setup file paths relative. --- resources/innosetup/OpenLP-2.0.iss | 13 +++++++------ resources/pyinstaller/hook-lxml.objectify.py | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 resources/pyinstaller/hook-lxml.objectify.py diff --git a/resources/innosetup/OpenLP-2.0.iss b/resources/innosetup/OpenLP-2.0.iss index 4b25d6a28..eb2198fe4 100644 --- a/resources/innosetup/OpenLP-2.0.iss +++ b/resources/innosetup/OpenLP-2.0.iss @@ -5,7 +5,7 @@ #define MyAppVerName "OpenLP 2.0" #define MyAppPublisher "OpenLP Developers" #define MyAppURL "http://openlp.org/" -#define MyAppExeName "openlp.exe" +#define MyAppExeName "OpenLP.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. @@ -22,7 +22,7 @@ DefaultDirName={pf}\{#MyAppName} DefaultGroupName=OpenLP 2.0 AllowNoIcons=yes LicenseFile=LICENSE.txt -OutputBaseFilename=OpenLP-2.0-setup +OutputBaseFilename=OpenLP-1.9.0-bzr737-setup Compression=lzma SolidCompression=true SetupIconFile=OpenLP.ico @@ -55,10 +55,11 @@ Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:Ad Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked [Files] -Source: C:\Documents and Settings\raoul\My Documents\My Projects\openlp\pyinstaller\dist\openlp\*; DestDir: {app}; Flags: ignoreversion -Source: C:\Documents and Settings\raoul\My Documents\My Projects\openlp\pyinstaller\dist\openlp\plugins\*; DestDir: {app}\plugins; Flags: ignoreversion recursesubdirs createallsubdirs -Source: C:\Documents and Settings\raoul\My Documents\My Projects\openlp\pyinstaller\dist\openlp\Microsoft.VC90.CRT\*; DestDir: {app}\Microsoft.VC90.CRT; Flags: ignoreversion recursesubdirs createallsubdirs -Source: C:\Documents and Settings\raoul\My Documents\My Projects\openlp\pyinstaller\dist\openlp\qt4_plugins\*; DestDir: {app}\qt4_plugins; Flags: ignoreversion recursesubdirs createallsubdirs +Source: ..\..\dist\OpenLP\*; DestDir: {app}; Flags: ignoreversion +Source: ..\..\dist\OpenLP\plugins\*; DestDir: {app}\plugins; Flags: ignoreversion recursesubdirs createallsubdirs +Source: ..\..\dist\OpenLP\Microsoft.VC90.CRT\*; DestDir: {app}\Microsoft.VC90.CRT; Flags: ignoreversion recursesubdirs createallsubdirs +Source: ..\..\dist\OpenLP\qt4_plugins\*; DestDir: {app}\qt4_plugins; Flags: ignoreversion recursesubdirs createallsubdirs +Source: ..\..\dist\OpenLP\eggs\*; DestDir: {app}\eggs; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] diff --git a/resources/pyinstaller/hook-lxml.objectify.py b/resources/pyinstaller/hook-lxml.objectify.py new file mode 100644 index 000000000..071a0dca4 --- /dev/null +++ b/resources/pyinstaller/hook-lxml.objectify.py @@ -0,0 +1 @@ +hiddenimports = ['lxml.etree'] From 19ba09c168d736598f4e0e0869f4be9df5af3114 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 13 Mar 2010 00:33:04 +0200 Subject: [PATCH 008/150] Tweaked setup a bit. Added a default configuration. --- resources/innosetup/OpenLP-2.0.iss | 11 +++++++---- resources/innosetup/openlp.conf | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 resources/innosetup/openlp.conf diff --git a/resources/innosetup/OpenLP-2.0.iss b/resources/innosetup/OpenLP-2.0.iss index eb2198fe4..ea2a70664 100644 --- a/resources/innosetup/OpenLP-2.0.iss +++ b/resources/innosetup/OpenLP-2.0.iss @@ -20,12 +20,14 @@ AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName=OpenLP 2.0 -AllowNoIcons=yes +AllowNoIcons=true LicenseFile=LICENSE.txt OutputBaseFilename=OpenLP-1.9.0-bzr737-setup Compression=lzma SolidCompression=true -SetupIconFile=OpenLP.ico +SetupIconFile=C:\Program Files\Inno Setup 5\Examples\Setup.ico +WizardImageFile=C:\Program Files\Inno Setup 5\WizModernImage-IS.bmp +WizardSmallImageFile=C:\Program Files\Inno Setup 5\WizModernSmallImage-IS.bmp [Languages] Name: english; MessagesFile: compiler:Default.isl @@ -51,8 +53,8 @@ Name: slovenian; MessagesFile: compiler:Languages\Slovenian.isl Name: spanish; MessagesFile: compiler:Languages\Spanish.isl [Tasks] -Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked -Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked +Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} +Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons} [Files] Source: ..\..\dist\OpenLP\*; DestDir: {app}; Flags: ignoreversion @@ -60,6 +62,7 @@ Source: ..\..\dist\OpenLP\plugins\*; DestDir: {app}\plugins; Flags: ignoreversio Source: ..\..\dist\OpenLP\Microsoft.VC90.CRT\*; DestDir: {app}\Microsoft.VC90.CRT; Flags: ignoreversion recursesubdirs createallsubdirs Source: ..\..\dist\OpenLP\qt4_plugins\*; DestDir: {app}\qt4_plugins; Flags: ignoreversion recursesubdirs createallsubdirs Source: ..\..\dist\OpenLP\eggs\*; DestDir: {app}\eggs; Flags: ignoreversion recursesubdirs createallsubdirs +Source: openlp.conf; DestDir: {userappdata}\openlp; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] diff --git a/resources/innosetup/openlp.conf b/resources/innosetup/openlp.conf new file mode 100644 index 000000000..3471aede1 --- /dev/null +++ b/resources/innosetup/openlp.conf @@ -0,0 +1,26 @@ +[bibles] +status = 1 + +[media] +status = 1 + +[alerts] +status = 1 + +[presentations] +status = 1 + +[custom] +status = 1 + +[remotes] +status = 1 + +[images] +status = 1 + +[songusage] +status = 1 + +[songs] +status = 1 From eae3fdf52b5dc0da3412879ee94dbfe7dd49c95c Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 13 Mar 2010 01:10:21 +0200 Subject: [PATCH 009/150] Default remotes plugin to off. Don't overwrite config file. --- resources/innosetup/OpenLP-2.0.iss | 2 +- resources/innosetup/openlp.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/innosetup/OpenLP-2.0.iss b/resources/innosetup/OpenLP-2.0.iss index ea2a70664..41e9cd84b 100644 --- a/resources/innosetup/OpenLP-2.0.iss +++ b/resources/innosetup/OpenLP-2.0.iss @@ -62,7 +62,7 @@ Source: ..\..\dist\OpenLP\plugins\*; DestDir: {app}\plugins; Flags: ignoreversio Source: ..\..\dist\OpenLP\Microsoft.VC90.CRT\*; DestDir: {app}\Microsoft.VC90.CRT; Flags: ignoreversion recursesubdirs createallsubdirs Source: ..\..\dist\OpenLP\qt4_plugins\*; DestDir: {app}\qt4_plugins; Flags: ignoreversion recursesubdirs createallsubdirs Source: ..\..\dist\OpenLP\eggs\*; DestDir: {app}\eggs; Flags: ignoreversion recursesubdirs createallsubdirs -Source: openlp.conf; DestDir: {userappdata}\openlp; Flags: ignoreversion +Source: openlp.conf; DestDir: {userappdata}\openlp; Flags: ignoreversion onlyifdoesntexist ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] diff --git a/resources/innosetup/openlp.conf b/resources/innosetup/openlp.conf index 3471aede1..aab3b2260 100644 --- a/resources/innosetup/openlp.conf +++ b/resources/innosetup/openlp.conf @@ -14,7 +14,7 @@ status = 1 status = 1 [remotes] -status = 1 +status = 0 [images] status = 1 From 47dc69b19490a5869d120a983ecb7ead79377329 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 13 Mar 2010 08:43:54 +0000 Subject: [PATCH 010/150] More text fixes --- openlp/core/ui/thememanager.py | 2 +- openlp/plugins/alerts/forms/alerteditform.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 59813a9e7..1d8be6499 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -177,7 +177,7 @@ class ThemeManager(QtGui.QWidget): if theme != unicode(item.data(QtCore.Qt.UserRole).toString()): QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('You are unable to delete the Default Theme.'), + self.trUtf8('You are unable to delete the default theme.'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) else: for plugin in self.parent.plugin_manager.plugins: diff --git a/openlp/plugins/alerts/forms/alerteditform.py b/openlp/plugins/alerts/forms/alerteditform.py index 1aa6cc1f5..a88eff4f3 100644 --- a/openlp/plugins/alerts/forms/alerteditform.py +++ b/openlp/plugins/alerts/forms/alerteditform.py @@ -85,7 +85,7 @@ class AlertEditForm(QtGui.QDialog, Ui_AlertEditDialog): if self.AlertLineEdit.text(): QtGui.QMessageBox.information(self, self.trUtf8('Item selected to Edit'), - self.trUtf8('Please Save or Clear selected item')) + self.trUtf8('Please save or clear selected item')) else: self.EditButton.setEnabled(True) self.DeleteButton.setEnabled(True) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 2cde4958c..1542faa1e 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -61,7 +61,7 @@ class ImageMediaItem(MediaManagerItem): def retranslateUi(self): self.OnNewPrompt = self.trUtf8('Select Image(s)') self.OnNewFileMasks = \ - self.trUtf8('Images (*.jpg *jpeg *.gif *.png *.bmp);; All files (*)') + self.trUtf8('Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*)') def requiredIcons(self): MediaManagerItem.requiredIcons(self) From 3b59525e985404eef782435f3c1376e345851e73 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 13 Mar 2010 20:50:52 +0000 Subject: [PATCH 011/150] Renderer screen and font fixes --- openlp/core/lib/renderer.py | 7 ++----- openlp/core/lib/rendermanager.py | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 15e289dc9..7892a1222 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -43,8 +43,6 @@ class Renderer(object): """ self._rect = None self._debug = False - # the amount of right indent - self._right_margin = 64 self._display_shadow_size_footer = 0 self._display_outline_size_footer = 0 self.theme_name = None @@ -150,7 +148,7 @@ class Renderer(object): def pre_render_text(self, text): metrics = QtGui.QFontMetrics(self.mainFont) #work out line width - line_width = self._rect.width() #- self._right_margin + line_width = self._rect.width() #number of lines on a page - adjust for rounding up. line_height = metrics.height() if self._theme.display_shadow: @@ -449,8 +447,7 @@ class Renderer(object): rightextent = x + w # shift right from last line's rh edge if self._theme.display_wrapStyle == 1 and linenum != 0: - rightextent = self._first_line_right_extent #+ \ - #self._right_margin + rightextent = self._first_line_right_extent if rightextent > maxx: rightextent = maxx x = rightextent - w diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index edab3d309..5e9b1c331 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -146,13 +146,13 @@ class RenderManager(object): footer_rect = None if not theme.font_main_override: main_rect = QtCore.QRect(10, 0, - self.width - 1, self.footer_start) + self.width - 20, self.footer_start) else: main_rect = QtCore.QRect(theme.font_main_x, theme.font_main_y, theme.font_main_width - 1, theme.font_main_height - 1) if not theme.font_footer_override: footer_rect = QtCore.QRect(10, self.footer_start, - self.width - 1, self.height - self.footer_start) + self.width - 20, self.height - self.footer_start) else: footer_rect = QtCore.QRect(theme.font_footer_x, theme.font_footer_y, theme.font_footer_width - 1, From 5d8c1e42ba6dbd30a2978654dcba6da2c4d87c05 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 14 Mar 2010 00:35:17 +0200 Subject: [PATCH 012/150] Fixed up an error in the Bibles plugin where OpenSong imports would be programmatically canceled. --- openlp/plugins/bibles/lib/opensong.py | 2 +- resources/innosetup/OpenLP-2.0.iss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 6fa18cf6d..43b9e71a3 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -102,7 +102,7 @@ class OpenSongBible(BibleDB): finally: if file: file.close() - if self.stop_import: + if self.stop_import_flag: self.wizard.incrementProgressBar(u'Import canceled!') return False else: diff --git a/resources/innosetup/OpenLP-2.0.iss b/resources/innosetup/OpenLP-2.0.iss index 41e9cd84b..b826fa76f 100644 --- a/resources/innosetup/OpenLP-2.0.iss +++ b/resources/innosetup/OpenLP-2.0.iss @@ -22,7 +22,7 @@ DefaultDirName={pf}\{#MyAppName} DefaultGroupName=OpenLP 2.0 AllowNoIcons=true LicenseFile=LICENSE.txt -OutputBaseFilename=OpenLP-1.9.0-bzr737-setup +OutputBaseFilename=OpenLP-1.9.0-bzr739-setup Compression=lzma SolidCompression=true SetupIconFile=C:\Program Files\Inno Setup 5\Examples\Setup.ico From df8ffa53b27a34a679dd401cc370f3954280555f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 14 Mar 2010 07:56:39 +0000 Subject: [PATCH 013/150] Fix DND for service items --- openlp/core/ui/servicemanager.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 7176cda99..b41fd24dc 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -100,6 +100,7 @@ class ServiceManager(QtGui.QWidget): self.parent = parent self.serviceItems = [] self.serviceName = u'' + self.droppos = 0 #is a new service and has not been saved self.isNew = True #Indicates if remoteTriggering is active. If it is the next addServiceItem call @@ -639,19 +640,21 @@ class ServiceManager(QtGui.QWidget): self.repaintServiceList(sitem + 1, 0) self.parent.LiveController.replaceServiceManagerItem(item) else: - if sitem == -1: + #nothing selected or dnd + if self.droppos == 0: self.serviceItems.append({u'service_item': item, u'order': len(self.serviceItems) + 1, u'expanded':expand}) self.repaintServiceList(len(self.serviceItems) + 1, 0) else: - self.serviceItems.insert(sitem + 1, {u'service_item': item, - u'order': len(self.serviceItems)+1, + self.serviceItems.insert(self.droppos, {u'service_item': item, + u'order': self.droppos, u'expanded':expand}) - self.repaintServiceList(sitem + 1, 0) + self.repaintServiceList(self.droppos, 0) #if rebuilding list make sure live is fixed. if rebuild: self.parent.LiveController.replaceServiceManagerItem(item) + self.droppos = 0 self.parent.serviceChanged(False, self.serviceName) def makePreview(self): @@ -732,9 +735,9 @@ class ServiceManager(QtGui.QWidget): link = event.mimeData() if link.hasText(): plugin = event.mimeData().text() + item = self.ServiceManagerList.itemAt(event.pos()) if plugin == u'ServiceManager': startpos, startCount = self.findServiceItem() - item = self.ServiceManagerList.itemAt(event.pos()) if item is None: endpos = len(self.serviceItems) else: @@ -753,6 +756,14 @@ class ServiceManager(QtGui.QWidget): self.serviceItems.insert(newpos, serviceItem) self.repaintServiceList(endpos, startCount) else: + if item == None: + self.droppos = len(self.serviceItems) + else: + parentitem = item.parent() + if parentitem is None: + self.droppos = item.data(0, QtCore.Qt.UserRole).toInt()[0] + else: + self.droppos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] Receiver.send_message(u'%s_add_service_item' % plugin) def updateThemeList(self, theme_list): From af5a52fa62390a3f6c4e5095008f85190b6512aa Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 14 Mar 2010 17:05:50 +0000 Subject: [PATCH 014/150] Fix service saving and cancelling Fix Red and Bla --- openlp/core/ui/maindisplay.py | 3 +-- openlp/core/ui/mainwindow.py | 2 +- openlp/core/ui/servicemanager.py | 27 +++++++++++++-------------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 510b0ecc7..e59ce2060 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -168,8 +168,7 @@ class MainDisplay(DisplayWidget): self.screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) painter.begin(self.blankFrame) - #TODO make black when testing finished - painter.fillRect(self.blankFrame.rect(), QtCore.Qt.red) + painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) #build a blank transparent image self.transparent = QtGui.QPixmap(self.screen[u'size'].width(), self.screen[u'size'].height()) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index d7213860f..beb7cd148 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -419,7 +419,7 @@ class Ui_MainWindow(object): self.LanguageEnglishItem.setText(self.trUtf8('English')) self.LanguageEnglishItem.setStatusTip( self.trUtf8('Set the interface language to English')) - self.ToolsAddToolItem.setText(self.trUtf8('&Add Tool...')) + self.ToolsAddToolItem.setText(self.trUtf8('Add &Tool...')) self.ToolsAddToolItem.setStatusTip( self.trUtf8('Add an application to the list of tools')) self.action_Preview_Panel.setText(self.trUtf8('&Preview Pane')) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index b41fd24dc..6fbb34009 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -478,6 +478,7 @@ class ServiceManager(QtGui.QWidget): if not quick or self.isNew: filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Service', self.config.get_last_dir()) + print filename else: filename = self.config.get_last_dir() if filename: @@ -516,9 +517,9 @@ class ServiceManager(QtGui.QWidget): os.remove(servicefile) except: pass #if not present do not worry - name = filename.split(os.path.sep) - self.serviceName = name[-1] - self.parent.serviceChanged(True, self.serviceName) + name = filename.split(os.path.sep) + self.serviceName = name[-1] + self.parent.serviceChanged(True, self.serviceName) def onQuickSaveService(self): self.onSaveService(True) @@ -741,12 +742,7 @@ class ServiceManager(QtGui.QWidget): if item is None: endpos = len(self.serviceItems) else: - parentitem = item.parent() - if parentitem is None: - endpos = item.data(0, QtCore.Qt.UserRole).toInt()[0] - else: - endpos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] - endpos -= 1 + endpos = self._getParentItemData(item) - 1 if endpos < startpos: newpos = endpos else: @@ -759,11 +755,7 @@ class ServiceManager(QtGui.QWidget): if item == None: self.droppos = len(self.serviceItems) else: - parentitem = item.parent() - if parentitem is None: - self.droppos = item.data(0, QtCore.Qt.UserRole).toInt()[0] - else: - self.droppos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] + self.droppos = self._getParentItemData(item) Receiver.send_message(u'%s_add_service_item' % plugin) def updateThemeList(self, theme_list): @@ -798,3 +790,10 @@ class ServiceManager(QtGui.QWidget): item, count = self.findServiceItem() self.serviceItems[item][u'service_item'].theme = theme self.regenerateServiceItems() + + def _getParentItemData(self, item): + parentitem = item.parent() + if parentitem is None: + return item.data(0, QtCore.Qt.UserRole).toInt()[0] + else: + return parentitem.data(0, QtCore.Qt.UserRole).toInt()[0] From 23236b50e1c92293dfa2172c9eef0748b4340c10 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 14 Mar 2010 17:14:38 +0000 Subject: [PATCH 015/150] remove print --- openlp/core/ui/servicemanager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 6fbb34009..d9dd8acb6 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -478,7 +478,6 @@ class ServiceManager(QtGui.QWidget): if not quick or self.isNew: filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Service', self.config.get_last_dir()) - print filename else: filename = self.config.get_last_dir() if filename: From 36b9688695aef0a283b4ff3560f4da4ad4ca36d6 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 14 Mar 2010 17:53:14 +0000 Subject: [PATCH 016/150] Fix save service file name --- openlp/core/ui/servicemanager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index d9dd8acb6..cec14fc8c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -477,7 +477,8 @@ class ServiceManager(QtGui.QWidget): log.debug(u'onSaveService') if not quick or self.isNew: filename = QtGui.QFileDialog.getSaveFileName(self, - u'Save Service', self.config.get_last_dir()) + self.trUtf8(u'Save Service'), self.config.get_last_dir(), + self.trUtf8(u'OpenLP Service Files (*.osz)')) else: filename = self.config.get_last_dir() if filename: From 0ed125b3c37f1735cb4b432862bf92735f9e9652 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 15 Mar 2010 20:40:52 +0200 Subject: [PATCH 017/150] Ignore all "test" and "hook" scripts. Update the main ts file with the latest strings. --- resources/i18n/openlp_en.ts | 1313 ++++++++++++++++++----------------- scripts/get-strings.py | 2 + 2 files changed, 661 insertions(+), 654 deletions(-) diff --git a/resources/i18n/openlp_en.ts b/resources/i18n/openlp_en.ts index 6f9d4a26a..1660428e2 100644 --- a/resources/i18n/openlp_en.ts +++ b/resources/i18n/openlp_en.ts @@ -4,7 +4,7 @@ BibleMediaItem - + Quick @@ -34,10 +34,10 @@ - ServiceManager + Ui_EditSongDialog - - Save Service + + &Remove @@ -74,10 +74,10 @@ - ImportWizardForm + SongMaintenanceForm - - Bible Exists + + Are you sure you want to delete the selected book? @@ -92,7 +92,7 @@ BibleMediaItem - + Bible @@ -100,7 +100,7 @@ ServiceManager - + Save Changes to Service? @@ -137,22 +137,6 @@ - - Ui_SongUsageDeleteDialog - - - Audit Delete - - - - - BibleMediaItem - - - Clear - - - Ui_BibleImportWizard @@ -169,6 +153,14 @@ + + SongMaintenanceForm + + + Couldn't save your author. + + + Ui_ServiceNoteEdit @@ -178,15 +170,12 @@ - SongMaintenanceForm + Ui_customEditDialog - - Couldn't save your author! + + Add new slide at bottom - - - Ui_customEditDialog Clear @@ -201,6 +190,14 @@ + + PresentationPlugin + + + <b>Presentation Plugin</b> <br> Delivers the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. + + + SongUsagePlugin @@ -212,7 +209,7 @@ MainWindow - + The Main Display has been blanked out @@ -233,6 +230,14 @@ + + SongMaintenanceForm + + + This author can't be deleted, they are currently assigned to at least one song. + + + Ui_customEditDialog @@ -242,10 +247,18 @@ - SongMaintenanceForm + Ui_EditVerseDialog - - This author can't be deleted, they are currently assigned to at least one song! + + Verse + + + + + Ui_OpenSongImportDialog + + + OpenSong Folder: @@ -260,7 +273,7 @@ Ui_MainWindow - + Open an existing service @@ -268,13 +281,16 @@ SlideController - + Move to previous + + + SongsPlugin - - Edit and re-preview Song + + &Song @@ -287,12 +303,15 @@ - AlertsTab + ImportWizardForm - - pt + + You need to specify a file with books of the Bible to use in the import. + + + AlertsTab Edit History: @@ -300,18 +319,10 @@ - SlideController + Ui_MainWindow - - Delay between slides in seconds - - - - - SongMaintenanceForm - - - Couldn't add your book! + + &File @@ -333,6 +344,11 @@ SongMaintenanceForm + + + Couldn't add your book. + + Error @@ -347,14 +363,6 @@ - - ImportWizardForm - - - You need to specify a file with books of the Bible to use in the import! - - - ThemeManager @@ -379,14 +387,6 @@ - - SongUsageDeleteForm - - - Delete Selected Audit Events? - - - Ui_OpenSongExportDialog @@ -396,17 +396,17 @@ - BibleMediaItem + Ui_AmendThemeDialog - - Search + + Bottom Ui_MainWindow - + List the Plugins @@ -419,6 +419,14 @@ + + SongUsageDeleteForm + + + Delete Selected Song Usage Events? + + + SongUsagePlugin @@ -462,7 +470,7 @@ ServiceManager - + Open Service @@ -486,7 +494,7 @@ EditSongForm - + You need to enter a song title. @@ -499,19 +507,27 @@ + + Ui_SongUsageDeleteDialog + + + Song Usage Delete + + + ImportWizardForm - + Invalid Bible Location - ThemesTab + BibleMediaItem - - Global level + + Book: @@ -526,7 +542,7 @@ Ui_MainWindow - + &Service Manager @@ -547,14 +563,6 @@ - - Ui_BibleImportWizard - - - Books Location: - - - ThemeManager @@ -587,6 +595,14 @@ + + ThemesTab + + + Use the global theme, overriding any themes associated with either the service or the songs. + + + Ui_customEditDialog @@ -598,7 +614,7 @@ ImportWizardForm - + You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. @@ -627,14 +643,6 @@ - - BibleMediaItem - - - To: - - - Ui_AmendThemeDialog @@ -646,16 +654,16 @@ BibleMediaItem - + Text Search - Ui_OpenLPExportDialog + Ui_BibleImportWizard - - openlp.org Song Exporter + + CSV @@ -686,16 +694,16 @@ Ui_MainWindow - + Open Service - SongMediaItem + BibleMediaItem - - Titles + + Find: @@ -710,7 +718,7 @@ BibleMediaItem - + Search Type: @@ -718,23 +726,12 @@ Ui_MainWindow - + Media Manager - - - ImageMediaItem - - Images (*.jpg *jpeg *.gif *.png *.bmp);; All files (*) - - - - - Ui_MainWindow - - + Alt+F4 @@ -754,48 +751,51 @@ CCLI Details + + + BibleMediaItem - - SongSelect Password: + + Bible not fully loaded Ui_MainWindow - + Toggle the visibility of the Preview Panel - SongMaintenanceForm + ImportWizardForm - - Are you sure you want to delete the selected book? + + Bible Exists Ui_MainWindow - + &User Guide - SongUsageDeleteForm + AlertsTab - - Are you sure you want to delete selected Audit Data? + + pt Ui_MainWindow - + Set the interface language to English @@ -811,19 +811,11 @@ ImportWizardForm - + Empty Copyright - - CustomPlugin - - - <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> - - - AuthorsForm @@ -883,7 +875,7 @@ PresentationMediaItem - + Presentation @@ -915,7 +907,7 @@ MainWindow - + OpenLP version %s has been updated to version %s You can obtain the latest version from http://openlp.org @@ -933,20 +925,28 @@ You can obtain the latest version from http://openlp.org SlideController - + Go to Verse + + SongMaintenanceForm + + + Couldn't add your topic. + + + Ui_MainWindow - + &Import - + Quit OpenLP @@ -970,7 +970,7 @@ You can obtain the latest version from http://openlp.org ImportWizardForm - + Empty Version Name @@ -978,7 +978,7 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + &Preview Panel @@ -986,19 +986,11 @@ You can obtain the latest version from http://openlp.org SlideController - + Start continuous loop - - Ui_AboutDialog - - - License - - - GeneralTab @@ -1018,7 +1010,7 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + &New @@ -1031,19 +1023,27 @@ You can obtain the latest version from http://openlp.org + + Ui_EditSongDialog + + + R&emove + + + SlideController - + Live - ImportWizardForm + Ui_AmendThemeDialog - - You need to specify a file of Bible verses to import! + + Font Main @@ -1056,10 +1056,10 @@ You can obtain the latest version from http://openlp.org - Ui_EditVerseDialog + ThemeManager - - Number + + File is not a valid theme. @@ -1088,10 +1088,10 @@ You can obtain the latest version from http://openlp.org - Ui_MainWindow + Ui_AmendThemeDialog - - Ctrl+N + + Other Options @@ -1103,23 +1103,15 @@ You can obtain the latest version from http://openlp.org - - Ui_SongUsageDetailDialog - - - ASelect Date Range - - - Ui_MainWindow - + Default Theme: - + Toggle Preview Panel @@ -1156,6 +1148,22 @@ You can obtain the latest version from http://openlp.org + + Ui_MainWindow + + + &Settings + + + + + EditSongForm + + + Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + + Ui_AmendThemeDialog @@ -1213,10 +1221,10 @@ You can obtain the latest version from http://openlp.org - Ui_customEditDialog + Ui_BibleImportWizard - - Save + + Verse Location: @@ -1247,7 +1255,7 @@ You can obtain the latest version from http://openlp.org ImportWizardForm - + Open Books CSV file @@ -1271,7 +1279,7 @@ You can obtain the latest version from http://openlp.org BibleMediaItem - + No matching book could be found in this Bible. @@ -1283,16 +1291,27 @@ You can obtain the latest version from http://openlp.org Server: + + + Ui_EditVerseDialog - - Download Options + + Ending + + + + + CustomTab + + + Display Footer: ImportWizardForm - + Invalid OpenSong Bible @@ -1321,26 +1340,34 @@ You can obtain the latest version from http://openlp.org + + AlertEditForm + + + Please save or clear selected item + + + Ui_MainWindow - + &Live - SongMaintenanceForm + Ui_AmendThemeDialog - - Delete Topic + + <Color2> Ui_MainWindow - + English @@ -1361,6 +1388,14 @@ You can obtain the latest version from http://openlp.org + + Ui_OpenLPExportDialog + + + Select openlp.org export filename: + + + Ui_BibleImportWizard @@ -1378,18 +1413,18 @@ You can obtain the latest version from http://openlp.org - Ui_AmendThemeDialog + Ui_SongUsageDetailDialog - - Opaque + + Song Usage Extraction - SongMaintenanceForm + Ui_AmendThemeDialog - - This book can't be deleted, it is currently assigned to at least one song! + + Opaque @@ -1404,7 +1439,7 @@ You can obtain the latest version from http://openlp.org SlideController - + Start playing media @@ -1417,6 +1452,14 @@ You can obtain the latest version from http://openlp.org + + SongMaintenanceForm + + + This book can't be deleted, it is currently assigned to at least one song. + + + Ui_AboutDialog @@ -1444,7 +1487,7 @@ You can obtain the latest version from http://openlp.org BibleMediaItem - + Dual: @@ -1508,12 +1551,12 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + F9 - + F8 @@ -1521,7 +1564,7 @@ You can obtain the latest version from http://openlp.org ServiceManager - + &Change Item Theme @@ -1550,14 +1593,6 @@ You can obtain the latest version from http://openlp.org - - Ui_EditSongDialog - - - &Remove - - - Ui_BibleImportWizard @@ -1566,6 +1601,14 @@ You can obtain the latest version from http://openlp.org + + Ui_EditVerseDialog + + + Number + + + Ui_AmendThemeDialog @@ -1625,7 +1668,7 @@ You can obtain the latest version from http://openlp.org SlideController - + Move to live @@ -1647,17 +1690,25 @@ You can obtain the latest version from http://openlp.org - Ui_EditVerseDialog + ServiceManager - - Verse + + Save Service + + + + + Ui_SongUsageDetailDialog + + + Select Date Range Ui_MainWindow - + Save the current service to disk @@ -1665,16 +1716,13 @@ You can obtain the latest version from http://openlp.org BibleMediaItem - + Chapter: - - - Ui_AmendThemeDialog - - Bottom + + Search @@ -1687,10 +1735,10 @@ You can obtain the latest version from http://openlp.org - ImportWizardForm + Ui_MainWindow - - Open Verses CSV file + + Add &Tool... @@ -1713,7 +1761,7 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + &View @@ -1751,10 +1799,10 @@ You can obtain the latest version from http://openlp.org - ServiceManager + SlideController - - &Preview Verse + + Preview @@ -1782,6 +1830,14 @@ You can obtain the latest version from http://openlp.org + + ImportWizardForm + + + You need to specify a file of Bible verses to import. + + + AlertsTab @@ -1801,24 +1857,16 @@ You can obtain the latest version from http://openlp.org EditSongForm - + You need to enter some verses. - BibleMediaItem + Ui_BibleImportWizard - - Bible not fully loaded - - - - - CustomTab - - - Display Footer: + + Download Options @@ -1841,7 +1889,7 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + &Export @@ -1897,16 +1945,24 @@ You can obtain the latest version from http://openlp.org EditSongForm - + Invalid verse entry - vX - BibleMediaItem + ServiceManager - - No Book Found + + OpenLP Service Files (*.osz) + + + + + MediaManagerItem + + + Delete the selected item @@ -1929,7 +1985,7 @@ You can obtain the latest version from http://openlp.org BibleMediaItem - + Keep @@ -1953,32 +2009,24 @@ You can obtain the latest version from http://openlp.org Ui_MainWindow - + &Open - PresentationMediaItem + AuthorsForm - - Present using: + + You haven't set a display name for the author, would you like me to combine the first and last names for you? - ServiceManager + AmendThemeForm - - &Live Verse - - - - - Ui_EditVerseDialog - - - Pre-Chorus + + Slide Height is %s rows @@ -2013,6 +2061,14 @@ Testers + + SongMediaItem + + + Titles + + + Ui_OpenLPExportDialog @@ -2022,10 +2078,10 @@ Testers - AuthorsForm + PresentationMediaItem - - You haven't set a display name for the author, would you like me to combine the first and last names for you? + + Present using: @@ -2038,10 +2094,10 @@ Testers - AmendThemeForm + ServiceManager - - Slide Height is %s rows + + &Live Verse @@ -2056,7 +2112,7 @@ Testers Ui_MainWindow - + Toggle Theme Manager @@ -2166,14 +2222,17 @@ Testers - Ui_MainWindow + BiblesTab - - &Settings + + Verse Display + + + Ui_MainWindow - + &Options @@ -2181,7 +2240,7 @@ Testers BibleMediaItem - + Results: @@ -2195,17 +2254,17 @@ Testers - Ui_OpenSongImportDialog + ServiceManager - - OpenSong Folder: + + Move to &top SlideController - + Move to last @@ -2245,7 +2304,7 @@ Testers BibleMediaItem - + Verse Search @@ -2261,7 +2320,7 @@ Testers EditSongForm - + Save && Preview @@ -2339,18 +2398,18 @@ Testers - MediaMediaItem + SongsTab - - Select Media + + Enable search as you type: - PresentationMediaItem + Ui_MainWindow - - Select Presentation(s) + + Ctrl+S @@ -2370,32 +2429,24 @@ Testers - - Ui_MainWindow - - - Save the current service under a new name - - - - - Ctrl+O - - - - - Ui_AmendThemeDialog - - - Other Options - - - SongMaintenanceForm - Couldn't add your author! + Couldn't add your author. + + + + + Ui_MainWindow + + + Ctrl+O + + + + + Ctrl+N @@ -2424,18 +2475,15 @@ Testers - SongsPlugin + SlideController - - &Song + + Edit and re-preview Song - - - Ui_MainWindow - - &File + + Delay between slides in seconds @@ -2461,25 +2509,25 @@ Testers - ThemeManager + ThemesTab - - You are unable to delete the default theme! + + Global level - ThemesTab + ThemeManager - - Use the global theme, overriding any themes associated with either the service or the songs. + + You are unable to delete the default theme. BibleMediaItem - + Version: @@ -2522,14 +2570,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - ThemeManager - - - File is not a valid theme! - - - Ui_BibleImportWizard @@ -2539,18 +2579,18 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - ServiceManager + Ui_AboutDialog - - Move down + + License - Ui_EditSongDialog + OpenSongBible - - R&emove + + Importing @@ -2563,10 +2603,10 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Ui_BibleImportWizard + Ui_customEditDialog - - Verse Location: + + Save @@ -2581,7 +2621,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr BibleMediaItem - + From: @@ -2597,7 +2637,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr ServiceManager - + &Notes @@ -2605,7 +2645,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + E&xit @@ -2621,7 +2661,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr MainWindow - + OpenLP Version Updated @@ -2633,11 +2673,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Replace edited slide - - - Add new slide at bottom - - EditCustomForm @@ -2658,11 +2693,19 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Help + + Ui_EditVerseDialog + + + Bridge + + + Ui_OpenSongExportDialog @@ -2680,15 +2723,10 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - TestMediaManager + Ui_EditVerseDialog - - Item2 - - - - - Item1 + + Pre-Chorus @@ -2711,11 +2749,19 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + Toggle Service Manager + + Ui_EditSongDialog + + + Delete + + + MediaManagerItem @@ -2751,7 +2797,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + Ctrl+F1 @@ -2760,7 +2806,15 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr SongMaintenanceForm - Couldn't save your topic! + Couldn't save your topic. + + + + + Ui_MainWindow + + + Save the current service under a new name @@ -2796,14 +2850,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - BiblesTab - - - Bibles - - - SongUsagePlugin @@ -2823,7 +2869,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Web Site @@ -2839,17 +2885,17 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + M&ode - + Translate the interface to your language - + Service Manager @@ -2881,7 +2927,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Theme @@ -2897,31 +2943,20 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Language - - SlideController - - - Verse - - - - - ImportWizardForm - - - You need to specify an OpenSong Bible file to import! - - - ServiceManager - + + Move to end + + + + Your service is unsaved, do you want to save those changes before creating a new one ? @@ -2945,21 +2980,21 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr MainWindow - + Save Changes to Service? - + Your service has changed, do you want to save those changes? - EditSongForm + ServiceManager - - Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O + + &Delete From Service @@ -2974,11 +3009,19 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &About + + ImportWizardForm + + + You need to specify a version name for your Bible. + + + BiblesTab @@ -2987,14 +3030,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - ImportWizardForm - - - You need to specify a version name for your Bible! - - - Ui_AlertEditDialog @@ -3012,26 +3047,10 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - RemotesPlugin + ThemesTab - - <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche - - - - - SongMaintenanceForm - - - This topic can't be deleted, it is currently assigned to at least one song! - - - - - BibleMediaItem - - - Find: + + Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. @@ -3059,14 +3078,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - ImageMediaItem - - - Allow background of live slide to be overridden - - - MediaManagerItem @@ -3083,14 +3094,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - BibleMediaItem - - - Book: - - - Ui_AmendThemeDialog @@ -3100,10 +3103,10 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Ui_OpenLPExportDialog + Ui_OpenLPImportDialog - - Select openlp.org export filename: + + Select openlp.org songfile to import: @@ -3118,8 +3121,8 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr BiblesTab - - Verse Display + + Layout Style: @@ -3134,7 +3137,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr SlideController - + Move to next @@ -3142,7 +3145,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Plugin List @@ -3174,21 +3177,32 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr ImportWizardForm - + Open OSIS file + + Ui_AmendThemeDialog + + + Circular + + + + + PresentationMediaItem + + + Automatic + + + SongMaintenanceForm - Couldn't save your book! - - - - - Couldn't add your topic! + Couldn't save your book. @@ -3201,26 +3215,10 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - Ui_MainWindow + SongMaintenanceForm - - &Add Tool... - - - - - Ui_AmendThemeDialog - - - <Color2> - - - - - ServiceManager - - - Move up + + Delete Topic @@ -3272,14 +3270,6 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr - - ServiceManager - - - Move to bottom - - - Ui_PluginViewDialog @@ -3299,7 +3289,7 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr ImportWizardForm - + This Bible already exists! Please import a different Bible or first delete the existing one. @@ -3307,24 +3297,16 @@ OpenLP is written and maintained by volunteers. If you would like to see more fr Ui_MainWindow - + &Translate - AlertEditForm + BiblesTab - - Please Save or Clear seletced item - - - - - Ui_MainWindow - - - Save Service As + + Bibles @@ -3473,14 +3455,6 @@ Changes don't affect verses already in the service - - Ui_BibleImportWizard - - - Welcome to the Bible Import Wizard - - - Ui_AmendThemeDialog @@ -3516,7 +3490,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + New Service @@ -3524,7 +3498,7 @@ Changes don't affect verses already in the service SlideController - + Move to first @@ -3532,7 +3506,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + &Online Help @@ -3540,7 +3514,7 @@ Changes don't affect verses already in the service SlideController - + Blank Screen @@ -3548,26 +3522,26 @@ Changes don't affect verses already in the service Ui_MainWindow - + Save Service - + Save &As... - + Toggle the visibility of the Media Manager - MediaManagerItem + BibleMediaItem - - Delete the selected item + + No Book Found @@ -3590,7 +3564,7 @@ Changes don't affect verses already in the service BibleMediaItem - + Advanced @@ -3606,38 +3580,38 @@ Changes don't affect verses already in the service Ui_MainWindow - + F11 - + F10 - + F12 - Ui_BibleImportWizard + CustomPlugin - - Select the import format, and where to import from. + + <b>Custom Plugin</b><br>This plugin allows slides to be displayed on the screen in the same way songs are. This plugin provides greater freedom over the songs plugin.<br> Ui_MainWindow - + Alt+F7 - + Add an application to the list of tools @@ -3650,6 +3624,14 @@ Changes don't affect verses already in the service + + ServiceManager + + + Move &down + + + BiblesTab @@ -3669,7 +3651,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Theme Manager @@ -3709,7 +3691,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Toggle the visibility of the Theme Manager @@ -3739,10 +3721,10 @@ Changes don't affect verses already in the service - ServiceManager + SlideController - - Move to end + + Verse @@ -3757,7 +3739,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + &Preview Pane @@ -3792,15 +3774,12 @@ Changes don't affect verses already in the service - Ui_BibleImportWizard + Ui_AmendThemeDialog - - Password: + + Preview - - - Ui_AmendThemeDialog Outline Size: @@ -3832,18 +3811,18 @@ Changes don't affect verses already in the service - Ui_MainWindow + Ui_AboutDialog - - &Theme Manager + + Credits - Ui_OpenLPImportDialog + BibleMediaItem - - Select openlp.org songfile to import: + + To: @@ -3855,14 +3834,6 @@ Changes don't affect verses already in the service - - alertsPlugin - - - F7 - - - Ui_OpenLPExportDialog @@ -3887,14 +3858,6 @@ Changes don't affect verses already in the service - - PresentationPlugin - - - <b>Presentation Plugin</b> <br> Delivers the ability to show presentations using a number of different programs. The choice of available presentation programs is available to the user in a drop down box. - - - ImageMediaItem @@ -3904,10 +3867,18 @@ Changes don't affect verses already in the service - SongsTab + BibleMediaItem - - Enable search as you type: + + Clear + + + + + Ui_MainWindow + + + Save Service As @@ -3968,10 +3939,10 @@ Changes don't affect verses already in the service - ThemesTab + RemotesPlugin - - Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. + + <b>Remote Plugin</b><br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br>The Primary use for this would be to send alerts from a creche @@ -3986,21 +3957,18 @@ Changes don't affect verses already in the service BibleMediaItem - + Verse: - Ui_BibleImportWizard + Ui_OpenLPExportDialog - - CSV + + openlp.org Song Exporter - - - Ui_OpenLPExportDialog Song Export List @@ -4042,7 +4010,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Toggle the visibility of the Service Manager @@ -4050,11 +4018,27 @@ Changes don't affect verses already in the service PresentationMediaItem - + A presentation with that filename already exists. + + ImageMediaItem + + + Allow the background of live slide to be overridden + + + + + SongUsageDeleteForm + + + Are you sure you want to delete selected Song Usage data? + + + AlertsTab @@ -4066,7 +4050,7 @@ Changes don't affect verses already in the service ImportWizardForm - + Invalid Books File @@ -4103,6 +4087,14 @@ Changes don't affect verses already in the service + + ImportWizardForm + + + Open Verses CSV file + + + Ui_customEditDialog @@ -4114,7 +4106,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + More information about OpenLP @@ -4138,12 +4130,12 @@ Changes don't affect verses already in the service Ui_MainWindow - + &Media Manager - + &Tools @@ -4178,18 +4170,18 @@ Changes don't affect verses already in the service - AlertsTab + SongMaintenanceForm - - s + + This topic can't be deleted, it is currently assigned to at least one song. - ImagePlugin + AlertsTab - - <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + s @@ -4226,10 +4218,10 @@ Changes don't affect verses already in the service - Ui_AmendThemeDialog + Ui_BibleImportWizard - - Font Main + + Select the import format, and where to import from. @@ -4252,7 +4244,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Toggle Media Manager @@ -4282,10 +4274,10 @@ Changes don't affect verses already in the service - ImportWizardForm + ThemeManager - - You need to specify a file to import your Bible from! + + You have not selected a theme. @@ -4298,10 +4290,10 @@ Changes don't affect verses already in the service - ThemeManager + ImportWizardForm - - You have not selected a theme! + + You need to specify a file to import your Bible from. @@ -4324,7 +4316,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Create a new Service @@ -4338,10 +4330,10 @@ Changes don't affect verses already in the service - SlideController + ServiceManager - - Preview + + &Preview Verse @@ -4352,6 +4344,17 @@ Changes don't affect verses already in the service TextLabel + + + AlertsTab + + + Font Size: + + + + + Ui_PluginViewDialog About: @@ -4408,14 +4411,6 @@ Changes don't affect verses already in the service - - Ui_SongUsageDetailDialog - - - Audit Detail Extraction - - - Ui_OpenLPExportDialog @@ -4424,6 +4419,14 @@ Changes don't affect verses already in the service + + ImageMediaItem + + + Images (*.jpg *.jpeg *.gif *.png *.bmp);; All files (*) + + + EditCustomForm @@ -4459,7 +4462,7 @@ Changes don't affect verses already in the service MainWindow - + OpenLP Main Display Blanked @@ -4473,33 +4476,30 @@ Changes don't affect verses already in the service - OpenSongBible + ServiceManager - - Importing + + Move &up - Ui_EditSongDialog + ImportWizardForm - - Delete - - - - - Ui_MainWindow - - - Ctrl+S + + You need to specify an OpenSong Bible file to import. PresentationMediaItem - + + Select Presentation(s) + + + + File exists @@ -4515,16 +4515,24 @@ Changes don't affect verses already in the service SlideController - + Stop continuous loop - + s + + ImagePlugin + + + <b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br<br>From the plugin if the <i>Override background</i> is chosen and an image is selected any songs which are rendered will use the selected image from the background instead of the one provied by the theme.<br> + + + SongMediaItem @@ -4549,18 +4557,10 @@ Changes don't affect verses already in the service - - BiblesTab - - - Layout Style: - - - ImportWizardForm - + Invalid Verse File @@ -4568,7 +4568,7 @@ Changes don't affect verses already in the service EditSongForm - + Error @@ -4614,10 +4614,10 @@ Changes don't affect verses already in the service - Ui_EditVerseDialog + Ui_BibleImportWizard - - Bridge + + Welcome to the Bible Import Wizard @@ -4630,18 +4630,18 @@ Changes don't affect verses already in the service - Ui_AmendThemeDialog + Ui_BibleImportWizard - - Preview + + Password: - Ui_AboutDialog + Ui_MainWindow - - Credits + + &Theme Manager @@ -4670,10 +4670,10 @@ Changes don't affect verses already in the service - Ui_EditVerseDialog + MediaMediaItem - - Ending + + Select Media @@ -4688,7 +4688,7 @@ Changes don't affect verses already in the service ServiceManager - + &Edit Item @@ -4704,12 +4704,12 @@ Changes don't affect verses already in the service Ui_MainWindow - + &Save - + OpenLP 2.0 @@ -4758,6 +4758,11 @@ Changes don't affect verses already in the service Show Outline: + + + Gradient + + SongBookForm @@ -4770,7 +4775,7 @@ Changes don't affect verses already in the service ImportWizardForm - + Open OpenSong Bible @@ -4778,7 +4783,7 @@ Changes don't affect verses already in the service Ui_MainWindow - + Look && &Feel @@ -4808,18 +4813,18 @@ Changes don't affect verses already in the service - Ui_AmendThemeDialog + ServiceManager - - Gradient + + Move to &bottom - AlertsTab + Ui_BibleImportWizard - - Font Size: + + Books Location: @@ -4832,10 +4837,10 @@ Changes don't affect verses already in the service - Ui_AmendThemeDialog + GeneralTab - - Circular + + SongSelect Password: diff --git a/scripts/get-strings.py b/scripts/get-strings.py index ed3cdcb41..81b889f50 100755 --- a/scripts/get-strings.py +++ b/scripts/get-strings.py @@ -99,6 +99,8 @@ def main(): start_dir = os.path.abspath(u'..') for root, dirs, files in os.walk(start_dir): for file in files: + if file.startswith(u'hook-') or file.startswith(u'test_'): + continue if file.endswith(u'.py'): print u'Parsing "%s"' % file parse_file(start_dir, os.path.join(root, file), strings) From 90d2282e08ca0adc0f44964ed4f57165ab8d5857 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 15 Mar 2010 20:47:07 +0200 Subject: [PATCH 018/150] First attempt at fixing the Bible file name issue. --- openlp/plugins/bibles/lib/db.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index be4112a54..c3f22883f 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -26,6 +26,7 @@ import os import logging import chardet +import re from sqlalchemy import or_ from PyQt4 import QtCore @@ -69,10 +70,11 @@ class BibleDB(QtCore.QObject): raise KeyError(u'Missing keyword argument "config".') self.stop_import_flag = False self.name = kwargs[u'name'] + self.filename = self.clean_filename(kwargs[u'name']) self.config = kwargs[u'config'] self.db_file = os.path.join(kwargs[u'path'], - u'%s.sqlite' % kwargs[u'name']) - log.debug(u'Load bible %s on path %s', kwargs[u'name'], self.db_file) + u'%s.sqlite' % self.filename) + log.debug(u'Load bible %s on path %s', self.filename, self.db_file) db_type = self.config.get_config(u'db type', u'sqlite') db_url = u'' if db_type == u'sqlite': @@ -86,6 +88,12 @@ class BibleDB(QtCore.QObject): self.metadata, self.session = init_models(db_url) self.metadata.create_all(checkfirst=True) + def clean_filename(self, old_filename): + for char in [u'\\', u'/', u':', u'*', u'?', u'"', u'<', u'>', u'|', u' ']: + old_filename = old_filename.replace(char, u'_') + old_filename = re.sub(r'[_]+', u'_', old_filename).strip(u'_') + return old_filename + def register(self, wizard): """ This method basically just initialialises the database. It is called From 9044ed3a4a18d436f44bfa472459a311f5e2b9f9 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 16 Mar 2010 21:46:19 +0200 Subject: [PATCH 019/150] Fixed a bug where Bible names were being used for file names, and causing issues on various operating systems. --- openlp/plugins/bibles/lib/db.py | 35 +++++++++++++++++++++------- openlp/plugins/bibles/lib/manager.py | 16 ++++++++----- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index a09223a20..08c6cbe38 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -66,15 +66,20 @@ class BibleDB(QtCore.QObject): raise KeyError(u'Missing keyword argument "path".') if u'config' not in kwargs: raise KeyError(u'Missing keyword argument "config".') - if u'name' not in kwargs: - raise KeyError(u'Missing keyword argument "name".') + if u'name' not in kwargs and u'file' not in kwargs: + raise KeyError(u'Missing keyword argument "name" or "file".') self.stop_import_flag = False self.config = kwargs[u'config'] - self.name = kwargs[u'name'] - #self.filename = self.clean_filename(kwargs[u'name']) - self.db_file = os.path.join(kwargs[u'path'], - u'%s.sqlite' % self.name) - log.debug(u'Load bible %s on path %s', self.name, self.db_file) + if u'name' in kwargs: + self.name = kwargs[u'name'] + if not isinstance(self.name, unicode): + self.name = unicode(self.name, u'utf-8') + self.file = self.clean_filename(self.name) + if u'file' in kwargs: + self.file = kwargs[u'file'] + + self.db_file = os.path.join(kwargs[u'path'], self.file) + log.debug(u'Load bible %s on path %s', self.file, self.db_file) db_type = self.config.get_config(u'db type', u'sqlite') db_url = u'' if db_type == u'sqlite': @@ -87,18 +92,30 @@ class BibleDB(QtCore.QObject): self.config.get_config(u'db database')) self.metadata, self.session = init_models(db_url) self.metadata.create_all(checkfirst=True) + if u'file' in kwargs: + self.get_name() + + def get_name(self): + version_name = self.get_meta(u'Version') + if version_name: + self.name = version_name.value + else: + self.name = None + return self.name def clean_filename(self, old_filename): + if not isinstance(old_filename, unicode): + old_filename = unicode(old_filename, u'utf-8') for char in [u'\\', u'/', u':', u'*', u'?', u'"', u'<', u'>', u'|', u' ']: old_filename = old_filename.replace(char, u'_') old_filename = re.sub(r'[_]+', u'_', old_filename).strip(u'_') - return old_filename + return old_filename + u'.sqlite' def register(self, wizard): """ This method basically just initialialises the database. It is called from the Bible Manager when a Bible is imported. Descendant classes - may want to override this method to supply their own custom + may want to override this method to suVersionpply their own custom initialisation as well. """ self.wizard = wizard diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 5fc871abc..12b4eeec8 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -123,17 +123,21 @@ class BibleManager(object): log.debug(u'Bible Files %s', files) self.db_cache = {} for filename in files: - name, extension = os.path.splitext(filename) - self.db_cache[name] = BibleDB(self.parent, path=self.path, - name=name, config=self.config) + bible = BibleDB(self.parent, path=self.path, file=filename, + config=self.config) + #self.db_cache[name] = BibleDB(self.parent, path=self.path, + # name=name, config=self.config) + name = bible.get_name() + log.debug(u'Bible Name: "%s"', name) + self.db_cache[name] = bible # look to see if lazy load bible exists and get create getter. source = self.db_cache[name].get_meta(u'download source') if source: download_name = self.db_cache[name].get_meta(u'download name').value meta_proxy = self.db_cache[name].get_meta(u'proxy url') - web_bible = HTTPBible(self.parent, path=self.path, name=name, - config=self.config, download_source=source.value, - download_name=download_name) + web_bible = HTTPBible(self.parent, path=self.path, + file=filename, config=self.config, + download_source=source.value, download_name=download_name) if meta_proxy: web_bible.set_proxy_server(meta_proxy.value) #del self.db_cache[name] From de8d0f4d9ccf0df7a8854b273cd849cdb71b8e0e Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 16 Mar 2010 20:22:28 +0000 Subject: [PATCH 020/150] Add add to existing service item --- openlp/core/lib/mediamanageritem.py | 22 ++++++++++++++++++++++ openlp/core/ui/servicemanager.py | 10 ++++++++++ openlp/plugins/images/lib/mediaitem.py | 1 + 3 files changed, 33 insertions(+) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index fd6d37ca6..241a534f7 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -114,6 +114,7 @@ class MediaManagerItem(QtGui.QWidget): self.Toolbar = None self.remoteTriggered = None self.ServiceItemIconName = None + self.addToServiceItem = True self.PageLayout = QtGui.QVBoxLayout(self) self.PageLayout.setSpacing(0) self.PageLayout.setContentsMargins(4, 0, 4, 0) @@ -285,6 +286,11 @@ class MediaManagerItem(QtGui.QWidget): contextMenuAction( self.ListView, u':/system/system_add.png', self.trUtf8('&Add to Service'), self.onAddClick)) + if self.addToServiceItem: + self.ListView.addAction( + contextMenuAction( + self.ListView, u':/system/system_add.png', + self.trUtf8('&Add to Service Item'), self.onAddEditClick)) QtCore.QObject.connect( self.ListView, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick) @@ -386,6 +392,22 @@ class MediaManagerItem(QtGui.QWidget): service_item.fromPlugin = False self.parent.service_manager.addServiceItem(service_item) + def onAddEditClick(self): + if not self.ListView.selectedIndexes() and not self.remoteTriggered: + QtGui.QMessageBox.information(self, + self.trUtf8('No items selected...'), + self.trUtf8('You must select one or more items')) + else: + log.debug(self.PluginNameShort + u' Add requested') + service_item = self.parent.service_manager.getServiceItem() + if not service_item: + QtGui.QMessageBox.information(self, + self.trUtf8('No Servive item selected'), + self.trUtf8('You must select a existing Service Item to add to.')) + else: + self.generateSlideData(service_item) + self.parent.service_manager.addServiceItem(service_item) + def buildServiceItem(self): """ Common method for generating a service item diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cec14fc8c..98336c2f5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -666,6 +666,16 @@ class ServiceManager(QtGui.QWidget): self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], count) + def getServiceItem(self): + """ + Send the current item to the Preview slide controller + """ + item, count = self.findServiceItem() + if item == -1: + return False + else: + self.remoteEditTriggered = True + return self.serviceItems[item][u'service_item'] def makeLive(self): """ diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 1542faa1e..3a7fd7fd8 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -52,6 +52,7 @@ class ImageMediaItem(MediaManagerItem): # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = ImageListView self.servicePath = None + self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) self.overrideActive = False From c1182aa9cc6cf294ffda521e563af5a920ffb29d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 16 Mar 2010 20:30:33 +0000 Subject: [PATCH 021/150] Add maintain menu item --- openlp/core/lib/serviceitem.py | 1 + openlp/core/ui/servicemanager.py | 5 +++++ openlp/plugins/images/lib/mediaitem.py | 1 + 3 files changed, 7 insertions(+) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 7d869a610..9164f3235 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -69,6 +69,7 @@ class ServiceItem(object): self.service_item_path = None self.service_item_type = None self.edit_enabled = False + self.maintain_allowed = False self._raw_frames = [] self._display_frames = [] self._uuid = unicode(uuid.uuid1()) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 98336c2f5..fff903648 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -202,6 +202,8 @@ class ServiceManager(QtGui.QWidget): self.menu = QtGui.QMenu() self.editAction = self.menu.addAction(self.trUtf8('&Edit Item')) self.editAction.setIcon(build_icon(u':/services/service_edit.png')) + self.maintainAction = self.menu.addAction(self.trUtf8('&Maintain Item')) + self.maintainAction.setIcon(build_icon(u':/services/service_edit.png')) self.notesAction = self.menu.addAction(self.trUtf8('&Notes')) self.notesAction.setIcon(build_icon(u':/services/service_notes.png')) self.deleteAction = self.menu.addAction(self.trUtf8('&Delete From Service')) @@ -227,9 +229,12 @@ class ServiceManager(QtGui.QWidget): pos = item.parent().data(0, QtCore.Qt.UserRole).toInt()[0] serviceItem = self.serviceItems[pos - 1] self.editAction.setVisible(False) + self.maintainAction.setVisible(False) self.notesAction.setVisible(False) if serviceItem[u'service_item'].edit_enabled: self.editAction.setVisible(True) + if serviceItem[u'service_item'].maintain_allowed: + self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) self.themeMenu.menuAction().setVisible(False) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 3a7fd7fd8..f774efdd7 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -146,6 +146,7 @@ class ImageMediaItem(MediaManagerItem): if items: service_item.title = self.trUtf8('Image(s)') service_item.autoPreviewAllowed = True + service_item.maintain_allowed = True for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) From dc6c6bec31938fe9f65c90a3419eb0d7ac5916ac Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 16 Mar 2010 22:43:41 +0200 Subject: [PATCH 022/150] - Removed commented code (just for you, TRB143!) - Removed any non-alphanumeric character for Bible names, just to be safe, since we don't actually use the filenames anymore. --- openlp/plugins/bibles/lib/db.py | 9 +-------- openlp/plugins/bibles/lib/manager.py | 3 --- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 08c6cbe38..8f55fb5fc 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -106,9 +106,7 @@ class BibleDB(QtCore.QObject): def clean_filename(self, old_filename): if not isinstance(old_filename, unicode): old_filename = unicode(old_filename, u'utf-8') - for char in [u'\\', u'/', u':', u'*', u'?', u'"', u'<', u'>', u'|', u' ']: - old_filename = old_filename.replace(char, u'_') - old_filename = re.sub(r'[_]+', u'_', old_filename).strip(u'_') + old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') return old_filename + u'.sqlite' def register(self, wizard): @@ -266,8 +264,6 @@ class BibleDB(QtCore.QObject): count = self.session.query(Verse.chapter).join(Book)\ .filter(Book.name==book)\ .distinct().count() - #verse = self.session.query(Verse).join(Book).filter( - # Book.name == bookname).order_by(Verse.chapter.desc()).first() if not count: return 0 else: @@ -279,9 +275,6 @@ class BibleDB(QtCore.QObject): .filter(Book.name==book)\ .filter(Verse.chapter==chapter)\ .count() - #verse = self.session.query(Verse).join(Book).filter( - # Book.name == bookname).filter( - # Verse.chapter == chapter).order_by(Verse.verse.desc()).first() if not count: return 0 else: diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 12b4eeec8..90401a3e1 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -125,8 +125,6 @@ class BibleManager(object): for filename in files: bible = BibleDB(self.parent, path=self.path, file=filename, config=self.config) - #self.db_cache[name] = BibleDB(self.parent, path=self.path, - # name=name, config=self.config) name = bible.get_name() log.debug(u'Bible Name: "%s"', name) self.db_cache[name] = bible @@ -140,7 +138,6 @@ class BibleManager(object): download_source=source.value, download_name=download_name) if meta_proxy: web_bible.set_proxy_server(meta_proxy.value) - #del self.db_cache[name] self.db_cache[name] = web_bible log.debug(u'Bibles reloaded') From 60a3468edb3f6dbfab5eb70e4189af42e1e44749 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 16 Mar 2010 21:03:10 +0000 Subject: [PATCH 023/150] remove alert dialog --- openlp/plugins/alerts/alertsplugin.py | 3 +- openlp/plugins/alerts/forms/__init__.py | 1 - .../plugins/alerts/forms/alerteditdialog.py | 67 ------- openlp/plugins/alerts/forms/alerteditform.py | 166 ------------------ 4 files changed, 1 insertion(+), 236 deletions(-) delete mode 100644 openlp/plugins/alerts/forms/alerteditdialog.py delete mode 100644 openlp/plugins/alerts/forms/alerteditform.py diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 90e7946c7..4fade5f85 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -29,7 +29,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, build_icon, PluginStatus from openlp.plugins.alerts.lib import AlertsManager, DBManager -from openlp.plugins.alerts.forms import AlertsTab, AlertForm, AlertEditForm +from openlp.plugins.alerts.forms import AlertsTab, AlertForm log = logging.getLogger(__name__) @@ -43,7 +43,6 @@ class alertsPlugin(Plugin): self.alertsmanager = AlertsManager(self) self.manager = DBManager(self.config) self.alertForm = AlertForm(self.manager, self) - self.alertEditForm = AlertEditForm(self.manager, self) self.status = PluginStatus.Active def get_settings_tab(self): diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py index 14c30d73b..dba3abc93 100644 --- a/openlp/plugins/alerts/forms/__init__.py +++ b/openlp/plugins/alerts/forms/__init__.py @@ -25,4 +25,3 @@ from alertstab import AlertsTab from alertform import AlertForm -from alerteditform import AlertEditForm diff --git a/openlp/plugins/alerts/forms/alerteditdialog.py b/openlp/plugins/alerts/forms/alerteditdialog.py deleted file mode 100644 index 6cf4769ef..000000000 --- a/openlp/plugins/alerts/forms/alerteditdialog.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'alerteditdialog.ui' -# -# Created: Sun Feb 14 16:45:10 2010 -# by: PyQt4 UI code generator 4.6.2 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -class Ui_AlertEditDialog(object): - def setupUi(self, AlertEditDialog): - AlertEditDialog.setObjectName(u'AlertEditDialog') - AlertEditDialog.resize(400, 300) - self.buttonBox = QtGui.QDialogButtonBox(AlertEditDialog) - self.buttonBox.setGeometry(QtCore.QRect(220, 270, 173, 27)) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel) - self.buttonBox.setObjectName(u'buttonBox') - self.layoutWidget = QtGui.QWidget(AlertEditDialog) - self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 361, 251)) - self.layoutWidget.setObjectName(u'layoutWidget') - self.verticalLayout_2 = QtGui.QVBoxLayout(self.layoutWidget) - self.verticalLayout_2.setObjectName(u'verticalLayout_2') - self.horizontalLayout_2 = QtGui.QHBoxLayout() - self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') - self.AlertLineEdit = QtGui.QLineEdit(self.layoutWidget) - self.AlertLineEdit.setObjectName(u'AlertLineEdit') - self.horizontalLayout_2.addWidget(self.AlertLineEdit) - self.verticalLayout_2.addLayout(self.horizontalLayout_2) - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName(u'horizontalLayout') - self.AlertListWidget = QtGui.QListWidget(self.layoutWidget) - self.AlertListWidget.setAlternatingRowColors(True) - self.AlertListWidget.setObjectName(u'AlertListWidget') - self.horizontalLayout.addWidget(self.AlertListWidget) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(u'verticalLayout') - self.SaveButton = QtGui.QPushButton(self.layoutWidget) - self.SaveButton.setObjectName(u'SaveButton') - self.verticalLayout.addWidget(self.SaveButton) - self.ClearButton = QtGui.QPushButton(self.layoutWidget) - self.ClearButton.setObjectName(u'ClearButton') - self.verticalLayout.addWidget(self.ClearButton) - self.AddButton = QtGui.QPushButton(self.layoutWidget) - self.AddButton.setObjectName(u'AddButton') - self.verticalLayout.addWidget(self.AddButton) - self.EditButton = QtGui.QPushButton(self.layoutWidget) - self.EditButton.setObjectName(u'EditButton') - self.verticalLayout.addWidget(self.EditButton) - self.DeleteButton = QtGui.QPushButton(self.layoutWidget) - self.DeleteButton.setObjectName(u'DeleteButton') - self.verticalLayout.addWidget(self.DeleteButton) - self.horizontalLayout.addLayout(self.verticalLayout) - self.verticalLayout_2.addLayout(self.horizontalLayout) - - self.retranslateUi(AlertEditDialog) - QtCore.QMetaObject.connectSlotsByName(AlertEditDialog) - - def retranslateUi(self, AlertEditDialog): - AlertEditDialog.setWindowTitle(self.trUtf8('Maintain Alerts')) - self.SaveButton.setText(self.trUtf8('Save')) - self.ClearButton.setText(self.trUtf8('Clear')) - self.AddButton.setText(self.trUtf8('Add')) - self.EditButton.setText(self.trUtf8('Edit')) - self.DeleteButton.setText(self.trUtf8('Delete')) - diff --git a/openlp/plugins/alerts/forms/alerteditform.py b/openlp/plugins/alerts/forms/alerteditform.py deleted file mode 100644 index a88eff4f3..000000000 --- a/openlp/plugins/alerts/forms/alerteditform.py +++ /dev/null @@ -1,166 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -from PyQt4 import QtGui, QtCore -from openlp.plugins.alerts.lib.models import AlertItem - -from alerteditdialog import Ui_AlertEditDialog - -class AlertEditForm(QtGui.QDialog, Ui_AlertEditDialog): - """ - Class documentation goes here. - """ - def __init__(self, manager, parent): - """ - Constructor - """ - self.manager = manager - self.parent = parent - QtGui.QDialog.__init__(self, None) - self.setupUi(self) - QtCore.QObject.connect(self.DeleteButton, - QtCore.SIGNAL(u'clicked()'), - self.onDeleteClick) - QtCore.QObject.connect(self.ClearButton, - QtCore.SIGNAL(u'clicked()'), - self.onClearClick) - QtCore.QObject.connect(self.EditButton, - QtCore.SIGNAL(u'clicked()'), - self.onEditClick) - QtCore.QObject.connect(self.AddButton, - QtCore.SIGNAL(u'clicked()'), - self.onAddClick) - QtCore.QObject.connect(self.SaveButton, - QtCore.SIGNAL(u'clicked()'), - self.onSaveClick) - QtCore.QObject.connect(self.buttonBox, - QtCore.SIGNAL(u'rejected()'), self.close) - QtCore.QObject.connect(self.AlertLineEdit, - QtCore.SIGNAL(u'textChanged(const QString&)'), - self.onTextChanged) - QtCore.QObject.connect(self.AlertListWidget, - QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), - self.onItemSelected) - QtCore.QObject.connect(self.AlertListWidget, - QtCore.SIGNAL(u'clicked(QModelIndex)'), - self.onItemSelected) - - def loadList(self): - self.AlertListWidget.clear() - alerts = self.manager.get_all_alerts() - for alert in alerts: - item_name = QtGui.QListWidgetItem(alert.text) - item_name.setData( - QtCore.Qt.UserRole, QtCore.QVariant(alert.id)) - self.AlertListWidget.addItem(item_name) - self.AddButton.setEnabled(True) - self.ClearButton.setEnabled(False) - self.SaveButton.setEnabled(False) - self.EditButton.setEnabled(False) - self.DeleteButton.setEnabled(False) - - def onItemSelected(self): - if self.AlertLineEdit.text(): - QtGui.QMessageBox.information(self, - self.trUtf8('Item selected to Edit'), - self.trUtf8('Please save or clear selected item')) - else: - self.EditButton.setEnabled(True) - self.DeleteButton.setEnabled(True) - - def onDeleteClick(self): - item = self.AlertListWidget.currentItem() - if item: - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.manager.delete_alert(item_id) - row = self.AlertListWidget.row(item) - self.AlertListWidget.takeItem(row) - self.AddButton.setEnabled(True) - self.SaveButton.setEnabled(False) - self.DeleteButton.setEnabled(False) - self.EditButton.setEnabled(False) - - def onEditClick(self): - item = self.AlertListWidget.currentItem() - if item: - self.item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.AlertLineEdit.setText(unicode(item.text())) - self.AddButton.setEnabled(True) - self.ClearButton.setEnabled(True) - self.SaveButton.setEnabled(True) - self.DeleteButton.setEnabled(True) - self.EditButton.setEnabled(False) - - def onClearClick(self): - self.AlertLineEdit.setText(u'') - self.AddButton.setEnabled(False) - self.ClearButton.setEnabled(True) - self.SaveButton.setEnabled(False) - self.DeleteButton.setEnabled(False) - self.EditButton.setEnabled(False) - - def onAddClick(self): - if len(self.AlertLineEdit.text()) == 0: - QtGui.QMessageBox.information(self, - self.trUtf8('Item selected to Add'), - self.trUtf8('Missing data')) - else: - alert = AlertItem() - alert.text = unicode(self.AlertLineEdit.text()) - self.manager.save_alert(alert) - self.onClearClick() - self.loadList() - - def onSaveClick(self): - alert = self.manager.get_alert(self.item_id) - alert.text = unicode(self.AlertLineEdit.text()) - self.manager.save_alert(alert) - self.onClearClick() - self.loadList() - - def onTextChanged(self): - self.AddButton.setEnabled(True) - - def onDoubleClick(self): - """ - List item has been double clicked to display it - """ - items = self.AlertListWidget.selectedIndexes() - for item in items: - bitem = self.AlertListWidget.item(item.row()) - self.triggerAlert(bitem.text()) - - def onSingleClick(self): - """ - List item has been single clicked to add it to - the edit field so it can be changed. - """ - items = self.AlertListWidget.selectedIndexes() - for item in items: - bitem = self.AlertListWidget.item(item.row()) - self.AlertEntryEditItem.setText(bitem.text()) - - def triggerAlert(self, text): - self.parent.alertsmanager.displayAlert(text) From a81c39ca659e8692b1e25e3f04beed23c16690ad Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 16 Mar 2010 21:13:23 +0000 Subject: [PATCH 024/150] Import fix --- openlp/plugins/bibles/lib/manager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 90401a3e1..10ee7b9f9 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -24,7 +24,6 @@ ############################################################################### import logging -import os from common import parse_reference from opensong import OpenSongBible From 13608bedae2c2a1ee891d2a4ec8d52da38f34ac5 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 17 Mar 2010 19:04:39 +0000 Subject: [PATCH 025/150] Alter form removal complete --- openlp/plugins/alerts/alertsplugin.py | 4 - openlp/plugins/alerts/forms/alertstab.py | 156 +++++++++++++++++++---- 2 files changed, 134 insertions(+), 26 deletions(-) diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 4fade5f85..0416167c6 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -89,10 +89,6 @@ class alertsPlugin(Plugin): self.alertForm.loadList() self.alertForm.exec_() - def onAlertsEdit(self): - self.alertEditForm.loadList() - self.alertEditForm.exec_() - def about(self): about_text = self.trUtf8('Alerts Plugin
This plugin ' 'controls the displaying of alerts on the presentations screen') diff --git a/openlp/plugins/alerts/forms/alertstab.py b/openlp/plugins/alerts/forms/alertstab.py index c842c2e20..4651b14c5 100644 --- a/openlp/plugins/alerts/forms/alertstab.py +++ b/openlp/plugins/alerts/forms/alertstab.py @@ -26,6 +26,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import SettingsTab, str_to_bool +from openlp.plugins.alerts.lib.models import AlertItem class AlertsTab(SettingsTab): """ @@ -33,6 +34,7 @@ class AlertsTab(SettingsTab): """ def __init__(self, parent, section=None): self.parent = parent + self.manager = parent.manager SettingsTab.__init__(self, parent.name, section) def setupUi(self): @@ -149,22 +151,6 @@ class AlertsTab(SettingsTab): QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.HistoryLayout.addItem(self.HistorySpacer) self.FontLayout.addWidget(self.HistoryWidget) - self.HistoryEditWidget = QtGui.QWidget(self.FontGroupBox) - self.HistoryEditWidget.setObjectName(u'HistoryEditWidget') - self.HistoryEditLayout = QtGui.QHBoxLayout(self.HistoryEditWidget) - self.HistoryEditLayout.setSpacing(8) - self.HistoryEditLayout.setMargin(0) - self.HistoryEditLayout.setObjectName(u'HistoryEditLayout') - self.HistoryEditLabel = QtGui.QLabel(self.HistoryEditWidget) - self.HistoryEditLabel.setObjectName(u'HistoryEditLabel') - self.HistoryEditLayout.addWidget(self.HistoryEditLabel) - self.HistoryEditPushButton = QtGui.QPushButton(self.HistoryEditWidget) - self.HistoryEditPushButton.setObjectName(u'HistoryEditPushButton') - self.HistoryEditLayout.addWidget(self.HistoryEditPushButton) - self.HistoryEditSpacer = QtGui.QSpacerItem(147, 20, - QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.HistoryEditLayout.addItem(self.HistoryEditSpacer) - self.FontLayout.addWidget(self.HistoryEditWidget) self.SlideLeftLayout.addWidget(self.FontGroupBox) self.SlideLeftSpacer = QtGui.QSpacerItem(20, 94, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) @@ -201,6 +187,43 @@ class AlertsTab(SettingsTab): self.SlideRightSpacer = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.SlideRightLayout.addItem(self.SlideRightSpacer) + self.layoutWidget = QtGui.QWidget(self) + self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 361, 251)) + self.layoutWidget.setObjectName(u'layoutWidget') + self.verticalLayout_2 = QtGui.QVBoxLayout(self.layoutWidget) + self.verticalLayout_2.setObjectName(u'verticalLayout_2') + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') + self.AlertLineEdit = QtGui.QLineEdit(self.layoutWidget) + self.AlertLineEdit.setObjectName(u'AlertLineEdit') + self.horizontalLayout_2.addWidget(self.AlertLineEdit) + self.verticalLayout_2.addLayout(self.horizontalLayout_2) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(u'horizontalLayout') + self.AlertListWidget = QtGui.QListWidget(self.layoutWidget) + self.AlertListWidget.setAlternatingRowColors(True) + self.AlertListWidget.setObjectName(u'AlertListWidget') + self.horizontalLayout.addWidget(self.AlertListWidget) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName(u'verticalLayout') + self.SaveButton = QtGui.QPushButton(self.layoutWidget) + self.SaveButton.setObjectName(u'SaveButton') + self.verticalLayout.addWidget(self.SaveButton) + self.ClearButton = QtGui.QPushButton(self.layoutWidget) + self.ClearButton.setObjectName(u'ClearButton') + self.verticalLayout.addWidget(self.ClearButton) + self.AddButton = QtGui.QPushButton(self.layoutWidget) + self.AddButton.setObjectName(u'AddButton') + self.verticalLayout.addWidget(self.AddButton) + self.EditButton = QtGui.QPushButton(self.layoutWidget) + self.EditButton.setObjectName(u'EditButton') + self.verticalLayout.addWidget(self.EditButton) + self.DeleteButton = QtGui.QPushButton(self.layoutWidget) + self.DeleteButton.setObjectName(u'DeleteButton') + self.verticalLayout.addWidget(self.DeleteButton) + self.horizontalLayout.addLayout(self.verticalLayout) + self.verticalLayout_2.addLayout(self.horizontalLayout) + self.SlideRightLayout.addWidget(self.layoutWidget) self.AlertsLayout.addWidget(self.AlertRightColumn) # Signals and slots QtCore.QObject.connect(self.HistoryCheckBox, @@ -210,8 +233,6 @@ class AlertsTab(SettingsTab): QtCore.SIGNAL(u'pressed()'), self.onBackgroundColorButtonClicked) QtCore.QObject.connect(self.FontColorButton, QtCore.SIGNAL(u'pressed()'), self.onFontColorButtonClicked) - QtCore.QObject.connect(self.HistoryEditPushButton, - QtCore.SIGNAL(u'pressed()'), self.onHistoryEditButtonClicked) QtCore.QObject.connect(self.FontComboBox, QtCore.SIGNAL(u'activated(int)'), self.onFontComboBoxClicked) QtCore.QObject.connect(self.LocationComboBox, @@ -220,6 +241,27 @@ class AlertsTab(SettingsTab): QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged) QtCore.QObject.connect(self.FontSizeSpinBox, QtCore.SIGNAL(u'valueChanged(int)'), self.onFontSizeSpinBoxChanged) + QtCore.QObject.connect(self.DeleteButton, + QtCore.SIGNAL(u'clicked()'), + self.onDeleteClick) + QtCore.QObject.connect(self.ClearButton, + QtCore.SIGNAL(u'clicked()'), + self.onClearClick) + QtCore.QObject.connect(self.EditButton, + QtCore.SIGNAL(u'clicked()'), + self.onEditClick) + QtCore.QObject.connect(self.AddButton, + QtCore.SIGNAL(u'clicked()'), + self.onAddClick) + QtCore.QObject.connect(self.SaveButton, + QtCore.SIGNAL(u'clicked()'), + self.onSaveClick) + QtCore.QObject.connect(self.AlertListWidget, + QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), + self.onItemSelected) + QtCore.QObject.connect(self.AlertListWidget, + QtCore.SIGNAL(u'clicked(QModelIndex)'), + self.onItemSelected) def retranslateUi(self): self.FontGroupBox.setTitle(self.trUtf8('Font')) @@ -232,11 +274,15 @@ class AlertsTab(SettingsTab): self.TimeoutSpinBox.setSuffix(self.trUtf8('s')) self.LocationLabel.setText(self.trUtf8('Location:')) self.HistoryLabel.setText(self.trUtf8('Keep History:')) - self.HistoryEditLabel.setText(self.trUtf8('Edit History:')) self.PreviewGroupBox.setTitle(self.trUtf8('Preview')) self.FontPreview.setText(self.trUtf8('openlp.org')) self.LocationComboBox.setItemText(0, self.trUtf8('Top')) self.LocationComboBox.setItemText(1, self.trUtf8('Bottom')) + self.SaveButton.setText(self.trUtf8('Save')) + self.ClearButton.setText(self.trUtf8('Clear')) + self.AddButton.setText(self.trUtf8('Add')) + self.EditButton.setText(self.trUtf8('Edit')) + self.DeleteButton.setText(self.trUtf8('Delete')) def onBackgroundColorButtonClicked(self): self.bg_color = QtGui.QColorDialog.getColor( @@ -271,9 +317,6 @@ class AlertsTab(SettingsTab): self.font_size = self.FontSizeSpinBox.value() self.updateDisplay() - def onHistoryEditButtonClicked(self): - self.parent.onAlertsEdit() - def load(self): self.timeout = int(self.config.get_config(u'timeout', 5)) self.font_color = unicode( @@ -298,6 +341,75 @@ class AlertsTab(SettingsTab): font.setFamily(self.font_face) self.FontComboBox.setCurrentFont(font) self.updateDisplay() + self.loadList() + + def loadList(self): + self.AlertListWidget.clear() + alerts = self.manager.get_all_alerts() + for alert in alerts: + item_name = QtGui.QListWidgetItem(alert.text) + item_name.setData( + QtCore.Qt.UserRole, QtCore.QVariant(alert.id)) + self.AlertListWidget.addItem(item_name) + self.AddButton.setEnabled(True) + self.ClearButton.setEnabled(False) + self.SaveButton.setEnabled(False) + self.EditButton.setEnabled(False) + self.DeleteButton.setEnabled(False) + + def onItemSelected(self): + self.EditButton.setEnabled(True) + self.DeleteButton.setEnabled(True) + + def onDeleteClick(self): + item = self.AlertListWidget.currentItem() + if item: + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + self.parent.manager.delete_alert(item_id) + row = self.AlertListWidget.row(item) + self.AlertListWidget.takeItem(row) + self.AddButton.setEnabled(True) + self.SaveButton.setEnabled(False) + self.DeleteButton.setEnabled(False) + self.EditButton.setEnabled(False) + + def onEditClick(self): + item = self.AlertListWidget.currentItem() + if item: + self.item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + self.AlertLineEdit.setText(unicode(item.text())) + self.AddButton.setEnabled(True) + self.ClearButton.setEnabled(True) + self.SaveButton.setEnabled(True) + self.DeleteButton.setEnabled(True) + self.EditButton.setEnabled(False) + + def onClearClick(self): + self.AlertLineEdit.setText(u'') + self.AddButton.setEnabled(False) + self.ClearButton.setEnabled(True) + self.SaveButton.setEnabled(False) + self.DeleteButton.setEnabled(False) + self.EditButton.setEnabled(False) + + def onAddClick(self): + if len(self.AlertLineEdit.text()) == 0: + QtGui.QMessageBox.information(self, + self.trUtf8('Item selected to Add'), + self.trUtf8('Missing data')) + else: + alert = AlertItem() + alert.text = unicode(self.AlertLineEdit.text()) + self.manager.save_alert(alert) + self.onClearClick() + self.loadList() + + def onSaveClick(self): + alert = self.manager.get_alert(self.item_id) + alert.text = unicode(self.AlertLineEdit.text()) + self.manager.save_alert(alert) + self.onClearClick() + self.loadList() def save(self): self.font_face = self.FontComboBox.currentFont().family() From a71505a10c4fbde35c7c5c5fa13a0d785df2dc4f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 17 Mar 2010 19:09:09 +0000 Subject: [PATCH 026/150] Bible can add verses to service item --- openlp/plugins/bibles/lib/mediaitem.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 30403e69d..861289682 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -58,6 +58,7 @@ class BibleMediaItem(MediaManagerItem): self.ListViewWithDnD_class = BibleListView self.servicePath = None self.lastReference = [] + self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) # place to store the search results self.search_results = {} From 72d2d8f83d05c41b95e06df82a40510ef9609c66 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 17 Mar 2010 21:08:18 +0000 Subject: [PATCH 027/150] Clean up service item form names --- openlp/core/ui/__init__.py | 3 +- openlp/core/ui/serviceitemeditdialog.py | 53 +++++++++++++ openlp/core/ui/serviceitemeditform.py | 44 +++++++++++ openlp/core/ui/servicemanager.py | 10 +-- ...viceitemdialog.py => servicenotedialog.py} | 0 ...{serviceitemform.py => servicenoteform.py} | 2 +- resources/forms/serviceitemeditdialog.ui | 74 +++++++++++++++++++ ...viceitemdialog.ui => servicenotedialog.ui} | 0 8 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 openlp/core/ui/serviceitemeditdialog.py create mode 100644 openlp/core/ui/serviceitemeditform.py rename openlp/core/ui/{serviceitemdialog.py => servicenotedialog.py} (100%) rename openlp/core/ui/{serviceitemform.py => servicenoteform.py} (97%) create mode 100644 resources/forms/serviceitemeditdialog.ui rename resources/forms/{serviceitemdialog.ui => servicenotedialog.ui} (100%) diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index c2f571c3b..98d85089d 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -23,7 +23,8 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from serviceitemform import ServiceItemNoteForm +from servicenoteform import ServiceNoteForm +from serviceitemeditform import ServiceItemEditForm from screen import ScreenList from maindisplay import MainDisplay from amendthemeform import AmendThemeForm diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py new file mode 100644 index 000000000..f8d643a94 --- /dev/null +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'serviceitemeditdialog.ui' +# +# Created: Wed Mar 17 20:55:46 2010 +# by: PyQt4 UI code generator 4.7 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +class Ui_ServiceItemEditDialog(object): + def setupUi(self, ServiceItemEditDialog): + ServiceItemEditDialog.setObjectName("ServiceItemEditDialog") + ServiceItemEditDialog.resize(400, 287) + self.widget = QtGui.QWidget(ServiceItemEditDialog) + self.widget.setGeometry(QtCore.QRect(20, 20, 351, 241)) + self.widget.setObjectName("widget") + self.verticalLayout_2 = QtGui.QVBoxLayout(self.widget) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.listWidget = QtGui.QListWidget(self.widget) + self.listWidget.setAlternatingRowColors(True) + self.listWidget.setObjectName("listWidget") + self.horizontalLayout.addWidget(self.listWidget) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.upButton = QtGui.QPushButton(self.widget) + self.upButton.setObjectName("upButton") + self.verticalLayout.addWidget(self.upButton) + self.downButton = QtGui.QPushButton(self.widget) + self.downButton.setObjectName("downButton") + self.verticalLayout.addWidget(self.downButton) + self.deleteButton = QtGui.QPushButton(self.widget) + self.deleteButton.setObjectName("deleteButton") + self.verticalLayout.addWidget(self.deleteButton) + self.horizontalLayout.addLayout(self.verticalLayout) + self.verticalLayout_2.addLayout(self.horizontalLayout) + self.buttonBox = QtGui.QDialogButtonBox(self.widget) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName("buttonBox") + self.verticalLayout_2.addWidget(self.buttonBox) + + self.retranslateUi(ServiceItemEditDialog) + QtCore.QMetaObject.connectSlotsByName(ServiceItemEditDialog) + + def retranslateUi(self, ServiceItemEditDialog): + ServiceItemEditDialog.setWindowTitle(QtGui.QApplication.translate("ServiceItemEditDialog", "Service Item Maintenance", None, QtGui.QApplication.UnicodeUTF8)) + self.upButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Up", None, QtGui.QApplication.UnicodeUTF8)) + self.downButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Down", None, QtGui.QApplication.UnicodeUTF8)) + self.deleteButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8)) + diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py new file mode 100644 index 000000000..f251140a5 --- /dev/null +++ b/openlp/core/ui/serviceitemeditform.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +from PyQt4 import QtCore, QtGui +from serviceitemeditdialog import Ui_ServiceItemEditDialog + +class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): + """ + This is the form that is used to edit the verses of the song. + """ + def __init__(self, parent=None): + """ + Constructor + """ + QtGui.QDialog.__init__(self, parent) + self.setupUi(self) + QtCore.QObject.connect(self.buttonBox, + QtCore.SIGNAL(u'accepted()'), + self.accept) + QtCore.QObject.connect(self.buttonBox, + QtCore.SIGNAL(u'rejected()'), + self.reject) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index fff903648..9c429e88c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -34,7 +34,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \ contextMenuAction, Receiver, str_to_bool, build_icon -from openlp.core.ui import ServiceItemNoteForm +from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm class ServiceManagerList(QtGui.QTreeWidget): @@ -106,7 +106,7 @@ class ServiceManager(QtGui.QWidget): #Indicates if remoteTriggering is active. If it is the next addServiceItem call #will replace the currently selected one. self.remoteEditTriggered = False - self.serviceItemNoteForm = ServiceItemNoteForm() + self.serviceNoteForm = ServiceNoteForm() #start with the layout self.Layout = QtGui.QVBoxLayout(self) self.Layout.setSpacing(0) @@ -257,11 +257,11 @@ class ServiceManager(QtGui.QWidget): def onServiceItemNoteForm(self): item, count = self.findServiceItem() - self.serviceItemNoteForm.textEdit.setPlainText( + self.serviceNoteForm.textEdit.setPlainText( self.serviceItems[item][u'service_item'].notes) - if self.serviceItemNoteForm.exec_(): + if self.serviceNoteForm.exec_(): self.serviceItems[item][u'service_item'].notes = \ - self.serviceItemNoteForm.textEdit.toPlainText() + self.serviceNoteForm.textEdit.toPlainText() self.repaintServiceList(item, 0) def nextItem(self): diff --git a/openlp/core/ui/serviceitemdialog.py b/openlp/core/ui/servicenotedialog.py similarity index 100% rename from openlp/core/ui/serviceitemdialog.py rename to openlp/core/ui/servicenotedialog.py diff --git a/openlp/core/ui/serviceitemform.py b/openlp/core/ui/servicenoteform.py similarity index 97% rename from openlp/core/ui/serviceitemform.py rename to openlp/core/ui/servicenoteform.py index 43011ead8..9ec4c9696 100644 --- a/openlp/core/ui/serviceitemform.py +++ b/openlp/core/ui/servicenoteform.py @@ -26,7 +26,7 @@ from PyQt4 import QtCore, QtGui from serviceitemdialog import Ui_ServiceNoteEdit -class ServiceItemNoteForm(QtGui.QDialog, Ui_ServiceNoteEdit): +class ServiceNoteForm(QtGui.QDialog, Ui_ServiceNoteEdit): """ This is the form that is used to edit the verses of the song. """ diff --git a/resources/forms/serviceitemeditdialog.ui b/resources/forms/serviceitemeditdialog.ui new file mode 100644 index 000000000..7e2be8087 --- /dev/null +++ b/resources/forms/serviceitemeditdialog.ui @@ -0,0 +1,74 @@ + + + ServiceItemEditDialog + + + + 0 + 0 + 400 + 287 + + + + Service Item Maintenance + + + + + 20 + 20 + 351 + 241 + + + + + + + + + true + + + + + + + + + Up + + + + + + + Down + + + + + + + Delete + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + + + + + + + diff --git a/resources/forms/serviceitemdialog.ui b/resources/forms/servicenotedialog.ui similarity index 100% rename from resources/forms/serviceitemdialog.ui rename to resources/forms/servicenotedialog.ui From ff8145cef120ea922cce01d9aa57547c69d88f06 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 17 Mar 2010 21:25:35 +0000 Subject: [PATCH 028/150] Add in maintenance page to service manager --- openlp/core/ui/servicemanager.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9c429e88c..386d7af8d 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -107,6 +107,7 @@ class ServiceManager(QtGui.QWidget): #will replace the currently selected one. self.remoteEditTriggered = False self.serviceNoteForm = ServiceNoteForm() + self.serviceItemEditForm = ServiceItemEditForm() #start with the layout self.Layout = QtGui.QVBoxLayout(self) self.Layout.setSpacing(0) @@ -243,6 +244,8 @@ class ServiceManager(QtGui.QWidget): action = self.menu.exec_(self.ServiceManagerList.mapToGlobal(point)) if action == self.editAction: self.remoteEdit() + if action == self.maintainAction: + self.onServiceItemEditForm() if action == self.deleteAction: self.onDeleteFromService() if action == self.notesAction: @@ -264,6 +267,12 @@ class ServiceManager(QtGui.QWidget): self.serviceNoteForm.textEdit.toPlainText() self.repaintServiceList(item, 0) + def onServiceItemEditForm(self): + item, count = self.findServiceItem() + if self.serviceItemEditForm.exec_(): + pass + + def nextItem(self): """ Called by the SlideController to select the From fea160c5c4a0b89ab6f10f5556a5e14d3965ca7b Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 18 Mar 2010 15:43:27 +0000 Subject: [PATCH 029/150] AppLocation.PluginsDir changes --- openlp/core/utils/__init__.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 5d97dd8f2..61c38af87 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -43,7 +43,7 @@ class AppLocation(object): @staticmethod def get_directory(dir_type): if dir_type == AppLocation.AppDir: - return os.path.abspath(os.path.split(sys.argv[0])[0]) + return os.path.abspath(os.path.split(sys.argv[0])[0]) elif dir_type == AppLocation.ConfigDir: if sys.platform == u'win32': path = os.path.join(os.getenv(u'APPDATA'), u'openlp') @@ -71,11 +71,18 @@ class AppLocation(object): path = os.path.join(os.getenv(u'HOME'), u'.openlp', u'data') return path elif dir_type == AppLocation.PluginsDir: + plugin_path = None app_path = os.path.abspath(os.path.split(sys.argv[0])[0]) - if hasattr(sys, u'frozen') and sys.frozen == 1: - return os.path.join(app_path, u'plugins') + if sys.platform == u'win32': + if hasattr(sys, u'frozen') and sys.frozen == 1: + plugin_path = os.path.join(app_path, u'plugins') + else: + plugin_path = os.path.join(app_path, u'openlp', u'plugins') + elif sys.platform == u'darwin': + plugin_path = os.path.join(app_path, u'plugins') else: - return os.path.join(app_path, u'openlp', u'plugins') + plugin_path = os.path.join(openlp.__file__, u'plugins') + return plugin_path def check_latest_version(config, current_version): From 5d2fe81d712cfe34c2d043b5f66d2bf6f7ffe36e Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 18 Mar 2010 15:52:37 +0000 Subject: [PATCH 030/150] Fix for AppLocation changes --- openlp/core/utils/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 61c38af87..9cd539169 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -81,7 +81,8 @@ class AppLocation(object): elif sys.platform == u'darwin': plugin_path = os.path.join(app_path, u'plugins') else: - plugin_path = os.path.join(openlp.__file__, u'plugins') + plugin_path = os.path.join( + os.path.split(openlp.__file__)[0], u'plugins') return plugin_path From de767459bd4f4594498bbcf18218e46020db723b Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Thu, 18 Mar 2010 16:25:25 +0000 Subject: [PATCH 031/150] Fix 2 for AppLocation changes --- openlp/core/utils/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 9cd539169..3ffb9ee8d 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -23,6 +23,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +import openlp import os import sys import logging From 6414330b2c810a827a882bf64e0f4f771b4653d6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 18 Mar 2010 23:36:30 +0200 Subject: [PATCH 032/150] Reworked the BibleGateway Bibles. Changed some code to be standards compliant. --- openlp/core/utils/__init__.py | 3 +- openlp/plugins/bibles/lib/http.py | 130 +++++++++++++++++++++--------- 2 files changed, 93 insertions(+), 40 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 3ffb9ee8d..d29ff17b4 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -23,13 +23,14 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -import openlp import os import sys import logging import urllib2 from datetime import datetime +import openlp + log = logging.getLogger(__name__) class AppLocation(object): diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 5a170d84c..ca75fb16b 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -28,7 +28,7 @@ import urllib2 import os import sqlite3 -from BeautifulSoup import BeautifulSoup +from BeautifulSoup import BeautifulSoup, Tag, NavigableString from openlp.core.lib import Receiver from openlp.core.utils import AppLocation @@ -146,44 +146,96 @@ class BGExtract(BibleCommon): urlstring = u'http://www.biblegateway.com/passage/?search=%s+%s' \ u'&version=%s' % (bookname, chapter, version) log.debug(u'BibleGateway url = %s' % urlstring) - xml_string = self._get_web_text(urlstring, self.proxyurl) - verseSearch = u' -1: - # clear out string - verseText = u'' - versePos = xml_string.find(u'', versePos) + 6 - i = xml_string.find(verseSearch, versePos + 1) - # Not sure if this is needed now - if i == -1: - i = xml_string.find(u' 0 and j < i: - i = j - verseText = xml_string[versePos + 7 : i ] - # store the verse - bible[verse] = self._clean_text(verseText) - versePos = -1 - else: - verseText = xml_string[versePos: i] - start_tag = verseText.find(verseFootnote) - while start_tag > -1: - end_tag = verseText.find(u'') - verseText = verseText[:start_tag] + verseText[end_tag + 6:len(verseText)] - start_tag = verseText.find(verseFootnote) - # Chop off verse and start again - xml_string = xml_string[i:] - #look for the next verse - versePos = xml_string.find(verseSearch) - # store the verse - bible[verse] = self._clean_text(verseText) - verse += 1 - return SearchResults(bookname, chapter, bible) + + page = urllib2.urlopen(urlstring) + soup = BeautifulSoup(page) + verses = soup.find(u'div', u'result-text-style-normal') + + verse_number = 0 + verse_list = {0: u''} + + for verse in verses: + if isinstance(verse, Tag) and verse.name == u'div' and filter(lambda a: a[0] == u'class', verse.attrs)[0][1] == u'footnotes': + break + if isinstance(verse, Tag) and verse.name == u'sup' and filter(lambda a: a[0] == u'class', verse.attrs)[0][1] != u'versenum': + continue + if isinstance(verse, Tag) and verse.name == u'p' and not verse.contents: + continue + if isinstance(verse, Tag) and (verse.name == u'p' or verse.name == u'font') and verse.contents: + for item in verse.contents: + if isinstance(item, Tag) and (item.name == u'h4' or item.name == u'h5'): + continue + if isinstance(item, Tag) and item.name == u'sup' and filter(lambda a: a[0] == u'class', item.attrs)[0][1] != u'versenum': + continue + if isinstance(item, Tag) and item.name == u'p' and not item.contents: + continue + if isinstance(item, Tag) and item.name == u'sup': + verse_number = int(str(item.contents[0])) + verse_list[verse_number] = u'' + continue + if isinstance(item, Tag) and item.name == u'font': + for subitem in item.contents: + if isinstance(subitem, Tag) and subitem.name == u'sup' and filter(lambda a: a[0] == u'class', subitem.attrs)[0][1] != u'versenum': + continue + if isinstance(subitem, Tag) and subitem.name == u'p' and not subitem.contents: + continue + if isinstance(subitem, Tag) and subitem.name == u'sup': + verse_number = int(str(subitem.contents[0])) + verse_list[verse_number] = u'' + continue + if isinstance(subitem, NavigableString): + verse_list[verse_number] = verse_list[verse_number] + subitem.replace(u' ', u' ') + continue + if isinstance(item, NavigableString): + verse_list[verse_number] = verse_list[verse_number] + item.replace(u' ', u' ') + continue + if isinstance(verse, Tag) and verse.name == u'sup': + verse_number = int(str(verse.contents[0])) + verse_list[verse_number] = u'' + continue + if isinstance(verse, NavigableString): + verse_list[verse_number] = verse_list[verse_number] + verse.replace(u' ', u' ') + + del verse_list[0] + +# xml_string = self._get_web_text(urlstring, self.proxyurl) +# verseSearch = u' -1: +# # clear out string +# verseText = u'' +# versePos = xml_string.find(u'', versePos) + 6 +# i = xml_string.find(verseSearch, versePos + 1) +# # Not sure if this is needed now +# if i == -1: +# i = xml_string.find(u' 0 and j < i: +# i = j +# verseText = xml_string[versePos + 7 : i ] +# # store the verse +# bible[verse] = self._clean_text(verseText) +# versePos = -1 +# else: +# verseText = xml_string[versePos: i] +# start_tag = verseText.find(verseFootnote) +# while start_tag > -1: +# end_tag = verseText.find(u'') +# verseText = verseText[:start_tag] + verseText[end_tag + 6:len(verseText)] +# start_tag = verseText.find(verseFootnote) +# # Chop off verse and start again +# xml_string = xml_string[i:] +# #look for the next verse +# versePos = xml_string.find(verseSearch) +# # store the verse +# bible[verse] = self._clean_text(verseText) +# verse += 1 + return SearchResults(bookname, chapter, verse_list) class CWExtract(BibleCommon): log.info(u'%s CWExtract loaded', __name__) From 44224b0c73adeed6eab6eb07c4e790720ceb0792 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 18 Mar 2010 21:50:20 +0000 Subject: [PATCH 033/150] Fix up maintenance dialog --- openlp/core/lib/serviceitem.py | 13 +++-- openlp/core/ui/serviceitemeditdialog.py | 28 +++++++-- openlp/core/ui/serviceitemeditform.py | 76 +++++++++++++++++++++++++ openlp/core/ui/servicemanager.py | 11 ++-- openlp/plugins/bibles/lib/mediaitem.py | 5 +- 5 files changed, 116 insertions(+), 17 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 9164f3235..09c5ac8b9 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -66,7 +66,6 @@ class ServiceItem(object): self.iconic_representation = None self.raw_footer = None self.theme = None - self.service_item_path = None self.service_item_type = None self.edit_enabled = False self.maintain_allowed = False @@ -157,9 +156,8 @@ class ServiceItem(object): The actual image file name. """ self.service_item_type = ServiceItemType.Image - self.service_item_path = path self._raw_frames.append( - {u'title': title, u'image': image}) + {u'title': title, u'image': image, u'path': path}) def add_from_text(self, title, raw_slide, verseTag=None): """ @@ -190,9 +188,8 @@ class ServiceItem(object): The command of/for the slide. """ self.service_item_type = ServiceItemType.Command - self.service_item_path = path self._raw_frames.append( - {u'title': file_name, u'image': image}) + {u'title': file_name, u'image': image, u'path': path}) def get_service_repr(self): """ @@ -209,7 +206,9 @@ class ServiceItem(object): u'type':self.service_item_type, u'audit':self.audit, u'notes':self.notes, - u'preview':self.autoPreviewAllowed + u'preview':self.autoPreviewAllowed, + u'edit':self.edit_enabled, + u'maintain':self.maintain_allowed } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -245,6 +244,8 @@ class ServiceItem(object): self.audit = header[u'audit'] self.autoPreviewAllowed = header[u'preview'] self.notes = header[u'notes'] + self.edit_enabled = header[u'edit'] + self.maintain_allowed = header[u'maintain'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index f8d643a94..b0ca3bf30 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -1,11 +1,27 @@ # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -# Form implementation generated from reading ui file 'serviceitemeditdialog.ui' -# -# Created: Wed Mar 17 20:55:46 2010 -# by: PyQt4 UI code generator 4.7 -# -# WARNING! All changes made in this file will be lost! +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### from PyQt4 import QtCore, QtGui diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index f251140a5..cbe530d80 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -36,9 +36,85 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) + self.itemList = [] + # enable drop + QtCore.QObject.connect(self.upButton, + QtCore.SIGNAL(u'clicked()'), + self.onItemUp) + QtCore.QObject.connect(self.downButton, + QtCore.SIGNAL(u'clicked()'), + self.onItemDown) + QtCore.QObject.connect(self.deleteButton, + QtCore.SIGNAL(u'clicked()'), + self.onItemDelete) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), self.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), self.reject) + + def setServiceItem(self, item): + self.item = item + self.itemList = [] + if self.item.is_image(): + self.data = True + for frame in self.item._raw_frames: + self.itemList.append(frame) + self.loadData() + + def getServiceItem(self): + if self.data: + self.item._raw_frames = [] + if self.item.is_image(): + for item in self.itemList: + self.item.add_from_image(item[u'path'], + item[u'title'], item[u'image']) + self.item.render() + return self.item + + def loadData(self): + self.listWidget.clear() + for frame in self.itemList: + item_name = QtGui.QListWidgetItem(frame[u'title']) + self.listWidget.addItem(item_name) + + def onItemDelete(self): + """ + Move the current ServiceItem up in the list + Note move up means move to top of area ie 0. + """ + items = self.listWidget.selectedItems() + for item in items: + row = self.listWidget.row(item) + if row > 0: + self.itemList.remove(self.itemList[row]) + self.loadData() + + def onItemUp(self): + """ + Move the current ServiceItem up in the list + Note move up means move to top of area ie 0. + """ + items = self.listWidget.selectedItems() + for item in items: + row = self.listWidget.row(item) + if row > 0: + temp = self.itemList[row] + self.itemList.remove(self.itemList[row]) + self.itemList.insert(row - 1, temp) + self.loadData() + + def onItemDown(self): + """ + Move the current ServiceItem down in the list + Note move down means move to bottom of area i.e len(). + """ + items = self.listWidget.selectedItems() + for item in items: + row = self.listWidget.row(item) + if row < len(self.itemList) and row is not -1: + temp = self.itemList[row] + self.itemList.remove(self.itemList[row]) + self.itemList.insert(row + 1, temp) + self.loadData() diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 386d7af8d..3225d9237 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -269,9 +269,12 @@ class ServiceManager(QtGui.QWidget): def onServiceItemEditForm(self): item, count = self.findServiceItem() + self.serviceItemEditForm.setServiceItem( + self.serviceItems[item][u'service_item']) if self.serviceItemEditForm.exec_(): - pass - + self.serviceItems[item][u'service_item'] = \ + self.serviceItemEditForm.getServiceItem() + self.repaintServiceList(item, 0) def nextItem(self): """ @@ -367,7 +370,7 @@ class ServiceManager(QtGui.QWidget): def onServiceUp(self): """ Move the current ServiceItem up in the list - Note move up means move to top of area ie 0. + Note move up means move to top of area ie 0. """ item, count = self.findServiceItem() if item > 0: @@ -513,7 +516,7 @@ class ServiceManager(QtGui.QWidget): if item[u'service_item'].uses_file(): for frame in item[u'service_item'].get_frames(): path_from = unicode(os.path.join( - item[u'service_item'].service_item_path, + frame[u'path'], frame[u'title'])) zip.write(path_from) file = open(servicefile, u'wb') diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 861289682..c2aaf0d64 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -492,7 +492,10 @@ class BibleMediaItem(MediaManagerItem): if self.parent.settings_tab.layout_style == 0: raw_slides.append(bible_text) bible_text = u'' - service_item.title = u'%s %s' % (book, verse_text) + if not service_item.title: + service_item.title = u'%s %s' % (book, verse_text) + elif service_item.title.find(self.trUtf8(u'etc')) == -1: + service_item.title = u'%s, %s' % (service_item.title, self.trUtf8(u'etc')) if len(self.parent.settings_tab.bible_theme) == 0: service_item.theme = None else: From 66b23f6a6fc7f1a29a9c2759a2678e2f19404b2a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 18 Mar 2010 22:06:51 +0000 Subject: [PATCH 034/150] Fix dialog --- openlp/core/ui/serviceitemeditdialog.py | 78 ++++++++++-------------- resources/forms/serviceitemeditdialog.ui | 33 +++++++--- 2 files changed, 55 insertions(+), 56 deletions(-) diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index b0ca3bf30..bb1666418 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -1,62 +1,48 @@ # -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### +# Form implementation generated from reading ui file 'serviceitemeditdialog.ui' +# +# Created: Thu Mar 18 22:05:22 2010 +# by: PyQt4 UI code generator 4.7 +# +# WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui class Ui_ServiceItemEditDialog(object): def setupUi(self, ServiceItemEditDialog): ServiceItemEditDialog.setObjectName("ServiceItemEditDialog") - ServiceItemEditDialog.resize(400, 287) - self.widget = QtGui.QWidget(ServiceItemEditDialog) - self.widget.setGeometry(QtCore.QRect(20, 20, 351, 241)) - self.widget.setObjectName("widget") - self.verticalLayout_2 = QtGui.QVBoxLayout(self.widget) - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") - self.listWidget = QtGui.QListWidget(self.widget) + ServiceItemEditDialog.resize(386, 272) + self.layoutWidget = QtGui.QWidget(ServiceItemEditDialog) + self.layoutWidget.setGeometry(QtCore.QRect(20, 20, 351, 241)) + self.layoutWidget.setObjectName("layoutWidget") + self.outerLayout = QtGui.QVBoxLayout(self.layoutWidget) + self.outerLayout.setObjectName("outerLayout") + self.topLayout = QtGui.QHBoxLayout() + self.topLayout.setObjectName("topLayout") + self.listWidget = QtGui.QListWidget(self.layoutWidget) self.listWidget.setAlternatingRowColors(True) self.listWidget.setObjectName("listWidget") - self.horizontalLayout.addWidget(self.listWidget) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName("verticalLayout") - self.upButton = QtGui.QPushButton(self.widget) + self.topLayout.addWidget(self.listWidget) + self.buttonLayout = QtGui.QVBoxLayout() + self.buttonLayout.setObjectName("buttonLayout") + self.upButton = QtGui.QPushButton(self.layoutWidget) self.upButton.setObjectName("upButton") - self.verticalLayout.addWidget(self.upButton) - self.downButton = QtGui.QPushButton(self.widget) - self.downButton.setObjectName("downButton") - self.verticalLayout.addWidget(self.downButton) - self.deleteButton = QtGui.QPushButton(self.widget) + self.buttonLayout.addWidget(self.upButton) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.buttonLayout.addItem(spacerItem) + self.deleteButton = QtGui.QPushButton(self.layoutWidget) self.deleteButton.setObjectName("deleteButton") - self.verticalLayout.addWidget(self.deleteButton) - self.horizontalLayout.addLayout(self.verticalLayout) - self.verticalLayout_2.addLayout(self.horizontalLayout) - self.buttonBox = QtGui.QDialogButtonBox(self.widget) + self.buttonLayout.addWidget(self.deleteButton) + self.downButton = QtGui.QPushButton(self.layoutWidget) + self.downButton.setObjectName("downButton") + self.buttonLayout.addWidget(self.downButton) + self.topLayout.addLayout(self.buttonLayout) + self.outerLayout.addLayout(self.topLayout) + self.buttonBox = QtGui.QDialogButtonBox(self.layoutWidget) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) self.buttonBox.setObjectName("buttonBox") - self.verticalLayout_2.addWidget(self.buttonBox) + self.outerLayout.addWidget(self.buttonBox) self.retranslateUi(ServiceItemEditDialog) QtCore.QMetaObject.connectSlotsByName(ServiceItemEditDialog) @@ -64,6 +50,6 @@ class Ui_ServiceItemEditDialog(object): def retranslateUi(self, ServiceItemEditDialog): ServiceItemEditDialog.setWindowTitle(QtGui.QApplication.translate("ServiceItemEditDialog", "Service Item Maintenance", None, QtGui.QApplication.UnicodeUTF8)) self.upButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Up", None, QtGui.QApplication.UnicodeUTF8)) - self.downButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Down", None, QtGui.QApplication.UnicodeUTF8)) self.deleteButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8)) + self.downButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Down", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/resources/forms/serviceitemeditdialog.ui b/resources/forms/serviceitemeditdialog.ui index 7e2be8087..24c86b966 100644 --- a/resources/forms/serviceitemeditdialog.ui +++ b/resources/forms/serviceitemeditdialog.ui @@ -6,14 +6,14 @@ 0 0 - 400 - 287 + 386 + 272 Service Item Maintenance - + 20 @@ -22,9 +22,9 @@ 241 - + - + @@ -33,7 +33,7 @@ - + @@ -42,11 +42,17 @@ - - - Down + + + Qt::Vertical - + + + 20 + 40 + + + @@ -55,6 +61,13 @@ + + + + Down + + + From 2a903d6a5b1840764bbb5963d0641996f3b5def6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 19 Mar 2010 09:00:41 +0200 Subject: [PATCH 035/150] Added some documentation and removed the commented code. --- openlp/plugins/bibles/lib/http.py | 50 +++++-------------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index ca75fb16b..55350c093 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -146,14 +146,16 @@ class BGExtract(BibleCommon): urlstring = u'http://www.biblegateway.com/passage/?search=%s+%s' \ u'&version=%s' % (bookname, chapter, version) log.debug(u'BibleGateway url = %s' % urlstring) - + # Let's get the page, and then open it in BeautifulSoup, so as to + # attempt to make "easy" work of bad HTML. page = urllib2.urlopen(urlstring) soup = BeautifulSoup(page) verses = soup.find(u'div', u'result-text-style-normal') - verse_number = 0 verse_list = {0: u''} - + # http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html + # This is a PERFECT example of opening the Cthulu tag! + # O Bible Gateway, why doth ye such horrific HTML produce? for verse in verses: if isinstance(verse, Tag) and verse.name == u'div' and filter(lambda a: a[0] == u'class', verse.attrs)[0][1] == u'footnotes': break @@ -195,46 +197,10 @@ class BGExtract(BibleCommon): continue if isinstance(verse, NavigableString): verse_list[verse_number] = verse_list[verse_number] + verse.replace(u' ', u' ') - + # Delete the "0" element, since we don't need it, it's just there for + # some stupid initial whitespace, courtesy of Bible Gateway. del verse_list[0] - -# xml_string = self._get_web_text(urlstring, self.proxyurl) -# verseSearch = u' -1: -# # clear out string -# verseText = u'' -# versePos = xml_string.find(u'', versePos) + 6 -# i = xml_string.find(verseSearch, versePos + 1) -# # Not sure if this is needed now -# if i == -1: -# i = xml_string.find(u' 0 and j < i: -# i = j -# verseText = xml_string[versePos + 7 : i ] -# # store the verse -# bible[verse] = self._clean_text(verseText) -# versePos = -1 -# else: -# verseText = xml_string[versePos: i] -# start_tag = verseText.find(verseFootnote) -# while start_tag > -1: -# end_tag = verseText.find(u'') -# verseText = verseText[:start_tag] + verseText[end_tag + 6:len(verseText)] -# start_tag = verseText.find(verseFootnote) -# # Chop off verse and start again -# xml_string = xml_string[i:] -# #look for the next verse -# versePos = xml_string.find(verseSearch) -# # store the verse -# bible[verse] = self._clean_text(verseText) -# verse += 1 + # Finally, return the list of verses in a "SearchResults" object. return SearchResults(bookname, chapter, verse_list) class CWExtract(BibleCommon): From 09f18fd96d4f2ebea394b97e2a43294126ceb736 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 19 Mar 2010 07:23:48 +0000 Subject: [PATCH 036/150] Clean up maintenance - Complete --- openlp/core/ui/serviceitemeditdialog.py | 62 ++++++++++++++++--------- openlp/core/ui/serviceitemeditform.py | 14 ++---- 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index bb1666418..b388fb98c 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -1,55 +1,73 @@ # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -# Form implementation generated from reading ui file 'serviceitemeditdialog.ui' -# -# Created: Thu Mar 18 22:05:22 2010 -# by: PyQt4 UI code generator 4.7 -# -# WARNING! All changes made in this file will be lost! +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### from PyQt4 import QtCore, QtGui class Ui_ServiceItemEditDialog(object): def setupUi(self, ServiceItemEditDialog): - ServiceItemEditDialog.setObjectName("ServiceItemEditDialog") + ServiceItemEditDialog.setObjectName(u'ServiceItemEditDialog') ServiceItemEditDialog.resize(386, 272) self.layoutWidget = QtGui.QWidget(ServiceItemEditDialog) self.layoutWidget.setGeometry(QtCore.QRect(20, 20, 351, 241)) - self.layoutWidget.setObjectName("layoutWidget") + self.layoutWidget.setObjectName(u'layoutWidget') self.outerLayout = QtGui.QVBoxLayout(self.layoutWidget) - self.outerLayout.setObjectName("outerLayout") + self.outerLayout.setObjectName(u'outerLayout') self.topLayout = QtGui.QHBoxLayout() - self.topLayout.setObjectName("topLayout") + self.topLayout.setObjectName(u'topLayout') self.listWidget = QtGui.QListWidget(self.layoutWidget) self.listWidget.setAlternatingRowColors(True) - self.listWidget.setObjectName("listWidget") + self.listWidget.setObjectName(u'listWidget') self.topLayout.addWidget(self.listWidget) self.buttonLayout = QtGui.QVBoxLayout() - self.buttonLayout.setObjectName("buttonLayout") + self.buttonLayout.setObjectName(u'buttonLayout') self.upButton = QtGui.QPushButton(self.layoutWidget) - self.upButton.setObjectName("upButton") + self.upButton.setObjectName(u'upButton') self.buttonLayout.addWidget(self.upButton) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + spacerItem = QtGui.QSpacerItem(20, 40, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.buttonLayout.addItem(spacerItem) self.deleteButton = QtGui.QPushButton(self.layoutWidget) - self.deleteButton.setObjectName("deleteButton") + self.deleteButton.setObjectName(u'deleteButton') self.buttonLayout.addWidget(self.deleteButton) self.downButton = QtGui.QPushButton(self.layoutWidget) - self.downButton.setObjectName("downButton") + self.downButton.setObjectName(u'downButton') self.buttonLayout.addWidget(self.downButton) self.topLayout.addLayout(self.buttonLayout) self.outerLayout.addLayout(self.topLayout) self.buttonBox = QtGui.QDialogButtonBox(self.layoutWidget) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) - self.buttonBox.setObjectName("buttonBox") + self.buttonBox.setStandardButtons( + QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName(u'buttonBox') self.outerLayout.addWidget(self.buttonBox) self.retranslateUi(ServiceItemEditDialog) QtCore.QMetaObject.connectSlotsByName(ServiceItemEditDialog) def retranslateUi(self, ServiceItemEditDialog): - ServiceItemEditDialog.setWindowTitle(QtGui.QApplication.translate("ServiceItemEditDialog", "Service Item Maintenance", None, QtGui.QApplication.UnicodeUTF8)) - self.upButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Up", None, QtGui.QApplication.UnicodeUTF8)) - self.deleteButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8)) - self.downButton.setText(QtGui.QApplication.translate("ServiceItemEditDialog", "Down", None, QtGui.QApplication.UnicodeUTF8)) + ServiceItemEditDialog.setWindowTitle(self.trUtf8('Service Item Maintenance')) + self.upButton.setText(self.trUtf8('Up')) + self.deleteButton.setText(self.trUtf8('Delete')) + self.downButton.setText(self.trUtf8('Down')) diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index cbe530d80..4293e15c8 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -81,20 +81,17 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): def onItemDelete(self): """ - Move the current ServiceItem up in the list - Note move up means move to top of area ie 0. + Delete the selected row """ items = self.listWidget.selectedItems() for item in items: row = self.listWidget.row(item) - if row > 0: - self.itemList.remove(self.itemList[row]) - self.loadData() + self.itemList.remove(self.itemList[row]) + self.loadData() def onItemUp(self): """ - Move the current ServiceItem up in the list - Note move up means move to top of area ie 0. + Move the selected row up in the list """ items = self.listWidget.selectedItems() for item in items: @@ -107,8 +104,7 @@ class ServiceItemEditForm(QtGui.QDialog, Ui_ServiceItemEditDialog): def onItemDown(self): """ - Move the current ServiceItem down in the list - Note move down means move to bottom of area i.e len(). + Move the selected row down in the list """ items = self.listWidget.selectedItems() for item in items: From 7fdeed6b1a64c2cdef5d8112415db7c89a07c940 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 19 Mar 2010 08:10:00 +0000 Subject: [PATCH 037/150] changes --- openlp/plugins/alerts/forms/alerteditform.py | 2 +- openlp/plugins/songs/forms/editverseform.py | 2 +- .../plugins/songs/forms/songmaintenanceform.py | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/alerts/forms/alerteditform.py b/openlp/plugins/alerts/forms/alerteditform.py index 62c129508..a88eff4f3 100644 --- a/openlp/plugins/alerts/forms/alerteditform.py +++ b/openlp/plugins/alerts/forms/alerteditform.py @@ -85,7 +85,7 @@ class AlertEditForm(QtGui.QDialog, Ui_AlertEditDialog): if self.AlertLineEdit.text(): QtGui.QMessageBox.information(self, self.trUtf8('Item selected to Edit'), - self.trUtf8('Please Save or Clear seletced item')) + self.trUtf8('Please save or clear selected item')) else: self.EditButton.setEnabled(True) self.DeleteButton.setEnabled(True) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index cee84aae5..99dfd6d69 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -77,7 +77,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): posVerse = 0 posSub = 0 - if len(text) == 0: + if len(text) == 0 and not single: text = u'---[Verse:1]---\n' if single: id = tag.split(u':') diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index 4d1d39cce..ffef22dd6 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -162,7 +162,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('Couldn\'t add your book!'), + self.trUtf8('Couldn\'t add your book'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) def onAuthorEditButtonClick(self): @@ -182,7 +182,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('Couldn\'t save your author!'), + self.trUtf8('Couldn\'t save your author'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) def onTopicEditButtonClick(self): @@ -197,7 +197,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('Couldn\'t save your topic!'), + self.trUtf8('Couldn\'t save your topic'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) def onBookEditButtonClick(self): @@ -214,7 +214,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): else: QtGui.QMessageBox.critical( self, self.trUtf8('Error'), - self.trUtf8('Couldn\'t save your book!'), + self.trUtf8('Couldn\'t save your book'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) def onAuthorDeleteButtonClick(self): @@ -227,7 +227,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.trUtf8('Delete Author'), self.trUtf8('Are you sure you want to delete the selected author?'), self.trUtf8('This author can\'t be deleted, they are currently ' - 'assigned to at least one song!'), + 'assigned to at least one song'), self.trUtf8('No author selected!')) def onTopicDeleteButtonClick(self): @@ -240,7 +240,7 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.trUtf8('Delete Topic'), self.trUtf8('Are you sure you want to delete the selected topic?'), self.trUtf8('This topic can\'t be deleted, it is currently ' - 'assigned to at least one song!'), + 'assigned to at least one song'), self.trUtf8('No topic selected!')) def onBookDeleteButtonClick(self): @@ -253,5 +253,5 @@ class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog): self.trUtf8('Delete Book'), self.trUtf8('Are you sure you want to delete the selected book?'), self.trUtf8('This book can\'t be deleted, it is currently ' - 'assigned to at least one song!'), - self.trUtf8('No book selected!')) \ No newline at end of file + 'assigned to at least one song'), + self.trUtf8('No book selected!')) From eddd11281133756b1cf0cea0f5bfb4440c413fad Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 20 Mar 2010 00:08:06 +0200 Subject: [PATCH 038/150] Failed Bibles are deleted. --- openlp/plugins/bibles/forms/importwizardform.py | 12 +++++++----- openlp/plugins/bibles/lib/db.py | 8 +++++++- openlp/plugins/bibles/lib/manager.py | 2 +- openlp/plugins/bibles/lib/osis.py | 4 ++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 422e869eb..7e8cde45b 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -315,23 +315,23 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): def performImport(self): bible_type = self.field(u'source_format').toInt()[0] - success = False + importer = None if bible_type == BibleFormat.OSIS: # Import an OSIS bible - success = self.manager.import_bible(BibleFormat.OSIS, + importer = self.manager.import_bible(BibleFormat.OSIS, name=unicode(self.field(u'license_version').toString()), filename=unicode(self.field(u'osis_location').toString()) ) elif bible_type == BibleFormat.CSV: # Import a CSV bible - success = self.manager.import_bible(BibleFormat.CSV, + importer = self.manager.import_bible(BibleFormat.CSV, name=unicode(self.field(u'license_version').toString()), booksfile=self.field(u'csv_booksfile').toString(), versefile=self.field(u'csv_versefile').toString() ) elif bible_type == BibleFormat.OpenSong: # Import an OpenSong bible - success = self.manager.import_bible(BibleFormat.OpenSong, + importer = self.manager.import_bible(BibleFormat.OpenSong, name=unicode(self.field(u'license_version').toString()), filename=self.field(u'opensong_file').toString() ) @@ -345,7 +345,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): elif download_location == DownloadLocation.BibleGateway: bible = self.web_bible_list[DownloadLocation.BibleGateway][ unicode(self.BibleComboBox.currentText())] - success = self.manager.import_bible(BibleFormat.WebDownload, + importer = self.manager.import_bible(BibleFormat.WebDownload, name=unicode(self.field(u'license_version').toString()), download_source=unicode(DownloadLocation.get_name(download_location)), download_name=unicode(bible), @@ -353,6 +353,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): proxy_username=unicode(self.field(u'proxy_username').toString()), proxy_password=unicode(self.field(u'proxy_password').toString()) ) + success = importer.do_import() if success: self.manager.save_meta_data( unicode(self.field(u'license_version').toString()), @@ -365,6 +366,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): else: self.ImportProgressLabel.setText( self.trUtf8('Your Bible import failed.')) + importer.delete() def postImport(self): self.ImportProgressBar.setValue(self.ImportProgressBar.maximum()) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 8f55fb5fc..d6a6d10ca 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -77,7 +77,6 @@ class BibleDB(QtCore.QObject): self.file = self.clean_filename(self.name) if u'file' in kwargs: self.file = kwargs[u'file'] - self.db_file = os.path.join(kwargs[u'path'], self.file) log.debug(u'Load bible %s on path %s', self.file, self.db_file) db_type = self.config.get_config(u'db type', u'sqlite') @@ -109,6 +108,13 @@ class BibleDB(QtCore.QObject): old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') return old_filename + u'.sqlite' + def delete(self): + try: + os.remove(self.db_file) + return True + except: + return False + def register(self, wizard): """ This method basically just initialialises the database. It is called diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 10ee7b9f9..e3647e129 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -165,7 +165,7 @@ class BibleManager(object): importer = class_(self.parent, **kwargs) name = importer.register(self.import_wizard) self.db_cache[name] = importer - return importer.do_import() + return importer def get_bibles(self): """ diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index e4cb79e73..894feb8d8 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -114,12 +114,14 @@ class OSISBible(BibleDB): osis = codecs.open(self.filename, u'r', details['encoding']) last_chapter = 0 testament = 1 + match_count = 0 db_book = None for file_record in osis: if self.stop_import_flag: break match = self.verse_regex.search(file_record) if match: + match_count += 1 book = match.group(1) chapter = int(match.group(2)) verse = int(match.group(3)) @@ -166,6 +168,8 @@ class OSISBible(BibleDB): Receiver.send_message(u'process_events') self.commit() self.wizard.incrementProgressBar(u'Finishing import...') + if match_count == 0: + success = False except: log.exception(u'Loading bible from OSIS file failed') success = False From 916987052026022eeed37fb6ce74fca17b300302 Mon Sep 17 00:00:00 2001 From: rimach Date: Sat, 20 Mar 2010 00:02:23 +0100 Subject: [PATCH 039/150] make Blank button workable --- openlp/core/ui/maindisplay.py | 11 ++++++++++- openlp/core/ui/slidecontroller.py | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index e59ce2060..f77d0a841 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -226,6 +226,7 @@ class MainDisplay(DisplayWidget): ``frame`` Image frame to be rendered """ + log.debug(u'frameView %d' % (self.displayBlank)) if not self.displayBlank: if transition: if self.frame is not None: @@ -248,14 +249,22 @@ class MainDisplay(DisplayWidget): if not self.isVisible(): self.setVisible(True) self.showFullScreen() + else: + self.waitingFrame = frame + self.waitingFrameTrans = transition def blankDisplay(self, blanked=True): + log.debug(u'Blank main Display %d' % blanked) if blanked: self.displayBlank = True self.display_text.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame)) + self.waitingFrame = None + self.waitingFrameTrans = False else: self.displayBlank = False - if self.display_frame: + if self.waitingFrame: + self.frameView(self.waitingFrame, self.waitingFrameTrans) + elif self.display_frame: self.frameView(self.display_frame) def onMediaQueue(self, message): diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 0af64819a..08583cb54 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -524,6 +524,7 @@ class SlideController(QtGui.QWidget): """ Handle the blank screen button """ + log.debug(u'onBlankDisplay %d' % force) if force: self.blankButton.setChecked(True) self.blankScreen(self.blankButton.isChecked()) @@ -540,6 +541,8 @@ class SlideController(QtGui.QWidget): Receiver.send_message(u'%s_blank'% self.serviceItem.name.lower()) else: Receiver.send_message(u'%s_unblank'% self.serviceItem.name.lower()) + else: + self.parent.mainDisplay.blankDisplay(blanked) else: self.parent.mainDisplay.blankDisplay(blanked) From 92d39b1d98a605094b5fc7c76efe41a517bbf84a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 20 Mar 2010 08:34:36 +0000 Subject: [PATCH 040/150] Minor tidy ups and add stupidity block --- openlp/core/lib/mediamanageritem.py | 11 +++++++++-- openlp/core/ui/servicemanager.py | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 241a534f7..5dd0ee97f 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -290,7 +290,8 @@ class MediaManagerItem(QtGui.QWidget): self.ListView.addAction( contextMenuAction( self.ListView, u':/system/system_add.png', - self.trUtf8('&Add to Service Item'), self.onAddEditClick)) + self.trUtf8('&Add to selected Service Item'), + self.onAddEditClick)) QtCore.QObject.connect( self.ListView, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick) @@ -404,9 +405,15 @@ class MediaManagerItem(QtGui.QWidget): QtGui.QMessageBox.information(self, self.trUtf8('No Servive item selected'), self.trUtf8('You must select a existing Service Item to add to.')) - else: + elif self.title == service_item.name: self.generateSlideData(service_item) self.parent.service_manager.addServiceItem(service_item) + else: + #Turn off the remote edit update message indicator + self.parent.service_manager.remoteEditTriggered = False + QtGui.QMessageBox.information(self, + self.trUtf8('Invalid Service Item'), + self.trUtf8(unicode('You must select a %s service item.' % self.title))) def buildServiceItem(self): """ diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 3225d9237..78d639ae2 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -691,6 +691,7 @@ class ServiceManager(QtGui.QWidget): if item == -1: return False else: + #Switch on remote edit update functionality. self.remoteEditTriggered = True return self.serviceItems[item][u'service_item'] From 848eb601af248a8b4e74546b73ebdb1a3a304abd Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 21 Mar 2010 14:24:41 +0000 Subject: [PATCH 041/150] Fix NONE appearing as song verses Delay the hidden window display Fix missing add status for custom slides --- openlp/core/lib/songxmlhandler.py | 4 ++++ openlp/core/ui/mainwindow.py | 7 ++++++- openlp/plugins/custom/forms/editcustomform.py | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/songxmlhandler.py b/openlp/core/lib/songxmlhandler.py index 7a532970d..076523545 100644 --- a/openlp/core/lib/songxmlhandler.py +++ b/openlp/core/lib/songxmlhandler.py @@ -147,9 +147,13 @@ class SongXMLParser(object): iter = self.song_xml.getiterator() verse_list = [] for element in iter: + print element.tag, element.text if element.tag == u'verse': + if element.text is None: + element.text = u'' verse_list.append([element.attrib, unicode(element.text).decode('unicode-escape')]) + print verse_list return verse_list def dump_xml(self): diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index ab2eaf7d8..30530669c 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -67,7 +67,8 @@ class VersionThread(QtCore.QThread): """ Run the thread. """ - time.sleep(2) + time.sleep(1) + Receiver.send_message(u'blank_check') version = check_latest_version(self.generalConfig, self.app_version) #new version has arrived if version != self.app_version: @@ -493,6 +494,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'update_global_theme'), self.defaultThemeChanged) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'version_check'), self.versionCheck) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'blank_check'), self.blankCheck) QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onNewService) @@ -582,6 +585,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.activateWindow() if str_to_bool(self.generalConfig.get_config(u'auto open', False)): self.ServiceManagerContents.onLoadService(True) + + def blankCheck(self): if str_to_bool(self.generalConfig.get_config(u'screen blank', False)) \ and str_to_bool(self.generalConfig.get_config(u'blank warning', False)): self.LiveController.onBlankDisplay(True) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index b4402ceb3..bb2607a74 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -87,6 +87,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): def initialise(self): self.editAll = False + self.AddButton.setEnabled(True) self.DeleteButton.setEnabled(False) self.EditButton.setEnabled(False) self.EditAllButton.setEnabled(True) From 8f692d13be2abe0e56f5342cfdbf768f3b0627e8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 21 Mar 2010 14:30:18 +0000 Subject: [PATCH 042/150] Remove prints --- openlp/core/lib/songxmlhandler.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openlp/core/lib/songxmlhandler.py b/openlp/core/lib/songxmlhandler.py index 076523545..12b0c2d47 100644 --- a/openlp/core/lib/songxmlhandler.py +++ b/openlp/core/lib/songxmlhandler.py @@ -147,13 +147,11 @@ class SongXMLParser(object): iter = self.song_xml.getiterator() verse_list = [] for element in iter: - print element.tag, element.text if element.tag == u'verse': if element.text is None: element.text = u'' verse_list.append([element.attrib, unicode(element.text).decode('unicode-escape')]) - print verse_list return verse_list def dump_xml(self): From 2d43cd2d8a19d9b1dd089b4af13a996f8342bf37 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 21 Mar 2010 15:08:46 +0000 Subject: [PATCH 043/150] Stop double loading of service items --- openlp/core/ui/slidecontroller.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 08583cb54..b6392a4d7 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -419,6 +419,11 @@ class SlideController(QtGui.QWidget): Called by ServiceManager """ log.debug(u'addServiceManagerItem') + #If service item is the same as the current on only change slide + if item.__eq__(self.serviceItem): + self.PreviewListWidget.selectRow(slideno) + self.onSlideSelected() + return #If old item was a command tell it to stop if self.serviceItem and self.serviceItem.is_command(): self.onMediaStop() From 2f840944e9b3a3a7b8361799723a63084ddb1beb Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sun, 21 Mar 2010 15:55:45 +0000 Subject: [PATCH 044/150] Unused variable fixes --- openlp/plugins/songs/forms/editsongform.py | 2 -- openlp/plugins/songs/lib/mediaitem.py | 2 +- scripts/bible-1to2-converter.py | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 183af6a44..fedd18759 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -498,7 +498,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): sxml = SongXMLBuilder() sxml.new_document() sxml.add_lyrics_to_song() - count = 1 text = u' ' for i in range (0, self.VerseListWidget.count()): item = self.VerseListWidget.item(i) @@ -506,7 +505,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): bits = verseId.split(u':') sxml.add_verse_to_lyrics(bits[0], bits[1], unicode(item.text())) text = text + unicode(self.VerseListWidget.item(i).text()) + u' ' - count += 1 text = text.replace(u'\'', u'') text = text.replace(u',', u'') text = text.replace(u';', u'') diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index cd440e54f..5090b845c 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -282,7 +282,7 @@ class SongMediaItem(MediaManagerItem): raw_footer = [] author_list = u'' author_audit = [] - ccl = u'' + ccli = u'' if self.remoteTriggered is None: item = self.ListView.currentItem() if item is None: diff --git a/scripts/bible-1to2-converter.py b/scripts/bible-1to2-converter.py index b1e9b6897..19d8ec9e8 100755 --- a/scripts/bible-1to2-converter.py +++ b/scripts/bible-1to2-converter.py @@ -206,7 +206,6 @@ def import_bible(): rows = old_cursor.fetchall() if debug or verbose: print 'done.' - song_map = {} for row in rows: book_id = int(row[1]) chapter = int(row[2]) From 3e4683bd6dff627eb82ad492f4ea31c8fd545055 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 21 Mar 2010 17:56:56 +0000 Subject: [PATCH 045/150] Fix up issues and confusion with service item edit --- openlp/core/ui/slidecontroller.py | 37 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b6392a4d7..51ad5b6b9 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -403,14 +403,14 @@ class SlideController(QtGui.QWidget): if self.songEdit: slideno = self.selectedRow self.songEdit = False - self.addServiceManagerItem(item, slideno) + self._processItem(item, slideno) def replaceServiceManagerItem(self, item): """ Replacement item following a remote edit """ if item.__eq__(self.serviceItem): - self.addServiceManagerItem(item, self.PreviewListWidget.currentRow()) + self._processItem(item, self.PreviewListWidget.currentRow()) def addServiceManagerItem(self, item, slideno): """ @@ -424,27 +424,27 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.selectRow(slideno) self.onSlideSelected() return - #If old item was a command tell it to stop - if self.serviceItem and self.serviceItem.is_command(): - self.onMediaStop() - if item.is_media(): - self.onMediaStart(item) - elif item.is_command(): - if self.isLive: - blanked = self.blankButton.isChecked() - else: - blanked = False - Receiver.send_message(u'%s_start' % item.name.lower(), \ - [item.title, item.service_item_path, - item.get_frame_title(), slideno, self.isLive, blanked]) - self.displayServiceManagerItems(item, slideno) + self._processItem(item, slideno) - def displayServiceManagerItems(self, serviceItem, slideno): + def _processItem(self, serviceItem, slideno): """ Loads a ServiceItem into the system from ServiceManager Display the slide number passed """ - log.debug(u'displayServiceManagerItems Start') + log.debug(u'processsManagerItem') + #If old item was a command tell it to stop + if self.serviceItem and self.serviceItem.is_command(): + self.onMediaStop() + if serviceItem.is_media(): + self.onMediaStart(serviceItem) + elif serviceItem.is_command(): + if self.isLive: + blanked = self.blankButton.isChecked() + else: + blanked = False + Receiver.send_message(u'%s_start' % serviceItem.name.lower(), \ + [serviceItem.title, serviceItem.service_item_path, + serviceItem.get_frame_title(), slideno, self.isLive, blanked]) self.slideList = {} width = self.parent.ControlSplitter.sizes()[self.split] #Set pointing cursor when we have somthing to point at @@ -508,7 +508,6 @@ class SlideController(QtGui.QWidget): log.log(15, u'Display Rendering took %4s' % (time.time() - before)) if self.isLive: self.serviceItem.request_audit() - log.debug(u'displayServiceManagerItems End') #Screen event methods def onSlideSelectedFirst(self): From 2ff005cdc050dafc8e4d6e33b14ec31cfa1a5782 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 21 Mar 2010 19:55:51 +0000 Subject: [PATCH 046/150] Add verse tag to live song rows --- openlp/core/ui/slidecontroller.py | 34 ++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 0af64819a..391ff7461 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -94,6 +94,10 @@ class SlideController(QtGui.QWidget): self.song_edit_list = [ u'Edit Song', ] + if isLive: + self.labelWidth = 20 + else: + self.labelWidth = 0 self.timer_id = 0 self.songEdit = False self.selectedRow = 0 @@ -133,10 +137,11 @@ class SlideController(QtGui.QWidget): self.ControllerLayout.setMargin(0) # Controller list view self.PreviewListWidget = SlideList(self) - self.PreviewListWidget.setColumnCount(1) + self.PreviewListWidget.setColumnCount(2) self.PreviewListWidget.horizontalHeader().setVisible(False) self.PreviewListWidget.verticalHeader().setVisible(False) - self.PreviewListWidget.setColumnWidth(1, self.Controller.width()) + self.PreviewListWidget.setColumnWidth(1, self.labelWidth) + self.PreviewListWidget.setColumnWidth(1, self.Controller.width() - self.labelWidth) self.PreviewListWidget.isLive = self.isLive self.PreviewListWidget.setObjectName(u'PreviewListWidget') self.PreviewListWidget.setEditTriggers( @@ -309,7 +314,8 @@ class SlideController(QtGui.QWidget): """ width = self.parent.ControlSplitter.sizes()[self.split] height = width * self.parent.RenderManager.screen_ratio - self.PreviewListWidget.setColumnWidth(0, width) + self.PreviewListWidget.setColumnWidth(0, self.labelWidth) + self.PreviewListWidget.setColumnWidth(1, width - self.labelWidth) #Sort out image hights (Songs , bibles excluded) if self.serviceItem and not self.serviceItem.is_text(): for framenumber, frame in enumerate(self.serviceItem.get_frames()): @@ -448,14 +454,17 @@ class SlideController(QtGui.QWidget): self.serviceItem = serviceItem self.PreviewListWidget.clear() self.PreviewListWidget.setRowCount(0) - self.PreviewListWidget.setColumnWidth(0, width) + self.PreviewListWidget.setColumnWidth(1, self.labelWidth) + self.PreviewListWidget.setColumnWidth(1, width - self.labelWidth) if self.isLive: self.SongMenu.menu().clear() for framenumber, frame in enumerate(self.serviceItem.get_frames()): self.PreviewListWidget.setRowCount( self.PreviewListWidget.rowCount() + 1) + rowitem = QtGui.QTableWidgetItem() item = QtGui.QTableWidgetItem() slide_height = 0 + row = u'' #It is a based Text Render if self.serviceItem.is_text(): if self.isLive and frame[u'verseTag'] is not None: @@ -484,15 +493,18 @@ class SlideController(QtGui.QWidget): self.parent.RenderManager.height) label.setScaledContents(True) label.setPixmap(QtGui.QPixmap.fromImage(pixmap)) - self.PreviewListWidget.setCellWidget(framenumber, 0, label) + self.PreviewListWidget.setCellWidget(framenumber, 1, label) slide_height = width * self.parent.RenderManager.screen_ratio - self.PreviewListWidget.setItem(framenumber, 0, item) + rowitem.setText(row) + self.PreviewListWidget.setItem(framenumber, 0, rowitem) + self.PreviewListWidget.setItem(framenumber, 1, item) if slide_height != 0: self.PreviewListWidget.setRowHeight(framenumber, slide_height) if self.serviceItem.is_text(): self.PreviewListWidget.resizeRowsToContents() - self.PreviewListWidget.setColumnWidth( - 0, self.PreviewListWidget.viewport().size().width()) + self.PreviewListWidget.setColumnWidth(0, self.labelWidth) + self.PreviewListWidget.setColumnWidth(1, + self.PreviewListWidget.viewport().size().width() - self.labelWidth ) if slideno > self.PreviewListWidget.rowCount(): self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount()) else: @@ -549,6 +561,7 @@ class SlideController(QtGui.QWidget): if this is the Live Controller also display on the screen """ row = self.PreviewListWidget.currentRow() + self.PreviewListWidget.selectRow(row) self.selectedRow = 0 if row > -1 and row < self.PreviewListWidget.rowCount(): if self.serviceItem.is_command() and self.isLive: @@ -585,7 +598,7 @@ class SlideController(QtGui.QWidget): QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) else: label = self.PreviewListWidget.cellWidget( - self.PreviewListWidget.currentRow(), 0) + self.PreviewListWidget.currentRow(), 1) self.SlidePreview.setPixmap(label.pixmap()) def grabMainDisplay(self): @@ -654,7 +667,8 @@ class SlideController(QtGui.QWidget): self.serviceItem.name.lower(), self.isLive) self.updatePreview() else: - self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) + self.PreviewListWidget.selectRow( + self.PreviewListWidget.rowCount() - 1) self.onSlideSelected() def onStartLoop(self): From 35001679078c4f8a7af2cb0bd2e1af6217f2353e Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sun, 21 Mar 2010 22:54:26 +0000 Subject: [PATCH 047/150] Bible migration --- openlp/migration/migratebibles.py | 207 +++++++++++++++++++++++++++++- openlpcnv.pyw | 34 +++-- 2 files changed, 228 insertions(+), 13 deletions(-) diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index f9e10b756..6f3552099 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -23,10 +23,213 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +import os +import sys +import sqlite3 + +from sqlalchemy import * +from sqlalchemy import create_engine +from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation + +from openlp.core.lib import PluginConfig +from openlp.plugins.bibles.lib.models import * + +class BaseModel(object): + """ + BaseModel provides a base object with a set of generic functions + """ + + @classmethod + def populate(cls, **kwargs): + """ + Creates an instance of a class and populates it, returning the instance + """ + me = cls() + keys = kwargs.keys() + for key in keys: + me.__setattr__(key, kwargs[key]) + return me + +class TBibleMeta(BaseModel): + """ + Bible Meta Data + """ + pass + +class TTestament(BaseModel): + """ + Bible Testaments + """ + pass + +class TBook(BaseModel): + """ + Song model + """ + pass + +class TVerse(BaseModel): + """ + Topic model + """ + pass + +temp_meta_table = Table(u'metadata_temp', metadata, + Column(u'key', types.Unicode(255), primary_key=True), + Column(u'value', types.Unicode(255)), +) +temp_testament_table = Table(u'testament_temp', metadata, + Column(u'id', types.Integer, primary_key=True), + Column(u'name', types.Unicode(30)), +) +temp_book_table = Table(u'book_temp', metadata, + Column(u'id', types.Integer, primary_key=True), + Column(u'testament_id', types.Integer), + Column(u'name', types.Unicode(30)), + Column(u'abbreviation', types.Unicode(5)), +) +temp_verse_table = Table(u'verse_temp', metadata, + Column(u'id', types.Integer, primary_key=True), + Column(u'book_id', types.Integer), + Column(u'chapter', types.Integer), + Column(u'verse', types.Integer), + Column(u'text', types.UnicodeText), +) + +mapper(TBibleMeta, temp_meta_table) +mapper(TTestament, temp_testament_table) +mapper(TBook, temp_book_table) +mapper(TVerse, temp_verse_table) + +def init_models(url): + engine = create_engine(url) + metadata.bind = engine + session = scoped_session(sessionmaker(autoflush=False, + autocommit=False, bind=engine)) + return session + class MigrateBibles(): def __init__(self, display): self.display = display + self.config = PluginConfig(u'Bibles') + self.data_path = self.config.get_data_path() + self.database_files = self.config.get_files(u'sqlite') + print self.database_files + + def progress(self, text): + print text + self.display.output(text) def process(self): - self.display.output(u'Bible process started') - self.display.output(u'Bible process finished') \ No newline at end of file + self.progress(u'Bibles processing started') + for f in self.database_files: + self.v_1_9_0(f) + self.progress(u'Bibles processing finished') + + def v_1_9_0(self, database): + self.progress(u'Migration 1.9.0 Started for ' + database) + self._v1_9_0_old(database) + self._v1_9_0_new(database) + self._v1_9_0_cleanup(database) + self.progress(u'Migration 1.9.0 Finished for ' + database) + + def _v1_9_0_old(self, database): + self.progress(u'Rename Tables ' + database) + conn = sqlite3.connect(self.data_path + os.sep + database) + conn.execute(u'alter table book rename to book_temp;') + conn.commit() + conn.execute(u'alter table testament rename to testament_temp;') + conn.commit() + conn.execute(u'alter table verse rename to verse_temp;') + conn.commit() + conn.execute(u'alter table metadata rename to metadata_temp;') + conn.commit() + + def _v1_9_0_new(self, database): + self.progress(u'Create new Tables ' + database) + self.db_url = u'sqlite:///' + self.data_path + u'/' + database + print self.db_url + self.session = init_models(self.db_url) + metadata.create_all(checkfirst=True) + self.progress(u'Create testament table') + results = self.session.query(TTestament).order_by(TTestament.id).all() + for testament_temp in results: + testament = Testament() + testament.id = testament_temp.id + testament.name = testament_temp.name + try: + self.session.add(testament) + self.session.commit() + except: + self.session.rollback() + print u'Error thrown = ', sys.exc_info()[1] + self.progress(u'Create book table') + results = self.session.query(TBook).order_by(TBook.id).all() + for book_temp in results: + book = Book() + book.id = book_temp.id + book.testament_id = book_temp.testament_id + book.name = book_temp.name + book.abbreviation = book_temp.abbreviation + try: + self.session.add(book) + self.session.commit() + except: + self.session.rollback() + print u'Error thrown = ', sys.exc_info()[1] + self.progress(u'Create verse table') + #---- + #results = self.session.query(TVerse).order_by(TVerse.id).all() + #for verse_temp in results: + # verse = Verse() + # verse.id = verse_temp.id + # verse.book_id = verse_temp.book_id + # verse.chapter = verse_temp.chapter + # verse.verse = verse_temp.verse + # verse.text = verse_temp.text + # try: + # self.session.add(verse) + # self.session.commit() + # except: + # self.session.rollback() + # print u'Error thrown = ', sys.exc_info()[1] + # + # The above is too slow, took hours to not finish one bible + # For now, just do it the old fashioned way + #--- + try: + conn = sqlite3.connect(self.data_path + os.sep + database) + conn.execute(u'insert into verse select * from verse_temp;') + conn.commit() + except: + self.session.rollback() + print u'Error thrown = ', sys.exc_info()[1] + #--- + self.progress(u'Create metadata table') + results = self.session.query(TBibleMeta).order_by(TBibleMeta.key).all() + for biblemeta_temp in results: + biblemeta = BibleMeta() + biblemeta.key = biblemeta_temp.key + biblemeta.value = biblemeta_temp.value + try: + self.session.add(biblemeta) + self.session.commit() + except: + self.session.rollback() + print u'Error thrown = ', sys.exc_info()[1] + + def _v1_9_0_cleanup(self, database): + self.progress(u'Update Internal Data ' + database) + conn = sqlite3.connect(self.data_path + os.sep + database) + conn.commit() + conn.execute(u'drop table book_temp;') + conn.commit() + conn.execute(u'drop table testament_temp;') + conn.commit() + conn.execute(u'drop table verse_temp;') + conn.commit() + conn.execute(u'drop table metadata_temp;') + conn.commit() + conn.execute(u'vacuum;') + conn.commit() + diff --git a/openlpcnv.pyw b/openlpcnv.pyw index 8c3a8bcf5..802bc7a27 100755 --- a/openlpcnv.pyw +++ b/openlpcnv.pyw @@ -70,7 +70,7 @@ class Migration(object): """ #MigrateFiles(self.display).process() MigrateSongs(self.display).process() - #MigrateBibles(self.display).process() + MigrateBibles(self.display).process() def move_log_file(self): """ @@ -101,6 +101,7 @@ class Migration(object): writefile.close() def convert_sqlite2_to_3(self, olddb, newdb): + print u'Converting sqlite2 ' + olddb + ' to sqlite3 ' + newdb if os.name == u'nt': # we can't make this a raw unicode string as the \U within it causes much confusion hKey = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, u'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SQLite ODBC Driver') @@ -127,24 +128,35 @@ class Migration(object): subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r')) else: subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r'), shell=True) - os.remove(u'sqlite.dmp') - os.remove(u'sqlite3.dmp') +# os.remove(u'sqlite.dmp') +# os.remove(u'sqlite3.dmp') if __name__ == u'__main__': mig = Migration() - config = PluginConfig(u'Songs') - newpath = config.get_data_path() + songconfig = PluginConfig(u'Songs') + newsongpath = songconfig.get_data_path() + bibleconfig = PluginConfig(u'Bibles') + newbiblepath = bibleconfig.get_data_path() if os.name == u'nt': - if not os.path.isdir(newpath): - os.makedirs(newpath) + if not os.path.isdir(newsongpath): + os.makedirs(newsongpath) + if not os.path.isdir(newbiblepath): + os.makedirs(newbiblepath) ALL_USERS_APPLICATION_DATA = 35 shell = Dispatch(u'Shell.Application') folder = shell.Namespace(ALL_USERS_APPLICATION_DATA) folderitem = folder.Self - olddb = os.path.join(folderitem.path, u'openlp.org', u'Data', u'songs.olp') + oldsongdb = os.path.join(folderitem.path, u'openlp.org', u'Data', u'songs.olp') + oldbiblepath = os.path.join(folderitem.path, u'openlp.org', u'Data', u'Bibles') else: - olddb = os.path.join(newpath, u'songs.olp') - newdb = os.path.join(newpath, u'songs.sqlite') - mig.convert_sqlite2_to_3(olddb, newdb) + oldsongdb = os.path.join(newsongpath, u'songs.olp') + newsongdb = os.path.join(newsongpath, u'songs.sqlite') + mig.convert_sqlite2_to_3(oldsongdb, newsongdb) + files = os.listdir(oldbiblepath) + for file in files: + f = os.path.splitext(os.path.basename(file))[0] + if f != 'kjv': #kjv bible has an autoincrement key not supported in sqlite3 + mig.convert_sqlite2_to_3(os.path.join(oldbiblepath, file), + os.path.join(newbiblepath, f + u'.sqlite')) mig.process() #mig.move_log_file() From 06342a0fa95804c38cc1f582d5198e5d191d0908 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sun, 21 Mar 2010 23:00:17 +0000 Subject: [PATCH 048/150] Bible migration From ea5ceaf00ae4bc90a2c0b82d110656a2aadcd59a Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 22 Mar 2010 01:58:01 +0200 Subject: [PATCH 049/150] Updated copyright. Updated credits. --- copyright.txt | 4 +- openlp.pyw | 4 +- openlp/__init__.py | 6 +- openlp/core/__init__.py | 6 +- openlp/core/lib/__init__.py | 4 +- openlp/core/lib/baselistwithdnd.py | 4 +- openlp/core/lib/dockwidget.py | 4 +- openlp/core/lib/eventreceiver.py | 4 +- openlp/core/lib/mediamanageritem.py | 4 +- openlp/core/lib/plugin.py | 4 +- openlp/core/lib/pluginconfig.py | 6 +- openlp/core/lib/pluginmanager.py | 4 +- openlp/core/lib/renderer.py | 6 +- openlp/core/lib/rendermanager.py | 4 +- openlp/core/lib/serviceitem.py | 4 +- openlp/core/lib/settingsmanager.py | 4 +- openlp/core/lib/settingstab.py | 6 +- openlp/core/lib/songxmlhandler.py | 4 +- openlp/core/lib/themexmlhandler.py | 4 +- openlp/core/lib/toolbar.py | 4 +- openlp/core/lib/xmlrootclass.py | 4 +- openlp/core/test/test_mediamanageritem.py | 25 +++++++ openlp/core/test/test_plugin_manager.py | 27 ++++++- openlp/core/test/test_render.py | 45 +++++++----- openlp/core/test/test_render_theme.py | 41 ++++++----- openlp/core/theme/__init__.py | 7 +- openlp/core/theme/test/test_theme.py | 27 ++++++- openlp/core/theme/theme.py | 6 +- openlp/core/ui/__init__.py | 4 +- openlp/core/ui/aboutdialog.py | 16 +++-- openlp/core/ui/aboutform.py | 6 +- openlp/core/ui/amendthemedialog.py | 6 +- openlp/core/ui/amendthemeform.py | 4 +- openlp/core/ui/generaltab.py | 4 +- openlp/core/ui/maindisplay.py | 4 +- openlp/core/ui/mainwindow.py | 4 +- openlp/core/ui/mediadockmanager.py | 6 +- openlp/core/ui/plugindialog.py | 6 +- openlp/core/ui/pluginform.py | 4 +- openlp/core/ui/screen.py | 5 +- openlp/core/ui/serviceitemdialog.py | 4 +- openlp/core/ui/serviceitemform.py | 4 +- openlp/core/ui/servicemanager.py | 4 +- openlp/core/ui/settingsdialog.py | 6 +- openlp/core/ui/settingsform.py | 4 +- openlp/core/ui/slidecontroller.py | 4 +- openlp/core/ui/splashscreen.py | 6 +- openlp/core/ui/test/test_service_manager.py | 39 +++++----- openlp/core/ui/thememanager.py | 4 +- openlp/core/ui/themestab.py | 6 +- openlp/core/utils/__init__.py | 4 +- openlp/core/utils/confighelper.py | 4 +- openlp/core/utils/registry.py | 6 +- openlp/migration/__init__.py | 6 +- openlp/migration/display.py | 4 +- openlp/migration/migratebibles.py | 6 +- openlp/migration/migratefiles.py | 6 +- openlp/migration/migratesongs.py | 6 +- openlp/plugins/__init__.py | 6 +- openlp/plugins/alerts/__init__.py | 6 +- openlp/plugins/alerts/alertsplugin.py | 4 +- openlp/plugins/alerts/forms/__init__.py | 4 +- openlp/plugins/alerts/forms/alertdialog.py | 28 ++++++-- .../plugins/alerts/forms/alerteditdialog.py | 28 ++++++-- openlp/plugins/alerts/forms/alerteditform.py | 4 +- openlp/plugins/alerts/forms/alertform.py | 4 +- openlp/plugins/alerts/forms/alertstab.py | 4 +- openlp/plugins/alerts/lib/__init__.py | 5 +- openlp/plugins/alerts/lib/alertsmanager.py | 4 +- openlp/plugins/alerts/lib/classes.py | 4 +- openlp/plugins/alerts/lib/manager.py | 4 +- openlp/plugins/alerts/lib/meta.py | 6 +- openlp/plugins/alerts/lib/models.py | 4 +- openlp/plugins/alerts/lib/tables.py | 4 +- openlp/plugins/bibles/__init__.py | 6 +- openlp/plugins/bibles/bibleplugin.py | 4 +- openlp/plugins/bibles/forms/__init__.py | 6 +- .../plugins/bibles/forms/bibleimportwizard.py | 4 +- .../plugins/bibles/forms/importwizardform.py | 4 +- openlp/plugins/bibles/lib/__init__.py | 6 +- openlp/plugins/bibles/lib/biblestab.py | 4 +- openlp/plugins/bibles/lib/common.py | 4 +- openlp/plugins/bibles/lib/csvbible.py | 4 +- openlp/plugins/bibles/lib/db.py | 4 +- openlp/plugins/bibles/lib/http.py | 4 +- openlp/plugins/bibles/lib/manager.py | 4 +- openlp/plugins/bibles/lib/mediaitem.py | 4 +- openlp/plugins/bibles/lib/models.py | 4 +- openlp/plugins/bibles/lib/opensong.py | 4 +- openlp/plugins/bibles/lib/osis.py | 4 +- openlp/plugins/bibles/test/__init__.py | 24 +++++++ .../plugins/bibles/test/test_bibleManager.py | 71 ++++++++++--------- .../bibles/test/test_bibleManagerAPI.py | 59 ++++++++------- .../bibles/test/test_bibleManagerCSV.py | 45 +++++++----- .../bibles/test/test_bibleManagerOSIS.py | 41 ++++++----- openlp/plugins/custom/__init__.py | 6 +- openlp/plugins/custom/customplugin.py | 4 +- openlp/plugins/custom/forms/__init__.py | 6 +- .../plugins/custom/forms/editcustomdialog.py | 6 +- openlp/plugins/custom/forms/editcustomform.py | 5 +- openlp/plugins/custom/lib/__init__.py | 6 +- openlp/plugins/custom/lib/classes.py | 6 +- openlp/plugins/custom/lib/customtab.py | 6 +- openlp/plugins/custom/lib/manager.py | 4 +- openlp/plugins/custom/lib/mediaitem.py | 4 +- openlp/plugins/custom/lib/meta.py | 6 +- openlp/plugins/custom/lib/models.py | 6 +- openlp/plugins/custom/lib/tables.py | 4 +- openlp/plugins/images/__init__.py | 6 +- openlp/plugins/images/imageplugin.py | 4 +- openlp/plugins/images/lib/__init__.py | 6 +- openlp/plugins/images/lib/imagetab.py | 4 +- openlp/plugins/images/lib/mediaitem.py | 4 +- openlp/plugins/media/__init__.py | 6 +- openlp/plugins/media/lib/__init__.py | 6 +- openlp/plugins/media/lib/mediaitem.py | 4 +- openlp/plugins/media/mediaplugin.py | 4 +- openlp/plugins/presentations/__init__.py | 6 +- openlp/plugins/presentations/lib/__init__.py | 6 +- .../presentations/lib/impresscontroller.py | 12 ++-- openlp/plugins/presentations/lib/mediaitem.py | 6 +- .../presentations/lib/messagelistener.py | 10 +-- .../presentations/lib/powerpointcontroller.py | 6 +- .../presentations/lib/pptviewcontroller.py | 6 +- .../presentations/lib/pptviewlib/ppttest.py | 6 +- .../lib/presentationcontroller.py | 16 ++--- .../presentations/lib/presentationtab.py | 4 +- .../presentations/presentationplugin.py | 4 +- openlp/plugins/remotes/__init__.py | 6 +- openlp/plugins/remotes/lib/__init__.py | 6 +- openlp/plugins/remotes/lib/remotetab.py | 6 +- openlp/plugins/remotes/remoteclient.py | 4 +- openlp/plugins/remotes/remoteplugin.py | 4 +- openlp/plugins/songs/__init__.py | 6 +- openlp/plugins/songs/forms/__init__.py | 6 +- openlp/plugins/songs/forms/authorsdialog.py | 6 +- openlp/plugins/songs/forms/authorsform.py | 4 +- openlp/plugins/songs/forms/editsongdialog.py | 6 +- openlp/plugins/songs/forms/editsongform.py | 4 +- openlp/plugins/songs/forms/editversedialog.py | 4 +- openlp/plugins/songs/forms/editverseform.py | 4 +- .../plugins/songs/forms/openlpexportdialog.py | 4 +- .../plugins/songs/forms/openlpexportform.py | 4 +- .../plugins/songs/forms/openlpimportdialog.py | 4 +- .../plugins/songs/forms/openlpimportform.py | 6 +- .../songs/forms/opensongexportdialog.py | 4 +- .../plugins/songs/forms/opensongexportform.py | 4 +- .../songs/forms/opensongimportdialog.py | 4 +- .../plugins/songs/forms/opensongimportform.py | 4 +- openlp/plugins/songs/forms/songbookdialog.py | 6 +- openlp/plugins/songs/forms/songbookform.py | 4 +- .../songs/forms/songmaintenancedialog.py | 4 +- .../songs/forms/songmaintenanceform.py | 4 +- openlp/plugins/songs/forms/topicsdialog.py | 4 +- openlp/plugins/songs/forms/topicsform.py | 4 +- openlp/plugins/songs/lib/__init__.py | 6 +- openlp/plugins/songs/lib/classes.py | 6 +- openlp/plugins/songs/lib/manager.py | 4 +- openlp/plugins/songs/lib/mediaitem.py | 4 +- openlp/plugins/songs/lib/meta.py | 6 +- openlp/plugins/songs/lib/models.py | 6 +- openlp/plugins/songs/lib/songstab.py | 6 +- openlp/plugins/songs/lib/songxml.py | 6 +- openlp/plugins/songs/lib/tables.py | 6 +- openlp/plugins/songs/songsplugin.py | 4 +- openlp/plugins/songs/test/test_song_basic.py | 37 +++++----- .../plugins/songs/test/test_song_opensong.py | 60 +++++++++------- openlp/plugins/songs/test/test_song_text.py | 48 +++++++------ openlp/plugins/songs/test/test_song_verse.py | 63 ++++++++-------- openlp/plugins/songusage/__init__.py | 6 +- openlp/plugins/songusage/forms/__init__.py | 6 +- .../songusage/forms/songusagedeletedialog.py | 4 +- .../songusage/forms/songusagedeleteform.py | 4 +- .../songusage/forms/songusagedetaildialog.py | 4 +- .../songusage/forms/songusagedetailform.py | 5 +- openlp/plugins/songusage/lib/__init__.py | 6 +- openlp/plugins/songusage/lib/classes.py | 6 +- openlp/plugins/songusage/lib/manager.py | 4 +- openlp/plugins/songusage/lib/meta.py | 6 +- openlp/plugins/songusage/lib/models.py | 6 +- openlp/plugins/songusage/lib/tables.py | 6 +- openlp/plugins/songusage/songusageplugin.py | 4 +- openlpcnv.pyw | 4 +- ...lugins.presentations.presentationplugin.py | 27 ++++++- resources/pyinstaller/hook-openlp.py | 43 ++++++++--- scripts/bible-1to2-converter.py | 4 +- scripts/get-strings.py | 5 +- scripts/openlp-1to2-converter.py | 6 +- setup.py | 24 +++++++ 189 files changed, 971 insertions(+), 685 deletions(-) diff --git a/copyright.txt b/copyright.txt index a78b7d0d7..1a348a0df 100644 --- a/copyright.txt +++ b/copyright.txt @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp.pyw b/openlp.pyw index 1de9c8417..d9880865b 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -7,8 +7,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/__init__.py b/openlp/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/__init__.py +++ b/openlp/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 899b5cf73..fc6a4bf0c 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/baselistwithdnd.py b/openlp/core/lib/baselistwithdnd.py index f7095550a..bc043082c 100644 --- a/openlp/core/lib/baselistwithdnd.py +++ b/openlp/core/lib/baselistwithdnd.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/dockwidget.py b/openlp/core/lib/dockwidget.py index ce8302b43..fcee02af8 100644 --- a/openlp/core/lib/dockwidget.py +++ b/openlp/core/lib/dockwidget.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index be7dff67a..45eeb5145 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index fd6d37ca6..f735065a3 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index e98c789d0..57dd984c3 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/pluginconfig.py b/openlp/core/lib/pluginconfig.py index 41b902bbc..936a2f3a0 100644 --- a/openlp/core/lib/pluginconfig.py +++ b/openlp/core/lib/pluginconfig.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -190,4 +190,4 @@ class PluginConfig(object): name = u'last directory %d' % num else: name = u'last directory' - self.set_config(name, directory) \ No newline at end of file + self.set_config(name, directory) diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 2518f88be..fe48ccf0a 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 7892a1222..41b25df0a 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -1,4 +1,4 @@ - # -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 ############################################################################### @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 5e9b1c331..9a621979b 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 7d869a610..52da22d01 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index be5c14af1..fe2858cd0 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index f9d4aa8a0..d22d72750 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -90,4 +90,4 @@ class SettingsTab(QtGui.QWidget): """ Changes which need to be made after setup of application """ - pass \ No newline at end of file + pass diff --git a/openlp/core/lib/songxmlhandler.py b/openlp/core/lib/songxmlhandler.py index 12b0c2d47..4b0a26d7b 100644 --- a/openlp/core/lib/songxmlhandler.py +++ b/openlp/core/lib/songxmlhandler.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/themexmlhandler.py b/openlp/core/lib/themexmlhandler.py index 1271609a9..c30184328 100644 --- a/openlp/core/lib/themexmlhandler.py +++ b/openlp/core/lib/themexmlhandler.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/toolbar.py b/openlp/core/lib/toolbar.py index 3753fedc0..e50459943 100644 --- a/openlp/core/lib/toolbar.py +++ b/openlp/core/lib/toolbar.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/lib/xmlrootclass.py b/openlp/core/lib/xmlrootclass.py index c56474d17..78682c5a3 100644 --- a/openlp/core/lib/xmlrootclass.py +++ b/openlp/core/lib/xmlrootclass.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/test/test_mediamanageritem.py b/openlp/core/test/test_mediamanageritem.py index f9539174c..a80bcdb64 100644 --- a/openlp/core/test/test_mediamanageritem.py +++ b/openlp/core/test/test_mediamanageritem.py @@ -1,3 +1,28 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + import logging import os import sys diff --git a/openlp/core/test/test_plugin_manager.py b/openlp/core/test/test_plugin_manager.py index 1bc47d6d2..c927fce9b 100644 --- a/openlp/core/test/test_plugin_manager.py +++ b/openlp/core/test/test_plugin_manager.py @@ -1,3 +1,28 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + import logging import os import sys @@ -46,4 +71,4 @@ if __name__ == "__main__": log.debug(u'List of plugins found:') for plugin in t.p.plugins: log.debug(u'Plugin %s, name=%s (version=%d)' %(unicode(plugin), - plugin.name, plugin.version)) + plugin.name, plugin.version)) diff --git a/openlp/core/test/test_render.py b/openlp/core/test/test_render.py index 36052a6e9..92f79cf37 100644 --- a/openlp/core/test/test_render.py +++ b/openlp/core/test/test_render.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import sys import os @@ -135,13 +142,13 @@ class TestRender(TestRender_base): def test_longer(self): answer = self.renderer._render_single_line( - u'Test line with more words than fit on one line', - tlcorner = (10,10)) + u'Test line with more words than fit on one line', + tlcorner = (10,10)) assert(answer == (753,136)) def test_even_longer(self): answer = self.renderer._render_single_line( - u'Test line with more words than fit on either one or two lines', + u'Test line with more words than fit on either one or two lines', tlcorner = (10,10)) assert(answer == (753,199)) def test_lines(self): diff --git a/openlp/core/test/test_render_theme.py b/openlp/core/test/test_render_theme.py index 05f692393..2b5d1a2b5 100644 --- a/openlp/core/test/test_render_theme.py +++ b/openlp/core/test/test_render_theme.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import sys import os @@ -163,7 +170,7 @@ And drives away his fear. t = Theme(u'blank_theme.xml') t.BackgroundType = 2 t.BackgroundParameter1 = os.path.join(u'data_for_tests', - 'treessmall.jpg') + 'treessmall.jpg') t.BackgroundParameter2 = QtGui.QColor(0,0,64) t.BackgroundParameter3 = 0 t.VerticalAlign = 2 diff --git a/openlp/core/theme/__init__.py b/openlp/core/theme/__init__.py index b6b37022f..0975e977b 100644 --- a/openlp/core/theme/__init__.py +++ b/openlp/core/theme/__init__.py @@ -5,8 +5,9 @@ # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Martin Thompson, Tim Bentley, Carsten # -# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -22,4 +23,4 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from theme import Theme \ No newline at end of file +from theme import Theme diff --git a/openlp/core/theme/test/test_theme.py b/openlp/core/theme/test/test_theme.py index 024142508..2e8c2b500 100644 --- a/openlp/core/theme/test/test_theme.py +++ b/openlp/core/theme/test/test_theme.py @@ -1,3 +1,28 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + import os import os.path import sys @@ -49,7 +74,7 @@ def test_theme(): assert(theme.Outline == 0) assert(theme.Shadow == 0) assert(theme.VerticalAlign == 0) - + print "Tests passed" if __name__ == "__main__": diff --git a/openlp/core/theme/theme.py b/openlp/core/theme/theme.py index 27969c9d9..b01126564 100644 --- a/openlp/core/theme/theme.py +++ b/openlp/core/theme/theme.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -149,4 +149,4 @@ class Theme(object): for key in dir(self): if key[0:1] != u'_': theme_strings.append(u'%30s : %s' % (key, getattr(self, key))) - return u'\n'.join(theme_strings) \ No newline at end of file + return u'\n'.join(theme_strings) diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index c2f571c3b..414a9503a 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index c93c1f176..996f54452 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -142,13 +142,17 @@ class Ui_AboutDialog(object): ' Michael "cocooncrash" Gorven\n' ' Scott "sguerrieri" Guerrieri\n' ' Raoul "superfly" Snyman\n' - ' Maikel Stuivenberg\n' ' Martin "mijiti" Thompson\n' ' Jon "Meths" Tibble\n' + '\n' + 'Contributors\n' + ' Christian "crichter" Richter\n' + ' Maikel Stuivenberg\n' ' Carsten "catini" Tingaard\n' '\n' 'Testers\n' - ' Wesley "wrst" Stout' + ' Wesley "wrst" Stout\n' + ' Philip "Phill" Ridout' )) self.AboutNotebook.setTabText( self.AboutNotebook.indexOf(self.CreditsTab), @@ -158,8 +162,8 @@ class Ui_AboutDialog(object): 'Snyman\n' 'Portions copyright ' + u'\u00a9'.encode('utf8') + ' 2004-2009 ' 'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, ' - 'Maikel Stuivenberg, Martin Thompson, Jon Tibble, Carsten ' - 'Tinggaard\n' + 'Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon ' + 'Tibble, Carsten Tinggaard\n' '\n' 'This program is free software; you can redistribute it and/or ' 'modify it under the terms of the GNU General Public License as ' diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index c3eb7bdcb..fe576767f 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -53,4 +53,4 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog): """ import webbrowser url = u'http://www.openlp.org/en/documentation/introduction/contributing.html' - webbrowser.open_new(url) \ No newline at end of file + webbrowser.open_new(url) diff --git a/openlp/core/ui/amendthemedialog.py b/openlp/core/ui/amendthemedialog.py index 4cf8528f1..e819392e2 100644 --- a/openlp/core/ui/amendthemedialog.py +++ b/openlp/core/ui/amendthemedialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -685,4 +685,4 @@ class Ui_AmendThemeDialog(object): self.ThemeTabWidget.setTabText( self.ThemeTabWidget.indexOf(self.OtherOptionsTab), self.trUtf8('Other Options')) - self.PreviewGroupBox.setTitle(self.trUtf8('Preview')) \ No newline at end of file + self.PreviewGroupBox.setTitle(self.trUtf8('Preview')) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 97eecd1e8..97ae9858b 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index c65ea3dd0..c6a544430 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index f77d0a841..f16b3b455 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 30530669c..0fc0588ae 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/mediadockmanager.py b/openlp/core/ui/mediadockmanager.py index 0873133b2..574b181da 100644 --- a/openlp/core/ui/mediadockmanager.py +++ b/openlp/core/ui/mediadockmanager.py @@ -6,15 +6,15 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # # Software Foundation; version 2 of the License. # # # # This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANdockILITY or # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # # more details. # # # diff --git a/openlp/core/ui/plugindialog.py b/openlp/core/ui/plugindialog.py index a20e669cc..f4a1773c9 100644 --- a/openlp/core/ui/plugindialog.py +++ b/openlp/core/ui/plugindialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -105,4 +105,4 @@ class Ui_PluginViewDialog(object): self.AboutLabel.setText(self.trUtf8('About:')) self.StatusLabel.setText(self.trUtf8('Status:')) self.StatusComboBox.setItemText(0, self.trUtf8('Active')) - self.StatusComboBox.setItemText(1, self.trUtf8('Inactive')) \ No newline at end of file + self.StatusComboBox.setItemText(1, self.trUtf8('Inactive')) diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 9af8b7ca3..9969ed165 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index b85b3b003..baf7e0d5e 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -22,6 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### + import logging log = logging.getLogger(__name__) diff --git a/openlp/core/ui/serviceitemdialog.py b/openlp/core/ui/serviceitemdialog.py index 1fe86a913..e1d830c5e 100644 --- a/openlp/core/ui/serviceitemdialog.py +++ b/openlp/core/ui/serviceitemdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/serviceitemform.py b/openlp/core/ui/serviceitemform.py index 43011ead8..59183a161 100644 --- a/openlp/core/ui/serviceitemform.py +++ b/openlp/core/ui/serviceitemform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cec14fc8c..45bf0eb6d 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/settingsdialog.py b/openlp/core/ui/settingsdialog.py index 9ed843e60..7148b0478 100644 --- a/openlp/core/ui/settingsdialog.py +++ b/openlp/core/ui/settingsdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -59,4 +59,4 @@ class Ui_SettingsDialog(object): QtCore.QMetaObject.connectSlotsByName(SettingsDialog) def retranslateUi(self, SettingsDialog): - SettingsDialog.setWindowTitle(self.trUtf8('Settings')) \ No newline at end of file + SettingsDialog.setWindowTitle(self.trUtf8('Settings')) diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index b2db0f567..4d59b850f 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 51ad5b6b9..ecba32d8e 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/splashscreen.py b/openlp/core/ui/splashscreen.py index 69ef7910d..10cea5a11 100644 --- a/openlp/core/ui/splashscreen.py +++ b/openlp/core/ui/splashscreen.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -67,4 +67,4 @@ class SplashScreen(object): self.splash_screen.repaint() def finish(self, widget): - self.splash_screen.finish(widget) \ No newline at end of file + self.splash_screen.finish(widget) diff --git a/openlp/core/ui/test/test_service_manager.py b/openlp/core/ui/test/test_service_manager.py index a23819383..3755e459c 100644 --- a/openlp/core/ui/test/test_service_manager.py +++ b/openlp/core/ui/test/test_service_manager.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import sys import os diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 1d8be6499..3b211de28 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index b485745dd..fff8c384c 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -186,4 +186,4 @@ class ThemesTab(SettingsTab): preview = QtGui.QPixmap(unicode(image)) display = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) - self.DefaultListView.setPixmap(display) \ No newline at end of file + self.DefaultListView.setPixmap(display) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index d29ff17b4..1b32416f1 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/utils/confighelper.py b/openlp/core/utils/confighelper.py index 7920013f2..c2be4bd24 100644 --- a/openlp/core/utils/confighelper.py +++ b/openlp/core/utils/confighelper.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/utils/registry.py b/openlp/core/utils/registry.py index 2abbf81bb..ba7c72a89 100644 --- a/openlp/core/utils/registry.py +++ b/openlp/core/utils/registry.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -127,4 +127,4 @@ class Registry(object): return False finally: if file_handle: - file_handle.close() \ No newline at end of file + file_handle.close() diff --git a/openlp/migration/__init__.py b/openlp/migration/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/migration/__init__.py +++ b/openlp/migration/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/migration/display.py b/openlp/migration/display.py index 52951d31f..8553f432a 100644 --- a/openlp/migration/display.py +++ b/openlp/migration/display.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index f9e10b756..cd07aa032 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -29,4 +29,4 @@ class MigrateBibles(): def process(self): self.display.output(u'Bible process started') - self.display.output(u'Bible process finished') \ No newline at end of file + self.display.output(u'Bible process finished') diff --git a/openlp/migration/migratefiles.py b/openlp/migration/migratefiles.py index f1c9435ab..4fa6b5a29 100644 --- a/openlp/migration/migratefiles.py +++ b/openlp/migration/migratefiles.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -46,4 +46,4 @@ class MigrateFiles(): self.display.sub_output(u'images created') ConfigHelper.get_config(u'presentations', u'data path') self.display.sub_output(u'presentations created') - self.display.output(u'Initial Setup finished') \ No newline at end of file + self.display.output(u'Initial Setup finished') diff --git a/openlp/migration/migratesongs.py b/openlp/migration/migratesongs.py index 66a738768..89b55bdee 100644 --- a/openlp/migration/migratesongs.py +++ b/openlp/migration/migratesongs.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -198,4 +198,4 @@ class MigrateSongs(): conn.execute(u'drop table songauthors_temp;') conn.commit() conn.execute(u'drop table settings;') - conn.commit() \ No newline at end of file + conn.commit() diff --git a/openlp/plugins/__init__.py b/openlp/plugins/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/__init__.py +++ b/openlp/plugins/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/alerts/__init__.py b/openlp/plugins/alerts/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/alerts/__init__.py +++ b/openlp/plugins/alerts/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 90e7946c7..983d5c1a4 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/forms/__init__.py b/openlp/plugins/alerts/forms/__init__.py index 14c30d73b..ba32fdcd1 100644 --- a/openlp/plugins/alerts/forms/__init__.py +++ b/openlp/plugins/alerts/forms/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index 53fc1fff5..442cfadd2 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -1,11 +1,27 @@ # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -# Form implementation generated from reading ui file 'alertform.ui' -# -# Created: Sat Feb 13 08:19:51 2010 -# by: PyQt4 UI code generator 4.6.2 -# -# WARNING! All changes made in this file will be lost! +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### from PyQt4 import QtCore, QtGui diff --git a/openlp/plugins/alerts/forms/alerteditdialog.py b/openlp/plugins/alerts/forms/alerteditdialog.py index 6cf4769ef..c89462887 100644 --- a/openlp/plugins/alerts/forms/alerteditdialog.py +++ b/openlp/plugins/alerts/forms/alerteditdialog.py @@ -1,11 +1,27 @@ # -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -# Form implementation generated from reading ui file 'alerteditdialog.ui' -# -# Created: Sun Feb 14 16:45:10 2010 -# by: PyQt4 UI code generator 4.6.2 -# -# WARNING! All changes made in this file will be lost! +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### from PyQt4 import QtCore, QtGui diff --git a/openlp/plugins/alerts/forms/alerteditform.py b/openlp/plugins/alerts/forms/alerteditform.py index a88eff4f3..c8038054e 100644 --- a/openlp/plugins/alerts/forms/alerteditform.py +++ b/openlp/plugins/alerts/forms/alerteditform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 2d7dd1c21..0d21cf4b9 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/forms/alertstab.py b/openlp/plugins/alerts/forms/alertstab.py index c842c2e20..4942b8ede 100644 --- a/openlp/plugins/alerts/forms/alertstab.py +++ b/openlp/plugins/alerts/forms/alertstab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/lib/__init__.py b/openlp/plugins/alerts/lib/__init__.py index c39574719..59a27b28e 100644 --- a/openlp/plugins/alerts/lib/__init__.py +++ b/openlp/plugins/alerts/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -22,5 +22,6 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### + from alertsmanager import AlertsManager from manager import DBManager diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index 41fc25562..3b61125f4 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/lib/classes.py b/openlp/plugins/alerts/lib/classes.py index eec21300c..fd1883b71 100644 --- a/openlp/plugins/alerts/lib/classes.py +++ b/openlp/plugins/alerts/lib/classes.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/lib/manager.py b/openlp/plugins/alerts/lib/manager.py index a3ed1ee7e..ec4654807 100644 --- a/openlp/plugins/alerts/lib/manager.py +++ b/openlp/plugins/alerts/lib/manager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/lib/meta.py b/openlp/plugins/alerts/lib/meta.py index 38b0f7206..affa31969 100644 --- a/openlp/plugins/alerts/lib/meta.py +++ b/openlp/plugins/alerts/lib/meta.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -35,4 +35,4 @@ session = None # Global metadata. If you have multiple databases with overlapping table # names, you'll need a metadata for each database -metadata = MetaData() \ No newline at end of file +metadata = MetaData() diff --git a/openlp/plugins/alerts/lib/models.py b/openlp/plugins/alerts/lib/models.py index 4f556cd23..d95ebce5d 100644 --- a/openlp/plugins/alerts/lib/models.py +++ b/openlp/plugins/alerts/lib/models.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/alerts/lib/tables.py b/openlp/plugins/alerts/lib/tables.py index 0a731fb13..0e707570d 100644 --- a/openlp/plugins/alerts/lib/tables.py +++ b/openlp/plugins/alerts/lib/tables.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/__init__.py b/openlp/plugins/bibles/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/bibles/__init__.py +++ b/openlp/plugins/bibles/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 580d2f590..01c92141f 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/forms/__init__.py b/openlp/plugins/bibles/forms/__init__.py index dd504d347..312aa7506 100644 --- a/openlp/plugins/bibles/forms/__init__.py +++ b/openlp/plugins/bibles/forms/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -25,4 +25,4 @@ from importwizardform import ImportWizardForm -__all__ = ['ImportWizardForm'] \ No newline at end of file +__all__ = ['ImportWizardForm'] diff --git a/openlp/plugins/bibles/forms/bibleimportwizard.py b/openlp/plugins/bibles/forms/bibleimportwizard.py index 59e38e39a..2313072d3 100644 --- a/openlp/plugins/bibles/forms/bibleimportwizard.py +++ b/openlp/plugins/bibles/forms/bibleimportwizard.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index a24ccf8a4..c93383263 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index f60ef5bbc..a69db14b3 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -26,4 +26,4 @@ from common import BibleCommon from manager import BibleManager from biblestab import BiblesTab -from mediaitem import BibleMediaItem \ No newline at end of file +from mediaitem import BibleMediaItem diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index 398040fd8..4c205b920 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/common.py b/openlp/plugins/bibles/lib/common.py index 353d7e116..eef9b4dc3 100644 --- a/openlp/plugins/bibles/lib/common.py +++ b/openlp/plugins/bibles/lib/common.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index a1a16339c..2f40e4b96 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index d6a6d10ca..c57ecb83e 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index da129fa22..0b0eca99e 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index e3647e129..9e616105c 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 5f85b81e1..2d6233a6c 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/models.py b/openlp/plugins/bibles/lib/models.py index 2802cb27f..4631b1e32 100644 --- a/openlp/plugins/bibles/lib/models.py +++ b/openlp/plugins/bibles/lib/models.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 43b9e71a3..247c97672 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 894feb8d8..8cd04901b 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/test/__init__.py b/openlp/plugins/bibles/test/__init__.py index e69de29bb..1a348a0df 100644 --- a/openlp/plugins/bibles/test/__init__.py +++ b/openlp/plugins/bibles/test/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### diff --git a/openlp/plugins/bibles/test/test_bibleManager.py b/openlp/plugins/bibles/test/test_bibleManager.py index 00af3a2c9..48868d339 100644 --- a/openlp/plugins/bibles/test/test_bibleManager.py +++ b/openlp/plugins/bibles/test/test_bibleManager.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import logging import os @@ -52,25 +59,25 @@ class TestBibleManager: # Register a bible from files log.debug(u'\n.......testRegisterBibleFiles') self.bm.registerFileBible(u'TheMessage','biblebooks_msg_short.csv','bibleverses_msg_short.csv') - self.bm.registerFileBible(u'NIV','biblebooks_niv_short.csv','bibleverses_niv_short.csv') + self.bm.registerFileBible(u'NIV','biblebooks_niv_short.csv','bibleverses_niv_short.csv') b = self.bm.get_bibles() for b1 in b: log.debug( b1) - assert(b1 in b) - + assert(b1 in b) + def testRegisterHTTPBible(self): # Register a bible from files log.debug( '\n.......testRegisterBibleHTTP') self.bm.registerHTTPBible(u'asv', u'Crosswalk', u'', u'', u'') self.bm.registerHTTPBible(u'nasb', u'Biblegateway', u'', u'', u'') self.bm.registerHTTPBible(u'nkj', u'Biblegateway', - u'http://tigger2:3128/', u'', u'') + u'http://tigger2:3128/', u'', u'') b = self.bm.get_bibles() for b1 in b: log.debug( b1) - assert(b1 in b) + assert(b1 in b) + - def testGetBibles(self): log.debug(u'\n.......testGetBibles') # make sure the shuffled sequence does not lose any elements @@ -85,33 +92,33 @@ class TestBibleManager: for c1 in c: log.debug( c1) assert(c1 in c) - + def testGetBookChapterCount(self): - log.debug(u'\n.......testGetBookChapterCount') + log.debug(u'\n.......testGetBookChapterCount') assert(self.bm.get_book_chapter_count(u'Matthew') == '28') def testGetBookVerseCount(self): - log.debug(u'\n.......testGetBookVerseCount') + log.debug(u'\n.......testGetBookVerseCount') assert(self.bm.get_book_verse_count(u'Genesis', 1) == '31') assert(self.bm.get_book_verse_count(u'Genesis', 2) == '25') assert(self.bm.get_book_verse_count(u'Matthew', 1) == '25') - assert(self.bm.get_book_verse_count(u'Revelation', 1) == '20') + assert(self.bm.get_book_verse_count(u'Revelation', 1) == '20') def testGetVerseText(self): log.debug(u'\n.......testGetVerseText') #c = self.bm.get_verse_text(u'TheMessage",'Genesis',1,2,1) #log.debug( c ) #c = self.bm.get_verse_text(u'NIV','Genesis',1,1,2) - #log.debug( c ) + #log.debug( c ) c = self.bm.get_verse_text(u'asv','Genesis',10,1,20) log.debug( c ) c = self.bm.get_verse_text(u'nasb','Genesis',10,1,20) - log.debug( c ) + log.debug( c ) c = self.bm.get_verse_text(u'nkj','Revelation',10,1,20) - log.debug( c ) - + log.debug( c ) + def testLoadBible(self): log.debug(u'\n.......testLoadBible') #self.bm.loadBible(u'asv') - #self.bm.loadBible(u'nasb') - #self.bm.loadBible(u'nkj') + #self.bm.loadBible(u'nasb') + #self.bm.loadBible(u'nkj') diff --git a/openlp/plugins/bibles/test/test_bibleManagerAPI.py b/openlp/plugins/bibles/test/test_bibleManagerAPI.py index 1cae4237b..3cc329f4a 100644 --- a/openlp/plugins/bibles/test/test_bibleManagerAPI.py +++ b/openlp/plugins/bibles/test/test_bibleManagerAPI.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import logging import os @@ -47,7 +54,7 @@ class TestBibleManager: def setup_class(self): log.debug(u'\n.......Register BM') self.bm = BibleManager() - + def testGetBibles(self): log.debug(u'\n.......testGetBibles') # make sure the shuffled sequence does not lose any elements @@ -62,32 +69,32 @@ class TestBibleManager: for c1 in c: log.debug( c1) assert(c1 in c) - + def testGetBookChapterCount(self): - log.debug(u'\n.......testGetBookChapterCount') + log.debug(u'\n.......testGetBookChapterCount') assert(self.bm.getBookChapterCount(u'asv', u'Matthew')[0] == 28) def testGetBookVerseCount(self): - log.debug(u'\n.......testGetBookVerseCount') + log.debug(u'\n.......testGetBookVerseCount') assert(self.bm.getBookVerseCount(u'asv', u'Genesis', 1)[0] == 31) assert(self.bm.getBookVerseCount(u'TheMessage', u'Genesis', 2)[0] == 25) assert(self.bm.getBookVerseCount(u'asv', u'Matthew', 1)[0] == 25) assert(self.bm.getBookVerseCount(u'TheMessage', u'Revelation', - 1)[0] == 20) + 1)[0] == 20) def testGetVerseText(self): log.debug(u'\n.......testGetVerseText') #c = self.bm.getVerseText(u'TheMessage",'Genesis',1,2,1) #log.debug( c ) #c = self.bm.getVerseText(u'NIV','Genesis',1,1,2) - #log.debug( c ) + #log.debug( c ) c = self.bm.getVerseText(u'asv', u'Genesis', 10, 1, 20) log.debug( c ) c = self.bm.getVerseText(u'TheMessage', u'Genesis', 10, 1, 20) - log.debug( c ) + log.debug( c ) c = self.bm.getVerseText(u'asv', u'Revelation', 10, 1, 20) - log.debug( c ) + log.debug( c ) c = self.bm.getVersesFromText(u'asv', u'Jesus wept') - log.debug( c ) + log.debug( c ) c = self.bm.getVersesFromText(u'TheMessage', u'Jesus wept') - log.debug( c ) + log.debug( c ) diff --git a/openlp/plugins/bibles/test/test_bibleManagerCSV.py b/openlp/plugins/bibles/test/test_bibleManagerCSV.py index 239338ebf..865e91a81 100644 --- a/openlp/plugins/bibles/test/test_bibleManagerCSV.py +++ b/openlp/plugins/bibles/test/test_bibleManagerCSV.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import logging import os @@ -52,10 +59,10 @@ class TestBibleManager: # Register a bible from files log.debug(u'\n.......testRegisterBibleFiles') self.bm.registerCSVFileBible(u'TheMessage', - u'biblebooks_msg_short.csv', u'bibleverses_msg_short.csv') + u'biblebooks_msg_short.csv', u'bibleverses_msg_short.csv') self.bm.registerCSVFileBible(u'NIV', u'biblebooks_niv_short.csv', - u'bibleverses_niv_short.csv') + u'bibleverses_niv_short.csv') b = self.bm.get_bibles() for b1 in b: log.debug( b1) - assert(b1 in b) + assert(b1 in b) diff --git a/openlp/plugins/bibles/test/test_bibleManagerOSIS.py b/openlp/plugins/bibles/test/test_bibleManagerOSIS.py index bf1264050..9aea52a50 100644 --- a/openlp/plugins/bibles/test/test_bibleManagerOSIS.py +++ b/openlp/plugins/bibles/test/test_bibleManagerOSIS.py @@ -1,20 +1,27 @@ -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import logging import os @@ -55,4 +62,4 @@ class TestBibleManager: b = self.bm.get_bibles() for b1 in b: log.debug( b1) - assert(b1 in b) + assert(b1 in b) diff --git a/openlp/plugins/custom/__init__.py b/openlp/plugins/custom/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/custom/__init__.py +++ b/openlp/plugins/custom/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index 29905a760..979df411c 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index 994868dab..4a4a88237 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -23,4 +23,4 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from editcustomform import EditCustomForm \ No newline at end of file +from editcustomform import EditCustomForm diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index f2fa195cb..35af9ce8d 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -164,4 +164,4 @@ class Ui_customEditDialog(object): self.ClearButton.setToolTip(self.trUtf8('Clear edit area')) self.ThemeLabel.setText(self.trUtf8('Theme:')) self.ThemeComboBox.setToolTip(self.trUtf8('Set Theme for Slides')) - self.CreditLabel.setText(self.trUtf8('Credits:')) \ No newline at end of file + self.CreditLabel.setText(self.trUtf8('Credits:')) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index bb2607a74..410bd6fed 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -22,6 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### + import logging from PyQt4 import QtCore, QtGui diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py index 9fedfa9d6..e62669ad3 100644 --- a/openlp/plugins/custom/lib/__init__.py +++ b/openlp/plugins/custom/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -25,4 +25,4 @@ from manager import CustomManager from mediaitem import CustomMediaItem -from customtab import CustomTab \ No newline at end of file +from customtab import CustomTab diff --git a/openlp/plugins/custom/lib/classes.py b/openlp/plugins/custom/lib/classes.py index 32707ea08..305852df2 100644 --- a/openlp/plugins/custom/lib/classes.py +++ b/openlp/plugins/custom/lib/classes.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -43,4 +43,4 @@ class CustomSlide(BaseModel): """ Custom Slide model """ - pass \ No newline at end of file + pass diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py index f42132a79..cceca1148 100644 --- a/openlp/plugins/custom/lib/customtab.py +++ b/openlp/plugins/custom/lib/customtab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -71,4 +71,4 @@ class CustomTab(SettingsTab): self.DisplayFooterCheckBox.setChecked(self.displayFooter) def save(self): - self.config.set_config(u'display footer', unicode(self.displayFooter)) \ No newline at end of file + self.config.set_config(u'display footer', unicode(self.displayFooter)) diff --git a/openlp/plugins/custom/lib/manager.py b/openlp/plugins/custom/lib/manager.py index 1368b89ee..2deee9ba2 100644 --- a/openlp/plugins/custom/lib/manager.py +++ b/openlp/plugins/custom/lib/manager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 61d1b05d7..4679be69f 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/custom/lib/meta.py b/openlp/plugins/custom/lib/meta.py index 38b0f7206..affa31969 100644 --- a/openlp/plugins/custom/lib/meta.py +++ b/openlp/plugins/custom/lib/meta.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -35,4 +35,4 @@ session = None # Global metadata. If you have multiple databases with overlapping table # names, you'll need a metadata for each database -metadata = MetaData() \ No newline at end of file +metadata = MetaData() diff --git a/openlp/plugins/custom/lib/models.py b/openlp/plugins/custom/lib/models.py index 809397031..d75968882 100644 --- a/openlp/plugins/custom/lib/models.py +++ b/openlp/plugins/custom/lib/models.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -36,4 +36,4 @@ def init_models(url): session = scoped_session(sessionmaker(autoflush=True, autocommit=False, bind=engine)) mapper(CustomSlide, custom_slide_table) - return session \ No newline at end of file + return session diff --git a/openlp/plugins/custom/lib/tables.py b/openlp/plugins/custom/lib/tables.py index 13c9de5b9..bb86d9d6d 100644 --- a/openlp/plugins/custom/lib/tables.py +++ b/openlp/plugins/custom/lib/tables.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/images/__init__.py b/openlp/plugins/images/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/images/__init__.py +++ b/openlp/plugins/images/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 37219b5db..ec1a637e1 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/images/lib/__init__.py b/openlp/plugins/images/lib/__init__.py index 40123fe65..f5312fd6a 100644 --- a/openlp/plugins/images/lib/__init__.py +++ b/openlp/plugins/images/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -24,4 +24,4 @@ ############################################################################### from mediaitem import ImageMediaItem -from imagetab import ImageTab \ No newline at end of file +from imagetab import ImageTab diff --git a/openlp/plugins/images/lib/imagetab.py b/openlp/plugins/images/lib/imagetab.py index b70006bdb..203b36842 100644 --- a/openlp/plugins/images/lib/imagetab.py +++ b/openlp/plugins/images/lib/imagetab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 1542faa1e..7ec031db7 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/media/__init__.py b/openlp/plugins/media/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/media/__init__.py +++ b/openlp/plugins/media/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/media/lib/__init__.py b/openlp/plugins/media/lib/__init__.py index 0ba6b6bf6..a5406d6a8 100644 --- a/openlp/plugins/media/lib/__init__.py +++ b/openlp/plugins/media/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -25,4 +25,4 @@ from mediaitem import MediaMediaItem -__all__ = ['MediaMediaItem'] \ No newline at end of file +__all__ = ['MediaMediaItem'] diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index c91440c5c..f16ffb5e7 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 096d53aea..1fb7d7405 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/presentations/__init__.py b/openlp/plugins/presentations/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/presentations/__init__.py +++ b/openlp/plugins/presentations/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/presentations/lib/__init__.py b/openlp/plugins/presentations/lib/__init__.py index 39139fe45..a89b62fbe 100644 --- a/openlp/plugins/presentations/lib/__init__.py +++ b/openlp/plugins/presentations/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -26,4 +26,4 @@ from presentationcontroller import PresentationController from messagelistener import MessageListener from mediaitem import PresentationMediaItem -from presentationtab import PresentationTab \ No newline at end of file +from presentationtab import PresentationTab diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 2756f718e..dd0f86840 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -178,7 +178,7 @@ class ImpressDocument(PresentationDocument): self.presentation = None self.control = None self.store_filename(presentation) - + def load_presentation(self): """ Called when a presentation is added to the SlideController. @@ -218,7 +218,7 @@ class ImpressDocument(PresentationDocument): self.presentation.Display = self.controller.plugin.render_manager.screens.current_display + 1 self.control = None self.create_thumbnails() - + def create_thumbnails(self): """ Create thumbnail images for presentation @@ -307,7 +307,7 @@ class ImpressDocument(PresentationDocument): def blank_screen(self): log.debug(u'blank screen OpenOffice') self.control.blankScreen(0) - + def is_blank(self): """ Returns true if screen is blank @@ -384,7 +384,7 @@ class ImpressDocument(PresentationDocument): if shape.supportsService("com.sun.star.drawing.Text"): text += shape.getString() + '\n' return text - + def get_slide_notes(self, slide_no): """ Returns the text on the slide diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 37d50d01c..35ec1721b 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -58,7 +58,7 @@ class PresentationMediaItem(MediaManagerItem): self.ListViewWithDnD_class = PresentationListView MediaManagerItem.__init__(self, parent, icon, title) self.message_listener = MessageListener(self) - + def initPluginNameVisible(self): self.PluginNameVisible = self.trUtf8('Presentation') diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 08aa7e73a..39717d42d 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -151,7 +151,7 @@ class Controller(object): #self.timer.stop() def blank(self): - log.debug(u'Live = %s, blank' % self.isLive) + log.debug(u'Live = %s, blank' % self.isLive) if not self.isLive: return if not self.doc.is_loaded(): @@ -161,7 +161,7 @@ class Controller(object): self.doc.blank_screen() def unblank(self): - log.debug(u'Live = %s, unblank' % self.isLive) + log.debug(u'Live = %s, unblank' % self.isLive) if not self.isLive: return self.activate() @@ -218,7 +218,7 @@ class MessageListener(object): self.handler = self.mediaitem.findControllerByType(file) if not self.handler: return - + if isLive: controller = self.liveHandler else: diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 2137496a5..45d040b45 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -294,7 +294,7 @@ class PowerpointDocument(PresentationDocument): shape = shapes(idx + 1) if shape.HasTextFrame: text += shape.TextFrame.TextRange.Text + '\n' - return text + return text def get_slide_notes(self, slide_no): """ diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 6bec8dbf1..574441850 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -112,7 +112,7 @@ class PptviewDocument(PresentationDocument): """ Called when a presentation is added to the SlideController. It builds the environment, starts communcations with the background - PptView task started earlier. + PptView task started earlier. ``presentation`` The file name of the presentations to run. diff --git a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py index 7344268b8..b4a82d236 100644 --- a/openlp/plugins/presentations/lib/pptviewlib/ppttest.py +++ b/openlp/plugins/presentations/lib/pptviewlib/ppttest.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -168,4 +168,4 @@ if __name__ == '__main__': app = QtGui.QApplication(sys.argv) qb = PPTViewer() qb.show() - sys.exit(app.exec_()) \ No newline at end of file + sys.exit(app.exec_()) diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index ae41a56b1..382d24b8e 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -144,12 +144,12 @@ class PresentationController(object): """ log.debug(u'remove_doc Presentation') self.docs.remove(doc) - + class PresentationDocument(object): """ Base class for presentation documents to inherit from. - Loads and closes the presentation as well as triggering the correct + Loads and closes the presentation as well as triggering the correct activities based on the users input **Hook Functions** @@ -235,7 +235,7 @@ class PresentationDocument(object): def get_file_name(self, presentation): return os.path.split(presentation)[1] - + def get_thumbnail_path(self, presentation): return os.path.join(self.controller.thumbnailroot, self.get_file_name(presentation)) @@ -259,7 +259,7 @@ class PresentationDocument(object): self.controller.delete_doc(self) def is_active(self): - """ + """ Returns True if a presentation is currently running """ return False @@ -287,7 +287,7 @@ class PresentationDocument(object): Returns true if screen is blank """ return False - + def stop_presentation(self): """ Stops the presentation, removing it from the output display @@ -368,7 +368,7 @@ class PresentationDocument(object): The slide the text is required for, starting at 1 """ return '' - + def get_slide_notes(self, slide_no): """ Returns the text on the slide diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index 0ef7e17d1..cf18359b1 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 3f33090f6..5968f1ad9 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/remotes/__init__.py b/openlp/plugins/remotes/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/remotes/__init__.py +++ b/openlp/plugins/remotes/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/remotes/lib/__init__.py b/openlp/plugins/remotes/lib/__init__.py index ebd77bdae..bb613fb53 100644 --- a/openlp/plugins/remotes/lib/__init__.py +++ b/openlp/plugins/remotes/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -23,4 +23,4 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from remotetab import RemoteTab \ No newline at end of file +from remotetab import RemoteTab diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index a1f70ccbf..31af42ff2 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -61,4 +61,4 @@ class RemoteTab(SettingsTab): def save(self): self.config.set_config( - u'remote port', unicode(self.RemotePortSpinBox.value())) \ No newline at end of file + u'remote port', unicode(self.RemotePortSpinBox.value())) diff --git a/openlp/plugins/remotes/remoteclient.py b/openlp/plugins/remotes/remoteclient.py index 857a7fc7e..5939b9f26 100755 --- a/openlp/plugins/remotes/remoteclient.py +++ b/openlp/plugins/remotes/remoteclient.py @@ -7,8 +7,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index acfa6f97d..4e01e43ee 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/__init__.py b/openlp/plugins/songs/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/songs/__init__.py +++ b/openlp/plugins/songs/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index cc36ff0fa..f850a3adb 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -33,4 +33,4 @@ from songmaintenanceform import SongMaintenanceForm from openlpexportform import OpenLPExportForm from openlpimportform import OpenLPImportForm from opensongexportform import OpenSongExportForm -from opensongimportform import OpenSongImportForm \ No newline at end of file +from opensongimportform import OpenSongImportForm diff --git a/openlp/plugins/songs/forms/authorsdialog.py b/openlp/plugins/songs/forms/authorsdialog.py index 269874011..ca28f461c 100644 --- a/openlp/plugins/songs/forms/authorsdialog.py +++ b/openlp/plugins/songs/forms/authorsdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -76,4 +76,4 @@ class Ui_AuthorsDialog(object): AuthorsDialog.setWindowTitle(self.trUtf8('Author Maintenance')) self.DisplayLabel.setText(self.trUtf8('Display name:')) self.FirstNameLabel.setText(self.trUtf8('First name:')) - self.LastNameLabel.setText(self.trUtf8('Last name:')) \ No newline at end of file + self.LastNameLabel.setText(self.trUtf8('Last name:')) diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index bbdb724af..d1cb24761 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index e0a2ec185..87f7d3601 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -447,4 +447,4 @@ class Ui_EditSongDialog(object): self.CommentsGroupBox.setTitle(self.trUtf8('Comments')) self.SongTabWidget.setTabText( self.SongTabWidget.indexOf(self.ThemeTab), - self.trUtf8('Theme, Copyright Info && Comments')) \ No newline at end of file + self.trUtf8('Theme, Copyright Info && Comments')) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 183af6a44..f6e0c11f5 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 89e704c87..7829e2c27 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 99dfd6d69..7fdea7e8f 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/openlpexportdialog.py b/openlp/plugins/songs/forms/openlpexportdialog.py index ca23498f4..ca7a77153 100644 --- a/openlp/plugins/songs/forms/openlpexportdialog.py +++ b/openlp/plugins/songs/forms/openlpexportdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/openlpexportform.py b/openlp/plugins/songs/forms/openlpexportform.py index 474034e33..f0f98ad05 100644 --- a/openlp/plugins/songs/forms/openlpexportform.py +++ b/openlp/plugins/songs/forms/openlpexportform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/openlpimportdialog.py b/openlp/plugins/songs/forms/openlpimportdialog.py index 4746c57d2..61732d978 100644 --- a/openlp/plugins/songs/forms/openlpimportdialog.py +++ b/openlp/plugins/songs/forms/openlpimportdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/openlpimportform.py b/openlp/plugins/songs/forms/openlpimportform.py index 192ca0a81..e30d13466 100644 --- a/openlp/plugins/songs/forms/openlpimportform.py +++ b/openlp/plugins/songs/forms/openlpimportform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -30,4 +30,4 @@ class OpenLPImportForm(QtGui.QDialog, Ui_OpenLPImportDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) - self.setupUi(self) \ No newline at end of file + self.setupUi(self) diff --git a/openlp/plugins/songs/forms/opensongexportdialog.py b/openlp/plugins/songs/forms/opensongexportdialog.py index 967e8110f..c40800dfa 100644 --- a/openlp/plugins/songs/forms/opensongexportdialog.py +++ b/openlp/plugins/songs/forms/opensongexportdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/opensongexportform.py b/openlp/plugins/songs/forms/opensongexportform.py index 6d47f360d..75a732bd5 100644 --- a/openlp/plugins/songs/forms/opensongexportform.py +++ b/openlp/plugins/songs/forms/opensongexportform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/opensongimportdialog.py b/openlp/plugins/songs/forms/opensongimportdialog.py index 075110220..e0fd23821 100644 --- a/openlp/plugins/songs/forms/opensongimportdialog.py +++ b/openlp/plugins/songs/forms/opensongimportdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/opensongimportform.py b/openlp/plugins/songs/forms/opensongimportform.py index 3c8672c7f..6161e4d61 100644 --- a/openlp/plugins/songs/forms/opensongimportform.py +++ b/openlp/plugins/songs/forms/opensongimportform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/songbookdialog.py b/openlp/plugins/songs/forms/songbookdialog.py index 6897287e5..823e20eba 100644 --- a/openlp/plugins/songs/forms/songbookdialog.py +++ b/openlp/plugins/songs/forms/songbookdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -67,4 +67,4 @@ class Ui_SongBookDialog(object): def retranslateUi(self, SongBookDialog): SongBookDialog.setWindowTitle(self.trUtf8('Edit Book')) self.NameLabel.setText(self.trUtf8('Name:')) - self.PublisherLabel.setText(self.trUtf8('Publisher:')) \ No newline at end of file + self.PublisherLabel.setText(self.trUtf8('Publisher:')) diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index 93a746620..d345a82d7 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index 643676ff6..cbd08f34d 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/songmaintenanceform.py b/openlp/plugins/songs/forms/songmaintenanceform.py index d8d6bb5b2..44ad517e1 100644 --- a/openlp/plugins/songs/forms/songmaintenanceform.py +++ b/openlp/plugins/songs/forms/songmaintenanceform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/topicsdialog.py b/openlp/plugins/songs/forms/topicsdialog.py index 777db5a52..122af0455 100644 --- a/openlp/plugins/songs/forms/topicsdialog.py +++ b/openlp/plugins/songs/forms/topicsdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 7d2881479..42ef220f4 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 98dbccae4..338a88b91 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -25,4 +25,4 @@ from manager import SongManager from songstab import SongsTab -from mediaitem import SongMediaItem \ No newline at end of file +from mediaitem import SongMediaItem diff --git a/openlp/plugins/songs/lib/classes.py b/openlp/plugins/songs/lib/classes.py index 95e444a62..171bbdc48 100644 --- a/openlp/plugins/songs/lib/classes.py +++ b/openlp/plugins/songs/lib/classes.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -62,4 +62,4 @@ class Topic(BaseModel): """ Topic model """ - pass \ No newline at end of file + pass diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 0e662dcbc..87f0e6132 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index cd440e54f..151dc8118 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/lib/meta.py b/openlp/plugins/songs/lib/meta.py index 38b0f7206..affa31969 100644 --- a/openlp/plugins/songs/lib/meta.py +++ b/openlp/plugins/songs/lib/meta.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -35,4 +35,4 @@ session = None # Global metadata. If you have multiple databases with overlapping table # names, you'll need a metadata for each database -metadata = MetaData() \ No newline at end of file +metadata = MetaData() diff --git a/openlp/plugins/songs/lib/models.py b/openlp/plugins/songs/lib/models.py index d07c7f9fa..400bd7477 100644 --- a/openlp/plugins/songs/lib/models.py +++ b/openlp/plugins/songs/lib/models.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -44,4 +44,4 @@ def init_models(url): 'topics': relation(Topic, backref='songs', secondary=songs_topics_table)}) mapper(Topic, topics_table) - return session \ No newline at end of file + return session diff --git a/openlp/plugins/songs/lib/songstab.py b/openlp/plugins/songs/lib/songstab.py index 7a4feb449..392b15691 100644 --- a/openlp/plugins/songs/lib/songstab.py +++ b/openlp/plugins/songs/lib/songstab.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -89,4 +89,4 @@ class SongsTab(SettingsTab): def save(self): self.config.set_config(u'search as type', unicode(self.song_search)) - self.config.set_config(u'display songbar', unicode(self.song_bar)) \ No newline at end of file + self.config.set_config(u'display songbar', unicode(self.song_bar)) diff --git a/openlp/plugins/songs/lib/songxml.py b/openlp/plugins/songs/lib/songxml.py index f9cef7fce..71506ff2d 100644 --- a/openlp/plugins/songs/lib/songxml.py +++ b/openlp/plugins/songs/lib/songxml.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -669,4 +669,4 @@ class Song(object): return res __all__ = ['SongException', 'SongTitleError', 'SongSlideError', 'SongTypeError', - 'SongFeatureError', 'Song'] \ No newline at end of file + 'SongFeatureError', 'Song'] diff --git a/openlp/plugins/songs/lib/tables.py b/openlp/plugins/songs/lib/tables.py index 817d4c296..24137d7b1 100644 --- a/openlp/plugins/songs/lib/tables.py +++ b/openlp/plugins/songs/lib/tables.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -96,4 +96,4 @@ Index(u'authors_songs_song', authors_songs_table.c.song_id, Index(u'topics_song_topic', songs_topics_table.c.topic_id, songs_topics_table.c.song_id) Index(u'topics_song_song', songs_topics_table.c.song_id, - songs_topics_table.c.topic_id) \ No newline at end of file + songs_topics_table.c.topic_id) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 9ebaa99b2..152392443 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songs/test/test_song_basic.py b/openlp/plugins/songs/test/test_song_basic.py index 4e134cea8..2cbfdd8ff 100644 --- a/openlp/plugins/songs/test/test_song_basic.py +++ b/openlp/plugins/songs/test/test_song_basic.py @@ -1,22 +1,27 @@ # -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import py.test import os diff --git a/openlp/plugins/songs/test/test_song_opensong.py b/openlp/plugins/songs/test/test_song_opensong.py index 8b46b1df9..d0c716d7d 100644 --- a/openlp/plugins/songs/test/test_song_opensong.py +++ b/openlp/plugins/songs/test/test_song_opensong.py @@ -1,22 +1,28 @@ -# -*- coding:iso-8859-1 -*- +# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" import os import sys @@ -108,7 +114,7 @@ _sample3 = \ pre-chorus line 1 pre-chorus line 2 pre-chorus line 3 - + [B] bridge line 1 bridge line 2 @@ -118,7 +124,7 @@ _sample3 = \ class Test_OpenSong(object): """Test cases for converting from OpenSong xml format to Song""" - + def test_sample1(self): """OpenSong: handwritten sample1""" s = Song() @@ -126,7 +132,7 @@ class Test_OpenSong(object): l = s.get_lyrics() assert(len(l) == (4*3+3)) assert(s.get_number_of_slides() == 4) - + def test_sample2(self): """OpenSong: handwritten sample2 - with verses and chorus""" s = Song() @@ -134,7 +140,7 @@ class Test_OpenSong(object): l = s.get_lyrics() assert(len(l) == (4*3+3)) assert(s.get_number_of_slides() == 4) - + def test_sample3(self): """OpenSong: handwritten sample3 - with verses, chorus, bridge and pre-chorus""" s = Song() @@ -142,7 +148,7 @@ class Test_OpenSong(object): l = s.get_lyrics() assert(len(l) == (4*3+4+5+4)) assert(s.get_number_of_slides() == 6) - + def test_file1(self): """OpenSong: parse Amazing Grace""" global __ThisDir__ @@ -155,7 +161,7 @@ class Test_OpenSong(object): assert(s.get_author_list(True) == 'John Newton') assert(s.get_verse_order() == '') assert(s.get_number_of_slides() == 4) - + def test_file2(self): """OpenSong: parse The Solid Rock""" s = Song() @@ -167,20 +173,20 @@ class Test_OpenSong(object): assert(s.get_author_list(True) == 'Edward Mote, John B. Dykes') assert(s.get_verse_order() == 'V1 C V2 C V3 C V4 C') assert(s.get_number_of_slides() == 5) - + def test_file3(self): - """OpenSong: parse 'På en fjern ensom høj' (danish)""" + """OpenSong: parse 'PÃ¥ en fjern ensom høj' (danish)""" #FIXME: problem with XML convert and danish characters s = Song() - s.from_opensong_file(u'%s/data_opensong/På en fjern ensom høj'%(__ThisDir__)) - assert(s.get_title() == u'På en fjern ensom høj') + s.from_opensong_file(u'%s/data_opensong/PÃ¥ en fjern ensom høj'%(__ThisDir__)) + assert(s.get_title() == u'PÃ¥ en fjern ensom høj') assert(s.get_copyright() == '') assert(s.get_song_cclino() == '') assert(s.get_category_array(True) == '') assert(s.get_author_list(True) == '') assert(s.get_verse_order() == 'V1 C1 V2 C2 V3 C3 V4 C4') assert(s.get_number_of_slides() == 8) - + if '__main__' == __name__: r = Test_OpenSong() r.test_file3() diff --git a/openlp/plugins/songs/test/test_song_text.py b/openlp/plugins/songs/test/test_song_text.py index 852626592..810428233 100644 --- a/openlp/plugins/songs/test/test_song_text.py +++ b/openlp/plugins/songs/test/test_song_text.py @@ -1,22 +1,28 @@ -# -*- coding:iso-8859-1 -*- +# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" import os import sys @@ -30,7 +36,7 @@ from openlp.plugins.songs.lib.songxml import * class Test_Text(object): """Test cases for converting from text format to Song""" - + def test_file1(self): """OpenSong: parse CCLI example""" global __ThisDir__ @@ -41,13 +47,13 @@ class Test_Text(object): assert(s.get_copyright() == '1996 Publisher Info') assert(s.get_song_cclino() == '1234567') assert(s.get_number_of_slides() == 4) - + def test_file2(self): - """OpenSong: parse PåEnFjern (danish)""" + """OpenSong: parse PÃ¥EnFjern (danish)""" global __ThisDir__ s = Song() - s.from_ccli_text_file(u'%s/data_text/PåEnFjern.txt'%(__ThisDir__)) - assert(s.get_title() == 'På en fjern ensom høj') + s.from_ccli_text_file(u'%s/data_text/PÃ¥EnFjern.txt'%(__ThisDir__)) + assert(s.get_title() == 'PÃ¥ en fjern ensom høj') assert(s.get_author_list(True) == 'Georg Bennard') assert(s.get_copyright() == '') assert(s.get_song_cclino() == '') diff --git a/openlp/plugins/songs/test/test_song_verse.py b/openlp/plugins/songs/test/test_song_verse.py index 0eb235076..7467bbb1b 100644 --- a/openlp/plugins/songs/test/test_song_verse.py +++ b/openlp/plugins/songs/test/test_song_verse.py @@ -1,22 +1,27 @@ -# -*- coding:iso-8859-1 -*- +# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 Martin Thompson, Tim Bentley, Carsten Tinggaard -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA -""" +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### import os import sys @@ -31,7 +36,7 @@ from openlp.plugins.songs.lib.songxml import * class Test_Verse(object): """Class for testing verses for preview and review""" - + def stdSong(self): """Definition of a standard song""" s = Song() @@ -45,7 +50,7 @@ class Test_Verse(object): s.set_author_list(self.author) s.set_song_cclino(self.ccli) return s - + def check_allfields(self, r, isblank = 0): #[theme, title, author, cpright, ccli, lyrics] if isblank == 1 : @@ -64,8 +69,8 @@ class Test_Verse(object): assert(r[4] == '') else : assert(r[4] == self.ccli) - - + + def test_title_show_noshow(self): """Test the show title flag""" s = self.stdSong() @@ -77,7 +82,7 @@ class Test_Verse(object): s.set_show_title(True) r = s.get_render_slide(1) self.check_allfields(r) - + def test_author_show_noshow(self): """Test the show author flag""" s = self.stdSong() @@ -89,7 +94,7 @@ class Test_Verse(object): s.set_show_author_list(True) r = s.get_render_slide(1) self.check_allfields(r) - + def test_copyright_show_noshow(self): """Test the show copyright flag""" s = self.stdSong() @@ -101,7 +106,7 @@ class Test_Verse(object): s.set_show_copyright(True) r = s.get_render_slide(1) self.check_allfields(r) - + def test_ccli_show_noshow(self): """Test the show copyright flag""" s = self.stdSong() @@ -113,31 +118,31 @@ class Test_Verse(object): s.set_show_song_cclino(True) r = s.get_render_slide(1) self.check_allfields(r) - + def test_verse1(self): """Test an empty verse list""" s = Song() s.set_lyrics([]) assert(s.get_number_of_slides() == 0) - + def test_verse2(self): """Test a list with an empty string""" s = Song() s.set_lyrics([""]) assert(s.get_number_of_slides() == 0) - + def test_verse3a(self): """Test a one liner song""" s = Song() s.set_lyrics(["Single verse"]) assert(s.get_number_of_slides() == 1) - + def test_verse3b(self): """Test a one liner song""" s = Song() s.set_lyrics(["", u'Single verse']) assert(s.get_number_of_slides() == 1) - + def test_verse3c(self): """Test a one liner song""" s = Song() diff --git a/openlp/plugins/songusage/__init__.py b/openlp/plugins/songusage/__init__.py index bc50edda3..1a348a0df 100644 --- a/openlp/plugins/songusage/__init__.py +++ b/openlp/plugins/songusage/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -21,4 +21,4 @@ # You should have received a copy of the GNU General Public License along # # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### \ No newline at end of file +############################################################################### diff --git a/openlp/plugins/songusage/forms/__init__.py b/openlp/plugins/songusage/forms/__init__.py index 68c125317..162d64a14 100644 --- a/openlp/plugins/songusage/forms/__init__.py +++ b/openlp/plugins/songusage/forms/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -24,4 +24,4 @@ ############################################################################### from songusagedeleteform import SongUsageDeleteForm -from songusagedetailform import SongUsageDetailForm \ No newline at end of file +from songusagedetailform import SongUsageDetailForm diff --git a/openlp/plugins/songusage/forms/songusagedeletedialog.py b/openlp/plugins/songusage/forms/songusagedeletedialog.py index e9a9a8603..2cb19f4f5 100644 --- a/openlp/plugins/songusage/forms/songusagedeletedialog.py +++ b/openlp/plugins/songusage/forms/songusagedeletedialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index 9dda0cafc..207670709 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songusage/forms/songusagedetaildialog.py b/openlp/plugins/songusage/forms/songusagedetaildialog.py index 411187086..b2f7c0389 100644 --- a/openlp/plugins/songusage/forms/songusagedetaildialog.py +++ b/openlp/plugins/songusage/forms/songusagedetaildialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 28690d85f..4e4f9bb55 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -22,6 +22,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### + import os from PyQt4 import QtCore, QtGui diff --git a/openlp/plugins/songusage/lib/__init__.py b/openlp/plugins/songusage/lib/__init__.py index 9a4d81c56..50bba3ddc 100644 --- a/openlp/plugins/songusage/lib/__init__.py +++ b/openlp/plugins/songusage/lib/__init__.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -23,4 +23,4 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from manager import SongUsageManager \ No newline at end of file +from manager import SongUsageManager diff --git a/openlp/plugins/songusage/lib/classes.py b/openlp/plugins/songusage/lib/classes.py index 63ffd3e80..a780b57ac 100644 --- a/openlp/plugins/songusage/lib/classes.py +++ b/openlp/plugins/songusage/lib/classes.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -43,4 +43,4 @@ class SongUsageItem(BaseModel): """ Audit model """ - pass \ No newline at end of file + pass diff --git a/openlp/plugins/songusage/lib/manager.py b/openlp/plugins/songusage/lib/manager.py index d9f7feb6f..2802570ab 100644 --- a/openlp/plugins/songusage/lib/manager.py +++ b/openlp/plugins/songusage/lib/manager.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/songusage/lib/meta.py b/openlp/plugins/songusage/lib/meta.py index 38b0f7206..affa31969 100644 --- a/openlp/plugins/songusage/lib/meta.py +++ b/openlp/plugins/songusage/lib/meta.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -35,4 +35,4 @@ session = None # Global metadata. If you have multiple databases with overlapping table # names, you'll need a metadata for each database -metadata = MetaData() \ No newline at end of file +metadata = MetaData() diff --git a/openlp/plugins/songusage/lib/models.py b/openlp/plugins/songusage/lib/models.py index b2794b5d5..a053ffc34 100644 --- a/openlp/plugins/songusage/lib/models.py +++ b/openlp/plugins/songusage/lib/models.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -36,4 +36,4 @@ def init_models(url): session = scoped_session(sessionmaker(autoflush=True, autocommit=False, bind=engine)) mapper(SongUsageItem, songusage_table) - return session \ No newline at end of file + return session diff --git a/openlp/plugins/songusage/lib/tables.py b/openlp/plugins/songusage/lib/tables.py index e32b1b245..008c722b1 100644 --- a/openlp/plugins/songusage/lib/tables.py +++ b/openlp/plugins/songusage/lib/tables.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -36,4 +36,4 @@ songusage_table = Table(u'songusage_data', metadata, Column(u'authors', types.Unicode(255), nullable=False), Column(u'copyright', types.Unicode(255)), Column(u'ccl_number', types.Unicode(65)) -) \ No newline at end of file +) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index d30bd4bea..0763e0675 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlpcnv.pyw b/openlpcnv.pyw index 8c3a8bcf5..5619c6f14 100755 --- a/openlpcnv.pyw +++ b/openlpcnv.pyw @@ -7,8 +7,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py index 0ede06f90..74a0869be 100644 --- a/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py +++ b/resources/pyinstaller/hook-openlp.plugins.presentations.presentationplugin.py @@ -1,3 +1,28 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + hiddenimports = ['openlp.plugins.presentations.lib.impresscontroller', 'openlp.plugins.presentations.lib.powerpointcontroller', - 'openlp.plugins.presentations.lib.pptviewcontroller'] \ No newline at end of file + 'openlp.plugins.presentations.lib.pptviewcontroller'] diff --git a/resources/pyinstaller/hook-openlp.py b/resources/pyinstaller/hook-openlp.py index b77ec8b62..b788749af 100644 --- a/resources/pyinstaller/hook-openlp.py +++ b/resources/pyinstaller/hook-openlp.py @@ -1,9 +1,34 @@ -hiddenimports = ['plugins.songs.songsplugin', - 'plugins.bibles.bibleplugin', - 'plugins.presentations.presentationplugin', - 'plugins.media.mediaplugin', - 'plugins.images.imageplugin', - 'plugins.custom.customplugin', - 'plugins.songusage.songusageplugin', - 'plugins.remotes.remoteplugin', - 'plugins.alerts.alertsplugin'] \ No newline at end of file +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +hiddenimports = ['plugins.songs.songsplugin', + 'plugins.bibles.bibleplugin', + 'plugins.presentations.presentationplugin', + 'plugins.media.mediaplugin', + 'plugins.images.imageplugin', + 'plugins.custom.customplugin', + 'plugins.songusage.songusageplugin', + 'plugins.remotes.remoteplugin', + 'plugins.alerts.alertsplugin'] diff --git a/scripts/bible-1to2-converter.py b/scripts/bible-1to2-converter.py index b1e9b6897..b1604764f 100755 --- a/scripts/bible-1to2-converter.py +++ b/scripts/bible-1to2-converter.py @@ -7,8 +7,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/scripts/get-strings.py b/scripts/get-strings.py index 81b889f50..5fa42a1fc 100755 --- a/scripts/get-strings.py +++ b/scripts/get-strings.py @@ -6,8 +6,9 @@ # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # -# Portions copyright (c) 2008-2010 Martin Thompson, Tim Bentley, Carsten # -# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/scripts/openlp-1to2-converter.py b/scripts/openlp-1to2-converter.py index ba6a7d7d1..3b805a1bd 100755 --- a/scripts/openlp-1to2-converter.py +++ b/scripts/openlp-1to2-converter.py @@ -7,8 +7,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # @@ -316,4 +316,4 @@ if __name__ == u'__main__': os.unlink(new_db) verbose = options.verbose debug = options.debug - main(old_db, new_db) \ No newline at end of file + main(old_db, new_db) diff --git a/setup.py b/setup.py index d6f4b7503..436c5a987 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,28 @@ #!/usr/bin/env python +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### from setuptools import setup, find_packages From 5f2a637b6390edcaabb162ebd87bcdbce0b81c17 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 22 Mar 2010 08:45:45 +0000 Subject: [PATCH 050/150] Commit verses at end --- openlp/migration/migratebibles.py | 41 ++++++++++++------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index 6f3552099..93f2765c0 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -135,7 +135,7 @@ class MigrateBibles(): def _v1_9_0_old(self, database): self.progress(u'Rename Tables ' + database) - conn = sqlite3.connect(self.data_path + os.sep + database) + conn = sqlite3.connect(os.path.join(self.data_path, database)) conn.execute(u'alter table book rename to book_temp;') conn.commit() conn.execute(u'alter table testament rename to testament_temp;') @@ -178,33 +178,24 @@ class MigrateBibles(): self.session.rollback() print u'Error thrown = ', sys.exc_info()[1] self.progress(u'Create verse table') - #---- - #results = self.session.query(TVerse).order_by(TVerse.id).all() - #for verse_temp in results: - # verse = Verse() - # verse.id = verse_temp.id - # verse.book_id = verse_temp.book_id - # verse.chapter = verse_temp.chapter - # verse.verse = verse_temp.verse - # verse.text = verse_temp.text - # try: - # self.session.add(verse) - # self.session.commit() - # except: - # self.session.rollback() - # print u'Error thrown = ', sys.exc_info()[1] - # - # The above is too slow, took hours to not finish one bible - # For now, just do it the old fashioned way - #--- + results = self.session.query(TVerse).order_by(TVerse.id).all() + for verse_temp in results: + verse = Verse() + verse.id = verse_temp.id + verse.book_id = verse_temp.book_id + verse.chapter = verse_temp.chapter + verse.verse = verse_temp.verse + verse.text = verse_temp.text + try: + self.session.add(verse) + except: + self.session.rollback() + print u'Error thrown = ', sys.exc_info()[1] try: - conn = sqlite3.connect(self.data_path + os.sep + database) - conn.execute(u'insert into verse select * from verse_temp;') - conn.commit() + self.session.commit() except: self.session.rollback() print u'Error thrown = ', sys.exc_info()[1] - #--- self.progress(u'Create metadata table') results = self.session.query(TBibleMeta).order_by(TBibleMeta.key).all() for biblemeta_temp in results: @@ -220,7 +211,7 @@ class MigrateBibles(): def _v1_9_0_cleanup(self, database): self.progress(u'Update Internal Data ' + database) - conn = sqlite3.connect(self.data_path + os.sep + database) + conn = sqlite3.connect(os.path.join(self.data_path, database)) conn.commit() conn.execute(u'drop table book_temp;') conn.commit() From 32086cb87731412b7276c2a85e5042772ff39af2 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 22 Mar 2010 18:31:43 +0000 Subject: [PATCH 051/150] Fix slide selection so looks nice --- openlp/core/ui/slidecontroller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 391ff7461..1b123f2e2 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -144,6 +144,7 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.setColumnWidth(1, self.Controller.width() - self.labelWidth) self.PreviewListWidget.isLive = self.isLive self.PreviewListWidget.setObjectName(u'PreviewListWidget') + self.PreviewListWidget.setSelectionBehavior(1) self.PreviewListWidget.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) self.PreviewListWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) @@ -561,7 +562,6 @@ class SlideController(QtGui.QWidget): if this is the Live Controller also display on the screen """ row = self.PreviewListWidget.currentRow() - self.PreviewListWidget.selectRow(row) self.selectedRow = 0 if row > -1 and row < self.PreviewListWidget.rowCount(): if self.serviceItem.is_command() and self.isLive: From ca62429bad1e2f556ca857ab69c004fd75ede50f Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 22 Mar 2010 19:57:24 +0000 Subject: [PATCH 052/150] Commented out two lines without realising it. I blame Noah --- openlpcnv.pyw | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlpcnv.pyw b/openlpcnv.pyw index 01d0a7db9..5d0ff62d0 100755 --- a/openlpcnv.pyw +++ b/openlpcnv.pyw @@ -128,8 +128,8 @@ class Migration(object): subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r')) else: subprocess.call(cmd, stdin=open(u'sqlite3.dmp', u'r'), shell=True) -# os.remove(u'sqlite.dmp') -# os.remove(u'sqlite3.dmp') + os.remove(u'sqlite.dmp') + os.remove(u'sqlite3.dmp') if __name__ == u'__main__': mig = Migration() From c196d258072aed39a95c7ed8dc44f5b6c6f4c934 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 22 Mar 2010 22:38:50 +0200 Subject: [PATCH 053/150] Replaced "live" icon with a projector icon. Replaced "preview" with a screen icon. --- resources/images/openlp-2.qrc | 2 +- resources/images/system_live.png | Bin 688 -> 720 bytes resources/images/system_preview.png | Bin 608 -> 815 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/images/openlp-2.qrc b/resources/images/openlp-2.qrc index 3f2a6e843..bba088c2b 100644 --- a/resources/images/openlp-2.qrc +++ b/resources/images/openlp-2.qrc @@ -96,9 +96,9 @@ system_about.png system_help_contents.png system_add.png - system_live.png system_preview.png system_mediamanager.png + system_live.png system_contribute.png system_servicemanager.png system_thememanager.png diff --git a/resources/images/system_live.png b/resources/images/system_live.png index 17fd3ca9dfb1f929a3d9ae17242a99a8c1c67d34..cb2be2258ad636e049e7903049b6f0a662191bd4 100644 GIT binary patch delta 696 zcmV;p0!RI@1<(bMB!32COGiWi{{a60|De66lK=n!32;bRa{vGvuK)lWuK`{fksJU3 z00(qQO+^RS2^(vN&o-?T}ebiRCwCOQcG(SQ560%ck*gFO(IB>*rsW;CatzX zU5FsqE_{I%9|+<<5Ujt${sHM)uwA)yqb?LdVh{>KW0R54=6}&P>6m2NyeG}|+`*J= zT#6rj+?jjs`ObIFz4-62^gkkz2wPo!eRXtnbir3vmbs>t`0j3j zt7_`o%F4?z5Pu{PCMQErm0{(w)oL9u$HBQ^@7S!xVu38nP!#3T`1ts!2H(^H;uxm>6AihDkp$!CUKLroIRFfoZ$NO*@5)nqdHovP;m)GhcsB%+Pj eBN{}Ge}Uhla5FU+K$&>}0000B!2{RLP=Bz2nYy#2xN!=000SaNLh0L00FxI00FxJI_%@(0000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$SElET{R5*>LlRHloQ51l` zJ9Bq-c6OKd@{pir3zfvmio(Lugy280w4mn?_%A5jhR%-OXnzQe4b2)GA4EuiEE!mL zcHXahEyPto6Qid&$vG$Ac?+#I|05Eh+wJOpzmMZM*tU(75-BB>N(Cw9DELRRIF7L_ zi*~y$M&5;8m+6@qApCA96l4Wt*@Z43FCZ<62YqRjDfl@IOMeX4!{Z7-m_x8jSnEL}f`b5F^}vXrNI+&_C@2+zWYo^6g>0(FsjU#l zF|C^mh(-eH43rPnkf0WDo`(okkk}Q>Uxx^=<$j?aRSCL74E+(ECjmHKcV?>_?3gB2;YwhgMWyuC_xxhq)A$c%WDL9f7qwz zd9)Wx6eV%4_|!89(kfC;kQEutW|KlnT;IJ8XfEEt9uu5PMWRwXv%sDelu3=MhjG+Bckf-3X(|lcqeZ+V+tu)xIA_@1Cqa-ns+;*xA{U@Kz5#uh9uaDShdpEf00000b000McNliru+5-#^A0rlKXixwE01e&Qo^Ld7>ubNRsdK4RaGI3F}Mmo8A3aSvkClg31pxp2e_`w_ro*1#3A`* zf}vlciz(?S=HezLic``g#!v+f1Co4#za;JfH#ax@c=0Rq4}2CEOy+x<-_Az-@n^~; zo{}aRg{lz3z_Ly9Lf~c@TI*X6%ChA5vuj?B#=N^wQR|9nS@ZJJAe9cL)um7colXbK zvKUT=gnwmuZ=zC)&cb`RZwMl*M%FoFQ{m1DD%r$owW#YF(=;(nlWuDcrPM7TP19(3 zc{%9!`?Ojut_DpK*TsL+<%1Om!!Rg{;x0f^O0rC|xVT7`Ws%t3-F>pOwDhdk>-qc- z#c_OndV2bq_>Z}E09#vI@2{_~e{C4XW7l;% zZnujN0^7FHTDPMp z`ba7D9C-1s9{|Gl{ReAnYmZk}R^DD+UF|xKBaV-cM~8=pe;phg9E?VzA)sdqe*@Z{ WUlGQJEb#&W0000r)4^&KK@fo9 zzk7OiCcD`&I*ADiA}ERy^Z^3ieFHDvdg!JfCG5&kcE3AZl5%huO#xqf z?%(c_CxJ&V7pNwH3e~V;d$**WM#N%CY{ODoQHK#7mVc%|H*Wa4)8lBV#F5jnHN$=% zKd#7=l+ve|G{d&eU=T#0)Xo$THLR{LBku#%@PKkKz&DCF+ From 1c7504cbb43162e3bcf551e6dc70809dc8b3bd2e Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Mon, 22 Mar 2010 22:54:38 +0200 Subject: [PATCH 054/150] A small unicode conversion fix. --- openlp/plugins/bibles/lib/opensong.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 247c97672..2f7e3e451 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -63,7 +63,8 @@ class OpenSongBible(BibleDB): Loads a Bible from file. """ log.debug(u'Starting OpenSong import from "%s"' % self.filename) - self.filename = unicode(self.filename, u'utf-8') + if not isinstance(self.filename, unicode): + self.filename = unicode(self.filename, u'utf8') self.wizard.incrementProgressBar(u'Preparing for import...') file = None success = True From 8524bf9174c4aa3550269d288cc436bc0ce07cf8 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Mon, 22 Mar 2010 23:50:32 +0000 Subject: [PATCH 055/150] Remove transparent error: QImage::scaled: Image is a null image --- openlp/core/lib/__init__.py | 5 +++-- openlp/core/ui/themestab.py | 14 ++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index fc6a4bf0c..84525352e 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -144,8 +144,9 @@ def resize_image(image, width, height): The image to resize. """ preview = QtGui.QImage(image) - preview = preview.scaled(width, height, QtCore.Qt.KeepAspectRatio, - QtCore.Qt.SmoothTransformation) + if not preview.isNull(): + preview = preview.scaled(width, height, QtCore.Qt.KeepAspectRatio, + QtCore.Qt.SmoothTransformation) realw = preview.width() realh = preview.height() # and move it to the centre of the preview space diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index fff8c384c..0deca94e9 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -159,9 +159,10 @@ class ThemesTab(SettingsTab): image = self.parent.ThemeManagerContents.getPreviewImage( self.global_theme) preview = QtGui.QPixmap(unicode(image)) - display = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, - QtCore.Qt.SmoothTransformation) - self.DefaultListView.setPixmap(display) + if not preview.isNull(): + preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, + QtCore.Qt.SmoothTransformation) + self.DefaultListView.setPixmap(preview) def updateThemeList(self, theme_list): """ @@ -184,6 +185,7 @@ class ThemesTab(SettingsTab): image = self.parent.ThemeManagerContents.getPreviewImage( self.global_theme) preview = QtGui.QPixmap(unicode(image)) - display = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, - QtCore.Qt.SmoothTransformation) - self.DefaultListView.setPixmap(display) + if not preview.isNull(): + preview = preview.scaled(300, 255, QtCore.Qt.KeepAspectRatio, + QtCore.Qt.SmoothTransformation) + self.DefaultListView.setPixmap(preview) From c4b49a15116a6c33aa4949b8d0e8d42e59978a19 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 23 Mar 2010 16:00:52 +0000 Subject: [PATCH 056/150] Import fixes --- openlp/migration/migratebibles.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openlp/migration/migratebibles.py b/openlp/migration/migratebibles.py index b73b016cf..c0d47fdb8 100644 --- a/openlp/migration/migratebibles.py +++ b/openlp/migration/migratebibles.py @@ -27,9 +27,9 @@ import os import sys import sqlite3 -from sqlalchemy import * +from sqlalchemy import * from sqlalchemy import create_engine -from sqlalchemy.orm import scoped_session, sessionmaker, mapper, relation +from sqlalchemy.orm import scoped_session, sessionmaker, mapper from openlp.core.lib import PluginConfig from openlp.plugins.bibles.lib.models import * @@ -223,4 +223,3 @@ class MigrateBibles(): conn.commit() conn.execute(u'vacuum;') conn.commit() - From 00cb0d1277dd9a067fdd7d244a8802b22f4475f1 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Tue, 23 Mar 2010 19:41:54 +0000 Subject: [PATCH 057/150] Close down presentation apps at end correctly --- .../presentations/lib/impresscontroller.py | 5 +++-- openlp/plugins/presentations/lib/mediaitem.py | 4 ++-- .../presentations/lib/powerpointcontroller.py | 18 ++++++++++-------- .../presentations/lib/pptviewcontroller.py | 8 +++++--- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index dd0f86840..637e629c0 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -147,8 +147,9 @@ class ImpressController(PresentationController): Called at system exit to clean up any running presentations """ log.debug(u'Kill OpenOffice') - for doc in self.docs: - doc.close_presentation() + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array if os.name != u'nt': desktop = self.get_uno_desktop() else: diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 35ec1721b..6e9bbfaed 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -143,7 +143,7 @@ class PresentationMediaItem(MediaManagerItem): for cidx in self.controllers: doc = self.controllers[cidx].add_doc(filepath) doc.presentation_deleted() - self.controllers[cidx].remove_doc(doc) + doc.close_presentation() def generateSlideData(self, service_item): items = self.ListView.selectedIndexes() @@ -171,7 +171,7 @@ class PresentationMediaItem(MediaManagerItem): service_item.add_from_command(path, name, img) i = i + 1 img = doc.get_slide_preview_file(i) - controller.remove_doc(doc) + doc.close_presentation() return True def findControllerByType(self, filename): diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 45d040b45..3dedcec75 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -81,8 +81,10 @@ class PowerpointController(PresentationController): """ Called at system exit to clean up any running presentations """ - for doc in self.docs: - doc.close_presentation() + log.debug(u'Kill powerpoint') + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array if self.process is None: return if self.process.Presentations.Count > 0: @@ -149,12 +151,12 @@ class PowerpointDocument(PresentationDocument): Triggerent by new object being added to SlideController orOpenLP being shut down """ - if self.presentation is None: - return - try: - self.presentation.Close() - except: - pass + log.debug(u'ClosePresentation') + if self.presentation: + try: + self.presentation.Close() + except: + pass self.presentation = None self.controller.remove_doc(self) diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 574441850..5646c7258 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -88,9 +88,10 @@ class PptviewController(PresentationController): """ Called at system exit to clean up any running presentations """ - log.debug(u'Kill') - for doc in self.docs: - doc.close_presentation() + log.debug(u'Kill pptviewer') + for i in range(len(self.docs)): + self.docs[0].close_presentation() # Yes, always the zeroth one + # as close removes item from array def add_doc(self, name): log.debug(u'Add Doc PPTView') @@ -137,6 +138,7 @@ class PptviewDocument(PresentationDocument): Triggerent by new object being added to SlideController orOpenLP being shut down """ + log.debug(u'ClosePresentation') self.controller.process.ClosePPT(self.pptid) self.pptid = -1 self.controller.remove_doc(self) From 6578fb529e46d9baf166677fe672ebb02fff6751 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 23 Mar 2010 21:51:20 +0000 Subject: [PATCH 058/150] Test tweaks and remove unused variables --- openlp/plugins/presentations/lib/impresscontroller.py | 5 ++--- openlp/plugins/presentations/lib/powerpointcontroller.py | 5 ++--- openlp/plugins/presentations/lib/pptviewcontroller.py | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 637e629c0..14e98273e 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -147,9 +147,8 @@ class ImpressController(PresentationController): Called at system exit to clean up any running presentations """ log.debug(u'Kill OpenOffice') - for i in range(len(self.docs)): - self.docs[0].close_presentation() # Yes, always the zeroth one - # as close removes item from array + while self.docs: + self.docs[0].close_presentation() if os.name != u'nt': desktop = self.get_uno_desktop() else: diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index 3dedcec75..67870574d 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -82,9 +82,8 @@ class PowerpointController(PresentationController): Called at system exit to clean up any running presentations """ log.debug(u'Kill powerpoint') - for i in range(len(self.docs)): - self.docs[0].close_presentation() # Yes, always the zeroth one - # as close removes item from array + while self.docs: + self.docs[0].close_presentation() if self.process is None: return if self.process.Presentations.Count > 0: diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index 5646c7258..455e1c601 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -89,9 +89,8 @@ class PptviewController(PresentationController): Called at system exit to clean up any running presentations """ log.debug(u'Kill pptviewer') - for i in range(len(self.docs)): - self.docs[0].close_presentation() # Yes, always the zeroth one - # as close removes item from array + while self.docs: + self.docs[0].close_presentation() def add_doc(self, name): log.debug(u'Add Doc PPTView') From f158044d5e9fa8ad5c36ecbbe92d06a535eb7b98 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 24 Mar 2010 19:05:45 +0000 Subject: [PATCH 059/150] Fix row counts and bad code before superfly spots it --- openlp/core/ui/slidecontroller.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 34a29372a..3a02e2e40 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -460,17 +460,17 @@ class SlideController(QtGui.QWidget): self.serviceItem = serviceItem self.PreviewListWidget.clear() self.PreviewListWidget.setRowCount(0) - self.PreviewListWidget.setColumnWidth(1, self.labelWidth) + self.PreviewListWidget.setColumnWidth(0, self.labelWidth) self.PreviewListWidget.setColumnWidth(1, width - self.labelWidth) if self.isLive: self.SongMenu.menu().clear() + row = 0 for framenumber, frame in enumerate(self.serviceItem.get_frames()): self.PreviewListWidget.setRowCount( self.PreviewListWidget.rowCount() + 1) rowitem = QtGui.QTableWidgetItem() item = QtGui.QTableWidgetItem() slide_height = 0 - row = u'' #It is a based Text Render if self.serviceItem.is_text(): if self.isLive and frame[u'verseTag'] is not None: @@ -484,12 +484,12 @@ class SlideController(QtGui.QWidget): else: tag = bits[0] row = bits[0][0:1] - try: - test = self.slideList[tag] - except: + if tag not in self.slideList: self.slideList[tag] = framenumber self.SongMenu.menu().addAction(self.trUtf8(u'%s'%tag), self.onSongBarHandler) + else: + row += 1 item.setText(frame[u'text']) else: label = QtGui.QLabel() @@ -501,7 +501,7 @@ class SlideController(QtGui.QWidget): label.setPixmap(QtGui.QPixmap.fromImage(pixmap)) self.PreviewListWidget.setCellWidget(framenumber, 1, label) slide_height = width * self.parent.RenderManager.screen_ratio - rowitem.setText(row) + rowitem.setText(unicode(row)) self.PreviewListWidget.setItem(framenumber, 0, rowitem) self.PreviewListWidget.setItem(framenumber, 1, item) if slide_height != 0: From 59dd69eee17cdf4119c88b571a629c83926d53a2 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 24 Mar 2010 19:10:08 +0000 Subject: [PATCH 060/150] Do not display empty list --- openlp/core/ui/slidecontroller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 3a02e2e40..498fce9b3 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -361,7 +361,8 @@ class SlideController(QtGui.QWidget): if item.is_text(): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.is_song() and \ - str_to_bool(self.songsconfig.get_config(u'show songbar', True)): + str_to_bool(self.songsconfig.get_config(u'show songbar', True)) \ + and len(self.slideList) > 0: self.Toolbar.makeWidgetsVisible([u'Song Menu']) elif item.is_image(): #Not sensible to allow loops with 1 frame From a091c8f3b665a313ea6128ab2d9401366a7901cb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 24 Mar 2010 19:15:25 +0000 Subject: [PATCH 061/150] Fix Quick bible enter --- openlp/plugins/bibles/lib/mediaitem.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 9b286eb1a..3bcc0b426 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -253,6 +253,8 @@ class BibleMediaItem(MediaManagerItem): QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.configUpdated) # Other stuff + QtCore.QObject.connect(self.QuickSearchEdit, + QtCore.SIGNAL(u'returnPressed()'), self.onQuickSearchButton) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'bible_showprogress'), self.onSearchProgressShow) QtCore.QObject.connect(Receiver.get_receiver(), From 2eaadffea0034fc4bba0e81e3c481b4a2f335653 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 24 Mar 2010 23:00:43 +0200 Subject: [PATCH 062/150] Fixed two bugs in the web downloads import dealing with non-latin characters. --- .../plugins/bibles/forms/importwizardform.py | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 2efbcdf1e..22fea28f4 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -37,7 +37,7 @@ from openlp.plugins.bibles.lib.manager import BibleFormat log = logging.getLogger(__name__) -class DownloadLocation(object): +class WebDownload(object): Unknown = -1 Crosswalk = 0 BibleGateway = 1 @@ -282,7 +282,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.setField(u'csv_booksfile', QtCore.QVariant('')) self.setField(u'csv_versefile', QtCore.QVariant('')) self.setField(u'opensong_file', QtCore.QVariant('')) - self.setField(u'web_location', QtCore.QVariant(DownloadLocation.Crosswalk)) + self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk)) self.setField(u'web_biblename', QtCore.QVariant(self.BibleComboBox)) self.setField(u'proxy_server', QtCore.QVariant(self.config.get_config(u'proxy address', ''))) @@ -293,7 +293,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.setField(u'license_version', QtCore.QVariant(self.VersionNameEdit)) self.setField(u'license_copyright', QtCore.QVariant(self.CopyrightEdit)) self.setField(u'license_permission', QtCore.QVariant(self.PermissionEdit)) - self.onLocationComboBoxChanged(DownloadLocation.Crosswalk) + self.onLocationComboBoxChanged(WebDownload.Crosswalk) def loadWebBibles(self): """ @@ -304,13 +304,13 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): filepath = os.path.join(filepath, u'bibles', u'resources') fbibles = None try: - self.web_bible_list[DownloadLocation.Crosswalk] = {} + self.web_bible_list[WebDownload.Crosswalk] = {} books_file = open(os.path.join(filepath, u'crosswalkbooks.csv'), 'r') dialect = csv.Sniffer().sniff(books_file.read(1024)) books_file.seek(0) books_reader = csv.reader(books_file, dialect) for line in books_reader: - self.web_bible_list[DownloadLocation.Crosswalk][line[0]] = \ + self.web_bible_list[WebDownload.Crosswalk][line[0]] = \ unicode(line[1], u'utf8').strip() except: log.exception(u'Crosswalk resources missing') @@ -319,14 +319,19 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): books_file.close() #Load and store BibleGateway Bibles try: - self.web_bible_list[DownloadLocation.BibleGateway] = {} + self.web_bible_list[WebDownload.BibleGateway] = {} books_file = open(os.path.join(filepath, u'biblegateway.csv'), 'r') dialect = csv.Sniffer().sniff(books_file.read(1024)) books_file.seek(0) books_reader = csv.reader(books_file, dialect) for line in books_reader: - self.web_bible_list[DownloadLocation.BibleGateway][line[0]] = \ - unicode(line[1], u'utf-8').strip() + ver = line[0] + name = line[1] + if not isinstance(ver, unicode): + ver = unicode(ver, u'utf8') + if not isinstance(name, unicode): + name = unicode(name, u'utf8') + self.web_bible_list[WebDownload.BibleGateway][ver] = name.strip() except: log.exception(u'Biblegateway resources missing') finally: @@ -383,16 +388,17 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): # Import a bible from the web self.ImportProgressBar.setMaximum(1) download_location = self.field(u'web_location').toInt()[0] - if download_location == DownloadLocation.Crosswalk: - bible = self.web_bible_list[DownloadLocation.Crosswalk][ - unicode(self.BibleComboBox.currentText(), u'utf8')] - elif download_location == DownloadLocation.BibleGateway: - bible = self.web_bible_list[DownloadLocation.BibleGateway][ - unicode(self.BibleComboBox.currentText(), u'utf8')] + bible_version = self.BibleComboBox.currentText() + if not isinstance(bible_version, unicode): + bible_version = unicode(bible_version, u'utf8') + if download_location == WebDownload.Crosswalk: + bible = self.web_bible_list[WebDownload.Crosswalk][bible_version] + elif download_location == WebDownload.BibleGateway: + bible = self.web_bible_list[WebDownload.BibleGateway][bible_version] importer = self.manager.import_bible( BibleFormat.WebDownload, name=license_version, - download_source=DownloadLocation.get_name(download_location), + download_source=WebDownload.get_name(download_location), download_name=bible, proxy_server=variant_to_unicode(self.field(u'proxy_server')), proxy_username=variant_to_unicode(self.field(u'proxy_username')), From 0b596dab473b72914753ed4ef2c9788115531121 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Wed, 24 Mar 2010 23:18:36 +0200 Subject: [PATCH 063/150] Fixed another possible bug. --- openlp/plugins/bibles/forms/importwizardform.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 22fea28f4..a717a4f44 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -310,8 +310,13 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): books_file.seek(0) books_reader = csv.reader(books_file, dialect) for line in books_reader: - self.web_bible_list[WebDownload.Crosswalk][line[0]] = \ - unicode(line[1], u'utf8').strip() + ver = line[0] + name = line[1] + if not isinstance(ver, unicode): + ver = unicode(ver, u'utf8') + if not isinstance(name, unicode): + name = unicode(name, u'utf8') + self.web_bible_list[WebDownload.Crosswalk][ver] = name.strip() except: log.exception(u'Crosswalk resources missing') finally: From b490e74012d652bb5aabaf3a8764fd2df8ad4f00 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 24 Mar 2010 22:59:05 +0000 Subject: [PATCH 064/150] Start presentation apps in right place --- openlp/plugins/presentations/presentationplugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 5968f1ad9..00a83fe4b 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -57,6 +57,8 @@ class PresentationPlugin(Plugin): for controller in self.controllers: if self.controllers[controller].enabled: presentation_types.append({u'%s' % controller : self.controllers[controller].supports}) + self.controllers[controller].start_process() + Receiver.send_message( u'presentation types', presentation_types) @@ -104,8 +106,6 @@ class PresentationPlugin(Plugin): for controller_class in controller_classes: controller = controller_class(self) self.registerControllers(controller) - if controller.enabled: - controller.start_process() if self.controllers: return True else: From b20c29f45cfc7d5df42c45c9740280b02adf6295 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 25 Mar 2010 18:52:16 +0000 Subject: [PATCH 065/150] Add delete to context menu --- openlp/core/lib/mediamanageritem.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 087d5a25d..58a50557f 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -280,6 +280,13 @@ class MediaManagerItem(QtGui.QWidget): u'%s %s' % (self.trUtf8('&Edit'), self.PluginNameVisible), self.onEditClick)) self.ListView.addAction(contextMenuSeparator(self.ListView)) + if self.hasDeleteIcon: + self.ListView.addAction( + contextMenuAction( + self.ListView, u':/general/general_delete.png', + u'%s %s' % (self.trUtf8('&Delete'), self.PluginNameVisible), + self.onDeleteClick)) + self.ListView.addAction(contextMenuSeparator(self.ListView)) self.ListView.addAction( contextMenuAction( self.ListView, u':/general/general_preview.png', From 51d6d2410ba47a160267c4b2bb588bdcf00ff227 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 25 Mar 2010 19:27:46 +0000 Subject: [PATCH 066/150] Fix QT4.4 bug in service manager --- openlp/core/ui/servicemanager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 89166316e..28bf29e06 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -148,7 +148,8 @@ class ServiceManager(QtGui.QWidget): self.ServiceManagerList.setHeaderHidden(True) self.ServiceManagerList.setExpandsOnDoubleClick(False) self.ServiceManagerList.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.ServiceManagerList.customContextMenuRequested.connect(self.contextMenu) + QtCore.QObject.connect(self.ServiceManagerList, + QtCore.SIGNAL('customContextMenuRequested(QPoint)'), self.contextMenu) self.ServiceManagerList.setObjectName(u'ServiceManagerList') # enable drop self.ServiceManagerList.__class__.dragEnterEvent = self.dragEnterEvent From 63aa5839428ffeead5bd2610ec1ab777fd70d188 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 25 Mar 2010 20:01:15 +0000 Subject: [PATCH 067/150] Images bulk delete if selected --- openlp/plugins/images/lib/mediaitem.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index cd8302407..dbb3e3f2d 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -114,16 +114,17 @@ class ImageMediaItem(MediaManagerItem): self.toggleOverrideState) def onDeleteClick(self): - item = self.ListView.currentItem() - if item: - try: - os.remove(os.path.join(self.servicePath, unicode(item.text()))) - except: - #if not present do not worry - pass - row = self.ListView.row(item) - self.ListView.takeItem(row) - self.parent.config.set_list(self.ConfigSection, self.getFileList()) + items = self.ListView.selectedIndexes() + if items: + for item in items: + text = self.ListView.item(item.row()) + try: + os.remove(os.path.join(self.servicePath, unicode(text.text()))) + except: + #if not present do not worry + pass + self.ListView.takeItem(item.row()) + self.parent.config.set_list(self.ConfigSection, self.getFileList()) def loadList(self, list): for file in list: From 463847c61c4bf9d5d0d91336018abbadb8ed719c Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 25 Mar 2010 20:24:52 +0000 Subject: [PATCH 068/150] Correct image override process --- openlp/core/ui/slidecontroller.py | 6 +++ openlp/plugins/images/lib/mediaitem.py | 51 +++++++------------------- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 498fce9b3..ac4addfc7 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -178,6 +178,12 @@ class SlideController(QtGui.QWidget): self.blankButton = self.Toolbar.addToolbarButton( u'Blank Screen', u':/slides/slide_blank.png', self.trUtf8('Blank Screen'), self.onBlankDisplay, True) + self.themeButton = self.Toolbar.addToolbarButton( + u'Display Theme', u':/slides/slide_theme.png', + self.trUtf8('Blank Screen'), self.onBlankDisplay, True) + self.hideButton = self.Toolbar.addToolbarButton( + u'Hide screen', u':/slides/slide_desktop.png', + self.trUtf8('Blank Screen'), self.onBlankDisplay, True) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_slide_blank'), self.blankScreen) if not self.isLive: diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index dbb3e3f2d..c3f2ce699 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -54,7 +54,6 @@ class ImageMediaItem(MediaManagerItem): self.servicePath = None self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) - self.overrideActive = False def initPluginNameVisible(self): self.PluginNameVisible = self.trUtf8('Image') @@ -92,26 +91,11 @@ class ImageMediaItem(MediaManagerItem): self.ImageWidget.sizePolicy().hasHeightForWidth()) self.ImageWidget.setSizePolicy(sizePolicy) self.ImageWidget.setObjectName(u'ImageWidget') - self.OverrideLayout = QtGui.QVBoxLayout(self.ImageWidget) - self.OverrideLayout.setMargin(5) - self.OverrideLayout.setSpacing(4) - self.OverrideLayout.setObjectName(u'OverrideLayout') - self.OverrideCheckBox = QtGui.QCheckBox(self.ImageWidget) - self.OverrideCheckBox.setObjectName(u'OverrideCheckBox') - self.OverrideCheckBox.setCheckable(True) - self.OverrideCheckBox.setChecked(False) - self.OverrideCheckBox.setText(self.trUtf8('Override background')) - self.OverrideCheckBox.setStatusTip( - self.trUtf8('Allow the background of live slide to be overridden')) - self.OverrideLayout.addWidget(self.OverrideCheckBox) - self.OverrideLabel = QtGui.QLabel(self.ImageWidget) - self.OverrideLabel.setObjectName(u'OverrideLabel') - self.OverrideLayout.addWidget(self.OverrideLabel) + self.blankButton = self.Toolbar.addToolbarButton( + u'Replace Background', u':/slides/slide_blank.png', + self.trUtf8('Replace Background'), self.onReplaceClick, False) # Add the song widget to the page layout self.PageLayout.addWidget(self.ImageWidget) - QtCore.QObject.connect(self.OverrideCheckBox, - QtCore.SIGNAL(u'stateChanged(int)'), - self.toggleOverrideState) def onDeleteClick(self): items = self.ListView.selectedIndexes() @@ -158,24 +142,17 @@ class ImageMediaItem(MediaManagerItem): else: return False - def toggleOverrideState(self): - self.overrideActive = not self.overrideActive - if not self.overrideActive: - self.OverrideLabel.setText(u'') - self.parent.render_manager.override_background = None + def onReplaceClick(self): + if not self.ListView.selectedIndexes(): + QtGui.QMessageBox.information(self, + self.trUtf8('No item selected...'), + self.trUtf8('You must select one item')) + items = self.ListView.selectedIndexes() + for item in items: + bitem = self.ListView.item(item.row()) + filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + frame = QtGui.QImage(unicode(filename)) + self.parent.maindisplay.addImageWithText(frame) def onPreviewClick(self): - if self.overrideActive: - if not self.ListView.selectedIndexes(): - QtGui.QMessageBox.information(self, - self.trUtf8('No items selected...'), - self.trUtf8('You must select one or more items')) - items = self.ListView.selectedIndexes() - for item in items: - bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) - self.OverrideLabel.setText(bitem.text()) - frame = QtGui.QImage(unicode(filename)) - self.parent.maindisplay.addImageWithText(frame) - else: MediaManagerItem.onPreviewClick(self) From e4db12423a852f6f2deb86ce0ee8c673b6e6daf7 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 25 Mar 2010 21:53:52 +0000 Subject: [PATCH 069/150] Add Theme and Hide buttons to slide controller --- openlp/core/ui/__init__.py | 1 + openlp/core/ui/maindisplay.py | 13 +++++++--- openlp/core/ui/slidecontroller.py | 42 ++++++++++++++++++++++++++----- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 54f2d31e1..b46ea769b 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -23,6 +23,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +from slidecontroller import DisplayHideMode from servicenoteform import ServiceNoteForm from serviceitemeditform import ServiceItemEditForm from screen import ScreenList diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index f16b3b455..03cd9d830 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -30,6 +30,7 @@ from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon from openlp.core.lib import Receiver, resize_image +from openlp.core.ui import DisplayHideMode log = logging.getLogger(__name__) @@ -253,11 +254,17 @@ class MainDisplay(DisplayWidget): self.waitingFrame = frame self.waitingFrameTrans = transition - def blankDisplay(self, blanked=True): + def blankDisplay(self, blankType=DisplayHideMode.Blank, blanked=True): log.debug(u'Blank main Display %d' % blanked) if blanked: self.displayBlank = True - self.display_text.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame)) + if blankType == DisplayHideMode.Blank: + self.display_text.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame)) + elif blankType == DisplayHideMode.Theme: + theme = self.parent.RenderManager.renderer.bg_frame + if not theme: + theme = self.blankFrame + self.display_text.setPixmap(QtGui.QPixmap.fromImage(theme)) self.waitingFrame = None self.waitingFrameTrans = False else: @@ -313,4 +320,4 @@ class MainDisplay(DisplayWidget): self.video.setVisible(False) self.display_text.show() self.display_image.show() - self.blankDisplay(False) + self.blankDisplay(False, False) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index ac4addfc7..a4fb4ef01 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -30,6 +30,15 @@ import os from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon +class DisplayHideMode(object): + """ + This is basically an enumeration class which specifies the mode of a Bible. + Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to + be downloaded from the Internet on an as-needed basis. + """ + Blank = 1 + Theme = 2 + from openlp.core.lib import OpenLPToolbar, Receiver, str_to_bool, \ PluginConfig, resize_image @@ -180,10 +189,10 @@ class SlideController(QtGui.QWidget): self.trUtf8('Blank Screen'), self.onBlankDisplay, True) self.themeButton = self.Toolbar.addToolbarButton( u'Display Theme', u':/slides/slide_theme.png', - self.trUtf8('Blank Screen'), self.onBlankDisplay, True) + self.trUtf8('Theme Screen'), self.onThemeDisplay, True) self.hideButton = self.Toolbar.addToolbarButton( u'Hide screen', u':/slides/slide_desktop.png', - self.trUtf8('Blank Screen'), self.onBlankDisplay, True) + self.trUtf8('Hide Screen'), self.onHideDisplay, True) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_slide_blank'), self.blankScreen) if not self.isLive: @@ -551,11 +560,32 @@ class SlideController(QtGui.QWidget): log.debug(u'onBlankDisplay %d' % force) if force: self.blankButton.setChecked(True) - self.blankScreen(self.blankButton.isChecked()) + self.blankScreen(DisplayHideMode.Blank, self.blankButton.isChecked()) self.parent.generalConfig.set_config(u'screen blank', self.blankButton.isChecked()) - def blankScreen(self, blanked=False): + def onThemeDisplay(self, force=False): + """ + Handle the Theme screen button + """ + log.debug(u'onThemeDisplay %d' % force) + if force: + self.themeButton.setChecked(True) + self.blankScreen(DisplayHideMode.Theme, self.themeButton.isChecked()) + + def onHideDisplay(self, force=False): + """ + Handle the Hide screen button + """ + log.debug(u'onHideDisplay %d' % force) + if force: + self.themeButton.setChecked(True) + if self.hideButton.isChecked(): + self.parent.mainDisplay.hide1Display() + else: + self.parent.mainDisplay.showDisplay() + + def blankScreen(self, blankType, blanked=False): """ Blank the display screen. """ @@ -566,9 +596,9 @@ class SlideController(QtGui.QWidget): else: Receiver.send_message(u'%s_unblank'% self.serviceItem.name.lower()) else: - self.parent.mainDisplay.blankDisplay(blanked) + self.parent.mainDisplay.blankDisplay(blankType, blanked) else: - self.parent.mainDisplay.blankDisplay(blanked) + self.parent.mainDisplay.blankDisplay(blankType, blanked) def onSlideSelected(self): """ From 44f3e02a5c8a4bbca12ce930ca08d078f119e955 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 26 Mar 2010 08:49:26 +0000 Subject: [PATCH 070/150] Fix outline rendering bug --- openlp/core/lib/renderer.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 41b25df0a..39fcf9aa7 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -505,7 +505,7 @@ class Renderer(object): self.mainFont.setPixelSize(self._theme.font_main_proportion) def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False, - color=None, outline_size=None, outline_color=None): + color=None, outline_size=0, outline_color=None): """ Find bounding box of text - as render_single_line. If draw is set, actually draw the text to the current DC as well return width and @@ -544,21 +544,23 @@ class Renderer(object): else: pen = QtGui.QColor(color) x, y = tlcorner - if outline_size: + if self._theme.display_outline: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter.setBrush(self.painter.pen().brush()) - self.painter.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size)) + self.painter.setPen(QtGui.QPen( + QtGui.QColor(self._theme.display_outline_color), outline_size)) self.painter.drawPath(path) self.painter.setPen(pen) self.painter.drawText(x, y + metrics.ascent(), line) if self._theme.display_slideTransition: # Print 2nd image with 70% weight - if outline_size: + if self._theme.display_outline: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter2.setBrush(self.painter2.pen().brush()) - self.painter2.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size)) + self.painter2.setPen(QtGui.QPen( + QtGui.QColor(self._theme.display_outline_color), outline_size)) self.painter2.drawPath(path) self.painter2.setFont(font) self.painter2.setPen(pen) From d4717c4809e72aff174d3f9ed65c8b276b274b22 Mon Sep 17 00:00:00 2001 From: Michael Gorven Date: Fri, 26 Mar 2010 17:14:52 +0200 Subject: [PATCH 071/150] Correct .desktop file syntax so that rpmbuild doesn't fail. --- resources/openlp.desktop | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/openlp.desktop b/resources/openlp.desktop index 8791c2d8f..0c843bd69 100644 --- a/resources/openlp.desktop +++ b/resources/openlp.desktop @@ -5,6 +5,6 @@ GenericName=Church lyrics projection Exec=openlp Icon=openlp StartupNotify=true -Terminal=False +Terminal=false Type=Application -Categories=AudioVideo +Categories=AudioVideo; From 92e90b91e5c8d3f0f02ea637d4574a12534e4c29 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 26 Mar 2010 20:20:09 +0000 Subject: [PATCH 072/150] Fixes and cleanups --- openlp/core/lib/mediamanageritem.py | 4 ++-- openlp/core/ui/slidecontroller.py | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 1 + openlp/plugins/images/lib/mediaitem.py | 18 ++++++++++++++---- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 58a50557f..7d410c10f 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -114,7 +114,7 @@ class MediaManagerItem(QtGui.QWidget): self.Toolbar = None self.remoteTriggered = None self.ServiceItemIconName = None - self.addToServiceItem = True + self.addToServiceItem = False self.PageLayout = QtGui.QVBoxLayout(self) self.PageLayout.setSpacing(0) self.PageLayout.setContentsMargins(4, 0, 4, 0) @@ -303,7 +303,7 @@ class MediaManagerItem(QtGui.QWidget): if self.addToServiceItem: self.ListView.addAction( contextMenuAction( - self.ListView, u':/system/system_add.png', + self.ListView, u':/general/general_add.png', self.trUtf8('&Add to selected Service Item'), self.onAddEditClick)) QtCore.QObject.connect( diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index a4fb4ef01..92f383c57 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -581,7 +581,7 @@ class SlideController(QtGui.QWidget): if force: self.themeButton.setChecked(True) if self.hideButton.isChecked(): - self.parent.mainDisplay.hide1Display() + self.parent.mainDisplay.hideDisplay() else: self.parent.mainDisplay.showDisplay() diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 070ba6529..f550b6e36 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -81,6 +81,7 @@ class BibleMediaItem(MediaManagerItem): self.hasNewIcon = False self.hasEditIcon = False self.hasDeleteIcon = False + self.addToServiceItem = True def addEndHeaderBar(self): self.SearchTabWidget = QtGui.QTabWidget(self) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index c3f2ce699..73c61df40 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -27,7 +27,8 @@ import logging import os from PyQt4 import QtCore, QtGui -from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon +from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ +contextMenuAction, contextMenuSeparator log = logging.getLogger(__name__) @@ -52,7 +53,6 @@ class ImageMediaItem(MediaManagerItem): # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = ImageListView self.servicePath = None - self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) def initPluginNameVisible(self): @@ -68,6 +68,7 @@ class ImageMediaItem(MediaManagerItem): self.hasFileIcon = True self.hasNewIcon = False self.hasEditIcon = False + self.addToServiceItem = True def initialise(self): log.debug(u'initialise') @@ -81,6 +82,15 @@ class ImageMediaItem(MediaManagerItem): os.mkdir(self.servicePath) self.loadList(self.parent.config.load_list(self.ConfigSection)) + def addListViewToToolBar(self): + MediaManagerItem.addListViewToToolBar(self) + self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) + self.ListView.addAction( + contextMenuAction( + self.ListView, u':/slides/slide_blank.png', + self.trUtf8('Replace Live Background'), + self.onReplaceClick)) + def addEndHeaderBar(self): self.ImageWidget = QtGui.QWidget(self) sizePolicy = QtGui.QSizePolicy( @@ -93,7 +103,7 @@ class ImageMediaItem(MediaManagerItem): self.ImageWidget.setObjectName(u'ImageWidget') self.blankButton = self.Toolbar.addToolbarButton( u'Replace Background', u':/slides/slide_blank.png', - self.trUtf8('Replace Background'), self.onReplaceClick, False) + self.trUtf8('Replace Live Background'), self.onReplaceClick, False) # Add the song widget to the page layout self.PageLayout.addWidget(self.ImageWidget) @@ -155,4 +165,4 @@ class ImageMediaItem(MediaManagerItem): self.parent.maindisplay.addImageWithText(frame) def onPreviewClick(self): - MediaManagerItem.onPreviewClick(self) + MediaManagerItem.onPreviewClick(self) From 35255c250e60ccf0262d31873d0267656209e2b7 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 26 Mar 2010 20:48:46 +0000 Subject: [PATCH 073/150] Fix up theme bugs --- openlp/core/lib/renderer.py | 9 ++++----- openlp/core/ui/amendthemeform.py | 11 ++--------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 39fcf9aa7..99b4a7e6f 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -466,8 +466,7 @@ class Renderer(object): tlcorner=(x + display_shadow_size, y + display_shadow_size), draw=True, color = self._theme.display_shadow_color) self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True, - outline_size=display_outline_size, - outline_color=self._theme.display_outline_color) + outline_size=display_outline_size) y += h if linenum == 0: self._first_line_right_extent = rightextent @@ -505,7 +504,7 @@ class Renderer(object): self.mainFont.setPixelSize(self._theme.font_main_proportion) def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False, - color=None, outline_size=0, outline_color=None): + color=None, outline_size=0): """ Find bounding box of text - as render_single_line. If draw is set, actually draw the text to the current DC as well return width and @@ -544,7 +543,7 @@ class Renderer(object): else: pen = QtGui.QColor(color) x, y = tlcorner - if self._theme.display_outline: + if self._theme.display_outline and outline_size != 0: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter.setBrush(self.painter.pen().brush()) @@ -555,7 +554,7 @@ class Renderer(object): self.painter.drawText(x, y + metrics.ascent(), line) if self._theme.display_slideTransition: # Print 2nd image with 70% weight - if self._theme.display_outline: + if self._theme.display_outline and outline_size != 0: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter2.setBrush(self.painter2.pen().brush()) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 97ae9858b..03c2df3f5 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -393,6 +393,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.theme.background_type = u'solid' if self.theme.background_color is None : self.theme.background_color = u'#000000' + self.ImageLineEdit.setText(u'') elif background == 1: # Gradient self.theme.background_type = u'gradient' if gradient == 0: # Horizontal @@ -405,6 +406,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.theme.background_startColor = u'#000000' if self.theme.background_endColor is None : self.theme.background_endColor = u'#ff0000' + self.ImageLineEdit.setText(u'') else: self.theme.background_type = u'image' self.stateChanging(self.theme) @@ -422,7 +424,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.Color1PushButton.setStyleSheet( u'background-color: %s' % \ unicode(self.theme.background_startColor)) - self.previewTheme() def onColor2PushButtonClicked(self): @@ -561,22 +562,18 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): u'background-color: %s' % unicode(theme.font_main_color)) self.FontFooterColorPushButton.setStyleSheet( u'background-color: %s' % unicode(theme.font_footer_color)) - if not self.theme.font_main_override: self.FontMainDefaultCheckBox.setChecked(True) else: self.FontMainDefaultCheckBox.setChecked(False) - if not self.theme.font_footer_override: self.FontFooterDefaultCheckBox.setChecked(True) else: self.FontFooterDefaultCheckBox.setChecked(False) - self.OutlineColorPushButton.setStyleSheet( u'background-color: %s' % unicode(theme.display_outline_color)) self.ShadowColorPushButton.setStyleSheet( u'background-color: %s' % unicode(theme.display_shadow_color)) - if self.theme.display_outline: self.OutlineCheckBox.setChecked(True) self.OutlineColorPushButton.setEnabled(True) @@ -584,7 +581,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.OutlineCheckBox.setChecked(False) self.OutlineColorPushButton.setEnabled(False) self.OutlineSpinBox.setValue(int(self.theme.display_outline_size)) - if self.theme.display_shadow: self.ShadowCheckBox.setChecked(True) self.ShadowColorPushButton.setEnabled(True) @@ -592,12 +588,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.ShadowCheckBox.setChecked(False) self.ShadowColorPushButton.setEnabled(False) self.ShadowSpinBox.setValue(int(self.theme.display_shadow_size)) - if self.theme.display_slideTransition: self.SlideTransitionCheckedBox.setCheckState(QtCore.Qt.Checked) else: self.SlideTransitionCheckedBox.setCheckState(QtCore.Qt.Unchecked) - self.HorizontalComboBox.setCurrentIndex( self.theme.display_horizontalAlign) self.VerticalComboBox.setCurrentIndex(self.theme.display_verticalAlign) @@ -657,7 +651,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.ImageFilenameWidget.setVisible(True) self.GradientLabel.setVisible(False) self.GradientComboBox.setVisible(False) - if not theme.font_main_override: self.FontMainXSpinBox.setEnabled(False) self.FontMainYSpinBox.setEnabled(False) From 8f095a2fc55ef1dcae000707f605ecc2654b6575 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 26 Mar 2010 22:50:55 +0200 Subject: [PATCH 074/150] Fixed a bug with Strongs in CrossWalk. --- openlp/plugins/bibles/lib/http.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 4a447de98..2c3e433f6 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -27,6 +27,7 @@ import logging import urllib2 import os import sqlite3 +import re from BeautifulSoup import BeautifulSoup, Tag, NavigableString @@ -293,18 +294,22 @@ class CWExtract(BibleCommon): soup = BeautifulSoup(page) htmlverses = soup.findAll(u'span', u'versetext') verses = {} + reduce_spaces = re.compile(r'[ ]{2,}') for verse in htmlverses: Receiver.send_message(u'process_events') versenumber = int(verse.contents[0].contents[0]) versetext = u'' for part in verse.contents: - if str(part)[0] != u'<': + if isinstance(part, NavigableString): versetext = versetext + part - elif part and part.attrMap and part.attrMap[u'class'] == u'WordsOfChrist': + elif part and part.attrMap and \ + (part.attrMap[u'class'] == u'WordsOfChrist' or \ + part.attrMap[u'class'] == u'strongs'): for subpart in part.contents: - if str(subpart)[0] != '<': + if isinstance(subpart, NavigableString): versetext = versetext + subpart versetext = versetext.strip(u'\n\r\t ') + versetext = reduce_spaces.sub(u' ', versetext) verses[versenumber] = versetext return SearchResults(bookname, chapter, verses) From b90169a1293da9de828bbc3a2d73702311a98aa1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 26 Mar 2010 21:04:50 +0000 Subject: [PATCH 075/150] Song editing improvements --- openlp/plugins/songs/forms/editverseform.py | 35 ++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 7fdea7e8f..f6ace12aa 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -54,25 +54,46 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged) def onAddIntro(self): - self.VerseTextEdit.insertPlainText(u'---[Intro:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Intro')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddEnding(self): - self.VerseTextEdit.insertPlainText(u'---[Ending:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Ending')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddOther(self): - self.VerseTextEdit.insertPlainText(u'---[Other:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Other')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddPreChorus(self): - self.VerseTextEdit.insertPlainText(u'---[PreChorus:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Pre-Chorus')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddBridge(self): - self.VerseTextEdit.insertPlainText(u'---[Bridge:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Bridge')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddChorus(self): - self.VerseTextEdit.insertPlainText(u'---[Chorus:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Chorus')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def onAddVerse(self): - self.VerseTextEdit.insertPlainText(u'---[Verse:1]---') + self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' + % self.trUtf8('Verse')) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) + self.VerseTextEdit.setFocus() def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): posVerse = 0 From 611ae157909eceeca1ebdfce4f8db01eed281e9e Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 07:01:50 +0000 Subject: [PATCH 076/150] Fix up tag editing --- openlp/plugins/songs/forms/editsongform.py | 5 +++-- openlp/plugins/songs/forms/editverseform.py | 24 ++++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 976ee1e78..86c576eed 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -411,9 +411,10 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(2) self.AuthorsListView.setFocus() #split the verse list by space and mark lower case for testing + taglist = self.trUtf8(' bcitped') for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '): if len(verse) > 1: - if verse[0:1] == u'v' and verse[1:].isdigit(): + if verse[0:1] == u'%s' % self.trUtf8('v') and verse[1:].isdigit(): pass else: self.SongTabWidget.setCurrentIndex(0) @@ -421,7 +422,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): return False, \ self.trUtf8('Invalid verse entry - vX') else: - if u' bcitped'.find(verse) > -1: + if taglist.find(verse) > -1: pass else: self.SongTabWidget.setCurrentIndex(0) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index f6ace12aa..da9daf089 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -53,53 +53,57 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): QtCore.QObject.connect(self.VerseListComboBox, QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged) + def startNewLine(self): + if self.VerseTextEdit.textCursor().columnNumber() != 0: + self.VerseTextEdit.insertPlainText(u'\n') + def onAddIntro(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Intro')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddEnding(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Ending')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddOther(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Other')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddPreChorus(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Pre-Chorus')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddBridge(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Bridge')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddChorus(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Chorus')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def onAddVerse(self): + self.startNewLine() self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' % self.trUtf8('Verse')) - self.VerseTextEdit.moveCursor(QtGui.QTextCursor.Down) self.VerseTextEdit.setFocus() def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): posVerse = 0 posSub = 0 if len(text) == 0 and not single: - text = u'---[Verse:1]---\n' + text = u'---[%s:1]---\n' % self.trUtf8('Verse') if single: id = tag.split(u':') posVerse = self.VerseListComboBox.findText(id[0], QtCore.Qt.MatchExactly) @@ -145,11 +149,11 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def getVerseAll(self): text = self.VerseTextEdit.toPlainText() if not text.startsWith(u'---['): - text = u'---[Verse:1]---\n%s' % text + text = u'---[%s:1]---\n%s' % (self.trUtf8('Verse'), text) return text def onVerseComboChanged(self, id): - if unicode(self.VerseListComboBox.currentText()) == u'Verse': + if unicode(self.VerseListComboBox.currentText()) == self.trUtf8('Verse'): self.SubVerseListComboBox.setEnabled(True) else: self.SubVerseListComboBox.setEnabled(False) From 097a414c59997bf5b05ec053978f616ea100aacb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 07:03:12 +0000 Subject: [PATCH 077/150] oops string bug --- openlp/plugins/songs/forms/editsongform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 86c576eed..a369e46a1 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -411,7 +411,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(2) self.AuthorsListView.setFocus() #split the verse list by space and mark lower case for testing - taglist = self.trUtf8(' bcitped') + taglist = unicode(self.trUtf8(' bcitped')) for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '): if len(verse) > 1: if verse[0:1] == u'%s' % self.trUtf8('v') and verse[1:].isdigit(): From d2b56fc7193b66c12b7cb0308c088a1732a2df07 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 07:16:39 +0000 Subject: [PATCH 078/150] Basic verse counting --- openlp/plugins/songs/forms/editverseform.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index da9daf089..2666c146e 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -95,8 +95,10 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def onAddVerse(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Verse')) + count = self.VerseTextEdit.toPlainText().\ + count(u'---[%s' % self.trUtf8('Verse')) + self.VerseTextEdit.insertPlainText(u'---[%s:%s]---\n' + % (self.trUtf8('Verse'), count + 1)) self.VerseTextEdit.setFocus() def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): From 8df005340938fc132b6f08306e76f88a266a6e0b Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 10:12:11 +0000 Subject: [PATCH 079/150] Fix Copyrights --- openlp/core/ui/serviceitemeditdialog.py | 4 ++-- openlp/core/ui/serviceitemeditform.py | 4 ++-- openlp/plugins/bibles/lib/mediaitem.py | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/serviceitemeditdialog.py b/openlp/core/ui/serviceitemeditdialog.py index b388fb98c..fbaa52ca1 100644 --- a/openlp/core/ui/serviceitemeditdialog.py +++ b/openlp/core/ui/serviceitemeditdialog.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/core/ui/serviceitemeditform.py b/openlp/core/ui/serviceitemeditform.py index 4293e15c8..9df8088c8 100644 --- a/openlp/core/ui/serviceitemeditform.py +++ b/openlp/core/ui/serviceitemeditform.py @@ -6,8 +6,8 @@ # --------------------------------------------------------------------------- # # Copyright (c) 2008-2010 Raoul Snyman # # Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # -# Gorven, Scott Guerrieri, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # -# Carsten Tinggaard # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # # --------------------------------------------------------------------------- # # This program is free software; you can redistribute it and/or modify it # # under the terms of the GNU General Public License as published by the Free # diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index f550b6e36..56838a41a 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -509,7 +509,8 @@ class BibleMediaItem(MediaManagerItem): if not service_item.title: service_item.title = u'%s %s' % (book, verse_text) elif service_item.title.find(self.trUtf8(u'etc')) == -1: - service_item.title = u'%s, %s' % (service_item.title, self.trUtf8(u'etc')) + service_item.title = u'%s, %s' \ + % (service_item.title, self.trUtf8(u'etc')) if len(self.parent.settings_tab.bible_theme) == 0: service_item.theme = None else: From abfc977b17c5d14fc716138fb794e53f90f43188 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 27 Mar 2010 14:37:21 +0200 Subject: [PATCH 080/150] Fix to deal with "X.Y.Z" style version (i.e. without the "-bzrXXX"). --- openlp.pyw | 23 +++++++---- openlp/.version | 2 +- openlp/core/ui/aboutdialog.py | 2 +- openlp/core/ui/aboutform.py | 15 ++++--- openlp/core/ui/mainwindow.py | 13 +++--- openlp/core/utils/__init__.py | 13 +++--- openlp/plugins/bibles/lib/db.py | 70 ++++++++++++++++++++++++++++++++- 7 files changed, 110 insertions(+), 28 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index d9880865b..f1b627940 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -92,16 +92,23 @@ class OpenLP(QtGui.QApplication): app_version = { u'full': full_version, u'version': bits[0], - u'build': bits[1] + u'build': bits[1] if len(bits) > 1 else None } - log.info(u'Openlp version %s build %s' % ( - app_version[u'version'], app_version[u'build'])) + if app_version[u'build']: + log.info( + u'Openlp version %s build %s', + app_version[u'version'], + app_version[u'build'] + ) + else: + log.info(u'Openlp version %s' % app_version[u'version']) except: - app_version = { - u'full': u'1.9.0-bzr000', - u'version': u'1.9.0', - u'build': u'bzr000' - } + log.exception('Error in version file.') + app_version = { + u'full': u'1.9.0-bzr000', + u'version': u'1.9.0', + u'build': u'bzr000' + } finally: if fversion: fversion.close() diff --git a/openlp/.version b/openlp/.version index 338414e8c..f8e233b27 100644 --- a/openlp/.version +++ b/openlp/.version @@ -1 +1 @@ -1.9.0-bzr743 +1.9.0 diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index 0f38b02f0..c74246f5c 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -115,7 +115,7 @@ class Ui_AboutDialog(object): def retranslateUi(self, AboutDialog): AboutDialog.setWindowTitle(self.trUtf8('About OpenLP')) self.AboutTextEdit.setPlainText(self.trUtf8( - 'OpenLP build - Open Source Lyrics ' + 'OpenLP - Open Source Lyrics ' 'Projection\n' '\n' 'OpenLP is free church presentation software, or lyrics ' diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index fe576767f..c79324515 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -39,11 +39,16 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog): QtGui.QDialog.__init__(self, parent) self.applicationVersion = applicationVersion self.setupUi(self) - self.AboutTextEdit.setPlainText( - self.AboutTextEdit.toPlainText()\ - .replace(u'', self.applicationVersion[u'version'])\ - .replace(u'', self.applicationVersion[u'build']) - ) + about_text = self.AboutTextEdit.toPlainText() + about_text = about_text.replace(u'', + self.applicationVersion[u'version']) + if self.applicationVersion[u'build']: + build_text = u' %s %s' % (self.trUtf8('build'), + self.applicationVersion[u'build']) + else: + build_text = u'' + about_text = about_text.replace(u'', build_text) + self.AboutTextEdit.setPlainText(about_text) QtCore.QObject.connect(self.ContributeButton, QtCore.SIGNAL(u'clicked()'), self.onContributeButtonClicked) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 0fc0588ae..13d880407 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -71,7 +71,7 @@ class VersionThread(QtCore.QThread): Receiver.send_message(u'blank_check') version = check_latest_version(self.generalConfig, self.app_version) #new version has arrived - if version != self.app_version: + if version != self.app_version[u'full']: Receiver.send_message(u'version_check', u'%s' % version) @@ -554,11 +554,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Checks the version of the Application called from openlp.pyw """ app_version = self.applicationVersion[u'full'] - version_text = unicode(self.trUtf8('OpenLP version %s has been updated ' - 'to version %s\n\nYou can obtain the latest version from http://openlp.org')) + version_text = unicode(self.trUtf8('Version %s of OpenLP is now ' + 'available for download (you are currently running version %s).' + '\n\nYou can download the latest version from http://openlp.org')) QtGui.QMessageBox.question(self, self.trUtf8('OpenLP Version Updated'), - version_text % (app_version, version), + version_text % (version, app_version), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok) @@ -597,8 +598,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMessageBox.Ok) def versionThread(self): - app_version = self.applicationVersion[u'full'] - vT = VersionThread(self, app_version, self.generalConfig) + #app_version = self.applicationVersion[u'full'] + vT = VersionThread(self, self.applicationVersion, self.generalConfig) vT.start() def onHelpAboutItemClicked(self): diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index a64b0c06b..faa3b2dfb 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -105,19 +105,20 @@ def check_latest_version(config, current_version): ``current_version`` The current version of OpenLP. """ - version_string = current_version + version_string = current_version[u'full'] #set to prod in the distribution confif file. last_test = config.get_config(u'last version test', datetime.now().date()) this_test = unicode(datetime.now().date()) config.set_config(u'last version test', this_test) if last_test != this_test: version_string = u'' - req = urllib2.Request(u'http://www.openlp.org/files/version.txt') - req.add_header(u'User-Agent', u'OpenLP/%s' % current_version) + if current_version[u'build']: + req = urllib2.Request(u'http://www.openlp.org/files/dev_version.txt') + else: + req = urllib2.Request(u'http://www.openlp.org/files/version.txt') + req.add_header(u'User-Agent', u'OpenLP/%s' % current_version[u'full']) try: - handle = urllib2.urlopen(req, None) - html = handle.read() - version_string = unicode(html).rstrip() + version_string = unicode(urllib2.urlopen(req, None).read()).strip() except IOError, e: if hasattr(e, u'reason'): log.exception(u'Reason for failure: %s', e.reason) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index c57ecb83e..66b956109 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -95,6 +95,9 @@ class BibleDB(QtCore.QObject): self.get_name() def get_name(self): + """ + Returns the version name of the Bible. + """ version_name = self.get_meta(u'Version') if version_name: self.name = version_name.value @@ -103,12 +106,22 @@ class BibleDB(QtCore.QObject): return self.name def clean_filename(self, old_filename): + """ + Clean up the version name of the Bible and convert it into a valid + file name. + + ``old_filename`` + The "dirty" file name or version name. + """ if not isinstance(old_filename, unicode): old_filename = unicode(old_filename, u'utf-8') old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') return old_filename + u'.sqlite' def delete(self): + """ + Remove the Bible database file. Used when a Bible import fails. + """ try: os.remove(self.db_file) return True @@ -119,18 +132,27 @@ class BibleDB(QtCore.QObject): """ This method basically just initialialises the database. It is called from the Bible Manager when a Bible is imported. Descendant classes - may want to override this method to suVersionpply their own custom + may want to override this method to supply their own custom initialisation as well. + + ``wizard`` + The actual Qt wizard form. """ self.wizard = wizard self.create_tables() return self.name def commit(self): + """ + Perform a database commit. + """ log.debug('Committing...') self.session.commit() def create_tables(self): + """ + Create some initial metadata. + """ log.debug(u'createTables') self.create_meta(u'dbversion', u'2') self.create_testament(u'Old Testament') @@ -138,11 +160,29 @@ class BibleDB(QtCore.QObject): self.create_testament(u'Apocrypha') def create_testament(self, testament): + """ + Add a testament to the database. + + ``testament`` + The testament name. + """ log.debug(u'BibleDB.create_testament("%s")', testament) self.session.add(Testament.populate(name=testament)) self.commit() def create_book(self, name, abbrev, testament=1): + """ + Add a book to the database. + + ``name`` + The name of the book. + + ``abbrev`` + The abbreviation of the book. + + ``testament`` + *Defaults to 1.* The id of the testament this book belongs to. + """ log.debug(u'create_book %s,%s', name, abbrev) book = Book.populate(name=name, abbreviation=abbrev, testament_id=testament) @@ -151,6 +191,19 @@ class BibleDB(QtCore.QObject): return book def create_chapter(self, book_id, chapter, textlist): + """ + Add a chapter and it's verses to a book. + + ``book_id`` + The id of the book being appended. + + ``chapter`` + The chapter number. + + ``textlist`` + A dict of the verses to be inserted. The key is the verse number, + and the value is the verse text. + """ log.debug(u'create_chapter %s,%s', book_id, chapter) #text list has book and chapter as first two elements of the array for verse_number, verse_text in textlist.iteritems(): @@ -164,6 +217,21 @@ class BibleDB(QtCore.QObject): self.commit() def create_verse(self, book_id, chapter, verse, text): + """ + Add a single verse to a chapter. + + ``book_id`` + The id of the book being appended. + + ``chapter`` + The chapter number. + + ``verse`` + The verse number. + + ``text`` + The verse text. + """ if not isinstance(text, unicode): details = chardet.detect(text) text = unicode(text, details[u'encoding']) From 08ee7be551c3e059e922a7187f50a5fe4cbcaf47 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 27 Mar 2010 16:53:41 +0200 Subject: [PATCH 081/150] Fixed the "Bible" item in the "Import" menu. --- openlp/plugins/bibles/bibleplugin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 01c92141f..61724ffb6 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -73,7 +73,7 @@ class BiblePlugin(Plugin): self.ImportBibleItem.setText(import_menu.trUtf8('&Bible')) # Signals and slots QtCore.QObject.connect(self.ImportBibleItem, - QtCore.SIGNAL(u'triggered()'), self.onBibleNewClick) + QtCore.SIGNAL(u'triggered()'), self.onBibleImportClick) self.ImportBibleItem.setVisible(False) def add_export_menu_item(self, export_menu): @@ -83,9 +83,9 @@ class BiblePlugin(Plugin): self.ExportBibleItem.setText(export_menu.trUtf8('&Bible')) self.ExportBibleItem.setVisible(False) - def onBibleNewClick(self): + def onBibleImportClick(self): if self.media_item: - self.media_item.onNewClick() + self.media_item.onImportClick() def about(self): about_text = self.trUtf8('Bible Plugin
This ' From fb3abf7f36ab5c5197c66fa639c9d6c23a136b31 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 16:46:52 +0000 Subject: [PATCH 082/150] Fix date --- openlp/core/ui/aboutdialog.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/aboutdialog.py b/openlp/core/ui/aboutdialog.py index c74246f5c..7d8d27103 100644 --- a/openlp/core/ui/aboutdialog.py +++ b/openlp/core/ui/aboutdialog.py @@ -166,9 +166,9 @@ class Ui_AboutDialog(object): self.AboutNotebook.indexOf(self.CreditsTab), self.trUtf8('Credits')) self.LicenseTextEdit.setPlainText(self.trUtf8( - 'Copyright ' + u'\u00a9'.encode('utf8') + ' 2004-2009 Raoul ' + 'Copyright ' + u'\u00a9'.encode('utf8') + ' 2004-2010 Raoul ' 'Snyman\n' - 'Portions copyright ' + u'\u00a9'.encode('utf8') + ' 2004-2009 ' + 'Portions copyright ' + u'\u00a9'.encode('utf8') + ' 2004-2010 ' 'Tim Bentley, Jonathan Corwin, Michael Gorven, Scott Guerrieri, ' 'Christian Richter, Maikel Stuivenberg, Martin Thompson, Jon ' 'Tibble, Carsten Tinggaard\n' From d2670b1cb077d9fd2be008b5057c4a77117233c6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 27 Mar 2010 21:59:35 +0200 Subject: [PATCH 083/150] Bible fixes: - Red letter text on CrossWalk import. - Removed text on web download progress, moved to an "indeterminable" progress style. - Some unicode optimisations. --- openlp/core/utils/__init__.py | 17 +++++++++++--- .../plugins/bibles/forms/importwizardform.py | 3 ++- openlp/plugins/bibles/lib/common.py | 2 +- openlp/plugins/bibles/lib/http.py | 22 +++++++++++++++++++ openlp/plugins/bibles/lib/mediaitem.py | 12 +++++----- 5 files changed, 46 insertions(+), 10 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index a64b0c06b..67bdf4778 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -29,6 +29,8 @@ import logging import urllib2 from datetime import datetime +from PyQt4 import QtCore + import openlp log = logging.getLogger(__name__) @@ -123,16 +125,25 @@ def check_latest_version(config, current_version): log.exception(u'Reason for failure: %s', e.reason) return version_string +def string_to_unicode(string): + """ + Converts a QString to a Python unicode object. + """ + if isinstance(string, QtCore.QString): + string = unicode(string.toUtf8(), u'utf8') + return string + def variant_to_unicode(variant): """ - Converts a QVariant to a unicode string. + Converts a QVariant to a Python unicode object. ``variant`` The QVariant instance to convert to unicode. """ - string = variant.toString() + if isinstance(variant, QtCore.QVariant): + string = variant.toString() if not isinstance(string, unicode): - string = unicode(string, u'utf8') + string = string_to_unicode(string) return string from registry import Registry diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index a717a4f44..a803b7481 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui from bibleimportwizard import Ui_BibleImportWizard from openlp.core.lib import Receiver -from openlp.core.utils import AppLocation, variant_to_unicode +from openlp.core.utils import AppLocation, variant_to_unicode, string_to_unicode from openlp.plugins.bibles.lib.manager import BibleFormat log = logging.getLogger(__name__) @@ -425,3 +425,4 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.finishButton.setVisible(True) self.cancelButton.setVisible(False) Receiver.send_message(u'process_events') + diff --git a/openlp/plugins/bibles/lib/common.py b/openlp/plugins/bibles/lib/common.py index eef9b4dc3..48e55cb7e 100644 --- a/openlp/plugins/bibles/lib/common.py +++ b/openlp/plugins/bibles/lib/common.py @@ -33,7 +33,7 @@ only_verses = re.compile(r'([\w .]+)[ ]+([0-9]+)[ ]*[:|v|V][ ]*([0-9]+)' r'(?:[ ]*-[ ]*([0-9]+|end))?(?:[ ]*,[ ]*([0-9]+)(?:[ ]*-[ ]*([0-9]+|end))?)?', re.UNICODE) chapter_range = re.compile(r'([\w .]+)[ ]+([0-9]+)[ ]*[:|v|V][ ]*' - r'([0-9]+)[ ]*-[ ]*([0-9]+)[ ]*[:|v|V][ ]*([0-9]+)', + r'([0-9]+|end)[ ]*-[ ]*([0-9]+)[ ]*[:|v|V][ ]*([0-9]+|end)', re.UNICODE) log = logging.getLogger(__name__) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 2c3e433f6..b14f9b3a2 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -203,7 +203,9 @@ class BGExtract(BibleCommon): # Let's get the page, and then open it in BeautifulSoup, so as to # attempt to make "easy" work of bad HTML. page = urllib2.urlopen(urlstring) + Receiver.send_message(u'process_events') soup = BeautifulSoup(page) + Receiver.send_message(u'process_events') verses = soup.find(u'div', u'result-text-style-normal') verse_number = 0 verse_list = {0: u''} @@ -211,6 +213,7 @@ class BGExtract(BibleCommon): # This is a PERFECT example of opening the Cthulu tag! # O Bible Gateway, why doth ye such horrific HTML produce? for verse in verses: + Receiver.send_message(u'process_events') if isinstance(verse, Tag) and verse.name == u'div' and filter(lambda a: a[0] == u'class', verse.attrs)[0][1] == u'footnotes': break if isinstance(verse, Tag) and verse.name == u'sup' and filter(lambda a: a[0] == u'class', verse.attrs)[0][1] != u'versenum': @@ -219,6 +222,7 @@ class BGExtract(BibleCommon): continue if isinstance(verse, Tag) and (verse.name == u'p' or verse.name == u'font') and verse.contents: for item in verse.contents: + Receiver.send_message(u'process_events') if isinstance(item, Tag) and (item.name == u'h4' or item.name == u'h5'): continue if isinstance(item, Tag) and item.name == u'sup' and filter(lambda a: a[0] == u'class', item.attrs)[0][1] != u'versenum': @@ -231,6 +235,7 @@ class BGExtract(BibleCommon): continue if isinstance(item, Tag) and item.name == u'font': for subitem in item.contents: + Receiver.send_message(u'process_events') if isinstance(subitem, Tag) and subitem.name == u'sup' and filter(lambda a: a[0] == u'class', subitem.attrs)[0][1] != u'versenum': continue if isinstance(subitem, Tag) and subitem.name == u'p' and not subitem.contents: @@ -289,27 +294,42 @@ class CWExtract(BibleCommon): (version, urlbookname.lower(), chapter) log.debug(u'URL: %s', chapter_url) page = urllib2.urlopen(chapter_url) + Receiver.send_message(u'process_events') if not page: return None soup = BeautifulSoup(page) + Receiver.send_message(u'process_events') htmlverses = soup.findAll(u'span', u'versetext') verses = {} reduce_spaces = re.compile(r'[ ]{2,}') + fix_punctuation = re.compile(r'[ ]+([.,;])') for verse in htmlverses: Receiver.send_message(u'process_events') versenumber = int(verse.contents[0].contents[0]) versetext = u'' for part in verse.contents: + Receiver.send_message(u'process_events') if isinstance(part, NavigableString): versetext = versetext + part elif part and part.attrMap and \ (part.attrMap[u'class'] == u'WordsOfChrist' or \ part.attrMap[u'class'] == u'strongs'): for subpart in part.contents: + Receiver.send_message(u'process_events') if isinstance(subpart, NavigableString): versetext = versetext + subpart + elif subpart and subpart.attrMap and \ + subpart.attrMap[u'class'] == u'strongs': + for subsub in subpart.contents: + Receiver.send_message(u'process_events') + if isinstance(subsub, NavigableString): + versetext = versetext + subsub + Receiver.send_message(u'process_events') + # Fix up leading and trailing spaces, multiple spaces, and spaces + # between text and , and . versetext = versetext.strip(u'\n\r\t ') versetext = reduce_spaces.sub(u' ', versetext) + versetext = fix_punctuation.sub(r'\1', versetext) verses[versenumber] = versetext return SearchResults(bookname, chapter, verses) @@ -410,10 +430,12 @@ class HTTPBible(BibleDB): ## we get a correct book. For example it is possible ## to request ac and get Acts back. bookname = search_results.get_book() + Receiver.send_message(u'process_events') # check to see if book/chapter exists db_book = self.get_book(bookname) self.create_chapter(db_book.id, search_results.get_chapter(), search_results.get_verselist()) + Receiver.send_message(u'process_events') Receiver.send_message(u'bible_hideprogress') Receiver.send_message(u'process_events') return BibleDB.get_verses(self, reference_list) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 3bcc0b426..cf17a4e12 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -266,8 +266,9 @@ class BibleMediaItem(MediaManagerItem): MediaManagerItem.addListViewToToolBar(self) # Progress Bar self.SearchProgress = QtGui.QProgressBar(self) - self.SearchProgress.setFormat('%p%') - self.SearchProgress.setMaximum(3) + self.SearchProgress.setFormat('') + self.SearchProgress.setMinimum(0) + self.SearchProgress.setMaximum(0) self.SearchProgress.setGeometry(self.ListView.geometry().left(), self.ListView.geometry().top(), 81, 23) self.SearchProgress.setVisible(False) @@ -351,9 +352,10 @@ class BibleMediaItem(MediaManagerItem): def onSearchProgressShow(self): self.SearchProgress.setVisible(True) - self.SearchProgress.setMinimum(0) - self.SearchProgress.setMaximum(2) - self.SearchProgress.setValue(1) + Receiver.send_message(u'process_events') + #self.SearchProgress.setMinimum(0) + #self.SearchProgress.setMaximum(2) + #self.SearchProgress.setValue(1) def onSearchProgressHide(self): self.SearchProgress.setVisible(False) From 66cd5f042a6b7c494503501516d24c018e9561c8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 27 Mar 2010 20:27:33 +0000 Subject: [PATCH 084/150] Stop outlines for footers they are too small --- openlp/core/lib/renderer.py | 4 ++-- openlp/core/ui/servicemanager.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 99b4a7e6f..f574ed6a8 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -543,7 +543,7 @@ class Renderer(object): else: pen = QtGui.QColor(color) x, y = tlcorner - if self._theme.display_outline and outline_size != 0: + if self._theme.display_outline and outline_size != 0 and not footer: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter.setBrush(self.painter.pen().brush()) @@ -554,7 +554,7 @@ class Renderer(object): self.painter.drawText(x, y + metrics.ascent(), line) if self._theme.display_slideTransition: # Print 2nd image with 70% weight - if self._theme.display_outline and outline_size != 0: + if self._theme.display_outline and outline_size != 0 and not footer: path = QtGui.QPainterPath() path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line) self.painter2.setBrush(self.painter2.pen().brush()) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 585ed99df..cf9896ce4 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -659,11 +659,17 @@ class ServiceManager(QtGui.QWidget): self.repaintServiceList(sitem + 1, 0) self.parent.LiveController.replaceServiceManagerItem(item) else: - #nothing selected or dnd + #nothing selected for dnd if self.droppos == 0: - self.serviceItems.append({u'service_item': item, - u'order': len(self.serviceItems) + 1, - u'expanded':expand}) + if isinstance(item, list): + for inditem in item: + self.serviceItems.append({u'service_item': inditem, + u'order': len(self.serviceItems) + 1, + u'expanded':expand}) + else: + self.serviceItems.append({u'service_item': item, + u'order': len(self.serviceItems) + 1, + u'expanded':expand}) self.repaintServiceList(len(self.serviceItems) + 1, 0) else: self.serviceItems.insert(self.droppos, {u'service_item': item, From 037421a3ccb5625e705ddd4013232a72ae1ac3d6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 27 Mar 2010 23:11:16 +0200 Subject: [PATCH 085/150] Tag the 1.9.1 release. bzr-revno: 776 From e67e21f445298fabdbe8c639353af895bdcc86b1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 28 Mar 2010 15:18:36 +0100 Subject: [PATCH 086/150] Fix loss of slide menu for save services --- openlp/core/lib/serviceitem.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index edfd17ce1..1d189bfc8 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -74,6 +74,7 @@ class ServiceItem(object): self._uuid = unicode(uuid.uuid1()) self.autoPreviewAllowed = False self.notes = u'' + self.fromPlugin = False def addIcon(self, icon): """ @@ -208,7 +209,8 @@ class ServiceItem(object): u'notes':self.notes, u'preview':self.autoPreviewAllowed, u'edit':self.edit_enabled, - u'maintain':self.maintain_allowed + u'maintain':self.maintain_allowed, + u'fromPlugin':self.fromPlugin } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -246,6 +248,7 @@ class ServiceItem(object): self.notes = header[u'notes'] self.edit_enabled = header[u'edit'] self.maintain_allowed = header[u'maintain'] + self.fromPlugin = header[u'fromPlugin'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) @@ -282,7 +285,7 @@ class ServiceItem(object): return self._uuid != other._uuid def is_song(self): - return self.name == u'Songs' + return self.name.lower() == u'songs' def is_media(self): return self.name.lower() == u'media' From b8f9f21b5d8acbad081155c26f34951d75fb33f8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 28 Mar 2010 16:56:49 +0100 Subject: [PATCH 087/150] Review comments --- openlp/core/lib/mediamanageritem.py | 12 ++++++------ openlp/core/lib/serviceitem.py | 14 +++++++------- openlp/core/ui/__init__.py | 4 ++-- openlp/core/ui/maindisplay.py | 10 +++++----- openlp/core/ui/servicemanager.py | 4 ++-- openlp/core/ui/slidecontroller.py | 10 +++++----- openlp/plugins/bibles/lib/mediaitem.py | 4 ++-- openlp/plugins/custom/lib/mediaitem.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/songs/lib/mediaitem.py | 4 ++-- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 7d410c10f..d0b9824fb 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -380,7 +380,7 @@ class MediaManagerItem(QtGui.QWidget): log.debug(self.PluginNameShort + u' Preview requested') service_item = self.buildServiceItem() if service_item: - service_item.fromPlugin = True + service_item.from_plugin = True self.parent.preview_controller.addServiceItem(service_item) def onLiveClick(self): @@ -392,7 +392,7 @@ class MediaManagerItem(QtGui.QWidget): log.debug(self.PluginNameShort + u' Live requested') service_item = self.buildServiceItem() if service_item: - service_item.fromPlugin = True + service_item.from_plugin = True self.parent.live_controller.addServiceItem(service_item) def onAddClick(self): @@ -404,7 +404,7 @@ class MediaManagerItem(QtGui.QWidget): log.debug(self.PluginNameShort + u' Add requested') service_item = self.buildServiceItem() if service_item: - service_item.fromPlugin = False + service_item.from_plugin = False self.parent.service_manager.addServiceItem(service_item) def onAddEditClick(self): @@ -417,8 +417,8 @@ class MediaManagerItem(QtGui.QWidget): service_item = self.parent.service_manager.getServiceItem() if not service_item: QtGui.QMessageBox.information(self, - self.trUtf8('No Servive item selected'), - self.trUtf8('You must select a existing Service Item to add to.')) + self.trUtf8('No Service Item Selected'), + self.trUtf8('You must select a existing service item to add to.')) elif self.title == service_item.name: self.generateSlideData(service_item) self.parent.service_manager.addServiceItem(service_item) @@ -442,4 +442,4 @@ class MediaManagerItem(QtGui.QWidget): if self.generateSlideData(service_item): return service_item else: - return None + return None \ No newline at end of file diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 1d189bfc8..70f56fab9 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -72,9 +72,9 @@ class ServiceItem(object): self._raw_frames = [] self._display_frames = [] self._uuid = unicode(uuid.uuid1()) - self.autoPreviewAllowed = False + self.auto_preview_allowed = False self.notes = u'' - self.fromPlugin = False + self.from_plugin = False def addIcon(self, icon): """ @@ -207,10 +207,10 @@ class ServiceItem(object): u'type':self.service_item_type, u'audit':self.audit, u'notes':self.notes, - u'preview':self.autoPreviewAllowed, + u'preview':self.auto_preview_allowed, u'edit':self.edit_enabled, u'maintain':self.maintain_allowed, - u'fromPlugin':self.fromPlugin + u'from_plugin':self.from_plugin } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -244,11 +244,11 @@ class ServiceItem(object): self.addIcon(header[u'icon']) self.raw_footer = header[u'footer'] self.audit = header[u'audit'] - self.autoPreviewAllowed = header[u'preview'] + self.auto_preview_allowed = header[u'preview'] self.notes = header[u'notes'] self.edit_enabled = header[u'edit'] self.maintain_allowed = header[u'maintain'] - self.fromPlugin = header[u'fromPlugin'] + self.from_plugin = header[u'from_plugin'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) @@ -327,4 +327,4 @@ class ServiceItem(object): def request_audit(self): if self.audit: - Receiver.send_message(u'songusage_live', self.audit) + Receiver.send_message(u'songusage_live', self.audit) \ No newline at end of file diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index b46ea769b..3865ec80f 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -23,7 +23,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from slidecontroller import DisplayHideMode +from slidecontroller import HideMode from servicenoteform import ServiceNoteForm from serviceitemeditform import ServiceItemEditForm from screen import ScreenList @@ -43,4 +43,4 @@ from mainwindow import MainWindow __all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', - 'AmendThemeForm', 'MediaDockManager', 'ServiceItemNoteForm'] + 'AmendThemeForm', 'MediaDockManager', 'ServiceItemNoteForm'] \ No newline at end of file diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 03cd9d830..eaf1ed78f 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon from openlp.core.lib import Receiver, resize_image -from openlp.core.ui import DisplayHideMode +from openlp.core.ui import HideMode log = logging.getLogger(__name__) @@ -254,13 +254,13 @@ class MainDisplay(DisplayWidget): self.waitingFrame = frame self.waitingFrameTrans = transition - def blankDisplay(self, blankType=DisplayHideMode.Blank, blanked=True): + def blankDisplay(self, blankType=HideMode.Blank, blanked=True): log.debug(u'Blank main Display %d' % blanked) if blanked: self.displayBlank = True - if blankType == DisplayHideMode.Blank: + if blankType == HideMode.Blank: self.display_text.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame)) - elif blankType == DisplayHideMode.Theme: + elif blankType == HideMode.Theme: theme = self.parent.RenderManager.renderer.bg_frame if not theme: theme = self.blankFrame @@ -320,4 +320,4 @@ class MainDisplay(DisplayWidget): self.video.setVisible(False) self.display_text.show() self.display_image.show() - self.blankDisplay(False, False) + self.blankDisplay(False, False) \ No newline at end of file diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cf9896ce4..4565a9527 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -34,7 +34,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \ contextMenuAction, Receiver, str_to_bool, build_icon -from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm +from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm class ServiceManagerList(QtGui.QTreeWidget): @@ -713,7 +713,7 @@ class ServiceManager(QtGui.QWidget): get_config(u'auto preview', u'False')): item += 1 if self.serviceItems and item < len(self.serviceItems) and \ - self.serviceItems[item][u'service_item'].autoPreviewAllowed: + self.serviceItems[item][u'service_item'].auto_preview_allowed: self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], 0) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 92f383c57..d11c4007e 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -30,7 +30,7 @@ import os from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon -class DisplayHideMode(object): +class HideMode(object): """ This is basically an enumeration class which specifies the mode of a Bible. Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to @@ -395,7 +395,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.song_edit_list) - if item.edit_enabled and item.fromPlugin: + if item.edit_enabled and item.from_plugin: self.Toolbar.makeWidgetsVisible(self.song_edit_list) elif item.is_media(): self.Toolbar.setVisible(False) @@ -560,7 +560,7 @@ class SlideController(QtGui.QWidget): log.debug(u'onBlankDisplay %d' % force) if force: self.blankButton.setChecked(True) - self.blankScreen(DisplayHideMode.Blank, self.blankButton.isChecked()) + self.blankScreen(HideMode.Blank, self.blankButton.isChecked()) self.parent.generalConfig.set_config(u'screen blank', self.blankButton.isChecked()) @@ -571,7 +571,7 @@ class SlideController(QtGui.QWidget): log.debug(u'onThemeDisplay %d' % force) if force: self.themeButton.setChecked(True) - self.blankScreen(DisplayHideMode.Theme, self.themeButton.isChecked()) + self.blankScreen(HideMode.Theme, self.themeButton.isChecked()) def onHideDisplay(self, force=False): """ @@ -585,7 +585,7 @@ class SlideController(QtGui.QWidget): else: self.parent.mainDisplay.showDisplay() - def blankScreen(self, blankType, blanked=False): + def blankScreen(self, blankType, blanked=False): """ Blank the display screen. """ diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index c14996512..1abce732f 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -449,7 +449,7 @@ class BibleMediaItem(MediaManagerItem): raw_slides = [] raw_footer = [] bible_text = u'' - service_item.autoPreviewAllowed = True + service_item.auto_preview_allowed = True #If we want to use a 2nd translation / version bible2 = u'' if self.SearchTabWidget.currentIndex() == 0: @@ -608,4 +608,4 @@ class BibleMediaItem(MediaManagerItem): def searchByReference(self, bible, search): log.debug(u'searchByReference %s, %s', bible, search) - self.search_results = self.parent.manager.get_verses(bible, search) + self.search_results = self.parent.manager.get_verses(bible, search) \ No newline at end of file diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 4679be69f..744978967 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -144,7 +144,7 @@ class CustomMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteCustom - service_item.autoPreviewAllowed = True + service_item.auto_preview_allowed = True customSlide = self.parent.custommanager.get_custom(item_id) title = customSlide.title credit = customSlide.credits @@ -166,4 +166,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True + return True \ No newline at end of file diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 73c61df40..ff36d347d 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -140,7 +140,7 @@ class ImageMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() if items: service_item.title = self.trUtf8('Image(s)') - service_item.autoPreviewAllowed = True + service_item.auto_preview_allowed = True service_item.maintain_allowed = True for item in items: bitem = self.ListView.item(item.row()) @@ -165,4 +165,4 @@ class ImageMediaItem(MediaManagerItem): self.parent.maindisplay.addImageWithText(frame) def onPreviewClick(self): - MediaManagerItem.onPreviewClick(self) + MediaManagerItem.onPreviewClick(self) \ No newline at end of file diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index c7b29afd9..9ac8ec977 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -290,7 +290,7 @@ class SongMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteSong - service_item.autoPreviewAllowed = True + service_item.auto_preview_allowed = True song = self.parent.songmanager.get_song(item_id) service_item.theme = song.theme_name service_item.edit_enabled = True @@ -345,4 +345,4 @@ class SongMediaItem(MediaManagerItem): service_item.audit = [ song.title, author_audit, song.copyright, song.ccli_number ] - return True + return True \ No newline at end of file From afc1fbde17f70708ce25711eaadf9e562143c7b5 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 28 Mar 2010 17:11:33 +0100 Subject: [PATCH 088/150] Remove ...s --- openlp/core/lib/mediamanageritem.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index d0b9824fb..5dc14e50e 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -410,7 +410,7 @@ class MediaManagerItem(QtGui.QWidget): def onAddEditClick(self): if not self.ListView.selectedIndexes() and not self.remoteTriggered: QtGui.QMessageBox.information(self, - self.trUtf8('No items selected...'), + self.trUtf8('No items selected'), self.trUtf8('You must select one or more items')) else: log.debug(self.PluginNameShort + u' Add requested') @@ -442,4 +442,4 @@ class MediaManagerItem(QtGui.QWidget): if self.generateSlideData(service_item): return service_item else: - return None \ No newline at end of file + return None diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index ff36d347d..f3d09f5e3 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -155,7 +155,7 @@ class ImageMediaItem(MediaManagerItem): def onReplaceClick(self): if not self.ListView.selectedIndexes(): QtGui.QMessageBox.information(self, - self.trUtf8('No item selected...'), + self.trUtf8('No item selected'), self.trUtf8('You must select one item')) items = self.ListView.selectedIndexes() for item in items: @@ -165,4 +165,4 @@ class ImageMediaItem(MediaManagerItem): self.parent.maindisplay.addImageWithText(frame) def onPreviewClick(self): - MediaManagerItem.onPreviewClick(self) \ No newline at end of file + MediaManagerItem.onPreviewClick(self) From d7ef6d5f41fc986ec7445632dd6a86804abdcdf0 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Sun, 28 Mar 2010 22:57:54 +0100 Subject: [PATCH 089/150] Cleanups --- openlp/core/ui/__init__.py | 2 +- openlp/plugins/bibles/forms/importwizardform.py | 3 +-- openlp/plugins/images/lib/mediaitem.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/__init__.py b/openlp/core/ui/__init__.py index 3865ec80f..21f41ae7c 100644 --- a/openlp/core/ui/__init__.py +++ b/openlp/core/ui/__init__.py @@ -43,4 +43,4 @@ from mainwindow import MainWindow __all__ = ['SplashScreen', 'AboutForm', 'SettingsForm', 'MainWindow', 'MainDisplay', 'SlideController', 'ServiceManager', 'ThemeManager', - 'AmendThemeForm', 'MediaDockManager', 'ServiceItemNoteForm'] \ No newline at end of file + 'AmendThemeForm', 'MediaDockManager', 'ServiceItemEditForm'] diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index a803b7481..a717a4f44 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui from bibleimportwizard import Ui_BibleImportWizard from openlp.core.lib import Receiver -from openlp.core.utils import AppLocation, variant_to_unicode, string_to_unicode +from openlp.core.utils import AppLocation, variant_to_unicode from openlp.plugins.bibles.lib.manager import BibleFormat log = logging.getLogger(__name__) @@ -425,4 +425,3 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): self.finishButton.setVisible(True) self.cancelButton.setVisible(False) Receiver.send_message(u'process_events') - diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index f3d09f5e3..297a01a73 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -28,7 +28,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ -contextMenuAction, contextMenuSeparator + contextMenuAction log = logging.getLogger(__name__) From ab9b72dfb55931f6856a1bd4e80d4a80bfccf6f5 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Tue, 30 Mar 2010 09:05:24 +0200 Subject: [PATCH 090/150] Fixed a broken import. --- openlp/core/ui/servicenoteform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicenoteform.py b/openlp/core/ui/servicenoteform.py index 112a7d9a3..6dfdf0b03 100644 --- a/openlp/core/ui/servicenoteform.py +++ b/openlp/core/ui/servicenoteform.py @@ -24,7 +24,7 @@ ############################################################################### from PyQt4 import QtCore, QtGui -from serviceitemdialog import Ui_ServiceNoteEdit +from servicenotedialog import Ui_ServiceNoteEdit class ServiceNoteForm(QtGui.QDialog, Ui_ServiceNoteEdit): """ From 60d7416e69e41dcbb2e9467d7a753d8ab52739d9 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 30 Mar 2010 20:01:23 +0100 Subject: [PATCH 091/150] Fix service path errors --- openlp/core/lib/serviceitem.py | 8 +++++++- openlp/core/ui/slidecontroller.py | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 70f56fab9..d86597b40 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -325,6 +325,12 @@ class ServiceItem(object): """ return self._raw_frames[row][u'title'] + def get_frame_path(self, row=0): + """ + Returns the title of the raw frame + """ + return self._raw_frames[row][u'path'] + def request_audit(self): if self.audit: - Receiver.send_message(u'songusage_live', self.audit) \ No newline at end of file + Receiver.send_message(u'songusage_live', self.audit) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index d11c4007e..c802219b5 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -466,7 +466,7 @@ class SlideController(QtGui.QWidget): else: blanked = False Receiver.send_message(u'%s_start' % serviceItem.name.lower(), \ - [serviceItem.title, serviceItem.service_item_path, + [serviceItem.title, serviceItem.get_frame_path(), serviceItem.get_frame_title(), slideno, self.isLive, blanked]) self.slideList = {} width = self.parent.ControlSplitter.sizes()[self.split] @@ -517,6 +517,7 @@ class SlideController(QtGui.QWidget): label.setPixmap(QtGui.QPixmap.fromImage(pixmap)) self.PreviewListWidget.setCellWidget(framenumber, 1, label) slide_height = width * self.parent.RenderManager.screen_ratio + row += 1 rowitem.setText(unicode(row)) self.PreviewListWidget.setItem(framenumber, 0, rowitem) self.PreviewListWidget.setItem(framenumber, 1, item) @@ -753,7 +754,7 @@ class SlideController(QtGui.QWidget): def onMediaStart(self, item): if self.isLive: Receiver.send_message(u'%s_start' % item.name.lower(), \ - [item.title, item.service_item_path, + [item.title, item.get_frame_path(), item.get_frame_title(), self.isLive, self.blankButton.isChecked()]) else: self.mediaObject.stop() From 8d6d2b8272481470315761c0369f69b282f51f8b Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 1 Apr 2010 00:06:57 +0100 Subject: [PATCH 092/150] standalone sof test script --- openlp/plugins/songs/lib/sofimport.py | 504 ++++++++++++++++++++++++++ 1 file changed, 504 insertions(+) create mode 100644 openlp/plugins/songs/lib/sofimport.py diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py new file mode 100644 index 000000000..7439978fd --- /dev/null +++ b/openlp/plugins/songs/lib/sofimport.py @@ -0,0 +1,504 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +# OOo API documentation: +# http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/Structure_of_Text_Documents +# http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Iterating_over_Text +# http://www.oooforum.org/forum/viewtopic.phtml?t=14409 +# http://wiki.services.openoffice.org/wiki/Python + +import re +import os +import time +from PyQt4 import QtCore + +if os.name == u'nt': + from win32com.client import Dispatch + BOLD = 150.0 + ITALIC = 2 + PAGE_BEFORE = 4 + PAGE_AFTER = 5 + PAGE_BOTH = 6 +else: + import uno + from com.sun.star.beans import PropertyValue + from com.sun.star.awt.FontWeight import BOLD + from com.sun.star.awt.FontSlant import ITALIC + from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH + +class sofimport: + def __init__(self): + self.song = None + self.new_song() + + def start_ooo(self): + if os.name == u'nt': + manager = Dispatch(u'com.sun.star.ServiceManager') + manager._FlagAsMethod(u'Bridge_GetStruct') + manager._FlagAsMethod(u'Bridge_GetValueObject') + self.desktop = manager.createInstance(u'com.sun.star.frame.Desktop') + else: + cmd = u'openoffice.org -nologo -norestore -minimized -invisible -nofirststartwizard -accept="socket,host=localhost,port=2002;urp;"' + process = QtCore.QProcess() + process.startDetached(cmd) + process.waitForStarted() + context = uno.getComponentContext() + resolver = context.ServiceManager.createInstanceWithContext( + u'com.sun.star.bridge.UnoUrlResolver', context) + ctx = None + loop = 0 + while ctx is None and loop < 3: + try: + ctx = resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext') + except: + time.sleep(1) + loop += 1 + manager = ctx.ServiceManager + self.desktop = manager.createInstanceWithContext( + "com.sun.star.frame.Desktop", ctx ) + + def open_sof_file(self, filepath): + if os.name == u'nt': + url = u'file:///' + filepath.replace(u'\\', u'/').replace(u':', u'|').replace(u' ', u'%20') + else: + url = uno.systemPathToFileUrl(filepath) + properties = [] + properties = tuple(properties) + self.document = self.desktop.loadComponentFromURL(url, u'_blank', + 0, properties) + + def close_ooo(self): + self.desktop.terminate() + + def process_doc(self): + self.blanklines = 0 + paragraphs = self.document.getText().createEnumeration() + while paragraphs.hasMoreElements(): + paragraph = paragraphs.nextElement() + if paragraph.supportsService("com.sun.star.text.Paragraph"): + self.process_paragraph(paragraph) + if self.song: + self.song.finish() + self.song = None + + def process_paragraph(self, paragraph): + text = '' + textportions = paragraph.createEnumeration() + while textportions.hasMoreElements(): + textportion = textportions.nextElement() + if textportion.BreakType in (PAGE_BEFORE, PAGE_BOTH): + self.process_paragraph_text(text) + self.new_song() + text = '' + text += self.process_textportion(textportion) + if textportion.BreakType in (PAGE_AFTER, PAGE_BOTH): + self.process_paragraph_text(text) + self.new_song() + text = '' + self.process_paragraph_text(text) + + def process_paragraph_text(self, text): + for line in text.split('\n'): + self.process_paragraph_line(line) + if self.blanklines > 2: + self.new_song() + + def process_paragraph_line(self, text): + text = text.strip() + if text == '': + self.blanklines += 1 + if self.blanklines > 1: + return + if self.song.title != '': + self.song.finish_verse() + return + #print ">" + text + "<" + self.blanklines = 0 + if self.skip_to_close_bracket: + if text.endswith(')'): + self.skip_to_close_bracket = False + return + if text.startswith('CCL Licence'): + self.in_chorus = False + return + if text == 'A Songs of Fellowship Worship Resource': + return + if text.startswith('(NB.') or text.startswith('(Regrettably') or text.startswith('(From'): + self.skip_to_close_bracket = True + return + if text.startswith('Copyright'): + self.song.copyright = text + return + if text == '(Repeat)': + self.song.repeat_verse() + return + if self.song.title == '': + if self.song.copyright == '': + self.song.add_author(text) + else: + self.song.copyright += ' ' + text + return + self.song.add_verse_line(text, self.in_chorus) + + def process_textportion(self, textportion): + text = textportion.getString() + text = self.tidy_text(text) + if text.strip() == '': + return text + if textportion.CharWeight == BOLD: + boldtext = text.strip() + if boldtext.isdigit() and self.song.songnumber == 0: + self.song.songnumber = int(boldtext) + return '' + if self.song.title == '': + text = self.uncap_text(text) + title = text.strip() + if title.startswith('\''): + title = title[1:] + if title.endswith(','): + title = title[:-1] + self.song.title = title + return text + if text.strip().startswith('('): + return text + self.in_chorus = (textportion.CharPosture == ITALIC) + return text + + def new_song(self): + if self.song: + if not self.song.finish(): + return + self.song = sofsong() + self.skip_to_close_bracket = False + self.in_chorus = False + + def tidy_text(self, text): + text = text.replace('\t', ' ') + text = text.replace('\r', '\n') + text = text.replace(u'\u2018', '\'') + text = text.replace(u'\u2019', '\'') + text = text.replace(u'\u201c', '"') + text = text.replace(u'\u201d', '"') + text = text.replace(u'\u2026', '...') + text = text.replace(u'\u2013', '-') + text = text.replace(u'\u2014', '-') + return text + + def uncap_text(self, text): + textarr = re.split('(\W+)', text) + textarr[0] = textarr[0].capitalize() + for i in range(1, len(textarr)): + if textarr[i] in ('JESUS', 'CHRIST', 'KING', 'ALMIGHTY', 'REDEEMER', 'SHEPHERD', + 'SON', 'GOD', 'LORD', 'FATHER', 'HOLY', 'SPIRIT', 'LAMB', 'YOU', + 'YOUR', 'I', 'I\'VE', 'I\'M', 'I\'LL', 'SAVIOUR', 'O', 'YOU\'RE', 'HE', 'HIS', 'HIM', 'ZION', + 'EMMANUEL', 'MAJESTY', 'JESUS\'', 'JIREH', 'JUDAH', 'LION', 'LORD\'S', 'ABRAHAM', 'GOD\'S', + 'FATHER\'S', 'ELIJAH'): + textarr[i] = textarr[i].capitalize() + else: + textarr[i] = textarr[i].lower() + text = ''.join(textarr) + return text + +class sofsong: + def __init__(self): + self.songnumber = 0 + self.title = "" + self.ischorus = False + self.versecount = 0 + self.choruscount = 0 + self.verses = [] + self.order = [] + self.authors = [] + self.copyright = "" + self.book = '' + self.currentverse = '' + + def finish_verse(self): + if self.currentverse.strip() == '': + return + if self.ischorus: + splitat = None + else: + splitat = self.verse_splits() + if splitat: + ln = 0 + verse = '' + for line in self.currentverse.split('\n'): + ln += 1 + if line == '' or ln > splitat: + self.append_verse(verse) + ln = 0 + if line: + verse = line + '\n' + else: + verse = '' + else: + verse += line + '\n' + if verse: + self.append_verse(verse) + else: + self.append_verse(self.currentverse) + self.currentverse = '' + self.ischorus = False + + def append_verse(self, verse): + if self.ischorus: + self.choruscount += 1 + versetag = 'C' + str(self.choruscount) + else: + self.versecount += 1 + versetag = 'V' + str(self.versecount) + self.verses.append([versetag, verse]) + self.order.append(versetag) + if self.choruscount > 0 and not self.ischorus: + self.order.append('C' + str(self.choruscount)) + + def repeat_verse(self): + self.finish_verse() + self.order.append(self.order[-1]) + + def add_verse_line(self, text, inchorus): + if inchorus != self.ischorus and ((len(self.verses) > 0) or + (self.currentverse.count('\n') > 1)): + self.finish_verse() + if inchorus: + self.ischorus = True + self.currentverse += text + '\n' + + def add_author(self, text): + text = text.replace(' and ', ' & ') + for author in text.split(','): + authors = author.split('&') + for i in range(len(authors)): + author2 = authors[i].strip() + if author2.find(' ') == -1 and i < len(authors) - 1: + author2 = author2 + ' ' + authors[i+1].split(' ')[-1] + self.authors.append(author2) + + def finish(self): + self.finish_verse() + if self.songnumber == 0 \ + or self.title == '' \ + or len(self.verses) == 0: + return False + if len(self.authors) == 0: + self.authors.append('Author Unknown') + self.title = self.title + ' - ' + str(self.songnumber) + if self.songnumber <= 640: + self.book = 'Songs of Fellowship 1' + elif self.songnumber <= 1150: + self.book = 'Songs of Fellowship 2' + elif self.songnumber <= 1690: + self.book = 'Songs of Fellowship 3' + else: + self.book = 'Songs of Fellowship 4' + self.print_song() + return True + + def print_song(self): + print '===== TITLE: ' + self.title + ' =====' + for (verselabel, verse) in self.verses: + print "VERSE " + verselabel + ": " + verse + print u'ORDER: ' + unicode(self.order) + for author in self.authors: + print u'AUTHORS: ' + author + print u'COPYRIGHT: ' + self.copyright + print u'BOOK: ' + self.book + + def verse_splits(self): + """ + Because someone at Kingsway forgot to check the 1+2 RTF file, + some verses were not formatted correctly. + """ + if self.songnumber == 11: return 8 + if self.songnumber == 18: return 5 + if self.songnumber == 21: return 6 + if self.songnumber == 23: return 4 + if self.songnumber == 24: return 7 + if self.songnumber == 27: return 4 + if self.songnumber == 31: return 6 + if self.songnumber == 49: return 4 + if self.songnumber == 50: return 8 + if self.songnumber == 70: return 4 + if self.songnumber == 75: return 8 + if self.songnumber == 79: return 6 + if self.songnumber == 97: return 7 + if self.songnumber == 107: return 4 + if self.songnumber == 109: return 4 + if self.songnumber == 133: return 4 + if self.songnumber == 155: return 10 + if self.songnumber == 156: return 8 + if self.songnumber == 171: return 4 + if self.songnumber == 188: return 7 + if self.songnumber == 192: return 4 + if self.songnumber == 208: return 8 + if self.songnumber == 215: return 8 + if self.songnumber == 220: return 4 + if self.songnumber == 247: return 6 + if self.songnumber == 248: return 6 + if self.songnumber == 251: return 8 + if self.songnumber == 295: return 8 + if self.songnumber == 307: return 5 + if self.songnumber == 314: return 6 + if self.songnumber == 325: return 8 + if self.songnumber == 386: return 6 + if self.songnumber == 415: return 4 + if self.songnumber == 426: return 4 + if self.songnumber == 434: return 5 + if self.songnumber == 437: return 4 + if self.songnumber == 438: return 6 + if self.songnumber == 456: return 8 + if self.songnumber == 461: return 4 + if self.songnumber == 469: return 4 + if self.songnumber == 470: return 5 + if self.songnumber == 476: return 6 + if self.songnumber == 477: return 7 + if self.songnumber == 480: return 8 + if self.songnumber == 482: return 4 + if self.songnumber == 512: return 4 + if self.songnumber == 513: return 8 + if self.songnumber == 518: return 5 + if self.songnumber == 520: return 4 + if self.songnumber == 523: return 6 + if self.songnumber == 526: return 8 + if self.songnumber == 527: return 4 + if self.songnumber == 529: return 4 + if self.songnumber == 537: return 4 + if self.songnumber == 555: return 6 + if self.songnumber == 581: return 4 + if self.songnumber == 589: return 6 + if self.songnumber == 590: return 4 + if self.songnumber == 593: return 8 + if self.songnumber == 596: return 4 + if self.songnumber == 610: return 6 + if self.songnumber == 611: return 6 + if self.songnumber == 619: return 8 + if self.songnumber == 645: return 5 + if self.songnumber == 653: return 6 + if self.songnumber == 683: return 7 + if self.songnumber == 686: return 4 + if self.songnumber == 697: return 8 + if self.songnumber == 698: return 4 + if self.songnumber == 704: return 6 + if self.songnumber == 716: return 4 + if self.songnumber == 717: return 6 + if self.songnumber == 730: return 4 + if self.songnumber == 731: return 8 + if self.songnumber == 732: return 8 + if self.songnumber == 738: return 4 + if self.songnumber == 756: return 9 + if self.songnumber == 815: return 6 + if self.songnumber == 830: return 8 + if self.songnumber == 831: return 4 + if self.songnumber == 876: return 6 + if self.songnumber == 877: return 6 + if self.songnumber == 892: return 4 + if self.songnumber == 894: return 6 + if self.songnumber == 902: return 8 + if self.songnumber == 905: return 8 + if self.songnumber == 921: return 6 + if self.songnumber == 940: return 7 + if self.songnumber == 955: return 9 + if self.songnumber == 968: return 8 + if self.songnumber == 972: return 7 + if self.songnumber == 974: return 4 + if self.songnumber == 988: return 6 + if self.songnumber == 991: return 5 + if self.songnumber == 1002: return 8 + if self.songnumber == 1024: return 8 + if self.songnumber == 1044: return 9 + if self.songnumber == 1088: return 6 + if self.songnumber == 1117: return 6 + if self.songnumber == 1119: return 7 + return None + +sof = sofimport() +sof.start_ooo() +sof.open_sof_file("/home/jonathan/sof.rtf") +#sof.open_sof_file("c:\users\jonathan\Desktop\sof3words.rtf") +#sof.open_sof_file("c:\users\jonathan\Desktop\sof4words.rtf") +sof.process_doc() +sof.close_ooo() + +""" + + +Sub FinishSong() + + sql = "SELECT songid FROM songs where songtitle = '" & Title & "'" + set rs = db.Execute(sql) + If Not rs.EOF Then + rs.MoveFirst + sid = rs("songid") + sql = "UPDATE songs SET songtitle='" & title & "', lyrics='" & lyrics & "', copyrightinfo='" & _ + Copyright & "', settingsid=0 WHERE songid=" & sid + db.Execute(sql) + Else + sql = "INSERT INTO songs ('songtitle', 'lyrics', 'copyrightinfo', 'settingsid') VALUES ('" & _ + Title & "', '" & Lyrics & "', '" & Copyright & "',0)" + db.Execute(sql) + sql = "SELECT songid FROM songs where songtitle = '" & Title & "'" + set rs = db.Execute(sql) + db.Execute(sql) + rs.MoveFirst + sid = rs("songid") + End If + For aut = LBound(Authors) To UBound(Authors) + Authors(Aut) = Trim(Authors(aut)) + If InStr(1, Authors(aut), " ") = 0 And aut < UBound(Authors) Then + temp = Split(Authors(aut+1), " ") + Authors(aut) = Authors(aut) + " " + temp(UBound(temp)) + End If + If Right(Authors(aut), 1) = "." Then Authors(aut) = Left(Authors(aut), Len(Authors(aut)) - 1) + Authors(aut) = Replace(Authors(aut), "'", "''") + sql = "SELECT authorid FROM authors where authorname = '" & Authors(aut) & "'" + set rs = db.Execute(sql) + If Not rs.EOF Then + rs.MoveFirst + aid = rs("authorid") + Else + sql = "INSERT INTO authors ('authorname') VALUES ('" & Authors(aut) & "')" + db.Execute(sql) + sql = "SELECT authorid FROM authors where authorname = '" & Authors(aut) & "'" + set rs = db.Execute(sql) + rs.MoveFirst + aid = rs("authorid") + End If + ' REPLACE seemed to insert a second duplicate row, so need to do select/insert instead. + sql = "SELECT count(*) FROM songauthors where songid = " & sid & " and authorid = " & aid + set rs = db.Execute(sql) + rs.MoveFirst + If rs(0)=0 Then + sql = "INSERT INTO songauthors VALUES (" & aid & "," & sid &")" + db.Execute(sql) + End If + Next + Exit Sub +End Sub + + + +""" + From 33f4bc05f228566ecadf8d5f376d7ec85380213a Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 1 Apr 2010 08:42:42 +0100 Subject: [PATCH 093/150] tidy --- openlp/plugins/songs/lib/sofimport.py | 209 ++++++++++---------------- 1 file changed, 77 insertions(+), 132 deletions(-) diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 7439978fd..5c9cf1778 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -81,7 +81,8 @@ class sofimport: def open_sof_file(self, filepath): if os.name == u'nt': - url = u'file:///' + filepath.replace(u'\\', u'/').replace(u':', u'|').replace(u' ', u'%20') + url = u'file:///' + filepath.replace(u'\\', u'/') + url = url.replace(u':', u'|').replace(u' ', u'%20') else: url = uno.systemPathToFileUrl(filepath) properties = [] @@ -104,84 +105,85 @@ class sofimport: self.song = None def process_paragraph(self, paragraph): - text = '' + text = u'' textportions = paragraph.createEnumeration() while textportions.hasMoreElements(): textportion = textportions.nextElement() if textportion.BreakType in (PAGE_BEFORE, PAGE_BOTH): self.process_paragraph_text(text) self.new_song() - text = '' + text = u'' text += self.process_textportion(textportion) if textportion.BreakType in (PAGE_AFTER, PAGE_BOTH): self.process_paragraph_text(text) self.new_song() - text = '' + text = u'' self.process_paragraph_text(text) def process_paragraph_text(self, text): - for line in text.split('\n'): + for line in text.split(u'\n'): self.process_paragraph_line(line) if self.blanklines > 2: self.new_song() def process_paragraph_line(self, text): text = text.strip() - if text == '': + if text == u'': self.blanklines += 1 if self.blanklines > 1: return - if self.song.title != '': + if self.song.title != u'': self.song.finish_verse() return #print ">" + text + "<" self.blanklines = 0 if self.skip_to_close_bracket: - if text.endswith(')'): + if text.endswith(u')'): self.skip_to_close_bracket = False return - if text.startswith('CCL Licence'): + if text.startswith(u'CCL Licence'): self.in_chorus = False return - if text == 'A Songs of Fellowship Worship Resource': + if text == u'A Songs of Fellowship Worship Resource': return - if text.startswith('(NB.') or text.startswith('(Regrettably') or text.startswith('(From'): + if text.startswith(u'(NB.') or text.startswith(u'(Regrettably') \ + or text.startswith(u'(From'): self.skip_to_close_bracket = True return - if text.startswith('Copyright'): + if text.startswith(u'Copyright'): self.song.copyright = text return - if text == '(Repeat)': + if text == u'(Repeat)': self.song.repeat_verse() return - if self.song.title == '': - if self.song.copyright == '': + if self.song.title == u'': + if self.song.copyright == u'': self.song.add_author(text) else: - self.song.copyright += ' ' + text + self.song.copyright += u' ' + text return self.song.add_verse_line(text, self.in_chorus) def process_textportion(self, textportion): text = textportion.getString() text = self.tidy_text(text) - if text.strip() == '': + if text.strip() == u'': return text if textportion.CharWeight == BOLD: boldtext = text.strip() if boldtext.isdigit() and self.song.songnumber == 0: self.song.songnumber = int(boldtext) - return '' - if self.song.title == '': + return u'' + if self.song.title == u'': text = self.uncap_text(text) title = text.strip() - if title.startswith('\''): + if title.startswith(u'\''): title = title[1:] - if title.endswith(','): + if title.endswith(u','): title = title[:-1] self.song.title = title return text - if text.strip().startswith('('): + if text.strip().startswith(u'('): return text self.in_chorus = (textportion.CharPosture == ITALIC) return text @@ -195,48 +197,51 @@ class sofimport: self.in_chorus = False def tidy_text(self, text): - text = text.replace('\t', ' ') - text = text.replace('\r', '\n') - text = text.replace(u'\u2018', '\'') - text = text.replace(u'\u2019', '\'') - text = text.replace(u'\u201c', '"') - text = text.replace(u'\u201d', '"') - text = text.replace(u'\u2026', '...') - text = text.replace(u'\u2013', '-') - text = text.replace(u'\u2014', '-') + text = text.replace(u'\t', u' ') + text = text.replace(u'\r', u'\n') + text = text.replace(u'\u2018', u'\'') + text = text.replace(u'\u2019', u'\'') + text = text.replace(u'\u201c', u'"') + text = text.replace(u'\u201d', u'"') + text = text.replace(u'\u2026', u'...') + text = text.replace(u'\u2013', u'-') + text = text.replace(u'\u2014', u'-') return text def uncap_text(self, text): - textarr = re.split('(\W+)', text) + textarr = re.split(u'(\W+)', text) textarr[0] = textarr[0].capitalize() for i in range(1, len(textarr)): - if textarr[i] in ('JESUS', 'CHRIST', 'KING', 'ALMIGHTY', 'REDEEMER', 'SHEPHERD', - 'SON', 'GOD', 'LORD', 'FATHER', 'HOLY', 'SPIRIT', 'LAMB', 'YOU', - 'YOUR', 'I', 'I\'VE', 'I\'M', 'I\'LL', 'SAVIOUR', 'O', 'YOU\'RE', 'HE', 'HIS', 'HIM', 'ZION', - 'EMMANUEL', 'MAJESTY', 'JESUS\'', 'JIREH', 'JUDAH', 'LION', 'LORD\'S', 'ABRAHAM', 'GOD\'S', - 'FATHER\'S', 'ELIJAH'): + # Do not translate these. Fixed strings in SOF song file + if textarr[i] in (u'JESUS', u'CHRIST', u'KING', u'ALMIGHTY', + u'REDEEMER', u'SHEPHERD', u'SON', u'GOD', u'LORD', u'FATHER', + u'HOLY', u'SPIRIT', u'LAMB', u'YOU', u'YOUR', u'I', u'I\'VE', + u'I\'M', u'I\'LL', u'SAVIOUR', u'O', u'YOU\'RE', u'HE', u'HIS', + u'HIM', u'ZION', u'EMMANUEL', u'MAJESTY', u'JESUS\'', u'JIREH', + u'JUDAH', u'LION', u'LORD\'S', u'ABRAHAM', u'GOD\'S', + u'FATHER\'S', u'ELIJAH'): textarr[i] = textarr[i].capitalize() else: textarr[i] = textarr[i].lower() - text = ''.join(textarr) + text = u''.join(textarr) return text class sofsong: def __init__(self): self.songnumber = 0 - self.title = "" + self.title = u'' self.ischorus = False self.versecount = 0 self.choruscount = 0 self.verses = [] self.order = [] self.authors = [] - self.copyright = "" - self.book = '' - self.currentverse = '' + self.copyright = u'' + self.book = u'' + self.currentverse = u'' def finish_verse(self): - if self.currentverse.strip() == '': + if self.currentverse.strip() == u'': return if self.ischorus: splitat = None @@ -244,36 +249,36 @@ class sofsong: splitat = self.verse_splits() if splitat: ln = 0 - verse = '' - for line in self.currentverse.split('\n'): + verse = u'' + for line in self.currentverse.split(u'\n'): ln += 1 - if line == '' or ln > splitat: + if line == u'' or ln > splitat: self.append_verse(verse) ln = 0 if line: - verse = line + '\n' + verse = line + u'\n' else: - verse = '' + verse = u'' else: - verse += line + '\n' + verse += line + u'\n' if verse: self.append_verse(verse) else: self.append_verse(self.currentverse) - self.currentverse = '' + self.currentverse = u'' self.ischorus = False def append_verse(self, verse): if self.ischorus: self.choruscount += 1 - versetag = 'C' + str(self.choruscount) + versetag = u'C' + unicode(self.choruscount) else: self.versecount += 1 - versetag = 'V' + str(self.versecount) + versetag = u'V' + unicode(self.versecount) self.verses.append([versetag, verse]) self.order.append(versetag) if self.choruscount > 0 and not self.ischorus: - self.order.append('C' + str(self.choruscount)) + self.order.append(u'C' + unicode(self.choruscount)) def repeat_verse(self): self.finish_verse() @@ -281,46 +286,46 @@ class sofsong: def add_verse_line(self, text, inchorus): if inchorus != self.ischorus and ((len(self.verses) > 0) or - (self.currentverse.count('\n') > 1)): + (self.currentverse.count(u'\n') > 1)): self.finish_verse() if inchorus: self.ischorus = True - self.currentverse += text + '\n' + self.currentverse += text + u'\n' def add_author(self, text): - text = text.replace(' and ', ' & ') - for author in text.split(','): - authors = author.split('&') + text = text.replace(u' and ', u' & ') + for author in text.split(u','): + authors = author.split(u'&') for i in range(len(authors)): author2 = authors[i].strip() - if author2.find(' ') == -1 and i < len(authors) - 1: - author2 = author2 + ' ' + authors[i+1].split(' ')[-1] + if author2.find(u' ') == -1 and i < len(authors) - 1: + author2 = author2 + u' ' + authors[i + 1].split(u' ')[-1] self.authors.append(author2) def finish(self): self.finish_verse() if self.songnumber == 0 \ - or self.title == '' \ + or self.title == u'' \ or len(self.verses) == 0: return False if len(self.authors) == 0: - self.authors.append('Author Unknown') - self.title = self.title + ' - ' + str(self.songnumber) + self.authors.append(u'Author Unknown') if self.songnumber <= 640: - self.book = 'Songs of Fellowship 1' + self.book = u'Songs of Fellowship 1' elif self.songnumber <= 1150: - self.book = 'Songs of Fellowship 2' + self.book = u'Songs of Fellowship 2' elif self.songnumber <= 1690: - self.book = 'Songs of Fellowship 3' + self.book = u'Songs of Fellowship 3' else: - self.book = 'Songs of Fellowship 4' + self.book = u'Songs of Fellowship 4' self.print_song() return True def print_song(self): - print '===== TITLE: ' + self.title + ' =====' + print u'===== TITLE: ' + self.title + u' =====' + print u'ALTTITLE: ' + unicode(self.songnumber) for (verselabel, verse) in self.verses: - print "VERSE " + verselabel + ": " + verse + print u'VERSE ' + verselabel + u': ' + verse print u'ORDER: ' + unicode(self.order) for author in self.authors: print u'AUTHORS: ' + author @@ -436,69 +441,9 @@ class sofsong: sof = sofimport() sof.start_ooo() -sof.open_sof_file("/home/jonathan/sof.rtf") -#sof.open_sof_file("c:\users\jonathan\Desktop\sof3words.rtf") -#sof.open_sof_file("c:\users\jonathan\Desktop\sof4words.rtf") +sof.open_sof_file(u'/home/jonathan/sof.rtf') +#sof.open_sof_file(u'c:\users\jonathan\Desktop\sof3words.rtf') +#sof.open_sof_file(u'c:\users\jonathan\Desktop\sof4words.rtf') sof.process_doc() sof.close_ooo() -""" - - -Sub FinishSong() - - sql = "SELECT songid FROM songs where songtitle = '" & Title & "'" - set rs = db.Execute(sql) - If Not rs.EOF Then - rs.MoveFirst - sid = rs("songid") - sql = "UPDATE songs SET songtitle='" & title & "', lyrics='" & lyrics & "', copyrightinfo='" & _ - Copyright & "', settingsid=0 WHERE songid=" & sid - db.Execute(sql) - Else - sql = "INSERT INTO songs ('songtitle', 'lyrics', 'copyrightinfo', 'settingsid') VALUES ('" & _ - Title & "', '" & Lyrics & "', '" & Copyright & "',0)" - db.Execute(sql) - sql = "SELECT songid FROM songs where songtitle = '" & Title & "'" - set rs = db.Execute(sql) - db.Execute(sql) - rs.MoveFirst - sid = rs("songid") - End If - For aut = LBound(Authors) To UBound(Authors) - Authors(Aut) = Trim(Authors(aut)) - If InStr(1, Authors(aut), " ") = 0 And aut < UBound(Authors) Then - temp = Split(Authors(aut+1), " ") - Authors(aut) = Authors(aut) + " " + temp(UBound(temp)) - End If - If Right(Authors(aut), 1) = "." Then Authors(aut) = Left(Authors(aut), Len(Authors(aut)) - 1) - Authors(aut) = Replace(Authors(aut), "'", "''") - sql = "SELECT authorid FROM authors where authorname = '" & Authors(aut) & "'" - set rs = db.Execute(sql) - If Not rs.EOF Then - rs.MoveFirst - aid = rs("authorid") - Else - sql = "INSERT INTO authors ('authorname') VALUES ('" & Authors(aut) & "')" - db.Execute(sql) - sql = "SELECT authorid FROM authors where authorname = '" & Authors(aut) & "'" - set rs = db.Execute(sql) - rs.MoveFirst - aid = rs("authorid") - End If - ' REPLACE seemed to insert a second duplicate row, so need to do select/insert instead. - sql = "SELECT count(*) FROM songauthors where songid = " & sid & " and authorid = " & aid - set rs = db.Execute(sql) - rs.MoveFirst - If rs(0)=0 Then - sql = "INSERT INTO songauthors VALUES (" & aid & "," & sid &")" - db.Execute(sql) - End If - Next - Exit Sub -End Sub - - - -""" - From 1f41039e07a93481713982c101c57ac29b90709b Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 1 Apr 2010 22:36:03 +0100 Subject: [PATCH 094/150] Split song and sof specifics --- openlp/plugins/songs/lib/sofimport.py | 604 ++++++++++++++----------- openlp/plugins/songs/lib/songimport.py | 259 +++++++++++ 2 files changed, 597 insertions(+), 266 deletions(-) create mode 100644 openlp/plugins/songs/lib/songimport.py diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 5c9cf1778..c73449d44 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -31,8 +31,9 @@ import re import os -import time +import time from PyQt4 import QtCore +from songimport import SongImport if os.name == u'nt': from win32com.client import Dispatch @@ -48,19 +49,44 @@ else: from com.sun.star.awt.FontSlant import ITALIC from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH -class sofimport: - def __init__(self): +class SofImport(object): + """ + Import songs provided on disks with the Songs of Fellowship music books + VOLS1_2.RTF, sof3words.rtf and sof4words.rtf + + Use OpenOffice.org Writer for processing the rtf file + + The three books are not only inconsistant with each other, they are + inconsistant in themselves too with their formatting. Not only this, but + the 1+2 book does not space out verses correctly. This script attempts + to sort it out, but doesn't get it 100% right. But better than having to + type them all out! + + It attempts to detect italiced verses, and treats these as choruses in + the verse ordering. Again not perfect, but a start. + """ + def __init__(self, songmanager): + """ + Initialise the class. Requires a songmanager class which is passed + to SongImport for writing song to disk + """ self.song = None - self.new_song() + self.manager = songmanager def start_ooo(self): + """ + Start OpenOffice.org process + TODO: The presentation/Impress plugin may already have it running + """ if os.name == u'nt': manager = Dispatch(u'com.sun.star.ServiceManager') manager._FlagAsMethod(u'Bridge_GetStruct') manager._FlagAsMethod(u'Bridge_GetValueObject') self.desktop = manager.createInstance(u'com.sun.star.frame.Desktop') else: - cmd = u'openoffice.org -nologo -norestore -minimized -invisible -nofirststartwizard -accept="socket,host=localhost,port=2002;urp;"' + cmd = u'openoffice.org -nologo -norestore -minimized -invisible ' \ + + u'-nofirststartwizard ' \ + + '-accept="socket,host=localhost,port=2002;urp;"' process = QtCore.QProcess() process.startDetached(cmd) process.waitForStarted() @@ -69,17 +95,22 @@ class sofimport: u'com.sun.star.bridge.UnoUrlResolver', context) ctx = None loop = 0 - while ctx is None and loop < 3: + while ctx is None and loop < 5: try: - ctx = resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext') - except: - time.sleep(1) - loop += 1 + ctx = resolver.resolve(u'uno:socket,host=localhost,' \ + + 'port=2002;urp;StarOffice.ComponentContext') + except: + pass + time.sleep(1) + loop += 1 manager = ctx.ServiceManager self.desktop = manager.createInstanceWithContext( "com.sun.star.frame.Desktop", ctx ) - def open_sof_file(self, filepath): + def open_ooo_file(self, filepath): + """ + Open the passed file in OpenOffice.org Writer + """ if os.name == u'nt': url = u'file:///' + filepath.replace(u'\\', u'/') url = url.replace(u':', u'|').replace(u' ', u'%20') @@ -91,10 +122,18 @@ class sofimport: 0, properties) def close_ooo(self): + """ + Close down OpenOffice.org. + TODO: Further checks that it have other docs open, e.g. Impress! + """ self.desktop.terminate() - def process_doc(self): + def process_doc(self): + """ + Process the RTF file, a paragraph at a time + """ self.blanklines = 0 + self.new_song() paragraphs = self.document.getText().createEnumeration() while paragraphs.hasMoreElements(): paragraph = paragraphs.nextElement() @@ -105,6 +144,16 @@ class sofimport: self.song = None def process_paragraph(self, paragraph): + """ + Process a paragraph. + In the first book, a paragraph is a single line. In the latter ones + they may contain multiple lines. + Each paragraph contains textportions. Each textportion has it's own + styling, e.g. italics, bold etc. + Also check for page breaks, which indicates a new song in books 1+2. + In later books, there may not be line breaks, so check for 3 or more + newlines + """ text = u'' textportions = paragraph.createEnumeration() while textportions.hasMoreElements(): @@ -120,29 +169,36 @@ class sofimport: text = u'' self.process_paragraph_text(text) - def process_paragraph_text(self, text): + def process_paragraph_text(self, text): + """ + Split the paragraph text into multiple lines and process + """ for line in text.split(u'\n'): self.process_paragraph_line(line) if self.blanklines > 2: self.new_song() - def process_paragraph_line(self, text): + def process_paragraph_line(self, text): + """ + Process a single line. Throw away that text which isn't relevant, i.e. + stuff that appears at the end of the song. + Anything that is OK, append to the current verse + """ text = text.strip() if text == u'': self.blanklines += 1 if self.blanklines > 1: return - if self.song.title != u'': - self.song.finish_verse() + if self.song.get_title() != u'': + self.finish_verse() return - #print ">" + text + "<" self.blanklines = 0 if self.skip_to_close_bracket: if text.endswith(u')'): self.skip_to_close_bracket = False return if text.startswith(u'CCL Licence'): - self.in_chorus = False + self.italics = False return if text == u'A Songs of Fellowship Worship Resource': return @@ -151,299 +207,315 @@ class sofimport: self.skip_to_close_bracket = True return if text.startswith(u'Copyright'): - self.song.copyright = text + self.song.add_copyright(text) return if text == u'(Repeat)': + self.finish_verse() self.song.repeat_verse() return - if self.song.title == u'': - if self.song.copyright == u'': - self.song.add_author(text) + if self.song.get_title() == u'': + if self.song.get_copyright() == u'': + self.add_author(text) else: - self.song.copyright += u' ' + text + self.song.add_copyright(text) return - self.song.add_verse_line(text, self.in_chorus) + self.add_verse_line(text) - def process_textportion(self, textportion): + def process_textportion(self, textportion): + """ + Process a text portion. Here we just get the text and detect if + it's bold or italics. If it's bold then its a song number or song title. + Song titles are in all capitals, so we must bring the capitalization + into line + """ text = textportion.getString() text = self.tidy_text(text) if text.strip() == u'': return text if textportion.CharWeight == BOLD: boldtext = text.strip() - if boldtext.isdigit() and self.song.songnumber == 0: - self.song.songnumber = int(boldtext) + if boldtext.isdigit() and self.song.get_song_number() == '': + self.add_songnumber(boldtext) return u'' - if self.song.title == u'': - text = self.uncap_text(text) - title = text.strip() - if title.startswith(u'\''): - title = title[1:] - if title.endswith(u','): - title = title[:-1] - self.song.title = title + if self.song.get_title() == u'': + text = self.uncap_text(text) + self.add_title(text) return text if text.strip().startswith(u'('): return text - self.in_chorus = (textportion.CharPosture == ITALIC) + self.italics = (textportion.CharPosture == ITALIC) return text - def new_song(self): + def new_song(self): + """ + A change of song. Store the old, create a new + ... but only if the last song was complete. If not, stick with it + """ if self.song: - if not self.song.finish(): + self.finish_verse() + if not self.song.check_complete(): return - self.song = sofsong() + self.song.finish() + self.song = SongImport(self.manager) self.skip_to_close_bracket = False - self.in_chorus = False - - def tidy_text(self, text): - text = text.replace(u'\t', u' ') - text = text.replace(u'\r', u'\n') - text = text.replace(u'\u2018', u'\'') - text = text.replace(u'\u2019', u'\'') - text = text.replace(u'\u201c', u'"') - text = text.replace(u'\u201d', u'"') - text = text.replace(u'\u2026', u'...') - text = text.replace(u'\u2013', u'-') - text = text.replace(u'\u2014', u'-') - return text - - def uncap_text(self, text): - textarr = re.split(u'(\W+)', text) - textarr[0] = textarr[0].capitalize() - for i in range(1, len(textarr)): - # Do not translate these. Fixed strings in SOF song file - if textarr[i] in (u'JESUS', u'CHRIST', u'KING', u'ALMIGHTY', - u'REDEEMER', u'SHEPHERD', u'SON', u'GOD', u'LORD', u'FATHER', - u'HOLY', u'SPIRIT', u'LAMB', u'YOU', u'YOUR', u'I', u'I\'VE', - u'I\'M', u'I\'LL', u'SAVIOUR', u'O', u'YOU\'RE', u'HE', u'HIS', - u'HIM', u'ZION', u'EMMANUEL', u'MAJESTY', u'JESUS\'', u'JIREH', - u'JUDAH', u'LION', u'LORD\'S', u'ABRAHAM', u'GOD\'S', - u'FATHER\'S', u'ELIJAH'): - textarr[i] = textarr[i].capitalize() - else: - textarr[i] = textarr[i].lower() - text = u''.join(textarr) - return text - -class sofsong: - def __init__(self): - self.songnumber = 0 - self.title = u'' - self.ischorus = False - self.versecount = 0 - self.choruscount = 0 - self.verses = [] - self.order = [] - self.authors = [] - self.copyright = u'' - self.book = u'' - self.currentverse = u'' + self.is_chorus = False + self.italics = False + self.currentverse = u'' - def finish_verse(self): + def add_songnumber(self, song_no): + """ + Add a song number, store as alternate title. Also use the song + number to work out which songbook we're in + """ + self.song.set_song_number(song_no) + if int(song_no) <= 640: + self.song.set_song_book(u'Songs of Fellowship 1', + 'Kingsway\'s Thankyou Music') + elif int(song_no) <= 1150: + self.song.set_song_book(u'Songs of Fellowship 2', + 'Kingsway\'s Thankyou Music') + elif int(song_no) <= 1690: + self.song.set_song_book(u'Songs of Fellowship 3', + 'Kingsway\'s Thankyou Music') + else: + self.song.set_song_book(u'Songs of Fellowship 4', + 'Kingsway\'s Thankyou Music') + + def add_title(self, text): + """ + Add the title to the song. Strip some leading/trailing punctuation that + we don't want in a title + """ + title = text.strip() + if title.startswith(u'\''): + title = title[1:] + if title.endswith(u','): + title = title[:-1] + self.song.set_title(title) + + def add_author(self, text): + """ + Add the author. OpenLP stores them individually so split by 'and', '&' + and comma. + However need to check for "Mr and Mrs Smith" and turn it to + "Mr Smith" and "Mrs Smith". + """ + text = text.replace(u' and ', u' & ') + for author in text.split(u','): + authors = author.split(u'&') + for i in range(len(authors)): + author2 = authors[i].strip() + if author2.find(u' ') == -1 and i < len(authors) - 1: + author2 = author2 + u' ' \ + + authors[i + 1].strip().split(u' ')[-1] + self.song.add_author(author2) + + def add_verse_line(self, text): + """ + Add a line to the current verse. If the formatting has changed and + 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 + (self.currentverse.count(u'\n') > 1)): + self.finish_verse() + if self.italics: + self.is_chorus = True + self.currentverse += text + u'\n' + + def finish_verse(self): + """ + Verse is finished, store it. Note in book 1+2, some songs are formatted + incorrectly. Here we try and split songs with missing line breaks into + the correct number of verses. + """ if self.currentverse.strip() == u'': - return - if self.ischorus: - splitat = None - else: - splitat = self.verse_splits() + return + if self.is_chorus: + versetag = 'C' + splitat = None + else: + versetag = 'V' + splitat = self.verse_splits(self.song.get_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.append_verse(verse) - ln = 0 + if line == u'' or ln > splitat: + self.song.add_verse(verse, versetag) + ln = 0 if line: - verse = line + u'\n' - else: + verse = line + u'\n' + else: verse = u'' else: verse += line + u'\n' if verse: - self.append_verse(verse) + self.song.add_verse(verse, versetag) else: - self.append_verse(self.currentverse) + self.song.add_verse(self.currentverse, versetag) self.currentverse = u'' - self.ischorus = False + self.is_chorus = False - def append_verse(self, verse): - if self.ischorus: - self.choruscount += 1 - versetag = u'C' + unicode(self.choruscount) - else: - self.versecount += 1 - versetag = u'V' + unicode(self.versecount) - self.verses.append([versetag, verse]) - self.order.append(versetag) - if self.choruscount > 0 and not self.ischorus: - self.order.append(u'C' + unicode(self.choruscount)) + 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. + """ + text = text.replace(u'\t', u' ') + text = text.replace(u'\r', u'\n') + text = text.replace(u'\u2018', u'\'') + text = text.replace(u'\u2019', u'\'') + text = text.replace(u'\u201c', u'"') + text = text.replace(u'\u201d', u'"') + text = text.replace(u'\u2026', u'...') + text = text.replace(u'\u2013', u'-') + text = text.replace(u'\u2014', u'-') + return text - def repeat_verse(self): - self.finish_verse() - self.order.append(self.order[-1]) - - def add_verse_line(self, text, inchorus): - if inchorus != self.ischorus and ((len(self.verses) > 0) or - (self.currentverse.count(u'\n') > 1)): - self.finish_verse() - if inchorus: - self.ischorus = True - self.currentverse += text + u'\n' - - def add_author(self, text): - text = text.replace(u' and ', u' & ') - for author in text.split(u','): - authors = author.split(u'&') - for i in range(len(authors)): - author2 = authors[i].strip() - if author2.find(u' ') == -1 and i < len(authors) - 1: - author2 = author2 + u' ' + authors[i + 1].split(u' ')[-1] - self.authors.append(author2) + def uncap_text(self, text): + """ + Words in the title are in all capitals, so we lowercase them. + However some of these words, e.g. referring to God need a leading + capital letter. + + There is a complicated word "One", which is sometimes lower and + sometimes upper depending on context. Never mind, keep it lower. + """ + textarr = re.split(u'(\W+)', text) + textarr[0] = textarr[0].capitalize() + for i in range(1, len(textarr)): + # Do not translate these. Fixed strings in SOF song file + if textarr[i] in (u'JESUS', u'CHRIST', u'KING', u'ALMIGHTY', + u'REDEEMER', u'SHEPHERD', u'SON', u'GOD', u'LORD', u'FATHER', + u'HOLY', u'SPIRIT', u'LAMB', u'YOU', u'YOUR', u'I', u'I\'VE', + u'I\'M', u'I\'LL', u'SAVIOUR', u'O', u'YOU\'RE', u'HE', u'HIS', + u'HIM', u'ZION', u'EMMANUEL', u'MAJESTY', u'JESUS\'', u'JIREH', + u'JUDAH', u'LION', u'LORD\'S', u'ABRAHAM', u'GOD\'S', + u'FATHER\'S', u'ELIJAH'): + textarr[i] = textarr[i].capitalize() + else: + textarr[i] = textarr[i].lower() + text = u''.join(textarr) + return text - def finish(self): - self.finish_verse() - if self.songnumber == 0 \ - or self.title == u'' \ - or len(self.verses) == 0: - return False - if len(self.authors) == 0: - self.authors.append(u'Author Unknown') - if self.songnumber <= 640: - self.book = u'Songs of Fellowship 1' - elif self.songnumber <= 1150: - self.book = u'Songs of Fellowship 2' - elif self.songnumber <= 1690: - self.book = u'Songs of Fellowship 3' - else: - self.book = u'Songs of Fellowship 4' - self.print_song() - return True - - def print_song(self): - print u'===== TITLE: ' + self.title + u' =====' - print u'ALTTITLE: ' + unicode(self.songnumber) - for (verselabel, verse) in self.verses: - print u'VERSE ' + verselabel + u': ' + verse - print u'ORDER: ' + unicode(self.order) - for author in self.authors: - print u'AUTHORS: ' + author - print u'COPYRIGHT: ' + self.copyright - print u'BOOK: ' + self.book - - def verse_splits(self): + def verse_splits(self, song_number): """ Because someone at Kingsway forgot to check the 1+2 RTF file, some verses were not formatted correctly. """ - if self.songnumber == 11: return 8 - if self.songnumber == 18: return 5 - if self.songnumber == 21: return 6 - if self.songnumber == 23: return 4 - if self.songnumber == 24: return 7 - if self.songnumber == 27: return 4 - if self.songnumber == 31: return 6 - if self.songnumber == 49: return 4 - if self.songnumber == 50: return 8 - if self.songnumber == 70: return 4 - if self.songnumber == 75: return 8 - if self.songnumber == 79: return 6 - if self.songnumber == 97: return 7 - if self.songnumber == 107: return 4 - if self.songnumber == 109: return 4 - if self.songnumber == 133: return 4 - if self.songnumber == 155: return 10 - if self.songnumber == 156: return 8 - if self.songnumber == 171: return 4 - if self.songnumber == 188: return 7 - if self.songnumber == 192: return 4 - if self.songnumber == 208: return 8 - if self.songnumber == 215: return 8 - if self.songnumber == 220: return 4 - if self.songnumber == 247: return 6 - if self.songnumber == 248: return 6 - if self.songnumber == 251: return 8 - if self.songnumber == 295: return 8 - if self.songnumber == 307: return 5 - if self.songnumber == 314: return 6 - if self.songnumber == 325: return 8 - if self.songnumber == 386: return 6 - if self.songnumber == 415: return 4 - if self.songnumber == 426: return 4 - if self.songnumber == 434: return 5 - if self.songnumber == 437: return 4 - if self.songnumber == 438: return 6 - if self.songnumber == 456: return 8 - if self.songnumber == 461: return 4 - if self.songnumber == 469: return 4 - if self.songnumber == 470: return 5 - if self.songnumber == 476: return 6 - if self.songnumber == 477: return 7 - if self.songnumber == 480: return 8 - if self.songnumber == 482: return 4 - if self.songnumber == 512: return 4 - if self.songnumber == 513: return 8 - if self.songnumber == 518: return 5 - if self.songnumber == 520: return 4 - if self.songnumber == 523: return 6 - if self.songnumber == 526: return 8 - if self.songnumber == 527: return 4 - if self.songnumber == 529: return 4 - if self.songnumber == 537: return 4 - if self.songnumber == 555: return 6 - if self.songnumber == 581: return 4 - if self.songnumber == 589: return 6 - if self.songnumber == 590: return 4 - if self.songnumber == 593: return 8 - if self.songnumber == 596: return 4 - if self.songnumber == 610: return 6 - if self.songnumber == 611: return 6 - if self.songnumber == 619: return 8 - if self.songnumber == 645: return 5 - if self.songnumber == 653: return 6 - if self.songnumber == 683: return 7 - if self.songnumber == 686: return 4 - if self.songnumber == 697: return 8 - if self.songnumber == 698: return 4 - if self.songnumber == 704: return 6 - if self.songnumber == 716: return 4 - if self.songnumber == 717: return 6 - if self.songnumber == 730: return 4 - if self.songnumber == 731: return 8 - if self.songnumber == 732: return 8 - if self.songnumber == 738: return 4 - if self.songnumber == 756: return 9 - if self.songnumber == 815: return 6 - if self.songnumber == 830: return 8 - if self.songnumber == 831: return 4 - if self.songnumber == 876: return 6 - if self.songnumber == 877: return 6 - if self.songnumber == 892: return 4 - if self.songnumber == 894: return 6 - if self.songnumber == 902: return 8 - if self.songnumber == 905: return 8 - if self.songnumber == 921: return 6 - if self.songnumber == 940: return 7 - if self.songnumber == 955: return 9 - if self.songnumber == 968: return 8 - if self.songnumber == 972: return 7 - if self.songnumber == 974: return 4 - if self.songnumber == 988: return 6 - if self.songnumber == 991: return 5 - if self.songnumber == 1002: return 8 - if self.songnumber == 1024: return 8 - if self.songnumber == 1044: return 9 - if self.songnumber == 1088: return 6 - if self.songnumber == 1117: return 6 - if self.songnumber == 1119: return 7 + if song_number == 11: return 8 + if song_number == 18: return 5 + if song_number == 21: return 6 + if song_number == 23: return 4 + if song_number == 24: return 7 + if song_number == 27: return 4 + if song_number == 31: return 6 + if song_number == 49: return 4 + if song_number == 50: return 8 + if song_number == 70: return 4 + if song_number == 75: return 8 + if song_number == 79: return 6 + if song_number == 97: return 7 + if song_number == 107: return 4 + if song_number == 109: return 4 + if song_number == 133: return 4 + if song_number == 155: return 10 + if song_number == 156: return 8 + if song_number == 171: return 4 + if song_number == 188: return 7 + if song_number == 192: return 4 + if song_number == 208: return 8 + if song_number == 215: return 8 + if song_number == 220: return 4 + if song_number == 247: return 6 + if song_number == 248: return 6 + if song_number == 251: return 8 + if song_number == 295: return 8 + if song_number == 307: return 5 + if song_number == 314: return 6 + if song_number == 325: return 8 + if song_number == 386: return 6 + if song_number == 415: return 4 + if song_number == 426: return 4 + if song_number == 434: return 5 + if song_number == 437: return 4 + if song_number == 438: return 6 + if song_number == 456: return 8 + if song_number == 461: return 4 + if song_number == 469: return 4 + if song_number == 470: return 5 + if song_number == 476: return 6 + if song_number == 477: return 7 + if song_number == 480: return 8 + if song_number == 482: return 4 + if song_number == 512: return 4 + if song_number == 513: return 8 + if song_number == 518: return 5 + if song_number == 520: return 4 + if song_number == 523: return 6 + if song_number == 526: return 8 + if song_number == 527: return 4 + if song_number == 529: return 4 + if song_number == 537: return 4 + if song_number == 555: return 6 + if song_number == 581: return 4 + if song_number == 589: return 6 + if song_number == 590: return 4 + if song_number == 593: return 8 + if song_number == 596: return 4 + if song_number == 610: return 6 + if song_number == 611: return 6 + if song_number == 619: return 8 + if song_number == 645: return 5 + if song_number == 653: return 6 + if song_number == 683: return 7 + if song_number == 686: return 4 + if song_number == 697: return 8 + if song_number == 698: return 4 + if song_number == 704: return 6 + if song_number == 716: return 4 + if song_number == 717: return 6 + if song_number == 730: return 4 + if song_number == 731: return 8 + if song_number == 732: return 8 + if song_number == 738: return 4 + if song_number == 756: return 9 + if song_number == 815: return 6 + if song_number == 830: return 8 + if song_number == 831: return 4 + if song_number == 876: return 6 + if song_number == 877: return 6 + if song_number == 892: return 4 + if song_number == 894: return 6 + if song_number == 902: return 8 + if song_number == 905: return 8 + if song_number == 921: return 6 + if song_number == 940: return 7 + if song_number == 955: return 9 + if song_number == 968: return 8 + if song_number == 972: return 7 + if song_number == 974: return 4 + if song_number == 988: return 6 + if song_number == 991: return 5 + if song_number == 1002: return 8 + if song_number == 1024: return 8 + if song_number == 1044: return 9 + if song_number == 1088: return 6 + if song_number == 1117: return 6 + if song_number == 1119: return 7 return None - -sof = sofimport() + +#config = None +man = None +#man = SongManager(config) +sof = SofImport(man) sof.start_ooo() -sof.open_sof_file(u'/home/jonathan/sof.rtf') -#sof.open_sof_file(u'c:\users\jonathan\Desktop\sof3words.rtf') -#sof.open_sof_file(u'c:\users\jonathan\Desktop\sof4words.rtf') +#sof.open_ooo_file(u'/home/jonathan/sof.rtf') +sof.open_ooo_file(u'/home/jonathan/Documents/VOLS1_2.RTF') +#sof.open_ooo_file(u'c:\users\jonathan\Desktop\sof3words.rtf') +#sof.open_ooo_file(u'c:\users\jonathan\Desktop\sof4words.rtf') sof.process_doc() sof.close_ooo() diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py new file mode 100644 index 000000000..ff31152bf --- /dev/null +++ b/openlp/plugins/songs/lib/songimport.py @@ -0,0 +1,259 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Christian Richter, Maikel Stuivenberg, Martin # +# Thompson, Jon Tibble, Carsten Tinggaard # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### + +import string +from openlp.core.lib import SongXMLBuilder +from openlp.plugins.songs.lib.models import Song + +class SongImport(object): + """ + Helper class for import a song from a third party source into OpenLP + + This class just takes the raw strings, and will work out for itself + whether the authors etc already exist and add them or refer to them + as necessary + """ + + def __init__(self, song_manager): + """ + Initialise and create defaults for properties + + song_manager is an instance of a SongManager, through which all + database access is performed + """ + self.song_manager = song_manager + self.title = u'' + self.song_number = u'' + self.copyright = u'' + self.comment = u'' + self.theme_name = u'' + self.ccli_number = u'' + self.authors = [] + self.topics = [] + self.song_book_name = u'' + self.song_book_pub = u'' + self.verse_order_list = [] + self.verses = [] + self.versecount = 0 + self.choruscount = 0 + + def get_title(self): + """ + Return the title + """ + return self.title + + def get_copyright(self): + """ + Return the copyright + """ + return self.copyright + + def get_song_number(self): + """ + Return the song number (also known as alternate title) + """ + return self.song_number + + def set_title(self, title): + """ + Set the title + """ + self.title = title + + def set_song_number(self, song_number): + """ + Set the song number/alternate title + """ + self.song_number = song_number + + def set_song_book(self, song_book, publisher): + """ + Set the song book name and publisher + """ + self.song_book_name = song_book + self.song_book_pub = publisher + + def add_copyright(self, copyright): + """ + Build the copyright field + """ + if self.copyright != u'': + self.copyright += ' ' + self.copyright += copyright + + def add_author(self, text): + """ + Add an author to the list + """ + self.authors.append(text) + + def add_verse(self, verse, versetag): + """ + Add a verse. This is the whole verse, lines split by \n + Verse tag can be V1/C1/B1 etc, or 'V' and 'C' (will count the verses/ + choruses itself) or None, where it will assume verse + It will also attempt to detect duplicates. In this case it will just + add to the verse order + """ + for (oldversetag, oldverse) in self.verses: + if oldverse.strip() == verse.strip(): + self.verse_order_list.append(oldversetag) + return + if versetag == u'C': + self.choruscount += 1 + versetag += unicode(self.choruscount) + if versetag == u'V' or not versetag: + self.versecount += 1 + versetag = u'V' + unicode(self.versecount) + self.verses.append([versetag, verse]) + self.verse_order_list.append(versetag) + if self.choruscount > 0 and not versetag.startswith(u'C'): + self.verse_order_list.append(u'C1') + + def repeat_verse(self): + """ + Repeat the previous verse in the verse order + """ + self.verse_order_list.append(self.verse_order_list[-1]) + + def check_complete(self): + """ + Check the mandatory fields are entered (i.e. title and a verse) + Author not checked here, if no author then "Author unknown" is + automatically added + """ + if self.title == u'' or len(self.verses) == 0: + return False + else: + return True + + def remove_punctuation(self, text): + """ + Remove punctuation from the string for searchable fields + """ + return text.translate(string.maketrans(u'',u''), string.punctuation) + + def finish(self): + """ + All fields have been set to this song. Write it away + """ + if len(self.authors) == 0: + self.authors.append(u'Author unknown') + #self.commit_song() + self.print_song() + + def commit_song(): + """ + Write the song and it's fields to disk + """ + song = Song() + song.title = self.title + song.search_title = self.remove_punctuation(self.title) + song.song_number = self.song_number + song.search_lyrics = u'' + sxml = SongXMLBuilder() + sxml.new_document() + sxml.add_lyrics_to_song() + for (versetag, versetext) in self.verses: + if versetag[0] == u'C': + versetype = u'Chorus' + elif versetag[0] == u'V': + versetype = u'Verse' + elif versetag[0] == u'B': + versetype = u'Bridge' + elif versetag[0] == u'I': + versetype = u'Intro' + elif versetag[0] == u'P': + versetype = u'Prechorus' + elif versetag[0] == u'E': + versetype = u'Ending' + else: + versetype = u'Other' + sxml.add_verse_to_lyrics(versetype, versetag[1:], versetext) + song.search_lyrics += u' ' + self.remove_punctuation(versetext) + song.lyrics = unicode(sxml.extract_xml(), u'utf-8') + song.verse_order = u' '.join(self.verse_order_list) + song.copyright = self.copyright + song.comment = self.comment + song.theme_name = self.theme_name + song.ccli_number = self.ccli_number + for authortext in self.authors: + author = None + # read the author here + if author is None: + author = Author() + author.display_name = authortext + author.last_name = authortext.split(u' ')[-1] + author.first_name = u' '.join(authortext.split(u' ')[:-1]) + # write the author here + song.authors.append(author) + if self.song_book_name: + song_book = None + # read the book here + if song_book is None: + song_book = Book() + song_book.name = self.song_book_name + song_book.publisher = self.song_book_pub + # write the song book here + song.song_book_id = song_book.id + for topictext in self.topics: + topic = None + # read the topic here + if topic is None: + topic = Topic() + topic.name = topictext + # write the topic here + song.topics.append(topictext) + # write the song here + + def print_song(self): + """ + For debugging + """ + print u'========================================' \ + + u'========================================' + print u'TITLE: ' + self.title + for (versetag, versetext) in self.verses: + print u'VERSE ' + versetag + u': ' + versetext + print u'ORDER: ' + u' '.join(self.verse_order_list) + for author in self.authors: + print u'AUTHOR: ' + author + if self.copyright: + print u'COPYRIGHT: ' + self.copyright + if self.song_book_name: + print u'BOOK: ' + self.song_book_name + if self.song_number: + print u'NUMBER: ' + self.song_number + for topictext in self.topics: + print u'TOPIC: ' + topictext + if self.comment: + print u'COMMENT: ' + self.comment + if self.theme_name: + print u'THEME: ' + self.theme_name + if self.ccli_number: + print u'CCLI: ' + self.ccli_number + + From 16750481cbbc7dc073725771522930264e43f35d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 2 Apr 2010 00:31:07 +0200 Subject: [PATCH 095/150] Added images I forgot to add when I cleaned up the images a little. --- resources/images/general_add.png | Bin 0 -> 761 bytes resources/images/general_delete.png | Bin 0 -> 666 bytes resources/images/general_edit.png | Bin 0 -> 726 bytes resources/images/general_export.png | Bin 0 -> 638 bytes resources/images/general_import.png | Bin 0 -> 628 bytes resources/images/general_live.png | Bin 0 -> 720 bytes resources/images/general_new.png | Bin 0 -> 579 bytes resources/images/general_open.png | Bin 0 -> 531 bytes resources/images/general_preview.png | Bin 0 -> 815 bytes resources/images/general_save.png | Bin 0 -> 563 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/images/general_add.png create mode 100644 resources/images/general_delete.png create mode 100644 resources/images/general_edit.png create mode 100644 resources/images/general_export.png create mode 100644 resources/images/general_import.png create mode 100644 resources/images/general_live.png create mode 100644 resources/images/general_new.png create mode 100644 resources/images/general_open.png create mode 100644 resources/images/general_preview.png create mode 100644 resources/images/general_save.png diff --git a/resources/images/general_add.png b/resources/images/general_add.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb9b1be8568765e6afa17a56c8f18641a09e533 GIT binary patch literal 761 zcmVbWclW8C_=Zb~GH-P80Ef&5mFX!vysop{R z^^U%jo0#tI?95(hZAGzA0EpnaE`DroVs&jTU#XP)J}oVM`3G>LtE;1_srmD*?ru9` zS=ig%!Pw|10AONr5)IibwANTzT{+m^{dMQ#!uv%4U;yap=}BeMnZ;}E?Y8GtuwU9o z+4DkYp68)l+K2CXxO(}Dold2vd!O{mFb6DUe@jbq%CGte0)Uv|`^Ny^_fW1>K*V4s zG&MG6^~S*vfL9g(L}Rf5As9Q`Kf%l(7VzsF6pKY@ZNLnG81XYP#NzRLAs{07;>P+q z-o1GXtu<=38no6S;N|3tuy0^6@^l2Tc+3s2pd48U{2)t25JEr*aiX-245d@~w#z|0WL zD3>eYiHSr4$z%e|d?Ld@7%m8WtegilFP(74yjQR5yu~*prBQPW_00000NkvXXu0mjfdy-ED literal 0 HcmV?d00001 diff --git a/resources/images/general_delete.png b/resources/images/general_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8e685e2edc2bd322bc20b3930b3b8a4a956692 GIT binary patch literal 666 zcmV;L0%iS)P)EpEu1Bn~z?SOH%W3`5?j4Qac4I15gKU`L5t>eN996dfGWy$GdT78e~1IEWxDihex7vOw4eG#$fZhali~XI|dwy2)5q7?kev-7Va?i{8#`0ED~iS znPE8+jBfgBF#tb?!0r|!;|Uxhh~`JWR^bpU8u7y9}-^q*}IfB~Nq%ySBz{^kAz z3q)BlA;{zV9S&*>ZND1?U{GxVemB-UgWbmGokGcyqSwMaQBF)n)gu5F4?Uh4@^Ycw-*5-~sCaop*i?$X&F0Mt&l~Qb zfY1*WGoB%i7sW@t*o-kS#!v>NY9h9$NM~6&ozmxk>*nk(P@GSvbVZtA)kJKs3`pjz z2QVQIGtrHEzzyrW3909E+g3AU>}ZYus}ujmzk3qv7);hk;Q#;t07*qoM6N<$f=kC8 Ao&W#< literal 0 HcmV?d00001 diff --git a/resources/images/general_edit.png b/resources/images/general_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..84e345d22430175e80c4ea1f1f17e6790649ee35 GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iOY{ z7a2C-AH01400LG?L_t(|+KrK2NK3O( zt1}KT&;|T(yOCwtC`po#_0k7ph9JvdOL^V;h3l;{2P{)smPaJXL|`(R!U9vMn@q;+ zw^z~I)5VRZcy?}fbNa00YRQt%#X%S&(MZ=zpTpfZ^$5qeH`waqS#O@X&Ms zw`tRn7yOwXN}hd>GX8`M)jn289%?QISxBuwU-kf#VSyA%jF1G>A++hoT)FFEUQwwo zQP5J$P~{x}4q!3nf{-NOa}u0>i0#f8pNHMtJT-@T(?Mned04GhfF)xm>J5w%nu5@m zs~QJ+*X_i1bdD|CavAj%l9rZ+#bN;alHwszNK zl@DM)L<{{x!FClwAP}T9eqQMG#<`CObPj93CE$%jMpcN~I?N3Mh^z zlL{iJNI)sVFr?Gz;JPl3x|6i}Q@rxoC@gVo%rRBG)k z+C_w3uU9LV%cEpOyiMRXVjMRD5kaY&(wgORNxfd@`ucingmgNMWm)~>b9!e=*yn4xxX0r+W++1YQ zbzSj1Pv-Nv1VJE+#X^?LrG#N9K@do{+m-p;mk(b)_kqWN5)njXB`}-aDd0Gc3@$I_ z{ilz8;2EGJawPEDoy|hu_az8|Edddc$#fciEq`mQI&YCh1O+@;Dc_Zta5eL9iCS*p Y57qJ{2^`p;;{X5v07*qoM6N<$f@DS=zyJUM literal 0 HcmV?d00001 diff --git a/resources/images/general_import.png b/resources/images/general_import.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee7892692c346a987d8d9df3a905465f4aa3601 GIT binary patch literal 628 zcmV-)0*n2LP)o5qwr=?b48Q_wRfMv&X%)2+RVZT=(E(#S_Vc?ewXta#xY8Y-^v=2GoU5xu z1OTPf17L&ytBF&1Y|Q8Lx4(jb@pw$#^VsZkSXo&?DTPuh8w7yX8gF%VPZ#N|z~`eQ zI-8rUt*tSgPRSHzUo|^+g8`J*+^bgi9AM|*;GmR@wH9kFl}d$&?KWwe zqP4y=i;{(+S8hHlrO;ZVwJrg(a)3|!`}-veylfInNFvYB#9Vf#26!Kn&u7cmMkd1bzK&V1#uh`1Oe@K`%dpg3q|v6 zZ*OyWc!=kD^!xo=;bj3Qi4nk-6(~imR%0+2*b|9dH(DI=mJ_qN?Ujw zgrQw7my#q&i9kf;$Mv;+_4>`1o5?!EslqwmzhVAs(Ro?m1o$R}3;PYi<1e$QX`AB! O00000x$iEP)XC`teT0$oW& zK~#9!#ZpUa6HyfYGI#Q7I!z)-lh~$dv?i^#L0yO-*e-m56(0!VKM<_H!~Oy3TCiQY zbfYd5L1GXJLSvJW(B{!L>6m2NyeG}|+`*J=T#6rj+?jjs`ObIFz4-62^gkkz2wPo! zeRXtnbir3vmbs>t`0j3jt7_`o%F4?z5F`*LCqqw_Vdb*bY8^1g z!MR}X*sR53fh@~V6y?(R`1rHFfYt5s+z>$lvMdr!cDr3+-`pF3Ddh3EuZvu1e*RkU zgx7m-Noua;f<1f~J)rNIIsy_4RdZrZy4q2QU$ufYC7!2m~-PG9ubB z3-o9<`z38w-rnA3^?Kb*rs<pF6|E##|o zsC9^iE3+6@hT(8Hgn&pkG)>#eX0vZB00doRDHx4L&(l+$a=Bcm_KJHxnaO8{TtiI~ z%`k~oNO*@5)nqdHovP;m)GhcsB%+PjBN{}Ge}Uhla5FU+K$&>}0000VxXK$hi6FoGM6#-0&DYi+BPO7z*s9d>{0vUq8c z&G}94mG91_zoj3m9VHsT2!GA?={D6)mHkfz06td>m_bcrSPcMDDeJM*+y>fjK<#^t z=uU*oi<@Nt)FU+;02V?7_3H~3cIR1VuFMcTS6l_&FA2GV;y{3lgxXDZuxrZSS;?#* z=QUvpn-9RT!7#-`zX5oG|B7vHE(aR6zHX6znI;PO!UTD_B~KNw&}=sMyujCO=T4U( z2yTeTTYCpkegjtzCeCEM0NlE6vV;ClKoWLfLST%sZMP!-L1P+nfHmzkGcoSayYs+V7sKKq@G6j0HV0G|-o z|Ns93nQ-9LaT|o%Z#%Z%R!rHXoV{N;=b&cc5yP})hUKTM>dphjom;PZ)a>)_xfL?` zL1@dtj0s2brk*HT`lMpTv&t1u>ZWb3o4%!W*5>YQZ>B8WK6U%U8GBwYIQnVfp|?wp zzFB(g&9Y-}Rvv%1_SD<;r-A7G#xo!GT>iNK+Lr@2K0bc(^x5+l&tJTF`ReuSH*em& zef##^yLa#3zyAORAHm?$r%#{3;LDdUU%}uT2z>wk{l||VKY#xG_3PK~-@pI-`SbVh z-+%x90X@i}$DaW7A!kXDUoeBbjh+3kKY#ym=`)D|1$#VQ977}|Sr0mTF$apU9C-Cl zzp1lBVaFF6xtq+KP1ekLB}U1i9-K1Y4qq^5cyC_3>rTxQ-%05{ar?Kv&3d$_=YFhp z_Sz3$K3Lu?n>%yrhWkEF&#$N@sHAQ6RC_J%|MqFV7uRE!|Ni!!d&litp4W03 xB2RwV@}1{G@bb&@4By{A;bNGi!c-u0+Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00VXa00VXbebs`@00007bV*G`2igM+ z4<92IW@u0V00OT`L_t(I%axK%Ya~?^hM!v>UDaLP+Fex{qhTPp5Me@g$tpN5j5{~M z&HM)q2yOz|I9mlF&L4>XATZg91PKI(EF=WPk%kzIOuAD^ch^VXs=8IzMd-u3!8z$?H@VVFRbK#{>TheSeB!lc3&jHw=009XK3 zRUwQqxC%ZQLOX@C3H)#gWS}MFIZ%VD5W1kM=5GNrQ;P5vmraehm@@b99YjZhz5-&f zCM3;->pTIWkZuF5-?|65uFLnsGrYth`DKEkU!sdC=_uynCMAkf(j>-E1q}m|e1g9u z?g2M9H~e_K+P4YtEW*J)RTMx>zD5W?*KmT@n zd;81VAiS>E09#vI@2{_~e{C4XW7l;%ZnujN0^7FHTDPMp`ba7D9C-1s9{|Gl{ReAnYmZk}R^DD+UF|xK tBaV-cM~8=pe;phg9E?VzA)sdqe*@Z{U&e+k@d5w<002ovPDHLkV1g~WY25$- literal 0 HcmV?d00001 diff --git a/resources/images/general_save.png b/resources/images/general_save.png new file mode 100644 index 0000000000000000000000000000000000000000..8072aea3268164eb2028a0cebfe44da82b4f4aca GIT binary patch literal 563 zcmV-30?hr1P)XvKK@k7Ytwo{YB(9F? z;2_0Ku;{F~yQsL?!9iy?1;;|c4%SjZ%{70TwwHKcBH=J-%EN&+{;d zhN(E7P<- zOhP?!y}wyJm`;b*`kqJvqBiX|nL~L2fd*Ux1d!eYF6Tbg5P<9ZC&&uF5~UDVJ~Kya z$B9GKW9yGCk1)gXRIvtRXipPk@<6(R{ z10;&Qkze=csdPHpgO1qUX}3Wtm&>>~JBMXkI4Be#D>XTZ+DDB(A$cT#*xhj)kQiey zO%sM;K-YE1@`TY9(UZv}-m29|6TcYK$LKUNox!$kO4I`&Fl}aA7Py>1;e44jn~%EA z#v7jv1002ovPDHLkV1jI` B^11*3 literal 0 HcmV?d00001 From 2cabfc67f3094fca3e158fa66fc8062074fa50b4 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Fri, 2 Apr 2010 15:10:10 +0100 Subject: [PATCH 096/150] Hook it all together --- openlp/plugins/songs/lib/__init__.py | 2 ++ openlp/plugins/songs/lib/manager.py | 18 ++++++++++++ openlp/plugins/songs/lib/sofimport.py | 28 ++++++++---------- openlp/plugins/songs/lib/songimport.py | 39 +++++++++++++------------- openlp/plugins/songs/songsplugin.py | 31 ++++++++++++++++---- 5 files changed, 77 insertions(+), 41 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 338a88b91..4ed56d06b 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -26,3 +26,5 @@ from manager import SongManager from songstab import SongsTab from mediaitem import SongMediaItem +from sofimport import SofImport +from songimport import SongImport diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index 87f0e6132..dcb49bfcd 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -133,6 +133,12 @@ class SongManager(): """ return self.session.query(Author).get(id) + def get_author_by_name(self, name): + """ + Get author by display name + """ + return self.session.query(Author).filter_by(display_name=name).first() + def save_author(self, author): """ Save the Author and refresh the cache @@ -172,6 +178,12 @@ class SongManager(): """ return self.session.query(Topic).get(id) + def get_topic_by_name(self, name): + """ + Get topic by name + """ + return self.session.query(Topic).filter_by(name=name).first() + def save_topic(self, topic): """ Save the Topic @@ -211,6 +223,12 @@ class SongManager(): """ return self.session.query(Book).get(id) + def get_book_by_name(self, name): + """ + Get book by name + """ + return self.session.query(Book).filter_by(name=name).first() + def save_book(self, book): """ Save the Book diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index c73449d44..63870f35c 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -73,6 +73,12 @@ class SofImport(object): self.song = None self.manager = songmanager + def import_sof(self, filename): + self.start_ooo() + self.open_ooo_file(filename) + self.process_doc() + self.close_ooo() + def start_ooo(self): """ Start OpenOffice.org process @@ -270,16 +276,16 @@ class SofImport(object): self.song.set_song_number(song_no) if int(song_no) <= 640: self.song.set_song_book(u'Songs of Fellowship 1', - 'Kingsway\'s Thankyou Music') + u'Kingsway Publications') elif int(song_no) <= 1150: self.song.set_song_book(u'Songs of Fellowship 2', - 'Kingsway\'s Thankyou Music') + u'Kingsway Publications') elif int(song_no) <= 1690: self.song.set_song_book(u'Songs of Fellowship 3', - 'Kingsway\'s Thankyou Music') + u'Kingsway Publications') else: self.song.set_song_book(u'Songs of Fellowship 4', - 'Kingsway\'s Thankyou Music') + u'Kingsway Publications') def add_title(self, text): """ @@ -506,16 +512,4 @@ class SofImport(object): if song_number == 1117: return 6 if song_number == 1119: return 7 return None - -#config = None -man = None -#man = SongManager(config) -sof = SofImport(man) -sof.start_ooo() -#sof.open_ooo_file(u'/home/jonathan/sof.rtf') -sof.open_ooo_file(u'/home/jonathan/Documents/VOLS1_2.RTF') -#sof.open_ooo_file(u'c:\users\jonathan\Desktop\sof3words.rtf') -#sof.open_ooo_file(u'c:\users\jonathan\Desktop\sof4words.rtf') -sof.process_doc() -sof.close_ooo() - + diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index ff31152bf..aa9a73fd8 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -25,7 +25,7 @@ import string from openlp.core.lib import SongXMLBuilder -from openlp.plugins.songs.lib.models import Song +from openlp.plugins.songs.lib.models import Song, Author, Topic, Book class SongImport(object): """ @@ -43,7 +43,7 @@ class SongImport(object): song_manager is an instance of a SongManager, through which all database access is performed """ - self.song_manager = song_manager + self.manager = song_manager self.title = u'' self.song_number = u'' self.copyright = u'' @@ -153,8 +153,10 @@ class SongImport(object): def remove_punctuation(self, text): """ Remove punctuation from the string for searchable fields - """ - return text.translate(string.maketrans(u'',u''), string.punctuation) + """ + for c in string.punctuation: + text = text.replace(c, u'') + return text def finish(self): """ @@ -162,10 +164,10 @@ class SongImport(object): """ if len(self.authors) == 0: self.authors.append(u'Author unknown') - #self.commit_song() - self.print_song() + self.commit_song() + #self.print_song() - def commit_song(): + def commit_song(self): """ Write the song and it's fields to disk """ @@ -201,33 +203,30 @@ class SongImport(object): song.theme_name = self.theme_name song.ccli_number = self.ccli_number for authortext in self.authors: - author = None - # read the author here + author = self.manager.get_author_by_name(authortext) if author is None: author = Author() author.display_name = authortext author.last_name = authortext.split(u' ')[-1] author.first_name = u' '.join(authortext.split(u' ')[:-1]) - # write the author here + self.manager.save_author(author) song.authors.append(author) if self.song_book_name: - song_book = None - # read the book here + song_book = self.manager.get_book_by_name(self.song_book_name) if song_book is None: song_book = Book() song_book.name = self.song_book_name song_book.publisher = self.song_book_pub - # write the song book here + self.manager.save_book(song_book) song.song_book_id = song_book.id for topictext in self.topics: - topic = None - # read the topic here + topic = self.manager.get_topic_by_name(topictext) if topic is None: topic = Topic() - topic.name = topictext - # write the topic here - song.topics.append(topictext) - # write the song here + topic.name = topictext + self.manager.save_topic(topic) + song.topics.append(topictext) + self.manager.save_song(song) def print_song(self): """ @@ -245,6 +244,8 @@ class SongImport(object): print u'COPYRIGHT: ' + self.copyright if self.song_book_name: print u'BOOK: ' + self.song_book_name + if self.song_book_pub: + print u'BOOK PUBLISHER: ' + self.song_book_pub if self.song_number: print u'NUMBER: ' + self.song_number for topictext in self.topics: diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 152392443..6d39daa48 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -28,7 +28,8 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, build_icon, PluginStatus -from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab +from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab, \ + SofImport from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \ OpenSongImportForm, OpenLPExportForm @@ -102,24 +103,35 @@ class SongsPlugin(Plugin): self.ImportOpenlp1Item.setObjectName(u'ImportOpenlp1Item') self.ImportOpenlp2Item = QtGui.QAction(import_menu) self.ImportOpenlp2Item.setObjectName(u'ImportOpenlp2Item') + self.ImportSofItem = QtGui.QAction(import_menu) + self.ImportSofItem.setObjectName(u'ImportSofItem') # Add to menus self.ImportSongMenu.addAction(self.ImportOpenlp1Item) self.ImportSongMenu.addAction(self.ImportOpenlp2Item) self.ImportSongMenu.addAction(self.ImportOpenSongItem) + self.ImportSongMenu.addAction(self.ImportSofItem) import_menu.addAction(self.ImportSongMenu.menuAction()) # Translations... self.ImportSongMenu.setTitle(import_menu.trUtf8('&Song')) self.ImportOpenSongItem.setText(import_menu.trUtf8('OpenSong')) self.ImportOpenlp1Item.setText(import_menu.trUtf8('openlp.org 1.0')) self.ImportOpenlp1Item.setToolTip( - import_menu.trUtf8('Export songs in openlp.org 1.0 format')) + import_menu.trUtf8('Import songs in openlp.org 1.0 format')) self.ImportOpenlp1Item.setStatusTip( - import_menu.trUtf8('Export songs in openlp.org 1.0 format')) + import_menu.trUtf8('Import songs in openlp.org 1.0 format')) self.ImportOpenlp2Item.setText(import_menu.trUtf8('OpenLP 2.0')) self.ImportOpenlp2Item.setToolTip( - import_menu.trUtf8('Export songs in OpenLP 2.0 format')) + import_menu.trUtf8('Import songs in OpenLP 2.0 format')) self.ImportOpenlp2Item.setStatusTip( - import_menu.trUtf8('Export songs in OpenLP 2.0 format')) + import_menu.trUtf8('Import songs in OpenLP 2.0 format')) + self.ImportSofItem.setText( + import_menu.trUtf8('Songs of Fellowship')) + self.ImportSofItem.setToolTip( + import_menu.trUtf8('Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) + self.ImportSofItem.setStatusTip( + import_menu.trUtf8('Import songs from the VOLS1_2.RTF, sof3words' \ + + '.rtf and sof4words.rtf supplied with the music books')) # Signals and slots QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick) @@ -127,6 +139,8 @@ class SongsPlugin(Plugin): QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick) QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onImportOpenSongItemClick) + QtCore.QObject.connect(self.ImportSofItem, + QtCore.SIGNAL(u'triggered()'), self.onImportSofItemClick) self.ImportSongMenu.menuAction().setVisible(False) def add_export_menu_item(self, export_menu): @@ -169,6 +183,13 @@ class SongsPlugin(Plugin): def onImportOpenSongItemClick(self): self.opensong_import_form.show() + def onImportSofItemClick(self): + filename = QtGui.QFileDialog.getOpenFileName( + None, self.trUtf8('Open Songs of Fellowship file'), + u'', u'Songs of Fellowship file (*.rtf *.RTF)') + sofimport = SofImport(self.songmanager) + sofimport.import_sof(unicode(filename)) + def onExportOpenlp1ItemClicked(self): self.openlp_export_form.show() From 3c8c20f2d4added97c4ae687833ec10df8d437b8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 2 Apr 2010 19:12:54 +0100 Subject: [PATCH 097/150] cleanup the screen size code --- openlp/core/lib/eventreceiver.py | 6 +++++ openlp/core/lib/rendermanager.py | 9 ++----- openlp/core/lib/settingstab.py | 7 ++++++ openlp/core/ui/generaltab.py | 40 ++++++++++++++++++++++++++++---- openlp/core/ui/maindisplay.py | 13 ++++++----- openlp/core/ui/mainwindow.py | 31 +++++++------------------ openlp/core/ui/screen.py | 23 ++++++++---------- openlp/core/ui/settingsform.py | 4 ++-- 8 files changed, 78 insertions(+), 55 deletions(-) diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 45eeb5145..5b79fc40a 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -109,6 +109,12 @@ class EventReceiver(QtCore.QObject): ``presentation types`` Informs all components of the presentation types supported. + ``blank_check`` + Check to see if th eblank display message is required + + ``version_check`` + Version has changed so pop up window. + """ def __init__(self): """ diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 9a621979b..121b94391 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -29,7 +29,6 @@ from PyQt4 import QtCore from renderer import Renderer from openlp.core.lib import ThemeLevel - log = logging.getLogger(__name__) class RenderManager(object): @@ -49,7 +48,7 @@ class RenderManager(object): """ log.info(u'RenderManager Loaded') - def __init__(self, theme_manager, screens, screen_number=0): + def __init__(self, theme_manager, screens): """ Initialise the render manager. """ @@ -57,7 +56,6 @@ class RenderManager(object): self.screens = screens self.theme_manager = theme_manager self.renderer = Renderer() - self.screens.set_current_display(screen_number) self.calculate_default(self.screens.current[u'size']) self.theme = u'' self.service_theme = u'' @@ -65,12 +63,9 @@ class RenderManager(object): self.override_background = None self.themedata = None - def update_display(self, screen_number): + def update_display(self): """ Updates the render manager's information about the current screen. - - ``screen_number`` - The updated index of the output/display screen. """ log.debug(u'Update Display') self.calculate_default(self.screens.current[u'size']) diff --git a/openlp/core/lib/settingstab.py b/openlp/core/lib/settingstab.py index d22d72750..930ce6bc8 100644 --- a/openlp/core/lib/settingstab.py +++ b/openlp/core/lib/settingstab.py @@ -54,6 +54,7 @@ class SettingsTab(QtGui.QWidget): self.config = PluginConfig(title) else: self.config = PluginConfig(section) + self.preLoad() self.load() def setupUi(self): @@ -62,6 +63,12 @@ class SettingsTab(QtGui.QWidget): """ pass + def preLoad(self): + """ + Setup the tab's interface. + """ + pass + def retranslateUi(self): """ Setup the interface translation strings. diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index c6a544430..858ddc69e 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -25,16 +25,29 @@ from PyQt4 import QtCore, QtGui -from openlp.core.lib import SettingsTab, str_to_bool +from openlp.core.lib import SettingsTab, str_to_bool, Receiver class GeneralTab(SettingsTab): """ GeneralTab is the general settings tab in the settings dialog. """ - def __init__(self, screen_list): - self.screen_list = screen_list + def __init__(self, screens): + self.screens = screens SettingsTab.__init__(self, u'General') + def preLoad(self): + """ + Set up the display screen and set correct screen + values. + If not set before default to last screen. + """ + self.MonitorNumber = int(self.config.get_config(u'monitor', + self.screens.monitor_number)) + self.screens.set_current_display(self.MonitorNumber) + self.screens.monitor_number = self.MonitorNumber + self.MonitorDisplay = str_to_bool(self.config.get_config(u'monitor display', u'True')) + self.screens.display = self.MonitorDisplay + def setupUi(self): self.setObjectName(u'GeneralTab') self.tabTitleVisible = self.trUtf8('General') @@ -60,6 +73,10 @@ class GeneralTab(SettingsTab): self.MonitorComboBox = QtGui.QComboBox(self.MonitorGroupBox) self.MonitorComboBox.setObjectName(u'MonitorComboBox') self.MonitorLayout.addWidget(self.MonitorComboBox) + self.MonitorLayout.addWidget(self.MonitorComboBox) + self.MonitorDisplayCheck = QtGui.QCheckBox(self.MonitorGroupBox) + self.MonitorDisplayCheck.setObjectName(u'MonitorComboBox') + self.MonitorLayout.addWidget(self.MonitorDisplayCheck) self.GeneralLeftLayout.addWidget(self.MonitorGroupBox) self.StartupGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget) self.StartupGroupBox.setObjectName(u'StartupGroupBox') @@ -133,6 +150,8 @@ class GeneralTab(SettingsTab): self.GeneralLayout.addWidget(self.GeneralRightWidget) QtCore.QObject.connect(self.MonitorComboBox, QtCore.SIGNAL(u'activated(int)'), self.onMonitorComboBoxChanged) + QtCore.QObject.connect(self.MonitorDisplayCheck, + QtCore.SIGNAL(u'stateChanged(int)'), self.onMonitorDisplayCheckChanged) QtCore.QObject.connect(self.WarningCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onWarningCheckBoxChanged) QtCore.QObject.connect(self.AutoOpenCheckBox, @@ -153,6 +172,7 @@ class GeneralTab(SettingsTab): def retranslateUi(self): self.MonitorGroupBox.setTitle(self.trUtf8('Monitors')) self.MonitorLabel.setText(self.trUtf8('Select monitor for output display:')) + self.MonitorDisplayCheck.setText(self.trUtf8('Do not display if single screen')) self.StartupGroupBox.setTitle(self.trUtf8('Application Startup')) self.WarningCheckBox.setText(self.trUtf8('Show blank screen warning')) self.AutoOpenCheckBox.setText(self.trUtf8('Automatically open the last service')) @@ -168,6 +188,9 @@ class GeneralTab(SettingsTab): def onMonitorComboBoxChanged(self): self.MonitorNumber = self.MonitorComboBox.currentIndex() + def onMonitorDisplayCheckChanged(self, value): + self.MonitorDisplay = (value == QtCore.Qt.Checked) + def onAutoOpenCheckBoxChanged(self, value): self.AutoOpen = (value == QtCore.Qt.Checked) @@ -193,13 +216,12 @@ class GeneralTab(SettingsTab): self.Password = self.PasswordEdit.displayText() def load(self): - for screen in self.screen_list.screen_list: + for screen in self.screens.screen_list: screen_name = u'%s %d' % (self.trUtf8('Screen'), screen[u'number'] + 1) if screen[u'primary']: screen_name = u'%s (%s)' % (screen_name, self.trUtf8('primary')) self.MonitorComboBox.addItem(screen_name) # Get the configs - self.MonitorNumber = int(self.config.get_config(u'monitor', u'0')) self.Warning = str_to_bool(self.config.get_config(u'blank warning', u'False')) self.AutoOpen = str_to_bool(self.config.get_config(u'auto open', u'False')) self.ShowSplash = str_to_bool(self.config.get_config(u'show splash', u'True')) @@ -211,6 +233,7 @@ class GeneralTab(SettingsTab): self.SaveCheckServiceCheckBox.setChecked(self.PromptSaveService) # Set a few things up self.MonitorComboBox.setCurrentIndex(self.MonitorNumber) + self.MonitorDisplayCheck.setChecked(self.MonitorDisplay) self.WarningCheckBox.setChecked(self.Warning) self.AutoOpenCheckBox.setChecked(self.AutoOpen) self.ShowSplashCheckBox.setChecked(self.ShowSplash) @@ -221,6 +244,7 @@ class GeneralTab(SettingsTab): def save(self): self.config.set_config(u'monitor', self.MonitorNumber) + self.config.set_config(u'monitor display', self.MonitorDisplay) self.config.set_config(u'blank warning', self.Warning) self.config.set_config(u'auto open', self.AutoOpen) self.config.set_config(u'show splash', self.ShowSplash) @@ -229,3 +253,9 @@ class GeneralTab(SettingsTab): self.config.set_config(u'ccli number', self.CCLINumber) self.config.set_config(u'songselect username', self.Username) self.config.set_config(u'songselect password', self.Password) + self.screens.display = self.MonitorDisplay + #Monitor Number has changed. + if self.screens.monitor_number != self.MonitorNumber: + self.screens.monitor_number = self.MonitorNumber + self.screens.set_current_display(self.MonitorNumber) + Receiver.send_message(u'screen_changed') diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index eaf1ed78f..483e1a029 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -130,13 +130,15 @@ class MainDisplay(DisplayWidget): QtCore.SIGNAL(u'media_pause'), self.onMediaPause) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'media_stop'), self.onMediaStop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'update_config'), self.setup) - def setup(self, screenNumber): + def setup(self): """ Sets up the screen on a particular screen. - @param (integer) screen This is the screen number. """ - log.debug(u'Setup %s for %s ' %(self.screens, screenNumber)) + log.debug(u'Setup %s for %s ' %(self.screens, + self.screens.monitor_number)) self.setVisible(False) self.screen = self.screens.current #Sort out screen locations and sizes @@ -183,7 +185,6 @@ class MainDisplay(DisplayWidget): else: self.setVisible(False) self.primary = True - Receiver.send_message(u'screen_changed') def resetDisplay(self): Receiver.send_message(u'stop_display_loop') @@ -247,7 +248,7 @@ class MainDisplay(DisplayWidget): else: self.display_text.setPixmap(QtGui.QPixmap.fromImage(frame)) self.display_frame = frame - if not self.isVisible(): + if not self.isVisible() and not self.screens.display: self.setVisible(True) self.showFullScreen() else: @@ -320,4 +321,4 @@ class MainDisplay(DisplayWidget): self.video.setVisible(False) self.display_text.show() self.display_image.show() - self.blankDisplay(False, False) \ No newline at end of file + self.blankDisplay(False, False) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 13d880407..23dbccabe 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -496,6 +496,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'version_check'), self.versionCheck) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'blank_check'), self.blankCheck) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'screen_changed'), self.screenChanged) QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onNewService) @@ -512,7 +514,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): #RenderManager needs to call ThemeManager and #ThemeManager needs to call RenderManager self.RenderManager = RenderManager(self.ThemeManagerContents, - self.screens, self.getMonitorNumber()) + self.screens) #Define the media Dock Manager self.mediaDockManager = MediaDockManager(self.MediaToolBox) log.info(u'Load Plugins') @@ -563,24 +565,13 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok) - def getMonitorNumber(self): - """ - Set up the default behaviour of the monitor configuration in - here. Currently it is set to default to monitor 0 if the saved - monitor number does not exist. - """ - screen_number = int(self.generalConfig.get_config(u'monitor', 0)) - if not self.screens.screen_exists(screen_number): - screen_number = 0 - return screen_number - def show(self): """ Show the main form, as well as the display form """ self.showMaximized() - screen_number = self.getMonitorNumber() - self.mainDisplay.setup(screen_number) + #screen_number = self.getMonitorNumber() + self.mainDisplay.setup() if self.mainDisplay.isVisible(): self.mainDisplay.setFocus() self.activateWindow() @@ -598,7 +589,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMessageBox.Ok) def versionThread(self): - #app_version = self.applicationVersion[u'full'] vT = VersionThread(self, self.applicationVersion, self.generalConfig) vT.start() @@ -621,13 +611,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): Show the Settings dialog """ self.settingsForm.exec_() - updated_display = self.getMonitorNumber() - if updated_display != self.screens.current_display: - self.screens.set_current_display(updated_display) - self.RenderManager.update_display(updated_display) - self.mainDisplay.setup(updated_display) - #Trigger after changes have been made - Receiver.send_message(u'config_updated') + + def screenChanged(self): + self.RenderManager.update_display() + self.mainDisplay.setup() self.activateWindow() def closeEvent(self, event): diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index baf7e0d5e..32cc5ba50 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -37,14 +37,17 @@ class ScreenList(object): self.preview = None self.current = None self.screen_list = [] - self.count = 0 + self.display_count = 0 + #actual display number self.current_display = 0 + #save config display number + self.monitor_number = 0 def add_screen(self, screen): if screen[u'primary']: self.current = screen self.screen_list.append(screen) - self.count += 1 + self.display_count += 1 def screen_exists(self, number): for screen in self.screen_list: @@ -53,21 +56,15 @@ class ScreenList(object): return False def set_current_display(self, number): - if number + 1 > self.count: + """ + Set up the current screen dimensions + """ + if number + 1 > self.display_count: self.current = self.screen_list[0] self.current_display = 0 else: self.current = self.screen_list[number] self.preview = self.current self.current_display = number - if self.count == 1: + if self.display_count == 1: self.preview = self.screen_list[0] - -# if self.screen[u'number'] != screenNumber: -# # We will most probably never actually hit this bit, but just in -# # case the index in the list doesn't match the screen number, we -# # search for it. -# for scrn in self.screens: -# if scrn[u'number'] == screenNumber: -# self.screen = scrn -# break diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index 4d59b850f..c86525a54 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -34,11 +34,11 @@ log = logging.getLogger(__name__) class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): - def __init__(self, screen_list, mainWindow, parent=None): + def __init__(self, screens, mainWindow, parent=None): QtGui.QDialog.__init__(self, parent) self.setupUi(self) # General tab - self.GeneralTab = GeneralTab(screen_list) + self.GeneralTab = GeneralTab(screens) self.addTab(u'General', self.GeneralTab) # Themes tab self.ThemesTab = ThemesTab(mainWindow) From 8328a2dabe0295b4552bb34c2f9365b13792a1fb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 2 Apr 2010 20:02:38 +0100 Subject: [PATCH 098/150] Replace flags with capibilities --- openlp/core/lib/serviceitem.py | 31 +++++++++++++++++--------- openlp/core/ui/servicemanager.py | 8 +++---- openlp/core/ui/slidecontroller.py | 4 ++-- openlp/plugins/bibles/lib/mediaitem.py | 4 ++-- openlp/plugins/custom/lib/mediaitem.py | 6 ++--- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 1 + openlp/plugins/songs/lib/mediaitem.py | 6 ++--- 8 files changed, 37 insertions(+), 27 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index d86597b40..2790468b7 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -42,6 +42,13 @@ class ServiceItemType(object): Image = 2 Command = 3 +capabilities = [ + u'allows_preview', + u'allows_edit', + u'allows_maintain', + u'requires_media' +] + class ServiceItem(object): """ The service item is a base class for the plugins to use to interact with @@ -67,14 +74,20 @@ class ServiceItem(object): self.raw_footer = None self.theme = None self.service_item_type = None - self.edit_enabled = False - self.maintain_allowed = False self._raw_frames = [] self._display_frames = [] self._uuid = unicode(uuid.uuid1()) - self.auto_preview_allowed = False self.notes = u'' self.from_plugin = False + self.capability_state = {} + for capability in capabilities: + self.updateCapability(capability) + + def updateCapability(self, capability, State=False): + self.capability_state[capability] = State + + def getCapability(self, capability): + return self.capability_state[capability] def addIcon(self, icon): """ @@ -207,10 +220,8 @@ class ServiceItem(object): u'type':self.service_item_type, u'audit':self.audit, u'notes':self.notes, - u'preview':self.auto_preview_allowed, - u'edit':self.edit_enabled, - u'maintain':self.maintain_allowed, - u'from_plugin':self.from_plugin + u'from_plugin':self.from_plugin, + u'capabilities':self.capability_state } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -244,11 +255,9 @@ class ServiceItem(object): self.addIcon(header[u'icon']) self.raw_footer = header[u'footer'] self.audit = header[u'audit'] - self.auto_preview_allowed = header[u'preview'] self.notes = header[u'notes'] - self.edit_enabled = header[u'edit'] - self.maintain_allowed = header[u'maintain'] self.from_plugin = header[u'from_plugin'] + self.capability_state = header[u'capabilities'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) @@ -288,7 +297,7 @@ class ServiceItem(object): return self.name.lower() == u'songs' def is_media(self): - return self.name.lower() == u'media' + return self.getCapability(u'requires_media') def is_command(self): return self.service_item_type == ServiceItemType.Command diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 4565a9527..e68adb580 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -233,9 +233,9 @@ class ServiceManager(QtGui.QWidget): self.editAction.setVisible(False) self.maintainAction.setVisible(False) self.notesAction.setVisible(False) - if serviceItem[u'service_item'].edit_enabled: + if serviceItem[u'service_item'].getCapability(u'allows_edit'): self.editAction.setVisible(True) - if serviceItem[u'service_item'].maintain_allowed: + if serviceItem[u'service_item'].getCapability(u'allows_maintain'): self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) @@ -713,7 +713,7 @@ class ServiceManager(QtGui.QWidget): get_config(u'auto preview', u'False')): item += 1 if self.serviceItems and item < len(self.serviceItems) and \ - self.serviceItems[item][u'service_item'].auto_preview_allowed: + self.serviceItems[item][u'service_item'].getCapability(u'allows_preview'): self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], 0) @@ -722,7 +722,7 @@ class ServiceManager(QtGui.QWidget): Posts a remote edit message to a plugin to allow item to be edited. """ item, count = self.findServiceItem() - if self.serviceItems[item][u'service_item'].edit_enabled: + if self.serviceItems[item][u'service_item'].getCapability(u'allows_edit'): self.remoteEditTriggered = True Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'service_item'].name, u'L:%s' % diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c802219b5..85a5dd6bd 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -395,7 +395,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.song_edit_list) - if item.edit_enabled and item.from_plugin: + if item.getCapability(u'allows_edit') and item.from_plugin: self.Toolbar.makeWidgetsVisible(self.song_edit_list) elif item.is_media(): self.Toolbar.setVisible(False) @@ -759,7 +759,7 @@ class SlideController(QtGui.QWidget): else: self.mediaObject.stop() self.mediaObject.clearQueue() - file = os.path.join(item.service_item_path, item.get_frame_title()) + file = os.path.join(item.get_frame_path(), item.get_frame_title()) self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) self.onMediaPlay() diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1abce732f..b5ec922ad 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -449,7 +449,7 @@ class BibleMediaItem(MediaManagerItem): raw_slides = [] raw_footer = [] bible_text = u'' - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) #If we want to use a 2nd translation / version bible2 = u'' if self.SearchTabWidget.currentIndex() == 0: @@ -608,4 +608,4 @@ class BibleMediaItem(MediaManagerItem): def searchByReference(self, bible, search): log.debug(u'searchByReference %s, %s', bible, search) - self.search_results = self.parent.manager.get_verses(bible, search) \ No newline at end of file + self.search_results = self.parent.manager.get_verses(bible, search) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 744978967..c57a091f2 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -144,11 +144,11 @@ class CustomMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteCustom - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_edit', True) customSlide = self.parent.custommanager.get_custom(item_id) title = customSlide.title credit = customSlide.credits - service_item.edit_enabled = True service_item.editId = item_id theme = customSlide.theme_name if theme: @@ -166,4 +166,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True \ No newline at end of file + return True diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 297a01a73..78beff1be 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -140,8 +140,8 @@ class ImageMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() if items: service_item.title = self.trUtf8('Image(s)') - service_item.auto_preview_allowed = True - service_item.maintain_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_maintain', True) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index f16ffb5e7..f26b02418 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -82,6 +82,7 @@ class MediaMediaItem(MediaManagerItem): if len(items) > 1: return False service_item.title = unicode(self.trUtf8('Media')) + service_item.updateCapability(u'requires_media', True) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9ac8ec977..c71a2c120 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -290,10 +290,10 @@ class SongMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteSong - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_edit', True) song = self.parent.songmanager.get_song(item_id) service_item.theme = song.theme_name - service_item.edit_enabled = True service_item.editId = item_id if song.lyrics.startswith(u' Date: Fri, 2 Apr 2010 20:05:37 +0100 Subject: [PATCH 099/150] Handle backward compatibility --- openlp/core/lib/serviceitem.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 2790468b7..fd568230b 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -87,7 +87,9 @@ class ServiceItem(object): self.capability_state[capability] = State def getCapability(self, capability): - return self.capability_state[capability] + if capability in self.capability_state: + return self.capability_state[capability] + return False def addIcon(self, icon): """ From dad04bfd901582c6334e22c8130c04e444726c58 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Sat, 3 Apr 2010 00:24:51 +0100 Subject: [PATCH 100/150] SOF fixes+delete all selected songs --- openlp/plugins/songs/lib/mediaitem.py | 23 +++++++++++------ openlp/plugins/songs/lib/sofimport.py | 23 +++++++++++------ openlp/plugins/songs/lib/songimport.py | 35 ++++++++++++++++---------- openlp/plugins/songs/songsplugin.py | 12 +++++++-- 4 files changed, 64 insertions(+), 29 deletions(-) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9ac8ec977..145646a02 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -271,12 +271,21 @@ class SongMediaItem(MediaManagerItem): self.edit_song_form.exec_() def onDeleteClick(self): - item = self.ListView.currentItem() - if item: - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] - self.parent.songmanager.delete_song(item_id) - row = self.ListView.row(item) - self.ListView.takeItem(row) + items = self.ListView.selectedIndexes() + if items: + if len(items) > 1: + ans = QtGui.QMessageBox.question(None, + self.trUtf8('Delete Confirmation'), + self.trUtf8('Delete %d songs?' % len(items)), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok| + QtGui.QMessageBox.Cancel), + QtGui.QMessageBox.Ok) + if ans == QtGui.QMessageBox.Cancel: + return + for item in items[:]: + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + self.parent.songmanager.delete_song(item_id) + self.ListView.takeItem(item.row()) def generateSlideData(self, service_item): raw_footer = [] @@ -345,4 +354,4 @@ class SongMediaItem(MediaManagerItem): service_item.audit = [ song.title, author_audit, song.copyright, song.ccli_number ] - return True \ No newline at end of file + return True diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index 63870f35c..df0ffd5bc 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +property# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 ############################################################################### @@ -32,7 +32,7 @@ import re import os import time -from PyQt4 import QtCore +from PyQt4 import QtCore, QtGui from songimport import SongImport if os.name == u'nt': @@ -44,7 +44,6 @@ if os.name == u'nt': PAGE_BOTH = 6 else: import uno - from com.sun.star.beans import PropertyValue from com.sun.star.awt.FontWeight import BOLD from com.sun.star.awt.FontSlant import ITALIC from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH @@ -273,7 +272,8 @@ class SofImport(object): Add a song number, store as alternate title. Also use the song number to work out which songbook we're in """ - self.song.set_song_number(song_no) + self.song.set_song_number(song_no) + self.song.set_alternate_title(song_no + u'.') if int(song_no) <= 640: self.song.set_song_book(u'Songs of Fellowship 1', u'Kingsway Publications') @@ -313,7 +313,9 @@ class SofImport(object): author2 = authors[i].strip() if author2.find(u' ') == -1 and i < len(authors) - 1: author2 = author2 + u' ' \ - + authors[i + 1].strip().split(u' ')[-1] + + authors[i + 1].strip().split(u' ')[-1] + if author2.endswith(u'.'): + author2 = author2[:-1] self.song.add_author(author2) def add_verse_line(self, text): @@ -337,8 +339,15 @@ class SofImport(object): """ if self.currentverse.strip() == u'': return - if self.is_chorus: - versetag = 'C' + if self.is_chorus: + if not self.song.contains_verse('C'): + versetag = 'C' + elif not self.song.contains_verse('B'): + versetag = 'B' + elif not self.song.contains_verse('E'): + versetag = 'E' + else: + versetag = 'O' splitat = None else: versetag = 'V' diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index aa9a73fd8..15e8e00eb 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -46,6 +46,7 @@ class SongImport(object): self.manager = song_manager self.title = u'' self.song_number = u'' + self.alternate_title = u'' self.copyright = u'' self.comment = u'' self.theme_name = u'' @@ -73,7 +74,7 @@ class SongImport(object): def get_song_number(self): """ - Return the song number (also known as alternate title) + Return the song number """ return self.song_number @@ -82,10 +83,16 @@ class SongImport(object): Set the title """ self.title = title - + + def set_alternate_title(self, title): + """ + Set the alternate title + """ + self.alternate_title = title + def set_song_number(self, song_number): """ - Set the song number/alternate title + Set the song number """ self.song_number = song_number @@ -113,8 +120,8 @@ class SongImport(object): def add_verse(self, verse, versetag): """ Add a verse. This is the whole verse, lines split by \n - Verse tag can be V1/C1/B1 etc, or 'V' and 'C' (will count the verses/ - choruses itself) or None, where it will assume verse + Verse tag can be V1/C/B etc, or 'V' (will count the verses/ + itself) or None, where it will assume verse It will also attempt to detect duplicates. In this case it will just add to the verse order """ @@ -122,23 +129,23 @@ class SongImport(object): if oldverse.strip() == verse.strip(): self.verse_order_list.append(oldversetag) return - if versetag == u'C': - self.choruscount += 1 - versetag += unicode(self.choruscount) if versetag == u'V' or not versetag: self.versecount += 1 versetag = u'V' + unicode(self.versecount) - self.verses.append([versetag, verse]) + self.verses.append([versetag, verse.rstrip()]) self.verse_order_list.append(versetag) - if self.choruscount > 0 and not versetag.startswith(u'C'): - self.verse_order_list.append(u'C1') + if versetag.startswith(u'V') and self.contains_verse(u'C'): + self.verse_order_list.append(u'C') def repeat_verse(self): """ Repeat the previous verse in the verse order """ self.verse_order_list.append(self.verse_order_list[-1]) - + + def contains_verse(self, versetag): + return versetag in self.verse_order_list + def check_complete(self): """ Check the mandatory fields are entered (i.e. title and a verse) @@ -173,7 +180,8 @@ class SongImport(object): """ song = Song() song.title = self.title - song.search_title = self.remove_punctuation(self.title) + song.search_title = self.remove_punctuation(self.title) \ + + '@' + self.alternate_title song.song_number = self.song_number song.search_lyrics = u'' sxml = SongXMLBuilder() @@ -235,6 +243,7 @@ class SongImport(object): print u'========================================' \ + u'========================================' print u'TITLE: ' + self.title + print u'ALT TITLE: ' + self.alternate_title for (versetag, versetext) in self.verses: print u'VERSE ' + versetag + u': ' + versetext print u'ORDER: ' + u' '.join(self.verse_order_list) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 6d39daa48..3e245690a 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -187,8 +187,16 @@ class SongsPlugin(Plugin): filename = QtGui.QFileDialog.getOpenFileName( None, self.trUtf8('Open Songs of Fellowship file'), u'', u'Songs of Fellowship file (*.rtf *.RTF)') - sofimport = SofImport(self.songmanager) - sofimport.import_sof(unicode(filename)) + try: + sofimport = SofImport(self.songmanager) + sofimport.import_sof(unicode(filename)) + except: + log.exception('Could not import SoF file') + QtGui.QMessageBox.critical(None, + self.ImportSongMenu.trUtf8('Import Error'), + self.ImportSongMenu.trUtf8('Error importing Songs of Fellowship file'), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), + QtGui.QMessageBox.Ok) def onExportOpenlp1ItemClicked(self): self.openlp_export_form.show() From 828695ea0eec91957f956774028521dc6970bbe7 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Apr 2010 08:10:31 +0100 Subject: [PATCH 101/150] Fix review comments --- openlp/core/lib/__init__.py | 2 +- openlp/core/lib/rendermanager.py | 1 + openlp/core/lib/serviceitem.py | 35 ++++++++----------- openlp/core/ui/generaltab.py | 26 +++++++------- openlp/core/ui/maindisplay.py | 2 +- openlp/core/ui/servicemanager.py | 10 +++--- openlp/core/ui/slidecontroller.py | 9 ++--- openlp/plugins/bibles/lib/mediaitem.py | 4 +-- openlp/plugins/custom/lib/mediaitem.py | 6 ++-- openlp/plugins/images/lib/mediaitem.py | 6 ++-- openlp/plugins/media/lib/mediaitem.py | 5 +-- openlp/plugins/presentations/lib/mediaitem.py | 1 - openlp/plugins/songs/lib/mediaitem.py | 9 ++--- 13 files changed, 56 insertions(+), 60 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 84525352e..38bcd127c 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -172,7 +172,7 @@ from mediamanageritem import MediaManagerItem from xmlrootclass import XmlRootClass from serviceitem import ServiceItem from serviceitem import ServiceItemType -from serviceitem import ServiceItem +from serviceitem import ItemCapabilities from toolbar import OpenLPToolbar from dockwidget import OpenLPDockWidget from songxmlhandler import SongXMLBuilder, SongXMLParser diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py index 121b94391..e811529db 100644 --- a/openlp/core/lib/rendermanager.py +++ b/openlp/core/lib/rendermanager.py @@ -29,6 +29,7 @@ from PyQt4 import QtCore from renderer import Renderer from openlp.core.lib import ThemeLevel + log = logging.getLogger(__name__) class RenderManager(object): diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index fd568230b..7bb58af2b 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -42,12 +42,12 @@ class ServiceItemType(object): Image = 2 Command = 3 -capabilities = [ - u'allows_preview', - u'allows_edit', - u'allows_maintain', - u'requires_media' -] +class ItemCapabilities(object): + AllowsPreview = 1 + AllowsEdit = 2 + AllowsMaintain = 3 + RequiresMedia = 4 + class ServiceItem(object): """ @@ -79,17 +79,13 @@ class ServiceItem(object): self._uuid = unicode(uuid.uuid1()) self.notes = u'' self.from_plugin = False - self.capability_state = {} - for capability in capabilities: - self.updateCapability(capability) + self.capabilities = [] - def updateCapability(self, capability, State=False): - self.capability_state[capability] = State + def add_capability(self, capability): + self.capabilities.append(capability) - def getCapability(self, capability): - if capability in self.capability_state: - return self.capability_state[capability] - return False + def is_capable(self, capability): + return capability in self.capabilities def addIcon(self, icon): """ @@ -223,7 +219,7 @@ class ServiceItem(object): u'audit':self.audit, u'notes':self.notes, u'from_plugin':self.from_plugin, - u'capabilities':self.capability_state + u'capabilities':self.capabilities } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -259,7 +255,7 @@ class ServiceItem(object): self.audit = header[u'audit'] self.notes = header[u'notes'] self.from_plugin = header[u'from_plugin'] - self.capability_state = header[u'capabilities'] + self.capabilities = header[u'capabilities'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) @@ -295,11 +291,8 @@ class ServiceItem(object): """ return self._uuid != other._uuid - def is_song(self): - return self.name.lower() == u'songs' - def is_media(self): - return self.getCapability(u'requires_media') + return ItemCapabilities.RequiresMedia in self.capabilities def is_command(self): return self.service_item_type == ServiceItemType.Command diff --git a/openlp/core/ui/generaltab.py b/openlp/core/ui/generaltab.py index 858ddc69e..ec20650cf 100644 --- a/openlp/core/ui/generaltab.py +++ b/openlp/core/ui/generaltab.py @@ -45,8 +45,8 @@ class GeneralTab(SettingsTab): self.screens.monitor_number)) self.screens.set_current_display(self.MonitorNumber) self.screens.monitor_number = self.MonitorNumber - self.MonitorDisplay = str_to_bool(self.config.get_config(u'monitor display', u'True')) - self.screens.display = self.MonitorDisplay + self.DisplayOnMonitor = str_to_bool(self.config.get_config(u'display on monitor', u'True')) + self.screens.display = self.DisplayOnMonitor def setupUi(self): self.setObjectName(u'GeneralTab') @@ -74,9 +74,9 @@ class GeneralTab(SettingsTab): self.MonitorComboBox.setObjectName(u'MonitorComboBox') self.MonitorLayout.addWidget(self.MonitorComboBox) self.MonitorLayout.addWidget(self.MonitorComboBox) - self.MonitorDisplayCheck = QtGui.QCheckBox(self.MonitorGroupBox) - self.MonitorDisplayCheck.setObjectName(u'MonitorComboBox') - self.MonitorLayout.addWidget(self.MonitorDisplayCheck) + self.DisplayOnMonitorCheck = QtGui.QCheckBox(self.MonitorGroupBox) + self.DisplayOnMonitorCheck.setObjectName(u'MonitorComboBox') + self.MonitorLayout.addWidget(self.DisplayOnMonitorCheck) self.GeneralLeftLayout.addWidget(self.MonitorGroupBox) self.StartupGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget) self.StartupGroupBox.setObjectName(u'StartupGroupBox') @@ -150,8 +150,8 @@ class GeneralTab(SettingsTab): self.GeneralLayout.addWidget(self.GeneralRightWidget) QtCore.QObject.connect(self.MonitorComboBox, QtCore.SIGNAL(u'activated(int)'), self.onMonitorComboBoxChanged) - QtCore.QObject.connect(self.MonitorDisplayCheck, - QtCore.SIGNAL(u'stateChanged(int)'), self.onMonitorDisplayCheckChanged) + QtCore.QObject.connect(self.DisplayOnMonitorCheck, + QtCore.SIGNAL(u'stateChanged(int)'), self.onDisplayOnMonitorCheckChanged) QtCore.QObject.connect(self.WarningCheckBox, QtCore.SIGNAL(u'stateChanged(int)'), self.onWarningCheckBoxChanged) QtCore.QObject.connect(self.AutoOpenCheckBox, @@ -172,7 +172,7 @@ class GeneralTab(SettingsTab): def retranslateUi(self): self.MonitorGroupBox.setTitle(self.trUtf8('Monitors')) self.MonitorLabel.setText(self.trUtf8('Select monitor for output display:')) - self.MonitorDisplayCheck.setText(self.trUtf8('Do not display if single screen')) + self.DisplayOnMonitorCheck.setText(self.trUtf8('Display if in single screen')) self.StartupGroupBox.setTitle(self.trUtf8('Application Startup')) self.WarningCheckBox.setText(self.trUtf8('Show blank screen warning')) self.AutoOpenCheckBox.setText(self.trUtf8('Automatically open the last service')) @@ -188,8 +188,8 @@ class GeneralTab(SettingsTab): def onMonitorComboBoxChanged(self): self.MonitorNumber = self.MonitorComboBox.currentIndex() - def onMonitorDisplayCheckChanged(self, value): - self.MonitorDisplay = (value == QtCore.Qt.Checked) + def onDisplayOnMonitorCheckChanged(self, value): + self.DisplayOnMonitor = (value == QtCore.Qt.Checked) def onAutoOpenCheckBoxChanged(self, value): self.AutoOpen = (value == QtCore.Qt.Checked) @@ -233,7 +233,7 @@ class GeneralTab(SettingsTab): self.SaveCheckServiceCheckBox.setChecked(self.PromptSaveService) # Set a few things up self.MonitorComboBox.setCurrentIndex(self.MonitorNumber) - self.MonitorDisplayCheck.setChecked(self.MonitorDisplay) + self.DisplayOnMonitorCheck.setChecked(self.DisplayOnMonitor) self.WarningCheckBox.setChecked(self.Warning) self.AutoOpenCheckBox.setChecked(self.AutoOpen) self.ShowSplashCheckBox.setChecked(self.ShowSplash) @@ -244,7 +244,7 @@ class GeneralTab(SettingsTab): def save(self): self.config.set_config(u'monitor', self.MonitorNumber) - self.config.set_config(u'monitor display', self.MonitorDisplay) + self.config.set_config(u'display on monitor', self.DisplayOnMonitor) self.config.set_config(u'blank warning', self.Warning) self.config.set_config(u'auto open', self.AutoOpen) self.config.set_config(u'show splash', self.ShowSplash) @@ -253,7 +253,7 @@ class GeneralTab(SettingsTab): self.config.set_config(u'ccli number', self.CCLINumber) self.config.set_config(u'songselect username', self.Username) self.config.set_config(u'songselect password', self.Password) - self.screens.display = self.MonitorDisplay + self.screens.display = self.DisplayOnMonitor #Monitor Number has changed. if self.screens.monitor_number != self.MonitorNumber: self.screens.monitor_number = self.MonitorNumber diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 483e1a029..5c2394ab2 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -248,7 +248,7 @@ class MainDisplay(DisplayWidget): else: self.display_text.setPixmap(QtGui.QPixmap.fromImage(frame)) self.display_frame = frame - if not self.isVisible() and not self.screens.display: + if not self.isVisible() and self.screens.display: self.setVisible(True) self.showFullScreen() else: diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index e68adb580..0c2cc0153 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -33,7 +33,7 @@ log = logging.getLogger(__name__) from PyQt4 import QtCore, QtGui from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \ - contextMenuAction, Receiver, str_to_bool, build_icon + contextMenuAction, Receiver, str_to_bool, build_icon, ItemCapabilities from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm class ServiceManagerList(QtGui.QTreeWidget): @@ -233,9 +233,9 @@ class ServiceManager(QtGui.QWidget): self.editAction.setVisible(False) self.maintainAction.setVisible(False) self.notesAction.setVisible(False) - if serviceItem[u'service_item'].getCapability(u'allows_edit'): + if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit): self.editAction.setVisible(True) - if serviceItem[u'service_item'].getCapability(u'allows_maintain'): + if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsMaintain): self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) @@ -713,7 +713,7 @@ class ServiceManager(QtGui.QWidget): get_config(u'auto preview', u'False')): item += 1 if self.serviceItems and item < len(self.serviceItems) and \ - self.serviceItems[item][u'service_item'].getCapability(u'allows_preview'): + serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsPreview): self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], 0) @@ -722,7 +722,7 @@ class ServiceManager(QtGui.QWidget): Posts a remote edit message to a plugin to allow item to be edited. """ item, count = self.findServiceItem() - if self.serviceItems[item][u'service_item'].getCapability(u'allows_edit'): + if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit): self.remoteEditTriggered = True Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'service_item'].name, u'L:%s' % diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 85a5dd6bd..7dcca0c44 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -375,8 +375,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.is_text(): self.Toolbar.makeWidgetsInvisible(self.image_list) - if item.is_song() and \ - str_to_bool(self.songsconfig.get_config(u'show songbar', True)) \ + if str_to_bool(self.songsconfig.get_config(u'show songbar', True)) \ and len(self.slideList) > 0: self.Toolbar.makeWidgetsVisible([u'Song Menu']) elif item.is_image(): @@ -395,7 +394,8 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.song_edit_list) - if item.getCapability(u'allows_edit') and item.from_plugin: + if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit)\ + and item.from_plugin: self.Toolbar.makeWidgetsVisible(self.song_edit_list) elif item.is_media(): self.Toolbar.setVisible(False) @@ -494,7 +494,8 @@ class SlideController(QtGui.QWidget): bits = frame[u'verseTag'].split(u':') tag = None #If verse handle verse number else tag only - if bits[0] == self.trUtf8('Verse'): + if bits[0] == self.trUtf8('Verse') or \ + bits[0] == self.trUtf8('Chorus'): tag = u'%s%s' % (bits[0][0], bits[1][0:] ) row = bits[1][0:] else: diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index b5ec922ad..1a70a764a 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -29,7 +29,7 @@ import time from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, Receiver, str_to_bool, \ - BaseListWithDnD + BaseListWithDnD, ItemCapabilities from openlp.plugins.bibles.forms import ImportWizardForm log = logging.getLogger(__name__) @@ -449,7 +449,7 @@ class BibleMediaItem(MediaManagerItem): raw_slides = [] raw_footer = [] bible_text = u'' - service_item.updateCapability(u'allows_preview', True) + service_item.add_capability(ItemCapabilities.AllowsPreview) #If we want to use a 2nd translation / version bible2 = u'' if self.SearchTabWidget.currentIndex() == 0: diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index c57a091f2..84d6cf289 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, SongXMLParser, BaseListWithDnD,\ -Receiver, str_to_bool +Receiver, str_to_bool, ItemCapabilities log = logging.getLogger(__name__) @@ -144,8 +144,8 @@ class CustomMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteCustom - service_item.updateCapability(u'allows_preview', True) - service_item.updateCapability(u'allows_edit', True) + service_item.add_capability(ItemCapabilities.AllowsEdit) + service_item.add_capability(ItemCapabilities.AllowsPreview) customSlide = self.parent.custommanager.get_custom(item_id) title = customSlide.title credit = customSlide.credits diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 78beff1be..a8b07cfb3 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -28,7 +28,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ - contextMenuAction + contextMenuAction, ItemCapabilities log = logging.getLogger(__name__) @@ -140,8 +140,8 @@ class ImageMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() if items: service_item.title = self.trUtf8('Image(s)') - service_item.updateCapability(u'allows_preview', True) - service_item.updateCapability(u'allows_maintain', True) + service_item.add_capability(ItemCapabilities.AllowsMaintain) + service_item.add_capability(ItemCapabilities.AllowsPreview) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index f26b02418..7821623c2 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -28,7 +28,8 @@ import os from PyQt4 import QtCore, QtGui -from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon +from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ +ItemCapabilities log = logging.getLogger(__name__) @@ -82,7 +83,7 @@ class MediaMediaItem(MediaManagerItem): if len(items) > 1: return False service_item.title = unicode(self.trUtf8('Media')) - service_item.updateCapability(u'requires_media', True) + service_item.add_capability(ItemCapabilities.Requires_media) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 6e9bbfaed..1b4097b6c 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -152,7 +152,6 @@ class PresentationMediaItem(MediaManagerItem): service_item.title = unicode(self.DisplayTypeComboBox.currentText()) service_item.shortname = unicode(self.DisplayTypeComboBox.currentText()) shortname = service_item.shortname - for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index c71a2c120..c374b473b 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, SongXMLParser, \ - BaseListWithDnD, Receiver, str_to_bool + BaseListWithDnD, Receiver, str_to_bool, ItemCapabilities from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm log = logging.getLogger(__name__) @@ -290,8 +290,8 @@ class SongMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteSong - service_item.updateCapability(u'allows_preview', True) - service_item.updateCapability(u'allows_edit', True) + service_item.add_capability(ItemCapabilities.AllowsEdit) + service_item.add_capability(ItemCapabilities.AllowsPreview) song = self.parent.songmanager.get_song(item_id) service_item.theme = song.theme_name service_item.editId = item_id @@ -310,7 +310,8 @@ class SongMediaItem(MediaManagerItem): break for verse in verseList: if verse[1]: - if verse[0][u'type'] == "Verse": + if verse[0][u'type'] == "Verse" \ + or verse[0][u'type'] == "Chorus": if verse[0][u'label'] == order[1:]: verseTag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) From 18eb768f2f43e8ae4a7426b0d73638a1bcdc39ae Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Apr 2010 09:04:41 +0100 Subject: [PATCH 102/150] Sort out multiple Chorus tags --- openlp/core/ui/slidecontroller.py | 4 +-- openlp/plugins/songs/forms/editsongform.py | 10 ++++--- openlp/plugins/songs/forms/editverseform.py | 30 ++++++++++----------- openlp/plugins/songs/lib/mediaitem.py | 3 ++- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 7dcca0c44..a82165537 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -494,8 +494,8 @@ class SlideController(QtGui.QWidget): bits = frame[u'verseTag'].split(u':') tag = None #If verse handle verse number else tag only - if bits[0] == self.trUtf8('Verse') or \ - bits[0] == self.trUtf8('Chorus'): + if bits[0] == self.trUtf8('Verse'): #or \ + #bits[0] == self.trUtf8('Chorus'): tag = u'%s%s' % (bits[0][0], bits[1][0:] ) row = bits[1][0:] else: diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index a369e46a1..b5cb58222 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -411,16 +411,18 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(2) self.AuthorsListView.setFocus() #split the verse list by space and mark lower case for testing - taglist = unicode(self.trUtf8(' bcitped')) + taglist = unicode(self.trUtf8(' bitped')) for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '): if len(verse) > 1: - if verse[0:1] == u'%s' % self.trUtf8('v') and verse[1:].isdigit(): + if (verse[0:1] == u'%s' % self.trUtf8('v') or + verse[0:1] == u'%s' % self.trUtf8('c')) \ + and verse[1:].isdigit(): pass else: self.SongTabWidget.setCurrentIndex(0) self.VerseOrderEdit.setFocus() return False, \ - self.trUtf8('Invalid verse entry - vX') + self.trUtf8('Invalid verse entry - vX or cX') else: if taglist.find(verse) > -1: pass @@ -429,7 +431,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.VerseOrderEdit.setFocus() return False, \ self.trUtf8(\ - 'Invalid verse entry - values must be Numeric, I,B,C,T,P,E,O') + 'Invalid verse entry - values must be Numeric, I,B,T,P,E,O') return True, u'' def onTitleEditItemLostFocus(self): diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 2666c146e..326946bc4 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -59,46 +59,43 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def onAddIntro(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Intro')) + self.VerseTextEdit.insertPlainText(u'---[Intro:1]---\n') self.VerseTextEdit.setFocus() def onAddEnding(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Ending')) + self.VerseTextEdit.insertPlainText(u'---[Ending:1]---\n') self.VerseTextEdit.setFocus() def onAddOther(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Other')) + self.VerseTextEdit.insertPlainText(u'---[Other:1]---\n') self.VerseTextEdit.setFocus() def onAddPreChorus(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Pre-Chorus')) + self.VerseTextEdit.insertPlainText(u'---[Pre-Chorus:1]---\n') self.VerseTextEdit.setFocus() def onAddBridge(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Bridge')) + self.VerseTextEdit.insertPlainText(u'---[Bridge:1]---\n') self.VerseTextEdit.setFocus() def onAddChorus(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[%s:1]---\n' - % self.trUtf8('Chorus')) + count = self.VerseTextEdit.toPlainText().\ + count(u'---[Chorus') + self.VerseTextEdit.insertPlainText(u'---[Chorus:%s]---\n' + % unicode(count + 1)) self.VerseTextEdit.setFocus() def onAddVerse(self): self.startNewLine() count = self.VerseTextEdit.toPlainText().\ - count(u'---[%s' % self.trUtf8('Verse')) - self.VerseTextEdit.insertPlainText(u'---[%s:%s]---\n' - % (self.trUtf8('Verse'), count + 1)) + count(u'---[Verse') + self.VerseTextEdit.insertPlainText(u'---[Verse:%s]---\n' + % unicode(count + 1)) self.VerseTextEdit.setFocus() def setVerse(self, text, verseCount=0, single=False, tag=u'Verse:1'): @@ -155,7 +152,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): return text def onVerseComboChanged(self, id): - if unicode(self.VerseListComboBox.currentText()) == self.trUtf8('Verse'): + if unicode(self.VerseListComboBox.currentText()) == self.trUtf8('Verse') or \ + unicode(self.VerseListComboBox.currentText()) == self.trUtf8('Chrous'): self.SubVerseListComboBox.setEnabled(True) else: self.SubVerseListComboBox.setEnabled(False) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index c374b473b..3519a526a 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -312,7 +312,8 @@ class SongMediaItem(MediaManagerItem): if verse[1]: if verse[0][u'type'] == "Verse" \ or verse[0][u'type'] == "Chorus": - if verse[0][u'label'] == order[1:]: + if verse[0][u'label'] == order[1:] and \ + verse[0][u'type'][0] == order[0]: verseTag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text\ From 3c2fb96376ac68b1c8e7587f12688b2f728bd1a0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Apr 2010 09:10:26 +0100 Subject: [PATCH 103/150] File housekeeping all files not touched for over 1 year --- {openlp/plugins => documentation}/plugin.txt | 0 .../core/test/data_for_tests/render_theme.xml | 19 -- openlp/core/test/data_for_tests/snowbig.jpg | Bin 201935 -> 0 bytes openlp/core/test/data_for_tests/snowsmall.jpg | Bin 26539 -> 0 bytes openlp/core/test/data_for_tests/sunset1.jpg | Bin 198809 -> 0 bytes openlp/core/test/data_for_tests/treesbig.jpg | Bin 529287 -> 0 bytes .../core/test/data_for_tests/treessmall.jpg | Bin 68202 -> 0 bytes .../test/golden_bitmaps/test_bg_shrink_x.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_bg_shrink_y.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_bg_stretch_x.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_bg_stretch_y.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_gradient_h.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_gradient_v.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_theme_basic.bmp | Bin 1440054 -> 0 bytes .../test/golden_bitmaps/test_theme_font.bmp | Bin 1440054 -> 0 bytes .../test_theme_horizontal_align_centre.bmp | Bin 1440054 -> 0 bytes .../test_theme_horizontal_align_left.bmp | Bin 1440054 -> 0 bytes ...test_theme_horizontal_align_left_lyric.bmp | Bin 1440054 -> 0 bytes .../test_theme_horizontal_align_right.bmp | Bin 1440054 -> 0 bytes .../test_theme_shadow_outline.bmp | Bin 1440054 -> 0 bytes .../test_theme_vertical_align_bot.bmp | Bin 1440054 -> 0 bytes .../test_theme_vertical_align_cen.bmp | Bin 1440054 -> 0 bytes .../test_theme_vertical_align_top.bmp | Bin 1440054 -> 0 bytes openlp/core/test/test_mediamanageritem.py | 110 ------ openlp/core/test/test_plugin_manager.py | 74 ---- openlp/core/test/test_render.py | 241 ------------- openlp/core/test/test_render_theme.py | 319 ------------------ .../core/test/testplugins/deeper/__init__.py | 1 - .../testplugins/deeper/toodeep/__init__.py | 1 - .../deeper/toodeep/plugin3toodeep.py | 13 - openlp/core/test/testplugins/testplugin1.py | 13 - .../test/testplugins/testplugin2/__init__.py | 0 .../testplugins/testplugin2/testplugin2.py | 8 - openlp/core/theme/test/test_theme.py | 82 ----- openlp/core/theme/test/test_theme.xml | 18 - openlp/core/ui/test/test_service_manager.py | 160 --------- openlp/plugins/bibles/test/__init__.py | 24 -- .../bibles/test/biblebooks_msg_short.csv | 8 - .../bibles/test/biblebooks_niv_short.csv | 9 - .../bibles/test/bibleverses_msg_short.csv | 35 -- .../bibles/test/bibleverses_niv_short.csv | 35 -- openlp/plugins/bibles/test/rt | 1 - .../plugins/bibles/test/test_bibleManager.py | 124 ------- .../bibles/test/test_bibleManagerAPI.py | 100 ------ .../bibles/test/test_bibleManagerCSV.py | 68 ---- .../bibles/test/test_bibleManagerOSIS.py | 65 ---- openlp/plugins/red-x.png | Bin 716 -> 0 bytes .../songs/test/data_openlp1/amazing.olp | Bin 6144 -> 0 bytes .../songs/test/data_openlp1/sample3.olp | Bin 8192 -> 0 bytes .../songs/test/data_opensong/Amazing Grace | 38 --- .../test/data_opensong/På en fjern ensom høj | 56 --- .../songs/test/data_opensong/The Solid Rock | 28 -- .../songs/test/data_text/CCLI example.txt | 36 -- .../songs/test/data_text/PåEnFjern.txt | 61 ---- .../plugins/songs/test/data_xml/amazing1.xml | 22 -- .../plugins/songs/test/data_xml/amazing2.xml | 22 -- .../plugins/songs/test/data_xml/danish1.xml | 62 ---- .../plugins/songs/test/data_xml/danish2.xml | 62 ---- .../plugins/songs/test/data_xml/format1.xml | 22 -- .../plugins/songs/test/data_xml/sample1.xml | 32 -- openlp/plugins/songs/test/test_song_basic.py | 182 ---------- .../plugins/songs/test/test_song_opensong.py | 192 ----------- openlp/plugins/songs/test/test_song_text.py | 66 ---- openlp/plugins/songs/test/test_song_verse.py | 156 --------- 64 files changed, 2565 deletions(-) rename {openlp/plugins => documentation}/plugin.txt (100%) delete mode 100644 openlp/core/test/data_for_tests/render_theme.xml delete mode 100644 openlp/core/test/data_for_tests/snowbig.jpg delete mode 100644 openlp/core/test/data_for_tests/snowsmall.jpg delete mode 100644 openlp/core/test/data_for_tests/sunset1.jpg delete mode 100644 openlp/core/test/data_for_tests/treesbig.jpg delete mode 100644 openlp/core/test/data_for_tests/treessmall.jpg delete mode 100644 openlp/core/test/golden_bitmaps/test_bg_shrink_x.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_bg_shrink_y.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_bg_stretch_x.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_bg_stretch_y.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_gradient_h.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_gradient_v.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_basic.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_font.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_horizontal_align_centre.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_horizontal_align_left.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_horizontal_align_left_lyric.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_horizontal_align_right.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_shadow_outline.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_vertical_align_bot.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_vertical_align_cen.bmp delete mode 100644 openlp/core/test/golden_bitmaps/test_theme_vertical_align_top.bmp delete mode 100644 openlp/core/test/test_mediamanageritem.py delete mode 100644 openlp/core/test/test_plugin_manager.py delete mode 100644 openlp/core/test/test_render.py delete mode 100644 openlp/core/test/test_render_theme.py delete mode 100644 openlp/core/test/testplugins/deeper/__init__.py delete mode 100644 openlp/core/test/testplugins/deeper/toodeep/__init__.py delete mode 100644 openlp/core/test/testplugins/deeper/toodeep/plugin3toodeep.py delete mode 100644 openlp/core/test/testplugins/testplugin1.py delete mode 100644 openlp/core/test/testplugins/testplugin2/__init__.py delete mode 100644 openlp/core/test/testplugins/testplugin2/testplugin2.py delete mode 100644 openlp/core/theme/test/test_theme.py delete mode 100644 openlp/core/theme/test/test_theme.xml delete mode 100644 openlp/core/ui/test/test_service_manager.py delete mode 100644 openlp/plugins/bibles/test/__init__.py delete mode 100644 openlp/plugins/bibles/test/biblebooks_msg_short.csv delete mode 100644 openlp/plugins/bibles/test/biblebooks_niv_short.csv delete mode 100644 openlp/plugins/bibles/test/bibleverses_msg_short.csv delete mode 100644 openlp/plugins/bibles/test/bibleverses_niv_short.csv delete mode 100755 openlp/plugins/bibles/test/rt delete mode 100644 openlp/plugins/bibles/test/test_bibleManager.py delete mode 100644 openlp/plugins/bibles/test/test_bibleManagerAPI.py delete mode 100644 openlp/plugins/bibles/test/test_bibleManagerCSV.py delete mode 100644 openlp/plugins/bibles/test/test_bibleManagerOSIS.py delete mode 100644 openlp/plugins/red-x.png delete mode 100644 openlp/plugins/songs/test/data_openlp1/amazing.olp delete mode 100644 openlp/plugins/songs/test/data_openlp1/sample3.olp delete mode 100644 openlp/plugins/songs/test/data_opensong/Amazing Grace delete mode 100644 openlp/plugins/songs/test/data_opensong/På en fjern ensom høj delete mode 100644 openlp/plugins/songs/test/data_opensong/The Solid Rock delete mode 100644 openlp/plugins/songs/test/data_text/CCLI example.txt delete mode 100644 openlp/plugins/songs/test/data_text/PåEnFjern.txt delete mode 100644 openlp/plugins/songs/test/data_xml/amazing1.xml delete mode 100644 openlp/plugins/songs/test/data_xml/amazing2.xml delete mode 100644 openlp/plugins/songs/test/data_xml/danish1.xml delete mode 100644 openlp/plugins/songs/test/data_xml/danish2.xml delete mode 100644 openlp/plugins/songs/test/data_xml/format1.xml delete mode 100644 openlp/plugins/songs/test/data_xml/sample1.xml delete mode 100644 openlp/plugins/songs/test/test_song_basic.py delete mode 100644 openlp/plugins/songs/test/test_song_opensong.py delete mode 100644 openlp/plugins/songs/test/test_song_text.py delete mode 100644 openlp/plugins/songs/test/test_song_verse.py diff --git a/openlp/plugins/plugin.txt b/documentation/plugin.txt similarity index 100% rename from openlp/plugins/plugin.txt rename to documentation/plugin.txt diff --git a/openlp/core/test/data_for_tests/render_theme.xml b/openlp/core/test/data_for_tests/render_theme.xml deleted file mode 100644 index 63dfddc02..000000000 --- a/openlp/core/test/data_for_tests/render_theme.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - openlp.org Packaged Theme - 0 - clWhite - - - Tahoma - $00007F - 53 - pixels - 0 - $000000 - 0 - $000000 - 0 - 0 - 1 - diff --git a/openlp/core/test/data_for_tests/snowbig.jpg b/openlp/core/test/data_for_tests/snowbig.jpg deleted file mode 100644 index f1d0419271b262087771e731b729e4c6735cccc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201935 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 diff --git a/openlp/core/test/data_for_tests/snowsmall.jpg b/openlp/core/test/data_for_tests/snowsmall.jpg deleted file mode 100644 index 3fd506415674fa2f658c4abcb4cdec17b7e6df9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26539 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 nh>u42M*%uU{V^m?z*sQ@=ZwZhzj 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ƹ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 z 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�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 Ai~s-t diff --git a/openlp/core/test/data_for_tests/treesbig.jpg b/openlp/core/test/data_for_tests/treesbig.jpg deleted file mode 100644 index 9454b3a682fadc2d091002f006888b75f0cd1d1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529287 zcmeFYbyytDw=O#9;0}S{?gR#R4H|54OVALU!6j&b0KqN62DiZAgKL5lB)A5Ggy0?| z$Q{1q+xvIUv+wiVbN@c8sj0VDt*Tn9x~r;Z-sXPpeicBVs;Hs}Kte(SC?gKQ{ddN% zPkroO0sty18~_Xe0DuX=M?wamBaj~=5g;%LA`eC+A|w<55+Z*{kCD*+$x{%R@-NOp zV79+D$OsJjTelE_iIM-iuH9SIf9f_N^!h*mK;FXH#re-CotBHYjhoIZ7Y{mF5nez& z!s4N~e{&EouYee@h#0RR9j~YupNNdUiu#y`6a7E*4|N{gr$8hsM8ZO(|LN-dPr85lM%bq!5*;GF_?sg#z(d); z=huJr1c;tc06d5@b3`#R0zX{UHUvibi+d0l6@eKL`Y#VnAn?P$5r%dW0Qr@6a3W!00Kzl4;F~O zHiVu6(dL8wL&8Pi2Y=cgZV7~#BI^H%@8Jw#{EyWG{v-JR)J2j(%t?goBVPmP02Y9* zzomb&`+ERj731L^_H0Zd55^0k^b{@_Wt4cQA+?cAKaE!=GA^ljYS?OdGc_;`4E|GW7AqW_l>P(WOlB&3HU1u6OOXY#|X zgpl)puIt16yt~H&3;~w!SrB;Zzb^_P`oZk~%D*E}&Hx}sOkf$nW55JL_b}TY(!)xC z{Lj1vi;5u7f2`RAe`fu|I*t4n|2s#~0VscW#E13h-(9m1v6}w7YgQoef9{${$bZ(H zdW0VNFD89hv=H*|KKO5b|DQYh!-9hF`+gB155Pc22cn~40D(YEObjd>5?mZ?Y#a(A zVtf+n$FwxmkEy8Wn0Q#}7`PazsMv(rxp?^m1O#YVMI}W*5<#W4Z4F5Mlsa0X-;43;<+8BosoV`yRx84M0LeJbyeqg8UW4=8KAk4#dF3 z!bTXt2>{4QC@9FNC}?P?h;(lhc43X6(MO3Oah*44us8k?G1K7H=#?du;H9GaM% znx2`Rn_u|8w!X3XW9#Sk&hg3V+4--F%d6{$xDcDvpRoQbvi~hELPT81sHiBYz=yby zki8KJg%A~uo)4W!RvTymA!Y!DV35cq=GAm#GV+6uNG;vIVv#Wkd}ls>2<@N9{=Wql z`u{7k{|fBC<5~dVpdjvhLKH%PG+-0FNat)mN6qoYK2H|-L#iMehEsBpIDkdEPTp&x zfF(r7WW_YYEmb1+Z8Lbs>ZBVGuUg|GeyFF2f`THtyJMfBfMbJX?w1TL*ws7W88S&E z9HJ_N%;or{Qnq60Z`x&wC12^gskks%Dw(R9pa$^YauOM$CMnf0i>Hurhm18!aw_&a z{?^NN8Vep;mlR*WIWIfMc-|ZSWul@N$%0DlLbIeAwsz>Fb^*RNGQlL#)tSyaY_c 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%0A6M%ZvJ1e<1^9>7ID~z6BY%d8x^v`;W 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%0AVzSREI!U#Hn!o*{%=Gr6O6D6qeh(dNE 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

T;=V$6AKu)9<+JL58=03KNZ|9-n$t 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�yU00kP>r8y=_<+!8f32X$9zomM( zb|nF*!5+89nzTLgrY>q<22rdp8U zQ$t`okBFnswke_>n$@;LlFWGQI6*=iu0(Wahl6Sxz3XO(c)4~m zWm|*IM@~)?b`gfaKTG&~NNeOX0=8#3j(708_iBn+~lPx|XQ;?(#D18rVhB|s0o%o-Man%JA zxVTBreCE0iosqUI!mX=Phv|h6>r?ufQKl&^HylP#9(AN(Ec(}>;O8hx)HKRNP?Ix6 zh{!|HBLK7>T_BoKHOCx%$K4xTQObbmK9ug;E_*W!G&mN(=vJN&*1fn{raaq^c#&LE z4oC~yE7@1Q8ERy<+*fOoR2*rv6)8gipIWfAuGw$1rbWRDQ=o+gP(jWPa7U#^##@Pf zL&FUae}!4Cj6Lssv$*Y4YjLk(4D>-5sZ&o!%kf- z*2YrH?4g!G{YS^ns-Cn4rudJAl{!dDQlCLhE?RE%%P4Y0XyFdyVq9NesHpz{8eTUg z%tH_i=t+-a)KC#Qt4dsDz6mMHzPYF^N$?-_T1+QgVVI}^O`zk=+lnsJGW}(Q;vQNX z3K;Mh;VB>9lTDii-RmgZEoVD{$@}}zs9{i%f0ZJ^QA4OS#JYkGnL?UKU!kN z<^}#-SSp1g*D=+Emk8Q{?hQxV-I;V~Kz-JdlyxfynssouIRwRJZ=p$X9IL5F`u3qI z!UTb>K;URIZ0MK z(Uvd7CM;TXTbi~6sY)dz93uTIrRY+Lcq>o`+mo6Jk1zea@jVI** z9^SN;z-*816Im4%YpM4u-SycwDMhx_a+Vue*@{e{guK#1RfP08&lOL3drw>=ATVA_ z>Kt%3ikOhtYss~0U+|QkE7S4mQ~@Z)%ob{!2+Edx7WpG2gNkvYbbOn%x16+U1lunW z)t1>`2y^ItDt%8p!h%=x9)mqAYd1Hex|N|$p?Ue5`M%XhB1IVRTDLp?iqsm6Nmh&2 z_Ky?d8&ha~wB;@gbp+R%IL6a@hJKSOSHsCt(!eA7*E7-IiI>JM@Z!ptB}PlhLY#HK z)MOqBr^NNj;_!M;{Z-};Pi1UzCR(35ZQ77v_TlKMZ2OBZ(s4T0Ey5yCJH{?l<=-c6~ zWGOy?15$A``%s*l4f0EGFDNIIlhYNt@AywMPs%A`{RJ+zc|)tpy7DqR*Gsb4Y%{G9 zZ0nZfxjqw01o zR?wE+@fOKY$m5axtD@>XGP`xXh;O#mWRRsTk-!5TJ?W;Lv)Wj7tCSgmx0yjoS(JE5 z#yZjCqSj2E=}hI;D@$n-5k17P<8CP%e~Dxt=~Nm~P^0RrbJEyyJa*g)N|darSU)iK zt@pcJHA{8TB@<+=YEsu65{#3aR;c!5t%SbYZ>{a5kfnKB1FzDQ*&7+LF)@Nco!3&? ztXk28Gah$_+h{6z=6F^QVt)1c?)#;h)7q|GyH1o!l^t8#by!-I4^F<6ew){qtt}ZLV0LE)=Nv54s!h$0g|y?TC#D5YlL$1zPK`i{?i9?6i?SuT zbhfFI!=4fq6}*HjaB_VGK7}_;2`hT=+~Fxm2`;cVAP%4$bU4TDNo{(S?KN?F$0^oi zE#!dmd`;+5zsv~l){2RDx7ZOS3xe~lNjuTDId^ZV&oriM^&)cuJ%n=guR-`G>C&V1UZ`<#TZfoC@lNXTC@J7w#1l=toY9~TPsT2cqeLoG3!cGuIyzFGjfv;#n0)bh7M2usRjQ4 zP+B!5#vQy}6AB)8N_F6@kU1Fk?L~(>WVES6Aq)-0wlB=)#&Y7ruEl7mV{&}Ndi3eV zGkuraj3v7*xk+=KyRZ+p)|y{g(b%TekVzd5exjX= zBV(w3qp8{S@8cz&;N+L@%|~Zo{U8^)Aa(=X{{XFVZC5Q9jcGqq-1PG<+nq=eAfb3b zI39Il6o>H=O_DUwtsu+s8fh7I895|!dY*%tX>9y9)OXLrwCdZX>_chf{{Y*^j*ZJB zrdR$@aC7b|rN-*Gm!)k!Izn)Oi+Ld(VV| zqLmIo?X-P(`_ym1op&_lw&OJFXj9#e%!t4DQPP3pIzc;A)Sf%=MJq$v0_ALJyE|7o zmj)dkJG0hOjojr30P=ebcFilcYCTI9B%LQ78kHq)lIw~*p#=GoM?sFCdSi09+Vs?n zw-!IeDL?lQGM&vwQTc*#$B2FUcBzI|$6$@id}6$Rz=XYU)D~NMCERW>Tw&zwV%!=4 zGI7Z#wmIwEiiDA;rd)z7y|u*wSCac8I)>H!$1g(Z1HR$H+sjm8XX zb+b?CNwN*XQOutSvWDJJ$0I!kMrm!!RqD+fDqMCXGSt^eOY)meR;6^uJq9pG*0sNP zeg>Ym$&+Haz>=9cc2e5d6s~rmIqi)8)iJ0pk}o$07KrbtZXPm~$RrVs#B~+N5e*gz zX0MUe^)p-0jXmQ*oia!L%;^EZr%}5EAw={eJc?e`$~sC^sGcpbv0T;0(8ad;d^gP-~JXA##3qVejjeZo)QTh00w_*(~p_< zhAtq8^hCr}!MhF8OXwaz=aq)jp13&APNIOgKXPW)^5Z7hK0SNf3U~$J_S!lD(z<@K z(>fnb*q*gr%IDsrvJ{1UO4gNB~%V%$Kh1KI@H_oQ)jhvE3D;#bOoWf} zk=lVxbr>I?Q|&n2mTm0{x-sxAGB+tGMpCtQPaUgz;Xs)-Oh3xP(Daa`NNELXX}|I( z9B29r)A#KzDjRYxv6U500K7-!sQTlulC-|^4$>x_zg=czmY}lxReu zvB2aE{Ja2vdL~{p0n}qSogNk9>!xAbtt`o7QWw&9Aw(3VUa7}XMcm>v+YL&-Y7uTz zN5v76*h?&v{r>>oroRoZI*#W$;}Xeevss*F0V`Q-xZ-%n1oxsf7M}QK+5Z5jOsj?2 z!;+G`wvK;@cjkbAq9K?608tCk+OjU3x?DdYnv1Q*>fi}|Okg%~fC9Q>`_VrEs-oXq zc21(QS)Oqptn7DuXWLKLoG9m>eJBf+n#pdnLNJ<2CdhCmK~4f&9q>JIMCj|g8hLkS zplSB*XO{I*6HF?t?dqHx^vJ|3u>$oZm+p4J91z#vO5x8D@qmDIQ~@mdZSEVbmLb2Q0m)| z&?#;^EglDMYG2aYjBHzS7I-c>D%UhR-vJ3gIM1gXQk$bQrA7|NSx!fkq>TRnwIgy; zt#TZV5e|Ghm*nvqAtWB-)~IcgT(;V!ToM|3TgysWWzK;;&MB*qt5Jq<*s(RT;@1*6 zLY!IXwJBLS>(lvG$#8A$u(@(~E%ycr65j2izH!Z1#m$M|^zu{Va1Il&6YM?n`&Nxd z7gVkFwJ626y1rE7OXUODR`NGsObN9V9rck<&a6wQ8Lc1;Hlc89Jeb zJml+ZkzzL5vSaP>RIfrv>DQmNFOjUSH#9AacA8>z*H!0nPHYWSVbBB zbjHJ@tQtDd>`>ssHx1jlL_doiM? z2x+wBkFcZ20^P$6U;z={Y?2n8(h?ktpEGTYAs2wwV_g$%qS63q?{%z(`T&9MZi*DVB!fzJ)BS%%q$odkVIF za&GY5QskJ{uzIlHD;<(OO;5vRh;r7@wWvv3ff3T;3Gj!iv(5^XbB(^0Dzhn}1ddx0uS+J=Z@0*P=VNWawQLQ#0*V0cocq_0X=^;`rsY2N zh;ja8#7eet*cElIeP`B)i3!OUcQU6=Qqp|IBez!|ls1B`6HswtO}E(&BHm)ja%9V7 zn2B=*C|KtmjVZXub=gXNNg+h^?_GlHC|sRW4#_?mjtZ1AQauK0Q(EZrY>vd%9#gEo zGL6H`J@6}nD@Fxd0QP480K+X$1~jK*Tu+3zld%#r!(fhn_0Vm4i%B&aU5R$4ZW13@ z4N4LIMEaFuu50u6hNjnzxFe+v92ZAiDdZ)yJk2O+SQf|lv`By_3BINMNJ zDY;9iaoza%actID7V9%d^`-h|_^Uj=eim z>(-*SJ#S69mSeRUDFGW&3ySsTy4g)dvIT2dw&QJ^BUG~5olVQ({{T_{00mo;r4iFU zfM&GHoYZ^SU^1~BpaO-Sg!SY3Q5Gw`w%Gv@w8S~h&RS23rxXZTJ$`K9Ruf)~?Xkw> z#Zyyv?k^FL=lTj;4nUZ7X1+@e6{IF#+FQZs@U4K1p|#~$9@U-s<7kHDc5PV^+#$DA zoR=#bVV!S;(yf!ADU`Mp_QyFm_WM%#TB7@SaK}O;JdEKbDG4NZB-Y|<9?~ql%h2jB z(N_&kKI2 zAbCq~6)9b~8S7DcpIbwe>rm|Nx`?il3y+cR~%uscaI_M$M&fS z&PKc4!^m+g;a-0gASF5Ur;dq(yE#@c=Wj`Lbe3R zoTTkTuQ)KueTPi{0KFRu*#h3gsi|9+7YYv5xU8q_DgsnFj;(SfOA%UeMD0lZLOp@0 zx&DX!Phevxywpk!D{8iz!_Hp=uDA|cT2u;i?@h0>E#bt3u+z>TDjjh{4Ub{#QcSd% z(Kj|8DBF+l@9@jNvc}oZo`#vY?Ue?_8`wi8#qToXyf)g0~YLj~U|cbfl1d za(fDCX=)?@;-?3lT7ePL$}%?}TyzvfsY$oPX-pt8r2>^Cqyn#DPOaL8E}gfg^1FYD zA!+>>>rW@#{lyl|2{-ORsFL$%Zat|oADXE$-A?}i1w#cRoPTOA=N4O9R^J7u5{0&( z9l!zPoJu#8UFwgO)G9akF_%G_ypo{nxXS&&^z@>#A`~8SW8sRAiEzju{{V)r5)kYnS|n*aGkF>et%q3#`L^PY!+uB3wlRYDegc% z!i7O?2~Q=*-*H^a?ecnjMv!C1RuU8vPz@Vq(i1LmRdAU4J{2m#Qq{L7+L+!%$8CQV zEllm&3KEV7`c{||W=ew|-j`Rm_#1DhJxQ)b;=S}?hmQY@~LaA9Z?=s*p^V_n35Hl&7}#z`<{d8PISVc zDd!UsOog_OF73x+NbB{XW?d4?t|B6qP_jY(5U+oFTKa=>f7+Od3wpO&;~+C_x4$Oj z=W=p)dIXQ!uC#1DdvCP-1qcpNJ27J&M(y+9+`@|~WpS{YalFrRJ4-*K5k68!xIHK#qBQlA+Z}Noes$@$K~t`rr#a`Z z09CVha_W$V6dYQx0X&5LD@%?;{KOM_Gi8rUM17U2=D`U{u$7~QAGrSYz4qH@z?(cgBY(A=A#la5GSM_@yqGkG|i;G@!9h``$am5^x;!pIg$f`j%ywO88MGBw%(S(T@>lj-J$9_++v0N0C~a?68HuO+<&_w%9^4 zrw0W}@7JgM&_*C!{{V|~hQPtW2Q*Hnl`>LZYv4*5Sw3)jdJp;OT&C#{Qrg`vmB?m3 za)p(Z41Fof%k%Y|T!T6l!W0npT024H?*p3ppwX%2I?_CKf>JO7Q=EP4>JgV9(NhbM zm3AFOn=Yb}G`lt&7tZC!TSu>a4@#}n+RojmY_5w_uz>Bv$1Me{{R!*ReYyx=E%$514&b-^cj61 zmFK=kr@c!wl_laGDk{msN6I<$s_P|aro6lo5& zXGwB2bsR0$#(Xi{(GDP~SjITcb4<;G_3%wdi)=SI@(A%5Y0Ziw-@YoBG`Bq;Gblvd zVJk=3Cs~$_KRLUu#O`;+Q3?Bc6UeB9TCH}d>yL4?UBkeT+kX&4ZhG<4XyT}uxZL!$ z<&$f)zijbN9Za#~G=~VaoiJaR~!_7)c(gK2jR^C5{Jt}NW$~DoRPm1o1u8fJa zw1_gd+q9%aqhKlubOjOL9<@~|78{HtrfrGFokkCa$ILVT0GG8ZW>ubCpMY_P8kRZ* zIe-si^sO!5GzHJF7hkd_8FwAr0=Pp;{9lpl`K*vglMx=8fyD2ps2{h&>L zuF&~+os>V4~DY(`3abi!$=EH&9`qI5t-NE<^hV{|s5V8^-P~dyhM--WVpj4!! zo=al{R@c#OYAI?%vK$Cb5U|-+KDec?jucpe*qKTGjG2e{Y$7d*uHF9tH&Gv{9b*X| z;;NvgEwv58@K&hK9PLLN4KIsux+W^xwuthH;R<^xP!+AcL3K>@w<^?~$nCfkpMEPD z@&>BZg*+EyW-!z`Qruci!7e61B&o(+0N{F3k)~RG!zSFA%%LPGr-Wl3f|<&_*=|j# z2%5Navx3T6Brn&K+Jh;dZc6T)NOq} zQ{t$2V0};8m0WCBdt9}u(8Dtj*#YE7R{jrRkF|Yxv9WV)sO(5n3Pww$tN^b;>;C|% z#?EyGmO7f#ZpKD3m6uh@kKVWRZ=yB7@$AH~>U*f2h^uoBL@5rioH))fps#RwKD8Tg zD0gFuX~65m0OFB^r{14EYQJ1(y>NAGDsuT+lHf{4D^%M&waJYtUDM*5Qh+i1Kzero zcH)wNlWj8>{x#0bQFpZ6^!#>`xvsq2k1;}D=O6hBO6s0hfl#o zqb2LpO?cyQZ7MFQI2|$9_NAIq?QxHALw2}mxo%bz!A=jRX{ex>&-hiix-=_`E_`x; zal~~~qo>eN*E@{4Zz0J=MJZ4O`+ExL{{V;@a#Zayja6%whTn=YBHV=GNgu>dJoc_Z zEytADlwU%NynsmQ`}Ls%@)yIRR-{0R3wPC5bEtnJGib#v23X zsrZkV*$pktr>;t|Pb~=WnNx)2WB7AMs?q|}k)DK#Lv@j^2q`ZTnmp(DgtQigD)e`*Pj0rtxZc`cHB zq>Axy5EZ?ZsX<&7XM~!OP0qwY9?*%iXUs|v)2%v`o)Vx&D0wZaI#8vlDQ=SjDYY)tm9fv@+{8PPAo(5^?Kodo_rug9uAuc+VDcpH@AP?S$g?3@t z{u=VKRkY+DD`W{T$!q@oz*dBnD>xYR9+bY;(p{3b78S84etKkkR=V}~MPRV8Btsl=hi5|7ad&xl4r%>g<((1x64Cx8p3JwBiF(v7wk9PuF` zASJZnE6#IU($mdv@wOIFI7r}{%H7T`NQK0{O}AP^cG^l9UNXJ8EB2wM-et{{BS%C!uEImSHfE#(pa z0LB%8{Hf##E4d#PZKahfJCnN~)}<{^Ga^`VrIM8q$4pb#tjI)^$}Xs_&y}#Vfl_$@ zjfjlyO4P#a#CURAmfOm0pnT!AV4rhM1cXSAJSk2nk;)Gv_pMFZ#F-8}WU`cac}g4r zg=4M-0I5O9!RF8qTO=(B-~uW~_|hZLCOToCidTa#!9oDX>5L!VoU<8j+Fg$wP87!+ z1JPA4X^>>dK+e|`dS|Uag*{?w+eYLyovIn*ts&g0fZCI)c_?{EUx?l~#wr(3>D!CfUx>4|rLCeucARluuZxot4V}$X zYygw#M5MUN9c4g}G7khFrD^bH%D9FbhW5-9?@~w^_cUwBo-Qeoa6TK2k1}(fl=9)O z2(rczpsgjB0e5P8fnJT!j~=8LncWk1hQclvDbRihkQA1k%F~|89jnr?#%w{k$032{{{SfU6s1>5@#P{sD}v*+vI0<# znM2r9D^8u%H*1WGpl(_i3G(>9P_d5wy?>Q0@`X0WFCUK2aEW#ZGN48l`^%FgJdm6$ zr8!nUnE+IM>q^Yi*9OyjwkZue=1bAmSD$lDg|g{rxUNB3V=V)ff>blt`%vtDD9&`r zw_e{8x}k-oyaD&cHFIim8tNrWf-TjhI>eN)dJ>X8oYw37%Y$S*+ht9w%jV~gO1jfB z?RRS*V9+E{5Sajys+%#`(7duQJjjYYtWKwr3$1i13& zGXX3+1qvi7#GX`Y!gifSo(iSSW%(>5WiLI>2Wsc~SPPb*j~-*DC|jG0t|uFDU1lS# zNx6$3$F6KWxmk5tNWkGBcQo9%f{{>j0*$H97`aV>I!x#`mtM%iQ?&D*m_PHqH-%@_ z*NaG)Z2lZ&WmtJw$of?zN13(XW?GV^tvLm~qm+G5PT$U|qAFYQqeW)qqSB5DQOHR5 z{#BuXTQN_R+~Tt>)1WCu*eSvEU&}zX@gW=BXaw>B0=oYI;vSN@L$|K$7@|up1Mvv} zfK;X6^&P7-=4${5wa3e|AL}+Q)2=q# z#+!um>5_uetb`xZ$ONfh@9R=mn3w+01WjbJ!ly*Awnm~}_a!npAO?deSQ4dOYN;y?~=S1Jb_pGujyz=-KCqDx!X z{0}3P`{%HvGZ$N&x6g@<9J$E7DcCVAkRv#7q`Vu;qz;5)g`K9a?>dG?pgs{`CzPy(~8ONYK&q~Z$2tLuy zv@At7S(=OEBt(sQawCX67;8JenCna?2%{=?WU1F8N5pu;ray$^t!TN&nDmw&hPB(@ zLU3PbWBK~l%VnZso$;-bADHrv7Po*YLGMIZ*{I45LN_m3Co9w|~O}@lb5S^(QE*^kxKfOv!wobMW7C=(oO1CL(oylza*RU?r9-I?* zxX6}}oVSMZl#F8-_4lB6W*eROmC%i@7CW5fqU9zmNlms&c1e^}rJqBNfO}N*q{E1% z{{Z-^cuCv}O@wA1?`6|n4xW4Jy$SG|2 zP4vz^PIHeyYJHtKWK;;LMV?&rC0S_>Ispwj;g3(V?!cW^3 zW)=vyImxJ9>J^SafUP`;d*n1rn^FeFclQbFkEJM?Yr#P9Xc+LIDv+vdCm z;*^d;4`G_>dd@A6PfC+&wm&X3WH4JH4rMEFo&om%08G#yhmAI$!lV`!BFRFE!khWS zx#OCZop{tCc$ZkK7lI?*BH(C{UzT91tEi8DcNNFFW zF_E0-jt3;xQ>{U{rK@cDZ_8RhZN}RuWh&{opW#Y-(6MyA>2oDYo2kvV(hd^zVU)a| zL=_B@eLbjseJbN@Onp5X^rp}>jrr-9hoUoPcF7Sh0%JUIr8&kAsU%?j^i`); zOwp2Y_>O*iyT;p#0k7@%MI}Oy^$S>Q>1BA55OZBle@j zqR%au;M|*CLG?p7`N}s7ijY|xH0y(AK;gxr z{-%o6^A$A>uw7YY3grOyrSa5M5{L*XQa(kKjhug4XU#{TAV#-alebH&_YGXP)Z1!O zgb3-R(luHm#EcSu&XTscpEQBTbxbM;%qj9Q)TPaWfdXM|imJ z>nH`h;pC3yy1tM6O-6~kNSf0sb`$M^y<~1A59v)zyiVY>6JFZ1MS^0Xw#1d(ptMp* zZ)$gs;~44*2d`{Y-krBO641rY;c`pi+_ z_I4zX2@H%Kr@niA1z{QM#--F^$EQSi(dDc(=t$a}ah&6}c>3ar*f|q0ic@e0;!b{7 zj{-H);L^DZb(L}l^T$q=q04+GG@JJa+j2a|WO!}1h~ze+GoL?m#da-AHuNXE2sn#) zvq$iz{0jt;%4mZEeH;QR~)&A}AV+Kr&DtAU6#~ zF&b^lQ^-__FLC3q%ut+gkUI{Qwq?H2X|=(UxEY$_a|`uNr0e&neeu zLPUk(D^Ad*qdWir?^x-}0l8`=!)jyF9~mww@8JWJ!0KsA0tiDF11KSC#G=Z!S%%`D zak7UTd0Y=H7b(~7 zFQ^2?c%<*oDdV0FYKreF#}?q*wws;7>8>duxU#TQzuiZ*NI-i}&blh?bb5O*6DX=2 zM!ex6N6J*A-`BkntRYNiTSIm((-5f(N|tcjN+*D?wR5Q(m<1kFeeuZxAA>BVQyY?2 z;=nt3J%?dL1?p=~nYlPEV8fUPiuof6K;wbvMHd?VHP-bzuD1eGj>gP{BXTjfvHRwz z5{tqhTccZ&)x~lmC;rvJxNOJI`x;)p!EBvKdn_>Bp@|7YtR-Y-B^`q_;+H-PwK7I zf|RUh0B5(a(zVC5%$XSod9BD^6UR6Pmuh<&t@kuqA zgagFQnz`lvgp{pQmZagN;3XdW6WDrIn@*P06CoMWqeW>%fYVRD5TjI@Yf9Ya+}6Z) z5jJ{Lkm|wk8Bb+rJP-INZ^TxhXw|b4_jPLTI|P)lau`;AQayV1997GOO7lIyeAzUj zX|+d}Wm~DgPnOG!G+YT$3qe<4oOb^JN?9*aLbyiE+ggK#JA7m>&7WKv2H&XTrW?{E z+pZF$r9ISA2cX=0cf~phY6@~*iQ~RqtB`LCccAayj%mO-EO!%wC8j2$Vx#yv)2?We5qhiJ@*LKw>ymM zi>_SO#5am?nC-X}pr21_muf5QwBwf2lxNJR90aWTf$2)-+2*lzTse+C8*+<}%X#l1?@WgIQvUS%`l%CbO}<`SsRiKMY@UsPdsh34 z_Xv^qx+A}q!ZtX9q__0#n!q}Z)j%~#q3k#%cgJ59KTKT+=yUP7bMHDbG6gHuja*+LDyz%UfsT&(x~xa9iR0)s|S zPZ`D20zd)z($Ldgww$c}1$7M(1*^4)J{^#_&_O6iiRJr>BIBU+&B}9-Z8OBXni522 z*6zfs)T_`62TSQqVPl&0wp3Neg8EO3A+x;%dgOo3v^g*a9F)y$h(rk%=vs#Qsd8ew zA{#1DQ%E~g)c5UKU+&iXJO^xAPBPeLM>3Y@1=SwI&r`tc>HOVh!c=(NlJeA5!0E*jVk#=duujnYJN)NhIrbAV7vA8=A)&}nKomNAxeza zct}<TDpLJ?y@2(t z#*48R%X^!&jm`Mb+=z*ThOkxz6;v26OXD+Q{Y0tF~EmsBC zMx_P9!En>JMB++jG!ldK+3T`}z(q+m(+)1G9Z(Z*b5|tsVbbNeAIdGGVApmtJ{c4W; zZ;x%2Eq7?Bv`1|TZJ0@X7o5&HSEu{brKeZRvtC`5ZMP;mo>0eN2p9_)?nY1EwfOE| z^+Kgxry&KwmmN~_DMSz(QHn`zPJuf^SS0L`!y3Lh`tgCQFkl6+KtLTt>f!v(&^{6dQn{l;> zF$~iC{DOi)HjcZ`a%&Dc_4^MQ*CQvdcUV^V??<)Dar}?fc|!;X(Ie|q5Fd6(a%8t1 zapG_mvy`NJR&KQY+UUiy6Dvqku#~9saqI0??&RZh;(8^}qDtNx`Hx)x04mpgk2>rW@ID)A`BS$i1KXe!aESXmWKD>s3XV`682i-LzQ4|n z&%oQt*-Obgp5zh-r?ncny+|y(i-l+xVy0!<;Ol{*6|#ohUn(j;?Nc_p3-?(PC%$ZmT!0gk!2^uftD37!1Wk50c2mvy2K;Oo&S+7{WBz5? zb^@$A>|tp*A#;-Cg(zi+?XLkx(L{A0N>gvMUv)#jo!w&1W-$K%1USh`N__{gqHGW@ zHzt_WH(2f%jVO3QNx)WpJ*w9AewgD(j+fn2YQj>4B%FN!=~iPmi)m1DjC78v*j2Oj5QX@N;2Yhf~=AI(Dp~69|}9| zcucl};@mw4+K#w2#Wu$%xwtZ?sZbi)rkHPgiCVZ6rpY-mZ%HahPTmH7P;*a`{0EtJ zHkry?$tufez(sD@$f@oab)N(hemHL82Io9(fF<$i zKK}mzZ(0f!(%AF_N4zd#nMP2{41hQK0($<`smtu!^rS~rg{~Vo2|^L&K>q;50oJW8 z)+n+diC!6PhLx7fq$O%2xE-rq`HlRF$Z0nlLDDxHoOa^Dj>U!|P!;F%5Dz|M-CZ;3 zQu?b%J7|=&y{cf%SMZ^!vxn+7oZ3O^)8!Ko5pNPYSFZL|{OOdN63m37b1(HaU{5g-H>-gyW)Aw=>$Gh0or z9J|`>%sPK9ikv#2ukjWBpX*;hdw5iIG?ak7sX{;<@IRG59uU)bfjSkc_{^2~Ok1PE zXTH(T^Q~8O#hA~A;|P7V9uT9}wb?Yhl*3f(q=w@%lfyveO8)?y(-xS9x7$Q^-Q1E0 zDja{cFt8UqlIYEC#EhC6kx zzxaziX@w!Bxs|#|z*cww_pT_DC9@^?%?<7ypapY^1qCtL`!4ZzZfTz}$dR_O;q52P zqt!UBv-mFs15BZ4Q8Juxxb9MM&rW(*9ya-MWk-zgLq+$H-okmoJlE+s65eJUdwWJ3 z7T9PFg-35HR?*2mrlfGCfc~RAmY@X2?9*$vJcVazNec2D6X+|GTazzN>M#3)HP_}$_??mhoI@%901X6xGCgW*P{21JL}i%&I0nvE?}5p&pv z0+f=I&q`aX6%}taXJyULY%WOHt=LHHao>?#`c&JaDpYq2mYYY+8wDTEu(Au=Maj@@ za*~(xxoPu~JM&r`;}m0pR^u%dW)m=|g1j1~|vpjMquhabqz72@=rz_9y;Q-N>RUn(7L=bQifBgjI}RJ5!CUsmZe%TKAiDN9exmQYAfu{HHk`nUH7@&-O) zGIZ6k>G9&e^ev%DY2^}(AM0O0x?3j0D^`+(?~9zMzD5Vr`&2cPQtGRnxJ0zx;mL83 z5+g_{2~vA?s*N#rx~B4|7pM^4HXFC1i!3r|DU0d92^{3S}WGgv@l|q-+6M&pdsrW9kgFl=x{| znCh{~uS*Ewj8CQT(54}9cNS6$fhur+&q}njF>8LxZeR68s1r(YmR=hZ>_to3rs?%O zxYu_dV6C+wq%wYTYEhV)Rja#}xmO9XRyjhDG8TRP>U{1>@e|Jf0LV8Z#$F=f4dpco z=%;5%@lIbL?NUL<1k-&(X}33PGc3=j7Y-7}GD-HRSyxCdS_Oh|kmeVLA8X33zUQ?v zvBrG9Bim-ZacHM40Cy-6-;S81jIG24ldeLbe~7vTqTzMEhORL_8wwjsxI&NKs_x2q z+cp)p^CAl{*;-VbdG>+FD({+mY7E_>{{Y>{<}$XqA8s9ACy!Ix_Mr6^pVD^&;;czw z$4Rec9nJmW21@QQ}@kc_4)X>0}}Udd4`Yp5*SY8xH|)mmDKKPx?CFA zr(6Iad9lFssfqTLM2Y_Zd2nMVCm|gvt^^^eDK2xd0h1mhvXGILV~wNRJ?IFZi}pCA z#8fHCMtK50R8RM+W}&WJH(rMs4~BA8xqe=}arCYBHeomt^}-x@3v+}$@PLNL{ycJi zwaTEuW-Mw*r|}lcDfKEuDG>SKIUPwjt+F*mg6i;M*jDLp<}HAde#e^V@!YqvRJlw> zy2na#mmZ1&kI-ZO3Q2voXq)O(^}5oC@`7*|82D#C_^xzNCIV#Lrd79bG8D8VpD_c@ zJ+V}+PGL-l(Pbh+7xE9{A5l<@Xy;?xlO@}+4540hEkvvjW8Be~eK`1*)Z1OgOcbx6 zX-O(0)aH@w8oo-`7-X^BZGX3q%vlI);U94r1xn-VSU+yKY50F0>(L(o?kXz_B8HD) zi#6p$zuoT=r0vQ=2tfOq^Zu2OZFNX2Dr*mnC9x}dkJp?7#RnZ~Zvp@p1TWg}4=QVo z0HA+`!c+eM@QNvLqe4S-6xz#YvIkH3?L)g_w8cx0Cg5!)vArxS3h_^;wQP@cxLjB& zN}~RnLSwX)Bj)yI+cp*L#KnHq;F`ApO-5g*k)vdX0lbwo4!1e>RXEkMK;sa#?!;plIp4GVp zjw7hDfVSb5X6*3YRN$A1T1Sxaf&SE7D@yJc2kuVGnB!<8Vl#}7LH#LQK&eCE)G)r@ zrl{?HGHqK6sme!X;G~agoyLhXa#h^jE(CeEDE9d&afaN&M?WteR8MMMdxdAT+`lZf z%J{lJowD6s!lTKFwQ2d4fuG)rdRpG! z8L0?c4)d{nN8HsG6>1j?F^t)WlK19Ih_K7Yc}kBJG~&U!mF_KtpCfIn7!<^P=^Tx1dg zaseZ0q_gEb>t-WNkhSr*s86||Q*mZG8ip3PR#XzD9+~#0ep=LXV$}&x71pGcIyC{9tS z>5Cnxt_aRN@LwrIo&K~mCAiawZRHOU)nNJo=}(bldOjVMIvf->oVckjVB_ga7XFw_ z;$6AOp0ExCMsS?;`H%eOiuY4MV+yy%eW#r)DQb>Ym82((Q%Q&lks)R9fT70W!$X{6 zwLrQ&h4@hzO9|VJncSj}b6&X}=N&F7mwp;TId?n+{{Zfg#FiB($NVY{ZiwtC>bj-G zJ`}7VAmefW0GX}#xhY1*LPivjR(%QWTD~?jPZ-RkEv6bc`uft@3M+(ywJ12X4Y{V} zH`JBD5D8YYt7O}X9&k!wz?Pax&xk&h>eq9Y&YnbxF_Mx-#ihZM&$Sb2M}XLp*g$h9 zg$(9}yGTLEQqD=rla4AJnFwws0+3g8cf-ewrtp-7CZGxid{WX9oL$c$p z-{KXe4!6)}lTNVI-8|f%DwVf50~w*p-m!UJ$Ui5cO(mw*$R)tOr1Degnl9rFwqm^V zNo`1YZmHuT5!x*)deE+T86uk79bV?)1gQ#jKqN1b%}J4IY(y0wVLEk!g|{(m1eEmz za6KxG^)%E4x~5ULJIUxr(;aGZY?Z`u_^vFdFmdcpr4a(`(&8x+TiyW9H*}~xhGW!I z0@17+!Jj29DB+?xByH|HQF_UDC^m11v4+znVD1~Uib`B<(8K9y7Xq@PoRN=uqJbeh zJbx>QJ+|ZuQnwN&Bk(pSG}A5ICq;dCr@A zxU^ve`u^O}v+WNb8WN=!P=UgbMhDW8E<3WXQ5wCv+*CS$Rcwu+1JjDAki-i_fQXki z97CgO66*IHR^(!pF@XnCMT>~CPiAY(d_ZIrq!X2WYVJScyE81G1v)H-zyv43AI$#r znns&;CGoG!9M^}`{Nk~_24}NNF{u=oz4fQ<_ zAImtw5zX>+X+h;cxbAs`g5+froO4N8Zr3S|?=rQmV=W{jq4lLVRZEL9TkDRNWvuOU zxa-II)gFzVHE%KmFBmm|rF2RvycmM5o}`R;j!{E;X^WJU#gOWooDSqNw3O`wkaIz5 zyM_K!scq|f1ZzCQ4qB}|m?PQ`Wf;8o_BwzD$Q!kClcO5O7V%1^CHF&X*Z z6L87guPRa%-_o5$wB79QDH7d6N^!X;SIbSvb#dN61vlJhcFl@nWU51w5S5P{=ammi ztFz08sG+V!l39qngW#NC;-aoBN|fFmPmIau2|R)8NLrHhy-JS}OKo8F91~OVsoExJ120p{AfJo@H#=%&-p0~MH+aqc%4sG}lWaWQ1AHu;GtBhR&5 zP|Usx$#4v38P6YF*G$)I)57C!v?kV=laRD2z=pz5>tm=V-!$dzA!E8)7?-EmDvq@Q zA-wH7c-&HbaC2UUH&*sCk&uyc&+yYq-5~xQKEv+DeV0O>it8)gjO5_`>JseDt5vjP zzJ}YnMNrEsNVmzwTL;g%(DCr%_CG#p6j#mj*&32$EeJ zqRxoOA!q!m$M4UjGbJ|X2O(}p{uJozwbJ8vTbCB?lUiuB#7CPUr`yK_efs(wQkz^C zG}MDZz5R1oX~@yp6RON!P0uq~FX|F_1fpfGjEz%26?xDl60QB`9-|s}-Ub(dyag!b!Fv;Oj(tJgI zPkP^DxoJX}-wAKHBVYx`-)EH**Kz*}g}Y1{w<%l`CEnG8QQxzow;+ezNij|6@C(i`N2q4%3+I$A%(RCAxLQd%u2 zyjq$up4jqR2MgdIU+2X{4Udu;cdodvZ}BNA({&RCCySQdv=enGx3H zGMCDVdGEQR`! znquQQG$FU44GOwUyt3eg>rz~83*jzcWc|IfR9aP6lqF5Y4nb;J30t8#&(f5)spm_8 z6E5EsmQX@`aH6+A`)0oJC)*hD*wjyw^1yAdk%sbnANkU>p<5LUk;9V4`ij|ZX-=^9 z&gbzUaDub6pMEGg5Uj0Qo3^nn*RBp7(p=nl!(laeCy3cCgR^ zJIAguoO9lg&eOIC4ysMtRo){umh-uw0b0E}deR%3Y6{r}iHtQhlHF*s8I4N0w6c&A zfcZ&Yd*iM@)|cr=3s#i|B_!NmP&-^}#3=)iGJ19XR17;?OIuDSQ(Wc0Amz5yuM@&S zQV8Qd!#~th zm~f;=gxiYnVkrZb+(9cN&>vou(7oItkOS7Dw$kJm3sME|zZX9z6Y(s0{kbPlVq9sZQV$AxnXUovL-wN zraXbQqE98U{Igr--)(ww;KrV`+wJooc}Z01k^ow_apmW(YA}7Q%}_8XuHcuOjqPQ- z)YqfFA-1KWGfCXbTy-9R41iCqN9n7S2c%5Y+N|w%V9a*PO1z|!KYnV*Tu#4Vt}W>c zJ(Z?I$q!HX5(<*mcu73~JXB`1l?E2*j>c0`#@3jOk+>ipFnvg@Y<4Yv$(u7jtk(Xg zjEl@$>ez8CK_x9lQgmPa@l?yhMQwrRz<@#Kdg zl#dbM6cnI44{AduCDvrX&9i&alC7a!ZYt09rzRqwWmxfnL>anVLn?1dSI`W)((UqrYPCdTeE87jSQtwb~a^@R+hh5yTc)%XM^xs!S zZ5qKbAr#AQBYjG@1uNY49<)RM0JP0)j2tY1m*PKiWy1F8;Xo;}Ps{21;;tKPR-rI83dds>)Y*BIw@^wRVg9H0@RJp zyVJuyfS;+QI(o-0$bK2?d(F&!JKb@^#?+p~eBAL>*5P5fX*JuPWec9;rAkTXYJukE5wkcC=rYvc_h@5ZX!EjyD~R4RD4&ql&2(~ zgTMRJn~mpL*j-v|7JFN^!~&H+@SB0-7zg@&>pP2G!W= z7Fa@JMqBaHJkGx0^A33-IHPpb=unY4l-gOkzb!yDCU=od3}Yz=oSsb=3#*OD;&~SD zcb#vGrkRGO*OI5+WrAPEeCko`I-k8~bwIPnTQ>XJS0!M9xj?ws?lzCx??%jh)m_C&wK01qtMV(Fus zep4{ut}23Fkl_7CR5`%UPQQFpOY>}8S8PKiE$QgxNmJyExQE3s-tUMaXz*+R^$GuQ9W{0D14t`zmF&S_r9uw;z z91odZ-9GeH>R8Ndl(#=V&$*^W(sWpoQKoHD9!h=+Lu4sQ01T7YzIxN`HL5OFWKUhT zdLDK17>w~yJ6j!gkJ_le5G^gk(F=m#}9M96!Y>J$?-!nfV7^I}7~$zxAMagwt1m4tYyPC4hPB#-A> z8<}E-E?IfkF9-nCKr6q3>cc5zLu1Jq!nioc8LV}+k~0%-P^D_7mQvVmKg1*A7LkrZ zdk(n&0D6VfcH6C{LRu0`q_{Ac?6s9++*X?7#%@clODuHn;xtLuGM1fVdXvZm;~Uww{vKLbD^SeoO<~Y|a%)zr zZs{CbqtA7wd_|O_;oJ)8{8-L^dWqGsWw3P(SD60*FwG;Xbp@X1F4)wC6iIO)FizDh z5JCc#)Bp+2DvMboN&X)=_N3O+?b7cHXsQ*qDm+w$f90O1JxTZWu0=iPp1in3mjlfx z0KDx`KkGzkYZjBd-=tl2ZQ@fXir!jilH%QSjtD(~1NW=EY=nbwn1E=+7Yl}?*Haz1 zPE&TPN{Lf(+d)cJJwkms$KJYzgVWa5ZH>JjNj-64lz{7uC(MF<`=6x?d$_`v0u(kP zFw})BD|IN^5|Nx^_O1G7RNkz%>6Yt6l7Qh-)t-p=9_E4EE7*z13CB{>_jF?Cq!nyt z&gX#8!G1viM;&mJ-2VW*a}-;PZ}@~EO%-_%dLOT~S;o?~xSDAbZ#Sv;32FiFf@#gH zG*9`xdQy#L4$*4T0{1=jyoVKtaME_E)f2!S@k|WNun~auie^0Ai+jwj^(qpTV*Vv3dvG?9D34_0bs^9Ps`**YWVlvNRe_6!3Sy(kOGyDKtH`3{{U+Z zQkimP*@bYXd&-sU~9UoO&8?!fRi(!Pd#!5q%1_<#mJNo95TyBsh+*Kx0oq8(J z5V8}6pSP_sFs)dVJ(swG=@nYGT;`EFG(#1ky-&G?D?Ner;<+mYR*S%SfHNJ;6nc#J z#b4d*QQy8gZSOfAF(u4Ce8gj%)W)oq)y_*XZSa|G5mDi-O>ka430L1HwBz;mmEblg z%4Odza#%MA@!F2_+fs<=IUt_mjf*z-r*6%)E&^Fu0c&keXBp^go7&*`H#`-VJNTH+ z!&MGGjfslw)LdV4l{&NMk5Brgph=uaYxvw=P*>7&}IB#TqkMxs0j~ zr;pj;qDp*CNc+XHlr-8lTT3elX}{!{HEY?$rAQ$rJ_1aMtwkevDwJ6A--`Sh3)r#{0=M+~(1#y*(q zP4sk2mX^?L_^D_$aY$Q={v?t!f$C4CY>8{rGUFn2%aoCLanCGvSIQDI)O{&x^$>l@ zF(r>g+O3I2&gCWcWIW(Y5mw+|8Rbep&ad_Sy*logk7~C~i7G;tpAiWGI0Kbrj)J4z zji_%|XHy2qw*r7_GTmO(w1ND19Ax{`T|K2=v|mIU$K_51ezcN>XKH`SNj*+_dsgJi z>~0<+4%%qHu!eM^FKt;ru_TMo4?MhOhEym7pzIQn*}yJm~J+(MsB*o`)lcV)m8 zkM*ZBbSmRRZcEZ1LO}9wBM008)~OiHNLH@qXHkBT+VbP5oR-qRE`FZ1x)UkXGZPH} zy7oN9&O(0mEasZMNs_iKalbHiBXaiS?H;Gnhqhg2SYKLXN0Q8(VSaoMerVV@TN8_X z9m|WJhML@z#IJp2gK164nP#hxlHL-@NV=nH+ z(tH%pZKjw<3Mjx)9<;ksKVePfZQ6?3h7va|O5Af(X^_J!@s@m5f0XmZ6BWpk)EI6m zf|f#0ht!kPir-*qx`Y>q)ULDKSyB*%6s3f7lhIz^dhAxe#&<2Y1o)O_qoJ{c1p4*J zPio{*V+%BN1+>J8P4bpi$VdMGW9#cn?pNhMFgG!_kf1P14m0iaq`FxJenR}0C-Ri~ zk6XaKJZ`sG(_ap&acQLTNZ@^_3x2hL9WF|RAu!oN2xY``lhZV@U#O0xu{{U*U)1z4G zM*`;jNZJy;ndk;Obg9iFW}ADGw-CfOpF!MERfHst-(UBthV=}q8>%v)#gOtq zN;bMlMm;e~QdpLgXUqAw`G8#5k88Qhw5^E}R*n<7Ip4=qiZ@QopJ%qMi1#L=c$reR zpk(`Gid?JZ##Px)#fq^edBR(8ZO6FH9Mqd^cT~jLaXuv=rA?_^=eZTRSO(mk+4Uzi z1?uT4NGXuHs|N@KXC{}t-07}3i>zl5>Nrt3AsOkDru&P@`68!UX+@3{`}Z# z*J`+>w1crLP5@9nPxGpc0};z*(MoT`Tdy`jbsbmJD)t{*V%W#I=AD9Lo93EaHj>+x zkt%z@xgkusxko&ZpKtW8e-(ow?(`?2t){`l%Rj(7CyxC`+Ny8bqHH^Z@T`e>$6HAb zNh=HRw|WzvNT+{?`c~I*v^uNJ{mW7t8{aqps2+2;^GEv!AReF#3n3M4fXp9-YC2;h zcP^u-1K+hs&C|x_7dkcBgh3AMZME|2-lPt~sda)IxLy@))3*r^T8o|=Zac!C$5Wq9 zDc#`_pfL{6n=?_=3PF@IO8tMGTESGp4pc?DS_14%s4g2|FM-c*tr>cSa=t4u+;M~_ zl%*~1C+K=oy+v|Rx~-^9xLQsUgsVL9$^QQUdUtP-^YL0`>C#wej1;t>l55TepM6fr zWCCJ;fz`Hn=~K4{V>0gu*!P`7+ztmyA{<*!#x|?Iv<^Di-sCo85`5j1tn=1`)Dj}v z9euc}lR0V_Z^c<9M31c(_-kyqMu{>@7E67?V(_OOl5^pYL0jY^;~bV_U{JRy6!DIU zZosw6bV^9tmyv|vblRW4T9=vmgs_#p@d%vX3K=0OA4++3*Lsc1Zj7bEF}M!@07|_cme=ei zQoYWO%O&eM4M=g+HglEp`%%%y!bEk}h}g7w$sTH1XLs`0Wd-%P(clt}D_*43Nw?W# zET<`23PQiqqx~6LzqvSKOyvIniL=n;xdJn#wwXy7&r*BWI)^310)!z>W0fopY2Kre z<0meaWyNHZ{Hk#UO_lACq&1Fx>g>cC6WG9%qEvnzA-Vd^r=}%RTaT3}6Y{H!e|qom zA))rR#0q7V4EqD>YoCAmzv%mg#>o8mq8m;rUL%f5JS7BWKYV{m=x|&tpylKdl9Az` zDzWKM9A%Wao`00&y?m0IuTmo2B*kvx+?R@QcB6#jw@RLCU0or!`YhX<1ESu}ey25e zcY~+gQ?E+0HvENfkO>=)(08e~G|O;bO~>*pYp83^BFw=D>)x-zsLQCkAjy07wwHQ+ zn9|}kHAj_*jUGo~pGtLZxm_SM9c8b}8c@%M;`6}vqGP{!gv6O=M!}3F9Pf^HCj*QR zLB&Je=G^Z$Q5A@;E<%r%J1Q$bQb$2u#aM1Uw^G){ewO;@7>aG_Pb&uv1z=~Kao?>o zjxH)dYEH}}q5%U0`uD9`azU|J*|l5kN8{f4+#rRMj((W0USebg3zhAaA{%*Ig$@nM z0)Cz39o{xQ$pig8tH;M}xi$grDpSmT+pLp1RA!iTk0?eucF+9vrO!Dz%%}8& zWas|?FW!$*d_;MYTS(|d2jZormmWS|zQ7Lj@<1D&{!c{I26vv;{vp1(NdEu<*4fWL zT19k2X}3pmQ!d4xckj@ZPAUuO^!ePaSnIp?t)b+Ghig7oRSCgr}|q{=}l7ExJ7+19$(CfY9D+Ky=i@? zL$=dOZ8sRLC14dNemDI^Hiv1`7Fi8HaE!x8IVCAcE64s-caEr9iIw=^9MFrts{1CT?2V{I*g?l#>~y5IoP0ezm3hmY|&o z26W}RVpK3vCj_W{M_SH4p^2*X8hsY!Eo zK3Mi9o`%yE2)Ziw~EjxVa3|;QF*n3h^ zl)5m#Po_Hm04kNeTC~-wa^~5!)2%wC6&UTHEUfp(wJVW24ck%3xZ#)bcncXx8PD3N zZ6?}V{K=**QJu~b=Y)_?&|{@&vpS+Ht?Nye+jv~AEvNqgm1Tu_k8*tlTYetuFT$5C z4!3!ZZW6}rvhYAq?SZ?>YeUMoLyV~kX5BZ$B`$QY#$|P>ja(BeaF-tOI`__cikN&eZCRWl$d0}Hw(Q9Dz#qz=X-#iyhT4;6Qlr>?P+@l+E)Oy$BHkXH_-M2x7Evt*I z2FeRLAmgc5dRcCXVZG>?Eoum&WVua~9rAMHI2>-zrE_b8GUG{F)Z`P!&v+b=P^ zTX8VwwBmBTpd~{-{b_~r4AE$8wwDM&8C44G!L#I!Ah!$WVcl=3$dP|~CP8_DrW2R$)eCnElTFbE1?bRi^!P^R8p zTBNdu7N(Dx4vw{6ETn%arR$jY&pBJIHvQ}4SUKI zcOaenQ-Enif|KV?%NJP4F(I*a$HF1#&Bt3s+tWi*zM$~TTyb3`(a7yLFF`kj&Yk5y!2*J z@EB3&Bzn|cfe$x5xKhHK1e_&Dj8!sZGZ%AUo=yjwr! zk}~1b1)a-f7>Js?#4G`)7#RwUfgaf8&iNO!jMpa zcqH~G(v_Jh3Pg8aQ<7GKwWl6bk3r}K8Uk*hrS@e6NlB06E;E1PHc(0Ek^cY%K8Kbq zu^D~W7N^?*XjTAE(xR=hRP$}L*7XM#5DG^pJ!-1y=eV@ie()dR1{C$_P@)8SCpz*-P%Mg*S$k@~D~( z=>Gr@D2Gnr*pAgPTWg+s>KNQsWrmW|Y$TK&%24U`rZ%@3ZX>XRh;b?Tc8(9dPsMD& zarKqD5bq@CJXUr&jY*QG8B)@|Nd*K71jo+A)lPab(jlSsxRkHL+BYe9`Ms+P70D9r z>^2HkVsX5u2RW^<9#c%YyLRA{fIFIywak%jy-P#j_>L$j5z`-Pja0KT#qqlm(_Ff? zwm5{0NM3jpk}A@LsY+6kqHscm7jgKDq*!kxth62SsYd|fmq=TZE^>>`h8oTrQimK; zlOL@ZAx%`HvCY_rnF}SgoblJ~Ol|Tu$HAJUczFe|M;}^^jPudl1u6>IdZ6cby;9py z#FiX$;FQ{mNK>TsC)%aYhy!tX@dY}S_G!pnvVs)pei{bR zz)1t#`q#DPr|hAW&r1$;QDjW@EPJ^_auF%#nuy|DLP`BIimQ+KixTG*n90-csVPnu zCvXEe#zjY}-Exek+KjnZ1-_lBVJgab9@MHvmei07igGl@8EkG+7v=ikedxlP)R%`L zaohH5WyeyPS6AGPZdg7lkZ?k?#!sd*OfGPvTANIJONDVqEvWO6>U)}zMd5|noMGl) z_-yS_-R1}W3Zb&0*|t^}8sLYdIB?ra87Kp%9lrHJQpgr#Ew1Lq?^o5Ol*zk^QJOhZ zMZKv={{ULisU%sht$_e65I^ov70~-vw92)Rn{{h z)>?4kv(E$9xio-T>*s%v@Z}_ZMlpC54O? zB#=qS#%M=vOkJmmj!QAwKQL%>{OH#|BbowVmRgWNBsdS5J+bxv)J%qBu?f||BsPTQ z8@VL<;*9~lO}-;grl7~MM=wWh-I54Nb-q-bo-{o2}&1-F$&P6bU6Cv#IkTaBe{{TwNn7K4Dj8`k%<{FOMsP(?0 z4cYC8F0hXYYViVgk6iZYU6RSC^*qfbYl{!z?K5Cu5*ku)9>Bpnhth%2P<{haE@Iqi zxXz8QwBmNF>+e*TYotcpe6<=rw7$dw!d7*rw#`zp3H^`Zpnzf8srQe>$Vn+LBb8Yx1B>k8+65D`nLA$EX;p zxsvS{dm}R)i4*l(02dS!w~qext(9t~t&t$)LxX!}b=?!?O?Ep$EdT>(LH7Q?OxBoL zkKwBIa$kZlT6!_@PINARzJ)49FC6*~`QMi_;O=?W5OXLi)tw>aD3Jdol-iU(W@S$w+QIOlY-q)2aar!7 zI~>t+BN-Zb`Bv0zb|Q*AHG`kqv7YX`f zixtgI!`hNj18UqrSY&!_>7TW8n>?*~3V(xZg6oM{^CT+(=BRFZdr(|pW$PJX&~jL5 zd(=;@4>ra%0a%kpRKNJI_;U0$!WvoCC!f&xFpz3RI)_P5xQP&SYq6S)bB~I^QON3& zXehA6c>*oY1MEDrhWuo0QTkS??RamXGiQ>_M#0+pkW=HI^JCNfXc?J@ai@BzNp61I zE$OeyjO#ASaAkWz4J3BmNbh!3>P<)RY%RlVjtTM7ut6YX3JJN98*R94u0jK<{{Xrv z`L_Bb9;DIMiD|Vw^DyB!#5G{F%ZGES&uk8)^H>X3;r@QH*tu!lGX<-2QOZ-D&dDu} zsW|DMde;Z=(Cb-JE>CKSVGgVGg5&N$PhbxmU;|6FQlZ>mwb`Nx1Ik{O%gtd)ILPb& z06DE!X}ZodQTbiUR8#@_F&RKsGwYAU+qa)--NQ~qR6-MYxPoO&k%>CdfbwS~u7Ri0GW z=CBH#lH)-wx1Ubg?hk6#a;BC!kde84KTTM4)}Xnrbhh1Lz+8h3f#SNQk(>}SfI5Ek zACErmr@1 z1EnHz>7-E0^Bk2L=Q>N7j^IfNZ__J14@~pMXe(8^6#Y>l3`SSOhVa($kVZH-`qsTl zV%%pdNxbA{El^e+kn2r^r+#y=oKWJzSX)J99H^PL!6FU5e5ug2!!aL_@KcCOg-F;s zB%Zr^e$@Son)M~gT8iUqv`V+zQnWN#@(C+EZXom5*X==1auwT7mSXA4HM+|gNoi7; zWGUBAOeFWu^{EN=TWm?MsLq_r4Kfy(=uTIW{(SHN;;BMcp{dxZiJ=R;>j=`U@~m(y zMLLS?@x$soCnq~mo_2smZqfEhc2LU;l8?-ge8*{0TR6^CJ!^m9jlXuJb5~A{9%0$C z6LJ@`9g2o}dm4LlxJzp5ds^O&97|W7NCTdy13crCLy*${0GPtN)JLnW?#jEe{oRQS zN>)iuDqWL9_O|#BaDITjtB2TX_nf7V3~IikoyJC4n(;L+)}(_2~TsM z?_Wc?IE$;7IZ*BLLQ&zc+}47S(a6cb@0@<-hw}<9=W;5Pu+gb?3+azh>x#YqtMB_TxBZHrzFL0e$uzhv}Gj&j1oq2azC9Zx9jwagoAcXwlrvH2_FV_ zmzH`Dp!BBpZEEt8?eoKf6tI#ZwHY6(^17Yp(ur~@S~4{U=$o}ex48Otb*$Oa(%X_7 zc3Vz>geyP5p85Xuo`_Yxz}?pGa@%yA>tQSz1OnRnV0O-N$oHV`8ku+K>6LS7Y)ko& zr5&uTS>Wfm;C}S0{+$|%^A_12Td8f7d`rcVgm81^9myvdt^ElgFUeOU#-sf$Y-&tb z%b}KLM*Vl*Qa6B4n5Umg2IZ(NHbgB;_)Cq(SDm%CfS}TGfDflZMO&`-Ycwg^a@lT= zvU{bcCdyx#7)}U2;~f2I3~eu`VO!W!vs#fo=SX!x=KvnK^yohH(fnrqgN?LZCORH< zHyP_8`6F{}CxR2)J^^xiTXnb;eP4)Mby4 zXd@UsbCJ+jy4zc6_1>eyw7(WTqTI5Sl>@oukk9wJ7QNV!(#)57VnR7eRjG+oW zy3(s9p3y(!?~W-bF}%%(70LGc;){`GsKCGyXG77tlT=*pE=z{ZuqAIL5rn_-6bE#U ziQ=mDebZ31xz0{Sf<@8h3L_&K+5qz_pOp3MT#^m-$db`^5!Buq+Rz~5pW;!+0Ck`) zx67QbiD8IHxJi~mmvEFy8ErYw1a&z6`Jh~kzOW6vVWgLPZrw8LaJIcJ+@}hh!@&qx z9mzQ3=}%eIvb8)mWXEDeNNW8y*kIws@xV?8H7BKDs`+$`+_{%2Hu%h~$q03OBe+2F zr3o1F=K`#BZPCbcQ+bhQdB+&t@M%LH8x17%BiGySNEnKnnCb@LYqMTHDG{2}0uzs& zsB(JBRI}XqzpWdlU_GQ}lPV}|NnTx+$_s@Y^+`QDaqm?t7Ylo+*E+4=%#`{+LN8wj zKQ0HTsj0e;SW01QPli=F(qcqgSzg~#I_>9*c_0fApCzpbyYXXPO=8@(?H31@mq=;0 z^OqJ+L5}8={vGHoT8n%4i^YvgnIs1repA>ir`QwJ@kuZGdh~Uy8@!vPsn=uvtE{qi zhL#RM!RmATvt2cM!tHjB+?lCq<+K7rU=)w0JC5M{P%!@h^_j_(2^T)oZ+0@E+wBu& z>Q@}z7C1;xUNgr}T1^JqF-<=##R>RTcv3f!xwYq~zb7AR>K3_+yup(R2xY6Q$~$MN z&kVLb03WqONVZ+<*Vo|5Y;KZwtf_mDzQt6c4>dug>`%##yPWustUjI1>_H_b zvB9O$G1(XZBUyL5j+fJBY}-A)=WauLoJx+>C(|dnu6uI1{{YulxK~S~Xt!laZrc?j z^rM6PO7}fzom82Z>xwPOyDc`h+zq(S@Q~`k!33VkJ${thf8n+ATpt$EJ_MH8NiGuL z2d6}V+nzp^Ml5y$+?W8Sd>YRHmM+-4Y<(c!0AP7<$t_v=OJ9W42k@%Q;K9+o;V z`Q@65ywV{pf2jgQ{{749pc$a7HNZt6n|WUON+ z1f9OrJ?6^0h1>GSUsRi#5z17q5OLG@&1qsy8E1~ly~wFD9&w^VlF?TrC$?#xnp}A{ z=VE*yRJ{3}BxDatQ+>BwEc2d=J+PIa;DApQJY2N%G6SGC6_q6?k||+pxn6%|u`Z!0 z=*)zM5aW2-5Ti%hCfu!FGtg(ZZ^}qnRuVDwrIF>kIkc_-45JwNywzo)^r@RAZ(Uhs z3P2lGFku5d@Otq}4SJ9=YmtgC`kuuROuK1u^vemvnJGy=BF;Wj)A>{t(qr;jep1?4 zY$%eYbk0Hj&MNcqiVSgZg=@1m^w$b}>WslC9)uD90645Ix@O~hxLY*3tkYVyp&`lA zmd?|-bJzKOs+Pw_<8hFqltC8RaktoG&Yb&fF)Zbhl?~f|pL*S=d>I!hQK8!=Tpd^l zLy5|g->D|LwCyctdQ)#+U_9h#KqfOO9!w6Iu3fD)q^K81;Mr8owmWO`p^qq6){R1y z)L$c)Ms-=1waSMX%f_dT2@%@j8E^$2{XX?L#OQ2IZBW=kRE(7?p>yhMk6bQOuhUZ} zf5piI0UovTiG>&-a5HUdz&ZYW;3Z;k_J+O8$jvg_M-IF{>=kT+asX{I(#Jf z?uCuZIK?cz>I_A(vqJDts`+M zJq07xmr1vq!?NVcRJW3kF7f^vI)TR&7&5y&EC4y>a(L*dFES!Wmi#!XJe6>ztJ~X? zTI2p0TjpyBnsUuKR|zi+$&t}4j`_!@tz~r75?%0$RDe>D5=w{M)BPuLcH3!Kwy36L zg0C7-NGn!)Bzsf;0A4>O3`sO1jam40rgWyIZqI6;GWP0Ix@SU^AK^&%KhRN@?F(j+ zImtI@$bd?JNsNBk{#5Vq`A}D>Ut#!H8A?KcDvsBPvg!W-G4>TntMv8lE-lEG*8+Cs zPf9y*JqNxjrDESCxw0~7NDKGjMUi%2%q*9r8E6}xX?egtf}obi{W;=%Du|o63v_^_ zv`?pEYp1t5BWn?+I2lnpT=4QvJq9|O&s|$=_p2*0EH;@e%>_7X7|L_zQTubv5)qVB zO~agxH0KuA-gerj-g#~W44uk8Z*x(1X=-v}-d;I9)G>YO(v+o=3EhqXq*rZUJuww){GJRHlm7t5&cz>W)-h))OmLMiC_E^4$m2ir)|Hn7 zCjLtCxMi=g=83(y-Q{f)u)Mz^9sdAo?P|TM$!AGs%Wjo9#Nm-4pE>^k$oIgn&B|fu za=ca+q_~s03J1TfUFeN$>oQ0EMIln!92ZE+&#?3#N(v}>e4b~Sh?cne;H!+g%QJN} zwxKQHQioX>Lr6Y@*0fwB=-5%+TsPuOmZ8J%IhP6b38~-2ol?!=^%!y9LjVwu7Xy!_ zEYUUwR>JO%w9%BK`Y2LzMHWz5fe;23;x1Xq_^7rr7%MyU|WCyPkbKY zm<0d?#Y!N^y;%FNwDMN1%2JOc^{jLw7XJW-lKtA+VmvQ^7X$;tGa@6~%N>l?_PY1E|=}2#prOdu2 z9mz_L+)M`6Z&+Sgec`3Q)FLYs+E3JY&CSqK?YfLmaR^#O!BHcZPM_dZqsnCm+ zwfmb-&PA=20UZvsQe^!{rxfnk!&k=8w=Gd4#9$OL9csZ}s*Zk@hOEBZ(`FW?^0~<# z69^!I_4MQ3rLe70B>PyBHn|A9_)-*7(pth&gaCkn?b|hDs;0-fqSpPs661U_f=ZUW zPcwUEhTUnV7ycR&e5pS8s&VBuZawIl z5X+5@D(^^nS2i}hoRW@IPDgIorCOc%T6RkImn0}86fbWXrOz>Vji?zynv&#)3Gf;t z0l}Wx?OQeM`4`ou#U28qd!`HJT%%y6cPwzhb{?~iJI0&@sq1-8n{2}tqEpxZ09EJWZo_vx<{R9bnQVQu_?Klza7tQR zZAD&up7R>hHsuSGK-T!s*w1Ci5%f$9F#s!V$^oaO4}@d<|!Aqi4(%KP!ssUkG> z&eSGbQoy&7pB3fdL{<3mT`U)NaYk&_7XxsN-L<%_#*TsHAH;FqxbCji*6VAlVr*CE zw#mRlX9GUzdGF|INYa9lfAs|Ip;a202tZ%8{*-= zV>e&#DZ0rHCORWD2bCR8C`~zT7u`t$%+i*YpKuozJ0Kr5A(tUbkXDnm1n>tOS7rYI z^>5O`=G>i3G`N0O<>fLnt6xsHt6G#qq7+ft7~aT2|{zn(=^NpNMi`5xm!BayOpcq zSkw*4i?n$*0OCO76fT@BSkUFaPPGCO^M|I&$BMJ;4^Q@`;>mHfyqQJVu?#$l>kV1Nch=rfAaCk_QiAUZzf!4*=BN_ zbt=N2XfLO?(z+I*)$tjYP}FG7FoTS;-cQ>Uz8%Z(_Uy~8-5p*G>&`d{PH>ER3i`Zq*1=gX z%WSNi^slOy@&Gch`0Ke~h)%l!54lD&kyoEHYvUAyO5EzEsq7Fm_14n-JAstz3z}%)iafaivZzp<`<}49uBgoS2L#<-l9Waais9Q>E)j&Y{?Py3cT7w-1Kn(OKF6 z_0RLF7#fu6waK>It?j=V52!X2jzW6&>r!{kPM5FGwwGloF6~ia*1W4c3}Eq&F;h8A zxjL!f5BmwZL1%ly32M=Fg>ba($`>`CItD&m{VJm0bJO!6m~rMj`=A2jO()8NJAiv; zrr6Y$>zq>>CXY?J_O5}TqCWM~N-isQd#s)%<7&wC+uP|@1|noQzYWAZ(_@sluod?mXv(UAaJ!t= z0%OTR4M1W7K*Eruox|=r)-rU;{snU4y&d+3e@$;BW9T~5U0rOrGbOq9E1MBqLWhje zI0{aA7$DOdGIX4!fpfPq?a6BMJeT&Q{ec7dRxb8t8y!XZE$dortF^y6IwmJ2LFe$4 zkEx+U(Id=T4P34Bd!!~pRG)q-!d0_Mt+g_{EJw%~N{eUvb?zy1+IK@d*Mloh#f)); zyvhhxdm7hZTIV4Z6RpWMz-QTnc&}p%327@y9eEk{pqFx1qi@8SK0Jv{e6d0TTR(4F z$KY*tx!wv`X)WZGA;lB9J-E(CYHG_CrxcaOcHbT3`L?A15%Q#XkcM0-Vz2qv&~4( zdATbtWh;`dgdFW2n5kSGnlh|qRM>$rYMT6&IO{Q7M&Z3qE6kkt$9m`z^!?XOz>9ET zI^-3kDI@|L=bRdeo2Rb~MQY&*w{ESdZgb(sE&YDn(?(@pB-_MWmD+m|8yOMOt>{m% z_v`ymW;{><8;tv0&tG4z_nUBn<+TDiPo2~@QW8&oI5o#E5LVl-DV9s2KQi;*-nu>S zSxk>$cGGSTd_K|xvM>~{f2Bs+@8aDZVG3>X_{)iP8-P|jW~aewOHV(~1e;ir!+N~i zRIvt0XlKlVI96!%rQ3|fE@ZbDTKQJRkww693vn*EV(ocZ@Wuj@%{-dKC@m#$V=Cn> ze<~Ew*bmp*obIc$_ITMDP?J(NWLILp@bE*b3+ktOQt>8aS5(uDAxS5K2Q^=DlPPhT zk8qBbT_41b5-MWor<;|yr+6dgNaCmsa*Qq*0W*Unvmq|*z$cv54Z7nMFQul`kQK?r zO2}UH02j_U6bo&wFK!N$eJEQPc+bo>%(~Q8$r4t>tTwIbJP^Dwuphs*}-J!Q4g(WLXfbyR=T4!v3!dld%6(e?fXEih3krqJR&l!8cF1Apx z2qTbj^{D-1*~3b3WjG)lS3|nF@fNkIDN0m~VD#hZQJ1N)CAk*bg&}V&l;?JF^%Qtm zlXEeOHXvk$oc$gAsYyMDVN8nLdKqls z?l~hI(#dFX2->3DeS@n10E_94^)fdAK>HL0gHd&|Ga_$=y~6%@2?u~ZPfy;NN|wY> zmcxi~yx;@;UcTbAd}3ROzXzVhXZVc-mK%@)(4FV5<#(%)k|j8saH&nA;dpHYz@|_K zIpF(Nz#2``S{p!dYevGO=~yZD*-~P%(p0q!xUuW$UOSXF;bkPap|v4Bb5F;vqs7%q zO&bZg44Dq?SYTy5=gfM4df4KUNpz=iS;|j!8amYg$FxR(lm{Pi0dFXum+MO9Pl%Z> zGSbrVj-N8q%2IoQOJ}z;(_D0$k1T9}%gA&kE;x4~Aw!RPS$YYV8^S}FEPTZEBh&f{ z^GX3G;AgwPXl+RVALokPEvhmW7a_J9LdjVvB}dG0fn4eR$XnRW4myS*#ckcK6M`~1 zBDdaSu(<3v02{^>Jt=M0Rk?zhufHwyw6YMN3=a7Hsg=e{FIk#XC|O6%pW@rzr)8zF zAj$w}9pRvhLvOaAPTrJ?&2)YmmY2#(wvfv9^(Lt0DFW0TWw7j39iwu*!za>{-(g6J zW{|kdCG0E|C~`u3(tn9H_6lSxspJcx@j_oDudxTH`d7E2_*-%sj?-WcSD%=B)T~RC zpA{-`DM{~;2^gw`$!=T#%34~KvBAj2C71JlLT~YKWi6!)$4HToFAta6~+f%NwrqL0%zf~*p6VwU;Q)c*XFt@{qD#;-kC*L(9S#tz(=O~)^ zXm&`~24RiBjo^&#=cQAwVx(BwQ*lt)Dcla+XWFCT+~b=Qanz*+q27e`8RDv+o>y)= zQN6&902sz9A0)N!`;%tmO&ArF$X&@OT7pW3NbD)XF0qtU%WF`4D2x-uA-BhnSoom# zhNTZS{zpB9CxZg%D^RJJiBhAsz0SLXgIW28y~UJPH!539H(o`@ZY^L`t791?rf zPO*-~r%=j)9F?dX;j_Rep5L`}1{s!{v^6^MEiy2m0l@4rQX2P9O<=ckjM|@d=>=-p z)FYCAwO`?9B!y!eiGdrKX`N$mu&~UytsyfT&c!&4gpZ-`TQxqY)DPSfaDGazFFuXV zAe;pDz#q<~WVzwCt4U&3s^FQLRXK-T#$gb9Vj5X z=5ZOyLF1w;#p%dWJ9+uVw^cU!Q7v0cB5>5 z5~Q;|=RO63vW?(!pQx-%hC3P_Gk&4HB1Wf#nbFYWPAm0N!hFC1$K2I2?>1>s{tnHh z8BT?lG5FoKnB?{LS(n6NCZ72S7O6AVeY|2vKvdBzQG8D3{i~4iVH2&z? zW|aPKc}2x&N0lDQ{S1q>ntQMU^Ksf2nHty`6Y5aW`bc-#8>HB132g1Y2{J`&U@zfL04&L;Is5+G) zOa!9e8A-?e>)s#(&>(a<#b|vmFx#?V-l58t#sa(ow!rkrCzFg=oY=6lf6 z&AvND#isYtT9670j@^#!TWm1Qed zNe9z+L0sw<8W3s|4^v;X&lI5L zN;p0HbNuLyM(x7l1eYFRw%8QsAdt?53QZi-OBdB<- zK{2eP-CtRe1J2xiTW_y#BaDMYHQ_U#sGF~oh$9gtZ z=JdU*Z%{n@>hho|psk;5bgg$8Fd|6{i!rGWD31-4e5?KX0Zd>wZfU2czdXg5yeOq? z;V%CG;-5kN@kFI=F*&ihos&xH+sa@3x#-skEP0(;leI}Fo+}L}`MtMTM0VvABjBFG z_nZ=}`X1Eo&3};H&5Ny$6x7IIY?_t;xV0Zf%sG0-*CgE07F#adpxR$$*|#Za!zy)urjy?z(0_WbI(ev9n6Ncv#xkv;3Q$4@ z89~RVb5TuOEpR4_^xa16hZq1QY_pJ@b`*ZL*Vg;Zh9pv>`YvuhBPArHb}IMH8srKr zjlrXIrXc)Ew`ur#tw&Fmmk>3d6)D0{qIzyUPCY#+Seh35f6}k&LvU&(nlV46;*>b{ z-j28mdEnJB$3C~k!y+WKL!jtcw!_NY9L1r5>kS2 zH+r7to$7;;?o>@JNo_os8v8O~*)ClP6bLZr2BA zg(f(7p+TY&4;biqIr>qeE$2vB8%@$=SvH5$;-EBeLXRUI@t#IKDjQJUDK#65Pbj(O=yKMF2)Yc8>mf4G2`3KWtQI-~=%dsQ~0*{O9L z>%4~=WIB|Rk=M#PS6YPOC&*P!=a8o93+9}aa%TMo)Vq3$;=tSz$tmO#G09OF9+eBF z8@cO^Ln_wvhGIc+UNyo(c_emhpX@2ts!UnhLN%TRhAQSrP(*(QC{n_50+w((_xsi{ zEhy5l(`R8XuqC8!ONl6TCml|Hg!|SEmX;uwDujVI-=kTRIg1Qg1zQks?l6=A(K#LH z2&uE8O2y_w<-F_*#^FXn)AvVQTn277^r3|BRHqLK-OyzG$}}7CZ4FCu9o@+*45Kco zt^|!2mC43UGVwQrSv8rDWu+`}07)xb9pFh2q}urKv9Plpc8Y=a02Bx58>A=*6Dn@nR*k zt>;=jiRr~|m^78r=+tXtPkb>74?40!lzIgF)-sixSyJwJ8e&WEBsr#FCOeIWnE(YX zV?4M=sRQ}bO+jw5ST9nXZgNo4P>>MPImzlhDvwU;+hxA~wA>-a4MC2Uk+r<-9N^>E zrAX@ensWH7h0Z#r7zjb|0cfXt$JF)OKhm{bU3h^fT%nt(mA-qrme&?5jW!yJl7?Fd zC(1vGN4G&$8h+6^g}F2Hlv~ucwm0E2rIilfMEX?E;iPMe#x|T`N?|ty6}=~BRE9@9 zeSPWXqh{-;opw5A&S|x}8fE9Ogm^<4C%=9ulohgJI|3Hh!~ zaujJxNQIjmzc5 z3z4ehMSX4sDWKmdPIv(H&2CJ0Esib|5n7wqm9`4jeL?M0TDEJ9TvHWC!7*G5SU~e< zJSX43?N)aSMy!{n{{S|TDg-7}0BNR_Ja;<*j-x)_w3W6YVUx#EYZCdZRu{{S7$*y*3K zrVtSxWvAk9s+g#40wY@*J6?H2eCj=iJ!!;Wa}*1k;7*gN^vm%t^J3cUF?cODKzZ$? zdj9|pdSk6k%#mu4S+Hr>WZb?bdq{L)ER1rY*o+Qpy50DH8OZHi?`iO@r68pqHdHgv z6P~@ep(5!kh0gghMT#n6LARuMN=PIqb>rWmKeYfBYH-M*jddLAYgl&AZ;J|3QKm4D z4Z;Qxk?4D5^~D#drL>(dYl!9SJ0XRH7MfR-dJ~So59dg(E1CIL*L4JU+DZQa@TGv2 zsGbSWQ%Gf7qeXEOZH4&{4B$Dy1bX{c24*z@R8^BI^?syUEeW<-t}?FI2XH_Ul#RIK zf$7ilprGn2jfG9yO|4V4EXKos7Vbf49-t1`_MpEGrD_Fg>2hbrUBcxnXkjHP*xE-q z`U>o~i&`z$PtT;i@fQ@dLeGVUSx!0Uu6ml)#yF7B2~}#Gvs>9CwFbt^>$JZjE5XSq zj!NErUH1XW8RHZh7F8i;GmXV~xO_;@p-r~RM`BN0@NwHT{%)SU#k?m_+wYcJd!7=P z8BZXEuXb{?ocq?tqp^C43M8FGi=*>M3;1%9pAh!WI3DyYKmblh^{Fd!a^D%h9jQ+x z)ho{2WNzo!4!qI!cB9UT;{O2D5u1HV@Q{hB{X{5`30I&UXx&W$RgN2xwDcy}eF_XY zJb>X!mCz*r0GpBg>R(9cHf}n)Qqm6?MCXD4!qQO z#pdB{PWFcVxgNk#ItA@fF`04Oo?nk2DM5Sz;vcO}*)uLtT}{pgjFQtfyhQOYW*}r_ zW%YTtcR2MqqNCiU+S+}~VG(wNi3kMcKTefpY0>OSl`2M{jkUrG!a~LpeX-XyDD)YV zn41FB+fFGq%OMCb>!#a}Wu;B9# z6TkJOHhU8j-%@TD2jGyM*&Kp99(`*Ut#E_Mk86H>*K>?17|+ucoSUf5D>kc9U)*@6 zUG_@bN#O-`gVL?fBsp@5i3?Xu^&fgV2jS$)jMTF1^jp;83c}@$so;)2ywGv9UGC>P zL@O(d&vG)h6TASTJCAB5Qm0b_uVPtgeMO~W!VIF!mZTn~1CQRQ;e<|S;uaEGC-lHp zLWlnVUe(2>z`0svsx;IVTuH&&awwZ!;^h(at+)2)g=F-lv2_$;p9Px}xZW9k%X3jv zc2t+$^0gIC?PfVW)sFuFT9S83$+XI>Z=@pIH6EOOYrDm? zK94i*$s;F@i5~Sa6>Eg~Vm!q<*>mPe@~@tw6-E=w2{L6Tml#*#YFmYFTM@`1YQjo* zCXi^Ggc|}|{LRM{!;XbIlnk7GD=);Gkwftr4fu*c`A?~>cO4UPO{t5kcZklR#Dxg! z;X^-8*`T27MqB{nQ>V44t@kzzYYQ?WLR!9OSA{F>N_7HlC8-gAHEm8Zoz5jEl$>;^ z+jQCXcnTNGT$s2Az<8kTSH5a4Z3@d47tbO+MPcJTu6+drJxjmKnI}5dP?baw-l8CedxQhDpN_ucE7`EmXmK~yM>%x z90&s0ZqHrH<9FF{l$m&b;Ghc(Bv9nI!lLnwE`Uf>X{@+-30+E8`Da1$gx zQ@NdrC!c?6pBr!_86AaxZl;^%rFK~Xmi9Z5mU2fTm0X@;+infHwb`=x2tfY6f~{_D z+ZSy^m(;DbHlB$dbsoZ?WdT*vX!g_ms==(yU-{&`PVTQxO zK`oG+6?>D|W1qchXXD(HErZH$(elv|mR>f-RH*9Qhh9k~WS>ss(uKapx#~D~d!rW@ zqCUchi{S7vjPd9wopBdZSZ?WprN&Dwq$vw*U>{IEoQg{!36o%)k=Uh=LS0^NW>$rXnz|vQ{OL3!GL!Ji-Q{&F- zpKgg93g8yY{KP?i4Vu<25*|;6Tv9$k?0?d!7>|F`c7#l~U1nRRxZmnB)l`&Z}t&X!%8d#*>r$j(&K5=mrs z-S1U8Hva%V({X;~8KZHyI16S|`6)?PeA8Q<&PBIG%C|n;Rmhm;<;V)lizM;|T5~gc zwA@#W*qpgcrbFnC^86I2;H>tqq*)VexOj+^sSKq#1o21QY*Hu#aBYP#*D8AA)F%^yo{!dqi%fdJ<@?OQa9YmstpGTzEhWgZ96cBRn} zrk3n&$x2&MPU5b(>slL>xK}`?UI_!`U#$jYAW?>=l9ip)N6(QKB+|Rwm<=?K4Yt`> z-r@B1z@g#k+pWdoxe%1gVEE5TQ{#6%GwOJ*I;)(fE`s8>*1QgJn(P{CQ_~={<@O|o zBD#R4)RWiW{(I8@0A^i$o^z=~J$h_-(nNUdJ0|CXTvF{D#nlu)vU+Nl-!?0Z$bAp5S^?WgGP9KbEkW#3@Bi$B2(A0*-LC zj`=h|qYwvXEG;(Xcb!jSTd0F>P=T}%>xs&j&!#)l3HSKzHrpYY3){ePQAkpcW18sp zy%f!|%!1S=67b1=$5a6ya&wwl{{T-vsC650BfA}zS!)Y$xRH->o~DTw&6v(g4T(Q1 zT-ut_A-7wZBU3FwxUMat0uFcpp4iP}rY!n~Ts6f*kc_f7x`#;x)gGju`PQ1frQ%P# zN|xG|^|sWVk=;nhTb;@E=9ydU@@_~>#;z!dC!&%#$o~MG{i%6!9AGGmX4TG9taRn- z*7;r8sLZWu$PHwsfU-#Vd1)aCU;hAZmDjbsxl`a6%6r62c7MkI06Fhmk_1*)a!-or zNI^SOoD+`J-dvP4qXuqkxpQGEisP4sx`Z~A`MAPIB9A)RS2si`lT!h;WIFp`?m+fF z^%tw>IP3&PjtW`+JZBtK{gKz#b7mV$PUjW|?D1N`b&{csVfJT4zCfP19|dKZGVdG$ zOKER_Ph6TKM&0GME|jFK5VAg8 z@G0%hO|ELpX7&M+IH?=7rI*yDWTbUD=}KkdXiHE9S`#Y`xp#ZiOLB6O`=BVEfg_TA ztMui**K3ajm=@`6B@GNAEj%;sYnpxuY2y~&y+?9xJIk1H5rTQ!j#d3Ds6_ZQDJ-VZ z4Tld$I%c9~EcSX6&hm0{G(JPbBEv{BRIQ35a@3%sRoZ#i*s{rz>+RdyIZJN3eAw-Q zQVN3!C{|~Z0T>8YLXA9!baBU%8LLBAjBs~+t!L})L4~g@maJHl8kO(+RY6tt$#)qG z*w{*e7(S=cmB`b`jM7qv#D~y1NLWr!d=B(LjD_E)JGB5sQAB-vDV*~lbRcpyCvV?}(k)G? zOx#*QNb<6kdA|7dsT-D!)DDFzMUmBa-Y`XVi3}*s@L48v$r&M(m1pXGXe;N&Gaq!h z>VVTj%!Mz{`%u0@NTCUUGmV`ms+vOE{H^t{zmx%jK9!}7A9iXnUBlt+pmT>_!ASS6 zii@@0aqukanDSG>d0Yhk{8WG9j7Qmp83=7oDe!Wq7r3onzQUZRkpRQS0nv(J*&(on zB@#t%}O>u7-{1RJCUpeZZd zcAkEQnZqQs8{D;E^PXx)O*1``>n|zK4GtZdJS*O**eVBwAAZ%K6y2)e3P%F%B=m2yThPAQXbuH!`=nl3ep+Bo3DjRm5 zsVUA$=}O8-DxyGU(RN&yB1Br78CZ8D5!_%^HmldxIaY{|+FE)Hw^Brc zgp`K;bB+)CQB!nn$@e7Bap;m>M+-wOlq$nQSmKyc~35FjtrKSB}GVNF92tpZLURBYgy^|J~<DK+T zU40Cx3_QKtRqxnU0b7^&Gt$HxVW4Pk>+#N&i*%AzlOYNz!1feNuWClZgcg{%Cm3)S zwqW{GHzTctGy@?jBg#*D@Ur3@Sjj0+@1AMvlJywKB<#4lowu2N$S%_+F? zg3t&?{z6CFzt)s$-A6lDphKG`+qturnrU8Oee>3tmn!iJq6kt9M%9y3Nr&Laik3n= zs(Guh30^qkBR#WI(=7L>Z!K?KWvh|;Zb}LY`f<{#?Ut!A5Vqx|lIBO1D+G^9A5zDZ z^IP3v^tP1XC?MccT7jKH1e->ep3+{P#mLFpH!U)A&(znEH0F%)N5w>*T2bNSBP5TY z=|I4CB3fH-N(7OBjAWnMpIL8kA_TE6(<#pk=fq(d1bfgNp4A$H%-wU)8X8nII?EE( zfs`n$lA4m8rEchxz#rsiPaIDn8op!NIE1J1!vRjO+Sn>HD+~ z5<&~oHs`}p<35$oFG)|uOKqfv+e*&VC}iS?(okehoQ7MJC@q&1xnz^?LUJQnEqsUMc zLlUB`C1_Am@zXgKd3qX*IT`~Gbazy?)q<12HG}RfFL}sTas^`g99)Ey=L4>2i7YkX zp~R^~o(c3cqBn8sm$MvcyT636%jwEgK5t5@j`@zFrr!m%oRj^k2@#gbO3{@L^m|ta zaFngACph`4T-a>d$#UTU>U0+r)A6>iD?uFX>MBA-g%B=DxH858bQI+Ixir$vBMkZ6 z@}Bf-Qk1zVB(}YrB`QrwFB=&>m1>%9=qNwm#5j+vx*c^~ zgmZ-ZSC8A_$<%SB#gN;LDX^yyk`6w;^qusp^XC$TC@{4UkWUHsHEtlSsa85YMs~^0 zIQnqIXsCGb>m-?=b zdteT~UexTY5iCovs5>!Evz)j#7b3z1Go+{`$5MZXo(Hu}+G7OTl^v9vyrGq6=Eq$9 z=)2-p(v}KOat~f>AX6(-#Y}Z6F`*0v593t|=z4CUlKDcA$`yiD$4S#ZmCM5F|VgIs~s(AKdT=R8!j8kUiSpq^Kr z^v#qNhgmpM(l7}>H7g;%S?1&?l$_J5 zY&+yGH1G>XdD>1ZViI9$N7!NS(Q#fXcPqC!q-Ow&6LP1m$n8TCJbT2bZtRUac{x8K zv(Nhe)J?UZ+cDEANC0$FPn7%SiTp*46^WiI+x-`hl1h)s$FG0ANv3Va3+Q3wB1AHH zP~;FlrD`F|io{}L{SX;zb!)-4tHS`YqmZC*RqiPRDU;zk{AZs^2TpP*x789;B1;mS zLBBl31T^7Q%8y@G+n{HK{ z)IEjPT}qL;D<`6}RQ5}Xgq^E7WDS@-4SD`pvDA~v9E=WLqJokcLSIO1oz5PLKEkQ= z-NjEwNoBy;9aEfcr5CGIOPW%M>25E>auSiB6WX)Vl2|dFZPvmRm2FCoV^cDNir2Y2 zg(@mh&3a3#@XFNNKow*TMGJ7bza+5;j|>F->h2Fy{Oc=b6LNM6i;62wPVC@)4F`1& zF@8*!R0ML6gk%1DP~tQ!Ku|gpo$IKR8ho&sXedWeq0juzX%)U+5?go;pz-KUQvM)1 zhp#dNpo9Q6lhHz?6omM@T0mBMbJD)M!aT5od!Dz8?2?JgN}snEk70w^tWZfSBRyvb@jmRu+e z?*T&{IQ{CM@PkfVE;bP!;}K3=Sae8;qMV(%Jx`}f1sp}jDgvgZT#J^ayF*i72^!rv z9j+}&+JFatT;_w!*L#PEwS0E^0eQ{q& zw#uI4kEZg|QP!*gg!z^2lhVBYdz_`eJO2PMc61a%gu6ENcP{56DM(2lPSr`LEwHXg z{Y$;gh-?oJ^xg?49>S*;rmo16*ls+PG2QoFCvf)XiU&{Mu0}<|5+i&&O*lY(X*&oV zdFh|`s=Rh*b8&|w3Sk~xU|FsARiX@k6AH<3^%W1Qz3E-oP~E35^4ojuM`S31;~;{d zJpkf`nRK*Fk}Z#1oslw7!V;8uN4MAOPn?YdO+;$im9*5kDcrZpLGTBBA6}J(Y?6A4 z{b*T}aFKP6@o^H`QV-0jpoIl=;C*Ntu9}-^W<|{^M3qQT-1DCzRo`lTx@X>~EJ$`n z>9fgp4*iXnPnqHC^rJ7VNO7dcX{Q{9JjIrgyKkYSAOzeInVYDCM_S=XnB)3}LK}-6 z0mUQ?1!uJzcD^+-;)L5{{4@qrhFd@&JUvy4(LX zp<9!OR+IozKk+`4S54NZ9LFKt+jhEYXCbuGSc;fxPBu2bn0wT%-NG1cQMo2j0??}});Ua22G3B`#P7<(2RHWqKWcKMmF^;47e^5B{ zBKSqa=+S-WZ31(xd-z86y*>Hi-AM)|r9jUxHFDR^@N9Hsn z<5vsTn$n`gvrhfy-qez(!%^;p1gXGtuodT z5dr}X%HI}JJkE6JJJXd_P?6jWhnA$Q-CV+Mv5QO=?aUzWD?kBi^#Z(Is^fo4cj>4x zETwpi$>7K%+taOR(9z)EHEd|p7*xm+8d8>(0s^p4n4dvZfd^LV<7-XHHj6A}DG}r- zjfp_&Ks;ocgC=$^6i22NOk|h_qr6-t+96sN^G(8zM#fuD%Z`~e3z}~CD%@O$4pY7_ z2vYb8a>+zW5!0$5ZP{H6E(GIj34;OroY&{sSyM zjpMfirB(ssZ6ywDD1_K<*4;a7S=SdCuUy(E;9?YSX+V6mGmPA>lLn=m;0@{uW->8^ zjBpQbM>LE@C~QA>oL`ufS73Pv&$#G6}1KZw|wjZ9sg$YO?`HRc;=Z|V#CHEr) zvEw@8)^diyCqFdY%?n8w%Afyjunp`Dc}?8 zX}Il^jMnl&&=C8WwyjYcg4C(66?lq6c?fMI*Bld^QjJ3?YK-rO+MJf=Pnd8s?b{T> zLl)>uQ*tKAT$t&@O+s)bFMswvloiN?HWrYixIr!jD=H^E4EL;M094gJ;w+gF2w@05UA@1qe$+$MR4~?PMoVAE#1L(ff~2@|^3Nov zpI>az7Ph0ee}y41qO`b=1_opGXs4m>SMAiQQO@3w{lE_eYd&DDS!+U^w1JH5( zDR!a!%F}0R$8ok8w(k@tC0SaMI+N?bt?9Pvl!10-jqwnlC&I5d9e%@()Rp_~(^B6e zTHjyB{<2isRn9h??LU9znqL+SEKJ5M>#1X6)VIj*PrJjmFv6c?H4owuvtvV?f$m8^ zYEUn)%#@j$yKTva&JxO%%c|@E?2vz;tL=XRJZo%kiSeD1Hn#hlhSY)wl_RDH81?5g ziuI;6>?mltF>`4uLN_Uy2YUM)4|;tD1l$~F*pVjnOc)kfOiFF&o)g2xeWs6KT*&0O}jer{Ok~{{Y&wLGm@&By<9cnQ4A=?aM@1YGwZb)JEsBMhM9$1FzSL zt&MA)D^AFpcXDdx-%PMIp!6N`4Q(3C(YG&HIY*&`- zHZWxsFU>XLenF4n2Z}aOXo({~EzH`so1ORmqPxvZ=!$qI1XAY?5OKd9kPdl0Mk(Hz zw>JK|yTp(X`rk(75;lMiI7sZCMlshEb*oPNHjR|*_Sr<)1I2AAPE^Rp2=)MWrPiBu z#&)P%;R9@J_7o^UcDsY>DHAR5j-GZOio#Y)ZmXc{j(TR3X`NYl zuvug@%wZsmYfnzZd9owE+lp19r00DD^9GuU9B;p+fx?X zY);pvts%1`rd5uokbip5#5jeFs_mmm7a3}8voZ2e+V>%*)102_KBk@N>xPsMG9+6i z!guEJ-X$T!?knp}tj4{fL{`JDubqyo4Wy4u(>u+}PCzB;QN-)Zstuu+akQwOF^)Eh zQBEeVZ#y8!iMOY2+SQFR%kkL!!QIAhRW^aqBe2M-NA%-18+E}?TqM5w)`p?}wlYwULvOH7T{cD{;6M`v%%;orym8m znKBnXvXlOTxjeKtYSb!|Ee($q3sKsWj)IY0Y&wR|5W;ZVT|t8IwQA)&QyEhi`ZZ`l`ZK`<%#ZXvWV5%Pk4`+X}D9Zho_<|GD>G!R=?(6x3?Ax^LDG_40t*I^}3wzZ60MA<0vv(VGKoD5^Qp(|G z`*xjlx`lb4ipl~&NFLtwn&x1cQfFD>t~Is15Qk4G_T=@hm8T&`wp!h`vfQ`sFE)N4 zq-7}`aBaYgPLA>+V{w2!@7J zmohnDwFqYAsMp$9ncwd3L{cL`ZA+MZj1aBCBRD(`oobU$=~deF786FYw}eESC{9LHOI7=WHeq2|ncZ99GB?ZPS>S zsr4$~j|Gf~O{3TLdG2sOtrhcHI=HY(08hx3yNoHZ3ntd=%d@IE zN(Mr5d(@txvPrbQkBDJtLW$(IKp(w+j*+HgX?-^txX~9LYMvhxJwqT2^MgtM01>Tb zZki<*cBeMH_$gX)vVB1vs-#drQwJB4dCnQ6?krocjLMe zPmC7kCSQsLm1>l;9Ysk&2~vUJoQ^8gMnnc+{Ct)lnBYpAir<@JM<6Kv)y_4Vc3oI; zL(EhZNdEveURdR}Ot>BL~IrYtctCELpDqLvJ{8Ux86yXEQk~&us*H#8xmh17k z#!8Z&f|{inKg?b%*8EIUqHMZye0MJTt64W-gu}RPh7r0%gVdCc$sGoI=DO9F@dDDg z>9c6KbKP3NNuO}QT8F3=z!eX3`@A4lKaEMwDea=_ZLTFzl&=>)X9@4^P-j9-iMcQb zYcsRznbKBSVGOEFmeJ-|$w*hJq)=0DTY-9-J@yZWQNdEwwQ~;8An5AOoRDLGvOEg%p?F>kA?|UP1f)-V`&?x&< zb*|YeW6n*~frlAL%3vi}r+S1+DavwI0#5f%V8N?>c_8Myylm*qiuRjx8XGN`!I%|Y_G#7(0bBXtvcL{ zLXxPdXM-U5mFdQ5jN9~kEZcfomGLjE?sesysC{!(wqPI<$N0t8XKyNEQa%;f=t114 zT^j-R_o3pvhvL09bFretX;>;M{YMX?Q&r!H*C`i0KHSKqDj@?Y9+flrT?J{J{odsf znJuUQ!W~B772M$cDH$Ab<{}s);xG1NsjqV4*$}HGl@U^;dEb&e>K>xGn;)BBuQA}V z5hirEd^QqJ6P~>K4lBOuNFSOq42KzEP7fjoJ3#dIu5)D5cO5(UpJkNuOuHZAI9n$v z88qc}{P_;xV09Kxaa^k<%T8)`Y?lPK?A5q|xuABGsE$%AqUxKwu=Qw$@Keo4U^cX% z5)sp_H2g@h$(8uUYnZ|SA~|(MT{syPCHRdoHn@&k{9V^8iu_p%2ar1_KhBuwrNJN6 zsWO(tFYKMwEyG%zb}K+Mqm=RAy-rEWS@8-%3BjtZEopZD03JhYcs8WuHVMZ60DfwF zP{4NB9bxGVxU`&MvycbBy=gqgDdQu(bvZ6SA4fq_=RNTbsR6ds zv9u>R{{Wv#=5{utCf%2EoD8QUueDw1dvltC;>ddnW(W=_xV$AG4C189oT&c*QGQ0m z>96VQ*s!+_Dj1tCVt1}WPSOxN1JNVtideXsqRj)rfpS%{6p{+WZ##~52PctDw1gY= z-du~!$swCFLu)M|LPPr72#g8O0~N%+qkJ*BOg|giLi_6lR!FPlveRWapZ#)OYF6GKE~k zNQ^e#8%wK5$JBo+h1+Vo>q~vL$q|zUl=#j#j#8y$?FZM2!JLun6sM7gz-mp8N5o^t zbRlR_+EfBuS?kAMJ!;m=rPCh89_-|j>#i~|RnP;^^!~JKuo{!6Su2kXz$KnARry;n{xkzM0Lj0v)B6(83YS#@f!ct^QY4%1ur*0H|>eA_G zvbAM$?*awFER`M<Lo0b|+DC1)B+{1<1B*EwN2NU!@u|Q}C0&vhrrTIa zQ0i%An$YFzP)4>ko$7U2SV_qV@5g%8F{YMCZF`94aj(!H{;l>4PMy+f);E};cL}OL z4hlD^v>$KpNXmcpzTjoa`K8LMYj%4rf;3ib9xSHN5EMo{A?fd0Su{=A}Av+S&lQBIR-Dn6Xaa5B@}UsKTCHNzk4`*CR5C zZDmVs=<*WFNLJy$jl(_3{r=Ta21Sk>S#YhFgvgrrFRiiUVK~PJp;bes-m8WL=cG7- zkV6SOP&?q`6mu}p%rAsP3XaBdQjv`P`-+)zaDHMM(&{^k-J&!{T8fw6R@34yVNv!Y z9nDYeM0ScDjkqlE6gdR{07`2H>3n6Q8s6MU@yC@;D;Xk;MY=d=$C){o+fl&{EGflt z*i~P-$hz)hiZmivjWXLMF{Z5wY~^Z58U5&idSzuwxJ`LM0|{2pqx`6s;@c4Sz`#R{ zkOA8H3G3^c(`vLh{pBncqN$u0GrtK?9_QYc=-V(zEvZAMB-||)$E7ro%vXt5it0AF zuS`^3&MUWROPJ)wpHf%LMO&0P?^W88_a0LTw=K2!hye*G-_%ohEQLZ*(OCe-g0dm_5OYB4^EkMaisZABQED0 zWOX&rCR$)R>K&bIof%E?lKOIzfAT%5Zs}#!b_=2&g3GU4Sa)-1NZPKn^%qC=vl3&A zo6!`Jmt!Xfk;xeA{{X7r^#lONQAO4S`}F3~W=k#X1uAJrXr^}LO0l6bA5LYqouHtS zoc*hOol#@6SlWo?&J-JiNy3Yx3vgrCxvnF8*Hf2zl_J@Dk|QZzM5~eS#QaZV13 zD97zuAJwxRPwL8$@;}P5DzI_@020j;KR~KW??q}i#zuKcHtq_<;PZ|?yS};nIyDZ5?)JZs#2meP6*&dmJ_wf)Hdjk zA~J5xzE8~Yb0amJtL~I_AxpW&L;HDB6NP8$D~BYfX8|C4SD|PMCke^+6hj+S;M$$0 z-EoN_ehL)wdEwIO=kK5EM&9l%+M}U&i~N>jC}cDr3nYC7aNmh}BX7hwk?0p%AIFFt zDpJ+zr4#*ViZOy%3DIu4;@r~Kn=}=Zj29djC*HK%{{Rziu>yQ(jlPus00=ut{i~f9 z)D^)zed`q|ZYw05)-Dk=Jx;kR@qD`4RE;{`I2G?(KMwZ%EeM;*QCb>&ROhFFe-E5qQW&o(}kb&BA&yjyJ1wTUhgu-EqV9M*S< zI$^uSNOsN?KrXuLn}ScF1O9PR<{&T&7o7(VMlaIW%L7+N#-+0O(A1nZgf>A@{{S&Q zoqu{CU&OK{UN)bS9DQo?KxG-&lh~g1vsutm!+P56JD5g%Wg`Jb zr>>fZ!iem5?V)l({{S4E5Pp<8H57ZyG{96p3GgxFXZuoe;{B=r0I1x4PEeInb(fly z+4z%%Cxf2!I+$&@NMU50=Z^GzyHSZN=kXHfp&VA*Oau9fS_#5WAgI@-q*aJWK{qmC zl`I7;s3?wcP2xn3^iKuE{-%7S8rIqp+@-SVLBZyTTcL-M;UsnI){^W@+>fnIG8t5G zP=w?G)bol=i2?O1!^m?u#yF}e9wx$Y30F=jJZR~UB}LSbrJUlo7R&+dcQ?g)OKpI+ zcKZrzYLer#5EQ;M)ODbw#C4`qDM&jMa5<(nsF8$kh+CznGr$6sl~-g%x{A3-@r+t6 zEGU%qRyxv&kCmtZpDr+z`U=y2M5y-UyW=P@@_dT#*Quot9B~81eg6Oyq?C{c$_M(? zXrzKi$N@chN+{6dOpM`^CDbiFa&iyam0YbB_T#PWsrHgGTSE4!RkqwC&X|VXXm#^= ziU11Les%Z`DNxXb;Q3NH7@=ENi(9$2%FVOj7V9y74{*RrR7pOW_wPctZit64uNb+z z=2G}Is?#xYt?DZw1+^R}9cakFEui9t0#BRPjM}-V#kFHoT3A|UhT2Fi3^%k`c@k#M%1=>38ix7 zsuO}AgO$26wVsKiN8HzMQ82d3GWA1y7QYRY5~Ziwt5dbl1nzY{C_IW!XKg8qDfZ)} zIHY6|>F-%ur9QMY!`VW@uu1RqqGwXtm_XDER3)2r$%Qmj60i@P^1L3j%?gbC)+ESr zw1D2yoE_e@uT?`#^(j)G*oIfNr4z_Lf`+uobrV~N>nmD-1uh;&J!u(~@HGo5Kb&!? zqO*0g7|$U~LXJXq^T$k7u9mRQnRR~Hi47K#oy7|3jP|P=%!|toq3e4s5}-fCPC^y^ z{?wLYr^D22T$dfhtw{Z65HK89r~{{ZPmAOfLL`{-kflUVt1Op2I<}dZmehsdq@eN# zx#?OUNnmwshSj(ONSd1TY3?-P02S^y!Ob_75aIrkp3NMc6BbN zW(Dd}T41!NQ{Z({$MC57SG)fJietp`=u5m6W*kI?9(NKDvf6^MMnyP`!>u@l-EGb) zDDJETpFx_ryyyVIKt8`f0HqWJ{-*1gu+>qoK zoJLY)`BJ5N41dllru6my08Gz~YP-W_h>r{+Q()~+L6UJ+8c*_FWnq6!iOjcmw=6is zlq?dgbHVC*;UfdVj?DDa9ws*QO8cP9bS~{+PHwb%lHk7aI+!fPl2^ z9N>CUH`|*wnDA%Il;Miv!3{E#=O6iFwO(oKO|w+nn!5Z`<+7hEN#QBTAG!YkT3R8_ z2tOqrDap!~a=le94b(O8GKa;aVbV?pd-bMjhj4ztUx^j58~}v6>B36=Kpkp_R{j}C zHmBT)J(PyQQAW;4>(|z|X_uwTwZXRh18yeX&{~jJv@JvH(B`6l7x8N*S%@;R4faSk za$VH3rqOYg9%C)z0R$y^@6T`brW%Am)6gQ@)p|1KIFh9@(_l7FaIABj(Ki+)PP;oP zuMHO$5rmZ_1Tv6&5#EC~Sx>l@rlqGGaGlayNDABSRbtl1*q6+>)T~2giDGT1XH6)D zG?J#J6!3%TNhW+$hf-wR1eVrG&lw`DH5QzQ3fa99Ty`?}QFMH#=|X8#TJ3?wT%$2? z$M|T-B!9s|*v--ENqofDr(TAa+xXQx;5KlS_Qf<(*;-wBxi6w7;sRM$nKbpORu>w~ z3o=j-Bswwy_Ni@5`%$h&N*-mF9^kgn>Gq~30J@J>3PnM#{vu+b9|GK_Kq?DYRQsP( zNuIeBlr*=Jf(8_J?MekTiG6w+eibdZC9T|tF_E5zj&c(>IgBXAZ3`qX3jm=cbICnN z`cP%Y2-J7vq|{BO?z3T+<3y0jYi|-1-goocKT2&alPSC@mX@bR=M<#v3Hnevl3{-8 z>$6#5DM~|3n9P*7fyQz5<295|h&IJAL#gVb=tel~0sGd5rKnmh{-7v%X?ODWiDiub zp(r~NJ&h!GGXiVA8lwqFRsm9arkP4^@ZyrlpDp&Y@+m3WKBpO>FDpxlY9oxY+leDD zpz=q*@}+=7ZdQ$BP&<-K@q9F4DN*X4{j*vl!@nXL(GFF;){28=m&crT$USNDE*6Mv z?ZXcRr-dl;k&dI^ky;@~+byY)(I_xnN(7SL5`s=Vr1en$09p`e>QQ71jWi4B%Z&$GIrHt zi0k%sTm{nUbZCT!8zpGS!BAzB>-1_MxL`>)YQ0GgrMS;`4we zBd!hyVsX^*nz7WnZToGxw_!Na_oS4CyMjO;u%s1WY{O!zK>p_?#b*8A0&E4evsx3cVz(E)Asz{t-7tq-S*vn@%)7oo~gJ6{SQJLr9Y&MJwE ze7DIFA` z9j8pY8H*&@(WE=(m%WYKN$i~U9DgcqHzjvD08y^sQ7w|K=F_;JPAh6w z)6;ickkjl&7;Zk?;U}CNb*EPdie}U$Dsz(Mz2{VN&O8+3kGbnp^1dF>%z1wkE5%XV zpzAwF*kZGpV3RrU{1$-1sP8l}hXY2bvn*tDFZOWerA-{EQr}Agu}P z0X-|nu4ueWL2~HinGC5eY*-sw$3eiwZ@9fOOWrH(wx^1+9YDb!+L98*B>?&hnul*9atl0Z9J< z$kJC|WrtiTVcAWE>{E#6chlOMgLES>VWr&iEt#Z3c3ZNetteMAH(+ts1NwdI3vWX)t1|8jDXo2u%ZgSzL**5P2GVW3XEsvHpHd~ z+?0d(qQ zuVYJPYq;Ea&@cIn^$Hq5T*burmtOiz-hk+)5_}8}2&Qb}8{7C7BPIGMz|U+m+;CAL07*&!tQ0%`VLAqTIY+J`N)z zC`vF~C-2mDt=IcTpiSAyv*fs#?*Qm)#wt5{g0FMQ`%^UAt=8L0E{kE8)&>>hES`E` z4EH%7e9#W|Bb23U?8@&2tvfAJV_zMQ9z#Se=g^(l&&mMf9C}x<9+eI%6&~>Xrk0SP zQn7$P%k}F~`o~cnLv%1EL2e{=8Q9*#o)0)DxgCD>jh@>LFj`_=(qm8(IenvrpQmqX zdVkrtzbDqNIF8eIOW%m&=wXscbt`ZMtYd%&T61&%0Hf`$Z$xI%EseetL0f`PQdN$o zms=ducEv1OY?4%snOylK7uClYJ*qK<_|qo`iqg{EH~{WmI5^|i9Vt!UjYn*rPa5`u!>n*{h-2;lqfO+*E}B z0Q(PsQIqwis?~Sf<8CzyP_xF)JT^x6)<3AC$B+?5CBeBvd(=8o4Cyi-j<+vrYiGeW z*7UaFTC0vvR~z-MaA_$W3fnWl%TD&%1TD>UOIvO>r893 zd2pmY@)HtsB!J6E@b{l%=}O5?Mx_e;M4zz!9x);E_1gW15=Pee2S51|cmkN+wA=O_JiN|v(o zVLt&J;|j;|9{l^zy72%A4%fAh?-S-fbA@NM+?;mxad|FHa3dlsdH(=T-72odZjkip zkgm5CNmK5o z=~p>YE*Es=Og2&wI={ijJAqx@jyeI(p4=xCDD^a02W}m%8gLXulgb{RYM=h#To79urHEVplPD~Glg!`aK zA<0Y>VF+j*aC;13(&=|SD>2p>i=`Zm4WpkCmQLb(9Q|=vGc~@py1E|klF;jY`^E**pV8~&gighoS z3Z6&lBmjHkvBg>bEivNXZB|>A)wWw{B)scL31y_7PTX>O4!*onix_WMYIoTZ9F3*z z2mxzsZ4R7uKhB7N4|*`rf;mMOq}-UdMU`-6hEXNLqT>k(3ikkZuUffGPNBBGl&R*T zB<fJr8g8 zuGtegQi#&=sO8#iJJ_-SUs_yR(~_ro;Tit`N}iK*ylTBd#Jx)CfdDUHg2IU44hbLg zts3>++m)ra*2~eFjtZiM3?a;S_s{mEpPD~+J{$JQaKQ69DF`awbDyxKDGWG?znG{N zrfm{6O7!K8ETlYt{7b3bv}YM4_vuL_Op&2(4mOwmJ}@J4^RvWPar7N3mro_6%3Kzr zI`i%;a+c^R-jT*Kc>^74&hz+u%HuUK+hV%Xk(IK%hM65QrFx!E?M?w-)WaD9&^=CJ zaQsn`DU_z&ZY}ZWCGEnJ0ddujp|sABTngnI&xQtjuia@PWU*#RV!xY#KQ{{S)f=9$XHEXH0$+@{tIX$aOqT#Tf1$e}DYIZ~PM zm2z#C;$y&$q>{J3o}AU9wCgY}GM5TE{C8B8>>Q+@rfK_D>m)l`FEh)GN{F1R!y_s< z>5tx?Gp7(FVYOrI zskUlJv*bmDTaN`hl;S_dbyy?kbte|BRTI~3dtdbSs7(2N9qH+9dS~(t0mt{pfP{9{0z6yRMTrvB%_Zv z9_JKhjJX!62-)M{-{{X}Er6?-G{!c?P);&vmC8dj+{u(%aa`BWQp`G7aZ)$Gy z6)p(2HBE5@rDSB_{VH=!YpC{3M49%;j=1uYQbU9!4Am9OUt1bOXo+{YMs?K{JHZG9 z^}+S`qRil#5{BYLoxV-fajs6T=!ao$NF|VV@${v?5?yF+akj#bMJLRC=$pmSQzn&( z24jjKc#ki6BD5&665T57@>*IOQc@E0m>DM=0nH(RV{7&b<0Eliq0+Ct1#@9IfShH- zqL#^&uikyUWz&@n)`_vw-wp(6!$hNZT6s(eke+^K~ zpj5L9*rteW6AMm^@;lXyiP)|!FRjwIN#!GfP(dZ76cmy5rWWaLwz1(Or||mJY^6k>H0^>c9@ASqTTX)}gGIr!H%X#F?pK zEsr2j;<~+x$#lGF=PlNl?a2|2=UwpvQ&SIHwol!5!~|U zzCf+oQqo$q$kn%I*6a5dLYv$<2*CdUYBx|?-;Ji17#|JCT=QUq?O$AOYfX*}84fGq zTf<5T1CRWxS!wKla$v`($|PuWEzXH97D5g}!g8#8QkYg-Vq2Q4jJJ!Z8H|v;XVX7Z zO7HURc7+wjy*u!V8;6LnNj{jQOzNkuB{A)`(II=VA6X-xQ`)%!Mmp5D8k(1yHpaV* zRR`uKGBM_C3>B*x#(NK?1#-1I)%j4>DVCDbM~LBY00HO+*ivQbEnjnEbDEwNwXA1j zODb6XtLsPM8?&x)Va(P}EmE?jx~%MI4^n%ddVSs8A}NWD^;hLq>uW~cB)YONysaeX z*N)Z8?yr~LIairoRi2es_>rcqIyP!;*69*uxKWk7>EVCen3+rcFD=BKS1 zYWXU2Ymuie2|xhuS~e7qy>uA5QsXS9Ivd-knY3sfrw;m8-u@@0^OsS1V?P?aCy{kf@4 zUJ9cv%X_anhKM1|<8aL*^I$m47^#g;jepd!Mcv&+K15^SMksDNIa0Xe`C`8~-tQBy znu*s#FUXequ+uFdsX%9efz!2L#kIdDMYX9OeXwMC8)Tm{fa+;u8i|cF1=#v_-{9OH z{{R}`@C9T40H>u><1q`q_sJ;&7H)?xiYA4sAt3RJju_lI#8Enmst&k4a4VF zdVj5Wu>7}{^o2h2>Q?6-d3hw7(>x&o2vf+ye}r{ETA_sdQo~%+m`OtE%HN;;~$R_AVVcofDRvfHPS?3==(vZoW|VmR|Fr)tc8;zN_z zNWD!K*>BVdGHjAAOd)%ei4K*o12_ksxySRZx<1{fZW7z5EJB)J&+ zhu`k@me>$&Qtk>vs!CL3o)QP834Ojc{kha9Zl`o+&ner}70z0W?CJhG94*Aob|Z|}eYx2n zTy*@1u;e&c@QTu6n`$o*C1a#-ERfSuDC##hB`3nNEiH~kWdt32R z);z?kBpR8ywuQLjFrbmpo#BZX4IX-j+~l_RnA?{QZ7@ah|fRr^MoJ| zQfZl;6=bdiaT0x{gswS@F>=VkzySl&v1%&rD?~AJ4S0(30yB@TYq;DZIUO;WB1?n( zSCE1MKF89QNR`LwI9XB$W5}rT1zI9tplrtXXfZ7j+>E=+Q#i!Qlq?5R~Kp+m}`d0hh&dn9!9vqcAv5-_#xUBjQYHE9v#t~!k zV)e=!4R4Uw#!XQlt0Oo+Oj8+h-MLMK$HFxow6%bgoufbbW2H?x(^D8(G8WQDRjoY_ zprc|r;M@E-?ma8AogGv?{i}bT~dK3!$9;DL`EDeIW!fOl!AZ;bAWr5*W4@T}ktJ%oGFdlT7V)b=x7zUE0ST zD0w83N=P3}SEL_>7CVi`0Akbg%n6Bx9Bp6@K^d>8+w3UFy-P`SCBG1sduZqpf zC^qLpMoKm$0qH}u)6YGzzYLTA0OuSD{++xMv%?YNJV%EgQ8N#l8y z8rqblmA4f2|oG@iohP35^2NA(?FsRD^B>{{W>8sZ#x_1c#rFV)KO~Kgzw( zcjQR6rrkEq(i%`DxoJLiRUSS*YD_$UWZ3yEtbd9UZ_P0V{{U!`+MPR8`zgW(f6bnh z!r;Y{(J{$Qx>#@mq(0gI02kd@{j*7}P~v5{&Yq<>ONVMg4%CeQ00_o8q^MJCB`v8Z9YF10 zuhTx(7q&i*l()_X*DdKtKYHeWj(Sq)?YS4mG@ZKH9gLS18AHWVPpBQ~;3hBtp0cMN zrw>AKqn}FgN!&VQ*8RC2P;rd&Sf#ag6vexoNScd80hEAoUJwD~aa&wNgz|b;t++gz z?T991j(G;)vhI&5hjUJsdLw~kIWlX&z#0QOwlP}^Y^VfW^)g`r%Q-JiSqe5pQvjHR>`TTtAUAbExwAHsgVlq#paBIE?cr}Y)`r2g2Y z_GLJ>79~qU%8&SC_$zhK;2cA0Or)_P1Qa1-=b<1MAjH?TN>KOZ>t-SvT1$g@QRaw{ z({HjQsY3`DKBksUoXgN!l*6U+6SaFsIrO8HTW-q3l6~_V!l1fyr)W$N_mfS?A6zgc^Zl@Vf(xb_Zl-k4vqhf2lMwcye zOjmp`%2Za6J5ry+<^)OWRF;&N779uf001BOYP!~&e9K(-<2-jIzbI0@DaE*+TnC?SdeGO0T8!)L$7p;i(lAe4f9n;^l(FJs+4<yD2Mm^t8A4;UOgQawwZ1l=L6bWSHSt z-S1r^@Y_cJ0M&P3mxxuSE*7<8%(ZdFdjA0U-hZbbf>+|R@(8n|TuC@Frcyt(b1gOay+2Ju5n$02C|oyPeY*=R=B3S7#RNXZ!e zvG=7ODhN^3@^j~Wq?6otFH$8sh2aUN-Qz9?9o%!D<^aGRyw#qNVm;m*lqo@{)|?<7 z5`F4FNL}>p@-UNQvqgGBletC55`+H$In6h1o6OQ3YA@*|@>^|&6s^pm2RshBu5H(mar~ zr^>GlTZf>cv=i5BeYx9HW?Vq6!+O~y0oxh%t2}223~z~>^U1kWdDm0K_wBz09Zdyn zabr9WtxnyVc4f>;h2tt4sliJ?@<*@puNt;VgAHCY?@M)LtHU4wGJBKSrWZc%2IRH) z&ZV-f1T^3X`rve_^YU>`9R5Q)+_G!()`JC4NM$Z4A#OX@?MU?-*9&#YP1+nXUzn|o zZ|IbJe=2D_GcMBG(mehV4lMxl$A9NuTQBi%jvs=Ggsqg}DJkVR^rK9QDP(M=+{}>7 z^;*#e?HsljjpbbKJ^7?lOeSF%P%Z7H&k%*boUD$(R@;=T*XBFtu2bL-EOya^4mCqWj{Y_WldlR4mxt6JCzg8 zX~Q99)V*<`7Z=U3*r70~)BG7u=gA%;nI}H}g0(%UAqfbIwl^@y0p?J0q=VU1)-20o zj~7v<9v&e)G?JhXatC4PXi1hkYT14GOsozYPIHE{6|!lIDbefM5!L{^wl z@<%Uh$DkzEhhNmO+t~YI*2(_>4VQdD?Z^}cqOn<-wl?e&a1+u8jN6I@DkrW!`TeNN zE~C|UEhyNwI?0aOaH8rHyEqx`&owqW199JwLtotS$oHo$GEx{3ih7l-CzI11&(fDe zoW;4PTTQ7qSt^*@}b2!u>nVo`0i_<-z*o# zbZptFlVwUnXDC{5;y@h|PkdE4u(OUvYEq6OPDZqwG9J0!Z0z4w`yot6WgA&a1~&v;^JP$-^msQyI52P}%NF)z_in$drH^Q)4M< zB=C?wf7+=g+$~o)O{(d5Hwn%oEg__2pq@rgO#c9_CDYd?Wk6b|#bV&Xxyz2{!TKlH zAKsU@F3fKxCY%x@M|A9x^Nr;(Q{74IR7Xln57SWi&@}Q$;o&9Oi*qXYR>H>6dH^&2l~dygi^gflML{(s$?J{niE4czOt-WI z4=5yOG_vZslbdoQN|P}nDy37 z_1OLqw=NQtOYX1E86V~P{{X!)L}O}F#h&uq)dUurke13-j^`C!ZoF8n8bQl^4KF?0 zqmAXug2$ap7M^ z8~{3CQNM-Aj_uw~V#!qGpt!XyJ5o+P5AXJ-mpGEHGeK)}v64>U4hC{)GUVe+5>Ti$ z_DIm*(OHtl)Nk%QSrEF0$T{IF#hK7;ehDWRBUbI+7zdn{GfLg!Y55YGXK#lrgsTTD3CO_boYf=GMK6-wz2E@Kyx9PI)17ys zBCk`bBhea&^GOb=Y!S2r$Orj;)h9AmZVtqVw4n*YKDg>nt!8Xg!lnlfq=?qjs&uWf za#!#sWx>I%1WM!Ty5?~{{S}crDYj|3ZMi* z8ABHvYmt!SZmn)*FQo?w2mb(c_6zo_RiQ8+j^xQ|Uxv!}{+a;lNTDrOYm~(Z_J$OO zTL;AFI|e_kF1$i*47na8TZo?5FSy_Z8RvoD{{U6E`2(nVR4@UfSu?GTG`3k;l_kZH zwIN7L%dY9q6`7G^~>BHK-Z>2{vw()%svrK`*k*Odqd_-Ol^ z^7QdxR=DA()V!_Io_^%lx{+5_i&5>-+)M5M0QiS@V+7Lqin>1o!j&(?PVYJ~lS(Fy zMHehZ%J(&_+lvt`kS8G$WUIn;^r){Mq}79OT7NE8wMEO$*2r7o8%99&`qv?`>Kl9u zn^x;RoniE+FF3RTl6sNt>FbKMu$dP|7WDrBh;6hLY;A?5Ao~4z;+(k!1rt;SFwGv& zU_UWIWw7A{Zsi~ofuBm(c}v&%@1`3H1-7!U2mr7Lp`g>Kl^M4nIc{Z!@^`*gN%;8JcNw>>D8l1!BllB`4U_f)&U4{ zB|DE^MsRaW0usAXC2T*@r#U9R0CJ-XQK%4D;JKI%544^QVz zBEh(623dMN**7O&Pl)UY%D_f>!6%A(DbbTUTw|#U#AjwJc=WZ#P7_c$%wJ2cVZ#3aqZ$h@aTV`e9YGas%e1n$Miir;GV#tc*id?Q zP47^;`sAd;wmw1|W*`U;b{rnqt@_4(mw~4w#M63q?2Ci^KPqZ`tta{qPrWH&$xd41 zM~@-qUPw!9tx3i+$KM>|>s(Tl0V>9-7gMO&w8BJ)tGPQ4D(&hCVT8Oof93C5KN@D- zUV$Ded=@QDq;7aG&iEJr0rkgTw4xS|yx3t0w`-&mYjlM>A@hZ+{{XIeC!gB3epeRp z4Q#h@ZT14eM~J+ro(RQqIY7EtIZ<0&)Os# zh1cR(Z5zA>KnQEmDmdj{xZqc|6zTgoOl!;*<<1%L2wpIg&~Bvqr&C+!DONZVZT2`o z?OOa{k?+S-Qi4UFvz^(E39;W5anP5bJu%iD@f=)ybUgx>(-pPmZ!>-+6D~3%vB72o zYTlKn{{SP@4nL(Zx8HPRdne?LU*jS&8b1)ANh?>czpW;Xs8w{e$gqAL+n>2gIWNw9 z?MB~B`eL1gvr|Ox?171=q-$@)M{U;WNQn{v{a3aC3CB1X$6BY=I!*?NWv>oH(w~r% zwP_pFaodiW&tIhz_$Zay*L`B)9S=?~kl;b<*x>qSH1k#|*^or0qbf5ood-SEeLkK3 z)HxUyApC}Mo?(7Kv~HMY?`w1ZqmAMOENzIDbUkvSInO+d*8M|h{{W}2O$%F!jAIln z7*8cV$GuX1ACx@HlI`v?ypl?uPzldcO;2ij`sLpxrZicTo=UJ@iyW;P86ICm(PPL| zY76CW(!N0d01`C}S&?AfCQe~e@`Q+Np+jg21eIsLD@C&7662`RbbaJn;j$Cqa0c~f zl6|pDt}~vw>j-i#7G$lM*xcAh3nz~;9esY(C*nM4leG=L$7o@wugF;{+(KJO^(U~c z%8izo$8ilyET`(&mkmziZA$R%vHt+WaVq)Mj-%GM&AIB!rjnTOvMqM^K@7>-ca-|$ z_N4GX5A@U&1j*O1{voslI9ectpFxf&Nt5+dgu89h7u%K6J40%TAt_H7;<(}fg8-t{ z2`d}(8%s!r>vCX6nDS7x5wxfi$^ElccQ{e)cB_r5+}afr2z4&6g$!Vvea$YiTi=yF zG;L02{A&&az2lS)dgrAJ_{(>=z>XJTgk&VI!%;(JX9JAm_WRbpvI>XAO945iyt_Gj z)XlC#uDIw(Y^lSXdkpjyrhTizN<2r?!g51o;XhhIe0E@%g-U@fxobW~RNmFNPx(c4 zf5VT#jaRE9H8WABMVi>5`fY{b#|Nsty44Q+545W`WkegC)yLdvNeEcVPs~nDdi?ar zMoPR*yb?`*kWc>rtG&_RAuGqKha>i@T@k8gT4XrFP{QNCfadY?Uk`lCSJ8%YTv)iQJuBl}?h7_dBC4 zT-^C$#==`3v|cG};Dhota)i;Gzu@IVaVzl~dBlz9!&X8)kG*uA4XbYPAUegW;qc0J zAu9)*;9|LJPOXr#nGB^P<_cC6zxAT*cT`51xICSpj_n>uSGGW*q@#2InNXS4|>vAuDG{S z7T6?Ur>$ljq_75gYOJfd75I0jqFy1(yj^0hUe$!hXy&a!V@eW8_<0#fC0{bTnxnE;`<{|z6#=)#bymPo zqJ=4YQlfbGstYxf^BV-CBI<@4X?$(@oFatPH#n`a5vUOq!dfINc*f#sGE$4WO@bl#%}cs(1J`CtWwEUS5|?nmYym01U14 z{SQm zwM#|V?ANQK*6Um+ZYV(E#!k?$RT6o?rEAkkfYgZ1DM6Ka5)|Md9^HG^T4z^Uf)-@G zCK9#;Hp>aZpCjCKPxa!S-5@yRTV=~oPw-h%w>55#)?85RR(n*zi`g;zQ#sb5ZsBK! z#iC-_ZK&fY2qk1^>BUJmIU-S8vHWHep5r9fd%E3p<4_dHu(=?w${l?hK|j~+O00i{ zdIwaOT=8xen~HfYg%1dx*aoPBs8qBVk{UiLT345h7^aZjzI^3iaZ;^Vb^$CR@7PBg&a5fwKwZo_HDKHTlZIm*BqKwjM{sq~*=$01EHg zLJZ0AqTVlzJu#K+EHuXrq;^ryTAz6GYoj2}3Y+;n)XSH9v@UDXW?SJD9}X&(LZ14L z!hq3JqgW(HemVoeZSs{UU>~JfYdaJ>#5ZJqXW=|ZLRro*JafNP;a-DfdZQnP53EX{$y=6OYrcmKVTCQYu>7~a+1TDfgAqnHR zQ(u-f&ANOW{HWeiqP*igS8hecmBvh4TQ?$Ba8~lZW8bGiQeTa>2d$`ybXy^}TtF@y z_U5hea~56@u(uYYIb3*RBZ)E>mvNptP*YtF$tn3$>ygD(TA?CR(q%Ax-N>>p>I!}^ayFI*aCG+7a2HU=9(Jg@2pdKPO= z+m={*3Kq2wE2{MGTa#>#Ut(NKgmxAYlH!%-{j2C!Idk21Q@15b33Dn6PypcY0Hv)x z28PNCf@HyYZODB-BaNl+E>JL3JBp>bSuD)jn0C;Wg{1&3<(#WH_pI+KZE~DLZAWF$ zk+~`$;~tcOCgQ?Yl%+}z{Jr*{rC3zpU`N@FVCpQBZ@#{KFBKjd&H~g9KKQEJRjTld zLeMALqrzT1N7k$;W9mB!R}L9rpxcWJSEyEN zH|N^Z9oVe3;mUB25$(C-)Bbu=e;!Y`ZQi90ppAc$!sOibBt}^3wu{_>?TVjm5!V&Q zzcYFCs0^cdJ$*A;Ux_Mzf`?qpMg~$bwB!8_lJF8W9 z5p}USZnbJOTbON@02n#(6S)5XD*CivWQ&Ex$qJOzX30AevOyxguSFZwT=fw>Mx|q| zxwN+1rQx5Ic-{7??~Z;I$!**n5!zY9Ocm#fZE~K7cK4q#6#CMW;UpfWjJI1X`i9vV z)y{-wDFBe73c>#Xn5dlI{zrM4LW+PoZm+{q?8IalrJN~}7ARY$zYknHAJ zemh_~76J;u?T=b*W1Tlh-=wno!;w~Yl@6oSiYrh;u+5I->vTn2mhj5Ar*hJ-w^|H1 zKqQF{7iJ_F>rC7&df}%cUoEYCQz_k*s9{I9{P(HNMQRoa?Z+!=47h(!Y4VQ5anm2( zliHbv%=V1AvY@}zGV)7l$9}caqv~A`9^Qr*sNshak>VxjzA?|B>z_}0uNE_m*p^}O z$~}ml-pfu!N>@HU#b6b%cPT%5b!vX&VP5zb6-#3|ahLEGN2mgpcv^1tCCBU*`3)Aq zQ?fiF(@Mbp6ndZasrEI@8+6kdYGt&xf5&zqE}yxkh9K0xih)9O*?PhY(E^(?(7bR1 z3R(B$R7SA;L$<=UN`*GddQgysBs%m`hR+xWA6lid-)z^Ip~YU|1uS%0!+&E^zlb_s z)VnN~zv|`hAgnOUo+?-0XdS-QK6SIXgQ@xO##Tw&w31FeiL6xF1A$HhUUC+NA!FuB zk15Y%Sh(6i?NkG(vauV8SNTm0wzV8-02Ax)Ua=11ybzW~-q|^=5oTo>m23wn zC#EYWtpVllOP(3WASX4NB2M4teWZHf86u2oB=ott7bb}ul(>umMR1f0+zKsZ(9xwARHV4uelkuKwa`;d>~|L-&P$S;#9{Mo z8?#1_QyDBlB3qiWN?4NtFEP`_AwVd4jC7|Cxu@<8l%*Et@IS*Y5PzLN8p6tj4BO>M z3LOJj;*#HPR*APn$Y#|W;mUmNy3h;H+LF(8G_S1J3s323iBndqq}zSK@Cy=--2U_d zwcd2(ms2j_{N|6!rJSoD-kI3VrBnCYATth8;VW8lDUIG5pGXsK340wxb$|i-b*^AE zOhc$6a$fPL49i+4!45h|^8?ub0MG4Guve*UQrGZEklQX3y+OQ%3aYqUV;NYDE@3V6 z;i=LQpG;>IWsXGas#cdN?&xoB78SfGB9pP1t~0}Ap4%x ztCGY4uEwOZw*f6*sNaUM)DDK4z(dbRY$s+1Oqx*C7oH@gI3xO19-EAbQJiF_E+F6n zYMwk+<#qtnbz+w6Es|3dzk`A0$Uk3dtBkmhtiSO4WI4{n4hPbtVli<-meUXI2ZG;Y zS-#}9kO^@~cpgGkQD#8KD4}UXa43+U497X{wH~w|<>+l{ae@dq$VlV&prTw${5zj7 z2PvbYN@bz6Ng3{pRG<|V5$vGc+a7bMkeKBs&BrvwwY*5ml9cp0q_ZV3wQOw!JP!&6 zjcwxmRGw0#3?A8_D*z2#)u=5ix%u3=q9aHh6_b(l6oK|(LWZk-v1pjv$1ckGRiC9& zOiX8?ILwl^(zN5mLGuccRCb~`TTbnVpjTRcBg9aTLB(tA_S~mhX$fel2@B^31d64C z{`p8tSvlbERsxMrH1laY2psg{u((J95gWGczw4t5el_wc-Q1XcbY3NDhS4xMCK@o`m0O0w8 zlmNgf^v`O?TIjnBSq;r?1x-4D6ojuHU^() zHz*<0{}QsYC+Pg>lJqL@H-QbB;}Tgq)Zk>-F`giZh_I5__RYPFn} zZZAek-p*6vjGTaT(Ejx!Ww*wkIkyXb8k5S;`KgrItj4>PFUp;uBqVW)gUj0vF&W3U zrt8(UDZDc!o!g2CQO+`bu}R>`X{oL-`d!#b1a9OCaUx(`hC>N)$r$}Kk-@3OCPVK_ z4g{i0MD9WLq4BN8=3-;USm_9G?axX>3Uy{%VQMRq{jpQ#XT_6IZOK~1pJ_>rXc1EA zOMygS@NxB`^wiR)lMP5h$T>LXklfJC!sw{-WcUX@ZHnE^JG4P!#`|eQo<8xEx~>bK z=}gLsF~((3t16zACL5|OzLt`)l?5I#Tct9o8gbO2v`CWo{{RvWGr_6pa#>ZunQC>X z83P^(!An@7m$;HM#M(UJI$rI@@^4V5sl#q3sB0kc&cmk zMJ&U0sO3&AuvE}F&Nx5Xmz#smUCq8@VnRXkIOa%Cxc91|mf1p>7+O*QJ9)sO$&;pm zk*M6$X_C}-(HcZ`p@pB|I4P%^e^%-}I=Qg4_=xN`iCUa^5Jw$2sh92veaQ-aq_%{% z4mb+WG(Cdg^p=zm;@U{yl@8SW9$r+~`#TnP#@vMG--sH%{{X0O53z8WB`l?0Xu-@R zeX3qEA9_MqK>-BguRh$@QP;Xk1eA-a-38{+!W%d)eNA)iILhYTTZbLIE#jgxgYxyS zr13I?iZ3z-1qr_&pSn%8Oh{@#MpPba-Y13K`meQ9~Wir(fkvrCrzg+8%*DOj}Z%lpx>?59M8v zfKubR341z?w4@C&WSHb>+Hk!4%k!=~g(0!&!K-^z{TBvW-?PYi6X^sf9PCf_u4^Ax z+ET${8ceH`~=APT_cMJRn8B7xbD#jM+PB)I{nu``pjby>hp+NrSP0sf8 zQkf@IHx;)?4Jp)cvFn_3K>q;L`nCB*xD(CEDe~=Yqqjd$GeTUAvMr`G848a*7O}h| zcO;K*y>2?@b*O+^jhb~krYxmsRhr_lcZtv72`$wtuTl(!+n!T=kV zeegO}C{*_}7G9u}T)9VBL})%Qgq?%K^W{GN^p4jp_){D)3rwSS>4Xo zS-&k(?thotA1d0Ua1?&EFRbS2xw@a?BHb;F05+0GQ^3wK$)d^QV(dzW0u*Gun5R!& zS26h(tJA^NEM_~Sulm*>^mME(`BxTH(?qSYu;pC$%^wZB9Jrs9n}c5(>xE6tX_NYW z@t)iqVvt`n`r=RcnR>EY(9)ueH0D;UciZV*kSc&-CIDLDGq34s4n;(Eij*)^zBYE^ zm+zG8JTTr8oT0}F3FG?K?MrTrcDAtny~#1zXn?#Y&yN29Q%a{vOHq?;V)E?A8p3=f zpaPTc#UPd%5`@B|LT1>$k+|z7SW>xLL1na~(IEHwR;!H3me>uqKI;lg@4J#)cO(v< z-n^Azyt(k^B2{!{!M|%QXJPa>^vyPbJ4V?cCN`t6$#&w0x3&KOYl5;m4tr*bj~ZxW z30D6A5@}K9H6__`E^sF;-i)&0abu32+?-RW_WRTE(*k{g-xb#KJO|Ub4^orUx9?Os zHMVZrqEnXmQLN?VB~3EpJSgCNpmg%>KYHpc==feD=ia3)$p?+$K?z9qz^d^0$P&yR z2Qjhoa?3=&$chyDrL>sn3K69`5|rb&y=U}t_lQP*J zbaz@toQCvtjCk@$Sz3D#PdwKo)Nm|zJL9&dACnea$55Tofp1hcH$g#2%GPon13aHVX-2NqNP!`{ zY`7BSL}h!vAg3NO$3xFRIj0BPHrW-+(*Bq6c_eYl}7(yUiGk=wIFL|9BC63QFEQnESsp{3uYTUMDi>w|G( zx0INe!d&#tHMrxGlaPu6d8uF35iW&M-}r}Qx8b<9u%#59qngvLZYZ;9Ncw$n(A1aG zl_wZ3D0k1NS`tO-;_PC$w)Yt_4p%MJZ8++70ZS!9ha&e0ww-!I$WMs-?<}cGJwO@g zK9r?kV}bxgait(R1=i(kko0w^WouB}K9$)t`Xb#e>c2r+cScEVrrvKQ#Q}l>dv+Q3 zs4LypHH9gJ)HJ;$jCqDqGCe;30Lqh#_P2PV9jXh5aO1*`NCVeCy!EaMLuxNBV))7G zSn4U)XmcC6PPRvY;=-CrnqE|)-y^m^y&#r zooUr4^xALcDfg{V>~fV9%e`C|83|7E!N%o&^}U(1K8r25mi*`qW&aWyH| zsr7sZ1Zgm1w986Mo6^?T96h)n+Kkoz0G(?1Xu4kIOD{L_M<4_?4?lBSSf6dUK~2g{ z#S5Ju)seh>)+a+&6m|DVRvd%)cVb<t8u+N)-H3? zbDMT-_|B)RN1@}lJXHG{4)mszabgSym<{jP>heJ9HxOtg>$x{sZ%S`T!fl5J(BsNG z!bU%t6-B4uTXh|Rb(ODBXjsff}tjkxQB>*-Dn$m$@5#gB4TxiXu4FkvTRzx>zA z54W`)Vq5W)wR}>ZZN+2-o(H${rtMy0HyMpNXS94orHmOe7B>|4I2|#9CQE+*H$3DZQ4AT?R)OO!X&NQ`bZzmg$ImUWb z9)Yl1?tooxDpR4d3vDd<2po^!tvJ-%FAm0BqSO?&=6tE(W2XX|i^Vl1$>iG-A`LmE zkv4pmTe)4Jkd50Touz!7{{U{Zzf$StTNcBSX5B7GTESW#Pndvt;C(y#)7dv?ZP#}s zKX75~$q7e*u0ZS+jRXT(zhtId5pD!>Me)nM`tf zIBg&$n9dEL9COx~+o#*VC3fQtFEHRI3TR-H+W>Z=7bi?y3ZvYh$dcjnp9(0+9Zzik z0P3e=LyNOh3XrG1ghT=wwOmIOUDBp{+G8%JS|dhtqRYuqq_v?hjMW&4zshgP==LRRWBGlA{U3cu19!5dD9 zG2k7%rBh#7=uc2F^c52oHmH*WQ18)lmco?dWF5!Q1N5V>dW!K6O)}e;bgliz;UG60 z6)1EBz0_>PjNG`hnp7gs;TAcWFYdM&1 z_TrDjvPYIbVfVqJG~SfFv!`V1ZBPl=SKS4QFnXCs8&c+m_5`oL_(* zbbtUqF$30(&<5rG!X)t(@^7%}eMfnpCrDc1Tjft6ho&q78qdr@_2!9*q%@|ImbA*7 zI%URbHIBfUF+~STzO%bCl;h0xBP0L|p;v^{?$m1sjQp^6RxOhLAS*($nwo6b? zi7k7bchrH@4!^ZxkO32vvo@i!1grRB6L(>j8dHff0Vin3^U0}ejk4Ag8cVX}zbz!G z=2EZ{-VYe{C;3p;SENe3yCPHWwg~_h)w4Ol#yu$MFjkw>Uk=maFDhH=Xpj%ql;6OJ zY#CaFWe-;0?+}q}vf3DIg?N58GNId(Or%<7S|K=#g4#=}Y@Nd-sGhkrs>!Hbvk4Y^ zGScaB!ll0Q07?(0XglP6KK|nY+Y=rM7LUizaMf~T36x(j9{F4 z(ALIV4XFxCp=us?v4Wq!`cS(NZWrbZ-KQeGYL@!upNN*i$aLp$KER&eN_%qEj0o*~ zHMx+rt7A=|ZSx;`S@{*zz<%W&_F9C(H#(=4&IfKflT+z=*`>MiQQ`Pm@Q@Dxdi$DD z0vG4bTdK&d@(*Z4|8qazMOMgvWcP?5pG<22hL zBHvmDH=k|1YJ1#AA;O<>hSE0ya3!`Ej)fp&BdDqNQG0V#KVVnG+8k|pd2w6bhQQ;3 zbI^8fsKtA>8%B7F~ifYcRRY&qM}?`X&CjuJxwK>rF8I@DNwD5TP&axxNadw)48g- zR~v?-ZbR|ncn<;)kip7F)|=X`)9h+MNE2l#JCITaGv9Y%iUC3OFlk>Koq!{C(>j((^5(b}2&h2HUPvN%w< z%2J+|(<#`M6!VTd1N|y1@ft)`X}2x0TX{tiFn4ExkTLwJz*eHakpgaR?JCcAj#Ci~ zs_4O3Nmt4;Ir`I>Fyy|dR>tH#EI3PxM&eFC=k=+}t-2My@np%9HeqLXhT`}DoO9@r zT~5Tp7qkJN|daVk4$#vkn3WbaCTx{WcYxo zXgS_Tp{qCmEn%YbHf8RLR+xnjeXc`l+QWdCT1FgEz{-!`n&fuj zN9<-HOm0@(tu_Z7VaRr9EXP<%P}&>LeaZEqFP3)U-jxpCmBdhN5}2#nIrXM`ZFZ>k zqz4x_;8vd`#iyb5$8T)=*2ZF6ZJVD>)tSC3yn}XJ0Q%M`0~llSB$B;ACO-n(r<;p4 z*$>HZ?MP6`B>w=zLq%b`UD^_ylw-zyLw@6ugpTw(^C8dH%moJ(8VX9(2Rql>kKUW2 z)aAwu$)6P!Z%R2R@jz24{{SvKeJXF>*cpL})yf1}w3Y5~yF&0L%5346<_swJ^3#^4 z$ng^e#g8f43KjEzwLm3KG8l%30a{2x0RA3%JX4u-E%w`k56PMt@QB==r!^mwWTTVo=r$Qsx7xE?ud$+aPV+e;s{G^dlTR2 zD2Meka1@scmQ=RRLx{j4r(mUcuId2*7^Csx1>;fZY0zLxVkBH76z2+X=Yd>W!}xi2 z(-9h0p@xUvntX)|&d_@v#GHRx?1oF)#%f~5l!hX(L2-Q&qeeeslPYpvdQ*}jGMq5t z@wF$~tihir3Oz>Q@*OlM=lyMF7(4miu|X~K6QWd}XT^{>^^ zT!?ie>1EBxjLyP3e19M?K(HaxB8x%B$icb9UNZ-*J{+*tCKKw6`%uMi~l0H5Xi&@NDfr`Vq-Hx?jG zHfx27{?lrMp{*#&bNa0(AYHMj8N0dmm4l;XMt%mI zc3i0n{vYguV1Y( zd5O0s&Bsw(ZI(!!hL9Wu)9e$?Wo?P1nzp+4gLZYm3QOeyDOc}KY@%|esLm-mTep2n z6iH>4Ky@KODFXvPTJ3jTOD%{{;@KQ+30gLlZslG70Eg>QSB7-lS4yJjwp{^y$(<*1 zk3E2`@9MjZSpE&2cFS@=A$|lvRF9z|l+0c1M-)b>N}F}UMV)gdzVCvS<#=lfbJrQ| zS^h&3?1ZrvGd9?%PwGmzy|=_azpwPDSX!Fu&BQrzmontnMFPBI=$@5(pyyciE}{`r zr<(z^`TSkW&wO%zm4_oC6B?A8};xf=lQ0>U%R8x>3+_uDJj$HZHuBty%RRDll zh;m$y>OG6BtkbNm+!|92Pi-MS6Rqbb91-hMXw|oiWzCzV*WocCz_cZ`jHG*t4^U_u z{i-RK4o3D*DP?K%r-ewkrG`RQ}SaDd}{*<52@zF4s3Kct@H&XFjwv4^pCP6&coDX$<%!Zgo%xkzFH2{v=*4YGThU zwy2G8l%L@rTI5n5TzP3yFqQg_^+c^x5z7*7&skDl`BNk-l^_~UQacgXG*k<7v#yVpo%mD*kR8VC;GgS7$goFnDV8Ilm%#+i zmF3UScc%VC-ryhc5hq}N5R@1eoJ8+U0NH!$@#dUz~7UIw*)oM%9ABZM8eCCEjvj8Dd1Df1V4-c z)hlWTBoT_)_?d2Q)v4t-u;43j?nZioN5Ax?cDb@#DMD1g2^|xhReoIuC3>E=7UZDH zsq)h)A`?CfWg`IY=lRt>iH{A-1a{P<{BusLC?}xpT-4gbmlV!3QJnJLDczz|pPWTN z@jL>&I=tfp6&H{#EPR8NE_NxYc2&Jh$WN7_#&O5(T4J|zb=DzS8$l<#$-vLl(H3dw zw88NrMK7so%DyNPk?-`Sl65WK=C1{&TOMqwZ8xza9fd%r&>7?!1jjGgS8usCtHT4w zS_vChgsA&^3e|3kw(d!Br`F?Kl15G_Id^M?#o*ND(6#Ld1-zAG+?uDc*<-3Y3%4hk zT2e~eXmF4LJeuOGk;Q5i`sx99zCm%d!e-2oDIf|T*Ne9JZYZR3;zo8> zn`B>$y1Msic#SF6prwa4(?X|PU91Od0-)}HFj;`$R9QHmx^yrpVH z`;>=@6^{vIk(%};_B?4Xy>MsZRFvVSf-s%lroLkH2~$<^YFl8q6yngG+4d*5`&O&m z%VYcHK`C`5e1bZkwKbRJ$)>$^al{fSV{;d{wt0ZLKNXf|K&p_*u^9V;>>&MfZ!wF`B*IP-;X z9m?uJHB;ioTacII@j=;}u9raUqP@k;@_no7P2#AN(0_XRm>5ep@^<;NosGG%Z(Ovg zBq=F4CX`#Ip$RBz%BT+|z^@s2Qi%I>t0%2sUw_O7?v@Mms?c7g@F6e&xoX@ZmjvTNc&aXOTLiN@;(wv z?Wy9Bq44d6=kHVPoiT7>m=0NOR-hdHM_mD2dmg#(L?X*#Y1bpfX}Jxg<+s{FSo-?Y zapvRHUJuMY#b1efvrp?OO{kN5s25w*XQ~0NjsiuF@JpBDW>|D3X!$NtYxA4tO{fcZ{~2r>x8X^^c&y zxgr}Y(`>Sc>KRjtNE!Q5&0(f4^R2E-krvq@2^o0}#|c>W2dT|lTW#^JjqG9U75vC5 z%2V_vh`QWj#%MG^E)??VAf-O$yCEMS5@!Ab@=HU zor&c^dd}0zMo<|cwI}`SN^QP1<=OC_x7}ZLUPM0DQaSaZ^<~k!TkOQY=-Xj(O1847 zO$8NW`cm@k1nx70UL&$+Is;`crAiAq$UOBFu$ES}HL!!zHP$t)f^?f}ZzA5zILSML z$w*ftp##&J<}0_q3Uar&mk^?Q3Or&gnuwog!kADJ3P`ObDMHkQfs@*p+~G)D#r8bF zbQHP8Iv2S~*rCBSpr5lQ=)poZRHPt!n%alj1SH6BkDCD2HqhIMA;kq`^idcT#Vy53 z@D|A@ughCkH~|Lnf|8)YN|%m>CyLHFlA*a$;xmunP&uZIHqVE`&;a)X`q#-!Y-LK0 ztQ`5s{{UL!txX5rV7YR2MulzK&$Vop{W2GGQmafoS zg>Je=Xs^qcSB<}4dd1rgqP2#Yb5l6$ZjU13zLbRht2q6fwRH}*=?y}OV6BUMGy&D; zik3&vaawM-D;}DBG`&8VQ`B&$d_qFL*{zRhi_^`g#QZ{-StBY+SkE4VzG)1$ZPA`E zBYtZ+<#d%Lk^;SX?NR6CV*G$VIQn(pPfoJg>RDLfhi<5N=f?AF-%6Of~Vb)H; zj==gWe`S10h}a{Ov4r$Cu-LvMKK3QI&}bJDaKB12)p z&p*9kXp0hkoho)gQoqOtBDVMLEtoVt|Vs<`=obRqjcqj9jNKC8^Swb(w6oqM^XfF<(p( zlM%og+)r`==A*5bcOxv0N>5x>Oj$n_A0q)O?ng?SGBTLF*vKG=zGQUAkjhX2Do$13 z6q`~qR{A5hRh(p{Bdu5i360BrLB(yzQb!=v#Or}_YME~vmU66sFg~<+ob&6c$ixu| z((i$7+P0L9rv*fEYwb%354I&kY&W=mqVw17MQ=-J2^&(KxjfMGpKQch5H~hQMAskZ z$V}hqVtu4;rZl9m912^$P=Yg`YN^z&KDa&rU?s!dRSRQm_{x_ZJ64m1$?Nr}k{+KS zu;RRImkFX z(^lV;27F1#DsN#0TTdz-{{Xc*z08j};_}oVNl+^Qa(#^kOx5f1DcymnCC+pky9R0* zcf(l0B{;zYwGXB)2{JqsOHhi~;Y%Ekdf#wb++;_N)^?90V0zMfEw$$^vQWIC1ZQak z6ZD}(4ulzkok%hArl~hINN}hxB#px$4_XG`Tad)R1UOzkW49v}gA6t!&H?8gTyK|h zvPCX>T$kgQqB=5>g(RF%V@ok%J+3j+j!4ROG`9%(m7HRkU)2qaPjMuW-ZuOH0KrSN z{IeBJ833g&^PF%^QX_9ekd^^ql;ub# zl>IC1du@$l)NI__bpHVPKou#aE9Ic0+OCl=3T7+oX&cBS90SS4JGnz{RG9AFqN&GN z;336vOUig;1a(n8J&vM#f|Mo2mKl08I2x4B?s zde*m)GU}#2K;|O3TUR!EAG6qQ9y5s>&NmxwK$_jP%D^XMS>AKLTy8 zbF4C!_BhHGa7WO6DG0c>=x`F?J=CF&f30GXkpQXK#g4To9+v+AhQsP*zYKyKIONgR z`STR&PmVCJ;m1ltZE`z~GF_0O8|a?I`cpRFZMW3nPSg|8CnBfJf~qSjf+aInh^noJR>-W&Z#R{I6Y1};(|hvA{tb!t|==A z8RUC?X;_iDU%@2eOy~^5g%wCisu~+X`_Y!h zE)Tl>xw*nDr1_BYmB9Pbx%O>G8vfdYEx8yCtB}gU7{?uclx&7sOoYjcD7p$tOKJoa zbKm)X^~lsWJl`M;WO0eE2w^vt%#{gKBQKQ$y(=S(~1nX3|_<5Tc+mN%iy<&6T+TBa~Rt+_#Uc z=1#IE71|3dyrZ%!u@HCXJ#pz$w}=l}FD*ARLY7|noF|-<#~rdrs^>#mddjcM0Goex zytw0o35tR`f!vTrG4D{37;Zh`DU&J5ZWFzJGWRVNj;B@~0Q|m@KrD85~cLi<|)JoO}+Lu+|Z?NK!>#5gs4&M4C2Mg!dyn5 zZrtG~aoNc})E2k8+2`qh{{Sdk%I?fzO}bjom>lOnYMs*;#p+9p`)%IsZL+x)K`b`l z0d9l*K$0q*?KyHo0vWkSnu$Zh3u$9`N$xYnG^i@r%dIj7&EA6@Yk=zQH*&Dfb}hmx*AdkeM{tm(0qS=2 z>r?t-@N|Bpc2Ifg;jlKP!}BQr0AbVbO7Z-lJz6|t3TRK+B5W3#+NYB05zkH%D}w$$ z#Elgx*-5DIBB#I)B6e<%@#9r-I+0`oZ0|u!#E{g{?)lpnJ=$+ z31OvSYEQ4$sI-lhcQ}qP%G)mBy3okVv(q2GDantOM5rN8Dd^GH`3;MMF2!ZvnYN@a zBoA{`HY=^>(+O$2++xKWNJ3e`Qjf8yHdT7GO%bmTNJ<}ZK@r?uRH8qa1N+jpwMyI6 z?>zi5Eiv$x+fuxUKDhO*49G|#BgjW^0`(YcDcZI9ZW$VyVp~rkvaA9-QoAzd+vArU zVdZ3!g*r35pW;5$bYVMC+)L8}cCA~Kgz^vvYN6DsW-WjhHU+E@gl7kDr6(C&tVi`G zI0|D0zQmWruIr+r-Jvp-y4U!`C!bS_2ElrkXGMb+;_Nn^P)pA(L&^`ZT|q3eU|Qa&U}vssU44x$*sU3uS_`ruR9b~{`>IMO3{W!1TrHm+8HJD>U9zSFj* zmv56P+ysRkyLhWmxg?{&Pbc>47FQ--yg<`>My)d37Q zu|boP@{eMDI@JB5>ln!R0K?{5)wQrr5`ue^+O}RH2+g6CpA{)qR^mQYDD}m09;Jk0 zVg!Q5Wnq^lPNiJbt)w6zr@~PwE6L9u^y=}Z*|}xpu-j5pl1naNcw?SHKHjybP1|9y zYgVNA@Z6}*kB4b^DN!BBqA$9WPB|K4wL@~}++??i?J!CZrDK3V#}!61sxs#lKp8Uy zxUVUQs#s}(=5a%g2YmJCKgybE+r_zU&T3TB)KxjP4K%zLK=t;iYk0iL!Xnx+8GJbV z$SEhU1MOPl$F((Zay*oHZ}1r{ujWyt<7Zx`XHV6;)VsBQTHdBb%GYL}D%8jbQE2s9 z$A7I>YRJg9+rKc0ZHX>J!9F4!a1z)(iOzWAKSN7&U7Jtzgu9pApvPaqiM%s^ya6oXnN&wg>AOMjR+xWQruQl3bV#fpv`pK zwv~OWJ80BuMa^pVET;o;-%21T*^b71r7ZAmcDZg{l82g@>JG=8 zP}tD!Qjf16YNWo%yIk3EF>Mhd!CAtjNpBA~k!&}~GS?Ct2WxG%zdM9=!0*ik z8tFDnqZRu@k2;hT?Q6}m+dT(rb!oD#n_JfeKKn8nAO0Q8Y)*X#Y9))xX=({_g$>yI zq$$;IIf}tNkFUQK^qVc7WJttc5d|m!I)x~b73@1wNjC=mCAke<8)fFn<-`(lfA@+q z-5tl-E-6jAQgXG9hPRlbsCfAWjpU}&rlEh@Ml-%3;Sao`r4@D{bORNtWI6NaL5Xm< z$&C;r&V;QvN{>u|_aAE3WJQ@iKj&{g)Fu$3l*dL+?!bL$%^_fgan|We%UHBD*NEU- z`BJmcDOvmCxfNIlIGEWcBD?8#{{S$Z4%Z?%Y9dF7w^y}GSA28M4;7->3Hi{|67PF@ zG*&?hSMa2Ib4;~mvD;1VT*%0b+*h6d0Jdo=-UtJ)zDG5(GqWVH+>5(OY61@BW;ZV5 zw-hdY$c%GjL{`QNN-h^m?Ie`PE93##f$l%889sEB1SM->POs!`2*!JK?Mhg<&69VQ z{BH@OtOB5c;k2Hd4_-4~#1%}wMt@1bB)RQfd2r<_NE#! z5#(Lv$=qK`)v*d3=N)n16_~(bxS#nPY|OMyreZW!Y|Z#^lhI0EQIqfLDZIN3*UYPf zi)~7DBm}m+r9<1-*0tPV!ZY^VEdvExP_=xZdhuT0Btg?G2{!qUOHxskpr^=_*a7|M z$q6Jr>{v*vovkd%X416$8%l7g(!L2m?gx6ZYfakX>1Eu%F?JhiPS(*CSX+mn1fJau zI{Y%za_6+YQ>g9jT%3JdlG$(-AtSI)YA0IT?pmTMpSN0@g>R1HP*4B|0MoGJQL#5B zel!F}r{d1C>6F}{nQ~oqqEz1{JoBI16-lD**3?+sYGkstNCi)ooGB;#qwoDHj^8oc zQ~?w~Tk%%j!nV_r3G8w2T()+ZoTc0!ml{kq(4yliJOz7wsCbIxy~HaP?k`cfz}N51 zw<#%%86}}06O^1}{{YWgUHFcsk!u-!DY!{eR3oJ1pp|z6uX;NF05wA3uL9($4=y-D z$pCD}U;y@|m*y{=6vPmof}j?@~9Us8lK{Z-iv$0NelTFou$Ay;Evd% zqP=~*DN##FW-DMJ$t|lR_w}WKRO)Ll_tax~)T(mrD&&ZRMHz8+td1qd5bN$v-H z(+DB16COQ9`fmRK5(7~$0tWW2tQOLj90PNQsRO??IPJpt<4@it2_#y;_MMYtfp1e6i!`;q z_bHTx;a|3Dn#*N|SW#+YX*t}cmzf_xe-^$0exsBFak}i*6SaV}~YKgoj#fVJdeVr|DS7I(qSMGt0_(<>aU& z6$E`vXuUIFVqfI(H5bP;`OEFOfrItyKsRi5%!d&J#dg`asQ75WU*4KLWKm$;(S&i- za)_}l_LQ`zzg9}YjTMp-75@N|y)ZM)HovzH?QMwJRF?~B*yGLoje-41u6Fc>u9BXT z@?^$vj0T9{f!jWmTUQy0jEF4DT3OCi*ggH~7tFW`q1+6dREc#J%Pe?FhT58gu{h-A zOFfCLI*wHNmL^?_{{V*_BWs99LH__VNNtX-@KGKkFUaUzQ0?`q-6wRk!LwWua#B1N zRh`NJ^Vb5TZz-rj2bq(WT`_x=XG3u#w36xZ9+cv-vybW5_Nd)iZMa_?cGo%RvLmu~ zsrJ}P6aeeA@m5lA7kxtVVZvLsYgimFl$R6#005^NPRnU>*D-TYnT{~M#l@$g8NsJ` zUQ=TP{V|Hg4T&wFG~{bc6(-MZf5PCGl!8|0-xXDIx3ttVB7Bx%l^(Jb0LS+})SzEA zZPsJ4Ewfb}lpJhALQ)6U9VvW!9il{+UDekYCOio~7mRj&I^@#}@X5&cFzxJ^<`eo} zN*+XIB2<7e{{U>Ap?_a$)ugPgP1JK8QkiYtxl2wRr19FfX?s)3VcC|;V=(Q2p9{kr zs1D~f_4+J(h2Gxz56443N0!;a&u)}ME4v;isA7qz4Z;P=S|l@Oy0;?Y)_2<_q-{S! zYC1~f*%|!K+_tj?adJ=u~^xMAY^dqA$gO#F>wHd)$(tv>*YIl?sNRU`5YP zd|Kz-rQR30XbL2<0qKA^qVco+f3n{fjxCtJHQg7M=S!O%De&3`Lv5cbfAJI@ipgM_ z!*kwDrU6LsI-t!3#NCvRWYuA6h|mzg?J8;)$t9B&8(- z%8~3V)x~9XDd0&gpJ6(_Y*btvj|wNbaY>H+4FNtEhV(w=i< za^inTCzTBJpb`M!@)SDbz-}QxcQ4SyI<$bT(!lx&tc$%1CXqrVfE*cMq5(C zA%OH^rxZbCww?g@H5sFC7F(-Hk2#QC0X?YmDk;Iv$n>uU+}wv^=q-j|KZ zJY?BOT?sKL-j_GyrNxljZlh{c=ao426)f$I>jmOO=?^s8W&n1jeFwQU*Iks^TI0$= zc`b|yav#D#{{ZVye~KqhLWF|M-_9I$N#32_RE+Wf6=o#l3><7vtdG?fOF!i+ZF0o9 z3K(schXdT2Km*k_iT{k21_9!vETTGCy5|5pp_&nk6dw97WacqAC(ZAaYFQZdQzSNb3E0#=)MV}%l9D>-K*0iLzS zq7}BH0o{YwHFu;hQ6k4%GE&!w=K)JdIQmjw*SI-UGVXThTIK2OEy$6}LClci8^B3C z@#|SJr!TXl8Fx9d-6so5oL&M4(x)`*5!W5Hp>HYG4C8hZpQSu*Oo-B&dR@uo#6iM> zmF8IVq6}N^r<`eehnTD_P;bx%Zt6{eZ8qqxr{On@99~{V|yJzQ+>)7-bU$0%kax-MELTS z&h@8vTvF89T#6PT-Jim~ZJ;4U9=u|!(*2slZE?BZ4+U8OB`EJ z)9r)N#dZgpZqq7;--z-MPw?SjpS?(>-x4C4Wob*8(qHf&4{T%}$_& zo`ylW)ooHQ5~HDVW;iyEQO3{*K~{GCNEK^Dc49I^f8r@gP}s&#sUN)_BrNa= z3DloVX@3HhHl-ku%8;5899F@1^O^4N1LTf!NAJdIjE62Q$uVHLxweP+Wf|-5M#qb9 zg$+_?MwV_aju09<0rkyL%0{3QbVNYXp&~*V_)J7V&euW7`ufolB}AOIlFV3e8UTUe zw}NPeS>oKbE_~M`AoLBNIi-_rav-TvV?14olZ2NszwRo2HDpF91#Hd20CHH5;|-)` zYw3?_OQ>Qn8*!qQI--&XuLFv2Y%^xMSxZW3l6=ptI2roU_g3we=89gB%b~&kB1Uj) zF);rCP*T_0erCQGBEF_v3qj`zJ*sub3Y<9y?_CS=HHd1xI9hO$MtB$l(xBudCp?0F zm2OTm+r;FcCVdvzn~DpDSA($Q2EM17cSGupLj&V&FaxXujpfa`HT6bvE%yMn`=6;% zbBA!UDd{Piu+NoFzC4_EKg@lq8tZvQ=6~e4YSf*;GPcw(;Ll&LtqhyR-drhB;mX_} zKdjMglrNrn>}XiARTkRYQlmBFGItl22I6ts+d2LHsVE6!TO$+MW-!t zY#_At%}Qls==3Qh$rnlA@~I%fStmZd#^gwI}X9^IC0f6)oce`r|C5^XA-w z2c~MzA35X1Pe;Y_0Rc>;y&I&~_eXJtP}d0yNy+=t=7gEB+=}uyc!O$+M_Szyb8RFS zWf^WBoM0Lq%ZeS864%CBl%s&)PUQV_=~Ms++_1&=m=kon$~Kplun8(+Qcpg(G}iGA zkHjk|i9R3YWugitHl6!O?mZ}VA%P(cP1b)Nw+=Q0g0H1+)J|LN@f(1I;l+LRu;Zr6{{H z=n7e51HUy}B2+UO3QB=c938Z(_Uli_;DM2XaZDugskN(!?NMSnljAbl{Q{|ow_96R z_-(d(e7UczY{S~LxB*f5PI^{Sj&|n;bBt_Ih83qs1B5h)g29^!EwhDoaCto3dgad z>_o2KS1DT^+H#EK3RwkGCqA^a&K&3vv$THnPin@eAO;%by*~-Xsx86rusIJozdqEl zZriRh{wg)XBpC_iE%+GmKD6T7r`~b@03CK#TyX~&Yp#82i55$P?E?OY__CjoYCCa4 zn84YX*Hsfin;mfqZjmiJ+{To;$O#YV z3rZU7wzs=uYwOg zy=lGr4EfEXP1b$2a@3v?8L~hABT@4qN4KeA^uFO=_(h@R&%Gh=f_X^t_`%#XA`Yjy z&1p9G(6ucI!WEn(8s3F5Jt7vMap;?Y2qjnt+#gCp^yd)BK|&DfdMFR-Yfah9g~&9S z%5B6npVJBLOI$Q;NzMu}gv&*m+=ZxzoWcJ96~*oZdWx93xf%78M;Ss#2iBiNgv+d{ z0&98OfZFm%Gz%JW^{}TTJljpDI|_bf4Ej-G(-P3IkSv(G+~l~SD`mx_9*2sou-%y4 z9hB!MZP5thJ5J{bce>p{wOq()_MWx1Ben58&Qf4zAYG?xZ%2i&HKUk?MZ+t|k4pE(w!x4#)ufs5mP7j+M6VuZV57%Lv+z`)M4| zq$xW_0(wAFm1=jxn`I@x_ z&wTJ3Q-Lk72X7gs4bO;}?oM^jiBo9EP6~-VfuxoRUmq#g*3tk-Ckh$OI*QtN;4+4z zpPYqahaljf9_Ho6N-8aOGNwt7E_>-=Pa}F#6OcLRN3BuZBrO_ydKcrZ1QDLVds2Dc zEXf`uW10I64O?l~d_u{nbSXsh%XCkG_3s8#9jOsH~waJEwP~*I%Bze}3LVb-X zSXyo(PmJ`3J1NxdKTLX2k)exg5yVMrN(w-6K}2p>emwz3b?Hac#Xv=IXI{AuCj~3qDgJAFmQ3l z){yFZi?c7zth|>H5R_#nAmW*TklcPpVQq1QX=NqXRUO3PCz7v0O(sf;iEhDV3rdnk zJf~^Qp7plj67O<=XG)LotuQdsTk5guX;19(cVDv=I+)5zoL7j0 z)TjGX>pj~=rKK)@lDK$4`Q^rWN+9}>4k`LULq)jHQ5ZcVmjjMO|*Tm)wB! zNk)IhjN#*+-kGZWc2p;nQT{jmOBU>UHu^)lcUTr&Jc#p~2M5zM_S+LvTAgJ@*bhOB zGN+?R3MwD{del_iH)^@OC0nF9Zj!#KQ1U4Ks~c{aU6yKP$hs{{D#}Ywd4A)ydZ_9L zB`{R-H7m7U*f}BDmhOHe0P=!)Y>vn4OXIgBhd_=J7cRGyr;IT|IkW}bU;D5bJ=BFsi_!w*O$FLJA2W3O%2}}Mb$CIzFLL>X+(tq>`gBp zia8qUAn_nv%J~hs^Zo)u$YjYzP=<*}BzsiTHVCrk{#5JV1#pb5?ImXkd%p+Lt8On^ zX5Kkv=Ox>YNlLqdc>e&Nl_9PjH%A4@r&5VboFpYUQU|B>rQ}ep{tO|Buad^1O~l`v zRphCe3IQolI7T~j{{TADonvc$3ZvYu$R*bt{Y)I~PjWrFQThgBce{I#^$Ue-@jQpq z9RR17*P6oZo*Gi(QV8JuzL}=76zRa9X!DBm;_&{7JOj44Ct+rO%6XUKmSj zDZtNCMJpa()ylWYSK;}e@L>9>mXUUi`S3z+NN;M=*v?O`X=#+djBTh=WkPq94X&$q zzj~~nV2o_==H7F}bwj=d8Ktd`>e=EAvMN3yVI?L064#+8-=Er|Z?@Mg z8)Qt4Do9el{9tWf2m{djoDWWFzwonNv7{bf#X)vRoN^sxuh8kbR zOj?)z3TCshC?24Z%|PmfwQX^>VZestiSqc0R_uF$U6GXE8Rh57GC*6MHHo6tY>fPw z7$L=>z7zND@Ajt}D%W#TBr?<{pM0+_?~oI)`vcaKFlV~bnnL8lY1M9d)Qkhc$S3_h zDu&OcuCk*sHXXa-t>^__GM(C2j^y_hIZs=RL!bo8=@!W;)irW<$ z3}Zjiwyoz;rVM33N`prZNoAm&$r&8?=7MhJspU#g5tSa)(Ft`i*zrSn{{S+*f7+_8 zw?OrVRkGJ?T-T+5mt{MIC9noL%?=~$M^n%&Zsg&KBH?e2+&7fViccUU?%UeFoXyRv zTCJhR;~_)!AAicCJ-zCV)uHvgON@KGgu-SFcJPv!JyGrJQ~v;n)1=)mskFgD9{3^R zI!Pxg#{)leNDjj=L-sp>;mE-onGu*D1it|cEck0y-oB^njGWSI+_@Gj%q>L<^$`(c zx`v{~ZFzCl^UBl*Z}zEs{K-;OwwBtO3Cc(I7*J*O+Bn}H$J(gdwJtgyOynVqs3}U_=Et@xpun)9sRqwv zwMTZ~+BZ1sis+wIjN>)U^<}nmT7pQGEyg7PkzVq;OtL(5U}s2-lU#X7M^ktXVx1;u>aB*Vdw9$me9C?ol+S^3qYpX5te)LqB?yF261eSxNX7&3209rLxrx5cn zj1K;ESj<>S-$ri&Ugaur|%i7wym4>cWeJ}H#1aKIoh zo(5`xw=S0pf^JB+79UD-r^+{_p~nCo_`$7rtBj{EDN|C=V`pyEi~;XOFHha1$oQvk zZ!sJra+yKel0K%jwskehu3urY?b_Do7%8_ORC1zSc}W2+r@09poc)C}(mDp$F4rpX z`|mcG>ewU9Lm*JZ-U- ztfi*VMsdg(`_*bdq6C;^DhQTP?e9dGn?bp%=$6{b6SD+=x7XBCyVa4Y2Qp-?6HY4x zgn33iYGqpZ#d*g3@nnOI?huuzQ)@rsD_1sNjWRG=&kZFba*6s;jDwW{B?Q?sRBL1Q z=@0xB#@jK4^5(>i$phH*r}jIeDv`b;@3Ms>me-OM_V@nPF>Q@&m2bI7ogD&an58Hu zE&6BPl-Vu{c(HDZF*Lx(_(?WhE#n^O4`B0}U`gEPh*3n~w66gu0>T=9iFy zvoRx9r-I`(-wxiAlKyZ>UzvWUi@DyTIF@b9Ol8ZGaG30okdk_p9>Sn63UV{5bq+Y= z>nCfV91o|xd2EcR&ZW;0PDp%ZOa3Z|7E`XH+s7bsmufB9;=a&SV>QkUm8U7sTzv&g zTml}E@$X-kbeNy;*pDB{pH0}{QI_~}pOB~Kt!}W7@YyE-(UIJfVs+b;)U_Q895xa# zk8nLrP|RFGQWZtatcaf~-6l=S=BU>6k1Gi{QqDL8|xwct#=M{yzRfQmT;<-hr5oCd4 zV|h)^^QgpFE|C&5JBojYjtTV5X`2O>E#D9nmA8Yn3Ls@&&MCB;lxr;F#736-b^xTL z_Qzw?=hC(|=8(C%(?Z*PRQI?*@WN4_q3v3&@;ONZxiM>(9y5Lu1=J;I{Z-?Y8rg7# zA{Lu`w)&SYamqI%v&!r)L#W*3r`jWGpc$g;~ z`gWiMrN=V{qjFWW$y{KIbcjR39G9EkTt1`u(NI-<7WKVyaw~C?a8T1lD{%XI{V2z5 zaU#KbYwrhSG_#YFw0i+a;0X%3u|3tf;WDhCXUaY3K_CeG<+0Q~%k}a@e-8AL0X}DWFPmRJ-w~h!TU?1A37jAv|tzNX)Vb{ z(<4|^h~F0sW%pLE(?LF`r~av-0(Cifm()e31W0bKef8p?yoPtHgn|A+>)MREPPu9a z)MGUK8$@hw3s)=8r8-WGv$JDd`BzxCc|OYl2|xIcK}eGtX^!(jL?A2tFnBbgNjEc+ z^3*^U(-L1x0W7vi0CzP>VUH#FVTg?qwG+c*%zoySxYQP2jS<-E3Q^u&Cnp2ipIYUg z5tm{m#@H&toX*|{T3$^=0l*Su{1?Wp{O}PI6kttHLrIXhttTe5*G(9G^p&*GZ zjFo|sa6jIpby0_Lzoq+hfcp^}3a5TSDW^V}KmqcTdL868v)u+315txQl3%x`MB-lkg&n`GaIQkS?g=OF!a(u@B9 zsBW#poW`PQ0#uQ)g)96a{{RMRQp6_1b=PkzG1P(Pj--*a`X1h&y)M4rT2;)rU1|0k zXv{HF4hV3+@aA`vd-zk%k$YZE^RXLyz(cNgGlR z9RC1c-iWcup42q1Oc3izQk+T@Hv|HDpHuasr%8)G;}J@2nDN@i7^A}sQcZ;>17YLZ}{4e3iJgr@`T-iAaGczeCeN7g*EQK+gk*8mo1J#YI9K2Di@Ivn~6n~_87)Sn}UYntvCJB5L0 zw(1*vg~9{$-7anpd;NWDDXr*+Dn6dLqlEh{_FN-(_=6@WAq|i4 z)$7MxeQGmM+1GKuzcrW4c;oy(0D-oF{D7p?O^lkEd@MOi3b@BZYG4z&rFpaNd({QK z`-9pM>5WZw3^t+!GtVBrw6;5T=r)8ZOq3uxcJ6$Daa%3Qb%z!3z`X#DTq@d?eJU}S zqS%{{NZW#&ua5<`eho-VT^6MApREo)Fa^3HDSjZ~Nmm0EK`I;zjj^^qAjXE%o1S!> zeX~>gqD96`)c#u05t&9BODV?x0CH+PWpWe9$xge9WZy1vUoj+wvdf$g4=F!-qS6X6 zq_c0iI*AY@C@C%DpInpw06NqQ(Dek@Rq-LfvA|0C#WAz0bX%KGNSYr^bREg*&tb(g zCyt7eta#MuPtn%65TwR+`6)xOngij|ewFT=jcvC@dDq-S4mwF%3Vfh?d(@l_O>st_ zk0u4R563^^Jf+|#s2qJOZi$w4t;Xcsw6n4&2|#lx$nVEfLxU!iRlpeN?lHLBt@gDk z=9qD4kiRM#M_ZS4)FXl^Pwn#WnnIV+lb1n5nzFmet`*PDzwb z07{7o_2d0&mB=>BhMzOtpFJ@FAT-gy#UO_U*Da+r1*I~CuW0cw6n*M6#&7`N+~r^h z1_`C)s%6c_t~V=#%(!rtg7%?gb|ccR7>gaK{xc(Eg-3*>0H0tg3gsF_uHr*&rRNdK z0RFW@Z@VdWr7lvE+JX*K&gCC!yA~1p@o}k1_cb(YJ2TfyYpA-q!tG1ed&$n3vxdY64TNV zA`{?lJ2KfFla7?9N$L$Je|Re2B`wJR0P}nCyXprtd(v-0>R9}uLl*Xxxl>DcMm<3_ zFX=>&u~^;4$dNyZ--maLoz7k2(!?}cKR`AD&;K@(Z-n{&PqXrW^jAV#v;M_%Q!e49Utjr>B3e7rKmH|HYXZet^8Nd)?mX_%c z?fI01@SnXkNOh)w4yerZ)~-x;(j`6<$4q9c;A-1kwv^D0{Dou7xZxoB*EpG_-;9sY znAUTRt529#XtXyFwi&yZpCc}|e4!shNf;d(B;rH4)h)B+%LY5Qr9+Oca@hV=Nv9;j zu|DMZk`VgaP798nKHl}otk-nMT2e?;pXEH0O+96_@jak2smQ8rXqJ~Yq#XRbk>0QL^HHS3 zYv4jwvNBo-^B;QUkZ!L^ietE?6Y4q&x%@l4y=+=sh}o5KY>?U;e+4UBxF9V<8W1Q79cel@9{iD@Z2oci~tVo(7y&uwZ~Tkf!2w!Vjz78l0V*%r9*Ns*a8FvqN%Z+WK5LPP4bi^U@P~a zjg9x;N+voRO8!>Rtdx&ZDV@pPBI$80#JNXtB;zlTRqu?^T6XIWJf;y6+!Eq^&N%TZ zI25z`6#N2SNfi&2DPcyv;?Kc(^1%r;X)DE9CKe%O%Cfyvx4q( zoB@(CUsuZIu;fKQ5XN3LsjQ7U z7r6|r0E725%2Zn-<)v{EA|vSk01>4B0EdzMs&Z2kwNq%3v^OcS^EH#SmQygo3fi}AAHr={g%x3Iamfu zSuS!OpN1?8dHm%IC|C8TS6f8u^mQutrr`KEJC-Gq`5wZzU9}`QjwUNNuNlwsMH}(; zz~ZpEYHdo~L^Wr$w$n-j#FFcPuLNg->qOvjnP;gJ7fSvZJ#bWLcAM&FAmvDNC_+g8 z0Lwpmlh?Mk;9pu?P0Ne7KRH(3c;>HOx9Q87aqGN|K$)(8inOSqps!qtL3PtQVTkTH z)~b@P3>A1@8B$hz44T|xolN7g1%}ETj1-iCxjcO-P1UqCm7&F8)jT^OegiA`htd{+ zMg};fnwHVvv;rM*!|JYcOvuBQrU9+V$Stzs%2pJlgViSnnuM~3_Jzm^?fQ!U09pi3Se>1&Ealyd<5`WW0iST8`{}J?Y~RZZ5I< z5FJn)6qR7s(A4oPvlWQWPd|< zu6*yMzt~fK5BO(-r%8B{_XlqQ}J#Uid{{W7CIm$_jw-&G7k8@Vq zY@@`tei}T{Ps;qY0oRZQf9Dj{kHk$-`dCy=8D~Rl=%?QV{jpLXQFRKzGfNk!&jqE8 zHF}U&{67W~Kb>N@T8yPmxure=FhAqWk`h4m#W#zqbuHD^#Bo;ZF;5;NM|z3&C#4T~ z(vYqVm0$1rj&A;dN!r=|RF-oX2BI15T~MZ*haIPbgyq#MDIc{1bXu5>BFSl=6@SJD zU$>dq1h}VEk++bP zq$h0wG-@G*xrpKFNeFGo;v8-63};}-`_jbRC-{XW!Pk%maa)*WMfEy>4&J<0$V~$J zic`BM--;56dx80=7Z)k11SxH|o^qp_*%bt!kfIbRteE>UK_HRZf&iri6oluE#*JRY zG&dVs=DdV}ley%NDD|y33+wAjlBO9_l5xE~NuU~-Vz`%E0I582-n_faVf2S1MG?3P;$Aa7`c>N)WokUe5F6-#TwPpM7PjRWJ;RqS;L~*al zhZ>VBi*cOVr6EgM=#p|MB=3(cPU9tAlh9I&W$noF5VC}*gV366iBaBP$D@KdC?|~4 zij^^3NQ~cXC^qtfk`F&T^#_)~H*aw-DMw z#t=C6rDViZ#pgi1M|Sp@i5^R&ez8IAoL4z%9~FICoC9x(lazzUdc9@l;>2-spGtT9 z!x_iYwH-AHsfoD6c)c0K?j?Rx`%qzUj7gb~AX0974lGzI4lv4A%Z(_ZB|CssO~IDR zWIDv8B@P9v^%8yfs!0+|RF%d`f>FT=JP>LjYxr(%OT(E&l)v(9$gqLzw9dOiAg<9`rI;X5V^Uo^)`gfjD^z!3ob9p=}p*MpRgl zBm7@=?ck0&{V4rt`3R46W;)cR3_LdchyG+&otKc#Z=)s4kA_YCnl3Qc74o=h2yHz5 ze)PyKHwIL}j>-r?3UMhpJW|$mR97vIL75OZvY#V~AZ-5tTEtu%b{uwK$x3A>%IF86 z{{Wb+3TuBRsrW?EZ;td3;|cO9M4Xd@jM1>AtV%;=j}&L2=zZ%gL&dnO#ZQWqjISJ% z{*-lvZOFF9b!D`vDd-0$*ZbCGqNU6{%2;v|hTNF{01EhQC8r$cDj7;eAiqZZy2!he zXlS^FfZ}t)hqvCDv2l#r(qpA=q=E@h;QESLc8r-;$uS?2(;?H8Db9%J&{v+UNuwqG zi)hJ-ch_XFgvTv6o~cerA9K>S+m@G>qU&la1MOd3^rGzyMv&dX5|Z~WDY1mN_wQRE zgs_s8gt$rbVDzs*rZpasjfe!~BZw`!^DZVULCmCrf^qev1(6nbVaE2Uz6uHGbC17z zDrqe^+pS7<4IkkL1pCmcg5#14tQEe={{ZD6oS&@@H3Md5GsQ_Vr%$-#n5BT~8&-Ct zD}npd)@@e=MR-cOw3Mgi4Xbd+r9d>PEjo-kP>ZARrQ#n^XLneDoDq~C|YW&+!k=P#jBbuwn6hMo72O5{D5gs+p zZTYikP%)q#fuob+dWxaESuYX;R|QUL&w-B($N5}2clocyJ z{{ZVtU|Pl2Qgtq&x=3+^;Kpgww|c#WdkO<6K_xAqW34}IjXK!-GABxjESwbur$Mk4WK9$4@RM5Ua)NYzuPG zFpa({20cen_V=r+&mf-4j#q%S@Im);OsF}E35o}Y_^mF8}YCu1_MNJGshYSuH2zR?D1-7c@Q?ikL@`&~PlL>S?SOw_I0#i4B>l zcqu*s2MuSEueK@+N6Cx%cjht}OGqo_r1D7j_C0>}+HKOConUfI8(eZ7V`_s=_-CQ? zuQN7rk0Acc^*nqZq7nU06{v479~?l4^t`&DqPzr?oIp^pE$$Zn5f4n zX`O*zUs~%nSM;UBP^QSMC1jKP0Tvu#l z4E4o&N|=xPF(~Pe)};QE*Vn6bWm&JV8n{_@1UQupgrxD))4nJ@OQ(@%xiP403qzL2 z0PsRnkcIkIR(qwoJlX4h!!`DvNI~!#Qrbxas3d*p?Kg3g4%;QB5`zIm_$|5)?4I~O zlr8`?AQdJ50L1e7e7wz%76*;-lh!=I@RpCD1B?nYPC|td;R(3UPP_w`oqZ?6Yt$rC z%`XmfGatB1X+iQzkU~xf?Tpn7txTmb+c6MPF!JKde5)O^Mx0e@PUx+YzDzAw`-5)X zBd!ZB#X|OgumW2c9R@qrR`{)4Vyoh{A%LTuu+x;F`VP3Mx$>pRxjf`od?wxh02K$0 zcofO)K8wYH){@{dkl9jBeB5`hH_7tPjzK+2ylfn-2*w7i)w+H<;9A*aL`uq^Wk>}s zr#zBt>y*p&;v4r%L^dHH9nurW`|i9U)$2A4=b8xy!OxnP`$) zb)uILtnxkmX|@RFBk>#4e3Y`k5+}QAYSkV>8X+MrD5r5&c=GnCdxP?Aj45cG_?r5> zM^vuo0|V((b7s31I#&gv;(^O)Na;hSROxPyjZ?}}#_uwL`&B84YnR!%6u+;?Ma|;u zG?louKBJWdcQxcl*2yfTyNio#W5~4QgX(B`$RVCdAqV9qwnIW*Ys7JqrohUR(<9QF z0q!x@^dmQI?!yhV-r11c8B3`@Ej47tfel6N#Yh-ZM?6%zuX14!h|w8Lb({^#CvV!f z&Qz0QVoPN}Ek|)tqK z9F&i4)B`{F_M}>4Kw6a2GFQA~%0HJBW`lCg3OvadVpQ7PQWBJ>D|2Zh1JH3?_<`)j zfC1j+7LA(rq>%I&Yo6l(j6UNdYCW<#(+ypuUAGiFE>rR)1n}Mf2R#7CQ^!i1w*DZ` za%s21w6Si67la``QgP6dD!LY|nelB&ehUvv#u`(;bRhcU*WA|OBB;n6$a*45HSsp+ zCHvK|rPQo=Y&V?a+*K%vcGQreBKt8ms0krSjN5)Y%Vm~rL<>a(*+4YO4qq7^5X`P zS>iV9?p>nGAqag#VNMb`$O9d^))ywD#bHnxWn*E%LwQWD~kB zHiUgob4^?S0P!c-2IsTq>1lU&W=XXz*$LpOZSF>Wg$kRDOPrYxSmQ^D;Q3VYQW8P- zAGK(gc4>3ldJl%QZUsr{*R>+ILs~WYhWh+A93|qE9u6=E_00;t?mS~P)}vRgvn{PT zzGvz>cQ`@h=bn9NIhO~TEjrT)3EQ-&3>Gh_T60ZCoFM`n5vZ;G~=QNx?gKs4XuU%N2m1QM9+009T*sYy0vT12&*6K|g(KN5nU zg*ot=PbVIyE5HzMs93CXx67bVDTAo)B-wtx?QdevKS?iXmQb~Fd2Fwi^6 zP#|D&T^{>!(z7kheqn5F>29ZEQ4oNl4^B^NI?<*+1`Zfg5Li5=8@X0_!9Pm9aixN> zH+!7R@Z$3!dX4KV_V!a1wB&DZD_1?Mq+G1JK63XzXGCW)%G%0QKD9BZEK*y&rsopj z8s6v%LYAcDa(d8gNS|olsS+109SiAJL7>``P#<(-Z~7-pHu9&!c3h`hR!|E3sXp~8 z-l=+3)^gmE!wZglCdz+>J@M~PB;Oor3vi>OVx}aW$vljT za$F%x{{R^XR(Abqh;0dirK#j30fe=J6uKhbxNci#KQm)8rg@lTjIADk&JH5W# ztGkxj4>ZbhlIjXlq1S=?QE|PjyoaD?i|)o+zt`-*Fip z-;Yrh?mT7O*A~*-ZmLT5G+9@a6Wbj>dMfK-e@?}RA^W3inaNTbY~SNpaRm=<-VPQgPT( zWKc$?GX8)A8EM!JPZK1xa5{e@Oy%FF#gJaOC6_Ju31uiaQBSa`tCZ$b z3CIxJeWV96wG)7@y@%GcN4&QkNc_nuk+f`UkC1x$XX`>7D5$Kd+_lkC;ws}RY~8V3 z-TEn6$pai!Tv_v`-PayX(Je5PWCk#RIpB2bP|#s2Y-2v!xDG8NAr8J0vVN6-{NTrW zbJ9X3w6KM+&;)bpdy3URWMFcYNtoM#=7q}Sr&O|nl1A12Gef;0$O%JM)){VB@U7MP zka_f}Tdm=SVWHOTi(K;PY)J8NkHbE*e?qEX}`f zi84d}7{O&hEu8fj`qw_SwK^@<;ZhYlq^q>47tG3G)Xmf}NfD{|US2LAxsnEwFO7b#C| zj^blBdGMC31rL1ElQjw=CH$6SMlXY6v&*?DiAq+{xC4w8k>A#nOJ>h*fOiE41N(Mh ze7WuFdQ)rpp8oeCB`&&tcN;!bed;1>4o6upIH#RF4B30m?>mDBlCyEdDX zbwaMu9ASmFqT`J?ycK-_r45Zu%9bR2SSyKWks4EgxRve+QTe&-E2rsL@op9o4N^V` zEd#|_bCn93)X?oyY-~zyJL!Il=nrRwpB&m(5Kr{-S2X4dfS}@oV z4ugQc$r@@Cb0K32XT<$Zolm7y-(9rJ zefF&vC85@lxuiaJhcVX~>rt1xkHV%j+XeCKY_+2jBO!S!S962flKwjLB*4Xok*V;s zS?!27O!f~%5{^mM87{vjiT6WGygYRj|HlNBk7gdiQoPK541dRs0_5+WAfxiJ~S zqNhAQRHNyh^!$EUY-5xH;ZCN>>X6K4?9rWN#HnRKAocb%JUfJzrm7Sx1b3wLTHbqL z&#^pI%)4iUc4|X1<|)UVN?T|z*18N`HDF?RUHamO*NiSWSpl=hDk7=iJc2)=9;lDF zno>Cvr#9OzBp)MA2S4ZDmLl1yCOEs4sELmOV3ZPatYfaxMO|XRZto}Z*=$CP2-&-k z<~`_mS6i*xV6(w4JoATWS`GpSwK?04UL$d-kSl;9`&=bOgf0j%!wPinO4Z6nd;O{Q zs+k63agiEy$n1n+#Wa$i5c+Z2fc#5>EbT+JAxTPOpee+G&f+<#%Vx2^DKA55i2ncu zji9*RRrbj1OmJ~MAF|f+xdJ7vji^jz4Ly=ao5WV-eP|t5@YfdC9m`vC*+O=eDZGRq zY|ysY7bHVUn`trPE34{I-n{kVikWzm2~5FA5@M^3sZW__+>U9UE?zgt$;(lkGg;`F z*4K^KPNc_>wE%=NeA|iO1o!6^Yj_%;O8y(NHD&f>yVb=>Zagm&^w!~oz zNGbf85<%ecL)c*J!+0v+a-axr}9bAoUzN7 z%f#IIRViWrwy;B zK(v_N@VpqWNqdRxuUH#clDjbz1 zmRd&j5&T4YpGuF{mxrWWW=dPC+Ul@*;EsZU(jyS%IONqft`d}_;H%n(zoIPLqZZgp zE}k+^?r3}_;EW8MVhYA|&%(H^*mQ#vnnO-Zk~~$UCn`ui1v0xkak;{D&5A=#4mj#Q zl|2STTU0dsB&QrxX~9um2d*(ixpkJ~Ns_0OqOtP&3e?C{T!G%&5>rwU(A#BB$=upg(FHzg>%jj;?i-P*7PPpM*aMb#LzMV zD&`aixzkwGP%dw-Oo!TzwH%iE0a(mt*FD6xB(_qbGE#XS_06NqOKQs6Ldf-|&0HH$ z*pvpy9FQ@ZAk3m9r0Y=h6GkC=%QVZ}0ZP_DIixpTJE-H%ZYYP9yfDgwfdu>d3SFbM zbXW-Rt~V9OY#$*&-I4vOy*lemN_W8$9eu!(8gTKCwF+k^)uJhu$cb9h`u9(%Gm0Gz zBa&mek&mFKt?SE+jVJRbR8BAoI{p19Rq9KtZKSJ0wEgL784l!`aPc=MKNxI~(#g16!;1k# zZ&LDWlCk2c?*&dA5<%v>_5BT9tnwkZ9ZiHFlr*E0pRI6t=u}y2LerI{SXZ@r1;$)_ zhhkgdWUy4j;>AiFNocI3aB_I7JrgKe^%N;Ax3wu>o1QuEQ4pMxuoRY*mVn7oII25c z!KPYDQk<*0xXnsHIzMGjp_h#PBy|j!Yh|=dQ{NJtrMA)zKBxU@CH8&Ab4$_f?LKyp z7Pi63`gW+T6FqX^E-`uLq;CHJ5UZ+xu<2A{o#8ZKW++!dpCn^c8|--K98}Q4VB;Bx8D-Qc``*Sy^Z4>uMD8nr36gTY}xj zMFDrzS4}}Q!nNF(M0DpZHbF{$q*eu8mV>V1%OdQmQ^x5z=WcOSw#O zyK}QxP70RF{KzMu&#%_HCC^mp>)p*4xYl2Uy0)AYV=Oo_I8oq?{{U)@y-d^$y(V3T z;KTyq{bVqm$aCmV(?5DFSpjQ3&p#@zH#}x`D4JRutw)?Cv2qH)ZN%kS^c3bYZLu7X z)ZI%qD^gAyV54#q>`CcUT1tGI+?h_jwR2;qmn19&6%Tr6WS?t(E6&}+uE^YWq>m?F z=B;uGqXQl?TA|u%9Q#!Dxoo`V86=W_j;Z3`0-aaHvW%|zQl=0Blx^?8okjw2rRM%Wc!ZJut)`u-USIJOCKuY&D-Xk|94<+RV0JlI$zoB_j zQ;ZaUy=j4@bi%DoO1M2bON%_U;vXl{sIStlFkATLTbd8I=1g>_DIZhc?@AZ1W8aY- z*I-A4{56jiv;a4D>G!H|xZ%V~@joR7Xt3Gz>6-LQZ1-%fEFac=k%RRnmFg>2pRv8Z zX1I1nN!*xhh3)%_=o4Ind1Oe0s6{Fqp-v|``c`b%n|>i_`$$m7l~LLRgZ85$#G{o+ z{XJz&m?)8ByQ1LEGFzC8f%PBjK4ydqoIEb9E$UKJ}Hf+Z}JmdMb7+!dNLd`twLH z5~NCGsWFRaNY3JUG)3Mjt&^UHsm5x;_bqE)f1i40-HsaUh`C-azn9zGBsQb~r7!LK z)~+x|GXs$VLzPNWO8i9ZR{-L(jj_ap$ijg+faM3ybRjs&|6+V>|+!T(#sOj5Qh>py5 z6qH1^vX5rQ@Aah4M1uD6>(3M(g&-08P;mpPgqiGkma>lxi0mkL!N@hOXHUgajHqys z@jMcsKaizsfo1VXj_b<*05)CQ{Doy5iy9Oc`CBh9)kKs1XjFZMNT|unor%{QL>~zc zXONOPt#_7M5*v}>DQiwV!?@~yrD+!EyRytU?Jqg;5Ae~~*lxuU+Ggn)(4>zQE%UQK z!cY2DXw(6d8Jq7#|MWIoiCANcwu!)~3}ronLyBWVJ3PmbWDX z;$D#Y77yQ`KTk^GcPJB6D0rj#3Rx0{P!B9aw^YwtgTvs0l<=hAu0hUCy|_ced?F-141DY+L5K;EoxJF zS|g|}w4bj(wQ-$S_-m{*CCqgse>zgdssm0f*%s1O&@zV$ zV1Ig3Vk@VUt0Vsa8L?J9I~ldO;^vlzn5smcG4IogT!u0wrzYOX_?f`c=k_j~0^JG#YW);>;sZhd{`OeaP1#=74vFKA={{XmH zbSRbJ@z>MuNpF2kI^4!vk>kF$W2B@goS#8jz(NvK!^txOF%h(F`c?`)?P~U{-@dHE0Y0Tw7 zZ6`USRr?79#kThVl`IO^F$EY(a6tB=k`f%kMt$gM!R2ni;*K`;Q&WVgpidR4DZo4u z4|*~zbgnonJol{b2}5nAC{B3lD~#YG{{RmIaO+KNE(Q=?b)>iwcuJ2Hq-QwK){AMg z#xkyYX0e5em_>-)%gU6!&9a6^q6RDIZ@(qtpA4^eeDEl94Ns{mLeiB1jf5JYwZo39 zTH4&O?(P(m)|A0iTvHI66WA7pX1tbsO^XA{yznTbHryxv7`O`4*Czm0+f+{h@UW!- zI5qC6g5SWc=7#4~Gn3rZnKD}dWTk^0z^@k-Mrl4&JXA6g6`WH@vm`Fo51GP1Q3*zQ z^r+}|=cKfw;;9PH3G0fXu+6)}j;IZUxY6T1#S7w4zvc#1Pz6J-H#JCx8GV-8SO9rW z58j#STP>(-~tcw*Gjzn&dP{Yj^!Th{&B6sSsVwPnuW;T!maN%hY*j{1sDUp zbKM&)rC!?jf`ui;Zu54lE9=u9VQ7amwAsih+mNrlE6qZR5JSqJ_38$R9uuvgtt$ld zLFj2s=+1vzMpTB}MYRWv3XUPo|0#$+B)fSSvJQ{X8 zqry{U>{^a9K}?fzyj+VCZW19|`3P8OC@A}9wGI=(h?u3Cq%cmu&}z!C`n>4KySit0n;jNaK?+9+X0#@=mlixq{rF4J9 z7);xf8&E1^(r!$s9j&+IRyyY$tJBX}K*>GtA1QPJVoh%!PS`ZkH8s6Tk1YxWMN*E{ z4C8J(isXS&ud`gav+)tWB=1{oD4`vFE4f>4w(WTZ%Wk2D%mny(LWl`cyLC0qZdNN+ zm%lC?CCj+CAniwpMicFk{4}PuJo!b(65>KxmeAb%^^wy}n zCJotBEwN*uI>Jz(l2x8D!Q%&|Q{&}7ptyH1-7ODfs6O?eXtAQh;U91b#SQ%Jpbo2?~C zxxQqg*l?62@UD7)TBFF!KS9P@;@}C40yi!08cR)FAx>Yxw**P@l_`)h?wb6w_@SjO zmP@3_%!2;_gpgTzv4V5!jw|&A+Wam|t~9rrx5i%yb9mf4X1FKf?wYgMml5`_GiNSj zfCyOtY#o1<0LyJrxfg{HCp-+}PltgdrvX{y4m;PdVKlgjbuogLyd?=rHz`NAPPFRP z`Ey9STbytvGwI6*u_99-%)2xST5PWkp#K1xoVbyVlRV!eF=1d& zEqZFlqin6;HCmA_a?WEwS_agTc-)iLw8HUSaNXWthjEgv`xU}aoB{w8it-V8yo=7M z)C?w0@K}i7pB{pqu>$3Gp3`vc@}E{VmsA1}*vE7B6gf${5LJ2i2)VxFjW;yJdm&zQ z>^WD^(U$q_puHejW2KPU0d6#zO^y$yDSSscRL zX$0h-GQqADcK8HBk|eje)erl10g@DHu8Gz#?Ao5&J*nHawi}Y!<6tL~`*TuxUN~eV z4a>jr{zn|5`ZCL0S)$p07N9!~vfFN}c?cNf<2=wGiPLU6LPGA4Eta`%FZB!a8Q!-3 z{{XdC{wSt2+4em_0!NACEF@uB7|-|T_MyKP{t4Kz;LIPTF|DmDu{_{ZekMX37LD_< zsPZUvIqjEKYkf-_e2cQO216_~meY@JGDQ!lQuN5^W?YwG$TE6afxYEHX?0t<*W%Z6Uss9fP2%sUH%oWIwdKU<8Tf+ zu#tmNcmDu~MT*+o=F~ERqND-WJ!-s>aQrArTf>De1gN$-1D?M4&3PaBOhwT}c4wpE zs9P~UqizT0cS)A#+FNQ!baolQ<37LXNZ7fm;82+25ugBJ5tiHXmcssQ^IAltF)>lUfd`*@ zE)z_%;z-_wJn6_tKPaSkpr&RiYXEQO*P7APB6keCFdUAj8sQ*h4AVO+sFkGOYD$4E z5rmRC_o>MemGHr}l;K>boK^{VHxI*X0IYM#pmky{CD)mo?fXU5#jUihvXYdfj+w<} zH7Snxj+LAv89tOPs%uP0@m)&XC^aNt@9lSj$QzodSDMf4d&tdOOLA}Bz#BXS~ zOuRVSV77wszyW+GKIgSMjrf15ek7(s?MO?i<@Vm(5Y z+~0)-iMzCsA8&BGw%U=nY43wEE0W4AQwU475{$%{YX35`+pV@cLoPby-NgQ*irf?b0O@`6_N0?+XGKeL z0_S{l&mk)D5;4lUaqY5Ln<14*j)EL>43kxb!|?>j`AB%BX=BoRUG|p zPvm0Z#L6$rE)i9}QGgUVCOYyJTba1oo?5(l(M846gy$hcuTM&m)B1{1=Qz;{+A@`I zPYL!Fwd*r3T$@~0d`TJJuz5N30o+l;@WBP;i*LR8CShi>c}p_(@~}>9Hw0g0nP1{?&rU)W1?)9JxKw_F0CzZ?6DKs~krycljWOQ|lY(=?mG`R_RS^$63f*r@Y)5m#a!EXsj-Hi+ zwmE(#{XZ2bN<4~j1RD7UO*9x`3r*#K72-WXQ)usq^f` zi4sJFfEJV2t_k<5U&E-4-C%8m>Y_frC19cx>ekG z*Sk%i+O5)9b~}ybvOx+N!Oywv%?dBmCvRToLROxT%(O@nn0`(-BM8pYIvN4>T!et_ z;nLx4S-@BP?NYYAcI~Psz|MT8V?%1vRfG1TgsY|DlsO5n8OKgly<8{iew9FRs+d}g zXLh_MeE2NKNpXVdE{(VZXMxXZ)2rkduC^jF*^2V^sXKl`d(!F87%U)p3xkctc>TR; zQ*$NDkWTX_2RQx|``0tpr3gK45Zq}|rb(9K7N%A|OMV94`5(BcJw*ad(JEReA(ivO zl27kcHwnlWG>MPA^GHAlLJk3>7nLd3-*L8r;&%OTAZ=SNqjM-cZ~z$gsK3Hp32K#TMyA$t7j$)L3y%;lb4}y|60Cn0ucdUGMdn;{ z@D}7kw>A`ZC8UImf2|s!=ty!kH5nhMbj0hu$xxY+)vXLTJa-x!LOp<_cj+p!Pi`Hy zW9lrYmz1oPkTKqkScBfDp~TUccyA^y14ud9MP7uWIkGq!wkrFBC+OWB}(Vkn60G# zR2qkBQ%>amrrZ)g@}#;#UCPLpZTB0rLm^}op@Wri+uFD4i;knbMiDJ=)D(gGi)8tf zJLa@F0;3(hfFB?!g*I$AUqep@)1AuO>DLB_ zR(-`CXt@~^kHqbY_&hw~PSl^Lu6U#Z*G2|BM{(uqT(;pqBICG7;k2VX4DbOzO0bJM z*Cx>(*rbM*8wpCu>VM&`RWjh4jpY&NO;Xt3y;vL*oTvF?_p8R8wKlj)X~jsG=@@AP zAp`zmw=c?x^3N3lZ`A()1#Pn`BMqf;H;)x$^cke{bsKZ-W*bblk+3B%sXUx|Q5uH9 zcb_?KM}Yf@QOO&~KeZ*37IaAAGi`EWV<7=)`M#d@g>(!?5Dv^^W52s=ju={6Dd#F zJ~FfKnn7^8ziff|d#mvxsnE4@dmfZTOUo9$K+U#Vd{B`yQNq+g1z3wEJH$v`Pf zfl6enf}Zp^-HS~LX>)$JyEk^ZH*$4tHpp)XIoc8j(vaGhY?&oV4Pdz$N^K6!@3)eMTDVG~;U~FLj015Ryja2DdE}YYrnQ@`UdApLD!^Oupf_Avxr}d@Kni6BFajpz4 z#PF!DG3 z!^?49cJ3qT?MB=$+HS{YRp#WkCO%Pyng}JV`~LtVO6`(cy~Y{b}dKHE&8=M1X<(PHq@H0&6oa{UYm;u_;-4HMt%(JV%?)gtZGD_B#)8-_4{cE8OM&j8F zF>m-rM?z9Jk;v~^o!gNn4UjAQfvu@Zb;eo?+=I}bSL_871?jeT{wy#RFeIcj>t_hh zetYpv;K;Z9D3@?(!wsCa>X((1>?<`+YVjRxKrTA0;JoKw+|?c?B|pf<*okMbx1t-V zmgI>fW!8!EpmxCZsQE0L+!e5tkm4K!g$y69bXa>3FtEd`-mX9eUIf9(0c{ zME9)n5P$1EoNP*2l=@}1L+M1O-ck=#x60M&k9xpA@S3So6CK8OA1WLkWRHJ(TLx@~ zTuhdoD0v4dJuqub%b62Y?70eY#qy=75=~5>L>eT{kseez%wa9G2OTy8CGExd%OOE?8wgH!j*OnDBeYVg@kFiHkLl~TKQqX`KC#sYuU44P)Z0t7hUr;;tLfj?022rb=0G zk1J~+W~Q#TiFWr(YiVvPJd`JQ^sEFla^+SuAkCC*<+P~#iY19DXLt?nB>6z?K^?;Z zNiFl=ukBd)i*F7fjOQagtGJ7Y+@NCRDW=lO%F^Fpp~)2LEVVS!9c9zF`ks{(yPT)p z-uX(^+P61yb0H)Y4?t*0fL2{Ka9gX`rKLydStPDJlOQcgIQ|l9Dh%gP`By7RIVX2Y zr?*bswIm!KhKxVM0H8h2llWs9%bU+e7a<)^3tcuR6Q|9*jW$X*ovemHu|ta zN6YU?$UQDgVO!1SO{sd`S%RySGDB z5On(%hLVWxvnBF4L&?rPs0-?^sby}Vi*zQ_@|etx=O0Sy{TFl0>rhEBB*VBqVZOOd zI0h2&$35^XeZFq1)bA3vt&6iH}r+(x`6t*jgFZnbOFK zaed_F*OtA-KHPMqH)pIj%`ORMI}?}yFT_{}j@8auklZ(&@D!31e8e2!(<}2p({*#J zFYyNJaYumtnWZU5%!d5MNAJ?PH{z|nU&X3)h%Q79bV7wRwp^t%AuqIrEz$Cfb*(zi z>eIGjx&AZqm(EXNo|KOp$Sm|@a1y5HA#rXt;<418Yw9j?5M(Q2RgBlwWr^xppQJ68 z6kT;_hkTf}OR3z_m?I7zgyYlFvei0wNXB(`i`Cxi4o-hf-wdREMk{5m(`H?#<7_t> zQ(bQWK2F_=^yi?Z?p<|5G8F>$#9NZk*Xa|76@qTZP8X{?+q!KPbCT5a+NR4GwaaPvcye_UgNp)ql1IgjQuLm3xemkD#cfn9{k12Pc0T`_nB@pkJN3}vW|bs zeJkA)ez@DFJXv9>2RJ|@g$k>=Xv&FZMmE$!(m}5`%wB`bQIf}62CS}q-3OA%$ zx5>W7hj(sDtQWx9PCg;Fxjy)({{ZbqFac1e^_{{U%)JeX*F~)5N_B$X{{XIN`~IbO zP_-GG=AW4rq$_btPN$QD-|tHis^PgL{{Y>-TfxF)r)u-*irUS>70F-r>6s)H;cT+m z3n$x-C_>luPughUQ7CQr%0+W>-9;TH|V&1D98-3}gpK2ONXeIrjS@oxy z!N#CNQ*GO>mgFdHZE{*5Ec>5I<Ip%Utx&Z^goMAN9W+I_4 zsku`n>xltzY%MRRpT*?;t6Vu31wa1)ab#%?lg@b+FBauFF79pNm2|))QK_AE0Pj)9 z{w^F+f|W3dzU5T4L0Z53D;#xB%mGO*FSL>mgxhJ)BqEfs{oZT467*IPoNjhN1bwKd zqA-RN@fVox9CL>T2kls(_XALe6xdQ#y&)uUqHrrI%q14o6h)Mmk1BAsLtkUwle%NR z3lZH@=dzR1x*fguE*eTS7yMOtY1*KZyKmGAtrODXvKkV0$7-1*!nn_pwM0|F0hc=` zzCC#2w!8S5aL{+VoxeyxVJ&#xSDhIt7zcsVsWfcQ%q|ON6Y`ml7As_>#3uv~ao04x zKZh49_!2Eha%xqAwV@>K_9XQ@3abm{#7i&PhAFc$V6N zP=otYMQz?3OUOG`q2QgShxChPb&cGKE@H@k~Xpg8D4P_i+_Aj;{jA0Ih z?tLHtbIHy)t5&Y^f9dG*=O)~jRgnAAyuKcLgI&VY62W)3NQE!OnHjYZ!!2iS(SwnU zdgC?1ZmLy^b;i}GELenGE+x0nau9lP`_x`wRwYky*oh1XiKkk$oatW?GgLw^fHH>N zD?q0a5d=l>?H5*VFCcka$CMvRT?<$K3dU)~r)y4hC^2v|LQK18x$Xt&_9Z^*zEK^8 zB?IbxYs-475}n)@=dA9?nqW)PUK&%taj7E;_r)o@$7WItw;FLTtnNtNoxasg7A$q~ zEh=g5r*dVx z3v_oT;W3*yS5kXZ`+co2**lh%sn0TwF^_7Mwp<*5>QBU^x9B?Jsixl&ZRmZbl7;mk zrZ&7JCt!~SaDY$c)B_=wRoyr_nmywEj1c4*XnZH5+oc+Bqd`zM6ESF9) z94iUMI2X&5XsEZ!Z2@Um+lpL5o|YILS; z4mQ&E1&=;B;oYn+X7roQ#rb4VKd6hMsj3f=gWB4cP;p zm3{bU_=9cIvfYp@l3kd;BHcpr5;)FB+N;92%X{?&N*1PuTb#Y=&3c=C*{5N~3my^{ ze7kePhivt()q2!62{v>^T(l&s846FCcwC_c*WV8|=_Xyd=;QRt1~LA$g6$!n z%MlJF=cg71Qul|0k6LT_DlzdxamnPa7d&TDx5Ke&+p5yoFcQNl0IXoB`+HD2gYd;^ zVaMCQp|p-$S?B)%RmbAZx?TWkE!C)uwl;XuAMp0`&rVN0s%{4r%Y`jR^t1fgR$&55?dm*0t8m8`*Dl?fvc>Pa9OMev;1nNU7$005u#sWz~ z2unjfzvoO)7EqfMDaP*=4_%eRDkD2l*!`$x<|+89iusWHMLAomYYE4<9QskdKtQjM zJW?`_0yX?L)ofW=dI#n1T%JnLi75c6BzhHeq3`;qSZT|X_oxnD?#Ie;F9MTb#8_wkjY}N_-_TfydUd_MwFI z008j5q0lwdS(X=^Ola%51d^6s8<2u|`*p5At72;BZcJS6G38Awa1a?GO}0A(j@0Jw zX4H2EUcB3M`>a`rCC8$^l1K#dQ`fB{vtBN6kf!0kG1c+mwUV&E?@Ypg_apKh)Wg3l zx?EGY;MEb(4jORhBN)X}=@%v1ZDc(eh7{V0RF{}ZE&zRT{XJ+GZqrtllX8aa2b&oR z9IX5CSt?wq$qQwP%2IerU2Q=F-kbb%Cz;BP8CuhEwHixqXf`J)9bSuu%1>jOT_H@` zMBj?HUg9Aw_Y@FBbQfadb4xs^{Y3~Moy6u)MTj~eu`Sgw zQucbE@+hj)CZcdQ#nM!b811cleBBp~Z4*^ajr9|N*0x*5*y2(EE0bAfK zE;4>#^1&Zqdec?Hjm0*rjBe+`%G1%KS|^C@L|2L#eMGM#paO@#+$Z0mL$+MflBQM^ z%Z;FtaljZJ{{YsGc0^0I#wS266M(5PR+NOEqd4NWD_7YpdSXl)G{)uK8(B)EEv`}Y z&w7W-#)vIt_%b$6=OJ(HDipQGSRNo(>l4(TojY{?bfs+o*;oYQDjkJyeVd)q<{O0> z+0vv9*gaM1qJL_kdckzDFsCopbw&lW3}YJ?wD<7$PrWkU&E|Br z;9JooHiiEH8qRT$JvshV`u%8P-L7r+`@FU;vESV4h)xy~kZ=t`+@#*E5mREgzJxO! zDO*jTe5XBg>&=R)#137TXAG(9l-soockIQtaPhF8~CpUA;x90+F6RF zf7`ZCm?s{dl!s5M=Ic$xw_M$b>&pKC2xDnJ^+Tyd2UujeEpJIb!cQZQ_Nge-7j4v0 zJG2PB>`?MP8Akf)Zhz15sF z3b-F?H(bsaE77=xC8suof!E3_RfQIdlu*oscygRr+V0$uPjCsSI4g~qC}>Ja*p#Gt z8rg4cEwBLQpj5I7_M08~k7hE*Y11qUD!C?3>Qehv3E#xP!V zy(KCvws4)J8KoD`4|olQZCS#11Jg9cxnbARJQ3kF#>9{LnpJtYA?uTQOUOW9mvd@J z$L(Ac-ObA26D}ZVOJkphGW8|V4lY`chXJ6X06xC|0D6bJSZ_89dL&GXx+|&A#5SO> z-_p8m(@^{_m$yY>$j>FFK1JgLBh%KD>6^nh$Sy#Z(mW+)J9Chqaa{SV^{M7QY=}7y zq9{5d?QOH$^(^&5Hu=d5N*Y;HsmRF4KE|}kYD2E5G*n|Wteo@%{b_g*fxX43ke%2_tjNWEpykXPOWaQ~3kaTw zX{(OP2En_`v5r4#Q3@%LsaH7`xvw{jFdJn=5_{x!rxpt(#mN2?D=fvybd@Q`ld%at z)Th`626hC0sf4>^sLhRznS9|ZK*j++lqR;Ch>@C%o=a&vNjNGezuK>~gAH2ct({i% zNUACFVeIWczctQpmZ|rheDh4Sx1%=i>8U9@6f>TqwPJwAj2vW83}VeWDNa6zXH9+A z8}p%0tej(}-0@U4-LB1C*;2*D*%=L_yON(wnz@T(W5DsQQXt{9@CXSQ9kD`8nPzQi zVk1!-2^lG49%I|ynaxmYYk6Y*L|E09T(~3Sl+sY4jOWYup~V`O;DNO1?s)(}Dz zeTk|oZNf`;D9gMs%h1a5mXg0NJ7?aiA#0dd3*@MYZ3VUv5eeD${mrGLW)Zp4(uB`g84{YgcH1xpx>t0f~IZI^cr9GO2kU4T^OP8swmlutqM2Dun+Jcm~ zQRPBG&mD>BMgC!@uLyCwX=SCf09sI-1pRSbX;UsS?ty9FElNR3f=1kX&}>bSYm)L{ zJmgURd{wwIRi2JD^$8#Ir5CDMetg)o;e_3z zO-Mn?cNG0SDgqzHKE`B}F&Ha?^SA_hG1nqNu7hy5w-irWqL3+js+JIYU(mcbbB zv>NPq?V%7p$qDv`)n;x|V#t*GzC@%I0qzIhrxwJEdfXts-h9h!1H0*6KJgysasL3d zu)q0wm>X77pp`GzAM>?HF{W;=TvT4vL9TMY6LD(d3b$X@jTqI(Ph$v)L9bJ9>GL0pj` z)JzG$wGSG6hn(%JW`G}iwBEN;XU*f-@e+B@wSHByUVkXLN|?8ub?u=k-n`_Vf3;b+_>@F; zJQhn!X(v06EB6!_OJUL647dxlxYhGxN4&(8?1J);vJ%32BzlwHfxl{IB1Ke&VlwI8 z2IIg^YC6exk9NDcDoU1?($P}X;o&FgQdf(DrU#PJ+z2jk*yIm-He%$%{{W0=13K=W zzsM_f#@FRie~YI+lq8$6ku)~i3n&K%p1%31Ei}~mZp4Pei`-Lyf_PW8UjA0JK3grN zYmAY-D8?#qtZWE4f?_j#I~Jd8D&iQG`HAGHFUz03WqM55cBMB3?*&o@RO3g^e*LKX z9l7hOyavizaGWG7{i>RMt%f3%DQ&H7pe02ha(nScqJ19R>A-XJGdJRQ~`;=&Omc zDBLYxBkti$rDSYqd!PBzns94Sc_H>PNJvAdE;ve3zc-tyuT17yQ)o(@E-2v$NF)z5vRE&bNqb&0P&HLMy>GT(h_9HQzr=^WH0@wRf-Zs zJfWFD6U()Ze0NcFgC)kMFD5`rxIWZ|blDN4uv~A%k({L}#tHYTU(CZBej!TPf>v|X zpZBEfeoJ+eGV?vANXRE*EC%Hjk~Diox%;KY*tw3s<_js>j-3Z= z3aQeQZE!8^T!d(%L#KJ&jydh#psjbe?~MiiWTx!x5Yj^U3OVPBy|ml3^9yxEH6aK} zLP}0bmG`7MH9YM6iMZ~6;tUoT2yfxrallWGMiP&??_A$k>kHk=?AmOFGTI{!y6^=F zSGTo1*A|;S;%hdTGg$b9vRx6#2L~O`uQde~R}TzZ;zsb38z@?UASloq_-A8U7Gbvu z<@r0V?6Sk{x8?A_+O>MqiwuTegjiTUBaM@k5CtQJY`I97n9|#2L3|bM$WNyxsZkC^ zg+Z%)c=FsS*sPBz29FAnxY6rX0*Z*ru_13PG+I_M)bMfsv~q2_f@PLP(mXbsw*$2= zm$sfdfS*u!tY*QA-Jr-4F)>c?%6SJTpXW(tPrq62$!c|~T)12mwBA&osmBy(gc4=h z8CV9W&Al0YSYl+SnTVGNQ*S!3vOA6kHRb0{xGnFq|r>dIJ^UdlQ;@@yK ziAqseY^!1j>&W+}x{L7%q)8iCN5`cF4i|w-N+e^7Lw-a}Q}}BZ_Sy-S&H|oD^Mjr% zo?WieW;!EWT@Dlts3=Zx^**#%UznAZv$%XqT`u!X?RJ==bomVIrwx` zQ2n*?gf^s;m4Xc>(hs=Qry7^JFjPSVoC>{VEg^vGPCQvB$&{35>7Kt@pC(5A2#|SC zkz3XWdqWWCM}&nq^Qmvwfz!Qck2cvA4*q2c*^&r5RpNP5_RTc8MU<2R;v*qT8Qhmb zls{^lX3W5z?1v>O){)2sC(L~@Qe<9p&kW3cqRH|LXiTKA;|X3$Jo`x>YBJArYv7b2 zN>ZI!%byZXz<<)V+>qSY0zu}CkI!Bu(QPh3Yr6Xr(7Ql$jQ(Bu}Hn>FT8K2HpJmCs+^r?n-bYD-Cr z4fhy*ds!;$ilb&+7-4eV{c?~KgXYFPG4!vj&ff1=K{@CT$A+A#w;b}M4`J(5;>keV zn+f6|`eBKPE=F;+Hq=}KRD1dgZ#PmqZg0Vg$Qk*Tag$namkE(A#jAa&Ne(Y_?T0%tNy#GQSmVA!iB&JdfUm5l-hhB;890j!wEv5@sx=r10BdgPPp7KR&rRX)YKM z+S(HPOn8bXx#NmM5y-IK*#>Kp0RI3HO5+F8s;n2;X@nrgahUBma;HLk>iYT*rB{Q= zTx0_e9zv!o8Z_HA1X;c_&cjF~$aNc5>H1dNvyZtydhRh}A<}tspA377Z+eFOmX#@U zr70|og>Vp`x$97x#g=cjkkl!SMYt!0EbtCJYuQv8m#F6Dk%5f~h$NJokd&X{c<`Ke zz%_-wNqNT;9(0Ezq>zx=*cDTD>t>;Z%1KNattfwprS|s4Qrp!(drOHK4mgp5o`^~H zrK9n2LTZ}?#!!;fmJ}wjaw=X6XhVb`dz{moJ<(RSoQ9=FK~dpqM(hfkL$ev3;@s{k zT2ON1NKo>RK}FtHE=8EpLv1#$N0-c>a%<8#hbU#>TAuo)Tnmp$W#&hhgoKI$ZSB@A z%Vy5{m!XPS}K_ZDN?oN5yYX_XvdDaY?Z zz=O);5qVG(m+H3*iBgt~tGct--lY;1w~aP-H1UYAl50!W%{>G-YhvDS?JVWhXW6p-G1QLyo zA8dbm?Gg0^d+znxZOBAqHVexM*p!}`HG3Y?F4ZrNtIO_CfLTZ(95uWSKJOiEVPT%J;q?IvwE>1b~O+-JJ;Pc1G?xWBkf zTV)`rN($qO3iMZwqDY=9!rwjBhlfzBkw`NnWyeI2U!qHZZ-3%DhUccpjSO|W0v(f<0a(1(4}c0 z)|eMJz9+;$2~j_K+>Yuf!~E5TrR>Wc+Fa8vBVHtAjuKUXgZ{Ou*>AhUkn^)p8%p}* z(3YLPT}UY&w8kcZu)ytJEikct{U2&$a$AI zF1T_)^c3K0Miwm0qKxLvjip1V>`iz{-@)RoC22MuiXU!Erb3gF$`QL9cQq#cz3A&H zbqh{A9xDYNrK^!%c*>QXsT@-{*9TbIl%2^3kb6?pZb;jVXT5E2&E-HO`p_``Ss!hun^!QIJ9DR2G?!%uo`PG1vjcVlhz?=@;GM zqnS~+VO;d39w|WwCvom;qDX@rFgGb9Jrka4R{3iwDsnn_1CR|g9(~PLtr@D?uR0X7 zxOW4+QQIWD`Lh!vGqp`99(&ZStSt|22dAmcRmXNZ5FAM(k1^?r61{^p#fqIB``RCA z3Rx*p87s)49@JK4HQ`(CYee*QLy6#@Kz%43F(TTqhaQHRD;y~f4=sCs(RS;D?aQ|) zv9#q#Pp5o$q%HjUJZ==!V;TC7UONIb1qNeUmU2+X1;PATJ%Q$!*imOmOOR(sh}i!C z@l37Eg&zL^%vP(7!RurO+KUcMls48KNoh&|*EvnW5sLcl)~mnisY2I;q!$OKDY*!%T|seD7L@P`)J}fpioadgHS*zBI`QZ#Zd2sslac$-o+@-Fql*wwE@@PywxXSZ zT>4kk#@%DOPL3aH1F1piT}e)UmGudAxWSP}+1fN!p3g2Mi*?@NaD>b2DocznXmj5_ zmA^}AJ0fRXJRLzP#^QhYbneRB$G=Xrn$l#$1?LteGRMl(t^_0}xXvp?%hahC7G+x^ zh>ZmWHp^<<4n64H6=TQjgUD7>DYV*V+$TG3Y4yWlPZ08CkOne9>)#lr_qdaE?ae|A zM^h7_QwiVVWaN-X-lcVFp1OE*T_|z&qz$puQWAgi9<)}IovJOEeR-c0?wOihGYaLM=a+CEx=|jna)Y=feW%!#rR%zoI z?Ixz)btNiwZj;B;70HpNkQRJLRN9HFZMxhNOAj?n7=O z$-(hdO8)?AJX$ljgWSc9F=9(zE6SMqlhqr7LHpJcU|Q0n;Y4Y$JE-KE@JG0zYD2Sm zJ%TVrXibTy-NW)Fzs_)_;C{lXB$6h2&0iO9jP+EY3M^!JAOqjPJ1Qyv!fALCjT%(gzIvq&4T6R>&ONxZK2e!-+Sf;}Ka7ndo z^g@SP{R3gpjL5P^oQQA852PrnJHTzvsO?OreivB;Mx~@kO4gqP)|l1ET<{}^TK;@I{Vco zmD9Rs@bcF7uGMd$ZzvT)kDREC0yyjUug{v}Q#+~kRLwy(pvS~7^pLC)+6O=fYJZuO z05IYo?oJezHw@GFMjVdhHOKv8qD$^Q`k3wIt1S<8yxZ0y$C~^osU=EFXBp(%gkk;5{Zo9CtMvSfEAC2p)bgHl z<{dFyNAnBbo|g5l;KPWL+ImRb3FEJ){_Cq-6>60+5^TDKxa}ohKGL-xQk0IqoYa5f zd`Y)`RHtterOauBY!Voav3q;vBd!k>iOe`Z+$Q|-*B_!^ejolmTp&2YWZEMHHh|mf zZ>wp~%mDgRFUE0bySWEiTlHEem;8^zUmHeGAawu{x1U<$QSEwmB1?^4oFE6KPzA-X+3D5sF(8p^rH~N~;}I zs~s3K?R50*LX{wr8w7#ExbID*r70i*g!<;RsR1a)K+m-iXiUQ5S5mMJ4_{GRt*)Ri z!F>RQ3}@1|$Yg_!+4|R!{s}8ke|T8vL9M-Na~l;HOpXy8DWWie=GK}Z}V z5z?_#wJk-KiP`FFNo`43N#vikEmRTh0RXBnfdnctofK zf(ISGrl~FW=ACS|>=z`GLTcl&6gt~}RpnnPJ;!x3CGZT;-TZDILRegCxQ)KNOIn*Gm&i;w5n@^^#Z$-Qf*sbwxwcnJSPXtF~IxP z9vga?;Wgx_0j z^-l^D*7z??KuULi7JAb?Cu4^tg?O#2$64A*$CjvXRyHGB(FLWYMG5Mz)!F=|zAGNB z*^v>Xyy!|6wu?Z6kPdV2RM6TeaSV8BO8fS%R1-ouctX>pJi z0m#ox`}AfC z%9IBg_NOo0T51GEMR~IzItzrSl0W7v&dFhCpOI)nrA2!40qc6>ls(RSWP#h-qmy7= zvijs(r-~W~-JQqZ9X^#?be%2B(@H|aY8c$4@CUVTyy?rW;q=LJL}U_2ilF9vzQfkD z3zRfqCQ`aH?JphzZR<#VAxZ};Jrl=Dm0jU%Onru2J{xXwvK|b73 z`c`b2gW(x@TbvjkxT!lsQY0x687oOC&ee<)_BBrxs2XJkROxaA++i)Dz6Z4zje$l@ znWX@mT+%X3)d>o9vAdME0UvtJ=Hc7QW45KHPeSiKbo<2J|%ioz3u`8$^9 zxumYR;voEc>vhGB775RojsW`A`I{1&Q3+I?$4^{ck0mmlmh84$S^}55AbE!dx<;(m zknj3%SpNVhZZnE#2A^R=314jbR~C)&=+mDBOlAv?hlX6r%Do8m6nwkI&L@C`u^(x` zSC`Yh8rT5`MtT_Cu^&OXv5B{R244+E$=}=TWOvSkwS@^4?bykX*;EhKm%S_{xCOhN+dGe_}2YQ*e-@hnl;bNr- zl%dO{Wk~uTT3;%3`RMsEp32Q9#Z-mrm?wqlVeTVY_}M)B}F1ZQ6nADkZEthG0+p?`tCd*N6*fP_Pi9D&a`wETL zFH3UY6_}D2@S8z!g%p*iwP#|xPI=`=km^{1*yOBaDEd&>i6Tf?kXuVCJ5WKvN2e5( z!d&~q87KfEdq0CA*PcS~hDHeK&$U@-RW_?^uZxgcXc9w&WRGfvmlN`(d=g#Wmk3^Z z(UzIQEX1Mps4((?AS-}6bgjsmq4ENuW~oB_hMJk-twBu_kgSfBbP)<{CtW1n^}^}NQrP~1<;fJF{JP=Z%?s)Qp9IhAx`e_)s5VB9Q#pv zVGvb*Vg%=0j)vM%T9e9xhd^nJigaaIRInf1_SJH7-Ewm073V{VPlk4INaG{xfe{0T?+3JP|&^ZMR)?b>+~PJ33@=4G1MuQE##c-7~qbTsSG=9bQvp0m~QeM&eHJ zIs4L9t*)i#7?2W9?ntI74gr+o$fW@hk{y$DX@dF^;+Q*wz0GO3J{F}Nn?k>YSGsZk z00Qc`3d(>OSFoXP&$HvYmhw}Q0IVdl3zR6}4M3x)u?YC%dr|ol)1= z&Z739{2o*uo9Xb4||`iP_AZufW) zHx5A=IQ!9YbnoHzlvjyx)Mn=;Jf)V`xC8$H)KXc99A}Y~g;T|*`;>2nb-T^NG4awu z5RBv>r=T4u?QH||%|B~~xBM36Ip;fac8*B)9AbcbRlvB15#l{2I5|sZIR!s@9!1I5 z(A$qKO~h|1{Y35BI#NSdas_r)1{JB_v$JcDYn3%|EsP-{Noxhg4uB473s)T@7CR`@ zsFdV~6^+k5zd82L6#7le@c9yad2nQ2CLTjA0#Hw2J?VAQ+i<-|jO~*^Nr4>)A;#On zmF|C)I~#t6dLAQjYiJdU^{!ZPEL)^qnqV9yEX6K1oO+yet2<*?tNfSIan=`duLP@N zTksM{9WjAQY{T(70^VvQJKPw^&cKuc58D*`NKMsu%c|gAAik$iJnp{6#VCKnT=>n# zc?_r8;#fLF$Xl{xB`$awA;qk%#|ZVw#wwoKEy!?CmzLaE+j0~E-hJt|shr)VapA&_ z(`f$yK2=a^tWPLfQjh57(Ba%Z_pb5HL)KcR`GTd!orKOLY z=cNm-+_=xXCQOYn`8&Q44TPj6D^GQi>Hf7xX`5uqel@6!z7A7>0)h3RHT{zBsT3zh z)ISoyYy~ueJV2lFk8YJ#EI^-WdgjE*TxUAFY7c~rA;w#Bp2yFO4AWf!tSnYG)~R+^ zOve?JNn2+J{kl>qHie6ua2rpApnSp8^8IUc+p1%wEG1FhaXv(;!N=Hiqk3MZWJM?x zPP1#&Ze5okd^-tgD9L#|B_q?^)YI~$$oPqAh}(#au2O%C91fKU8&Ui({j1MyWnN;I z_!*}*Ywe~Z5*G$Tt``UDGU|!ieJGW=0m?#foO_2r8j9<2ZgMTkYA8FNIr4xz3V6k- zGNd8rWkpjN$w?#>pF>_x)U77NZ;Nkh4jdO!4hB6xr6$!ck>`pO!*VbblrN#_{`Ic* zXh14V>G8C^k=799@^!u5K|>9vDp2jxj+(%n!ed8rJP6HTAI1&TZ%q8>$Khe8Qk8);4D{0TUKkGtq5UEJ8(eper`grd)G15dYShGh|gX_ zEw++^fSi?{m>tCtWviM6nh^aY?v(t!Zbw1{q^n{S@xqozQZvy$p0!CTOUZ_mi<3=m zAmJnxAE%(N%~EGc@z#R8bIBu+J7TSW3yaHKuM$JDpWZf-z1XE9AtV{o+>Ot+iF7Ui8^B7r&*bO z7WsKU_WlthA4B!1rV%W<<1t-9+HvA2;W+oE7n@nU%J|im+jNpvq12ik$VrE5d6fmI zE53OYkC#0xXca(+US%xY6t`5|o(L*H@}H%6kQCpEw*=>t+O;huEo@2SrhO|GO4Q$l zoFlm>G~vC^MRhZMQW;3`O516|HxM{i-_oDj7-kCwSal0;f=C%An`w(R-b65mV)(45 zoH&3$A8|&zrslONF5#9UrX zuKT1-wpEMs8EwTtS__V>F9k!tA7A7JaVurxNwo5rl;YOC+e*}}sjD?VrKUm%hj1-O zNse_ z>xu$PD^c)6l6v&(r7tRTJ{I~pJ6%@wnlyrD01rz23?H0F}F z$iG|DA?axaUK%o_=b!CgUF?uAHqi4o*|uL4g`tq?+qC-gOEn+i?aC~1A-lTn2w^#G zj-U@pmb^^5KGGhO0mfQNHU$Oar>#>=qIu=DQf~hMH&NRklWv~#(&PAp!C1*I06LFu zv`i;cafQ0+Z<`e(knue})K!}H+>4GMT2>q9a)xpAqHfnX(_|G!D%dzkBZKczx3!sW z1MC10ojTMsN-VKCsYH$ghi)iqn@_{II_n@UN1P{+ngysyJKuB^fyq!Dif0gqBCW+V zc9ir{`+aFmuIHzWl6c8!_dz5sJZPcm4l8JItL5XLEpKkxlcb)2+bIJhe&fkBMXtn! zN_oL3CRkS}?9e`^ziyP_mY&V`(k zJ?e(Xaz<-fkQh;UmRCBgEj4G2Vf+SYXZ6jyAcnz7edcX-NQNcKTHSxib!9 zZ%2yqgGUYUNX1gL4a*TXChpd`7S)EIC~`nq-a@>&roZ(ZSP&SCZI=2QQVEvxh*F7B z><%%3?N08mqW2Y;?OT$|>u?gJo{7&nGzI%pO4AnR{Alc^8UadH>tH2ZbK9DDu3oW( zim0)cbc6QCE)PRx+rzFDFtsRxkUQhQ-lcU$fYp~6?_8tV;L1+Z;g%PdFnvL$_RqvU zJ8`%*a-A+Je{hFVe-7TUQfUJva`AVP;0EQCI!lC_fBl%9H=*F^kI)9hSjv3#^z+lbSkDc2cy zcJ%s?Pg;SvCMcLZIU&Z|%1C#PbD#C8SOt5>(SZ5gmXFDtM&rkk7jjUdNKz0w9D3DU z>-%!0#W(P&!K3;Np}mR0^hl`oCMn0%)Hc|0JOwycl0Jf|+p{8E)*Ba8p_GJ~F1Ed@ zZ`fzO59P`3GaGVCGSP8n>U(o>;KqSxW-`)H6wcQj_s`yvYx{h-1Hp%Dp7X^xFErNV zXX{5z)!IKz%Wl^t7dxAZ0SR-(;OEr;06M5$))l_m98|`w*2Rs%$ue?D_DRXCpnwMM zB%tf;<95w6aYR8W*B0B39H>5xsRZ-X(QiX)-6;G@5dKrhLb5)@8tONz^{(RGx>8xQ zTrF1QV6bH2$qMP5dsi^l0g0DqWZSLlw#0Xk&^b9A9Dejnh*H6be;Je(6YFI7QDm*e zNKz7U%ZC9J%<33>3KGNj7RSyQI0XBv(xF{;EC)k#SS~hxW|n%@Oh#IhrxP+7U1lN!GsZO~bnA!8eZ2qX`3XN`qd+vc^9}(KC2^^xK1TRNK%1P$EUSVNn!*r(qp}q zZry|qfPE^0*>PO-G{f@TY6>%i4=G=-TJ^k7Csfka%5_o_5VpX5$Wfb^gy#xc)x3SZ zD7Wt`8`!r$;x?}?5}rZ#u7P}-*t3YX?KcUg)^_;nSn&xx2*>xXc-ES}>HD*@lWqS1 zw@;b(6z=4uN1mS5UQ7XiWQ9O(Y*b$vdtQ*+E(8TDJ#$ZV?D(yIs+>Xs5<&4WNh8{) z{xyrV_oqgODr=x&VTR7obHJcuqEWaw?CWxx*m9sbQ1lq}rR2nTY7rclQQgi;F4J6H z^=<@=hQn#tl#a*#deqI`3`%T5VI>I%87HsQ)noS-n}fZGNmPXZHolyc`yAAkt7+KL zQsR)7-FqcTPaA%ezzI;l)NhIiaUwNTCnC@IO@tDh_3QMc^5VT2tsg{w22H$st@z{FS zG4))V1+mL>(IFK$GL^P@XdcJZ)P?I)E?EtT&6JL+TKN>*7}l<0Vh3}pS@i;KkpmFd z8DS#{aY@M@;$1kM^z)GW7odh9bvNZ6oJdS6`(L-SNZ#427rx z(=@}yMF{2btX%yaZ2U;KF(f?a#jKtbmGXrB2dxV}^`P!ES1aRZLzccy&y@X-2DmF4 ziPdnV9)0N3bzx}=bx11e0qb13%E4b7j^%!@u-Gm)67#no`*n^NvnvPQqHlUiGJNO=yG6_46s0&^R~%tjr}8v}IhL~fGFXD>`9e8VV9678{1A!q~UQ0ghkXHD#G9Jl^lVGBJy=?%5?80EB} zAY^iSnqVVF+#Qy}lri%p4cPXk09*!>c{qy=LEMtGO?ifZjSw6lvOL6k^Gk12qc+im zZJ!k4k^)v+$sbeeM!Ljz7NxT#agd*sFOq-KhIl^-)HWSH8=R7(l4&K1w3SI+$Qy;W zOKU1zcN~ zyoaob@9kd3Z2*(I%AWZZyk!Q4r8TAIPD}4P zSKlKv)ow;CsG+j4{c3klTJQI1if++skuY(U1q8N_a-&x;w5{dskP^Fk9vnQN@N;4N zS1724;tk2^Hn!6o%7!us&MQ<26IUQcRlGge7Sp)Z`{Dcqn!zlm7sNMb%ge;HWvGpOo6#f?`gM~0Uz z>^6AW8LorwDspAsRHn+`eOpz@0ALE2gDIV*$K7uuoyB9NX5^JUyW#So+X*=R>yCFi z0%BuDm+&vLqF9@0u(#BDB}>3Zu%s8=PUPsNmBTHiJyut^pRnSPh1?3iNopKmr#x1t z+mhOphf)I1&4ZMKQ;dh~)yAOBE=dJsFFySAsyzd54%{1@cBmnFN>(x{UB1EbDnjN+ zQX5doOJkGu&uX=`NowC1MvVai}7#AeqamK{=u1A({N zzNmPUS=qHwK~U;e2+e&)ig=ArFkjOt>RbF>QyKZf6voz^w(B4usCpXJFwc{BMb6wCinmTs6gbb? zi83*DGPh=B4GDhBD%+;a!s~6kSGi2Ojjn|H&@EkK#B1U$R~O_uoRs`MBayj67fde;GX`2r8>zrW@AIfG=Xw{`3%Rt zsY(jLDR5_xVtVzeXe_Z6q%mo^Iq)GkNLTPu$>LhWOxzU}{`PKJ~d9?S4ekzHGG>_5YMns}a->Msla1$eG+v-+MGbkmbl6^%`2qvQV)F#iZ zEbbu0cF{firaY~sl8%1$6|K>AcHrgCL`NaEz7iLVr|dh`#-P%=&sI9!%-dqO6>0J> z<2ETE^PGX(rApoZ01EX%W!GHR7S?<;l@t`IcmuZX^@72%FcJ20`<2=AF-6GJNlyoB zN+8#eujPer7MboSbOoX*yEg4o)Q<^ThSHs#3EhMJ4Lr73H7wVHldSalAaarj$L~h0 zNSt_ssGirTwFI@LnA%o3N#}aqRzUhy-Im!7a$ESwbG{^uli40H$u!l=b523QMEPgt+b-Y<5T$tu}2vH13NlN{!<^a;$w#b7^`P zQ>o3XYBu0AyTeuw@}OMMSLWVITyh$eu2hD>Nl))dC4uj7LWysDji+EC#L9Ne_S1|s z*gVwwPJ(qxOYFlc&&#k7qwk8rkHbsqSxf4b0ck({N|K$&?V8s9igF6KmZPC(pVK?P zdejbdOzZd~$OlbC!(!}h4LCf7EcsQ(YDlds32T0RzgXRzam5_A+y4MJw>j%s!FpQ{ zDjfSnnK75b6w@KnK7jP5(QGoBQe`_mtv?T{9+Jo|5$ZtTed(6!VuAw}TXY?k=%p&_ zVY(G3tIo;J`k1@uIWaE_{Jt7ofEADnfRv9zxclb1Y&Y0}AU7ZJ5XvN<8{yjV6i2WE zhWtad=<9u*7dY{*5@tN&QnxM}n!#3i$9m_=MH$M0VhAkUt<533cAAZCXaEeiB&A6{ zrkdE)kWBlwO*NaIpgS{DzwBWVsHNlFv*0a~x?REW$k!wEt_$Q|j+ z5Dd6rt;X9Y=kk+ByQF1)PTcb*BBGI>GXDTj{S!$901RF=ECG{o)Z>=I^K9*G3?4Zq zw5UfU1tjhxkWVztP8Ql*VV4VN9S2I#hvKQc2x##W)nuHSFxxc=4yLl=5{BDSM$kDu ze$*6^04Yma7r#6Vj8hoMWo$ZK0Uf{lZtYzXi#@FqDWHq?c>&hlFEyPM+ZH4rf$UCH#Xuy z^u+}3_S`8~B=@E%7pT<(*%x+V zpf23CDSb%BIr`SYt1gZs!w5rr$o*1DCXwvIHx&e_M}%g!$1M2C+@cR~comI-8@Z2( zSXrG08%v7gG6aP<9Y`dk{{UZFr#4x)-_$R(#BefJruZLI=~GrKg`RD-xK28_uQoRL zN(^I=$0k<;y3+!m!= zTNd>xYbpVIxa-NH?)rI?6v}II-r!?BO-jyUL?x-I4VK*LjpP1iy&Ouev`*)wnAL!z zI$T(+pe6R7Wq3a-RyP`8{0n8tp9XrJP$SG!*12w)azq=0ZnAeMoDJN94_dxl)RX!O z#(5_{y+f4_H`JV$!rF@7eHLj-fdwipEkz_1as@ntab_DqZ=gB{@DgxoRr)W+Lf+B> zT}a_Wsic-@cPCP_DnLtV83-qyD4Yz7cez_PH3Z9e(^$*XnS@zjA2!p{vT{qZn{rA* z++>b6^GKP#E<8j=Ojbh=`BdRonEj}yXUMmo`&jE{KHgjbTUY(67RBvyaOI+zGX5O6 z;`adG&JSu?7Uui%7IzdR^iFF{#%dP&k{sNXt8$8{2oADtNkT~^oMSv!sfPgJW>JJ_ z+@%sQo~2m%jyhJi9FCXUl82ljCn~||_N}(de23hel9S^gjfE=8NTn)m@Z*goP2~p; zWMKWOV2Vu$po&Qn!^dF855sj%ApFJ7pqjALcAtuXWZQ0x%6TI$MP3rLpKn^_@QVB; zAz8+FNjS|tvOelvZ{b!$={-}_8kO;ZcRc*~%k}|dA=8cDSyQujQNWI zztliO*okj0+Fy{Ap_z)54t!;=Z|ntn!X1|w2Ufj_^73-8u1{LobF?tiF3XV`TXU4J zCy1ONkG&0PoQB^Bn3CH=fu8giLjKKR>%QY}fr|ttKg47d<-&vI$Dzee>IraEwxYz4 zl}FB05^;k~BwX#yN08ryyx@lM(C5_D&7KT56zYr3AOnQ>ycHh!t9%sw2`w$~lbw?p zLyz%LWID`r<}%V$;=jq<=k~1b>L_$KCG4c2DHz}@j?|8DyTb86c^?k5f|RQvW73Jg zxLrh99wtH>z;ANW6^PUWA9ZFsSnW0Z1rV z005Nk-g;w?em`m@R@ZIO*@pYdWp13UBbEIL>BoPyc1;a>{5Q2U<5x)Ndf=ml7ty?< zw+FYab5F-ZWjAEKqg{}=&Lb|P1wbhBLVM%a=qY)3O0&_#!SRD3F0urfYioW(M-80d z9C~JsWzp~rz2YP<9&y)cue8KwCQoe=qpUQ95>(;{Dpo!Dq>d@*(&RMJ1tn)5+}C0} zJ!epJQ+tx;Z$s*Qkizm>=rKg8G7GrMQhWQ>o8xBK z5ZYGS+c;X12LSdI;`SgeFb<$7ebiZ7FE4Y6Ufdo|D7e=5WX+2emp7^K7Oauw7zEIg zrm9R9OC69xX&~1$o@HFCWv|faW7r64?O7?Kf#_wYjZgE;qCUNAOgVmW~Nm zPCuPac*0(R@c#f0B*fJb9hoIdCN9Eup!%E|g|d@A`zOJ6Fjt4Q zIUFP&P6w@Yoj;>(s<-%eJEz4XIdGB?f%HA=7oup`a~rqWqBgk>XD+gwl=_lro`&b1 z{$+wkbDe4>#fJW^H`*jE)BdiR!&OttY^2UTGuwm zt89;{*zj9+DIh5U(YqgdrPwIc4E{>Epn99G2tajm5-^~G5U+2wOjw<5?;SFoDUg+u zgZx69-etb!tcK8}NN|*d?K#Ny6|%#jH5BDHE#np<6h33gKT+C~iJ zYFK%cj}Q(>rLUuV->6AhJ*%m}{5xviUU~gQ(w=Z1D~SLkdsKFz(-G}X<*iL`xHuKN z!DL}*KIiuo@<3_nWAYOtQo(HKcTKu(ldSDcQifP&N`}$yNBrwfqwC#!dTlZ7^5a|g zWFkB!K-xVrMNh6leglp?>fBiyTM9hlz0%I6I@2XVUQ%;|&(k%80^5g|0O+gM!+v6rtaz_~5%$d`v$&ZOL{)|nA=Mu{ zm;nhra;kbFTkX-7VYY|LN!;Rp!_RDeX(hA6v2oJ zWjn1s4mp)_y-JH88N;i=BhwUu7PZ8h;u}MQV0fpLA7fHUw<;~c z!{T_%jFh+rO1(doSBZlS&u0RzMG8bN={`&Eu3VSNeaz=?uhz6$L}^zd?DZ?dLJ3Mz zag}zg8jU(x+Qb+3_fZ%eSFPF|Z3X#PC^3+wW0mDY?b?l3mvWEHO)+i4eb`10Y;AcZ z!hS(iR&`lpIOI!oMX9ip;!JqtsERTuZO~Z-qdxixp5?HmkDtS z{{X{n!Okg}NUDp;kC5Ct+?h$s@=ppRwv73J`cdx1T!zyz-RMZhP^0~;eX+Rg%Tv#! zImQBtxlyh2Z!sBt##>4b;e{1c)&%o1J+b2en9|%E4&|`W+) zkoCDrZF_c-PI4(-*6s%7yrN_)m2MsA$E_`fRUO56E;ctHj`caHq%iPG9A4Mk;Qs*S zSQByh(MxJ-3q*y5mw|Nf6W*z`wy%k3x4mssEwb89RQd*7SKl=^VrA(!22&af(^d%m z7L$UnVtp&9F{7;)2xT)gn^w0~^LVQn`qK>!M`a^R5x1?at8EHmP*`taq2V8XuHl+zBmgh1ztm*qv=(X z^gZGDhCr7B0Rtqy=6_%h{KZOMB8W~WYD?+^YMcr3sDspc3ak-53`~tiEw;w^r-XMO zOB>ENxICh*Eczoej8A_3Tj~%w6xe1spq#cg`0E$Oy*KwaJOVNrF zjhNc%F@Qbj!4h@y;N*n1+8aqF#bbnXoPRpPQjMk~lG72HOfQcRsFfq_-jl|snpkqU z1Q|Lybkh;5P?ar`P)LqS3GYr>w?l38wFcalJWilDx9WYUIQoh7!~X!Xwlf(Ua$ZVH zYXjE4x8203pB7(ntgC8#LxnrfZup>O4K7^#mUR6iVY9yf0K>XkSlAR)=owP6&{sok z#_T$6xXnk#dZDAvE1g?xh_+i|Oz~b+$tQ#@SqRUje|q14yIi!~Np4%z<;BGS5ToY8 zzLj=6RjDp&JCy91Hz!_Z+S1b6Pnp##g!<-@YP~Au-pu?Pb{4gRmzLl{2d__jR;vxW zTU{+ldh2mw(!=;y!z6^d;QDo^^RCe}_MGvfL4IIwAxLcD%#Qy507~3UNs>^U5qd@I zG>;GS5a?|AfEfqdJ!y+-Wl9KBFFNYJP|`pGnOQG3`=qx5kobMq3Xg~}f!KYjylI$i zHq538TFSCYRlqeVQ27X#E?}ll%w<;XJXbn0yGbY;I$+sswYb=ROMp({s}f-}hef4y+S%U|3k z%+?%ERG9ZCuO;BU&1V?|gsa~bL2J0NZ(5m-O4`g;*J z>U%(nf|lMAE!{%V+v`~~Yt-tqrcI^DW+)j-mggjWC|iT`W3%8s!_2bh{{RxyG5n}? zsJ4rGR;Lje3*4X;#yvggoFf~kG$k#LRk|Q8$aZ_z3}sEBt*Ke)dGxPt8p3o`VZ?Y% zC!#|*RtMUuB3`uf@DV0MZ3~jZTa42{`9~a|eksMrN&f)Ua8UdQ8_F@i#r`AcD^!LR zG-fqZkjK_DW=(Li+SzH|5zY>Msc+((onLXXL;UV5k6T+fVdg*$AoS#pr?)k4sx;$} zZcRBlGcEXhB(gyqeLK{KplSD-OgEpDViHSj7f*zoo=yi8>?KvBk-ctn0%IXblKgbM zrWLotLVEigRg_=Dua1D#_)L;e_B<9z!c(5Z(yStA`?@2ya<;;;IFuu40zfKPxd*=# z&rq_aEfE}5#mj0`c9M_^8YJ*=DNR>mZcLX%ME4dX==%yHrO9%oD1M?AtnJTC4@v^v zEHem+RyN+9D~9|;;V934tuU}#FLADqGkcz!q$Q-5C2z^+*9N)`qeR@?vY`?#EI7h^ z-X_mDPh0~@#tqPu5EjXi&FPy}veLtnZDpH^)3`W=@Vt!l>580|%H3P-w56o0f>L^Y zYPRhj?uQ%}SW<3JC0iLpgXJBvN$5IM`TRBfV4E##5p3)S4&^q9K<%nHF#iB>nVC>= zfu`*u(`_*B@FLt%&;pFCdSLq0?bgoS+H+Gw@)CxCQH>?hkUIfgF3+Pb))ahpu3@X9 z+XYNTguTT|><`|dFNu+G)KaeUElakme$+;FByGn`{dhFHAx(*ipXnQwT3b%AxJ}(< zhOMx%`f1zecOB2SdU0--XgY~;+=!V;LNbEtu#v~5bNNSCOnHe{2`r`~C&<%IVL0~! zjgFTcnr6j$xl&b)=|DVtSDBRlYieT?J&J|uOOBOA_1kQi8GQ5NqO48&>AQyVU(CKf~Qp zTDk0E!41cq;JQh|J?e_%cDBgzT9JCSwzR7%8?(o8fl}tepwJO{m5}<(Azd`(zB*NV z)Xm&q2ZmWrKt7oqni5>JyF23tyE(~ooX-b&|Mr&oZFhX2vBY_~p ztdkmPlFKcWD;P2s*5mf0C0o7`BI6;+GD#bf2-=c8$E8rU4$>`*{2bJ_N%Q1oNhA4I zxeqq;i9-r{LOxKpQS%?CrC7L`Q*hBriizP(zE6j_mBO|mJwHz?Q2L&=rt5f-Z;0iY zHwP|K<`LqD4?*;!Wv%fv1bNnzmM{>RpoiEZ0kQwdAXDM};9ab9E3T-EHGUyE*XY$-+5D+ya@ zK^Z=ty{ZcT01`t}cD%?^)AJzk0r#tTmRpQZQ&3M7wDKNQ#mG{Xm7!yVW1yuPzI&3} zE;yo8t`pLVp6F0gNlI1Jr~N4cC2qJN&S72(GmM-AQZFFaD)F}WA}&rTvaqy*Gu4CE2mQCg8ma$A8f>_N^D4{B8rNMZbB9DkTqSyUCVJqEM0Iy-vi@okR8cdl`l z9Vo|z;O|%OiWc#!WV#E{)#0cQJ6#f^_Na*x7UQQGP{&@BE0Q)gQ@{h0S&2Yelm07r z8(Z(PjmAXD%R}veaD@&&-qeccIdUIT(Ap4^P5>2zWW6!M%v33Rk18C2PNG@iG*GLE zTGpP32MHfjMf_oUtU=;E;o(I4R^)k3Rh1v8r_3(ETXC}#w6vTT0`gb%6m5nSBrR^3 z?JTWBXkR-%zNVJ%P+LDAl2|z6i69iDcPACC$4OWl^Yk@$BG+u6Kf+qFKZrNLO#yS# zaMtKWfiAkRFuxO_RT2PUu4Q5bN}WYIBPFKPf|URiG07g3!Y-q2cv_>PI+8E~d;90D zCc0Se*5`IkYr^9oq~{`+sRg0~+yimIw(AD#0QiqXl0##c+3mhN^ozykzs>qCFsNCBuI$dG@-K4rRzOk}>^TUotJP7TE z(~qbbt;P^hJ;Z)&^%2O?)`oBBV^Cb2g%Lx0f;kIXMtBB{)b?+~*s)q&gYyRuLS9$Q zew8rmkCm;(D=R0Ga!H_57oL=mSc;s85Kx*Mv`u->7;o5~ z4O~SB&_LDwEqC%)uIS$->2H~c*~BgxS{Winq9Br+2>iKJ!py}G}?BS!$kyl zCbqHQ+-z%WPsjLqBmx%V@}ftnJ*!+l#EYe=E4ON!GdCu2j}@eVc&FojjPiN6Msw5Q z$8kGSoM!;5ni+ADwW-Ca4h-Z3^rt$a>1w-8F50c`L_*IfSMdESCM?%`*hFnRX;g)Q z=So%3``4f31sMQYQniaQWOsZw7Uop6;{YClnQ8eCxiq$j&${O9;SG{A*k-J>-{B?Q zNp4o4eW`%y%SxzpZlkoV)5zk^V{OR*SvL z6D}`KKH8F;5=J+B^{=U&$5TgR!b7s%dPdy4w>SpAr>_+i5N=MpsI0f$JQ}pXW8=Wa z7xOFVde*%=Eh!6)a8#xnPt2q@yJ_^#Z(5maUfSne67sabZdxlUDsv#Mc;w^!xy}u0jWG|#VM1ndtf?emkA8a7 zu{bP2`6=;5Xq%lAO)+na5vHAxnC=9Og$#p7&2Bt~N@0bmNco-)06%JsYGs@{lH<-# zQ($;ySxQIPQXNLNulEJ17l+{?18QT(Ud`1}%X$*^VaCL_644QADv*%0pW-A4GCWC%kT(P{*&(6maah=$ zz_`Jf17Zwr@ZV>_4T$fyasy`yQTm?MzCGr6DDk3)Ts;!`%5n7+e0>it>Xessqv}R} zZN&up)l)x*vQ-r-)jG;Ui9asL=_OyaR@(mn2y8)UT-(~3&m|2Yq?7*u+N`aAhniL%6xF?R6rcV_ z+$uFtz@uhPUgs(2;9NGnL#kx9o_4mB>;wM*sqOTn)(hX_V(-uJR>BJ=T9bD^!qT@@j{li)0FtE zXD8o^y>s!O@Y$n;mt6M|K%i#+IQ}05lAC0y9>zLwYgu^;;{%l&x%uw*s@`!*h;;q5 zr9`KDaaI(8>IfZaE4Ryyxx}U;^AZTi@R?Qz?wb7w@8fQgJjKyVaCQFx2_yR&8Slnu zYvw26sdGIEYp?$R(^|ed{aMT8H&-}&KZqK=vE%@-Ku^E9T>$7mNnhzhNz``_1y9B9t)x8O74f>V6|b0 zpLH;lgGVCM65PptQZ2CAJxKt6wRilC7{-PayF|i=hX^c;}+t%g5EyUZ$hMqEg zFh2hPwH2f95w6U5HhUW|8A3u=B1D1Xtoq>njS+Z+)v%E8f5UWSEoF8*ygyw!228kg-dI}`asjF2+3n(pxBq8jia5r_K z-Q0ZmQ9h!zzL!2Ig*aA8>FG})!#)R@0|ZknD%@c_Voou;kZUHENGHSl(eonhUJ^F} z{Hr+a1g9lPQ0PD$(3Y`tnA}z*5UeYvdYUb%2y=vUS=?A{#?OX;RojYQ*jzvc(VTJ* zYT%)T%^T_(`)w^rQ;I24dU07uG1kUP3RXDX+Lo>Nv$*6RrD|H-P&p^*M5<^)MI*Sv z1XSP=e~6N3@uW^Rb+KdPpJKuJgXU2^1$%du8a$@ur5w00v}c6U4IUe1 z_t2t|yRW@%xw-JKrNx1St0_t6H7nu^l7veDTZo0pjMAltqc~KBjFLMm(wFLM&Y*yV zLR{6ZDtaYjBCwBfkv2(vji^{T2*w8#(%#HF%dM{B)Teftzw!DM`wlN#yz;`RiM)ZSIKUg??s-_<0_0VN#qQ`^DrOR!}u`yE{0?lJk$Sk3Jq& z;l~_j>ss&bH0rlSWiIZ<;9DWGMtvuBBCsEwGT7tNXiHL z(i;~R1|x;AH4!OFnAwig4sC3Y5l4il+ce6<4XH36Xtv(atb*XlA4+3&X$-(iG4R_c z=VFn{jyj)O-DyC66N}gor8ngX<2CAd^fUyo6YhkQjUDIiYf4g;22K);_4-q37S*hU zy$CX~)Q zE)+K$FM5B>hprIa697XfN<&PxM%8GDa?q4wIX&<*+n?ILVKZhc;Ni+*NF((CNdX7b>p|)l+O)$lSy(P@`G*|$qRbM7MR{1z zKNOoo&iKOSpu)DRZbASV_V*OOP|UPC%Krc`l|I({pChOwp?^_F-J>a=!zk_od{gI9 z_n@@0qF=2^i##-?kO?Q85(Q7dgHRP~XP{?2Q>B9`GaY(UN;wNzK3_s9d>crR@Olej zQe6b4pn4B;)}HIuX4s`W3R6fC963tQUt#pGbR0+KGc^r2u`DCRapVs&M_>(B6ajPH zQj3f-2%V_wOGm{?O3+GF3E&!QWNB!MJUHdmtv{rIoaa61b>VQtb^cx-R_+!aJns7c z06MVK*Z7t=ao%DR?pzYk2|-5h5l8%^vVW~$Y8MYSUKqiMF0hcx3u<$3Hu47l01T^X zKGo%&=buNzp=t?2zD>t(r$JRutuj!%<>n$?ogfsYrSKabq>y&Lgzqx+edSV)sjKOCY|;V<=+_m!}qIKcJh zs&oqXu58!Vlphp%maG5=rFETS_#>ok+7*>0Btj~6pA!K{>PK@}H3nVPE=i9Zt%j5O%Lf}z zrfAzsap2fg;#A|eCs%~UZ5bdQJNM~ZExLa3Ihm22ma9Z~?H8V4^>dDjq%9E*Rarp( zq@?E%wvibT*7DFYw6>B*@7j!oZNJE}zjB7lNr4b$!ly8#_QnrdaQYgLr=m8?rKeWj z=^HRNdIMfFqHnhwGnZ6d+hQ)zQyqB$W8e8xQ;5{9Gb*f(Ze7lEq9B_fCB+1kAwUjk z%CyIUa70NeN5m)$sb?eZd(y*Yx;J<>_EyiuHRn>0e5v&QwAN*^{{U=hKb)y5j;s+V zj3=JiJ^IrJ@~N3zmH>A$kj$+<@D0jjtRE?Cp1*2Wa=6?iytxlP;@$o}eov)%uM%>x z9ezY8jmJOB){TJxFux7w5VEo5+&TTI3k%%R2q|oB>4j0D781sIC_Y*9g#}MN-~j zJRv<0Pp&Fpqm`K|Vga``+?-2O(uhlvrdr`4DLa&XPoSccc1&oFIQmp3EkF{yl7U_) zMQTB9ZtFT@X=+&^rh}VQeR%7RIHm4FFo|hxo!{nB$yeT=NCu{5ILM(k-Y#pE!v}f- zN1xu4xe?dGQn+MDaE-YcBvS}6Qz}z&l;~kDC=J=h4Rl8=5beyOckHoB*|S=E*@w&Id|O4$(R5U_r-%R7on}Bc3oj*O#3|2~XxLDwKo599DdzuRqeAX*Xuy z-al7bEZ?-{hJXXxIRPu6`SV;v+KDhL*Tw#pHdo>h4rWEapQ?|si znM&X(^%ZRQ8SnnJDFL?Qv@O?k?RBJK#dSI7A6(+Py}rqITb~bdN+YQGkd%&5>6(Ps z+HPAD3W*DB40wS&ANQmD&mZ**9-C56OIz-;wF!%6c~DzlnNDsPN>A6lbf^%TVskLn zB+Gc6swH7zCmqj9ing$ba$w1RSBD+KQts2|Bj`VGy>yrY&UE6ZTauWlY>>(nJnt*H z^%(y2vqao1{>%)Jzq@yhDa&Lxl^KoL%6KauT4|?XE;597rZqj!pTfvHezo?bn-=YA zY4;SS=EppQ{HBmXyV~uIJ|L~dOOwK!P|3%93Ma8dMG+8*NyB!hmx1J5tZkV4GXY-B&%Uj>@*QF2V9xmd1a?*y+SAo%>-*K8{Y8D9 zVuXu(E+Dv~P8WlY*{R!Q!XuV%%VjXsjl2aY<7fA(D1$!u7jvKvGv(!$Ao?iR2)<0IGFnOba7WW_6= zCDx=Nd^lEo!1@Xv@u0~=u2?Sfq`9~w+@G~Lj`?#>%#AU(BD}(|+o>cK`kpCd`-B(a zwQu-@hugtYlulgxp7o9VIGLjFQnGyeO@`|Z1*+1`)t7+XwEqBvPtvMwPCycp!XABc zPgYxShSBV49*NU7mhNrcSdzbqQU{UM0EKotMO55lh>W_(jUAL6o$V{mLGPT=;!s7- zdeNBbT_dP3wx5Q#{45CTJCv^!<#_BVjk(cg)4u_Cj$nik+tLmSa69L&Yn@AfSX*BL zE~t)(q~*3;P*T9Dufz%W#7t>-M-tmkwdel;xZSw=<2+`yvTOW_f}7M%#MQRnaEkTI zO5R~D!=KbrzC+W1d(?ib(b2AG4@%WgO!Rq_lCTS>=qrv`H4_$D%LZ$xib9H%lb(G( z{VIOQe>T<Prrz4~|JP;$&H6uA3`stM1zrMG*n!Z{YGjYwKZJ}SxJ52>k_T!Qnhw$f!Zgaf(H;!?e- zV-U;%9YMw8GdK91e$!^S%Y?(RC%(kf(bmBG=jdv0R_aYp3Uc(-!H8EkTuDoBxY!EE zbDVH$KEtW5R@rE4`qeN9)|t?;DF6Xf32Ir#?|e2*aXr7D~x@}0r4zqDJY zL-8zA6bM6)D`xEHk7L@NLA6@!njBn_3AgUj6jkCnka+(9UTB7FEvUT_mk_p8;8x_T zf;-lm{mwM&ifopc>z2fSFNlzFyS+CXjzzvf{g~WZ+mdcK05+~V6r4Jy#t2WK{pfq8 znbwq+;kN3QP6Ap`E+6-&;@4#YoEsdq*q~XG`lAphN3`9hDz6=Hu3V_~D2}iJ|9~9stjK#)5n-OrD z%qIutL@ihdDLX=b)UI@tNMn4q<-XwK#X#Vne_Go$ltF^IFEmu(7;kycH7jz|w_9=& zmz1`G`XD!xkMyU8APCjm8t{yf0mR`ESa$rWR7mZ|Q%Wo(v#(Qbna~=`Q?ez+ zj}F}f84@SE;in$B>rZF?9_ecqo_1~9Raej5-NoGXpD~^+f z+b;P>&{eLS{4=ur6A$X0K-@*W%TVI0bC~U)N-R(CN!ufJG)A^)n{|v&pMGu=%LJkv zUo*URRYXXZ?3W(!T68wEpN^C$0JXm8E6=?ob4uQ{?AD!r z8#7}C0=2d>3VxK_hysX_kOF5lwp*?eF0I676Ov>&e28z%q5hT7pnewWC;tFiY?Et@ zpW!DfSKG0sH**>#%{Lt~ABysjLxBz9NIY;qYHMrNHh{_ysQWb*pqmxqF=TNm`p5>;@gr&r*^_?RlKGjvI?>8%y1iJV{B{UA) z43v+0Bi6UIbA3$s2zZsK@}8slRKt>rGO&$|nuAG-T3G>GvDeU0 zd-fC0+t!@NwOl1gEVCWOBn+u%fkMcEA(;gstdZD`l)yohDGfJ8yH0Jd1(_>k0nX4l z{p!z8>ua@=DDY%7`khV`hZCK(0pL2GSH?S5=G_1j;%&#h0a`kOMasx}g3!CFWZqz< z@}(CyDFCFL^uVoGtytyGT!$p5G04M7N_K>ffC1X2UX>riDnL+k*ED2j8-0+Mm)qvY zBDt9NG%c9s*(xG!$!WOg4ui_noaVEWacv(mihvz6iboi}91TQD-BJD&j%tR*r+y*y zuIQyUj=mN;`x;GIxXTL?redVYEWly;uAkvy1!wtJj@xc>9}$xU_TDER8>!lBu3R5g zmfaX>$WZMmNdZo_k-bB|J!?*)i}{U}Q&=wULWyX=N%wNfpeZ>-v;paN=hY zO4(i#Ne8H-kt-_%01Yf{3Jq@PJ!=r6K2?=c>N38{1kLjVseT&!9@O45vXqdw5|S3F59kYg0e8DatR;nT8+Vo9U10% zIOv8FRwv=j@hR~qt~_Yz!%G7Y=#q=LfS{G62E8V$Dk#fDi zJ+gUkI0yEoR_mRTHlA^$xVGb@Zoo+-98kUxtPOW3=VS=})cm_$x=WHSO1eu@Jj+tb zhHIZek#m0R{Hbp_xS#O%MhM_SgJLNIkZ*f0U>C&e4ThJ~Nz79Ob)R-+4mk2wQM;-k@2BO-% z%6+6Xge8@-aF_AUM@pzM$Y^yMxY&+I?Cys~+nkajIK+kA)}5_6At^(DUcd_9Zu};_ zi7m@}P-*s%K2(_sSAN5#aoe7})QYwx7Z>KfqMfI919<+psYy3^Yue*WbSUzn;&D`A zZZ-&x@o|*|&({{;!bt8H9-FGr;@#x@JBdgiPARh=g8ED-KJZkxKhETl*1sZYyQG!M z@aA1zjDmh*=}JW!=Ax9`(;17?k}!B%QZfxt2wsGxNa#=5*8K-#fY?l1EJ6qIEkS?Q znIhF8gyIA!&5q#(BEKM7?pFux?x`AzV0Q!|zZ{hl^rRM@PxzYM+*|(uKDfsvM4&iT z)9p_EPex<7S^H(nb@^!|ct|AKw&lb_C~J!T1row-at}gbV)@gBRV^L1eS~{kT6uST&~Zm^-Nccmanb{ z-Q~rpAz436Q;+`un0nS0*PD5{s&lfM0DmD{kN*H8jMm^Tbd_W9$MEnG;@bRAK;x#j zH~4k6(8?XvcD2_lH?)8#kD-Nfrd&BGxekG--=qHlB006Tf%|JN^%qX z(}(^`9bLj1*87!A{vT+4xMNB|a~_NmX!f)vf;uwZkAMK~xZn@xQu99(wLG>#j_f;f zdu&GR{`8t%=Klb2N{zzzHP(+IEvslIl7I4};f8W!1G&?arEJlXJZN?pX*`gio<7tp z*MAS-q^5o10Vo`ylq7z@16+RTZA|p7P0E(FC}5@6jx+nvc6%dM*zcvJHkV!>GEPE% z=BEDu_|R({sw{apx~b6apNe0D);C9m49k|H0zx8{DM#yHTz?nttd^0d^bCR=;VWBv zdi1VS{{TZ+E)%?KtjY3ZB;}*MNUo9aFt081{ zBX3b%`|&FO0IP4d$&i`4cnuUN5W;c1W7eZT{aNgA?9a@95NF01=_ub)}K!Bq)WdJI?P~fyOibmHK+=fA}b^+iZ=h zD-7WvB^)R3QaYv3@;CAk4bC0}!jN|?5Gq3?}hgKlwPsG+{7^c1FGR^w6ZSdjNXTbAwF zaUvOyD5x}4QiK!N0935Vclk2>S1zuW$;w&>$~~*1O-WO%$&qamoILGm1cVQB+K}F^ za%QD$LA9a32y&*u=j-W88ASklgj^j7AwEpV?*`=ls*hEppsiAGQCkTKX~*6pjl6+H z%3@3H7akcu_@^M!lqo4nklI34qyAhPE&{g~#2D5s+A<-PNpT>jO6bTScFY0+J=O9Tf1))Ja0HKT;$(J9I z4f3f?jfVsdhP2!ywuKcXg7H82@k9Jqh{~H>KM6$e6P!~5C;~AtfM<|WOvINL@~eZI zp^*tL#Ze1Mz{xa)J}F2(5@cR+HZV){I>qc1L9i?Y;~&pM0V7f|*(GO} z5)Mc6q_;)3gW-i05yv#@TuX~QFoZF@Wf)d>eMKy}TTFN=kst!`K4mAMsPNY<#jW1r z2ZFZ+pkp5OL#Nw$=*|VDMX+#GIvPzKtvgQC##8jMi<;pEUS=HhT~(AWct-?(=|PDNV6lI-Xyn#)S@nobmgJq0()VaB27dg>t7X?1sp zno`2ZBqaX;o0Haxv)`KdSoWqM2Hi-H&->z`Vb zFBTxrFUo6fVsiOSH>hRA_!mJgCvieg2p*O6g|Tb6t|MykoMZqJgcXu~Fgw%D8)8bn(E3v2 zZ#qi&&m$PkGyuu~lro%(1m8XsnJLT|o0iGTo*KF*-@m;*vqLF_LlP1le`)a#7~_%q z@kZ$uqoIj1<2r@CB?YGvwFLAXKPwR;UsZ`?I@yrx6Q6nc2?Z%=4=Cf-va@(dZA}%c#8=DT1MNoY4KsL&bZRq_pe1qv zSlUmB0Pl{&p7n;54TYG=b*7&~n|xLLq>p;9#>hB>IT?`L*D}p`irKjZE!NUA;qBX+ z=~_?lcF%dWF?g4#rLIe?_^N3DY;2y@4|#=qX5r)BXD8v*oHCZ4%U@Gg--od^`+9Cr z(?6HoVLEWr%5;H@V}N}#R$`-#jJwCOY{X1xRGa&-EbUw_ei_E*k^^eN=W*;QM!1JB zPTqH2VYw5-Mj2?Ua9BQv+ZB6m*7NkFNh!TFm8rK9+>eFA6557xGv6orS3LYr*J;;x zX5&MG8;u-oVN3bkQR~yNs3P#-3iwJEW=@D|9@g5L6~L%vY2d{s@hE7!d+w*re{u%Y66`&7=h zo@Pdm5lM;^-f*OmxEyz<_Pt^ovPO!`b{Rxg!d1pX)s9J}i&eFcOly!1M?ywvX)jyv zu0@d0ZFy2u9Zyl3(WzTfOU$K7EU86JoNzsB&1-d)bGfQyl%cm*@@yMH8P6ZNpq`U5 zOk_6j+}KZ$gySNt0JStX#=N;Kf1#kQR+L=Z_=G2U4!F{>fDH>4-!kCzyUb7wW~3I} zN|ok3){QlKdLEybZ)Ispmb{Q?n*sP}F0kU92?`E`^xUF))~$?$n4lS0v}~^h-6MEg z%rImjNKWI_40Qf=T{7m}YX+V%PlEex1g&TuW5@c`#qh*?NW9Eg{u_%SPOm>Pp|00o z6H38l4m4dsPDmpo6`2XMCC`Yl1N_RSFB0wdHXePXI_vG7g~apkTO(fdHlvp0E4{7O z)kV^^?lA`&)aMg{vBt?M-^jk(|XR|94!DlPNXI85+OsMFwv*rKlZ(Z6_u05V8c1~! z*>5Ua$~nM2Pu8C4A|y?b;z?5Dx1R~ce7Nj><1_?4BHfktp}%#Daf-kjo@pc?S{Jr#w0{} z6O>gf0&(d_w*~z_XG}YkcgRY&Wxhg>sWm03LL^;Xbu$uFpb1NA;CoZTQv-3Bd{k!y z8=VR3tQlGk)fM?6wLFZgX~_U`NgwmAa+dBYwcnKWxpJRZihoH7BxASqqJ)PTwXMd3 zX#>cTzD_&;07@Fx>fvdL^P6;dudfL8#bDjXuZpGrX0s1W|Kl@fOx@ z7ntfEF9|#MD;euZ6CqB%8$!c)I0re~RGQOMv3YT9!j4#so)8Z_`wEhc6i1Mzb&0apEHc!*U=KV^hQ;X}1P@@Fy~X(Tp;FO?J2lSbVjz_jSdZaZ;6p6a(4`-V<& zlj>?x^J!w=Wn?jPZgu750-JLw^0JfuWBzYnOz}Kb|4HR5qu2!a$g0m&Z4j36c zB{{}1(~8u@1>9m|RRkZgE{kqV-Fm@@ggD|7tY?6qtyIsA35iZWbDQ8HwS|6~cM_m` zRL|keH|JgEshhXu*-it=NF?BN$)WC0=fY@<^~Ac;94kiEg(-aTz@;`aa)Kneu(ReB zF5LV_)mLc0^uW2vcGywoTcBlW&rJ37sq6F4MT{ORAx@By+lnhmS(I2+;q`{ua~=>p z9lrDippw|5D3t}MVPJR79e%k! zY;z+=b24P8crC^+m-dPk@=RnJng zn>DG0v2Dmhk^(jOhyOZNb?3pzt;ThK(fo@YPxHw9dvaS$w$XC*Qa$xLR`;v}iGm4FDx zzcmEiq%K%~>mFEPIm#1(oE&l66vp$brClMS)+fk$*8ID6oQ!dSit-)0;`?fGZpn3o zCnv=_Qi|pF(VhOFH~68&DG_6Q8zBUSzli(irBr?u$yCJQ67gU=~K3=jH^w=Fqn+GwdF{4e6QcF zRQMC7DHk~^LrK~;q#XYBgJO)pmd1G#SjvX*{Kd%*tg9|B830fk%Tuo7c8wk*sC}1* zC_=og{e9|pSib8DdBEzBm38wB8e68k7FzhE@ap<*PXd(8!v6rMYAJ3yk#3G$_@<<- zOGzYUClp1VHV0S-CTXVZQ#Kxi{1~^7tBaEKkYQsy&wX=MYb$W10 z0svB5PF3yzr6Jv!ym>8|(jeL6$4cR}6!9S8YUtv-;-#-KVnn>O!mY`Q>Xpe?IVAr8 zDyWaB{{S+wCRM5+3QES(;&}tT1FIw|^3+$87$N4Bo#7eZj@4E26(_%G)wIr$gv16G zzXdYiK*DwcrE$kSg)ll+1+Y6RYhl%ZR8-j+#eR6ye~Y)<3j!o!h9w|?R{7@x{I%`d z@xtiz2nUMit3|PF(NWzErhhU zMnG+OLIWLVzoID*&ZsXP~NUq|GOBhV8WpT3?DbrARy| z_diV3{l3o@QdVAR#V0rlMnL`QPvSQlOZHCMjp@6ZBtVlUE3J$LHiAK>lV7{#QzXbT z{bBg5L8x?`}m%D4cj1K%|=`mNb4d_orMWciS;6o2RTps{+3W>VVfY_Yj1 z)fc4CA#JC3hmaHWrYBf|1xT2bj}VZO71UJI(Pl|yW!Ubq9Q=+e%e(1I{sj!pLvj`m zrtXOqt5pPI1nySG4NHjhhL)8!wEz-m#$nj)kF|EWDQ*bEaA~yiv+wOlBFv8w^f8op zK>Vre{HW*IGvvJNXT$BS0F-AKt_|%rjnu2s^JQy!v)PKJM1&E91o5|zT7RPLZd+S^ zH22XeIuLU3BLmp_bgoLQm!`D5{0~+b79JQ`;4SJ8o@Z;DwOON|VVL8s&*xO-|WMUlk1P}|MCk(twZDFzQ={z3q;rhO1(4=4gbxwAzqJBN;#Q znvIubl(jrqaHS1$N&eMv7S-gYOh?kUk%8eUc_Z4GH3^3p4LGKwr#W%O5C;@qCQr#g zXq=u$2RwS5b7IoH?(ZQdsTj>r=!gdWsThdb#Bfh4Qt+G#q}GeDCLoI2tw@k~NNjLF zYK?B(>H$+qbOmrcG?GuS#Zu*bjAlIL8Sz=2`MB+^DYoh9mSjsv315tIjQ7gBRBo@8 zbhCI-ADL@~CHDe%LcrsUsGgvGYClTq1}v;O0qcCXB}rH*ZN!uVkF90+jTkWGX>wt_ zi4u{+Zs*Pi2kZ!_G5EPgP7TyTARsB0%uBJ`ToSHR8osij%8*KkBd-)gOhMGvxlfYg`NeaMKN34=ORX~bTZaT8S>5)l+1iz;cKDVl@rbrDg0|aH3Q;|Y z^{h+*GH>KdVNk~9a~cOt*fg?l6PaoagpRYAPY|zpRDY@KkQsG$qT(qTm zZl4@#uc_OT+^pv&z*@zN9;$0-M(6wW}f;WfRbE7mIm z>PVTWB&nvb2#x{}4}MQt2U86-0i;E>NKhmmRK3byw;d}M^uutXH2k?Hdns1p$__K^ zXttyx>cfpOZ?an>wxW|E(mX`{s+GF-m{=W7d2kNRXTo9CAr1M;olh$L>TYe?_}fH8 zOj!hPV zgXk+(qPJV4Fo^aPC4{R9P$$kux$9D@GM&Tcs#)Y|EzC-g)NtBB9;zm_T#%L{EiR~# zq0vVKSF4`om4TyHOQ`)NRXGu({0U(i|Cn+>|#1u<1lkn;|Zt}TL#)$Mr zfm5C_3Bm1y>s2pl2)Fjts4X%Oi-MKpX-;_>=dNp$#gu@i)$!phC#p)u4Rsv@ezeBZ z@3QOb_=gl!QU+20>5txnnMVHraPm0<8*bC>S&;0Ty~NyRx_NhO)5bS^g3Cq{_Xr{lS()ifu_5>+Wv*lL$=lBq@45D=}4}(VRTD>_R343VMiTl;^AP%Ym@>kF*4}f zc8|=jTx0K7(S?pBt>)pzOOK#nyi?{;?~iKdvO#4;AT2BI6fkPHNyWLmxX4^0(@W&K z;pIctgE9W48TJO{MUG1@!O9}K&J&N+7&-N%w}wQdspEiuYH_HaTOmv!fRLT3KD8e! zRIhaDUjCJRktL1*EEjegUMP{a+994{K)u*Luy`0 z7^NuS`|2TYeyOYX*;}y==6>Pb&%#quk)pw$1 zO2VU|v?(o&sI7Pcn8d3Jfu9&|QuLo)5)`?gc3FvF5 zr(&jTI+VG|`W#aT<;6apd|dX%O#sT82*Ji{V{RxbEj*^rVk>{t5+zI(_y~2ULQ0j` z9zOL`_+@%-9n;`sIO%0X?DJFwk;JI%c}h{wB=@GT23GQ2jpCt57%NG}4J_M(7ndI; zo#B2w@Z=?>A;k=%3m?w8_2Sy}35!zRR>P6Ava1HKiM83_q8p{jiWzyuD61adS|VlE zJ;CN>Kl~%jx4EHQ?Bk11AgNZ0V|+Ab)gi{@FL(JYQVmLLhK%KOZJ)FgGM@UeufcUs9y4D=Ji# zsVgVt1EqaH7BJyU?sNDu0Bg#s066)}keJa;h z*zb?NiSX_2TpN2UZ81+w;NYHukeg-BMdIEy6|}OFaF)uzQBFGX(-mGV7}v>Oqp1Sz z%4?{0B!XUNqEB)D)UyNvHj)$5J*wkW#%4UH63jq`vy_sasqAWIu0&Iy%8aQ$_@4CO$h9E>F>SGndNn=#$hMpUU^`+>!fWxHV;hHL~A-N zPctSvYYGGv@8qZ2s}(f5(p&`N88|gJk(TI*=Xov3tVU19h=+Vf&^ip`y>CRgFFI1o zrYc4NNZ=Dlkn^&fLoE=MDB&QUw7&3FZ*^j3e@ywdoY$L>xfLO0-Ah$GH!UT8P&iUo z!K|Bg)h8-#M0Y2*-lHwI*zQLmoE#ja5zapKxjKM&;in{}ruv=v;-N%tRXgz~xm7Ln zwBF^m09VR-R&Xb{taxODj8aR4=#p)XEv35isZdHlN0fWgxbM9m53H;(qr!IhA4Um^0|)g?tl9!Whb=a89L@#ZNF^~N)rm6H9%mXRhqO}feFDOOMIOxkut=uxIJ zHkE&jl73J3q<$}UOkWDzuZZ`747S^;OG@B^jHyHWSIU#QA*3e&^vTTw3DO!yeAx9p zMP%X{Qq)ialzGAxfGaX9YzfL{a+-ZB0ATl0K?aBM)3~&=wOujT*Uu}$1H;RB9H^di z^*v|_QKY!G{3g_;ZuyTueziXefWpS1;boW8wMtk6)1?*jWS3T=uEkl!0JbHzHo8;+ z7{EMM#v{sU-Vz+y^KDNeyOoK;;VWpYgzno#MTG_kFCi-~uja|f`p`>yMpj>p7zd(> z{&nJ}A-^w(mHUy&rsK-Vd{1!0u!qihsS0l>QBpoqRnoP(`)$Z=zZkfs^Y4!IxPs%Q zEvZ0vS8Blp)(Mv5OCz8mJkfs4doi4ywoId2Q5*w%9wNsnD;dY$gOhATp_W=s3BrLv z{!}D;iBU@T4mu@9m_K{DxWU^gwn9cWwww|wwev^;W3hQmqN21}4YE_;4?X>_Ck3LA zHv8w&xu&YH%d@`wt=`nheftw3h4LN z;lYd{+g^_X8=N`6Cvp1rs0+&x8a&|H-FnDz7D8KE?!mfc2E>(;aIq$#qc%yk5e94OX61T1Y)39Zr{Z^6d= z`&KnUF;lVKZzaFhCz5l6T2i;tcdyC;>05)N#659eEwxHXN_?r$Tvt_zzyk?Q&1+AF zvJ>e=wnEttB1j7V03jSy^T=CE+1IvfF(FAoKq|@P;)LP`0mtx1GH+5#Drqb>Q_~8h ziYr+vSC`mytkB^jm1O(YMO%h5TA0EOMg;;62+x-%-n>@Ac~Q-LyrD!_nA~}$2vg>= zhjKX;UuM+niEd1HAvUzP@^gdtBdte)wOpKv-M=ZyRrJWEMDeR9_<$30b*13Uwp{QK=0D6cimyfBI`UC5)onZ#B{?Y`)gH$3*(oHH^ME?l zHJu3&(=KymmcSk%(Z+|E?XzG8!5`rv&v7P#bPd{$$JtMLij2pj8~kTv7SIlaT21)h^_6p1*I24 zPB>CcHnYf$8dAdKI2w26`q7t*TW&`Mw-VvTNlB@Bib@*rvyHVWe}ai)E@OqZPS+f6of^0ESsQi5MACnq?@F;b>BB!dz>EXklG zMxwaAeYlBI6ABW_zfq(o2Y0{knn!SpAT1>?$9$<mbx1y{LU{jn3n##W;aw(vV#a zyR3|bXCxLu9@Q>i5OT92$>6MK|Y zz!~&4eDWEXc%U=fkc2@e-5ZY1(3H$b@fx@aOa5gXt z#b29zFlsX`s##J>LrxNL@9kE)BV1|?D{c5i#ge;tIcN1k5}clX)jw;pF=b`Tt=>n9 z`|8RVK*?9ob``Gn{OL_8#jxrjta*t~2_Bx*#%=2ilQ;N{{XE(NwTvAX6h8nDR`Bsrj`Bzdf-&*9fJdAUf4 znw}F?B|vX$%+QT3H)cCBu>rur3m3RB&d zKGb-{MufDZ3e@r5klPYpPbZ<-fsA{0rRlf2xX3Iz=ZKyaxm+KhtfWetJt+ZeQ#(Kj z-O|2EQp0SlDFp|d92|XVwnWkDpg~sxM06QDM$&x6Jdl0GJBIOb_p+c$nhD3fCb}S| zNnA%8*ORw&i)mqKKm@JB)9FWA6{kju ze9v1bxhxRMM_oT4fc(CJ*!D-Y1%8GzhbB<6mEv?3By-j5i zOHS`xak-LP1Of;A>rZVukMRch@DA!3D2kNfds|8ZewY;}2&Zdpyr7)+>Upb6Sblr0 zT5Tv(QBVhr`nckR*wB)BU<`4!rW4a&@Dnxp%LmTu>Low56{};S3^-6CyjYO({K{{Q zz#mUa+kCo5vq2WSZ-!sMD_HjRG>XdXyXL2AT+OO2D5U`$qzYTFKUw1rSIST|Zffss zatp3M71NZByl)+xM{ zvO-&vl%)<7@U!Sm0^?NZMuK^7ab3SwTp%#G*F-mPVFZMgCzTIcQLP=*vLhi@$V+B( zgL0FMB|m=kmaIe-w8zGm;{^Z^>nP{$DGsBC+*LFgxhiLq0XuM{`U8%%^gvLV>-cIv zlEtpVl_m_CO}4LwjxeVJzle?#O|<2*+kCXOZkI8Lj>id6ZCzAzOQp$?`8q98+E!Gp z%Sh^@>sl;v9dyWhz;OkGg(<|8oYsZak*NHql6N|8sF@ZtF&oD~NM~U{Q0tFMWwt`&y|1!u|)X3SY14dW&$QyB^IaxkOc6lHjgMyLW|X_G0^~R`CQVcH8YrwF*%VODr;lDGmXGIv-kM`rkJ6DpZBM6T@M{ zouklK3TiS{Jeuaa6~x7YT4o|7DM~6KTx}-3ml@d!RK={XVFaf>RAkocZMs{Z;jrKs z$t5HYy>FQoD^_)(rxYbPa^T;`9)h(^HlYUg)O&o?5t+3|gv4hXZKNl0Kg4m`r(wAT z_rLA8wvw&ND(y-FfJMl1-JgOuT2W*i+loDzF2a%Rp{i}N(qxY-hbg|nZH*2%J$y39GG?H>C4Ph@#vic$0 z;xzKfp8XcXvn#{pe z;_MrEF0He|60__+=C!_?JC~>0g!9rS1>r|&2^s$YD5Tc4+*XNq68MbN*ADk{(;X?C z7F}tj2c~;}wN0>PSmelQao%#y^0Hsuo_$U#lEtfF!_ngXcT^zLAAt0119rML|0hE9y^5Uj*`|a6m;fr)Aj%Ur|wty5piN!9| z3|ud^wj7;$_*lUNxf(NMXC0KT`JucyPFx)LS&S0`U;|zWh$|Fw<%79rAY~k z9{}^+YU}$@V;qT%1d5Xu$&umNd_}h*Xivz544ih!q3qA9^>z-SOJX`sIP3TARPgMl z{-Q;?I>O^T&{BZs9>0E+-Bwu5Y9(6jkIblH`a5Wo^0FXwOehl>1H3 zk*(a7Eg=!DkUcD`-m?uTja2~cXrgn$B@08E7Fm$1ebR z3D5JXlF6e92O(3U!_^U@+b#Ciqm@jQ;!vd}JOq=;A8M>(WM;1NZIRNIGL(Xc2*@8= z<+0*QWyH!-a0j)t9bLr7D~B}i;!?H;C!^dMB3(zYdS!p8;Gs#De| z6BOwwRGBU3!w0%YO6Gc(LeI3z&9owUeOUpt`A|J7(Vcp=$9@a(RAZ?-P)GoSQ&X-} zT8I-3_f{TO5`a$crxfJQYjL=8NoIaNB;*9)i+;>TZ%oCKWz00^LOtvMbEE;f}q zq;imH>h?t3UG7go54@)wj#7>P06U841vnRb)MguL$!z>HL~cV!;Qjj0R!B`ri1dk1 zhL}O&B>d;nn@Nin6}mg=<)=p&Jt$mTRCZ7f2?` z++$oHxj!Z&io;1iDtV-`o%n|X&l1@u8%I&;Os7w{&C|?U!--QUR^+(8cA8%alko&T z@*EBFR@zTry>oHna}v1jQ?Qn8cFoRI@}zO`HB_AzSJZx7$wINNKZg(*zp{j z33FXqlG7t-^YTRy)W|Hgu_}1U0~=I4ziL8(ack7_(>S5{&rXGer;?q(gHEMGRMmV< zvQi>APE(H6B_J0(`6?T;fJZcJc}}6P5wKd@(_ehV6Ekp}As9(wqwLP?ApE@+k}(f}KiK`%SvAdMI_O%Rp^G4zjfTVu39r;Qs*X zn~9C?2tK@~g|};!c7NkzDjQ*tsP3|&f`U5d-k~*4s<=#>;i~yHh)gFDLI~XF)n1%e zU3N`@wwP*iRUnk@bqN?MQTM1z-jUNzOOYx*7Rw%IBB@v-=~a@vX9LLlM3&u2aMX5* z*14{iQijKXg|8<+Q&X9g%w@;ru%DeiwbRpJ{5FFDi;9ehXmuO6CDK*LU^7wLoawe$ zGOSW$$wJSWw}up-^`+I0;+Bh48%5nC+2_A1b1ppElY}9@39N2i zIV#VoG^w`|q!Yh#yAMjz8}TGI7M1PXG6#B{o4G=Ki3_rUHL6UjUEgkypWYBr_GFv;N!hD(6=ZyiOW^VjqJKGN{7o)m*Tc3 z1Qm1G8pbFhG^jfkPYybdH}6z(HT9}AHsefb`GL|9!gu*T;-`NSXKD3DX;#u+T8?-J zr!~x;QsmD{P!@Kaqy*<4`0Y$gXD`1~m&WDxbo=(7yN7;09ik)_7w1uB-hZul#qkBB zXP0el^{9XxTewP3um0*)i?p~*w3SJD=>0Y+M{>P*HFE)49$k#8Q|-lgCncpTD?Z-2 zq+}!;X)bJR7CEr!yK9VicL5K=k-+dICwLyY?N7Ask~F#6VVRqO9g@!y4k8H&{f&i?@T zm2b1^Z8Fu;HKr@CsY&qPWgc!6GDbb|T)O`N_-m?v5bq43hxU9Mcy>WPM)<%K{vNMt z(`$bX$e}EJ9;F0(b@~~0!79|hu@fpmei#0LP!|nxyEv9)&BsL2wQ@u`jB$8 zWZ%R0A+>gWiEQr#xY-1by>UdhBF%71*;8t9P5^*0pWEAy-mmR?g2#8X-sP$*Zy|>Z zar{)}Ba9Lc^PzPjbQY7b#gi%{4_u$xQk1XERIZX*CO80edy|l^nmWr4MW*7&qQo8wE$+HkfKU!`^)$Ovr%BtOrsFXLZ^18LvWoqbseJXlu4opkacCEsq zNng43_Ml%Uh%>kjb@Fx_o}Phn(rB8?j0?8hyWx4kC+Xg&nEW@tN{S~u^fp@0TFD`F?=OY<-xljMgOV61v{tpsu)h|4J?PLgV6(MV%JnC>T# z+c;8F{{Y&Xxu6-|#F+N?8oBlObS&-rinx`jSY{*2gKtw_B0or@DpyVkG_EYQyI_xa znS6E>#|hev*i)E2F-FL*u@nuR$*CG*{S_;fCLC?d41^_JN4+SOscsCjl&Ch993D9y z)azEs)Xzdxvg({|!-88R?H=_S<*N5|ZArJoT&CL@SxWvxQe_@8;c!=vkpoO@E!$ z*0sL+<00p5lO;s>k^0JKf=8#*=|mXvB2pi8CDoVk&Bv|?lXkqda&eEHmQl4SJ+gb% zT)5`l4aXm43Uh>v4iX3Su3@FM{M|Pb!ey78XmXOHj(tvg)@^IqcQ+-!JxXn-6}TX) zB7sk2$g(a+I}!ANiDl#^t?EA^BRfq>>L^n!2uht&l=AxR-~s7W&~>Jtw>HCDJV#t? zsl^=OC$OnqX{%ejkQ*ueJ_ZLEr{nhSGYN3Oe3H}m_{YRX#U4}zY__+9xS)~ruNzxV zNK22Xl%!*hwDF{+Y^P#M6WEH!Y5+^}Fi{gqXkkR;bH^2>vNqzJxZ6aKR!WDhDw2TH znInwW4T#KbVrps9%Y+XpCYnNVEh#QI;)z!{>?vR=SSOFYZw?i;uqzn!tUD8!e3mO= z6BupQ)=Ke%#V(emw%Lxb>U(39llP%)_a~T9YlRNP_NpgT#m*+z6rUL*%A=Yj-i!B!Dp)QkgVYMe=M#VsoPk-TF1j}3iqG*VZsQlcM%w`RMG71go@te( z#=H;Ic>rUSo~D6=YjDTmwW(dQIHIFNWssMib)@sgc{PCjg=C28!pm>I>~>#mX$Q-b zkF_NNM>VPqC3mB zB0E5E+8o@Y?o?4aJIK^LuN7-t);Y=nP`IpylP4EPSmb2j= zgy*p7#X;SsJ8}taEiFqN1nfNj0Ht>cP0EW6sOv2#w2+bl0psseaUP8zU)hNUELTE8 zykZGi$jJlK85Nko3`ER%sPUYb+O9DIS28JK4u6EB{8iDv2H-r4g6=ADzlI>8UU8B1 zN%~P5rXx2ECuo?AxTG8`I6hye?@sLPKw*eVZr0NU2^e)a%JK(LJkoa520@De_PQE)r5v>-Fj0qE)pQBN~);hM78gG~j};Rua4?D<4c!i@PaAnJXoJ z5pWP*#(wm}Nw+Del3QVG+}giSa)vYO{itn2X}T;e_a(<#&nahN!9Q9Y-^zps0_;gk z{D^6~ItFQJIke^&*=|_hegY7KEk$6#*Hs^2d+TDqBLuhk&DNJ&W|Jhmcs0hT^oAfF68vlSSD8TxS#%NzT-c#(}s) zn%|wq(%DhUNLW07!(L`)Wjcr>Q)4Z@6dZSU(mcS95-V$^hLlpWP}%O0)|REIQR8^; zN^!(wjilBtPC~M$2_ua4ss8|G<+M({Y@(x=Okn@|80BZNy}l{T~`O72d4wWYZ}87+9lP3I(v zlZSUx4sCHcbQ~yWg&KBlvJ%Py*kLGG|%lxeB6$D@m?*~7Vn5~pp@lFAoZ;WiHSJqMaFc5ZEM5IlhlL7 z9*3kBlBZS@J0(isQp8MQ^RTiT!5}ZLKWaJ{4wWfI4mOd-M@nE`YcUTS5Og@|BrEk= z+@qbrITgLYfHC8`Qm(2{!9PJt9(y zWAh^TDrv_2Qjv^jkG?59rrLuQ)!3n;U~|smRIQ(0YY6Xn^3u~xBn2!DNk;_3uK4jsV=O0qumi&xkk($D-n>Hh#2v(lUmtJIo+EwKpg=j-4P~5O_ z-v)^mrkp}n98+VqIn8a(9l+KSyac3?>slOXjo&s8rfYkQmQ->|fIM@G*WsaGsk92~ zoDGvP4em|?G5-LScmr7aR^kayx7LPy^MQfdxX!8K%WC6{Rt`3@oVJ2f>qIpL z*5=M#89bBUy=rYfbF^?PHkJC|kO2pST{xPRI#q|0a0N*Xm3*EjPpwhRE4isr5c342 z?HkkrRA?Xiro@dr)Cc01CY0bf5=IRqdG=zwha6c8#zH{oeJjt(PD4lJPHSZZcNkBw zzYvAG+;ph*Q%c>M(#tXffGyGyyVJE%TJM$_X%_itlGKfWg(sAgN$!e6GgQctxC4=d znwbk9QY2{Z=Zgr-K%xi34%#wlP z%UelW)U0D5pQV0Gfji-+H6ckVM(hwc;;d6PVs<}mlknlrfQ|)P>_FrF&qD*QHy8GP zr?@=b(HJ_mbS95Pv=TA<4AO_JHu)nCYm2jiU*}eFTqfT;S2~a(5K*r@jn6aAt~>Jrcsd(ukx}WB|+MS^oeIAP|;x`)(y8 z065}~2i(xoZrVBsD~G3TC?l@s!9UKqMb^zF_jgFubL4<>Q?#THr3^IOB_ngMT_q1f z@<9HzfeD(~R;Njw_@2uRskkVH!g^t(0BK|`L~fDi( z5pfAdQsjc4GLNUwRjtlNuGwrwr8CtDwweKNmQ>=BG5jK=BWU|Y@+#)(twAbd=+5N6 z$A*<->L~GhF(1^c_2g`s9^@r0)VLPr@y_pmS|OJa43w!w*AzO|#ZLHTJj~Wo+S)r- zr1R5?#N3!#OK6OgC!lxumHw4zOA@fa3llabph#>i1n)h_08=^cFj*xL*;xEdz) zaEmhT9*Dx(XJ`ck_pK76p=_&bd!7fE7NU5pVMa;{qsVXoV02mpd9q{7J!az!p ztc-W8RR-=KL{z1)$PUPTr$`T!<7&DedYpa9k!3!JrN1(W+^&?(F$~o<@*PrKJq~eN z({5a~xq<_&91wad-mr_Qq*}$WoODUr=>bXUj+N9c+K$a+wnl_h;-@}5$_etP+cnN7 zMpF{^?#Kg*acZ908xF2BGInsV?nXYCrQ`(aFD@YIP1JoYh00o{g)K$p5QJcnR2oT# zAx~kwpe0;|bpBMLEzqsxwHO4JMoGp8JaI!kaFEscxd>X+7$eJ`2M6sHy0#;2wmJYSDbYxpug{aE{)^EjxCe)fX;3 z`U{^J)2%$5l2N;F29_UMgX7}#GUnxQw*)5M^rE1I<+8FjaZ-;?iwBU*yELEuem*Zc=5Pr*x7MQfc zU*-mAcWxAog*awMc2k-DOPdbsN^xXK_wD8lSi7_M%6AE74Z#g#{r*jt{La zvs~r4`)e(5304Y+>U$qb^glpx(S)c9?lfakU1PMhMOs)ZP8FY+ibs38Oq-NRbhvw{ z^fj{UEl$Z(p9q-CaYQ8{d%AJfl(^ap#7KQj1rd&n1w%kg|LWg?HPL8B14aqyuFjaxlxdB@c zvE#}O12$e*x3g_=`$VT7jk-EtN4k2`ZMK9>p7YC}oyBUwN`92p%hT$R zwL!sUUoj~8K9wk&fgX3V>U#Nj1MOQ^a+@#z0Klu^#y&xU0Qb!#;wMH<*umM43#nx* zaW^Ksclb*wYxO_%^!26Jw`DyQn39mTBq>``(o?f)eM#?LMTYiKDN<5o1G|0>LH0eX zDVKRK-2~a85>U%Uw3QBUNXZ`jP=w*3CphV>O_1D=5+a&#I{QiU6eT&_d+}RYk?~vP zur3FyQl>3Ym$V*(7^ANjPZ^Y{QNwPaa-{TCWiUIF=fmtO7V^ujrJac! zV{jarUj4n+-9zbUocyHrp)5C~s^TH66}WyZ!R$6O4yG7_S80y=Thwpp(7?$5n$h671S>k}NZT;p9L zy6Jg^l_8>VjmIYG(sac;#}^q=e@=117g<_|WdUmAg=E1{rLwM_zHobs1Vl9Q$x? z*C}vgHgFq9emdmyQUMbA2s9@1!I3sJMjGYSxykF(*Es%^4c6YowY@6UEiS`s z>}}L18;^RTyxNzd9)N3CrKLY6V}5;;v%E30EUvtSZY@2qC+KT-x{satyRbDrA7Ag!zg3(l=dsmH14w5yvYhjQuFA zuTb$dcO>1l&Wf-k1f?0s30{Atdn(}b(a{T^1+Jdd;aB87>f;vK4x@zxwb%Jphvhee z<40_hz#w9Z{+RIgY{4z?~*A=4~mp5%} zrz4N;Pn)+zaR_WFWlp1ar6IByte!#WMF_Ss@OD;mk=D;^0uX6C+qD~-ZSe8+LVUe zR^WIa%C@uOt(7FWq~!MRPdKe*g>_S<+ATst43MGbImpfr(vfOg&F0^AL>LiUW#tX1 zeDF{9qO^{nk-4}EWR$etQ-UeI__2Dop-=5Zn5zo$Huf0fkG*aOs|HGhh9LD6S|i;b zx+ROl&c}5K$qk(K?^w&z*T?PwyJN04v*l8rRtl5-{eIP}QQfYV>y#<77(x=CGF(Ek zR-AAM`%^f2u@^+5YiTXKpOrX2)|@GOnZCq^y)CPK&B*3!(-6VhrLTdzz5(s%Xb;Uw zl&z>rffz_5HPiKOlw(rbekKELiG{GYKZhsl>0I_LiBS;YaljM~(mM0@tzx`vN8$)} zdw@k*K`R90oRR58MwQ}7N>!Y09>cA8%u=l#uF171pL;8txs4;{2HL z<0Z%vTje~Kxg`Gp!9(bKk{g_(a#Ejd!;CEjJX5<2IqgUdS)sy`?lMyNz!d8B7Uc>H zad%_{_JIm9&r#?M_x=IMf_W z%ErFPeM2!1yM)Clbgw0O`DrVJE@B96Ds^fJMnLOD-Q*W0DlFf812X` zsp%>i^DBh?DA=kk9nV1VMfROXPeO~QtTEMaoXgYXq$MpOV5vFpik;Wf(-!F-3?`Uu z<$$+bQUM_(e_lmQX^`d9QJDagt~$WMJ#pHd{vyJfi?U~e--{stuYL6DMQ zGvX$oQm05mA*NJ3B@k9g#`>cCI=EY|{x+6{XDVBWF3g(hu!Mo!dQw-cGM%@jYuUql zh|jiaCJdRd)has^WJP81hs!F$+)t)@;;+Ym@#N81(HTunr+&I=OH?+k_Ki^N)G)2e zWwtPYbI2<1)4fICA6BZ=tlN@gD~B_3msbLmr>I$Vp((&SBz4lD?%C0h}f96qL|Y?pM|uCnH~rMDVd z$StGhB9!RB5+vmfnw=&c@yYjxU68_9h=mUcq$deT>Ce7t-07wwxBNm&ZVb4-g}*>4 zHI6;n=LIdpjDZP5a8lHeufKlgv^52*l&4rzuAd0t?&weaG_YN}5CWZvrbW%L^Q9y? zy5fmFAxG$TVptC9;~$5K~zb-wv{&mGfl>hk_VMM zsQ0P|uJ(&mcAAzPk?{v&Qb8bQpNAT=ZW|gBKF1y;YkPvy`;ysG3RJCxDI|{dloI8( z+DlTIj#@@i($$41{rc5QQ`(C6z{NvJis0OKw}a0=-nk#*JC9xUVPyoe+e2tleS1|Z zh@(fSkazy${Vl5t_Zd>J=@L@4Z9){Br9HS5+T(9}eAKyZW+P0bbR;AvK7iC6n@=Ju z>3RE$&%D{(QggIb8DaUTbtsfj;o&@V^c64b$;gc?4TC6{xzDub6S9l)G5-L^$OHOQ zXYNta9f`Aa{F&(q{WT$zl%G-BlvypQvaKqgEIlE@FcgwUV~!}4W`YCL$X zCzlf5a0j6Er(!%w{-8F-p|Gz@k!xIK*se^ltmL@S+(D#mHD_XAOIPW(=L)i@tS5p0 z0NjqW(!u!MXt_AHW+l`%g%-g>YRZY@KGe;vN2V;gR&~fiOYOA1+ni@AStqBpHF!AV z1BqG8{{R)`Hk7mABnZVpCG{iD;ix1*x;XMyZ4%Ojo))z5exGXYF>f|4S!n#qU8O$` z+B{9T#t1!y52tlJT}!83Vk|_mgp!0MLnS!RdIohgKlq!BkvUxZGgjydk#o5+($+G} zMuz3D{{XS=NzmJ}TT&uNE;^xCIBk^+`PY^A1&%2AG#<5xWq z`C&{!YAS%j!ZLDwa%z3WZ5S0uQF8oZ)EVefanq%0D%`#X2c>%0+^lysj^ETg^fiD~ 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®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