home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.5)
-
- 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
- \tto access the pipe. This function directly returns the remote component context, from whereon you can
- \tget the ServiceManager by calling getServiceManager() on the returned object.
- \t'''
-
- 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)
- continue
- except NoConnectException:
- nLoop -= 1
- if nLoop <= 0:
- raise BootstrapException('Cannot connect to soffice server.', None)
-
- sleep(0.5)
- continue
-
-
- None<EXCEPTION MATCH>NoConnectException
- except BootstrapException:
- raise
- except Exception:
- e = None
- raise BootstrapException('Caught exception ' + str(e), None)
-
- return xContext
-
-