Catch common errors during import and report to user

This commit is contained in:
Gerald Britton 2011-05-24 16:41:14 -04:00
parent a5a8c0d6d2
commit d05c349f41
2 changed files with 34 additions and 15 deletions

View File

@ -40,6 +40,7 @@ if os.name == u'nt':
PAGE_BOTH = 6
else:
import uno
from com.sun.star.connection import NoConnectException
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER, PAGE_BOTH
class OooImport(SongImport):
@ -56,7 +57,16 @@ class OooImport(SongImport):
self.process_started = False
def do_import(self):
self.start_ooo()
if not isinstance(self.import_source, list):
return
try:
self.start_ooo()
except NoConnectException as exc:
self.log_error(
self.import_source[0],
u'Unable to connect to OpenOffice.org or LibreOffice')
log.error(exc)
return
self.import_wizard.progressBar.setMaximum(len(self.import_source))
for filename in self.import_source:
if self.stop_import_flag:
@ -98,13 +108,16 @@ class OooImport(SongImport):
while uno_instance is None and loop < 5:
try:
uno_instance = get_uno_instance(resolver)
except:
except NoConnectException:
log.exception("Failed to resolve uno connection")
self.start_ooo_process()
loop += 1
manager = uno_instance.ServiceManager
self.desktop = manager.createInstanceWithContext(
"com.sun.star.frame.Desktop", uno_instance)
else:
manager = uno_instance.ServiceManager
self.desktop = manager.createInstanceWithContext(
"com.sun.star.frame.Desktop", uno_instance)
return
raise
def start_ooo_process(self):
try:

View File

@ -30,10 +30,14 @@
# http://www.oooforum.org/forum/viewtopic.phtml?t=14409
# http://wiki.services.openoffice.org/wiki/Python
import logging
import os
import re
from oooimport import OooImport
from com.sun.star.uno import RuntimeException
log = logging.getLogger(__name__)
if os.name == u'nt':
BOLD = 150.0
@ -85,16 +89,18 @@ class SofImport(OooImport):
"""
self.blanklines = 0
self.new_song()
paragraphs = self.document.getText().createEnumeration()
while paragraphs.hasMoreElements():
if self.stop_import_flag:
return
paragraph = paragraphs.nextElement()
if paragraph.supportsService("com.sun.star.text.Paragraph"):
self.process_paragraph(paragraph)
if self.song:
self.finish()
self.song = False
try:
paragraphs = self.document.getText().createEnumeration()
while paragraphs.hasMoreElements():
if self.stop_import_flag:
return
paragraph = paragraphs.nextElement()
if paragraph.supportsService("com.sun.star.text.Paragraph"):
self.process_paragraph(paragraph)
except RuntimeException as exc:
log.exception(u'Error processing file: %s', exc)
if not self.finish():
self.log_error(self.filepath)
def process_paragraph(self, paragraph):
"""