Dialog Increment still not tested.

--HG--
branch : feature
This commit is contained in:
dismine 2014-03-26 06:39:07 +02:00
parent 54cca86be5
commit 7c18e85305
43 changed files with 910 additions and 585 deletions

View file

@ -9,22 +9,23 @@
<xs:sequence>
<xs:element name="family-name" type="xs:string"></xs:element>
<xs:element name="given-name" type="xs:string"></xs:element>
<xs:element name="birth-date" type="xs:string"></xs:element>
<xs:element name="sex" type="xs:string"></xs:element>
<xs:element name="birth-date" type="xs:date"></xs:element>
<xs:element name="sex" type="sex"></xs:element>
<xs:element name="email" type="emailAddress"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="body-measurements">
<xs:complexType>
<xs:sequence>
<xs:element name="unit" type="xs:string"></xs:element>
<xs:element name="unit" type="units"></xs:element>
<xs:element name="head_and_neck">
<xs:complexType>
<xs:sequence>
<xs:element name="head_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -33,8 +34,8 @@
</xs:element>
<xs:element name="mid_neck_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -43,8 +44,8 @@
</xs:element>
<xs:element name="neck_base_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -53,8 +54,8 @@
</xs:element>
<xs:element name="head_and_neck_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -69,8 +70,8 @@
<xs:sequence>
<xs:element name="center_front_waist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -79,8 +80,8 @@
</xs:element>
<xs:element name="center_back_waist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -89,8 +90,8 @@
</xs:element>
<xs:element name="shoulder_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -99,8 +100,8 @@
</xs:element>
<xs:element name="side_waist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -109,8 +110,8 @@
</xs:element>
<xs:element name="trunk_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -119,8 +120,8 @@
</xs:element>
<xs:element name="shoulder_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -129,8 +130,8 @@
</xs:element>
<xs:element name="upper_chest_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -139,8 +140,8 @@
</xs:element>
<xs:element name="bust__girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -149,8 +150,8 @@
</xs:element>
<xs:element name="under_bust_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -159,8 +160,8 @@
</xs:element>
<xs:element name="waist_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -169,8 +170,8 @@
</xs:element>
<xs:element name="high_hip_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -179,8 +180,8 @@
</xs:element>
<xs:element name="hip_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -189,8 +190,8 @@
</xs:element>
<xs:element name="upper_front_chest_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -199,8 +200,8 @@
</xs:element>
<xs:element name="front_chest_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -209,8 +210,8 @@
</xs:element>
<xs:element name="across_front_shoulder_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -219,8 +220,8 @@
</xs:element>
<xs:element name="across_back_shoulder_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -229,8 +230,8 @@
</xs:element>
<xs:element name="upper_back_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -239,8 +240,8 @@
</xs:element>
<xs:element name="back_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -249,8 +250,8 @@
</xs:element>
<xs:element name="bustpoint_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -259,8 +260,8 @@
</xs:element>
<xs:element name="halter_bustpoint_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -269,8 +270,8 @@
</xs:element>
<xs:element name="neck_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -279,8 +280,8 @@
</xs:element>
<xs:element name="crotch_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -289,8 +290,8 @@
</xs:element>
<xs:element name="rise_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -299,8 +300,8 @@
</xs:element>
<xs:element name="shoulder_drop">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -309,8 +310,8 @@
</xs:element>
<xs:element name="shoulder_slope_degrees">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -319,8 +320,8 @@
</xs:element>
<xs:element name="front_shoulder_slope_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -329,8 +330,8 @@
</xs:element>
<xs:element name="back_shoulder_slope_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -339,8 +340,8 @@
</xs:element>
<xs:element name="front_shoulder_to_waist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -349,8 +350,8 @@
</xs:element>
<xs:element name="back_shoulder_to_waist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -359,8 +360,8 @@
</xs:element>
<xs:element name="front_neck_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -369,8 +370,8 @@
</xs:element>
<xs:element name="back_neck_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -379,8 +380,8 @@
</xs:element>
<xs:element name="front_upper-bust_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -389,8 +390,8 @@
</xs:element>
<xs:element name="back_upper-bust_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -399,8 +400,8 @@
</xs:element>
<xs:element name="front_waist_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -409,8 +410,8 @@
</xs:element>
<xs:element name="back_waist_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -419,8 +420,8 @@
</xs:element>
<xs:element name="front_upper-hip_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -429,8 +430,8 @@
</xs:element>
<xs:element name="back_upper-hip_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -439,8 +440,8 @@
</xs:element>
<xs:element name="front_hip_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -449,8 +450,8 @@
</xs:element>
<xs:element name="back_hip_arc">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -459,8 +460,8 @@
</xs:element>
<xs:element name="chest_slope">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -469,8 +470,8 @@
</xs:element>
<xs:element name="back_slope">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -479,8 +480,8 @@
</xs:element>
<xs:element name="front_waist_slope">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -489,8 +490,8 @@
</xs:element>
<xs:element name="back_waist_slope">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -499,8 +500,8 @@
</xs:element>
<xs:element name="front-neck_to_upper-chest_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -509,8 +510,8 @@
</xs:element>
<xs:element name="front-neck_to_bust_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -525,8 +526,8 @@
<xs:sequence>
<xs:element name="armscye_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -535,8 +536,8 @@
</xs:element>
<xs:element name="elbow_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -545,8 +546,8 @@
</xs:element>
<xs:element name="upper-arm_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -555,8 +556,8 @@
</xs:element>
<xs:element name="wrist_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -565,8 +566,8 @@
</xs:element>
<xs:element name="scye_depth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -575,8 +576,8 @@
</xs:element>
<xs:element name="shoulder_and_arm_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -585,8 +586,8 @@
</xs:element>
<xs:element name="underarm_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -595,8 +596,8 @@
</xs:element>
<xs:element name="cervicale_to_wrist_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -605,8 +606,8 @@
</xs:element>
<xs:element name="shoulder_to_elbow_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -615,8 +616,8 @@
</xs:element>
<xs:element name="arm_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -631,8 +632,8 @@
<xs:sequence>
<xs:element name="hand_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -641,8 +642,8 @@
</xs:element>
<xs:element name="hand_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -651,8 +652,8 @@
</xs:element>
<xs:element name="hand_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -667,8 +668,8 @@
<xs:sequence>
<xs:element name="thigh_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -677,8 +678,8 @@
</xs:element>
<xs:element name="mid_thigh_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -687,8 +688,8 @@
</xs:element>
<xs:element name="knee_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -697,8 +698,8 @@
</xs:element>
<xs:element name="calf_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -707,8 +708,8 @@
</xs:element>
<xs:element name="ankle_girth">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -717,8 +718,8 @@
</xs:element>
<xs:element name="knee_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -727,8 +728,8 @@
</xs:element>
<xs:element name="ankle_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -743,8 +744,8 @@
<xs:sequence>
<xs:element name="foot_width">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -753,8 +754,8 @@
</xs:element>
<xs:element name="foot_length">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -769,8 +770,8 @@
<xs:sequence>
<xs:element name="height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -779,8 +780,8 @@
</xs:element>
<xs:element name="cervicale_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -789,8 +790,8 @@
</xs:element>
<xs:element name="cervicale_to_knee_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -799,8 +800,8 @@
</xs:element>
<xs:element name="waist_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -809,8 +810,8 @@
</xs:element>
<xs:element name="high_hip_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -819,8 +820,8 @@
</xs:element>
<xs:element name="hip_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -829,8 +830,8 @@
</xs:element>
<xs:element name="waist_to_hip_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -839,8 +840,8 @@
</xs:element>
<xs:element name="waist_to_knee_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -849,8 +850,8 @@
</xs:element>
<xs:element name="crotch_height">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="m_number" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
@ -866,4 +867,27 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="emailAddress">
<xs:restriction base="xs:string">
<xs:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="shortMeasurementName">
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}]|[^0-9])[_\p{L}0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sex">
<xs:restriction base="xs:string">
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -9,9 +9,9 @@
<xs:element name="notes" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
<xs:element name="measurements" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="type" type="measurementsTypes" use="required"></xs:attribute>
<xs:attribute name="path" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="unit" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="unit" type="units" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="increments" minOccurs="0" maxOccurs="1">
@ -23,7 +23,7 @@
<xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="kgrowth" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortName" use="required"></xs:attribute>
<xs:attribute name="base" type="xs:double" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
@ -211,4 +211,22 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="shortName">
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}]|[^0-9])[_\p{L}0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="measurementsTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="standard"/>
<xs:enumeration value="individual"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -4,7 +4,7 @@
<xs:complexType>
<xs:sequence>
<xs:element name="description" type="xs:string"></xs:element>
<xs:element name="unit" type="xs:string"></xs:element>
<xs:element name="unit" type="units"></xs:element>
<xs:element name="size">
<xs:complexType>
<xs:attribute name="base" type="xs:double"></xs:attribute>
@ -22,7 +22,7 @@
<xs:sequence>
<xs:element name="measurement" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="base" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="height_increase" type="xs:double" use="required"></xs:attribute>
@ -36,4 +36,16 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="shortMeasurementName">
<xs:restriction base="xs:string">
<xs:pattern value="([\p{L}]|[^0-9])[_\p{L}0-9]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -1,105 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<vit>
<lang>ru</lang>
<personal>
<family-name/>
<given-name/>
<birth-date/>
<sex/>
<birth-date>1900-01-01</birth-date>
<sex>male</sex>
<email>username@example.com</email>
</personal>
<body-measurements>
<unit>mm</unit>
<head_and_neck>
<head_girth name="Огол" m_number="M1" value="0.0" gui_text="Обхват головы" description="Номер размерного признака 48"/>
<mid_neck_girth name="" m_number="M2" value="0.0" gui_text="" description="" ignore="true"/>
<mid_neck_girth name="name" m_number="M2" value="0.0" gui_text="" description="" ignore="true"/>
<neck_base_girth name="Ош" m_number="M3" value="0.0" gui_text="Обхват шеи" description="Номер размерного признака 13"/>
<head_and_neck_length name="" m_number="M4" value="0.0" gui_text="" description="" ignore="true"/>
<head_and_neck_length name="name" m_number="M4" value="0.0" gui_text="" description="" ignore="true"/>
</head_and_neck>
<torso>
<center_front_waist_length name="" m_number="M5" value="0.0" gui_text="" description="" ignore="true"/>
<center_front_waist_length name="name" m_number="M5" value="0.0" gui_text="" description="" ignore="true"/>
<center_back_waist_length name="Дтс" m_number="M6" value="0.0" gui_text="Длина спины до талии с учетом выступа лопаток" description="Номер размерного признака 40"/>
<shoulder_length name="Шп" m_number="M7" value="0.0" gui_text="Длина плечевого ската" description="Номер размерного признака 31"/>
<side_waist_length name="Дб" m_number="M8" value="0.0" gui_text="Длина боковой части" description="Разница между меркой 11 и 7"/>
<trunk_length name="" m_number="M9" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_girth name="" m_number="M10" value="0.0" gui_text="" description="" ignore="true"/>
<trunk_length name="name" m_number="M9" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_girth name="name" m_number="M10" value="0.0" gui_text="" description="" ignore="true"/>
<upper_chest_girth name="ОгI" m_number="M11" value="0.0" gui_text="Обхват груди первый" description="Номер размерного признака 14"/>
<bust__girth name="ОгII" m_number="M12" value="0.0" gui_text="Обхват груди второй" description="Номер размерного признака 15"/>
<under_bust_girth name="ОгIII" m_number="M13" value="0.0" gui_text="Обхват груди третий" description="Номер размерного признака 16"/>
<waist_girth name="От" m_number="M14" value="0.0" gui_text="Обхват талии" description="Номер размерного признака 18"/>
<high_hip_girth name="" m_number="M15" value="0.0" gui_text="" description="" ignore="true"/>
<high_hip_girth name="name" m_number="M15" value="0.0" gui_text="" description="" ignore="true"/>
<hip_girth name="Об" m_number="M16" value="0.0" gui_text="Обхват бедер с учетом выступания живота" description="Номер размерного признака 19"/>
<upper_front_chest_width name="Шг1" m_number="M17" value="0.0" gui_text="Ширина груди первая" description="Номер размерного признака 45"/>
<front_chest_width name="Шг2" m_number="M18" value="0.0" gui_text="Ширина груди вторая" description="Номер размерного признака 45"/>
<across_front_shoulder_width name="dпл" m_number="M19" value="0.0" gui_text="Плечевой диаметр" description="Номер размерного признака 53"/>
<across_back_shoulder_width name="" m_number="M20" value="0.0" gui_text="" description="" ignore="true"/>
<upper_back_width name="" m_number="M21" value="0.0" gui_text="" description="" ignore="true"/>
<across_back_shoulder_width name="name" m_number="M20" value="0.0" gui_text="" description="" ignore="true"/>
<upper_back_width name="name" m_number="M21" value="0.0" gui_text="" description="" ignore="true"/>
<back_width name="Шс" m_number="M22" value="0.0" gui_text="Ширина спины" description="Номер размерного признака 47"/>
<bustpoint_to_bustpoint name="Цг" m_number="M23" value="0.0" gui_text="Расстояние между сосковыми точками" description="Номер размерного признака 46"/>
<halter_bustpoint_to_bustpoint name="" m_number="M24" value="0.0" gui_text="" description="" ignore="true"/>
<halter_bustpoint_to_bustpoint name="name" m_number="M24" value="0.0" gui_text="" description="" ignore="true"/>
<neck_to_bustpoint name="Вг" m_number="M25" value="0.0" gui_text="Расстояние от точки основания шеи сбоку до сосковой точки (высота груди)" description="Номер размерного признака 35а"/>
<crotch_length name="" m_number="M26" value="0.0" gui_text="" description="" ignore="true"/>
<crotch_length name="name" m_number="M26" value="0.0" gui_text="" description="" ignore="true"/>
<rise_height name="Дпс" m_number="M27" value="0.0" gui_text="Расстояние от линии талии до подъягодичной складки" description="Номер размерного признака 104"/>
<shoulder_drop name="" m_number="M28" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_slope_degrees name="" m_number="M29" value="0.0" gui_text="" description="" ignore="true"/>
<front_shoulder_slope_length name="" m_number="M30" value="0.0" gui_text="" description="" ignore="true"/>
<back_shoulder_slope_length name="" m_number="M31" value="0.0" gui_text="" description="" ignore="true"/>
<front_shoulder_to_waist_length name="" m_number="M32" value="0.0" gui_text="" description="" ignore="true"/>
<back_shoulder_to_waist_length name="" m_number="M33" value="0.0" gui_text="" description="" ignore="true"/>
<front_neck_arc name="" m_number="M34" value="0.0" gui_text="" description="" ignore="true"/>
<back_neck_arc name="" m_number="M35" value="0.0" gui_text="" description="" ignore="true"/>
<front_upper-bust_arc name="" m_number="M36" value="0.0" gui_text="" description="" ignore="true"/>
<back_upper-bust_arc name="" m_number="M37" value="0.0" gui_text="" description="" ignore="true"/>
<front_waist_arc name="" m_number="M38" value="0.0" gui_text="" description="" ignore="true"/>
<back_waist_arc name="" m_number="M39" value="0.0" gui_text="" description="" ignore="true"/>
<front_upper-hip_arc name="" m_number="M40" value="0.0" gui_text="" description="" ignore="true"/>
<back_upper-hip_arc name="" m_number="M41" value="0.0" gui_text="" description="" ignore="true"/>
<front_hip_arc name="" m_number="M42" value="0.0" gui_text="" description="" ignore="true"/>
<back_hip_arc name="" m_number="M43" value="0.0" gui_text="" description="" ignore="true"/>
<chest_slope name="" m_number="M44" value="0.0" gui_text="" description="" ignore="true"/>
<back_slope name="" m_number="M45" value="0.0" gui_text="" description="" ignore="true"/>
<front_waist_slope name="" m_number="M46" value="0.0" gui_text="" description="" ignore="true"/>
<back_waist_slope name="" m_number="M47" value="0.0" gui_text="" description="" ignore="true"/>
<front-neck_to_upper-chest_height name="" m_number="M48" value="0.0" gui_text="" description="" ignore="true"/>
<front-neck_to_bust_height name="" m_number="M49" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_drop name="name" m_number="M28" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_slope_degrees name="name" m_number="M29" value="0.0" gui_text="" description="" ignore="true"/>
<front_shoulder_slope_length name="name" m_number="M30" value="0.0" gui_text="" description="" ignore="true"/>
<back_shoulder_slope_length name="name" m_number="M31" value="0.0" gui_text="" description="" ignore="true"/>
<front_shoulder_to_waist_length name="name" m_number="M32" value="0.0" gui_text="" description="" ignore="true"/>
<back_shoulder_to_waist_length name="name" m_number="M33" value="0.0" gui_text="" description="" ignore="true"/>
<front_neck_arc name="name" m_number="M34" value="0.0" gui_text="" description="" ignore="true"/>
<back_neck_arc name="name" m_number="M35" value="0.0" gui_text="" description="" ignore="true"/>
<front_upper-bust_arc name="name" m_number="M36" value="0.0" gui_text="" description="" ignore="true"/>
<back_upper-bust_arc name="name" m_number="M37" value="0.0" gui_text="" description="" ignore="true"/>
<front_waist_arc name="name" m_number="M38" value="0.0" gui_text="" description="" ignore="true"/>
<back_waist_arc name="name" m_number="M39" value="0.0" gui_text="" description="" ignore="true"/>
<front_upper-hip_arc name="name" m_number="M40" value="0.0" gui_text="" description="" ignore="true"/>
<back_upper-hip_arc name="name" m_number="M41" value="0.0" gui_text="" description="" ignore="true"/>
<front_hip_arc name="name" m_number="M42" value="0.0" gui_text="" description="" ignore="true"/>
<back_hip_arc name="name" m_number="M43" value="0.0" gui_text="" description="" ignore="true"/>
<chest_slope name="name" m_number="M44" value="0.0" gui_text="" description="" ignore="true"/>
<back_slope name="name" m_number="M45" value="0.0" gui_text="" description="" ignore="true"/>
<front_waist_slope name="name" m_number="M46" value="0.0" gui_text="" description="" ignore="true"/>
<back_waist_slope name="name" m_number="M47" value="0.0" gui_text="" description="" ignore="true"/>
<front-neck_to_upper-chest_height name="name" m_number="M48" value="0.0" gui_text="" description="" ignore="true"/>
<front-neck_to_bust_height name="name" m_number="M49" value="0.0" gui_text="" description="" ignore="true"/>
</torso>
<arm>
<armscye_girth name="" m_number="M50" value="0.0" gui_text="" description="" ignore="true"/>
<armscye_girth name="name" m_number="M50" value="0.0" gui_text="" description="" ignore="true"/>
<elbow_girth name="Олк" m_number="M51" value="0.0" gui_text="Обхват локтя" description="Номер размерного признака "/>
<upper-arm_girth name="Оп" m_number="M52" value="0.0" gui_text="Обхват плеча" description="Номер размерного признака 28"/>
<wrist_girth name="Озап" m_number="M53" value="0.0" gui_text="Обхват запястья" description="Номер размерного признака 105"/>
<scye_depth name="" m_number="M54" value="0.0" gui_text="" description="" ignore="true"/>
<scye_depth name="name" m_number="M54" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_and_arm_length name="Дзап" m_number="M55" value="0.0" gui_text="Расстояние от точки основания шеи сбоку до линии обхвата запястья" description="Номер размерного признака 33"/>
<underarm_length name="" m_number="M56" value="0.0" gui_text="" description="" ignore="true"/>
<cervicale_to_wrist_length name="" m_number="M57" value="0.0" gui_text="" description="" ignore="true"/>
<underarm_length name="name" m_number="M56" value="0.0" gui_text="" description="" ignore="true"/>
<cervicale_to_wrist_length name="name" m_number="M57" value="0.0" gui_text="" description="" ignore="true"/>
<shoulder_to_elbow_length name="Дрлок" m_number="M58" value="0.0" gui_text="Длина руки до локтя" description="Номер размерного признака 62"/>
<arm_length name="Дрзап" m_number="M59" value="0.0" gui_text="Длина руки до запястья" description="Номер размерного признака 68"/>
</arm>
<hand>
<hand_width name="" m_number="M60" value="0.0" gui_text="" description="" ignore="true"/>
<hand_length name="" m_number="M61" value="0.0" gui_text="" description="" ignore="true"/>
<hand_girth name="" m_number="M62" value="0.0" gui_text="" description="" ignore="true"/>
<hand_width name="name" m_number="M60" value="0.0" gui_text="" description="" ignore="true"/>
<hand_length name="name" m_number="M61" value="0.0" gui_text="" description="" ignore="true"/>
<hand_girth name="name" m_number="M62" value="0.0" gui_text="" description="" ignore="true"/>
</hand>
<leg>
<thigh_girth name="Обед" m_number="M63" value="0.0" gui_text="Обхват бедра" description="Номер размерного признака 21"/>
<mid_thigh_girth name="" m_number="M64" value="0.0" gui_text="" description="" ignore="true"/>
<mid_thigh_girth name="name" m_number="M64" value="0.0" gui_text="" description="" ignore="true"/>
<knee_girth name="Ок" m_number="M65" value="0.0" gui_text="Обхват колена" description="Номер размерного признака 22"/>
<calf_girth name="Ои" m_number="M66" value="0.0" gui_text="Обхват икры" description="Номер размерного признака 23"/>
<ankle_girth name="Ощ" m_number="M67" value="0.0" gui_text="Обхват щиколотки" description="Номер размерного признака 24"/>
<knee_height name="Вк" m_number="M68" value="0.0" gui_text="Высота коленной точки" description="Номер размерного признака 9"/>
<ankle_height name="" m_number="M69" value="0.0" gui_text="" description="" ignore="true"/>
<ankle_height name="name" m_number="M69" value="0.0" gui_text="" description="" ignore="true"/>
</leg>
<foot>
<foot_width name="" m_number="M70" value="0.0" gui_text="" description="" ignore="true"/>
<foot_length name="" m_number="M71" value="0.0" gui_text="" description="" ignore="true"/>
<foot_width name="name" m_number="M70" value="0.0" gui_text="" description="" ignore="true"/>
<foot_length name="name" m_number="M71" value="0.0" gui_text="" description="" ignore="true"/>
</foot>
<heights>
<height name="Р" m_number="M72" value="0.0" gui_text="Рост" description="Номер размерного признака 1"/>
<cervicale_height name="Вшт" m_number="M73" value="0.0" gui_text="Высота точки основания шеи сзади" description="Номер размерного признака 10"/>
<cervicale_to_knee_height name="" m_number="M74" value="0.0" gui_text="" description="" ignore="true"/>
<cervicale_to_knee_height name="name" m_number="M74" value="0.0" gui_text="" description="" ignore="true"/>
<waist_height name="Влт" m_number="M75" value="0.0" gui_text="Высота линии талии" description="Номер размерного признака 7"/>
<high_hip_height name="" m_number="M76" value="0.0" gui_text="" description="" ignore="true"/>
<hip_height name="" m_number="M77" value="0.0" gui_text="" description="" ignore="true"/>
<waist_to_hip_height name="" m_number="M78" value="0.0" gui_text="" description="" ignore="true"/>
<waist_to_knee_height name="" m_number="M79" value="0.0" gui_text="" description="" ignore="true"/>
<high_hip_height name="name" m_number="M76" value="0.0" gui_text="" description="" ignore="true"/>
<hip_height name="name" m_number="M77" value="0.0" gui_text="" description="" ignore="true"/>
<waist_to_hip_height name="name" m_number="M78" value="0.0" gui_text="" description="" ignore="true"/>
<waist_to_knee_height name="name" m_number="M79" value="0.0" gui_text="" description="" ignore="true"/>
<crotch_height name="Дн" m_number="M80" value="0.0" gui_text="Длина ноги по внутренней поверхности" description="Номер размерного признака 27"/>
</heights>
</body-measurements>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<vst>
<description>Типовые фигуры мужчин 1-й полнотной группы, обхват груди 100 см</description>
<unit>mm</unit>

View file

@ -395,7 +395,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
case Valentina::NodeSplinePath:
break;
default:
qWarning()<<tr("Got wrong tool type. Ignore.");
qWarning()<<"Got wrong tool type. Ignore.";
break;
}
}

