1*0e16a31dSJim Jagielski#************************************************************** 2*0e16a31dSJim Jagielski# 3*0e16a31dSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*0e16a31dSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*0e16a31dSJim Jagielski# distributed with this work for additional information 6*0e16a31dSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*0e16a31dSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*0e16a31dSJim Jagielski# "License"); you may not use this file except in compliance 9*0e16a31dSJim Jagielski# with the License. You may obtain a copy of the License at 10*0e16a31dSJim Jagielski# 11*0e16a31dSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*0e16a31dSJim Jagielski# 13*0e16a31dSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*0e16a31dSJim Jagielski# software distributed under the License is distributed on an 15*0e16a31dSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*0e16a31dSJim Jagielski# KIND, either express or implied. See the License for the 17*0e16a31dSJim Jagielski# specific language governing permissions and limitations 18*0e16a31dSJim Jagielski# under the License. 19*0e16a31dSJim Jagielski# 20*0e16a31dSJim Jagielski#************************************************************** 21*0e16a31dSJim Jagielski 22*0e16a31dSJim Jagielskiimport time, uno 23*0e16a31dSJim Jagielskifrom com.sun.star.beans import PropertyValue 24*0e16a31dSJim Jagielski 25*0e16a31dSJim JagielskiFILTERS = {"odt": "writer8", "ods": "calc8", "odp": "impress8", "odg": "draw8"} 26*0e16a31dSJim Jagielski 27*0e16a31dSJim Jagielski 28*0e16a31dSJim Jagielskidef pv(n, v): 29*0e16a31dSJim Jagielski p = PropertyValue(); p.Name = n; p.Value = v; return p 30*0e16a31dSJim Jagielski 31*0e16a31dSJim Jagielski 32*0e16a31dSJim Jagielskidef connect(port, tries=60): 33*0e16a31dSJim Jagielski local = uno.getComponentContext() 34*0e16a31dSJim Jagielski res = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local) 35*0e16a31dSJim Jagielski for _ in range(tries): 36*0e16a31dSJim Jagielski try: 37*0e16a31dSJim Jagielski return res.resolve("uno:socket,host=localhost,port=%d;urp;StarOffice.ComponentContext" % port) 38*0e16a31dSJim Jagielski except Exception: 39*0e16a31dSJim Jagielski time.sleep(1) 40*0e16a31dSJim Jagielski raise SystemExit("no connection on port %d" % port) 41*0e16a31dSJim Jagielski 42*0e16a31dSJim Jagielski 43*0e16a31dSJim Jagielskidef odf_version(ctx): 44*0e16a31dSJim Jagielski cp = ctx.ServiceManager.createInstanceWithContext("com.sun.star.configuration.ConfigurationProvider", ctx) 45*0e16a31dSJim Jagielski ca = cp.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", 46*0e16a31dSJim Jagielski (pv("nodepath", "/org.openoffice.Office.Common/Save/ODF"),)) 47*0e16a31dSJim Jagielski return ca.getByName("DefaultVersion") 48*0e16a31dSJim Jagielski 49*0e16a31dSJim Jagielski 50*0e16a31dSJim Jagielskidef desktop(ctx): 51*0e16a31dSJim Jagielski return ctx.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", ctx) 52*0e16a31dSJim Jagielski 53*0e16a31dSJim Jagielski 54*0e16a31dSJim Jagielskidef load(desk, path, readonly=True): 55*0e16a31dSJim Jagielski doc = desk.loadComponentFromURL(uno.systemPathToFileUrl(path), "_blank", 0, 56*0e16a31dSJim Jagielski (pv("Hidden", True), pv("MacroExecutionMode", 0), pv("ReadOnly", readonly), pv("UpdateDocMode", 0))) 57*0e16a31dSJim Jagielski if doc is None: 58*0e16a31dSJim Jagielski raise RuntimeError("load returned None") 59*0e16a31dSJim Jagielski return doc 60