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

View File

@ -9,9 +9,9 @@
<xs:element name="notes" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element> <xs:element name="notes" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
<xs:element name="measurements" minOccurs="0" maxOccurs="unbounded"> <xs:element name="measurements" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <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="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:complexType>
</xs:element> </xs:element>
<xs:element name="increments" minOccurs="0" maxOccurs="1"> <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="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" 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="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:attribute name="base" type="xs:double" use="required"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -211,4 +211,22 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </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> </xs:schema>

View File

@ -4,7 +4,7 @@
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="description" type="xs:string"></xs:element> <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:element name="size">
<xs:complexType> <xs:complexType>
<xs:attribute name="base" type="xs:double"></xs:attribute> <xs:attribute name="base" type="xs:double"></xs:attribute>
@ -22,7 +22,7 @@
<xs:sequence> <xs:sequence>
<xs:element name="measurement" maxOccurs="unbounded"> <xs:element name="measurement" maxOccurs="unbounded">
<xs:complexType> <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="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="base" type="xs:double" 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> <xs:attribute name="height_increase" type="xs:double" use="required"></xs:attribute>
@ -36,4 +36,16 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </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> </xs:schema>

View File

@ -1,105 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<vit> <vit>
<lang>ru</lang> <lang>ru</lang>
<personal> <personal>
<family-name/> <family-name/>
<given-name/> <given-name/>
<birth-date/> <birth-date>1900-01-01</birth-date>
<sex/> <sex>male</sex>
<email>username@example.com</email>
</personal> </personal>
<body-measurements> <body-measurements>
<unit>mm</unit> <unit>mm</unit>
<head_and_neck> <head_and_neck>
<head_girth name="Огол" m_number="M1" value="0.0" gui_text="Обхват головы" description="Номер размерного признака 48"/> <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"/> <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> </head_and_neck>
<torso> <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"/> <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"/> <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"/> <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"/> <trunk_length name="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"/> <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"/> <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"/> <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"/> <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"/> <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"/> <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"/> <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"/> <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_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"/> <across_back_shoulder_width name="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"/> <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"/> <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"/> <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а"/> <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"/> <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_drop name="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"/> <shoulder_slope_degrees name="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"/> <front_shoulder_slope_length name="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"/> <back_shoulder_slope_length name="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"/> <front_shoulder_to_waist_length name="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"/> <back_shoulder_to_waist_length name="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"/> <front_neck_arc name="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"/> <back_neck_arc name="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"/> <front_upper-bust_arc name="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"/> <back_upper-bust_arc name="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"/> <front_waist_arc name="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"/> <back_waist_arc name="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"/> <front_upper-hip_arc name="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"/> <back_upper-hip_arc name="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"/> <front_hip_arc name="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"/> <back_hip_arc name="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"/> <chest_slope name="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"/> <back_slope name="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"/> <front_waist_slope name="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"/> <back_waist_slope name="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_upper-chest_height name="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"/> <front-neck_to_bust_height name="name" m_number="M49" value="0.0" gui_text="" description="" ignore="true"/>
</torso> </torso>
<arm> <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="Номер размерного признака "/> <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"/> <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"/> <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"/> <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"/> <underarm_length name="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"/> <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"/> <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_length name="Дрзап" m_number="M59" value="0.0" gui_text="Длина руки до запястья" description="Номер размерного признака 68"/>
</arm> </arm>
<hand> <hand>
<hand_width name="" m_number="M60" 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="" m_number="M61" 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="" m_number="M62" value="0.0" gui_text="" description="" ignore="true"/> <hand_girth name="name" m_number="M62" value="0.0" gui_text="" description="" ignore="true"/>
</hand> </hand>
<leg> <leg>
<thigh_girth name="Обед" m_number="M63" value="0.0" gui_text="Обхват бедра" description="Номер размерного признака 21"/> <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"/> <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"/> <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"/> <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"/> <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> </leg>
<foot> <foot>
<foot_width name="" m_number="M70" 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="" m_number="M71" value="0.0" gui_text="" description="" ignore="true"/> <foot_length name="name" m_number="M71" value="0.0" gui_text="" description="" ignore="true"/>
</foot> </foot>
<heights> <heights>
<height name="Р" m_number="M72" value="0.0" gui_text="Рост" description="Номер размерного признака 1"/> <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_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"/> <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"/> <high_hip_height name="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"/> <hip_height name="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_hip_height name="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"/> <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"/> <crotch_height name="Дн" m_number="M80" value="0.0" gui_text="Длина ноги по внутренней поверхности" description="Номер размерного признака 27"/>
</heights> </heights>
</body-measurements> </body-measurements>