View file

@ -72,6 +72,8 @@ DialogIncrements::DialogIncrements(VContainer *data, VPattern *doc, QWidget *par
connect(ui->tableWidgetMeasurements, &QTableWidget::cellChanged, this, &DialogIncrements::MeasurementsChanged);
}
ui->toolBoxMeasurements->setCurrentIndex(1);
FillMeasurements();
FillIncrements();
FillLengthLines();

View file

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>897</width>
<height>566</height>
<width>979</width>
<height>574</height>
</rect>
</property>
<property name="minimumSize">
@ -42,21 +42,42 @@
<number>0</number>
</property>
<widget class="QWidget" name="tabStandard">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="title">
<string>Measurements</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<property name="spacing">
<number>6</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Load another measurements table</string>
</property>
</widget>
</item>
<item>
<item alignment="Qt::AlignTop">
<widget class="QToolButton" name="toolButtonAnotherTable">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@ -70,153 +91,264 @@
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="labelFamilyName">
<property name="text">
<string>Family name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFamilyName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelGivenName">
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Given name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditGivenName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="labelBirthDate">
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Birth date</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditBirthDate"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="labelSex">
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Sex</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditSex"/>
</item>
</layout>
</item>
<item>
<widget class="QTableWidget" name="tableWidgetMeasurements">
<property name="enabled">
<bool>true</bool>
<widget class="QToolBox" name="toolBoxMeasurements">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
<property name="currentIndex">
<number>1</number>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>25</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>45</number>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>8</number>
</attribute>
<column>
<property name="text">
<string>Name</string>
<widget class="QWidget" name="page">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>939</width>
<height>411</height>
</rect>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
<attribute name="label">
<string>Personal information</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>6</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="labelFamilyName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Family name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFamilyName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelGivenName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Given name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditGivenName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="labelBirthDate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Birth date</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditBirthDate"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="labelSex">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Sex</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditSex"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="labelMail">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Mail</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditMail"/>
</item>
</layout>
</item>
</layout>
<zorder></zorder>
<zorder></zorder>
<zorder></zorder>
<zorder></zorder>
<zorder>layoutWidget</zorder>
<zorder>label_5</zorder>
</widget>
<widget class="QWidget" name="page_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>939</width>
<height>411</height>
</rect>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In heights</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
<attribute name="label">
<string>Measurements</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTableWidget" name="tableWidgetMeasurements">
<property name="enabled">
<bool>true</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>25</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>45</number>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>8</number>
</attribute>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In heights</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>

