Hook generic and sof song imports into the wizard

bzr-revno: 1014
This commit is contained in:
Jonathan Corwin 2010-09-05 21:24:47 +01:00
commit 436bcc9ad1
3 changed files with 52 additions and 15 deletions

View File

@ -28,6 +28,7 @@ import os
from PyQt4 import QtCore from PyQt4 import QtCore
from openlp.core.lib import Receiver
from songimport import SongImport from songimport import SongImport
if os.name == u'nt': if os.name == u'nt':
@ -43,23 +44,32 @@ else:
except ImportError: except ImportError:
pass pass
class OooImport(object): class OooImport(SongImport):
""" """
Import songs from Impress/Powerpoint docs using Impress Import songs from Impress/Powerpoint docs using Impress
""" """
def __init__(self, songmanager): def __init__(self, master_manager, **kwargs):
""" """
Initialise the class. Requires a songmanager class which is passed Initialise the class. Requires a songmanager class which is passed
to SongImport for writing song to disk to SongImport for writing song to disk
""" """
SongImport.__init__(self, master_manager)
self.song = None self.song = None
self.manager = songmanager self.master_manager = master_manager
self.document = None self.document = None
self.process_started = False self.process_started = False
self.filenames = kwargs[u'filenames']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'song_stop_import'), self.stop_import)
def import_docs(self, filenames): def do_import(self):
self.abort = False
self.import_wizard.importProgressBar.setMaximum(0)
self.start_ooo() self.start_ooo()
for filename in filenames: for filename in self.filenames:
if self.abort:
self.import_wizard.incrementProgressBar(u'Import cancelled', 0)
return
filename = unicode(filename) filename = unicode(filename)
if os.path.isfile(filename): if os.path.isfile(filename):
self.open_ooo_file(filename) self.open_ooo_file(filename)
@ -72,6 +82,12 @@ class OooImport(object):
self.process_doc() self.process_doc()
self.close_ooo_file() self.close_ooo_file()
self.close_ooo() self.close_ooo()
self.import_wizard.importProgressBar.setMaximum(1)
self.import_wizard.incrementProgressBar(u'', 1)
return True
def stop_import(self):
self.abort = True
def start_ooo(self): def start_ooo(self):
""" """
@ -135,6 +151,9 @@ class OooImport(object):
"com.sun.star.presentation.PresentationDocument") and not \ "com.sun.star.presentation.PresentationDocument") and not \
self.document.supportsService("com.sun.star.text.TextDocument"): self.document.supportsService("com.sun.star.text.TextDocument"):
self.close_ooo_file() self.close_ooo_file()
else:
self.import_wizard.incrementProgressBar(
u'Processing file ' + filepath, 0)
except: except:
pass pass
return return
@ -161,6 +180,9 @@ class OooImport(object):
slides = doc.getDrawPages() slides = doc.getDrawPages()
text = u'' text = u''
for slide_no in range(slides.getCount()): for slide_no in range(slides.getCount()):
if self.abort:
self.import_wizard.incrementProgressBar(u'Import cancelled', 0)
return
slide = slides.getByIndex(slide_no) slide = slides.getByIndex(slide_no)
slidetext = u'' slidetext = u''
for idx in range(slide.getCount()): for idx in range(slide.getCount()):

View File

@ -68,19 +68,30 @@ class SofImport(OooImport):
It attempts to detect italiced verses, and treats these as choruses in It attempts to detect italiced verses, and treats these as choruses in
the verse ordering. Again not perfect, but a start. the verse ordering. Again not perfect, but a start.
""" """
def __init__(self, songmanager): def __init__(self, master_manager, **kwargs):
""" """
Initialise the class. Requires a songmanager class which is passed Initialise the class. Requires a songmanager class which is passed
to SongImport for writing song to disk to SongImport for writing song to disk
""" """
OooImport.__init__(self, songmanager) OooImport.__init__(self, master_manager, **kwargs)
def import_sof(self, filename): def do_import(self):
self.abort = False
self.start_ooo() self.start_ooo()
self.open_ooo_file(filename) for filename in self.filenames:
self.process_sof_file() if self.abort:
self.close_ooo_file() self.import_wizard.incrementProgressBar(u'Import cancelled', 0)
return
filename = unicode(filename)
if os.path.isfile(filename):
self.open_ooo_file(filename)
if self.document:
self.process_sof_file()
self.close_ooo_file()
self.close_ooo() self.close_ooo()
self.import_wizard.importProgressBar.setMaximum(1)
self.import_wizard.incrementProgressBar(u'', 1)
return True
def process_sof_file(self): def process_sof_file(self):
""" """
@ -90,6 +101,9 @@ class SofImport(OooImport):
self.new_song() self.new_song()
paragraphs = self.document.getText().createEnumeration() paragraphs = self.document.getText().createEnumeration()
while paragraphs.hasMoreElements(): while paragraphs.hasMoreElements():
if self.abort:
self.import_wizard.incrementProgressBar(u'Import cancelled', 0)
return
paragraph = paragraphs.nextElement() paragraph = paragraphs.nextElement()
if paragraph.supportsService("com.sun.star.text.Paragraph"): if paragraph.supportsService("com.sun.star.text.Paragraph"):
self.process_paragraph(paragraph) self.process_paragraph(paragraph)
@ -244,6 +258,7 @@ class SofImport(OooImport):
if title.endswith(u','): if title.endswith(u','):
title = title[:-1] title = title[:-1]
self.song.title = title self.song.title = title
self.import_wizard.incrementProgressBar(u'Processing song ' + title, 0)
def add_author(self, text): def add_author(self, text):
""" """

View File

@ -129,13 +129,13 @@ class SongImport(QtCore.QObject):
def process_verse_text(self, text): def process_verse_text(self, text):
lines = text.split(u'\n') lines = text.split(u'\n')
if text.lower().find(COPYRIGHT_STRING) >= 0 \ if text.lower().find(self.copyright_string) >= 0 \
or text.lower().find(COPYRIGHT_SYMBOL) >= 0: or text.lower().find(self.copyright_symbol) >= 0:
copyright_found = False copyright_found = False
for line in lines: for line in lines:
if (copyright_found or if (copyright_found or
line.lower().find(COPYRIGHT_STRING) >= 0 or line.lower().find(self.copyright_string) >= 0 or
line.lower().find(COPYRIGHT_SYMBOL) >= 0): line.lower().find(self.copyright_symbol) >= 0):
copyright_found = True copyright_found = True
self.add_copyright(line) self.add_copyright(line)
else: else: