correct piped soffice start, fix Python2.5 problem with unicode strings in optparse

This commit is contained in:
rimach 2010-09-16 23:01:44 +02:00
parent 5f7348ed2e
commit d2bf1fedae
5 changed files with 60 additions and 35 deletions

View File

@ -162,18 +162,18 @@ def main():
the PyQt4 Application.
"""
# Set up command line options.
usage = u'Usage: %prog [options] [qt-options]'
usage = 'Usage: %prog [options] [qt-options]'
parser = OptionParser(usage=usage)
parser.add_option(u'-e', u'--no-error-form', dest=u'no_error_form',
action=u'store_true', help=u'Disable the error notification form.')
parser.add_option(u'-l', u'--log-level', dest=u'loglevel',
default=u'warning', metavar=u'LEVEL', help=u'Set logging to LEVEL '
u'level. Valid values are "debug", "info", "warning".')
parser.add_option(u'-p', u'--portable', dest=u'portable',
action=u'store_true', help=u'Specify if this should be run as a '
u'portable app, off a USB flash drive (not implemented).')
parser.add_option(u'-s', u'--style', dest=u'style',
help=u'Set the Qt4 style (passed directly to Qt4).')
parser.add_option('-e', '--no-error-form', dest='no_error_form',
action='store_true', help='Disable the error notification form.')
parser.add_option('-l', '--log-level', dest='loglevel',
default='warning', metavar='LEVEL', help='Set logging to LEVEL '
'level. Valid values are "debug", "info", "warning".')
parser.add_option('-p', '--portable', dest='portable',
action='store_true', help='Specify if this should be run as a '
'portable app, off a USB flash drive (not implemented).')
parser.add_option('-s', '--style', dest='style',
help='Set the Qt4 style (passed directly to Qt4).')
# Set up logging
log_path = AppLocation.get_directory(AppLocation.CacheDir)
if not os.path.exists(log_path):

View File

@ -74,6 +74,7 @@ class ImpressController(PresentationController):
self.process = None
self.desktop = None
self.manager = None
self.uno_connection_type = u'pipe' #u'socket'
def check_available(self):
"""
@ -98,12 +99,14 @@ class ImpressController(PresentationController):
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
else:
# -headless
#connection_type = u'socket'
connection_type = u'pipe,name=openlp_pipe:'
cmd = u'openoffice.org -nologo -norestore -minimized ' \
+ u'-invisible -nofirststartwizard ' \
+ '-accept="' + connection_type \
+ u'socket,host=localhost,port=2002;urp;"'
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;'
self.process = QtCore.QProcess()
self.process.startDetached(cmd)
self.process.waitForStarted()
@ -123,13 +126,18 @@ class ImpressController(PresentationController):
resolver = context.ServiceManager.createInstanceWithContext(
u'com.sun.star.bridge.UnoUrlResolver', context)
#connection_type = u'socket'
connection_type = u'pipe,name=openlp_pipe:'
connection_type = u'pipe,name=openlp_pipe'
while ctx is None and loop < 3:
try:
log.debug(u'get UNO Desktop Openoffice - resolve')
ctx = resolver.resolve(u'uno:' + connection_type \
+ u',host=localhost,' \
+ u'port=2002;urp;StarOffice.ComponentContext')
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')
except:
log.exception(u'Unable to find running instance ')
self.start_process()

View File

@ -59,6 +59,7 @@ class OooImport(SongImport):
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'song_stop_import'), self.stop_import)
@ -94,8 +95,6 @@ class OooImport(SongImport):
Start OpenOffice.org process
TODO: The presentation/Impress plugin may already have it running
"""
#connection_type = u'socket'
connection_type = u'pipe,name=openlp_pipe:'
if os.name == u'nt':
self.start_ooo_process()
self.desktop = self.manager.createInstance(
@ -108,9 +107,14 @@ class OooImport(SongImport):
loop = 0
while ctx is None and loop < 5:
try:
ctx = resolver.resolve(u'uno:' + connection_type \
+ u',host=localhost,' \
+ u'port=2002;urp;StarOffice.ComponentContext')
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')
except:
pass
self.start_ooo_process()
@ -120,18 +124,20 @@ class OooImport(SongImport):
"com.sun.star.frame.Desktop", ctx)
def start_ooo_process(self):
#connection_type = u'socket'
connection_type = u'pipe,name=openlp_pipe:'
try:
if os.name == u'nt':
self.manager = Dispatch(u'com.sun.star.ServiceManager')
self.manager._FlagAsMethod(u'Bridge_GetStruct')
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
else:
cmd = u'openoffice.org -nologo -norestore -minimized ' \
+ u'-invisible -nofirststartwizard ' \
+ '-accept="' + connection_type \
+ u'socket,host=localhost,port=2002;urp;"'
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;'
process = QtCore.QProcess()
process.startDetached(cmd)
process.waitForStarted()

0
resources/images/about-new.bmp Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

17
resources/openlp.desktop Normal file → Executable file
View File

@ -1,10 +1,21 @@
[Desktop Entry]
Categories=AudioVideo;
Comment[de]=
Comment=
Encoding=UTF-8
Name=OpenLP
GenericName=Church lyrics projection
Exec=openlp
GenericName[de]=Church lyrics projection
GenericName=Church lyrics projection
Icon=openlp
MimeType=
Name[de]=OpenLP
Name=OpenLP
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=AudioVideo;
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=