View file

@ -56,6 +56,7 @@ DialogIndividualMeasurements::DialogIndividualMeasurements(VContainer *data, con
ui->lineEditName->setText(_name);
LoadIndividualTables();
InitUnits();
CheckState();
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogIndividualMeasurements::CheckState);
@ -92,7 +93,7 @@ void DialogIndividualMeasurements::DialogAccepted()
if ( iMeasur.copy(_tablePath) == false )
{
QMessageBox::warning(this, tr("Could not create measurements file"), tr("Please try again or change file"));
return;
DialogRejected();
}
}
try
@ -100,13 +101,25 @@ void DialogIndividualMeasurements::DialogAccepted()
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", _tablePath);
VIndividualMeasurements m(data);
m.setContent(_tablePath);
const qint32 index = ui->comboBoxUnits->currentIndex();
Valentina::Units unit = VDomDocument::StrToUnits(ui->comboBoxUnits->itemData(index).toString());
m.setUnit(unit);
qApp->setPatternUnit( m.Unit());
QFile iMeasur(_tablePath);
if (iMeasur.open(QIODevice::WriteOnly| QIODevice::Truncate))
{
const int Indent = 4;
QTextStream out(&iMeasur);
out.setCodec("UTF-8");
m.save(out, Indent);
iMeasur.close();
}
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
qWarning()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
return;
DialogRejected();
}
accept();
}
@ -135,6 +148,7 @@ void DialogIndividualMeasurements::CheckState()
ui->lineEditPathNewM->setEnabled(false);
ui->toolButtonOpenNew->setEnabled(false);
ui->comboBoxLang->setEnabled(false);
ui->comboBoxUnits->setEnabled(false);
if (ui->lineEditPathExistM->text().isEmpty() == false)
{
@ -146,6 +160,7 @@ void DialogIndividualMeasurements::CheckState()
ui->lineEditPathNewM->setEnabled(true);
ui->toolButtonOpenNew->setEnabled(true);
ui->comboBoxLang->setEnabled(true);
ui->comboBoxUnits->setEnabled(true);
ui->toolButtonOpenExist->setEnabled(false);
ui->lineEditPathExistM->setEnabled(false);
@ -259,3 +274,9 @@ void DialogIndividualMeasurements::NewTable()
ui->lineEditPathNewM->setToolTip(name);
CheckState();
}
void DialogIndividualMeasurements::InitUnits()
{
ui->comboBoxUnits->addItem(tr("centimeter"), QVariant(VDomDocument::UnitsToStr(Valentina::Cm)));
ui->comboBoxUnits->addItem(tr("inch"), QVariant(VDomDocument::UnitsToStr(Valentina::Inch)));
}