View File

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

View File

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

View File

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

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>897</width> <width>979</width>
<height>566</height> <height>574</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -42,21 +42,42 @@
<number>0</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="tabStandard"> <widget class="QWidget" name="tabStandard">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="title"> <attribute name="title">
<string>Measurements</string> <string>Measurements</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_4">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <property name="spacing">
<number>6</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QLabel" name="label_5"> <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"> <property name="text">
<string>Load another measurements table</string> <string>Load another measurements table</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item alignment="Qt::AlignTop">
<widget class="QToolButton" name="toolButtonAnotherTable"> <widget class="QToolButton" name="toolButtonAnotherTable">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
</property> </property>
@ -69,10 +90,52 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QToolBox" name="toolBoxMeasurements">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="page">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>939</width>
<height>411</height>
</rect>
</property>
<attribute name="label">
<string>Personal information</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>6</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item> <item>
<widget class="QLabel" name="labelFamilyName"> <widget class="QLabel" name="labelFamilyName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>Family name</string> <string>Family name</string>
</property> </property>
@ -87,6 +150,12 @@
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
<widget class="QLabel" name="labelGivenName"> <widget class="QLabel" name="labelGivenName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>84</width> <width>84</width>
@ -107,6 +176,12 @@
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QLabel" name="labelBirthDate"> <widget class="QLabel" name="labelBirthDate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>84</width> <width>84</width>
@ -127,6 +202,12 @@
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_5">
<item> <item>
<widget class="QLabel" name="labelSex"> <widget class="QLabel" name="labelSex">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>84</width> <width>84</width>
@ -143,6 +224,53 @@
</item> </item>
</layout> </layout>
</item> </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>
<attribute name="label">
<string>Measurements</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QTableWidget" name="tableWidgetMeasurements"> <widget class="QTableWidget" name="tableWidgetMeasurements">
<property name="enabled"> <property name="enabled">
@ -221,6 +349,10 @@
</item> </item>
</layout> </layout>
</widget> </widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabIncrements"> <widget class="QWidget" name="tabIncrements">
<attribute name="title"> <attribute name="title">
<string>Increments</string> <string>Increments</string>

View File

@ -56,6 +56,7 @@ DialogIndividualMeasurements::DialogIndividualMeasurements(VContainer *data, con
ui->lineEditName->setText(_name); ui->lineEditName->setText(_name);
LoadIndividualTables(); LoadIndividualTables();
InitUnits();
CheckState(); CheckState();
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogIndividualMeasurements::CheckState); connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogIndividualMeasurements::CheckState);
@ -92,7 +93,7 @@ void DialogIndividualMeasurements::DialogAccepted()
if ( iMeasur.copy(_tablePath) == false ) if ( iMeasur.copy(_tablePath) == false )
{ {
QMessageBox::warning(this, tr("Could not create measurements file"), tr("Please try again or change file")); QMessageBox::warning(this, tr("Could not create measurements file"), tr("Please try again or change file"));
return; DialogRejected();
} }
} }
try try
@ -100,13 +101,25 @@ void DialogIndividualMeasurements::DialogAccepted()
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", _tablePath); VDomDocument::ValidateXML("://schema/individual_measurements.xsd", _tablePath);
VIndividualMeasurements m(data); VIndividualMeasurements m(data);
m.setContent(_tablePath); 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()); 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) catch(VException &e)
{ {
e.CriticalMessageBox(tr("File error."), this); e.CriticalMessageBox(tr("File error."), this);
qWarning()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO; qWarning()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
return; DialogRejected();
} }
accept(); accept();
} }
@ -135,6 +148,7 @@ void DialogIndividualMeasurements::CheckState()
ui->lineEditPathNewM->setEnabled(false); ui->lineEditPathNewM->setEnabled(false);
ui->toolButtonOpenNew->setEnabled(false); ui->toolButtonOpenNew->setEnabled(false);
ui->comboBoxLang->setEnabled(false); ui->comboBoxLang->setEnabled(false);
ui->comboBoxUnits->setEnabled(false);
if (ui->lineEditPathExistM->text().isEmpty() == false) if (ui->lineEditPathExistM->text().isEmpty() == false)
{ {
@ -146,6 +160,7 @@ void DialogIndividualMeasurements::CheckState()
ui->lineEditPathNewM->setEnabled(true); ui->lineEditPathNewM->setEnabled(true);
ui->toolButtonOpenNew->setEnabled(true); ui->toolButtonOpenNew->setEnabled(true);
ui->comboBoxLang->setEnabled(true); ui->comboBoxLang->setEnabled(true);
ui->comboBoxUnits->setEnabled(true);
ui->toolButtonOpenExist->setEnabled(false); ui->toolButtonOpenExist->setEnabled(false);
ui->lineEditPathExistM->setEnabled(false); ui->lineEditPathExistM->setEnabled(false);
@ -259,3 +274,9 @@ void DialogIndividualMeasurements::NewTable()
ui->lineEditPathNewM->setToolTip(name); ui->lineEditPathNewM->setToolTip(name);
CheckState(); 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 LoadIndividualTables();
void OpenTable(); void OpenTable();
void NewTable(); void NewTable();
void InitUnits();
}; };
inline QString DialogIndividualMeasurements::name() const inline QString DialogIndividualMeasurements::name() const

