 | OO-Snippets: Python Bootstrap moduleCommons| Keywords | Bootstrap |
|---|
| Language | Python |
|---|
| Application | Office |
|---|
| Authors | Kim Kulak (initial)
Christian Junker
|
|---|
| Supported Versions | 2.0.x |
|---|
| Supported OS | All |
|---|
| Question | Is there an equivalent python function to com.sun.star.comp.helper.Bootstrap.bootstrap()?
there is no counterpart Bootstrap.bootstrap() in pyuno core as far as i know.
|
|---|
| Answer | I've looked at the bootstrap() function in Bootstrap.java and a similar function for Python. |
|---|
import os
import random
from sys import platform
from time import sleep
import uno
from com.sun.star.connection import NoConnectException
from com.sun.star.uno import Exception as UnoException
class BootstrapException(UnoException):
pass
def bootstrap():
"""Bootstrap OOo and PyUNO Runtime.
The soffice process is started opening a named pipe of random name, then the local context is used
to access the pipe. This function directly returns the remote component context, from whereon you can
get the ServiceManager by calling getServiceManager() on the returned object.
"""
try:
sOffice = os.path.join(os.path.dirname(__file__), "soffice")
if platform.startswith("win"):
sOffice += ".exe"
random.seed()
sPipeName = "uno" + str(random.random())[2:]
cmdArray = (sOffice, "-nologo", "-nodefault", "".join(["-accept=pipe,name=", sPipeName, ";urp;"]))
os.spawnv(os.P_NOWAIT, sOffice, cmdArray)
xLocalContext = uno.getComponentContext()
resolver = xLocalContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", xLocalContext)
sConnect = "".join(["uno:pipe,name=", sPipeName, ";urp;StarOffice.ComponentContext"])
nLoop = 20
while True:
try:
xContext = resolver.resolve(sConnect)
break
except NoConnectException:
nLoop -= 1
if nLoop <= 0:
raise BootstrapException("Cannot connect to soffice server.", None)
sleep(0.5)
except BootstrapException:
raise
except Exception, e:
raise BootstrapException("Caught exception " + str(e), None)
return xContext
|
Changelog| Date | User | Modification |
|---|
| 2005-09-14 | kulak | Initial version | | 2005-11-11 | cj | Fixed to work on all OS |
|