View file

@ -58,6 +58,7 @@ private:
void LoadIndividualTables();
void OpenTable();
void NewTable();
void InitUnits();
};
inline QString DialogIndividualMeasurements::name() const

View file

@ -6,14 +6,14 @@
<rect>
<x>0</x>
<y>0</y>
<width>358</width>
<height>247</height>
<width>397</width>
<height>280</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@ -76,7 +76,7 @@
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="radioButtonNewM">
<property name="text">
@ -91,59 +91,73 @@
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxLang">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditPathNewM"/>
</item>
<item>
<widget class="QToolButton" name="toolButtonOpenNew">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="document-new">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
<widget class="QComboBox" name="comboBoxLang">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Units:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxUnits"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditPathNewM">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonOpenNew">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="document-new">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</item>

View file

@ -136,7 +136,7 @@ void DialogDetail::NewItem(quint32 id, const Valentina::Tools &typeTool, const N
break;
}
default:
qWarning()<<tr("Got wrong tools. Ignore.");
qWarning()<<"Got wrong tools. Ignore.";
break;
}

View file

@ -258,7 +258,7 @@ void DialogTool::ChangeCurrentText(QComboBox *box, const QString &value)
}
else
{
qWarning()<<tr("Can't find object by name")<<value;
qWarning()<<"Can't find object by name"<<value;
}
}

View file