View File

@ -6,14 +6,14 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>358</width> <width>397</width>
<height>247</height> <height>280</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Dialog</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
@ -76,7 +76,7 @@
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QRadioButton" name="radioButtonNewM"> <widget class="QRadioButton" name="radioButtonNewM">
<property name="text"> <property name="text">
@ -90,8 +90,6 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
@ -119,6 +117,20 @@
</item> </item>
</layout> </layout>
</item> </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> <item>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
@ -129,7 +141,11 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="lineEditPathNewM"/> <widget class="QLineEdit" name="lineEditPathNewM">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QToolButton" name="toolButtonOpenNew"> <widget class="QToolButton" name="toolButtonOpenNew">
@ -147,8 +163,6 @@
</item> </item>
</layout> </layout>
</item> </item>
</layout>
</item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation"> <property name="orientation">

View File

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

View File

@ -258,7 +258,7 @@ void DialogTool::ChangeCurrentText(QComboBox *box, const QString &value)
} }
else 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(); CreateActions();
CreateMenus(); CreateMenus();
ToolBarDraws(); ToolBarDraws();
InitToolButtons();
sceneDraw = new VMainGraphicsScene(); sceneDraw = new VMainGraphicsScene();
currentScene = sceneDraw; currentScene = sceneDraw;
@ -77,26 +78,6 @@ MainWindow::MainWindow(QWidget *parent)
helpLabel = new QLabel(QObject::tr("Create new pattern piece to start working.")); helpLabel = new QLabel(QObject::tr("Create new pattern piece to start working."));
ui->statusBar->addWidget(helpLabel); 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(); pattern = new VContainer();
doc = new VPattern(pattern, comboBoxDraws, &mode); doc = new VPattern(pattern, comboBoxDraws, &mode);
@ -159,7 +140,7 @@ void MainWindow::ActionNewDraw()
} }
if (doc->appendDraw(patternPieceName) == false) if (doc->appendDraw(patternPieceName) == false)
{ {
qWarning()<<tr("Error creating pattern with the name ")<<patternPieceName<<"."; qWarning()<<"Error creating pattern with the name "<<patternPieceName<<".";
return; return;
} }
disconnect(comboBoxDraws, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), disconnect(comboBoxDraws, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
@ -577,9 +558,8 @@ void MainWindow::ToolBarOption()
void MainWindow::ToolBarDraws() void MainWindow::ToolBarDraws()
{ {
QLabel * labelNameDraw = new QLabel; QLabel *labelPtternPieceName = new QLabel(tr("Pattern Piece: "));
labelNameDraw ->setText(tr("Pattern Piece: ")); ui->toolBarDraws->addWidget(labelPtternPieceName);
ui->toolBarDraws->addWidget(labelNameDraw);
comboBoxDraws = new QComboBox; comboBoxDraws = new QComboBox;
ui->toolBarDraws->addWidget(comboBoxDraws); ui->toolBarDraws->addWidget(comboBoxDraws);
@ -602,6 +582,29 @@ void MainWindow::ToolBarDraws()
ui->actionLayout->setEnabled(false); 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 ) void MainWindow::currentDrawChanged( int index )
{ {
if (index != -1) if (index != -1)
@ -1119,7 +1122,7 @@ bool MainWindow::SavePattern(const QString &fileName)
} }
if (fileName.isEmpty()) if (fileName.isEmpty())
{ {
qWarning()<<tr("Got empty file name."); qWarning()<<"Got empty file name.";
return false; return false;
} }
//Writing in temporary file //Writing in temporary file
@ -1130,6 +1133,7 @@ bool MainWindow::SavePattern(const QString &fileName)
{ {
const int Indent = 4; const int Indent = 4;
QTextStream out(&tempFile); QTextStream out(&tempFile);
out.setCodec("UTF-8");
doc->save(out, Indent); doc->save(out, Indent);
tempFile.close(); tempFile.close();
} }
@ -1146,7 +1150,7 @@ bool MainWindow::SavePattern(const QString &fileName)
{ {
if ( tempFile.copy(patternFile.fileName()) == false ) 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); tempOfPattern.copy(fileName);
result = false; result = false;
} }
@ -1157,7 +1161,7 @@ bool MainWindow::SavePattern(const QString &fileName)
} }
else else
{ {
qWarning()<<tr("Could not remove pattern file")<<Q_FUNC_INFO; qWarning()<<"Could not remove pattern file"<<Q_FUNC_INFO;
result = false; result = false;
} }
if (result) if (result)
@ -1179,7 +1183,7 @@ void MainWindow::AutoSavePattern()
QString autofile = curFile +".autosave"; QString autofile = curFile +".autosave";
if (SavePattern(autofile) == false) 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. * @brief ToolBarDraws enable draw toolbar.
*/ */
void ToolBarDraws(); void ToolBarDraws();
void InitToolButtons();
/** /**
* @brief CanselTool cansel tool. * @brief CanselTool cansel tool.
*/ */

