xref: /trunk/test/odf-validate/fixtures/note-ref/make.py (revision 0e16a31d78a652c56c5c0fc79c752f48b9048df9)
1*0e16a31dSJim Jagielski# usage: runpy.sh fixtures/note-ref/make.py <port> <out.odt> <expected.json>
2*0e16a31dSJim Jagielski# Saves with the office's configured ODF version, so run it against the strict profile (drive.sh strict).
3*0e16a31dSJim Jagielskiimport sys, json, uno
4*0e16a31dSJim Jagielskifrom unohelp import connect, desktop, pv
5*0e16a31dSJim Jagielski
6*0e16a31dSJim Jagielskiport, out, exp = int(sys.argv[1]), sys.argv[2], sys.argv[3]
7*0e16a31dSJim Jagielskid = desktop(connect(port))
8*0e16a31dSJim Jagielskidoc = d.loadComponentFromURL("private:factory/swriter", "_blank", 0, (pv("Hidden", True),))
9*0e16a31dSJim Jagielskitext = doc.Text
10*0e16a31dSJim Jagielskicur = text.createTextCursor()
11*0e16a31dSJim Jagielskitext.insertString(cur, "body", False)
12*0e16a31dSJim Jagielskifn = doc.createInstance("com.sun.star.text.Footnote")
13*0e16a31dSJim Jagielskitext.insertTextContent(cur, fn, False)
14*0e16a31dSJim Jagielskifn.String = "note text"
15*0e16a31dSJim Jagielskien = doc.createInstance("com.sun.star.text.Endnote")
16*0e16a31dSJim Jagielskitext.insertTextContent(cur, en, False)
17*0e16a31dSJim Jagielskien.String = "end text"
18*0e16a31dSJim Jagielskitext.insertString(cur, " ", False)
19*0e16a31dSJim Jagielski# (source: 3 footnote, 4 endnote), part: 0 page, 1 chapter, 2 text, 3 direction, 5/6/7 sequence-only
20*0e16a31dSJim Jagielskifor src, note in ((3, fn), (4, en)):
21*0e16a31dSJim Jagielski    for part in (0, 3, 2, 5, 6, 7):
22*0e16a31dSJim Jagielski        f = doc.createInstance("com.sun.star.text.TextField.GetReference")
23*0e16a31dSJim Jagielski        f.ReferenceFieldSource = src
24*0e16a31dSJim Jagielski        f.SourceName = ""
25*0e16a31dSJim Jagielski        f.SequenceNumber = note.ReferenceId
26*0e16a31dSJim Jagielski        f.ReferenceFieldPart = part
27*0e16a31dSJim Jagielski        text.insertTextContent(cur, f, False)
28*0e16a31dSJim Jagielski        text.insertString(cur, " ", False)
29*0e16a31dSJim Jagielskidoc.TextFields.refresh()
30*0e16a31dSJim Jagielskie = doc.TextFields.createEnumeration()
31*0e16a31dSJim Jagielskirows = []
32*0e16a31dSJim Jagielskiwhile e.hasMoreElements():
33*0e16a31dSJim Jagielski    f = e.nextElement()
34*0e16a31dSJim Jagielski    if f.supportsService("com.sun.star.text.TextField.GetReference"):
35*0e16a31dSJim Jagielski        rows.append([f.ReferenceFieldSource, f.ReferenceFieldPart, f.CurrentPresentation])
36*0e16a31dSJim Jagielskijson.dump(rows, open(exp, "w"))
37*0e16a31dSJim Jagielskidoc.storeToURL(uno.systemPathToFileUrl(out), (pv("FilterName", "writer8"),))
38*0e16a31dSJim Jagielskidoc.close(True)
39