@ -57,6 +57,7 @@ MainWindow::MainWindow(QWidget *parent)
CreateActions();
CreateMenus();
ToolBarDraws();
InitToolButtons();
sceneDraw = new VMainGraphicsScene();
currentScene = sceneDraw;
@ -77,26 +78,6 @@ MainWindow::MainWindow(QWidget *parent)
helpLabel = new QLabel(QObject::tr("Create new pattern piece to start working."));
ui->statusBar->addWidget(helpLabel);
connect(ui->toolButtonEndLine, &QToolButton::clicked, this, &MainWindow::ToolEndLine);
connect(ui->toolButtonLine, &QToolButton::clicked, this, &MainWindow::ToolLine);
connect(ui->toolButtonAlongLine, &QToolButton::clicked, this, &MainWindow::ToolAlongLine);
connect(ui->toolButtonShoulderPoint, &QToolButton::clicked, this, &MainWindow::ToolShoulderPoint);
connect(ui->toolButtonNormal, &QToolButton::clicked, this, &MainWindow::ToolNormal);
connect(ui->toolButtonBisector, &QToolButton::clicked, this, &MainWindow::ToolBisector);
connect(ui->toolButtonLineIntersect, &QToolButton::clicked, this, &MainWindow::ToolLineIntersect);
connect(ui->toolButtonSpline, &QToolButton::clicked, this, &MainWindow::ToolSpline);
connect(ui->toolButtonArc, &QToolButton::clicked, this, &MainWindow::ToolArc);
connect(ui->toolButtonSplinePath, &QToolButton::clicked, this, &MainWindow::ToolSplinePath);
connect(ui->toolButtonPointOfContact, &QToolButton::clicked, this, &MainWindow::ToolPointOfContact);
connect(ui->toolButtonNewDetail, &QToolButton::clicked, this, &MainWindow::ToolDetail);
connect(ui->toolButtonHeight, &QToolButton::clicked, this, &MainWindow::ToolHeight);
connect(ui->toolButtonTriangle, &QToolButton::clicked, this, &MainWindow::ToolTriangle);
connect(ui->toolButtonPointOfIntersection, &QToolButton::clicked, this, &MainWindow::ToolPointOfIntersection);
connect(ui->toolButtonSplineCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutSpline);
connect(ui->toolButtonSplinePathCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutSplinePath);
connect(ui->toolButtonUnionDetails, &QToolButton::clicked, this, &MainWindow::ToolUnionDetails);
connect(ui->toolButtonArcCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutArc);
pattern = new VContainer();
doc = new VPattern(pattern, comboBoxDraws, &mode);
@ -159,7 +140,7 @@ void MainWindow::ActionNewDraw()
}
if (doc->appendDraw(patternPieceName) == false)
{
qWarning()<<tr("Error creating pattern with the name ")<<patternPieceName<<".";
qWarning()<<"Error creating pattern with the name "<<patternPieceName<<".";
return;
}
disconnect(comboBoxDraws, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
@ -577,9 +558,8 @@ void MainWindow::ToolBarOption()
void MainWindow::ToolBarDraws()
{
QLabel * labelNameDraw = new QLabel;
labelNameDraw ->setText(tr("Pattern Piece: "));
ui->toolBarDraws->addWidget(labelNameDraw);
QLabel *labelPtternPieceName = new QLabel(tr("Pattern Piece: "));
ui->toolBarDraws->addWidget(labelPtternPieceName);
comboBoxDraws = new QComboBox;
ui->toolBarDraws->addWidget(comboBoxDraws);
@ -602,6 +582,29 @@ void MainWindow::ToolBarDraws()
ui->actionLayout->setEnabled(false);
}
void MainWindow::InitToolButtons()
{
connect(ui->toolButtonEndLine, &QToolButton::clicked, this, &MainWindow::ToolEndLine);
connect(ui->toolButtonLine, &QToolButton::clicked, this, &MainWindow::ToolLine);
connect(ui->toolButtonAlongLine, &QToolButton::clicked, this, &MainWindow::ToolAlongLine);
connect(ui->toolButtonShoulderPoint, &QToolButton::clicked, this, &MainWindow::ToolShoulderPoint);
connect(ui->toolButtonNormal, &QToolButton::clicked, this, &MainWindow::ToolNormal);
connect(ui->toolButtonBisector, &QToolButton::clicked, this, &MainWindow::ToolBisector);
connect(ui->toolButtonLineIntersect, &QToolButton::clicked, this, &MainWindow::ToolLineIntersect);
connect(ui->toolButtonSpline, &QToolButton::clicked, this, &MainWindow::ToolSpline);
connect(ui->toolButtonArc, &QToolButton::clicked, this, &MainWindow::ToolArc);
connect(ui->toolButtonSplinePath, &QToolButton::clicked, this, &MainWindow::ToolSplinePath);
connect(ui->toolButtonPointOfContact, &QToolButton::clicked, this, &MainWindow::ToolPointOfContact);
connect(ui->toolButtonNewDetail, &QToolButton::clicked, this, &MainWindow::ToolDetail);
connect(ui->toolButtonHeight, &QToolButton::clicked, this, &MainWindow::ToolHeight);
connect(ui->toolButtonTriangle, &QToolButton::clicked, this, &MainWindow::ToolTriangle);
connect(ui->toolButtonPointOfIntersection, &QToolButton::clicked, this, &MainWindow::ToolPointOfIntersection);
connect(ui->toolButtonSplineCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutSpline);
connect(ui->toolButtonSplinePathCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutSplinePath);
connect(ui->toolButtonUnionDetails, &QToolButton::clicked, this, &MainWindow::ToolUnionDetails);
connect(ui->toolButtonArcCutPoint, &QToolButton::clicked, this, &MainWindow::ToolCutArc);
}
void MainWindow::currentDrawChanged( int index )
{
if (index != -1)
@ -1119,7 +1122,7 @@ bool MainWindow::SavePattern(const QString &fileName)
}
if (fileName.isEmpty())
{
qWarning()<<tr("Got empty file name.");
qWarning()<<"Got empty file name.";
return false;
}
//Writing in temporary file
@ -1130,6 +1133,7 @@ bool MainWindow::SavePattern(const QString &fileName)
{
const int Indent = 4;
QTextStream out(&tempFile);
out.setCodec("UTF-8");
doc->save(out, Indent);
tempFile.close();
}
@ -1146,7 +1150,7 @@ bool MainWindow::SavePattern(const QString &fileName)
{
if ( tempFile.copy(patternFile.fileName()) == false )
{
qWarning()<<tr("Could not copy temp file to pattern file")<<Q_FUNC_INFO;
qWarning()<<"Could not copy temp file to pattern file"<<Q_FUNC_INFO;
tempOfPattern.copy(fileName);
result = false;
}
@ -1157,7 +1161,7 @@ bool MainWindow::SavePattern(const QString &fileName)
}
else
{
qWarning()<<tr("Could not remove pattern file")<<Q_FUNC_INFO;
qWarning()<<"Could not remove pattern file"<<Q_FUNC_INFO;
result = false;
}
if (result)
@ -1179,7 +1183,7 @@ void MainWindow::AutoSavePattern()
QString autofile = curFile +".autosave";
if (SavePattern(autofile) == false)
{
qWarning()<<tr("Can not save pattern")<<Q_FUNC_INFO;
qWarning()<<"Can not save pattern"<<Q_FUNC_INFO;
}
}
}

View file

@ -475,6 +475,7 @@ private:
* @brief ToolBarDraws enable draw toolbar.
*/
void ToolBarDraws();
void InitToolButtons();
/**
* @brief CanselTool cansel tool.
*/

View file

@ -31,6 +31,7 @@
#include <QFlags>
#include <QString>
#include <QMetaType>
#define SceneSize 50000
@ -100,6 +101,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS( Valentina::Tools )
Q_DECLARE_OPERATORS_FOR_FLAGS( Valentina::Sources )
Q_DECLARE_OPERATORS_FOR_FLAGS( Valentina::Draws )
Q_DECLARE_OPERATORS_FOR_FLAGS( Valentina::Units )
Q_DECLARE_METATYPE(Valentina::Unit)
namespace Pattern
{
@ -111,7 +113,4 @@ namespace Pattern
}
Q_DECLARE_OPERATORS_FOR_FLAGS( Pattern::Measurements )
#define widthMainLine 1.2 //mm
#define widthHairLine widthMainLine/3
#endif // OPTIONS_H

View file

@ -81,7 +81,7 @@ void TableWindow::AddPaper()
shadowPaper->setBrush(QBrush(Qt::black));
tableScene->addItem(shadowPaper);
paper = new QGraphicsRectItem(QRectF(x1, y1, x2, y2));
paper->setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
paper->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
paper->setBrush(QBrush(Qt::white));
tableScene->addItem(paper);
qDebug()<<paper->rect().size().toSize();
@ -243,7 +243,7 @@ void TableWindow::saveScene()
qWarning() << "Bad file suffix"<<Q_FUNC_INFO;
break;
}
paper->setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
paper->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
brush->setColor( QColor( Qt::gray ) );
brush->setStyle( Qt::SolidPattern );
tableScene->setBackgroundBrush( *brush );
@ -317,7 +317,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
{
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(i) );
Q_CHECK_PTR(bitem);
bitem->setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.removeAt(i);
}
}
@ -326,7 +326,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
{
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(0) );
Q_CHECK_PTR(bitem);
bitem->setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.clear();
collidingItems = true;
}
@ -436,7 +436,7 @@ void TableWindow::SvgFile(const QString &name) const
painter.begin(&generator);
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, qApp->toPixel(widthHairLine), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setBrush ( QBrush ( Qt::NoBrush ) );
tableScene->render(&painter);
painter.end();
@ -453,7 +453,7 @@ void TableWindow::PngFile(const QString &name) const
QPainter painter(&image);
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, qApp->toPixel(widthMainLine), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setBrush ( QBrush ( Qt::NoBrush ) );
tableScene->render(&painter);
image.save(name);
@ -477,7 +477,7 @@ void TableWindow::PdfFile(const QString &name) const
}
painter.setFont( QFont( "Arial", 8, QFont::Normal ) );
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, qApp->toPixel(widthMainLine), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine()), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
painter.setBrush ( QBrush ( Qt::NoBrush ) );
tableScene->render(&painter);
painter.end();

View file

@ -54,7 +54,7 @@ void VAbstractSpline::ChangedActivDraw(const QString &newName)
selectable = false;
currentColor = Qt::gray;
}
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, selectable);
this->setAcceptHoverEvents (selectable);
emit setEnabledPoint(selectable);
@ -75,13 +75,13 @@ void VAbstractSpline::SetFactor(qreal factor)
void VAbstractSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())/factor));
}
void VAbstractSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
}
QVariant VAbstractSpline::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)

View file

@ -196,7 +196,7 @@ protected:
{
currentColor = color;
}
item->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
item->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
}
}
private:

