xref: /trunk/test/odf-validate/unohelp.py (revision 0e16a31d78a652c56c5c0fc79c752f48b9048df9)
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