1# usage: runpy.sh fixtures/connector-viewbox/make.py <port> <outdir> (office saving ODF 1.2 Extended) 2# Connectors of every kind, connected and free, axis-aligned and diagonal, in Draw and Impress. 3import sys, os, uno 4from unohelp import connect, desktop, pv 5from com.sun.star.awt import Size, Point 6from com.sun.star.drawing.ConnectorType import STANDARD, CURVE, LINE, LINES 7 8port, outdir = int(sys.argv[1]), sys.argv[2] 9d = desktop(connect(port)) 10 11def build(doc, page): 12 def rect(x, y, w, h): 13 s = doc.createInstance("com.sun.star.drawing.RectangleShape") 14 page.add(s); s.Position = Point(x, y); s.Size = Size(w, h) 15 return s 16 def conn(kind, a, b, name): 17 c = doc.createInstance("com.sun.star.drawing.ConnectorShape") 18 page.add(c); c.EdgeKind = kind 19 c.StartPosition = Point(*a); c.EndPosition = Point(*b) 20 c.Name = name 21 return c 22 r1 = rect(1000, 12000, 3000, 2000); r2 = rect(12000, 16000, 3000, 2000) 23 r3 = rect(1000, 20000, 3000, 2000); r4 = rect(9000, 24000, 3000, 2000) 24 conn(STANDARD, (2000, 2000), (8000, 6000), "std_free") 25 conn(CURVE, (10000, 2000), (16000, 6000), "curve_free") 26 conn(LINE, (2000, 8000), (8000, 8000), "line_h") 27 conn(LINE, (10000, 8000), (10000, 11000), "line_v") 28 conn(LINE, (18000, 9000), (14000, 5000), "line_rev") 29 conn(STANDARD, (2000, 28000), (8000, 28000), "std_h") 30 conn(STANDARD, (16000, 28000), (16000, 32000), "std_v") 31 c = conn(STANDARD, (0, 0), (0, 0), "std_conn"); c.StartShape = r1; c.EndShape = r2 32 c = conn(CURVE, (0, 0), (0, 0), "curve_conn"); c.StartShape = r3; c.EndShape = r4 33 c = conn(LINES, (2000, 34000), (9000, 38000), "lines_free") 34 35def save(doc, name, flt): 36 doc.storeToURL(uno.systemPathToFileUrl(os.path.join(outdir, name)), (pv("FilterName", flt),)) 37 doc.close(True) 38 39for kind, name, flt in (("sdraw", "conn.odg", "draw8"), ("simpress", "conn.odp", "impress8")): 40 doc = d.loadComponentFromURL("private:factory/" + kind, "_blank", 0, (pv("Hidden", True),)) 41 build(doc, doc.DrawPages.getByIndex(0)) 42 save(doc, name, flt) 43