mirror of
https://github.com/leozide/leocad.git
synced 2026-10-27 06:20:55 +00:00
Explain array counts, offsets, rotations, image dimensions, file naming, and step ranges with translated tooltips and contextual help. Give both dialogs a standard Help button and dialog-scoped F1 support that falls back from the focused control through its parent groups to the overview. Link image field labels to their buddies and share tooltip and field help text. Add accessible names for unlabeled controls. Document the writing and maintenance conventions, with concise guidance in the existing AGENTS.md. Refresh all eight language catalogs while preserving existing translations and review status. The 62 new help and accessibility strings remain unfinished pending translation. Validation: Qt 6.10 debug build; runtime checks for seven F1 routes, Help, Escape, dialog state, spin-box focus, and five label buddies with matching help; visual layout inspection; catalog coverage for all 2,118 active source messages and existing translation preservation; git diff --check.
364 lines
13 KiB
XML
364 lines
13 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>lcArrayDialog</class>
|
|
<widget class="QDialog" name="lcArrayDialog">
|
|
<property name="whatsThis">
|
|
<string><p><b>Array</b></p><p>Create repeated copies of the selected pieces using up to three array dimensions. Each row defines a count, an offset, and a rotation increment.</p><p>Counts include the original selection. For example, counts of 3, 2, and 1 create five new copies of each selected piece. Set an offset or rotation to keep copies from overlapping.</p></string>
|
|
</property>
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>492</width>
|
|
<height>156</height>
|
|
</rect>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Array</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox_4">
|
|
<property name="whatsThis">
|
|
<string><p><b>Dimensions</b></p><p>Each row controls one array dimension, with a count from 1 to 1000. The product of the three counts includes the original selection. A count of 1 adds no copies along that dimension.</p></string>
|
|
</property>
|
|
<property name="title">
|
|
<string>Dimensions</string>
|
|
</property>
|
|
<layout class="QGridLayout" name="gridLayout_8">
|
|
<item row="0" column="0">
|
|
<layout class="QGridLayout" name="gridLayout_9">
|
|
<item row="2" column="0">
|
|
<widget class="QSpinBox" name="count3">
|
|
<property name="toolTip">
|
|
<string>Number of positions in dimension 3, including the original.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 count</string>
|
|
</property>
|
|
<property name="minimum">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>1000</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="0">
|
|
<widget class="QSpinBox" name="count1">
|
|
<property name="toolTip">
|
|
<string>Number of positions in dimension 1, including the original.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 count</string>
|
|
</property>
|
|
<property name="minimum">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>1000</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QSpinBox" name="count2">
|
|
<property name="toolTip">
|
|
<string>Number of positions in dimension 2, including the original.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 count</string>
|
|
</property>
|
|
<property name="minimum">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>1000</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox_5">
|
|
<property name="whatsThis">
|
|
<string><p><b>Offsets</b></p><p>Each row sets the X, Y, and Z displacement per step in the corresponding array dimension. Values use the model axes and LDraw units; 20 units equal one stud width. Negative values reverse the direction.</p><p>For a straight row spaced one stud apart along X, use a count greater than 1 and an X offset of 20 in the same row.</p></string>
|
|
</property>
|
|
<property name="title">
|
|
<string>Offsets</string>
|
|
</property>
|
|
<layout class="QGridLayout" name="gridLayout_10">
|
|
<item row="0" column="1">
|
|
<widget class="QLineEdit" name="offset1y">
|
|
<property name="toolTip">
|
|
<string>Y offset per step in dimension 1, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 Y offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QLineEdit" name="offset2x">
|
|
<property name="toolTip">
|
|
<string>X offset per step in dimension 2, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 X offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="0">
|
|
<widget class="QLineEdit" name="offset1x">
|
|
<property name="toolTip">
|
|
<string>X offset per step in dimension 1, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 X offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="0">
|
|
<widget class="QLineEdit" name="offset3x">
|
|
<property name="toolTip">
|
|
<string>X offset per step in dimension 3, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 X offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="2">
|
|
<widget class="QLineEdit" name="offset1z">
|
|
<property name="toolTip">
|
|
<string>Z offset per step in dimension 1, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 Z offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="1">
|
|
<widget class="QLineEdit" name="offset2y">
|
|
<property name="toolTip">
|
|
<string>Y offset per step in dimension 2, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 Y offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="1">
|
|
<widget class="QLineEdit" name="offset3y">
|
|
<property name="toolTip">
|
|
<string>Y offset per step in dimension 3, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 Y offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="2">
|
|
<widget class="QLineEdit" name="offset2z">
|
|
<property name="toolTip">
|
|
<string>Z offset per step in dimension 2, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 Z offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="2">
|
|
<widget class="QLineEdit" name="offset3z">
|
|
<property name="toolTip">
|
|
<string>Z offset per step in dimension 3, in LDraw units.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 Z offset</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox_6">
|
|
<property name="whatsThis">
|
|
<string><p><b>Rotations</b></p><p>Each row sets the rotation increment around the X, Y, and Z model axes, in degrees, for its array dimension. Rotations from all three dimensions are added, then applied in X, Y, Z order before the offset.</p><p>Copies rotate around the focused piece origin, or the selection center when no piece has focus. Negative values reverse the rotation.</p></string>
|
|
</property>
|
|
<property name="title">
|
|
<string>Rotations</string>
|
|
</property>
|
|
<layout class="QGridLayout" name="gridLayout_11">
|
|
<item row="2" column="2">
|
|
<widget class="QLineEdit" name="rotation3z">
|
|
<property name="toolTip">
|
|
<string>Z rotation per step in dimension 3, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 Z rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="0">
|
|
<widget class="QLineEdit" name="rotation3x">
|
|
<property name="toolTip">
|
|
<string>X rotation per step in dimension 3, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 X rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="0">
|
|
<widget class="QLineEdit" name="rotation1x">
|
|
<property name="toolTip">
|
|
<string>X rotation per step in dimension 1, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 X rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="2">
|
|
<widget class="QLineEdit" name="rotation2z">
|
|
<property name="toolTip">
|
|
<string>Z rotation per step in dimension 2, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 Z rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="2">
|
|
<widget class="QLineEdit" name="rotation1z">
|
|
<property name="toolTip">
|
|
<string>Z rotation per step in dimension 1, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 Z rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QLineEdit" name="rotation2x">
|
|
<property name="toolTip">
|
|
<string>X rotation per step in dimension 2, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 X rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="1">
|
|
<widget class="QLineEdit" name="rotation1y">
|
|
<property name="toolTip">
|
|
<string>Y rotation per step in dimension 1, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 1 Y rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="1">
|
|
<widget class="QLineEdit" name="rotation2y">
|
|
<property name="toolTip">
|
|
<string>Y rotation per step in dimension 2, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 2 Y rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="1">
|
|
<widget class="QLineEdit" name="rotation3y">
|
|
<property name="toolTip">
|
|
<string>Y rotation per step in dimension 3, in degrees.</string>
|
|
</property>
|
|
<property name="accessibleName">
|
|
<string>Dimension 3 Y rotation</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<widget class="QDialogButtonBox" name="buttonBox">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="standardButtons">
|
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<tabstops>
|
|
<tabstop>count1</tabstop>
|
|
<tabstop>offset1x</tabstop>
|
|
<tabstop>offset1y</tabstop>
|
|
<tabstop>offset1z</tabstop>
|
|
<tabstop>rotation1x</tabstop>
|
|
<tabstop>rotation1y</tabstop>
|
|
<tabstop>rotation1z</tabstop>
|
|
<tabstop>count2</tabstop>
|
|
<tabstop>offset2x</tabstop>
|
|
<tabstop>offset2y</tabstop>
|
|
<tabstop>offset2z</tabstop>
|
|
<tabstop>rotation2x</tabstop>
|
|
<tabstop>rotation2y</tabstop>
|
|
<tabstop>rotation2z</tabstop>
|
|
<tabstop>count3</tabstop>
|
|
<tabstop>offset3x</tabstop>
|
|
<tabstop>offset3y</tabstop>
|
|
<tabstop>offset3z</tabstop>
|
|
<tabstop>rotation3x</tabstop>
|
|
<tabstop>rotation3y</tabstop>
|
|
<tabstop>rotation3z</tabstop>
|
|
<tabstop>buttonBox</tabstop>
|
|
</tabstops>
|
|
<resources/>
|
|
<connections>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>accepted()</signal>
|
|
<receiver>lcArrayDialog</receiver>
|
|
<slot>accept()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>227</x>
|
|
<y>141</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>157</x>
|
|
<y>158</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>rejected()</signal>
|
|
<receiver>lcArrayDialog</receiver>
|
|
<slot>reject()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>295</x>
|
|
<y>147</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>286</x>
|
|
<y>158</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
</connections>
|
|
</ui>
|