View File

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

View File

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

View File

@ -54,7 +54,7 @@ void VAbstractSpline::ChangedActivDraw(const QString &newName)
selectable = false; selectable = false;
currentColor = Qt::gray; 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->setFlag(QGraphicsItem::ItemIsSelectable, selectable);
this->setAcceptHoverEvents (selectable); this->setAcceptHoverEvents (selectable);
emit setEnabledPoint(selectable); emit setEnabledPoint(selectable);
@ -75,13 +75,13 @@ void VAbstractSpline::SetFactor(qreal factor)
void VAbstractSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VAbstractSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) void VAbstractSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) QVariant VAbstractSpline::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)

View File

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

View File

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

View File

@ -185,8 +185,8 @@ void VToolCutArc::ChangedActivDraw(const QString &newName)
secondArc->setFlag(QGraphicsItem::ItemIsSelectable, false); secondArc->setFlag(QGraphicsItem::ItemIsSelectable, false);
secondArc->setAcceptHoverEvents(false); secondArc->setAcceptHoverEvents(false);
} }
firstArc->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor)); firstArc->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
secondArc->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor)); secondArc->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
VToolPoint::ChangedActivDraw(newName); 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::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(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) if (typeCreation == Valentina::FromGui)
{ {
@ -142,7 +142,7 @@ void VToolLine::ChangedActivDraw(const QString &newName)
selectable = false; selectable = false;
currentColor = Qt::gray; 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); this->setAcceptHoverEvents (selectable);
VDrawTool::ChangedActivDraw(newName); VDrawTool::ChangedActivDraw(newName);
} }
@ -177,13 +177,13 @@ void VToolLine::RefreshDataInFile()
void VToolLine::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VToolLine::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) void VToolLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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() void VToolLine::RemoveReferens()
@ -245,5 +245,5 @@ void VToolLine::RefreshGeometry()
const VPointF *first = VAbstractTool::data.GeometricObject<const VPointF *>(firstPoint); const VPointF *first = VAbstractTool::data.GeometricObject<const VPointF *>(firstPoint);
const VPointF *second = VAbstractTool::data.GeometricObject<const VPointF *>(secondPoint); const VPointF *second = VAbstractTool::data.GeometricObject<const VPointF *>(secondPoint);
this->setLine(QLineF(first->toQPointF(), second->toQPointF())); 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 point1 = data->GeometricObject<const VPointF *>(basePointId)->toQPointF();
QPointF point2 = data->GeometricObject<const VPointF *>(id)->toQPointF(); QPointF point2 = data->GeometricObject<const VPointF *>(id)->toQPointF();
mainLine = new QGraphicsLineItem(QLineF(point1 - point2, QPointF()), this); 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); mainLine->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
} }
@ -53,13 +53,13 @@ void VToolLinePoint::ChangedActivDraw(const QString &newName)
{ {
currentColor = Qt::gray; 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); VToolPoint::ChangedActivDraw(newName);
} }
void VToolLinePoint::RefreshGeometry() 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)); VToolPoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject<const VPointF *>(id));
QPointF point = VDrawTool::data.GeometricObject<const VPointF *>(id)->toQPointF(); QPointF point = VDrawTool::data.GeometricObject<const VPointF *>(id)->toQPointF();
QPointF basePoint = VDrawTool::data.GeometricObject<const VPointF *>(basePointId)->toQPointF(); QPointF basePoint = VDrawTool::data.GeometricObject<const VPointF *>(basePointId)->toQPointF();

