mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-15 10:04:13 +02:00
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 <description>): line, polygon, rect, ellipse/circle, arc, text, dynamic_text, terminal Project side (children of <diagram>): 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 <circle diameter=...>, not <ellipse> - the rectangle tag is <rect>, not <rectangle> - polygon's closed="false" is written only when the shape is open, so an absent attribute means closed - <arc> angles are stored internally in 1/16 degree but written in degrees - <text> alignment attributes are written only when non-default - <properties> occurs both under <project> and under <diagram>, and <inputs> both under <diagram> and inside each <element> 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019p83QJDMeFVz2k9ePUpTyb
+4
-4
@@ -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.
|
||||
|
||||
+21
@@ -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)**
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
### description
|
||||
# description
|
||||
Holds the drawing itself: every graphic primitive that makes up the element,
|
||||
plus its connection points.
|
||||
|
||||
Example:
|
||||
`<description>`
|
||||
|
||||
@@ -6,67 +9,25 @@ parent : [definition](elements_XML)
|
||||
|
||||
attribute : none
|
||||
|
||||
#### polygon
|
||||
Example: `<polygon x1="-1" y2="4" x4="-1" x2="-1" style="line-style:normal;line-weight:normal;filling:black;color:black" y4="-4" y1="-4" antialias="true" x3="9" y3="0" closed="false"/>`
|
||||
## 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 x1="9" y2="0" end1="none" length2="1.5" x2="12" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" length1="1.5" y1="0" antialias="false"/>`
|
||||
* [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 `<circle>`
|
||||
* [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: `<dynamic_text text_from="UserText" Valignment="AlignTop" z="3" text_width="-1" font="Sans Serif,9,-1,5,50,0,0,0,0,0" x="-44" uuid="{8b32ab87-b8ec-4564-bdec-c3ea4036a492}" y="-11.5" Halignment="AlignLeft" frame="false" rotation="0">`
|
||||
|
||||
parent : [description](elements_child_description)
|
||||
|
||||
attribute :
|
||||
|
||||
##### text
|
||||
Example: `<text>/</text>`
|
||||
|
||||
parent : dynamic_text
|
||||
|
||||
attribute : none
|
||||
|
||||
#### terminal
|
||||
waar de verbinding gemaakt wordt.
|
||||
|
||||
Example: `<terminal name="" x="13" uuid="{6db93440-be5c-4e83-bae3-34a68cb24127}" y="0" orientation="e"/>`
|
||||
|
||||
parent : [description](elements_child_description)
|
||||
|
||||
attribute :
|
||||
Order matters: parts are drawn in document order, so a later sibling paints over
|
||||
an earlier one.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# arc
|
||||
An arc of an ellipse.
|
||||
|
||||
Example:
|
||||
`<arc x="-3" y="-3" width="6" height="6" start="270" angle="180" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="true" />`
|
||||
|
||||
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:<normal|dashed|dotted|dashdotted>;line-weight:<none|thin|normal|hight|eleve>;filling:<name>;color:<name>`.
|
||||
`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`.
|
||||
@@ -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:
|
||||
`<dynamic_text x="-12" y="-11.5" z="3" text_width="-1" Halignment="AlignRight" Valignment="AlignTop" frame="false" rotation="0" text_from="ElementInfo" uuid="{8ec41ce2-...}" font="Liberation Sans,9,..."><text /><info_name>label</info_name></dynamic_text>`
|
||||
|
||||
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
|
||||
* `<text>` -- the literal text, as a text node (used when `text_from="UserText"`)
|
||||
* `<info_name>` -- which element information to display (when `text_from="ElementInfo"`)
|
||||
* `<composite_text>` -- the template string (when `text_from="CompositeText"`)
|
||||
* `<color>` -- `#rrggbb`; written **only** when the colour is not black
|
||||
|
||||
Written by `PartDynamicTextField::toXml()`,
|
||||
`sources/editor/graphicspart/partdynamictextfield.cpp`.
|
||||
@@ -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 `<circle>` with a single `diameter`; otherwise it
|
||||
writes an `<ellipse>` with `width` and `height`. A reader must handle both.
|
||||
|
||||
Example:
|
||||
`<ellipse x="-2" y="-2" width="4" height="4" style="line-style:normal;line-weight:normal;filling:black;color:black" antialias="false" />`
|
||||
|
||||
`<circle diameter="20" y="0" x="-190" antialias="false" style="line-style:normal;line-weight:normal;filling:black;color:black" />`
|
||||
|
||||
parent : [description](elements_child_description)
|
||||
|
||||
attribute :
|
||||
* x, y -- top-left corner of the bounding box (not the centre)
|
||||
* width, height -- `<ellipse>` only
|
||||
* diameter -- `<circle>` only
|
||||
|
||||
## common attributes
|
||||
All graphic parts also carry:
|
||||
* `style` -- CSS-like string, always written in the order
|
||||
`line-style:<normal|dashed|dotted|dashdotted>;line-weight:<none|thin|normal|hight|eleve>;filling:<name>;color:<name>`.
|
||||
`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`.
|
||||
@@ -0,0 +1,26 @@
|
||||
# line
|
||||
A straight segment, optionally with a decorated end.
|
||||
|
||||
Example:
|
||||
`<line x1="9" y1="0" x2="12" y2="0" end1="none" end2="none" length1="1.5" length2="1.5" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" />`
|
||||
|
||||
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:<normal|dashed|dotted|dashdotted>;line-weight:<none|thin|normal|hight|eleve>;filling:<name>;color:<name>`.
|
||||
`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`.
|
||||
@@ -0,0 +1,26 @@
|
||||
# polygon
|
||||
An open polyline or a closed polygon.
|
||||
|
||||
Example:
|
||||
`<polygon x1="-1" y1="-4" x2="-1" y2="4" x3="9" y3="0" antialias="true" style="line-style:normal;line-weight:normal;filling:none;color:black" />`
|
||||
|
||||
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:<normal|dashed|dotted|dashdotted>;line-weight:<none|thin|normal|hight|eleve>;filling:<name>;color:<name>`.
|
||||
`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`.
|
||||
@@ -0,0 +1,27 @@
|
||||
# rect
|
||||
A rectangle, optionally with rounded corners.
|
||||
|
||||
Note the tag is `rect`, not `rectangle`.
|
||||
|
||||
Example:
|
||||
`<rect x="-15" y="-35" width="30" height="71" rx="0" ry="0" style="line-style:normal;line-weight:hight;filling:none;color:black" antialias="false" />`
|
||||
|
||||
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:<normal|dashed|dotted|dashdotted>;line-weight:<none|thin|normal|hight|eleve>;filling:<name>;color:<name>`.
|
||||
`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`.
|
||||
@@ -0,0 +1,27 @@
|
||||
# terminal
|
||||
A connection point. Conductors can only attach to an element at a terminal.
|
||||
|
||||
Example:
|
||||
`<terminal uuid="{d7fd0bec-9f05-4651-a50b-29d7ffabeb41}" name="1" x="13" y="0" orientation="e" type="Generic" />`
|
||||
|
||||
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`.
|
||||
@@ -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:
|
||||
`<text text="PEN" x="7" y="33" rotation="0" font="Liberation Sans,5,-1,5,50,0,0,0,0,0,Regular" color="#000000" />`
|
||||
|
||||
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, `<text>` carries no `style` or `antialias` attribute.
|
||||
|
||||
Written by `PartText::toXml()`, `sources/editor/graphicspart/parttext.cpp`.
|
||||
@@ -7,5 +7,5 @@ parent : [project](project_XML)
|
||||
attribute : none
|
||||
|
||||
## child elements
|
||||
* category _(not yet documented)_
|
||||
* [category](project_collection_child_category)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
`<category name="10_electric">`
|
||||
|
||||
parent : [collection](project_child_collection), or another `category`
|
||||
|
||||
attribute :
|
||||
* name -- the folder's name, as it appears in the collection tree
|
||||
|
||||
## child elements
|
||||
* `<names>` -- the translated display names of this category
|
||||
* `<category>` -- nested sub-categories
|
||||
* `<element>` -- 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.
|
||||
@@ -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
|
||||
* `<conductor>`. 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()`.
|
||||
@@ -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:
|
||||
`<defaultconductor bicolor="false" condsize="1" displaytext="true" num="" type="multi" ... />`
|
||||
|
||||
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`.
|
||||
@@ -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 `<conductorautonumfoliosequentials>` block with the same
|
||||
shape, holding `<conductorunitfolioseq>`, `<conductortenfolioseq>` and
|
||||
`<conductorhundredfolioseq>`, for conductor numbering.
|
||||
|
||||
Written by `Diagram::toXml()`, `sources/diagram.cpp`.
|
||||
@@ -0,0 +1,30 @@
|
||||
# elements
|
||||
Container for every element placed on the folio. Written only when the folio
|
||||
has at least one element.
|
||||
|
||||
Example:
|
||||
`<elements><element x="140" y="90" type="..." uuid="{...}" /></elements>`
|
||||
|
||||
parent : [diagram](project_child_diagram)
|
||||
|
||||
attribute : none
|
||||
|
||||
## child elements
|
||||
* `<element>`, 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 `<element>` in turn contains `<terminals>`, `<inputs>`,
|
||||
`<elementInformations>`, `<dynamic_texts>`, `<texts_groups>`, and where the
|
||||
element is embedded in the project, its full `<definition>`. Elements that
|
||||
are cross-referenced also carry `<links_uuids>`, and auto-numbered ones
|
||||
`<sequentialNumbers>`.
|
||||
|
||||
Elements are written in a stable sorted order so that saving twice produces
|
||||
byte-identical files.
|
||||
|
||||
Written by `Diagram::toXml()`, `sources/diagram.cpp`.
|
||||
@@ -0,0 +1,18 @@
|
||||
# images
|
||||
Container for bitmap images dropped onto the folio.
|
||||
|
||||
parent : [diagram](project_child_diagram)
|
||||
|
||||
attribute : none
|
||||
|
||||
## child elements
|
||||
* `<image>`, 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
|
||||
`<image>` element, so a project file stays self-contained.
|
||||
|
||||
Written only when the folio has at least one image, by `Diagram::toXml()`.
|
||||
@@ -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
|
||||
* `<input>`, 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: `<inputs>` also appears **inside** each `<element>`, where it holds that
|
||||
element's own texts. Same tag, different parent.
|
||||
@@ -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:
|
||||
`<properties><property show="1" name="a-date">26/06/2015</property></properties>`
|
||||
|
||||
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.
|
||||
@@ -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
|
||||
* `<shape>`, 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()`.
|
||||
@@ -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
|
||||
* `<hundredfolioseq>`, 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`.
|
||||
@@ -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
|
||||
* `<tenfolioseq>`, 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`.
|
||||
@@ -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
|
||||
* `<unitfolioseq>`, 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`.
|
||||
@@ -0,0 +1,16 @@
|
||||
# property
|
||||
One custom title-block variable.
|
||||
|
||||
Example:
|
||||
`<property show="1" name="a-date">26/06/2015</property>`
|
||||
|
||||
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`.
|
||||
Reference in New Issue
Block a user