diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-11-19 16:26:50 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-12-02 13:47:26 +0000 |
commit | 8eb37e74fff1806608563ee49489b8a1f71fc6b0 (patch) | |
tree | a3ae406c348f4258fe587143306ccb02c20e6d33 /scripting | |
parent | a143d7d14db9b12064391879822120260eda2702 (diff) |
pyuno: move "officehelper.py" from scripting to pyuno
... because at least in Fedora packages with system python it's a pain
to use officehelper.bootstrap() because unlike pyuno it is not installed
in the standard python directories but in libreoffice/program.
You might think that bootstrap() is not appropriate functionality for a
UNO langauge binding, but then why does ::cppu::bootstrap() exist?
Change-Id: I5fd4b344a811c087d32fb6304e55105ab3cb137e
Reviewed-on: https://gerrit.libreoffice.org/12968
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'scripting')
-rw-r--r-- | scripting/Pyuno_mailmerge.mk | 1 | ||||
-rwxr-xr-x | scripting/source/pyprov/officehelper.py | 84 |
2 files changed, 0 insertions, 85 deletions
diff --git a/scripting/Pyuno_mailmerge.mk b/scripting/Pyuno_mailmerge.mk index fd1e56dbcee8..69845477b51f 100644 --- a/scripting/Pyuno_mailmerge.mk +++ b/scripting/Pyuno_mailmerge.mk @@ -14,7 +14,6 @@ $(eval $(call gb_Pyuno_set_componentfile,mailmerge,scripting/source/pyprov/mailm $(eval $(call gb_Pyuno_add_files,mailmerge,,\ mailmerge.py \ msgbox.py \ - officehelper.py \ )) # vim: set noet sw=4 ts=4: diff --git a/scripting/source/pyprov/officehelper.py b/scripting/source/pyprov/officehelper.py deleted file mode 100755 index 0b0bb68af5e5..000000000000 --- a/scripting/source/pyprov/officehelper.py +++ /dev/null @@ -1,84 +0,0 @@ -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This file incorporates work covered by the following license notice: -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed -# with this work for additional information regarding copyright -# ownership. The ASF licenses this file to you under the Apache -# License, Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.apache.org/licenses/LICENSE-2.0 . -# - -# -# Translated to python from "Bootstrap.java" by Kim Kulak -# - -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 script used on *ix, Mac; soffice.exe used on Win - if "UNO_PATH" in os.environ: - sOffice = os.environ["UNO_PATH"] - else: - sOffice = "" # lets hope for the best - sOffice = os.path.join(sOffice, "soffice") - if platform.startswith("win"): - sOffice += ".exe" - - # Generate a random pipe name. - random.seed() - sPipeName = "uno" + str(random.random())[2:] - - # Start the office process, don't check for exit status since an exception is caught anyway if the office terminates unexpectedly. - 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"]) - - # Wait until an office is started, but loop only nLoop times (can we do this better???) - 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) # Sleep 1/2 second. - - except BootstrapException: - raise - except Exception as e: # Any other exception - raise BootstrapException("Caught exception " + str(e), None) - - return xContext |