View File

@ -30,9 +30,27 @@
const QString VToolPoint::TagName = QStringLiteral("point"); 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), 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); namePoint = new VGraphicsSimpleTextItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::ShowContextMenu); connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VToolPoint::ShowContextMenu);
namePoint->setBrush(Qt::black); namePoint->setBrush(Qt::black);
@ -81,7 +99,7 @@ void VToolPoint::ChangedActivDraw(const QString &newName)
selectable = false; selectable = false;
currentColor = Qt::gray; 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->setFlag(QGraphicsItem::ItemIsSelectable, selectable);
this->setAcceptHoverEvents (selectable); this->setAcceptHoverEvents (selectable);
namePoint->setFlag(QGraphicsItem::ItemIsMovable, selectable); namePoint->setFlag(QGraphicsItem::ItemIsMovable, selectable);
@ -89,7 +107,7 @@ void VToolPoint::ChangedActivDraw(const QString &newName)
namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, selectable); namePoint->setFlag(QGraphicsItem::ItemSendsGeometryChanges, selectable);
namePoint->setBrush(QBrush(currentColor)); namePoint->setBrush(QBrush(currentColor));
namePoint->setAcceptHoverEvents(selectable); namePoint->setAcceptHoverEvents(selectable);
lineName->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor)); lineName->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
VDrawTool::ChangedActivDraw(newName); VDrawTool::ChangedActivDraw(newName);
} }
@ -121,31 +139,29 @@ void VToolPoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VToolPoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VToolPoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) void VToolPoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) 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); QRectF rec = QRectF(0, 0, radius*2/factor, radius*2/factor);
rec.translate(-rec.center().x(), -rec.center().y()); rec.translate(-rec.center().x(), -rec.center().y());
this->setRect(rec); this->setRect(rec);
this->setPos(point.toQPointF()); this->setPos(point.toQPointF());
disconnect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, disconnect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, &VToolPoint::NameChangePosition);
&VToolPoint::NameChangePosition);
QFont font = namePoint->font(); QFont font = namePoint->font();
font.setPointSize(static_cast<qint32>(namePoint->FontSize()/factor)); font.setPointSize(static_cast<qint32>(namePoint->FontSize()/factor));
namePoint->setFont(font); namePoint->setFont(font);
namePoint->setText(point.name()); namePoint->setText(point.name());
namePoint->setPos(QPointF(point.mx(), point.my())); namePoint->setPos(QPointF(point.mx(), point.my()));
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, &VToolPoint::NameChangePosition);
&VToolPoint::NameChangePosition);
RefreshLine(); RefreshLine();
} }
@ -158,11 +174,11 @@ void VToolPoint::RefreshLine()
lineName->setLine(QLineF(p1, pRec - scenePos())); lineName->setLine(QLineF(p1, pRec - scenePos()));
if (currentColor == Qt::gray) if (currentColor == Qt::gray)
{ {
lineName->setPen(QPen(currentColor, qApp->toPixel(widthHairLine)/factor)); lineName->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())/factor));
} }
else 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)) 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) void VToolSinglePoint::setColorLabel(const Qt::GlobalColor &color)
{ {
namePoint->setBrush(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 ) 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.addPath(spl->GetPath());
path.setFillRule( Qt::WindingFill ); path.setFillRule( Qt::WindingFill );
this->setPath(path); 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::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true); this->setAcceptHoverEvents(true);
@ -256,7 +256,7 @@ void VToolSpline::SaveDialog(QDomElement &domElement)
void VToolSpline::RefreshGeometry() 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); const VSpline *spl = VAbstractTool::data.GeometricObject<const VSpline *>(id);
QPainterPath path; QPainterPath path;
path.addPath(spl->GetPath()); path.addPath(spl->GetPath());

