openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #05773
[Merge] lp:~meths/openlp/trivialfixes into lp:openlp
Jon Tibble has proposed merging lp:~meths/openlp/trivialfixes into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~meths/openlp/trivialfixes/+merge/47127
Couple of refactors in the EasiSlides importer and the UNO setup code.
Fix an indentation issue in the UNO code while we're there.
--
https://code.launchpad.net/~meths/openlp/trivialfixes/+merge/47127
Your team OpenLP Core is requested to review the proposed merge of lp:~meths/openlp/trivialfixes into lp:openlp.
=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py 2011-01-19 21:36:43 +0000
+++ openlp/core/utils/__init__.py 2011-01-21 22:58:53 +0000
@@ -47,6 +47,8 @@
log = logging.getLogger(__name__)
IMAGES_FILTER = None
+UNO_CONNECTION_TYPE = u'pipe'
+#UNO_CONNECTION_TYPE = u'socket'
class VersionThread(QtCore.QThread):
"""
@@ -375,9 +377,37 @@
log.exception("Error encoding string to unicode")
return return_string
+def get_uno_command():
+ """
+ Returns the UNO command to launch an openoffice.org instance.
+ """
+ if UNO_CONNECTION_TYPE == u'pipe':
+ return u'openoffice.org -nologo -norestore -minimized -invisible ' \
+ + u'-nofirststartwizard -accept=pipe,name=openlp_pipe;urp;'
+ else:
+ return u'openoffice.org -nologo -norestore -minimized ' \
+ + u'-invisible -nofirststartwizard ' \
+ + u'-accept=socket,host=localhost,port=2002;urp;'
+
+def get_uno_instance(resolver):
+ """
+ Returns a running openoffice.org instance.
+
+ ``resolver``
+ The UNO resolver to use to find a running instance.
+ """
+ log.debug(u'get UNO Desktop Openoffice - resolve')
+ if UNO_CONNECTION_TYPE == u'pipe':
+ return resolver.resolve(u'uno:pipe,name=openlp_pipe;' \
+ + u'urp;StarOffice.ComponentContext')
+ else:
+ return resolver.resolve(u'uno:socket,host=localhost,port=2002;' \
+ + u'urp;StarOffice.ComponentContext')
+
from languagemanager import LanguageManager
from actions import ActionList
__all__ = [u'AppLocation', u'check_latest_version', u'add_actions',
u'get_filesystem_encoding', u'LanguageManager', u'ActionList',
- u'get_web_page', u'file_is_unicode', u'string_is_unicode']
+ u'get_web_page', u'file_is_unicode', u'string_is_unicode',
+ u'get_uno_command', u'get_uno_instance', u'delete_file']
=== modified file 'openlp/plugins/presentations/lib/impresscontroller.py'
--- openlp/plugins/presentations/lib/impresscontroller.py 2011-01-14 18:58:47 +0000
+++ openlp/plugins/presentations/lib/impresscontroller.py 2011-01-21 22:58:53 +0000
@@ -51,7 +51,7 @@
from PyQt4 import QtCore
-from openlp.core.utils import delete_file
+from openlp.core.utils import delete_file, get_uno_command, get_uno_instance
from presentationcontroller import PresentationController, PresentationDocument
log = logging.getLogger(__name__)
@@ -75,7 +75,6 @@
self.process = None
self.desktop = None
self.manager = None
- self.uno_connection_type = u'pipe' #u'socket'
def check_available(self):
"""
@@ -100,14 +99,7 @@
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
else:
# -headless
- if self.uno_connection_type == u'pipe':
- cmd = u'openoffice.org -nologo -norestore -minimized ' \
- + u'-invisible -nofirststartwizard ' \
- + u'-accept=pipe,name=openlp_pipe;urp;'
- else:
- cmd = u'openoffice.org -nologo -norestore -minimized ' \
- + u'-invisible -nofirststartwizard ' \
- + u'-accept=socket,host=localhost,port=2002;urp;'
+ cmd = get_uno_command()
self.process = QtCore.QProcess()
self.process.startDetached(cmd)
self.process.waitForStarted()
@@ -118,7 +110,7 @@
which will be used to manage impress
"""
log.debug(u'get UNO Desktop Openoffice')
- ctx = None
+ uno_instance = None
loop = 0
log.debug(u'get UNO Desktop Openoffice - getComponentContext')
context = uno.getComponentContext()
@@ -126,27 +118,19 @@
u'UnoUrlResolver')
resolver = context.ServiceManager.createInstanceWithContext(
u'com.sun.star.bridge.UnoUrlResolver', context)
- while ctx is None and loop < 3:
+ while uno_instance is None and loop < 3:
try:
- log.debug(u'get UNO Desktop Openoffice - resolve')
- if self.uno_connection_type == u'pipe':
- ctx = resolver.resolve(u'uno:' \
- + u'pipe,name=openlp_pipe;' \
- + u'urp;StarOffice.ComponentContext')
- else:
- ctx = resolver.resolve(u'uno:' \
- + u'socket,host=localhost,port=2002;' \
- + u'urp;StarOffice.ComponentContext')
+ uno_instance = get_uno_instance(resolver)
except:
log.exception(u'Unable to find running instance ')
self.start_process()
loop += 1
try:
- self.manager = ctx.ServiceManager
+ self.manager = uno_instance.ServiceManager
log.debug(u'get UNO Desktop Openoffice - createInstanceWithContext'
u' - Desktop')
desktop = self.manager.createInstanceWithContext(
- "com.sun.star.frame.Desktop", ctx )
+ "com.sun.star.frame.Desktop", uno_instance)
return desktop
except:
log.exception(u'Failed to get UNO desktop')
=== modified file 'openlp/plugins/songs/forms/songmaintenanceform.py'
--- openlp/plugins/songs/forms/songmaintenanceform.py 2011-01-20 05:42:44 +0000
+++ openlp/plugins/songs/forms/songmaintenanceform.py 2011-01-21 22:58:53 +0000
@@ -535,4 +535,3 @@
else:
self.booksDeleteButton.setEnabled(True)
self.booksEditButton.setEnabled(True)
-
=== modified file 'openlp/plugins/songs/lib/easislidesimport.py'
--- openlp/plugins/songs/lib/easislidesimport.py 2011-01-21 19:09:56 +0000
+++ openlp/plugins/songs/lib/easislidesimport.py 2011-01-21 22:58:53 +0000
@@ -81,44 +81,43 @@
def _parse_song(self, song):
self._success = True
- self._add_title(song)
- self._add_alttitle(song)
- self._add_number(song)
+ self._add_title(self.title, song.Title1, True)
+ self._add_alttitle(self.alternate_title, song.Title2)
+ self._add_number(self.song_number, song.SongNumber)
+ if self.song_number == u'0':
+ self.song_number = u''
self._add_authors(song)
self._add_copyright(song)
- self._add_book(song)
+ self._add_book(self.song_book_name, song.BookReference)
self._parse_and_add_lyrics(song)
return self._success
- def _add_title(self, song):
- try:
- self.title = unicode(song.Title1).strip()
- except UnicodeDecodeError:
- log.exception(u'Unicode decode error while decoding Title1')
- self._success = False
- except AttributeError:
- log.exception(u'no Title1')
- self._success = False
-
- def _add_alttitle(self, song):
- try:
- self.alternate_title = unicode(song.Title2).strip()
- except UnicodeDecodeError:
- log.exception(u'Unicode decode error while decoding Title2')
- self._success = False
- except AttributeError:
- pass
-
- def _add_number(self, song):
- try:
- number = unicode(song.SongNumber)
- if number != u'0':
- self.song_number = number
- except UnicodeDecodeError:
- log.exception(u'Unicode decode error while decoding SongNumber')
- self._success = False
- except AttributeError:
- pass
+ def _add_unicode_attribute(self, self_attribute, import_attribute,
+ mandatory=False):
+ """
+ Add imported values to the song model converting them to unicode at the
+ same time. If the unicode decode fails or a mandatory attribute is not
+ present _success is set to False so the importer can react
+ appropriately.
+
+ ``self_attribute``
+ The attribute in the song model to populate.
+
+ ``import_attribute``
+ The imported value to convert to unicode and save to the song.
+
+ ``mandatory``
+ Signals that this attribute must exist in a valid song.
+ """
+ try:
+ self_attribute = unicode(import_attribute).strip()
+ except UnicodeDecodeError:
+ log.exception(u'UnicodeDecodeError decoding %s' % import_attribute)
+ self._success = False
+ except AttributeError:
+ log.exception(u'No attribute %s' % import_attribute)
+ if mandatory:
+ self._success = False
def _add_authors(self, song):
try:
@@ -158,15 +157,6 @@
pass
self.add_copyright(u' '.join(copyright))
- def _add_book(self, song):
- try:
- self.song_book_name = unicode(song.BookReference).strip()
- except UnicodeDecodeError:
- log.exception(u'Unicode decode error while decoding BookReference')
- self._success = False
- except AttributeError:
- pass
-
def _parse_and_add_lyrics(self, song):
try:
lyrics = unicode(song.Contents).strip()
=== modified file 'openlp/plugins/songs/lib/oooimport.py'
--- openlp/plugins/songs/lib/oooimport.py 2011-01-13 17:55:29 +0000
+++ openlp/plugins/songs/lib/oooimport.py 2011-01-21 22:58:53 +0000
@@ -29,6 +29,7 @@
from PyQt4 import QtCore
from openlp.core.lib import Receiver
+from openlp.core.utils import get_uno_command, get_uno_instance
from songimport import SongImport
log = logging.getLogger(__name__)
@@ -61,7 +62,6 @@
self.document = None
self.process_started = False
self.filenames = kwargs[u'filenames']
- self.uno_connection_type = u'pipe' #u'socket'
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
@@ -105,25 +105,18 @@
context = uno.getComponentContext()
resolver = context.ServiceManager.createInstanceWithContext(
u'com.sun.star.bridge.UnoUrlResolver', context)
- ctx = None
+ uno_instance = None
loop = 0
- while ctx is None and loop < 5:
+ while uno_instance is None and loop < 5:
try:
- if self.uno_connection_type == u'pipe':
- ctx = resolver.resolve(u'uno:' \
- + u'pipe,name=openlp_pipe;' \
- + u'urp;StarOffice.ComponentContext')
- else:
- ctx = resolver.resolve(u'uno:' \
- + u'socket,host=localhost,port=2002;' \
- + u'urp;StarOffice.ComponentContext')
+ uno_instance = get_uno_instance(resolver)
except:
log.exception("Failed to resolve uno connection")
- self.start_ooo_process()
- loop += 1
- manager = ctx.ServiceManager
+ self.start_ooo_process()
+ loop += 1
+ manager = uno_instance.ServiceManager
self.desktop = manager.createInstanceWithContext(
- "com.sun.star.frame.Desktop", ctx)
+ "com.sun.star.frame.Desktop", uno_instance)
def start_ooo_process(self):
try:
@@ -132,14 +125,7 @@
self.manager._FlagAsMethod(u'Bridge_GetStruct')
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
else:
- if self.uno_connection_type == u'pipe':
- cmd = u'openoffice.org -nologo -norestore -minimized ' \
- + u'-invisible -nofirststartwizard ' \
- + u'-accept=pipe,name=openlp_pipe;urp;'
- else:
- cmd = u'openoffice.org -nologo -norestore -minimized ' \
- + u'-invisible -nofirststartwizard ' \
- + u'-accept=socket,host=localhost,port=2002;urp;'
+ cmd = get_uno_command()
process = QtCore.QProcess()
process.startDetached(cmd)
process.waitForStarted()
Follow ups