View file

@ -42,7 +42,7 @@ VToolArc::VToolArc(VPattern *doc, VContainer *data, quint32 id, const Valentina:
path.addPath(arc->GetPath());
path.setFillRule( Qt::WindingFill );
this->setPath(path);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true);
@ -155,7 +155,7 @@ void VToolArc::ChangedActivDraw(const QString &newName)
selectable = false;
currentColor = Qt::gray;
}
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, selectable);
this->setAcceptHoverEvents (selectable);
VDrawTool::ChangedActivDraw(newName);
@ -218,14 +218,14 @@ void VToolArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VToolArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())/factor));
}
//cppcheck-suppress unusedFunction
void VToolArc::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
}
void VToolArc::RemoveReferens()
@ -278,7 +278,7 @@ void VToolArc::SaveDialog(QDomElement &domElement)
void VToolArc::RefreshGeometry()
{
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
const VArc *arc = VAbstractTool::data.GeometricObject<const VArc *>(id);
QPainterPath path;
path.addPath(arc->GetPath());

View file

@ -185,8 +185,8 @@ void VToolCutArc::ChangedActivDraw(const QString &newName)
secondArc->setFlag(QGraphicsItem::ItemIsSelectable, false);
secondArc->setAcceptHoverEvents(false);
}
firstArc->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
secondArc->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
firstArc->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
secondArc->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
VToolPoint::ChangedActivDraw(newName);
}

View file

@ -45,7 +45,7 @@ VToolLine::VToolLine(VPattern *doc, VContainer *data, quint32 id, quint32 firstP
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor, LineStyle()));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
if (typeCreation == Valentina::FromGui)
{
@ -142,7 +142,7 @@ void VToolLine::ChangedActivDraw(const QString &newName)
selectable = false;
currentColor = Qt::gray;
}
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor, LineStyle()));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
this->setAcceptHoverEvents (selectable);
VDrawTool::ChangedActivDraw(newName);
}
@ -177,13 +177,13 @@ void VToolLine::RefreshDataInFile()
void VToolLine::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)/factor, LineStyle()));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())/factor, LineStyle()));
}
void VToolLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor, LineStyle()));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
}
void VToolLine::RemoveReferens()
@ -245,5 +245,5 @@ void VToolLine::RefreshGeometry()
const VPointF *first = VAbstractTool::data.GeometricObject<const VPointF *>(firstPoint);
const VPointF *second = VAbstractTool::data.GeometricObject<const VPointF *>(secondPoint);
this->setLine(QLineF(first->toQPointF(), second->toQPointF()));
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor, LineStyle()));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
}

View file

@ -39,7 +39,7 @@ VToolLinePoint::VToolLinePoint(VPattern *doc, VContainer *data, const quint32 &i
QPointF point1 = data->GeometricObject<const VPointF *>(basePointId)->toQPointF();
QPointF point2 = data->GeometricObject<const VPointF *>(id)->toQPointF();
mainLine = new QGraphicsLineItem(QLineF(point1 - point2, QPointF()), this);
mainLine->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor, LineStyle()));
mainLine->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
}
@ -53,13 +53,13 @@ void VToolLinePoint::ChangedActivDraw(const QString &newName)
{
currentColor = Qt::gray;
}
mainLine->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor, LineStyle()));
mainLine->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
VToolPoint::ChangedActivDraw(newName);
}
void VToolLinePoint::RefreshGeometry()
{
mainLine->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor, LineStyle()));
mainLine->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor, LineStyle()));
VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
QPointF point = VDrawTool::data.GeometricObject<const VPointF *>(id)->toQPointF();
QPointF basePoint = VDrawTool::data.GeometricObject<const VPointF *>(basePointId)->toQPointF();

View file

@ -30,9 +30,27 @@
const QString VToolPoint::TagName = QStringLiteral("point");
#define DefRadius 2.0//mm
VToolPoint::VToolPoint(VPattern *doc, VContainer *data, quint32 id, QGraphicsItem *parent):VDrawTool(doc, data, id),
QGraphicsEllipseItem(parent), radius(qApp->toPixel(2)), namePoint(0), lineName(0)
QGraphicsEllipseItem(parent), radius(DefRadius), namePoint(0), lineName(0)
{
switch(qApp->patternUnit())
{
case Valentina::Mm:
radius = qApp->toPixel(DefRadius);
break;
case Valentina::Cm:
radius = qApp->toPixel(DefRadius/10.0);
break;
case Valentina::Inch:
radius = qApp->toPixel(DefRadius/25.4);
break;
default:
radius = qApp->toPixel(DefRadius);
break;
}
namePoint = new VGraphicsSimpleTextItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::ShowContextMenu);
namePoint->setBrush(Qt::black);
@ -81,7 +99,7 @@ void VToolPoint::ChangedActivDraw(const QString &newName)
selectable = false;
currentColor = Qt::gray;
}
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, selectable);
this->setAcceptHoverEvents (selectable);
namePoint->setFlag(QGraphicsItem::ItemIsMovable, selectable);
@ -89,7 +107,7 @@ void VToolPoint::ChangedActivDraw(const QString &newName)
namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, selectable);
namePoint->setBrush(QBrush(currentColor));
namePoint->setAcceptHoverEvents(selectable);
lineName->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
lineName->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
VDrawTool::ChangedActivDraw(newName);
}
@ -121,31 +139,29 @@ void VToolPoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VToolPoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())/factor));
}
void VToolPoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
}
void VToolPoint::RefreshPointGeometry(const VPointF &point)
{
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
QRectF rec = QRectF(0, 0, radius*2/factor, radius*2/factor);
rec.translate(-rec.center().x(), -rec.center().y());
this->setRect(rec);
this->setPos(point.toQPointF());
disconnect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this,
&VToolPoint::NameChangePosition);
disconnect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, &VToolPoint::NameChangePosition);
QFont font = namePoint->font();
font.setPointSize(static_cast<qint32>(namePoint->FontSize()/factor));
namePoint->setFont(font);
namePoint->setText(point.name());
namePoint->setPos(QPointF(point.mx(), point.my()));
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this,
&VToolPoint::NameChangePosition);
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, &VToolPoint::NameChangePosition);
RefreshLine();
}
@ -158,11 +174,11 @@ void VToolPoint::RefreshLine()
lineName->setLine(QLineF(p1, pRec - scenePos()));
if (currentColor == Qt::gray)
{
lineName->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
lineName->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
}
else
{
lineName->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor));
lineName->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor));
}
if (QLineF(p1, pRec - scenePos()).length() <= qApp->toPixel(4))
{

View file

@ -150,7 +150,7 @@ void VToolSinglePoint::SaveDialog(QDomElement &domElement)
void VToolSinglePoint::setColorLabel(const Qt::GlobalColor &color)
{
namePoint->setBrush(color);
lineName->setPen(QPen(color, qApp->toPixel(widthHairLine)/factor));
lineName->setPen(QPen(color, qApp->toPixel(qApp->widthHairLine())/factor));
}
void VToolSinglePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event )

View file

@ -40,7 +40,7 @@ VToolSpline::VToolSpline(VPattern *doc, VContainer *data, quint32 id, const Vale
path.addPath(spl->GetPath());
path.setFillRule( Qt::WindingFill );
this->setPath(path);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true);
@ -256,7 +256,7 @@ void VToolSpline::SaveDialog(QDomElement &domElement)
void VToolSpline::RefreshGeometry()
{
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
const VSpline *spl = VAbstractTool::data.GeometricObject<const VSpline *>(id);
QPainterPath path;
path.addPath(spl->GetPath());

View file

@ -39,7 +39,7 @@ VToolSplinePath::VToolSplinePath(VPattern *doc, VContainer *data, quint32 id, co
path.addPath(splPath->GetPath());
path.setFillRule( Qt::WindingFill );
this->setPath(path);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/factor));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true);
@ -284,7 +284,7 @@ void VToolSplinePath::SaveDialog(QDomElement &domElement)
void VToolSplinePath::RefreshGeometry()
{
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
const VSplinePath *splPath = VAbstractTool::data.GeometricObject<const VSplinePath *>(id);
QPainterPath path;
path.addPath(splPath->GetPath());

View file

@ -152,7 +152,7 @@ QPointF VToolTriangle::FindPoint(const QPointF &axisP1, const QPointF &axisP2, c
if (c*c < a*a + b*b)
{
//Still don't know why this code handled. Need to think about that.
qWarning()<<tr("Can't find point.")<<Q_FUNC_INFO;
qWarning()<<"Can't find point."<<Q_FUNC_INFO;
return line.p2();
}
}

View file

@ -39,7 +39,7 @@ VNodeArc::VNodeArc(VPattern *doc, VContainer *data, quint32 id, quint32 idArc, c
:VAbstractNode(doc, data, id, idArc, idTool, qoParent), QGraphicsPathItem(parent)
{
RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui)
{
@ -129,13 +129,13 @@ void VNodeArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
}
void VNodeArc::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
}
void VNodeArc::RefreshGeometry()

View file

@ -44,7 +44,7 @@ VNodePoint::VNodePoint(VPattern *doc, VContainer *data, quint32 id, quint32 idPo
lineName = new QGraphicsLineItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this,
&VNodePoint::NameChangePosition);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
this->setBrush(QBrush(Qt::NoBrush));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setAcceptHoverEvents(true);
@ -146,13 +146,13 @@ void VNodePoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodePoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
}
void VNodePoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
}