View File

@ -39,7 +39,7 @@ VToolSplinePath::VToolSplinePath(VPattern *doc, VContainer *data, quint32 id, co
path.addPath(splPath->GetPath()); path.addPath(splPath->GetPath());
path.setFillRule( Qt::WindingFill ); path.setFillRule( Qt::WindingFill );
this->setPath(path); 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::ItemIsSelectable, true);
this->setFlag(QGraphicsItem::ItemIsFocusable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);
this->setAcceptHoverEvents(true); this->setAcceptHoverEvents(true);
@ -284,7 +284,7 @@ void VToolSplinePath::SaveDialog(QDomElement &domElement)
void VToolSplinePath::RefreshGeometry() 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); const VSplinePath *splPath = VAbstractTool::data.GeometricObject<const VSplinePath *>(id);
QPainterPath path; QPainterPath path;
path.addPath(splPath->GetPath()); 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) if (c*c < a*a + b*b)
{ {
//Still don't know why this code handled. Need to think about that. //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(); 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) :VAbstractNode(doc, data, id, idArc, idTool, qoParent), QGraphicsPathItem(parent)
{ {
RefreshGeometry(); RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui) if (typeCreation == Valentina::FromGui)
{ {
@ -129,13 +129,13 @@ void VNodeArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VNodeArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
} }
void VNodeArc::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void VNodeArc::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
} }
void VNodeArc::RefreshGeometry() void VNodeArc::RefreshGeometry()

View File

@ -44,7 +44,7 @@ VNodePoint::VNodePoint(VPattern *doc, VContainer *data, quint32 id, quint32 idPo
lineName = new QGraphicsLineItem(this); lineName = new QGraphicsLineItem(this);
connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this, connect(namePoint, &VGraphicsSimpleTextItem::NameChangePosition, this,
&VNodePoint::NameChangePosition); &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->setBrush(QBrush(Qt::NoBrush));
this->setFlag(QGraphicsItem::ItemIsSelectable, true); this->setFlag(QGraphicsItem::ItemIsSelectable, true);
this->setAcceptHoverEvents(true); this->setAcceptHoverEvents(true);
@ -146,13 +146,13 @@ void VNodePoint::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodePoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VNodePoint::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
} }
void VNodePoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void VNodePoint::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(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) :VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
{ {
RefreshGeometry(); RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui) if (typeCreation == Valentina::FromGui)
{ {
@ -133,13 +133,13 @@ void VNodeSpline::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VNodeSpline::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
} }
void VNodeSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void VNodeSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
} }
void VNodeSpline::RefreshGeometry() 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) :VAbstractNode(doc, data, id, idSpline, idTool, qoParent), QGraphicsPathItem(parent)
{ {
RefreshGeometry(); RefreshGeometry();
this->setPen(QPen(baseColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(baseColor, qApp->toPixel(qApp->widthHairLine())));
if (typeCreation == Valentina::FromGui) if (typeCreation == Valentina::FromGui)
{ {
@ -136,13 +136,13 @@ void VNodeSplinePath::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void VNodeSplinePath::hoverMoveEvent(QGraphicsSceneHoverEvent *event) void VNodeSplinePath::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthMainLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthMainLine())));
} }
void VNodeSplinePath::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void VNodeSplinePath::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);
this->setPen(QPen(currentColor, qApp->toPixel(widthHairLine))); this->setPen(QPen(currentColor, qApp->toPixel(qApp->widthHairLine())));
} }
void VNodeSplinePath::RefreshGeometry() void VNodeSplinePath::RefreshGeometry()

View File

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

View File

