From d096a83dc6620036ac5d5344e6818b4439c03fc4 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Tue, 8 Sep 2026 23:02:43 +1200 Subject: [PATCH] Document the 21 missing child-element pages Fills in every page the sidebar previously linked to but that was never written, so the two XML formats are now documented down to their children. Element side (children of ): line, polygon, rect, ellipse/circle, arc, text, dynamic_text, terminal Project side (children of ): properties + property, defaultconductor, elements, conductors, inputs, images, shapes, elementautonumfoliosequentials + its unit/ten/hundred children, and collection's category Everything is taken from the writer in the source rather than guessed -- PartLine/PartPolygon/PartRectangle/PartEllipse/PartArc/PartText/ PartDynamicTextField::toXml(), TerminalData::toXml(), Diagram::toXml() and folioSequentialsToXml() -- and cross-checked against a corpus of 185 real .qet files plus the .elmt collection. Examples are copied from real files. Notable details that were not documented anywhere: - a square ellipse is written as , not - the rectangle tag is , not - polygon's closed="false" is written only when the shape is open, so an absent attribute means closed - angles are stored internally in 1/16 degree but written in degrees - alignment attributes are written only when non-default - occurs both under and under , and both under and inside each Also rewrites elements_child_description as an index of its children -- it was a stub with duplicated entries, blank examples and empty attribute lists -- and restores the sidebar nesting now that the targets exist. Ref: qelectrotech/qelectrotech-source-mirror#816 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019p83QJDMeFVz2k9ePUpTyb --- Home.md | 8 +- _Sidebar.md | 21 +++++ data_files/elements_child_description.md | 77 +++++-------------- data_files/elements_description_child_arc.md | 29 +++++++ ...elements_description_child_dynamic_text.md | 31 ++++++++ .../elements_description_child_ellipse.md | 29 +++++++ data_files/elements_description_child_line.md | 26 +++++++ .../elements_description_child_polygon.md | 26 +++++++ .../elements_description_child_rectangle.md | 27 +++++++ .../elements_description_child_terminal.md | 27 +++++++ data_files/elements_description_child_text.md | 25 ++++++ data_files/project_child_collection.md | 2 +- data_files/project_child_diagram.md | 13 ++-- .../project_collection_child_category.md | 21 +++++ .../project_diagram_child_conductors.md | 23 ++++++ .../project_diagram_child_defaultconductor.md | 26 +++++++ ...am_child_elementautonumfoliosequentials.md | 21 +++++ data_files/project_diagram_child_elements.md | 30 ++++++++ data_files/project_diagram_child_images.md | 18 +++++ data_files/project_diagram_child_inputs.md | 22 ++++++ .../project_diagram_child_properties.md | 20 +++++ data_files/project_diagram_child_shapes.md | 22 ++++++ ...equentials_child_elementhundredfolioseq.md | 15 ++++ ...liosequentials_child_elementtenfolioseq.md | 15 ++++ ...iosequentials_child_elementunitfolioseq.md | 15 ++++ ...oject_diagram_properties_child_property.md | 16 ++++ 26 files changed, 537 insertions(+), 68 deletions(-) create mode 100644 data_files/elements_description_child_arc.md create mode 100644 data_files/elements_description_child_dynamic_text.md create mode 100644 data_files/elements_description_child_ellipse.md create mode 100644 data_files/elements_description_child_line.md create mode 100644 data_files/elements_description_child_polygon.md create mode 100644 data_files/elements_description_child_rectangle.md create mode 100644 data_files/elements_description_child_terminal.md create mode 100644 data_files/elements_description_child_text.md create mode 100644 data_files/project_collection_child_category.md create mode 100644 data_files/project_diagram_child_conductors.md create mode 100644 data_files/project_diagram_child_defaultconductor.md create mode 100644 data_files/project_diagram_child_elementautonumfoliosequentials.md create mode 100644 data_files/project_diagram_child_elements.md create mode 100644 data_files/project_diagram_child_images.md create mode 100644 data_files/project_diagram_child_inputs.md create mode 100644 data_files/project_diagram_child_properties.md create mode 100644 data_files/project_diagram_child_shapes.md create mode 100644 data_files/project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq.md create mode 100644 data_files/project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq.md create mode 100644 data_files/project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq.md create mode 100644 data_files/project_diagram_properties_child_property.md diff --git a/Home.md b/Home.md index 5116e19..19bdf73 100644 --- a/Home.md +++ b/Home.md @@ -16,7 +16,7 @@ reads and writes, plus pointers for developers building QET itself. ## Status -This wiki covers the core structure of both XML formats but not every child -element yet -- the sidebar only links to pages that actually exist. See -[contributing to this wiki](contributor_to_wiki_guidelines) if you'd like to -fill in a gap. +Both XML formats are now documented down to their child elements, verified +against the QET source and a corpus of real `.qet` and `.elmt` files. See +[contributing to this wiki](contributor_to_wiki_guidelines) if you spot a gap +or something that has drifted. diff --git a/_Sidebar.md b/_Sidebar.md index f223dda..78946fe 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -7,6 +7,14 @@ * [name](elements_child_name) * [informations](elements_child_informations) * [description](elements_child_description) + * [line](elements_description_child_line) + * [polygon](elements_description_child_polygon) + * [rect](elements_description_child_rectangle) + * [ellipse / circle](elements_description_child_ellipse) + * [arc](elements_description_child_arc) + * [text](elements_description_child_text) + * [dynamic_text](elements_description_child_dynamic_text) + * [terminal](elements_description_child_terminal) * [kindInformations](elements_child_kindInformations) * [elementInformations](elements_child_elementInformations) @@ -24,7 +32,20 @@ * [folio_autonums](project_newdiagrams_child_folio_autonums) * [element_autonums](project_newdiagrams_child_element_autonums) * [diagram](project_child_diagram) + * [properties](project_diagram_child_properties) + * [property](project_diagram_properties_child_property) + * [defaultconductor](project_diagram_child_defaultconductor) + * [elements](project_diagram_child_elements) + * [conductors](project_diagram_child_conductors) + * [inputs](project_diagram_child_inputs) + * [images](project_diagram_child_images) + * [shapes](project_diagram_child_shapes) + * [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials) + * [elementunitfolioseq](project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq) + * [elementtenfolioseq](project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq) + * [elementhundredfolioseq](project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq) * [collection](project_child_collection) + * [category](project_collection_child_category) **[Developer tools](tools)** diff --git a/data_files/elements_child_description.md b/data_files/elements_child_description.md index a4b335c..78b3326 100644 --- a/data_files/elements_child_description.md +++ b/data_files/elements_child_description.md @@ -1,4 +1,7 @@ -### description +# description +Holds the drawing itself: every graphic primitive that makes up the element, +plus its connection points. + Example: `` @@ -6,67 +9,25 @@ parent : [definition](elements_XML) attribute : none -#### polygon -Example: `` +## child elements -parent : [description](elements_child_description) +Shapes -- all of these also carry the shared `style` and `antialias` +attributes described on each page: -attribute : -#### line -Example: `` + * [line](elements_description_child_line) + * [polygon](elements_description_child_polygon) + * [rect](elements_description_child_rectangle) -- the tag is `rect` + * [ellipse / circle](elements_description_child_ellipse) -- a square ellipse is written as `` + * [arc](elements_description_child_arc) -parent : [description](elements_child_description) +Text: -attribute : -#### rectangle -Example: `` + * [text](elements_description_child_text) -- fixed text + * [dynamic_text](elements_description_child_dynamic_text) -- text taken from the element or project -parent : [description](elements_child_description) +Connections: -attribute : -#### ellipse -Example: `` + * [terminal](elements_description_child_terminal) -- where conductors attach -parent : [description](elements_child_description) - -attribute : -#### polygon -Example: `` - -parent : [description](elements_child_description) - -attribute : -#### text -Example: `` - -parent : [description](elements_child_description) - -attribute : -#### arc -Example: `` - -parent : [description](elements_child_description) - -attribute : -#### dynamic_text -Example: `` - -parent : [description](elements_child_description) - -attribute : - -##### text -Example: `/` - -parent : dynamic_text - -attribute : none - -#### terminal -waar de verbinding gemaakt wordt. - -Example: `` - -parent : [description](elements_child_description) - -attribute : +Order matters: parts are drawn in document order, so a later sibling paints over +an earlier one. diff --git a/data_files/elements_description_child_arc.md b/data_files/elements_description_child_arc.md new file mode 100644 index 0000000..b8b0596 --- /dev/null +++ b/data_files/elements_description_child_arc.md @@ -0,0 +1,29 @@ +# arc +An arc of an ellipse. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * x, y -- top-left corner of the bounding box of the full ellipse + * width, height -- size of that full ellipse + * start -- start angle, **in degrees** + * angle -- span angle, in degrees; negative spans clockwise + +Internally QET stores both angles in sixteenths of a degree (the Qt convention) +and divides by 16 on the way out, explicitly to stay compatible with older files. + +## common attributes +All graphic parts also carry: + * `style` -- CSS-like string, always written in the order + `line-style:;line-weight:;filling:;color:`. + `hight` and `eleve` are the historical spellings for the two heaviest widths, and + `brun` is French for brown -- these are not typos. + * `antialias` -- `true` / `false` + +Written by `CustomElementGraphicPart::stylesToXml()`, +`sources/editor/graphicspart/customelementgraphicpart.cpp`. + +Written by `PartArc::toXml()`, `sources/editor/graphicspart/partarc.cpp`. diff --git a/data_files/elements_description_child_dynamic_text.md b/data_files/elements_description_child_dynamic_text.md new file mode 100644 index 0000000..c90f7b1 --- /dev/null +++ b/data_files/elements_description_child_dynamic_text.md @@ -0,0 +1,31 @@ +# dynamic_text +Text whose value can be taken from the element or the project rather than typed +in, and which the user can reposition on the folio. Compare the static +[text](elements_description_child_text). + +Example: +`label` + +parent : [description](elements_child_description) + +attribute : + * x, y, z -- position and stacking order + * rotation -- degrees + * font -- serialised `QFont` + * uuid -- identifies this field, e.g. for text groups + * frame -- `true` / `false`, draw a box around the text + * text_width -- wrapping width; `-1` means no wrapping + * keep_visual_rotation -- `true` / `false` + * rotation_point_center -- `true` / `false` + * text_from -- where the value comes from: `UserText`, `ElementInfo` or `CompositeText` + * Halignment -- `AlignLeft`, `AlignRight` or `AlignHCenter` + * Valignment -- `AlignTop`, `AlignBottom` or `AlignVCenter` + +## child elements + * `` -- the literal text, as a text node (used when `text_from="UserText"`) + * `` -- which element information to display (when `text_from="ElementInfo"`) + * `` -- the template string (when `text_from="CompositeText"`) + * `` -- `#rrggbb`; written **only** when the colour is not black + +Written by `PartDynamicTextField::toXml()`, +`sources/editor/graphicspart/partdynamictextfield.cpp`. diff --git a/data_files/elements_description_child_ellipse.md b/data_files/elements_description_child_ellipse.md new file mode 100644 index 0000000..ba25269 --- /dev/null +++ b/data_files/elements_description_child_ellipse.md @@ -0,0 +1,29 @@ +# ellipse / circle +An ellipse. **Two different tags come out of one editor shape:** when width and +height are equal QET writes a `` with a single `diameter`; otherwise it +writes an `` with `width` and `height`. A reader must handle both. + +Example: +`` + +`` + +parent : [description](elements_child_description) + +attribute : + * x, y -- top-left corner of the bounding box (not the centre) + * width, height -- `` only + * diameter -- `` only + +## common attributes +All graphic parts also carry: + * `style` -- CSS-like string, always written in the order + `line-style:;line-weight:;filling:;color:`. + `hight` and `eleve` are the historical spellings for the two heaviest widths, and + `brun` is French for brown -- these are not typos. + * `antialias` -- `true` / `false` + +Written by `CustomElementGraphicPart::stylesToXml()`, +`sources/editor/graphicspart/customelementgraphicpart.cpp`. + +Written by `PartEllipse::toXml()`, `sources/editor/graphicspart/partellipse.cpp`. diff --git a/data_files/elements_description_child_line.md b/data_files/elements_description_child_line.md new file mode 100644 index 0000000..f70aa6c --- /dev/null +++ b/data_files/elements_description_child_line.md @@ -0,0 +1,26 @@ +# line +A straight segment, optionally with a decorated end. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * x1, y1 -- first point, rounded to 2 decimals + * x2, y2 -- second point + * end1, end2 -- end decoration: `none`, `simple`, `triangle`, `circle`, `diamond` + * length1, length2 -- size of that decoration + +## common attributes +All graphic parts also carry: + * `style` -- CSS-like string, always written in the order + `line-style:;line-weight:;filling:;color:`. + `hight` and `eleve` are the historical spellings for the two heaviest widths, and + `brun` is French for brown -- these are not typos. + * `antialias` -- `true` / `false` + +Written by `CustomElementGraphicPart::stylesToXml()`, +`sources/editor/graphicspart/customelementgraphicpart.cpp`. + +Written by `PartLine::toXml()`, `sources/editor/graphicspart/partline.cpp`. diff --git a/data_files/elements_description_child_polygon.md b/data_files/elements_description_child_polygon.md new file mode 100644 index 0000000..1bb6f97 --- /dev/null +++ b/data_files/elements_description_child_polygon.md @@ -0,0 +1,26 @@ +# polygon +An open polyline or a closed polygon. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * x1, y1, x2, y2, ... xN, yN -- the vertices, numbered from 1, one pair per point. + There is no count attribute: the number of points is however many `xN`/`yN` pairs are present. + * closed -- written **only** when the polygon is open, as `closed="false"`. + An absent `closed` attribute therefore means the shape is closed. + +## common attributes +All graphic parts also carry: + * `style` -- CSS-like string, always written in the order + `line-style:;line-weight:;filling:;color:`. + `hight` and `eleve` are the historical spellings for the two heaviest widths, and + `brun` is French for brown -- these are not typos. + * `antialias` -- `true` / `false` + +Written by `CustomElementGraphicPart::stylesToXml()`, +`sources/editor/graphicspart/customelementgraphicpart.cpp`. + +Written by `PartPolygon::toXml()`, `sources/editor/graphicspart/partpolygon.cpp`. diff --git a/data_files/elements_description_child_rectangle.md b/data_files/elements_description_child_rectangle.md new file mode 100644 index 0000000..fa38541 --- /dev/null +++ b/data_files/elements_description_child_rectangle.md @@ -0,0 +1,27 @@ +# rect +A rectangle, optionally with rounded corners. + +Note the tag is `rect`, not `rectangle`. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * x, y -- top-left corner + * width, height + * rx, ry -- corner radii; `0` means square corners + +## common attributes +All graphic parts also carry: + * `style` -- CSS-like string, always written in the order + `line-style:;line-weight:;filling:;color:`. + `hight` and `eleve` are the historical spellings for the two heaviest widths, and + `brun` is French for brown -- these are not typos. + * `antialias` -- `true` / `false` + +Written by `CustomElementGraphicPart::stylesToXml()`, +`sources/editor/graphicspart/customelementgraphicpart.cpp`. + +Written by `PartRectangle::toXml()`, `sources/editor/graphicspart/partrectangle.cpp`. diff --git a/data_files/elements_description_child_terminal.md b/data_files/elements_description_child_terminal.md new file mode 100644 index 0000000..fcc8f31 --- /dev/null +++ b/data_files/elements_description_child_terminal.md @@ -0,0 +1,27 @@ +# terminal +A connection point. Conductors can only attach to an element at a terminal. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * x, y -- position + * uuid -- stable identity of this terminal, used by conductors and links + * name -- the terminal's label, e.g. `1`, `A2` + * orientation -- the direction a conductor leaves in: `n`, `e`, `s`, `w` + * type -- `Generic`, `Inner`, `Outer`, or for switch contacts + `No` (normally open), `Nc` (normally closed), `Common` + +The following are written **only** when the terminal name is shown +(`show_name="true"`): + * label_x, label_y, label_rotation, label_font + * label_halign, label_valign -- Qt alignment flags, as integers + * label_frame -- only when true + * label_color -- only when not black + +And only when the terminal overrides its master's label: + * use_master_label, master_label_index + +Written by `TerminalData::toXml()`, `sources/properties/terminaldata.cpp`. diff --git a/data_files/elements_description_child_text.md b/data_files/elements_description_child_text.md new file mode 100644 index 0000000..51158c6 --- /dev/null +++ b/data_files/elements_description_child_text.md @@ -0,0 +1,25 @@ +# text +A fixed piece of text drawn in the element. For text that takes its value from +the project, see [dynamic_text](elements_description_child_dynamic_text) instead. + +Example: +`` + +parent : [description](elements_child_description) + +attribute : + * text -- the string itself, held in an attribute rather than a text node + * x, y -- position + * rotation -- degrees, rounded to 1 decimal + * font -- a serialised `QFont` (family, size, then Qt's numeric fields) + * color -- `#rrggbb` + * Halignment -- `AlignRight` or `AlignHCenter` + * Valignment -- `AlignBottom` or `AlignVCenter` + +The two alignment attributes are written **only** when they differ from the +historical default, so that existing `.elmt` files round-trip unchanged. Absent +means left / top. + +Unlike the shapes, `` carries no `style` or `antialias` attribute. + +Written by `PartText::toXml()`, `sources/editor/graphicspart/parttext.cpp`. diff --git a/data_files/project_child_collection.md b/data_files/project_child_collection.md index c8450e0..67f2f60 100644 --- a/data_files/project_child_collection.md +++ b/data_files/project_child_collection.md @@ -7,5 +7,5 @@ parent : [project](project_XML) attribute : none ## child elements - * category _(not yet documented)_ + * [category](project_collection_child_category) diff --git a/data_files/project_child_diagram.md b/data_files/project_child_diagram.md index 3bc9859..d037ac6 100644 --- a/data_files/project_child_diagram.md +++ b/data_files/project_child_diagram.md @@ -27,8 +27,11 @@ attribute : * indexrev * rowsize ## child elements - * defaultconductor _(not yet documented)_ - * elements _(not yet documented)_ - * conductors _(not yet documented)_ - * inputs _(not yet documented)_ - + * [defaultconductor](project_diagram_child_defaultconductor) + * [elements](project_diagram_child_elements) + * [conductors](project_diagram_child_conductors) + * [inputs](project_diagram_child_inputs) + * [properties](project_diagram_child_properties) + * [images](project_diagram_child_images) + * [shapes](project_diagram_child_shapes) + * [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials) diff --git a/data_files/project_collection_child_category.md b/data_files/project_collection_child_category.md new file mode 100644 index 0000000..5ed2701 --- /dev/null +++ b/data_files/project_collection_child_category.md @@ -0,0 +1,21 @@ +# category +A folder in the project's embedded element collection. Categories nest, so a +category may contain further categories as well as elements. + +Example: +`` + +parent : [collection](project_child_collection), or another `category` + +attribute : + * name -- the folder's name, as it appears in the collection tree + +## child elements + * `` -- the translated display names of this category + * `` -- nested sub-categories + * `` -- the embedded elements themselves, each holding a full + `.elmt` [definition](elements_XML) + +This is the copy of the element collection stored **inside** the project file, +which is what lets a `.qet` open on a machine that does not have those elements +installed. diff --git a/data_files/project_diagram_child_conductors.md b/data_files/project_diagram_child_conductors.md new file mode 100644 index 0000000..ecc323b --- /dev/null +++ b/data_files/project_diagram_child_conductors.md @@ -0,0 +1,23 @@ +# conductors +Container for every conductor (wire) on the folio. Written only when the folio +has at least one conductor. + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * ``. Besides the full appearance vocabulary shared with + [defaultconductor](project_diagram_child_defaultconductor), each one records + what it connects: + * element1, element2 -- uuids of the two elements + * terminal1, terminal2 -- the terminals joined + * terminalname1, terminalname2 -- their names + * element1_name, element2_name, element1_label, element2_label -- cached labels + * x, y, userx, usery, rotation -- geometry of the conductor text + * freezeLabel -- `true` / `false` + +Conductors are written in a stable sorted order derived from both endpoints, so +that saving twice produces byte-identical files. + +Written by `Conductor::toXml()`, called from `Diagram::toXml()`. diff --git a/data_files/project_diagram_child_defaultconductor.md b/data_files/project_diagram_child_defaultconductor.md new file mode 100644 index 0000000..0d6e8e3 --- /dev/null +++ b/data_files/project_diagram_child_defaultconductor.md @@ -0,0 +1,26 @@ +# defaultconductor +The conductor properties a newly drawn conductor on this folio starts from. +Same attribute vocabulary as an individual +[conductor](project_diagram_child_conductors). + +Example: +`` + +parent : [diagram](project_child_diagram) + +attribute : + * type -- `multi`, `single` or `bus` + * num, formula -- conductor text and the formula that generates it + * displaytext, onetextperfolio -- whether and how often the text is drawn + * numsize, condsize -- text size and conductor thickness + * color, color2, bicolor, dash-size -- line appearance + * text_color, horizrotatetext, vertirotatetext -- text appearance + * horizontal-alignment, vertical-alignment + * function, tension_protocol, conductor_color, conductor_section -- descriptive fields + * cable, bus -- identifiers + * ground, phase, neutral -- `true` / `false`, single-conductor markers + +attribute : none of the above are required; QET writes the full set. + +Written by `ConductorProperties::toXml()`, called from `Diagram::toXml()`, +`sources/diagram.cpp`. diff --git a/data_files/project_diagram_child_elementautonumfoliosequentials.md b/data_files/project_diagram_child_elementautonumfoliosequentials.md new file mode 100644 index 0000000..25c57e0 --- /dev/null +++ b/data_files/project_diagram_child_elementautonumfoliosequentials.md @@ -0,0 +1,21 @@ +# elementautonumfoliosequentials +Per-folio counters for element auto-numbering: the highest sequential value +reached on this folio, so numbering survives a save/reload. + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * [elementunitfolioseq](project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq) + * [elementtenfolioseq](project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq) + * [elementhundredfolioseq](project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq) + +Each of the three is written only if it holds anything, and the block as a whole +is omitted when all three are empty. + +There is a parallel `` block with the same +shape, holding ``, `` and +``, for conductor numbering. + +Written by `Diagram::toXml()`, `sources/diagram.cpp`. diff --git a/data_files/project_diagram_child_elements.md b/data_files/project_diagram_child_elements.md new file mode 100644 index 0000000..5b733dc --- /dev/null +++ b/data_files/project_diagram_child_elements.md @@ -0,0 +1,30 @@ +# elements +Container for every element placed on the folio. Written only when the folio +has at least one element. + +Example: +`` + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * ``, with attributes: + * x, y, z -- position and stacking order + * type -- path of the element in the collection + * name -- display name + * uuid -- unique id of this instance + * orientation -- `0`..`3`, quarter turns + * prefix -- label prefix, e.g. `K` + * freezeLabel -- `true` / `false` + * each `` in turn contains ``, ``, + ``, ``, ``, and where the + element is embedded in the project, its full ``. Elements that + are cross-referenced also carry ``, and auto-numbered ones + ``. + +Elements are written in a stable sorted order so that saving twice produces +byte-identical files. + +Written by `Diagram::toXml()`, `sources/diagram.cpp`. diff --git a/data_files/project_diagram_child_images.md b/data_files/project_diagram_child_images.md new file mode 100644 index 0000000..3d0013d --- /dev/null +++ b/data_files/project_diagram_child_images.md @@ -0,0 +1,18 @@ +# images +Container for bitmap images dropped onto the folio. + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * ``, with attributes: + * x, y, z -- position and stacking order + * size -- scale factor + * rotation -- degrees + * is_movable -- `true` / `false` + +The image data itself is stored base64-encoded as the text node of the +`` element, so a project file stays self-contained. + +Written only when the folio has at least one image, by `Diagram::toXml()`. diff --git a/data_files/project_diagram_child_inputs.md b/data_files/project_diagram_child_inputs.md new file mode 100644 index 0000000..4901541 --- /dev/null +++ b/data_files/project_diagram_child_inputs.md @@ -0,0 +1,22 @@ +# inputs +Container for free-standing text on the folio -- text not attached to any +element. In the code these are *independent texts*. + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * ``, with attributes: + * x, y -- position + * text -- the string + * font -- serialised `QFont` + * size -- legacy text size, kept for older files + * rotation, userrotation, rotate -- rotation and whether the user set it + * userx, usery -- user-moved offset + * tagg -- free-form tag + +Written only when the folio has at least one such text, by `Diagram::toXml()`. + +Note: `` also appears **inside** each ``, where it holds that +element's own texts. Same tag, different parent. diff --git a/data_files/project_diagram_child_properties.md b/data_files/project_diagram_child_properties.md new file mode 100644 index 0000000..328da4a --- /dev/null +++ b/data_files/project_diagram_child_properties.md @@ -0,0 +1,20 @@ +# properties +Custom title-block fields for this folio: the user-defined variables a title +block template can display, over and above the fixed ones (author, title, date, +...) that live as attributes on [diagram](project_child_diagram) itself. + +Example: +`26/06/2015` + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * [property](project_diagram_properties_child_property) + +Written only when at least one custom field exists, by +`TitleBlockProperties::toXml()`, `sources/titleblockproperties.cpp`. + +Note the project itself has a separate top-level +[properties](project_child_properties) block. Same tag name, different parent. diff --git a/data_files/project_diagram_child_shapes.md b/data_files/project_diagram_child_shapes.md new file mode 100644 index 0000000..312d77f --- /dev/null +++ b/data_files/project_diagram_child_shapes.md @@ -0,0 +1,22 @@ +# shapes +Container for free drawing on the folio -- lines, rectangles, ellipses and +polygons drawn directly on the diagram rather than belonging to an element. + +parent : [diagram](project_child_diagram) + +attribute : none + +## child elements + * ``, with attributes: + * type -- `Line`, `Rectangle`, `Ellipse` or `Polygon` + * x1, y1, x2, y2 -- defining points + * rx, ry -- corner radii, for rectangles + * closed -- for polygons + * z -- stacking order + * is_movable -- `true` / `false` + +These are diagram shapes and are **not** the same as the element drawing +primitives documented under [description](elements_child_description), even +though they draw similar figures. + +Written only when the folio has at least one shape, by `Diagram::toXml()`. diff --git a/data_files/project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq.md b/data_files/project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq.md new file mode 100644 index 0000000..3c2795a --- /dev/null +++ b/data_files/project_diagram_elementautonumfoliosequentials_child_elementhundredfolioseq.md @@ -0,0 +1,15 @@ +# elementhundredfolioseq +The hundreds counter for element auto-numbering on this folio. + +parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials) + +attribute : none + +## child elements + * ``, one per auto-numbering scheme, with attributes: + * title -- the name of the numbering scheme these values belong to + * seqhf_1, seqhf_2, ... seqhf_N -- the stored values, numbered from 1. + There is no count attribute; the number of values is however many + `seqhf_N` attributes are present. + +Written by `Diagram::folioSequentialsToXml()`, `sources/diagram.cpp`. diff --git a/data_files/project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq.md b/data_files/project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq.md new file mode 100644 index 0000000..08f784b --- /dev/null +++ b/data_files/project_diagram_elementautonumfoliosequentials_child_elementtenfolioseq.md @@ -0,0 +1,15 @@ +# elementtenfolioseq +The tens counter for element auto-numbering on this folio. + +parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials) + +attribute : none + +## child elements + * ``, one per auto-numbering scheme, with attributes: + * title -- the name of the numbering scheme these values belong to + * seqtf_1, seqtf_2, ... seqtf_N -- the stored values, numbered from 1. + There is no count attribute; the number of values is however many + `seqtf_N` attributes are present. + +Written by `Diagram::folioSequentialsToXml()`, `sources/diagram.cpp`. diff --git a/data_files/project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq.md b/data_files/project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq.md new file mode 100644 index 0000000..5177e00 --- /dev/null +++ b/data_files/project_diagram_elementautonumfoliosequentials_child_elementunitfolioseq.md @@ -0,0 +1,15 @@ +# elementunitfolioseq +The units counter for element auto-numbering on this folio. + +parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials) + +attribute : none + +## child elements + * ``, one per auto-numbering scheme, with attributes: + * title -- the name of the numbering scheme these values belong to + * sequf_1, sequf_2, ... sequf_N -- the stored values, numbered from 1. + There is no count attribute; the number of values is however many + `sequf_N` attributes are present. + +Written by `Diagram::folioSequentialsToXml()`, `sources/diagram.cpp`. diff --git a/data_files/project_diagram_properties_child_property.md b/data_files/project_diagram_properties_child_property.md new file mode 100644 index 0000000..a9c750f --- /dev/null +++ b/data_files/project_diagram_properties_child_property.md @@ -0,0 +1,16 @@ +# property +One custom title-block variable. + +Example: +`26/06/2015` + +parent : [properties](project_diagram_child_properties) + +attribute : + * name -- the variable's key, as referenced from a title block template + * show -- `1` / `0`, whether the field is displayed + +The value is the element's **text node**, not an attribute. It is written +trimmed, and may be empty. + +Written by `DiagramContext::toXml()`, `sources/diagramcontext.cpp`.