View file

@ -40,7 +40,7 @@ VNodeSpline::VNodeSpline(VPattern *doc, VContainer *data, quint32 id, quint32 id
:VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
{
RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui)
{
@ -133,13 +133,13 @@ void VNodeSpline::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
}
void VNodeSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
}
void VNodeSpline::RefreshGeometry()

View file

@ -40,7 +40,7 @@ VNodeSplinePath::VNodeSplinePath(VPattern *doc, VContainer *data, quint32 id, qu
:VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
{
RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui)
{
@ -136,13 +136,13 @@ void VNodeSplinePath::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeSplinePath::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
}
void VNodeSplinePath::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
}
void VNodeSplinePath::RefreshGeometry()

View file

@ -41,9 +41,8 @@ QWidget *TextDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem
Q_UNUSED(option);
Q_UNUSED(index);
QLineEdit *editor = new QLineEdit(parent);
QRegExp re("^(([^+ -/()\\^*%:;\"\'=.,><0-9]){1,1}[^+ -/()\\^*%:;\"\'=><]([0-9]){0,}){0,}$");
QRegExpValidator *v = new QRegExpValidator(re);
editor->setValidator( v );
//Same regex pattern in xsd file
editor->setValidator( new QRegExpValidator(QRegExp("([\\p{L}]|[^0-9])[_\\p{L}0-9]*")) );
connect(editor, &QLineEdit::editingFinished, this, &TextDelegate::commitAndCloseEditor);
return editor;
}

View file

@ -38,13 +38,16 @@
const qreal VApplication::PrintDPI = 96.0;
// reimplemented from QApplication so we can throw exceptions in slots
VApplication::VApplication(int &argc, char **argv)
: QApplication(argc, argv), _patternUnit(Valentina::Cm), _patternType(Pattern::Individual)
{
#define DefWidth 1.2//mm
VApplication::VApplication(int &argc, char **argv)
: QApplication(argc, argv), _patternUnit(Valentina::Cm), _patternType(Pattern::Individual),
_widthMainLine(DefWidth), _widthHairLine(DefWidth/3.0)
{
InitLineWidth();
}
// reimplemented from QApplication so we can throw exceptions in slots
bool VApplication::notify(QObject *receiver, QEvent *event)
{
try
@ -157,13 +160,41 @@ QString VApplication::pathToTables() const
QString VApplication::translationsPath() const
{
#ifdef Q_OS_WIN
return QApplication::applicationDirPath() + QStringLiteral("/translations");
#else
#ifdef QT_DEBUG
return QApplication::applicationDirPath() + QStringLiteral("/translations");
#ifdef Q_OS_WIN
return QApplication::applicationDirPath() + QStringLiteral("/translations");
#else
#ifdef QT_DEBUG
return QApplication::applicationDirPath() + QStringLiteral("/translations");
#else
return QStringLiteral("/usr/share/valentina/translations");
#endif
#endif
}
void VApplication::InitLineWidth()
{
switch(_patternUnit)
{
case Valentina::Mm:
_widthMainLine = DefWidth;
break;
case Valentina::Cm:
_widthMainLine = DefWidth/10.0;
break;
case Valentina::Inch:
_widthMainLine = DefWidth/25.4;
break;
default:
_widthMainLine = DefWidth;
break;
}
_widthHairLine = _widthMainLine/3.0;
}
void VApplication::setPatternUnit(const Valentina::Units &patternUnit)
{
_patternUnit = patternUnit;
InitLineWidth();
}

View file

@ -59,19 +59,24 @@ public:
* @param event event.
* @return value that is returned from the receiver's event handler.
*/
virtual bool notify(QObject * receiver, QEvent * event);
Valentina::Units patternUnit() const;
void setPatternUnit(const Valentina::Units &patternUnit);
virtual bool notify(QObject * receiver, QEvent * event);
Valentina::Units patternUnit() const;
void setPatternUnit(const Valentina::Units &patternUnit);
Pattern::Measurements patternType() const;
void setPatternType(const Pattern::Measurements &patternType);
double toPixel(double unit) const;
double fromPixel(double pix) const;
static const qreal PrintDPI;
QString translationsPath() const;
QString pathToTables() const;
void setPatternType(const Pattern::Measurements &patternType);
double toPixel(double unit) const;
double fromPixel(double pix) const;
static const qreal PrintDPI;
QString translationsPath() const;
QString pathToTables() const;
qreal widthMainLine() const;
qreal widthHairLine() const;
private:
Valentina::Units _patternUnit;
Valentina::Units _patternUnit;
Pattern::Measurements _patternType;
qreal _widthMainLine;
qreal _widthHairLine;
void InitLineWidth();
};
inline Valentina::Units VApplication::patternUnit() const
@ -79,11 +84,6 @@ inline Valentina::Units VApplication::patternUnit() const
return _patternUnit;
}
inline void VApplication::setPatternUnit(const Valentina::Units &patternUnit)
{
_patternUnit = patternUnit;
}
inline Pattern::Measurements VApplication::patternType() const
{
return _patternType;
@ -94,5 +94,14 @@ inline void VApplication::setPatternType(const Pattern::Measurements &patternTyp
_patternType = patternType;
}
inline qreal VApplication::widthMainLine() const
{
return _widthMainLine;
}
inline qreal VApplication::widthHairLine() const
{
return _widthHairLine;
}
#endif // VAPPLICATION_H

View file

@ -42,7 +42,7 @@ VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePoint:
QRectF rec = QRectF(0, 0, radius*2, radius*2);
rec.translate(-rec.center().x(), -rec.center().y());
this->setRect(rec);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
this->setBrush(QBrush(Qt::NoBrush));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsMovable, true);
@ -53,20 +53,20 @@ VControlPointSpline::VControlPointSpline(const qint32 &indexSpline, SplinePoint:
QPointF p1, p2;
VAbstractTool::LineIntersectCircle(QPointF(), radius, QLineF( QPointF(), splinePoint-controlPoint), p1, p2);
controlLine = new QGraphicsLineItem(QLineF(splinePoint-controlPoint, p1), this);
controlLine->setPen(QPen(Qt::red, qApp->toPixel(widthHairLine)));
controlLine->setPen(QPen(Qt::red, qApp->toPixel(qApp->widthHairLine())));
controlLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
}
void VControlPointSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
}
void VControlPointSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
}
QVariant VControlPointSpline::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
@ -95,14 +95,14 @@ void VControlPointSpline::setEnabledPoint(bool enable)
{
if (enable == true)
{
this->setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
this->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsMovable, true);
this->setAcceptHoverEvents(true);
}
else
{
this->setPen(QPen(Qt::gray, qApp->toPixel(widthHairLine)));
this->setPen(QPen(Qt::gray, qApp->toPixel(qApp->widthHairLine())));
this->setFlag(QGraphicsItem::ItemIsSelectable, false);
this->setFlag(QGraphicsItem::ItemIsMovable, false);
this->setAcceptHoverEvents(false);

View file

@ -63,19 +63,19 @@ void VItem::checkItemChange()
QRectF myrect = sceneBoundingRect();
if ( rect.contains( myrect )==true )
{
setPen(QPen(Qt::black, qApp->toPixel(widthMainLine)));
setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
emit itemOut( numInOutList, false );
}
else
{
setPen(QPen(Qt::red, qApp->toPixel(widthMainLine)));
setPen(QPen(Qt::red, qApp->toPixel(qApp->widthMainLine())));
emit itemOut( numInOutList, true );
}
QList<QGraphicsItem *> list = QGraphicsItem::collidingItems ();
if ( list.size() - 2 > 0 )
{
list.append( this );
setPen(QPen(Qt::red, qApp->toPixel(widthMainLine)));
setPen(QPen(Qt::red, qApp->toPixel(qApp->widthMainLine())));
emit itemColliding( list, 1 );//Detail intersect with other details.
}
else

View file

@ -34,11 +34,11 @@ VSimpleArc::VSimpleArc(quint32 id, Qt::GlobalColor *currentColor, qreal *factor,
{
if (factor == nullptr)
{
setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
}
else
{
setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/ *factor));
setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/ *factor));
}
setFlag(QGraphicsItem::ItemIsSelectable, true);
setAcceptHoverEvents(true);
@ -58,11 +58,11 @@ void VSimpleArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
if (factor == nullptr)
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthMainLine())));
}
else
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthMainLine)/ *factor));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthMainLine())/ *factor));
}
}
@ -71,10 +71,10 @@ void VSimpleArc::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
if (factor == nullptr)
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthHairLine())));
}
else
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthHairLine)/ *factor));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthHairLine())/ *factor));
}
}