@ -38,13 +38,16 @@
const qreal VApplication::PrintDPI = 96.0; const qreal VApplication::PrintDPI = 96.0;
// reimplemented from QApplication so we can throw exceptions in slots #define DefWidth 1.2//mm
VApplication::VApplication(int &argc, char **argv)
: QApplication(argc, argv), _patternUnit(Valentina::Cm), _patternType(Pattern::Individual)
{
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) bool VApplication::notify(QObject *receiver, QEvent *event)
{ {
try try
@ -167,3 +170,31 @@ QString VApplication::translationsPath() const
#endif #endif
#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

@ -69,9 +69,14 @@ public:
static const qreal PrintDPI; static const qreal PrintDPI;
QString translationsPath() const; QString translationsPath() const;
QString pathToTables() const; QString pathToTables() const;
qreal widthMainLine() const;
qreal widthHairLine() const;
private: private:
Valentina::Units _patternUnit; Valentina::Units _patternUnit;
Pattern::Measurements _patternType; Pattern::Measurements _patternType;
qreal _widthMainLine;
qreal _widthHairLine;
void InitLineWidth();
}; };
inline Valentina::Units VApplication::patternUnit() const inline Valentina::Units VApplication::patternUnit() const
@ -79,11 +84,6 @@ inline Valentina::Units VApplication::patternUnit() const
return _patternUnit; return _patternUnit;
} }
inline void VApplication::setPatternUnit(const Valentina::Units &patternUnit)
{
_patternUnit = patternUnit;
}
inline Pattern::Measurements VApplication::patternType() const inline Pattern::Measurements VApplication::patternType() const
{ {
return _patternType; return _patternType;
@ -94,5 +94,14 @@ inline void VApplication::setPatternType(const Pattern::Measurements &patternTyp
_patternType = patternType; _patternType = patternType;
} }
inline qreal VApplication::widthMainLine() const
{
return _widthMainLine;
}
inline qreal VApplication::widthHairLine() const
{
return _widthHairLine;
}
#endif // VAPPLICATION_H #endif // VAPPLICATION_H

View File

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

View File

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

View File

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

View File

@ -34,22 +34,52 @@ const QString VIndividualMeasurements::AttrM_number = QStringLiteral("m_numbe
const QString VIndividualMeasurements::AttrGui_text = QStringLiteral("gui_text"); const QString VIndividualMeasurements::AttrGui_text = QStringLiteral("gui_text");
const QString VIndividualMeasurements::AttrValue = QStringLiteral("value"); const QString VIndividualMeasurements::AttrValue = QStringLiteral("value");
const QString VIndividualMeasurements::AttrDescription = QStringLiteral("description"); const QString VIndividualMeasurements::AttrDescription = QStringLiteral("description");
const QString VIndividualMeasurements::AttrLang = QStringLiteral("lang");
const QString VIndividualMeasurements::AttrFamily_name = QStringLiteral("family-name"); const QString VIndividualMeasurements::TagLang = QStringLiteral("lang");
const QString VIndividualMeasurements::AttrGiven_name = QStringLiteral("given-name"); const QString VIndividualMeasurements::TagFamily_name = QStringLiteral("family-name");
const QString VIndividualMeasurements::AttrBirth_date = QStringLiteral("birth-date"); const QString VIndividualMeasurements::TagGiven_name = QStringLiteral("given-name");
const QString VIndividualMeasurements::AttrSex = QStringLiteral("sex"); 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) 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); 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() void VIndividualMeasurements::Measurements()
{ {
//head and neck //head and neck
@ -209,25 +239,25 @@ void VIndividualMeasurements::Measurement(const QString &tag)
QString VIndividualMeasurements::Language() QString VIndividualMeasurements::Language()
{ {
return UniqueTagText(AttrLang, "en"); return UniqueTagText(TagLang, "en");
} }
QString VIndividualMeasurements::FamilyName() QString VIndividualMeasurements::FamilyName()
{ {
return UniqueTagText(AttrFamily_name, ""); return UniqueTagText(TagFamily_name, "");
} }
QString VIndividualMeasurements::GivenName() QString VIndividualMeasurements::GivenName()
{ {
return UniqueTagText(AttrGiven_name, ""); return UniqueTagText(TagGiven_name, "");
} }
QString VIndividualMeasurements::BirthDate() QString VIndividualMeasurements::BirthDate()
{ {
return UniqueTagText(AttrBirth_date, ""); return UniqueTagText(TagBirth_date, "");
} }
QString VIndividualMeasurements::Sex() QString VIndividualMeasurements::Sex()
{ {
return UniqueTagText(AttrSex, ""); return UniqueTagText(TagSex, "");
} }

View File

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

View File

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