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