View file

@ -34,11 +34,11 @@ VSimpleSpline::VSimpleSpline(quint32 id, Qt::GlobalColor *currentColor, qreal *f
{
if (factor == nullptr)
{
setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)));
setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())));
}
else
{
setPen(QPen(Qt::black, qApp->toPixel(widthHairLine)/ *factor));
setPen(QPen(Qt::black, qApp->toPixel(qApp->widthHairLine())/ *factor));
}
setFlag(QGraphicsItem::ItemIsSelectable, true);
setAcceptHoverEvents(true);
@ -48,7 +48,7 @@ void VSimpleSpline::ChangedActivDraw(const bool &flag)
{
setFlag(QGraphicsItem::ItemIsSelectable, flag);
setAcceptHoverEvents(flag);
setPen(QPen(*currentColor, qApp->toPixel(widthHairLine)/ *factor));
setPen(QPen(*currentColor, qApp->toPixel(qApp->widthHairLine())/ *factor));
}
void VSimpleSpline::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
@ -65,11 +65,11 @@ void VSimpleSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
if (factor == nullptr)
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthMainLine)));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthMainLine())));
}
else
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthMainLine)/ *factor));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthMainLine())/ *factor));
}
}
@ -78,10 +78,10 @@ void VSimpleSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
if (factor == nullptr)
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthHairLine)));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthHairLine())));
}
else
{
this->setPen(QPen(*currentColor, qApp->toPixel(widthHairLine)/ *factor));
this->setPen(QPen(*currentColor, qApp->toPixel(qApp->widthHairLine())/ *factor));
}
}

View file

@ -46,11 +46,11 @@ void VSimpleSplinePath::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VSimpleSplinePath::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine)/ *factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())/ *factor));
}
void VSimpleSplinePath::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/ *factor));
this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/ *factor));
}

View file

@ -28,28 +28,58 @@
#include "vindividualmeasurements.h"
const QString VIndividualMeasurements::AttrIgnore = QStringLiteral("ignore");
const QString VIndividualMeasurements::AttrName = QStringLiteral("name");
const QString VIndividualMeasurements::AttrM_number = QStringLiteral("m_number");
const QString VIndividualMeasurements::AttrGui_text = QStringLiteral("gui_text");
const QString VIndividualMeasurements::AttrValue = QStringLiteral("value");
const QString VIndividualMeasurements::AttrIgnore = QStringLiteral("ignore");
const QString VIndividualMeasurements::AttrName = QStringLiteral("name");
const QString VIndividualMeasurements::AttrM_number = QStringLiteral("m_number");
const QString VIndividualMeasurements::AttrGui_text = QStringLiteral("gui_text");
const QString VIndividualMeasurements::AttrValue = QStringLiteral("value");
const QString VIndividualMeasurements::AttrDescription = QStringLiteral("description");
const QString VIndividualMeasurements::AttrLang = QStringLiteral("lang");
const QString VIndividualMeasurements::AttrFamily_name = QStringLiteral("family-name");
const QString VIndividualMeasurements::AttrGiven_name = QStringLiteral("given-name");
const QString VIndividualMeasurements::AttrBirth_date = QStringLiteral("birth-date");
const QString VIndividualMeasurements::AttrSex = QStringLiteral("sex");
const QString VIndividualMeasurements::TagLang = QStringLiteral("lang");
const QString VIndividualMeasurements::TagFamily_name = QStringLiteral("family-name");
const QString VIndividualMeasurements::TagGiven_name = QStringLiteral("given-name");
const QString VIndividualMeasurements::TagBirth_date = QStringLiteral("birth-date");
const QString VIndividualMeasurements::TagSex = QStringLiteral("sex");
const QString VIndividualMeasurements::TagUnit = QStringLiteral("unit");
VIndividualMeasurements::VIndividualMeasurements(VContainer *data):VDomDocument(data)
{
}
Valentina::Units VIndividualMeasurements::Unit()
Valentina::Units VIndividualMeasurements::Unit() const
{
const QString unit = UniqueTagText(AttrUnit, UnitCM);
const QString unit = UniqueTagText(TagUnit, UnitCM);
return VDomDocument::StrToUnits(unit);
}
void VIndividualMeasurements::setUnit(const Valentina::Units &unit)
{
const QDomNodeList nodeList = this->elementsByTagName(AttrUnit);
if (nodeList.isEmpty())
{
qWarning()<<"Can't save measurements units"<<Q_FUNC_INFO;
return;
}
else
{
const QDomNode domNode = nodeList.at(0);
if (domNode.isNull() == false && domNode.isElement())
{
const QDomElement domElement = domNode.toElement();
if (domElement.isNull() == false)
{
QDomElement parent = domElement.parentNode().toElement();
QDomElement newUnit = createElement(TagUnit);
QDomText newUnitValue = createTextNode(UnitsToStr(unit));
newUnit.appendChild(newUnitValue);
parent.replaceChild(newUnit, domElement);
return;
}
}
}
}
void VIndividualMeasurements::Measurements()
{
//head and neck
@ -209,25 +239,25 @@ void VIndividualMeasurements::Measurement(const QString &tag)
QString VIndividualMeasurements::Language()
{
return UniqueTagText(AttrLang, "en");
return UniqueTagText(TagLang, "en");
}
QString VIndividualMeasurements::FamilyName()
{
return UniqueTagText(AttrFamily_name, "");
return UniqueTagText(TagFamily_name, "");
}
QString VIndividualMeasurements::GivenName()
{
return UniqueTagText(AttrGiven_name, "");
return UniqueTagText(TagGiven_name, "");
}
QString VIndividualMeasurements::BirthDate()
{
return UniqueTagText(AttrBirth_date, "");
return UniqueTagText(TagBirth_date, "");
}
QString VIndividualMeasurements::Sex()
{
return UniqueTagText(AttrSex, "");
return UniqueTagText(TagSex, "");
}

View file

@ -35,7 +35,8 @@ class VIndividualMeasurements:public VDomDocument
{
public:
VIndividualMeasurements(VContainer *data);
Valentina::Units Unit();
Valentina::Units Unit() const;
void setUnit(const Valentina::Units &unit);
void Measurements();
void Measurement(const QString &tag);
QString Language();
@ -49,11 +50,13 @@ public:
static const QString AttrGui_text;
static const QString AttrValue;
static const QString AttrDescription;
static const QString AttrLang;
static const QString AttrFamily_name;
static const QString AttrGiven_name;
static const QString AttrBirth_date;
static const QString AttrSex;
static const QString TagLang;
static const QString TagFamily_name;
static const QString TagGiven_name;
static const QString TagBirth_date;
static const QString TagSex;
static const QString TagUnit;
};
#endif // VINDIVIDUALMEASUREMENTS_H

View file

@ -433,11 +433,17 @@ QString VPattern::MPath() const
void VPattern::SetPath(const QString &path)
{
if (path.isEmpty())
{
qWarning()<<"Path to measurements is empty"<<Q_FUNC_INFO;
return;
}
QDomNodeList list = elementsByTagName(TagMeasurements);
QDomElement element = list.at(0).toElement();
if (element.isElement())
{
SetAttribute(element, AttrPath, path);
emit patternChanged();
}
else
{