Clean up cnvdb

Start on Presentation Plugin code for Impress
This commit is contained in:
Tim Bentley 2009-06-25 20:42:22 +01:00
parent 69df159f17
commit 92b1b82a58
4 changed files with 109 additions and 17 deletions

View File

@ -1,4 +1,25 @@
#!/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 Raoul Snyman
Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
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 codecs
import sys
class Convert():
@ -8,16 +29,17 @@ class Convert():
def process(self, inname, outname):
infile = codecs.open(inname, 'r', encoding='iso-8859-1')
writefile = codecs.open(outname, 'w', encoding='utf-8')
count = 0
for line in infile:
writefile.write(line)
if count < 150:
print line
count += 1
infile.close()
writefile.close()
if __name__ == '__main__':
if len(sys.argv) < 2:
print 'No action specified.'
sys.exit()
print u'Uncode conversion '
print u'Input file = ', sys.argv[1:]
print u'Output file = ', sys.argv[2:]
mig = Convert()
mig.process(u'/home/timali/.local/share/openlp/songs/songs.dmp',u'/home/timali/.local/share/openlp/songs/songs.dmp2')
mig.process(sys.argv[1:],sys.argv[2:])

View File

@ -21,5 +21,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
from filelistdata import FileListData
from mediaitem import PresentationMediaItem
from presentationtab import PresentationTab
from impresscom import Openoffice
__all__ = ['PresentationMediaItem', 'FileListData', 'PresentationTab']
__all__ = ['PresentationMediaItem', 'FileListData', 'PresentationTab', 'OpenOffice']

View File

@ -1,5 +1,22 @@
#from win32com.client import Dispatch
# -*- 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-2009 Martin Thompson, Tim Bentley
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://api.openoffice.org/docs/common/ref/com/sun/star/presentation/XSlideShowController.html
# http://docs.go-oo.org/sd/html/classsd_1_1SlideShow.html
@ -7,15 +24,55 @@
# http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Working_with_Presentations
# http://mail.python.org/pipermail/python-win32/2008-January/006676.html
class ImpressCOMApp(object):
import os , subprocess
import time
import uno
class Openoffice(object):
def __init__(self):
self.startOpenoffice()
def createResolver(self):
self.localContext = uno.getComponentContext()
self.resolver = self.localContext.ServiceManager.createInstanceWithContext(u'com.sun.star.bridge.UnoUrlResolver', self.localContext)
try:
self.ctx = self.resolver.resolve(u'uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext')
except:
return False
return True
def buildEnvironment(self):
self.smgr = self.ctx.ServiceManager
self.desktop = self.smgr.createInstanceWithContext( "com.sun.star.frame.Desktop", self.ctx )
self.model = self.desktop.getCurrentComponent()
text = self.model.Text
cursor = text.createTextCursor()
text.insertString(cursor, "Hello world", 0)
self.ctx.ServiceManager
self.createApp()
if self._sm == None:
# start OO here
# Create output log file
time.sleep(10)
self.createApp()
def startOpenoffice(self):
cmd = u'openoffice.org -nologo -norestore -minimized ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
retval = subprocess.Popen(cmd, shell=True)
self.oopid = retval.pid
def checkOoPid(self):
procfile = open("/proc/%d/stat" %(self.oopid))
if procfile.readline().split()[1] == u'(soffice)':
return False
return True
def createApp(self):
try:
self._sm = Dispatch(u'com.sun.star.ServiceManager')
self._app = self._sm.createInstance( "com.sun.star.frame.Desktop" )
print "started"
except:
print "oops"
self._sm = None
self._app = None
return
@ -35,6 +92,7 @@ class ImpressCOMApp(object):
self._sm = None
class ImpressCOMPres(object):
def __init__(self, oooApp, filename):
self.oooApp = oooApp
self.filename = filename
@ -111,8 +169,9 @@ class ImpressCOMSlide(object):
return self.preview
if __name__ == '__main__':
ooo = ImpressCOMApp()
show = ImpressCOMPres(ooo, u'c:/test1.ppt')
show.go()
show.resume()
show.nextStep()
ooo = Openoffice()
ooo.createResolver()
#show = ImpressCOMPres(ooo, u'/home/timali/test1.odp')
#show.go()
#show.resume()
#show.nextStep()

View File

@ -19,16 +19,21 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
import os
import logging
from PyQt4 import QtCore, QtGui
from openlp.core.lib import Plugin, MediaManagerItem
from openlp.plugins.presentations.lib import PresentationMediaItem, PresentationTab
from openlp.plugins.presentations.lib import PresentationMediaItem, PresentationTab, Openoffice
class PresentationPlugin(Plugin):
global log
log = logging.getLogger(u'PresentationPlugin')
def __init__(self, plugin_helpers):
# Call the parent constructor
log.debug('Initialised')
Plugin.__init__(self, u'Presentations', u'1.9.0', plugin_helpers)
self.weight = -8
# Create the plugin icon
@ -44,3 +49,8 @@ class PresentationPlugin(Plugin):
# Create the MediaManagerItem object
self.media_item = PresentationMediaItem(self, self.icon, u'Presentations')
return self.media_item
def check_pre_conditions(self):
log.debug('check_pre_conditions')
self.openoffice = Openoffice()
return self.openoffice.checkOoPid()