merged and resolved conflicts

--HG--
branch : develop
This commit is contained in:
Sabine Schmaltz 2014-04-08 10:51:16 +02:00
commit 18914c3b5b
241 changed files with 12309 additions and 7511 deletions

View file

@ -19,9 +19,20 @@ syntax: glob
# Ignore this directory. # Ignore this directory.
html/ html/
latex/ latex/
bin/
moc/
obj/
uic/
rcc/
# Ignore file used QtCreator for user profile. # Ignore file used QtCreator for user profile.
*.pro.user *.pro.user
# Ignore file Qt translation. # Ignore file Qt translation.
*.qm *.qm
# Ignore Mercurial .orig files
*.orig
# Ignore Makefile
Makefile

View file

@ -78,24 +78,24 @@ CONFIG(debug, debug|release){
-isystem "/usr/include/qt5/QtCore" -isystem "$${UI_DIR}" -isystem "$${MOC_DIR}" \ -isystem "/usr/include/qt5/QtCore" -isystem "$${UI_DIR}" -isystem "$${MOC_DIR}" \
-isystem "$${RCC_DIR}" \ -isystem "$${RCC_DIR}" \
-O0 -Wall -Wextra -pedantic -Weffc++ -Woverloaded-virtual -Wctor-dtor-privacy \ -O0 -Wall -Wextra -pedantic -Weffc++ -Woverloaded-virtual -Wctor-dtor-privacy \
-Wnon-virtual-dtor -Wold-style-cast -Wconversion -Winit-self \ -Wnon-virtual-dtor -Wold-style-cast -Wconversion -Winit-self -Wstack-protector \
-Wunreachable-code -Wcast-align -Wcast-qual -Wdisabled-optimization -Wfloat-equal \ -Wunreachable-code -Wcast-align -Wcast-qual -Wdisabled-optimization -Wfloat-equal \
-Wformat -Wformat=2 -Wformat-nonliteral -Wformat-security -Wformat-y2k \ -Wformat=2 -Wimport \
-Winvalid-pch -Wunsafe-loop-optimizations -Wlong-long -Wmissing-format-attribute \ -Winvalid-pch -Wunsafe-loop-optimizations -Wlong-long -Wmissing-format-attribute \
-Wmissing-include-dirs -Wpacked -Wredundant-decls \ -Wmissing-include-dirs -Wpacked -Wredundant-decls -Winline \
-Wswitch-default -Wswitch-enum -Wuninitialized -Wunused-parameter -Wvariadic-macros \ -Wswitch-default -Wswitch-enum -Wuninitialized -Wvariadic-macros \
-Wlogical-op -Wnoexcept \ -Wlogical-op -Wnoexcept -Wmissing-noreturn -Wpointer-arith\
-Wstrict-null-sentinel -Wstrict-overflow=5 -Wundef -Wno-unused -gdwarf-3 -Wstrict-null-sentinel -Wstrict-overflow=5 -Wundef -Wno-unused -gdwarf-3
} }
} else { } else {
*-g++{#Don't use additional GCC keys on Windows system. *-g++{#Don't use additional GCC keys on Windows system.
QMAKE_CXXFLAGS += -Og -Wall -Wextra -pedantic QMAKE_CXXFLAGS += -O0 -Wall -Wextra -pedantic
} }
} }
}else{ }else{
# Release # Release
*-g++{ *-g++{
QMAKE_CXXFLAGS += -O1 QMAKE_CXXFLAGS += -O2
} }
DEFINES += QT_NO_DEBUG_OUTPUT DEFINES += QT_NO_DEBUG_OUTPUT
@ -131,6 +131,10 @@ INSTALL_TRANSLATIONS += share/translations/valentina_ru.qm \
share/translations/valentina_he_IL.qm \ share/translations/valentina_he_IL.qm \
share/translations/valentina_fr.qm share/translations/valentina_fr.qm
INSTALL_STANDARD_MEASHUREMENTS += share/tables/standard/GOST_man_ru.vst
INSTALL_INDIVIDUAL_MEASHUREMENTS += share/tables/individual/indivindual_ru.vit
unix { unix {
#VARIABLES #VARIABLES
isEmpty(PREFIX) { isEmpty(PREFIX) {
@ -147,10 +151,16 @@ pixmaps.path = $$DATADIR/pixmaps/
pixmaps.files += dist/$${TARGET}.png pixmaps.files += dist/$${TARGET}.png
translations.path = $$DATADIR/$${TARGET}/translations/ translations.path = $$DATADIR/$${TARGET}/translations/
translations.files = $$INSTALL_TRANSLATIONS translations.files = $$INSTALL_TRANSLATIONS
standard.path = $$DATADIR/$${TARGET}/tables/standard/
standard.files = $$INSTALL_STANDARD_MEASHUREMENTS
individual.path = $$DATADIR/$${TARGET}/tables/individual/
individual.files = $$INSTALL_INDIVIDUAL_MEASHUREMENTS
INSTALLS += target \ INSTALLS += target \
desktop \ desktop \
pixmaps \ pixmaps \
translations translations \
standard \
individual
} }
!isEmpty(TRANSLATIONS): { !isEmpty(TRANSLATIONS): {
@ -187,3 +197,19 @@ for(DIR, INSTALL_TRANSLATIONS) {
} }
copyToDestdir($$tr_path, $$shell_path($$OUT_PWD/$$DESTDIR/translations)) copyToDestdir($$tr_path, $$shell_path($$OUT_PWD/$$DESTDIR/translations))
for(DIR, INSTALL_STANDARD_MEASHUREMENTS) {
#add these absolute paths to a variable which
#ends up as 'mkcommands = path1 path2 path3 ...'
st_path += $$PWD/$$DIR
}
copyToDestdir($$st_path, $$shell_path($$OUT_PWD/$$DESTDIR/tables/standard))
for(DIR, INSTALL_INDIVIDUAL_MEASHUREMENTS) {
#add these absolute paths to a variable which
#ends up as 'mkcommands = path1 path2 path3 ...'
ind_path += $$PWD/$$DIR
}
copyToDestdir($$ind_path, $$shell_path($$OUT_PWD/$$DESTDIR/tables/individual))

View file

@ -50,5 +50,7 @@
<file>icon/flags/he_IL.png</file> <file>icon/flags/he_IL.png</file>
<file>icon/flags/ru.png</file> <file>icon/flags/ru.png</file>
<file>icon/flags/uk.png</file> <file>icon/flags/uk.png</file>
<file>icon/Graduation.png</file>
<file>icon/individual.png</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -1,5 +1,7 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>schema/pattern.xsd</file> <file>schema/pattern.xsd</file>
<file>schema/individual_measurements.xsd</file>
<file>schema/standard_measurements.xsd</file>
</qresource> </qresource>
</RCC> </RCC>

View file

@ -0,0 +1,893 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="vit">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="xs:string"></xs:element>
<xs:element name="personal">
<xs:complexType>
<xs:sequence>
<xs:element name="family-name" type="xs:string"></xs:element>
<xs:element name="given-name" type="xs:string"></xs:element>
<xs:element name="birth-date" type="xs:date"></xs:element>
<xs:element name="sex" type="sex"></xs:element>
<xs:element name="email" type="emailAddress"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="body-measurements">
<xs:complexType>
<xs:sequence>
<xs:element name="unit" type="units"></xs:element>
<xs:element name="head_and_neck">
<xs:complexType>
<xs:sequence>
<xs:element name="head_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="mid_neck_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="neck_base_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="head_and_neck_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="torso">
<xs:complexType>
<xs:sequence>
<xs:element name="center_front_waist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="center_back_waist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="side_waist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="trunk_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="upper_chest_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="bust__girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="under_bust_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="waist_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="high_hip_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="hip_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="upper_front_chest_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_chest_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="across_front_shoulder_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="across_back_shoulder_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="upper_back_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="bustpoint_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="halter_bustpoint_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="neck_to_bustpoint">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="crotch_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="rise_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_drop">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_slope_degrees">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_shoulder_slope_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_shoulder_slope_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_shoulder_to_waist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_shoulder_to_waist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_neck_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_neck_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_upper-bust_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_upper-bust_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_waist_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_waist_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_upper-hip_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_upper-hip_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_hip_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_hip_arc">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="chest_slope">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_slope">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front_waist_slope">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="back_waist_slope">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front-neck_to_upper-chest_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="front-neck_to_bust_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="arm">
<xs:complexType>
<xs:sequence>
<xs:element name="armscye_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="elbow_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="upper-arm_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="wrist_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="scye_depth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_and_arm_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="underarm_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="cervicale_to_wrist_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="shoulder_to_elbow_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="arm_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="hand">
<xs:complexType>
<xs:sequence>
<xs:element name="hand_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="hand_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="hand_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="leg">
<xs:complexType>
<xs:sequence>
<xs:element name="thigh_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="mid_thigh_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="knee_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="calf_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="ankle_girth">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="knee_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="ankle_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="foot">
<xs:complexType>
<xs:sequence>
<xs:element name="foot_width">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="foot_length">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="heights">
<xs:complexType>
<xs:sequence>
<xs:element name="height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="cervicale_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="cervicale_to_knee_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="waist_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="high_hip_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="hip_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="waist_to_hip_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="waist_to_knee_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="crotch_height">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="m_number" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="value" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="description" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="ignore" type="xs:boolean"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="emailAddress">
<xs:restriction base="xs:string">
<xs:pattern value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="shortMeasurementName">
<xs:restriction base="xs:string">
<xs:pattern value="^([^0-9-*/^+=\s\(\)%:;!]){1,1}([^-*/^+=\s\(\)%:;!]){0,}$"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sex">
<xs:restriction base="xs:string">
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

@ -4,19 +4,26 @@
<xs:element name="pattern"> <xs:element name="pattern">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="author" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element> <xs:element name="author" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element> <xs:element name="description" 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="notes" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
<xs:element name="measurements" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="type" type="measurementsTypes" use="required"></xs:attribute>
<xs:attribute name="path" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="unit" type="units" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="increments" minOccurs="0" maxOccurs="1"> <xs:element name="increments" minOccurs="0" maxOccurs="1">
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="increment" minOccurs="0" maxOccurs="unbounded"> <xs:element name="increment" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="ksize" type="xs:double" use="required"></xs:attribute> <xs:attribute name="ksize" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="id" type="xs:long" 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>
@ -32,51 +39,51 @@
<xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="point" minOccurs="0" maxOccurs="unbounded"> <xs:element name="point" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="x" type="xs:double"></xs:attribute> <xs:attribute name="x" type="xs:double"></xs:attribute>
<xs:attribute name="y" type="xs:double"></xs:attribute> <xs:attribute name="y" type="xs:double"></xs:attribute>
<xs:attribute name="mx" type="xs:double"></xs:attribute> <xs:attribute name="mx" type="xs:double"></xs:attribute>
<xs:attribute name="my" type="xs:double"></xs:attribute> <xs:attribute name="my" type="xs:double"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="name" type="xs:string"></xs:attribute> <xs:attribute name="name" type="xs:string"></xs:attribute>
<xs:attribute name="firstPoint" type="xs:long"></xs:attribute> <xs:attribute name="firstPoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="secondPoint" type="xs:long"></xs:attribute> <xs:attribute name="secondPoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="thirdPoint" type="xs:long"></xs:attribute> <xs:attribute name="thirdPoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="basePoint" type="xs:long"></xs:attribute> <xs:attribute name="basePoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="pShoulder" type="xs:long"></xs:attribute> <xs:attribute name="pShoulder" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p1Line" type="xs:long"></xs:attribute> <xs:attribute name="p1Line" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p2Line" type="xs:long"></xs:attribute> <xs:attribute name="p2Line" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="length" type="xs:string"></xs:attribute> <xs:attribute name="length" type="xs:string"></xs:attribute>
<xs:attribute name="angle" type="xs:double"></xs:attribute> <xs:attribute name="angle" type="xs:double"></xs:attribute>
<xs:attribute name="typeLine" type="xs:string"></xs:attribute> <xs:attribute name="typeLine" type="xs:string"></xs:attribute>
<xs:attribute name="splinePath" type="xs:long"></xs:attribute> <xs:attribute name="splinePath" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="spline" type="xs:long"></xs:attribute> <xs:attribute name="spline" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p1Line1" type="xs:long"></xs:attribute> <xs:attribute name="p1Line1" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p1Line2" type="xs:long"></xs:attribute> <xs:attribute name="p1Line2" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p2Line1" type="xs:long"></xs:attribute> <xs:attribute name="p2Line1" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="p2Line2" type="xs:long"></xs:attribute> <xs:attribute name="p2Line2" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="center" type="xs:long"></xs:attribute> <xs:attribute name="center" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="radius" type="xs:string"></xs:attribute> <xs:attribute name="radius" type="xs:string"></xs:attribute>
<xs:attribute name="axisP1" type="xs:long"></xs:attribute> <xs:attribute name="axisP1" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="axisP2" type="xs:long"></xs:attribute> <xs:attribute name="axisP2" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="arc" type="xs:long"></xs:attribute> <xs:attribute name="arc" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="line" minOccurs="0" maxOccurs="unbounded"> <xs:element name="line" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="firstPoint" type="xs:long"></xs:attribute> <xs:attribute name="firstPoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="secondPoint" type="xs:long"></xs:attribute> <xs:attribute name="secondPoint" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="typeLine" type="xs:string"></xs:attribute> <xs:attribute name="typeLine" type="xs:string"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="arc" minOccurs="0" maxOccurs="unbounded"> <xs:element name="arc" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="angle1" type="xs:string"></xs:attribute> <xs:attribute name="angle1" type="xs:string"></xs:attribute>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="angle2" type="xs:string"></xs:attribute> <xs:attribute name="angle2" type="xs:string"></xs:attribute>
<xs:attribute name="radius" type="xs:string"></xs:attribute> <xs:attribute name="radius" type="xs:string"></xs:attribute>
<xs:attribute name="center" type="xs:long"></xs:attribute> <xs:attribute name="center" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -86,21 +93,21 @@
<xs:element name="pathPoint" minOccurs="0" maxOccurs="unbounded"> <xs:element name="pathPoint" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="kAsm2" type="xs:string"></xs:attribute> <xs:attribute name="kAsm2" type="xs:string"></xs:attribute>
<xs:attribute name="pSpline" type="xs:long"></xs:attribute> <xs:attribute name="pSpline" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="angle" type="xs:string"></xs:attribute> <xs:attribute name="angle" type="xs:string"></xs:attribute>
<xs:attribute name="kAsm1" type="xs:string"></xs:attribute> <xs:attribute name="kAsm1" type="xs:string"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="kCurve" type="xs:double"></xs:attribute> <xs:attribute name="kCurve" type="xs:double"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="kAsm1" type="xs:double"></xs:attribute> <xs:attribute name="kAsm1" type="xs:double"></xs:attribute>
<xs:attribute name="kAsm2" type="xs:double"></xs:attribute> <xs:attribute name="kAsm2" type="xs:double"></xs:attribute>
<xs:attribute name="angle1" type="xs:double"></xs:attribute> <xs:attribute name="angle1" type="xs:double"></xs:attribute>
<xs:attribute name="angle2" type="xs:double"></xs:attribute> <xs:attribute name="angle2" type="xs:double"></xs:attribute>
<xs:attribute name="point1" type="xs:long"></xs:attribute> <xs:attribute name="point1" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="point4" type="xs:long"></xs:attribute> <xs:attribute name="point4" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:choice> </xs:choice>
@ -113,31 +120,31 @@
<xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="point" minOccurs="0" maxOccurs="unbounded"> <xs:element name="point" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="idObject" type="xs:long"></xs:attribute> <xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="mx" type="xs:string"></xs:attribute> <xs:attribute name="mx" type="xs:double"></xs:attribute>
<xs:attribute name="typeObject" type="xs:string"></xs:attribute> <xs:attribute name="typeObject" type="xs:string"></xs:attribute>
<xs:attribute name="my" type="xs:string"></xs:attribute> <xs:attribute name="my" type="xs:double"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="idTool" type="xs:long"></xs:attribute> <xs:attribute name="idTool" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="arc" minOccurs="0" maxOccurs="unbounded"> <xs:element name="arc" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="idObject" type="xs:long"></xs:attribute> <xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="typeObject" type="xs:string"></xs:attribute> <xs:attribute name="typeObject" type="xs:string"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="idTool" type="xs:long"></xs:attribute> <xs:attribute name="idTool" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="spline" minOccurs="0" maxOccurs="unbounded"> <xs:element name="spline" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="idObject" type="xs:long"></xs:attribute> <xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="typeObject" type="xs:string"></xs:attribute> <xs:attribute name="typeObject" type="xs:string"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="idTool" type="xs:long"></xs:attribute> <xs:attribute name="idTool" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="tools" minOccurs="0" maxOccurs="unbounded"> <xs:element name="tools" minOccurs="0" maxOccurs="unbounded">
@ -149,9 +156,9 @@
<xs:element name="node" maxOccurs="unbounded"> <xs:element name="node" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="nodeType" type="xs:string"></xs:attribute> <xs:attribute name="nodeType" type="xs:string"></xs:attribute>
<xs:attribute name="idObject" type="xs:long"></xs:attribute> <xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="mx" type="xs:long"></xs:attribute> <xs:attribute name="mx" type="xs:double"></xs:attribute>
<xs:attribute name="my" type="xs:long"></xs:attribute> <xs:attribute name="my" type="xs:double"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -159,10 +166,10 @@
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
<xs:attribute name="indexD1" type="xs:long"></xs:attribute> <xs:attribute name="indexD1" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="indexD2" type="xs:long"></xs:attribute> <xs:attribute name="indexD2" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:choice> </xs:choice>
@ -178,20 +185,20 @@
<xs:element name="node" maxOccurs="unbounded"> <xs:element name="node" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="nodeType" type="xs:string"></xs:attribute> <xs:attribute name="nodeType" type="xs:string"></xs:attribute>
<xs:attribute name="idObject" type="xs:long"></xs:attribute> <xs:attribute name="idObject" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="mx" type="xs:long"></xs:attribute> <xs:attribute name="mx" type="xs:double"></xs:attribute>
<xs:attribute name="my" type="xs:long"></xs:attribute> <xs:attribute name="my" type="xs:double"></xs:attribute>
<xs:attribute name="type" type="xs:string"></xs:attribute> <xs:attribute name="type" type="xs:string"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="id" type="xs:long" use="required"></xs:attribute> <xs:attribute name="id" type="xs:unsignedInt" use="required"></xs:attribute>
<xs:attribute name="supplement" type="xs:long"></xs:attribute> <xs:attribute name="supplement" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="mx" type="xs:double"></xs:attribute> <xs:attribute name="mx" type="xs:double"></xs:attribute>
<xs:attribute name="my" type="xs:double"></xs:attribute> <xs:attribute name="my" type="xs:double"></xs:attribute>
<xs:attribute name="width" type="xs:long"></xs:attribute> <xs:attribute name="width" type="xs:unsignedInt"></xs:attribute>
<xs:attribute name="name" type="xs:string"></xs:attribute> <xs:attribute name="name" type="xs:string"></xs:attribute>
<xs:attribute name="closed" type="xs:long"></xs:attribute> <xs:attribute name="closed" type="xs:unsignedInt"></xs:attribute>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
@ -204,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="^([^0-9-*/^+=\s\(\)%:;!]){1,1}([^-*/^+=\s\(\)%:;!]){0,}$"/>
</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

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="vst">
<xs:complexType>
<xs:sequence>
<xs:element name="description" type="xs:string"></xs:element>
<xs:element name="unit" type="units"></xs:element>
<xs:element name="size">
<xs:complexType>
<xs:attribute name="base" type="xs:double"></xs:attribute>
<xs:attribute name="name" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="height">
<xs:complexType>
<xs:attribute name="base" type="xs:double"></xs:attribute>
<xs:attribute name="name" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="measurements">
<xs:complexType>
<xs:sequence>
<xs:element name="measurement" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="shortMeasurementName" use="required"></xs:attribute>
<xs:attribute name="gui_text" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="base" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="height_increase" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="size_increace" type="xs:double" use="required"></xs:attribute>
<xs:attribute name="number" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="shortMeasurementName">
<xs:restriction base="xs:string">
<xs:pattern value="^([^0-9-*/^+=\s\(\)%:;!]){1,1}([^-*/^+=\s\(\)%:;!]){0,}$"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="inch"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

View file

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

View file

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<vst>
<description>Типовые фигуры мужчин 1-й полнотной группы, обхват груди 100 см</description>
<unit>mm</unit>
<size base="500" name="Сг"/>
<height base="1760" name="Р"/>
<measurements>
<measurement name="Втос" gui_text="Высота точки основания шеи спереди" base="1450" size_increace="2" height_increase ="51" number="98"/>
<measurement name="Втош" gui_text="Высота точки основания шеи сбоку" base="1506" size_increace="2" height_increase ="54" number="4"/>
<measurement name="Впт" gui_text="Высота плечевой точки" base="1438" size_increace="3" height_increase ="52" number="5"/>
<measurement name="Вст" gui_text="Высота сосковой точки" base="1257" size_increace="-1" height_increase ="49" number="6"/>
<measurement name="Влт" gui_text="Высота линии талии" base="1102" size_increace="0" height_increase ="43" number="7"/>
<measurement name="Вк" gui_text="Высота коленной точки" base="503" size_increace="0" height_increase ="22" number="9"/>
<measurement name="Вшт" gui_text="Высота точки основания шеи сзади" base="1522" size_increace="2" height_increase ="54" number="10"/>
<measurement name="Взу" gui_text="Высота заднего угла подмышечной впадины" base="1328" size_increace="0" height_increase ="49" number="11"/>
<measurement name="Влоп" gui_text="Высота лопаточной точки" base="1320" size_increace="0" height_increase ="49" number="87"/>
<measurement name="Впс" gui_text="Высота подъягодичной складки" base="811" size_increace="-1" height_increase ="36" number="12"/>
<measurement name="Ош" gui_text="Обхват шеи" base="404" size_increace="8" height_increase ="2" number="13"/>
<measurement name="ОгI" gui_text="Обхват груди первый" base="1034" size_increace="36" height_increase ="4" number="14"/>
<measurement name="ОгII" gui_text="Обхват груди второй" base="1044" size_increace="38" height_increase ="2" number="15"/>
<measurement name="ОгIII" gui_text="Обхват груди третий" base="1000" size_increace="40" height_increase ="0" number="16"/>
<measurement name="От" gui_text="Обхват талии" base="780" size_increace="40" height_increase ="0" number="18"/>
<measurement name="Об" gui_text="Обхват бедер с учетом выступания живота" base="984" size_increace="30" height_increase ="10" number="19"/>
<measurement name="ОбI" gui_text="Обхват бедер без учета выступания живота" base="964" size_increace="24" height_increase ="12" number="20"/>
<measurement name="Обед" gui_text="Обхват бедра" base="566" size_increace="18" height_increase ="6" number="21"/>
<measurement name="Ок" gui_text="Обхват колена" base="386" size_increace="8" height_increase ="8" number="22"/>
<measurement name="Ои" gui_text="Обхват икры" base="380" size_increace="8" height_increase ="6" number="23"/>
<measurement name="Ощ" gui_text="Обхват щиколотки" base="234" size_increace="4" height_increase ="4" number="24"/>
<measurement name="Ос" gui_text="Обхват подъема стопы" base="350" size_increace="2" height_increase ="8" number="51"/>
<measurement name="Дсб" gui_text="Расстояние от линии талии до пола сбоку" base="1120" size_increace="0" height_increase ="44" number="25"/>
<measurement name="Дсп" gui_text="Расстояние от линии талии до пола спереди" base="1110" size_increace="0" height_increase ="43" number="26"/>
<measurement name="Дн" gui_text="Длина ноги по внутренней поверхности" base="826" size_increace="-3" height_increase ="37" number="27"/>
<measurement name="Дпс" gui_text="Расстояние от линии талии до подъягодичной складки" base="316" size_increace="4" height_increase ="7" number="104"/>
<measurement name="Дпоб" gui_text="Дуга через паховую область" base="783" size_increace="14" height_increase ="15" number="77"/>
<measurement name="Дс" gui_text="Расстояние от линии талии до плоскости сидения" base="260" size_increace="1" height_increase ="6" number="49"/>
<measurement name="Оп" gui_text="Обхват плеча" base="316" size_increace="12" height_increase ="0" number="28"/>
<measurement name="Озап" gui_text="Обхват запястья" base="180" size_increace="4" height_increase ="0" number="29"/>
<measurement name="Пкис" gui_text="Обхват кисти" base="250" size_increace="4" height_increase ="0" number="30"/>
<measurement name="Шп" gui_text="Длина плечевого ската" base="160" size_increace="1" height_increase ="4" number="31"/>
<measurement name="Длуч" gui_text="Расстояние от точки основания шеи сбоку до лучевой точки" base="500" size_increace="2" height_increase ="15" number="32"/>
<measurement name="Дзап" gui_text="Расстояние от точки основания шеи сбоку до линии обхвата запястья" base="768" size_increace="2" height_increase ="24" number="33"/>
<measurement name="ДIIIп" gui_text="Расстояние от точки основания шеи сбоку до конца третьего пальца" base="970" size_increace="2" height_increase ="29" number="90"/>
<measurement name="Впрп" gui_text="Расстояние от точки основания шеи сбоку до линии обхвата груди первого спереди" base="214" size_increace="3" height_increase ="3" number="34а"/>
<measurement name="Вг" gui_text="Расстояние от точки основания шеи сбоку до сосковой точки (высота груди)" base="262" size_increace="8" height_increase ="3" number="35а"/>
<measurement name="Дтп" gui_text="Расстояние от точки основания шеи сбоку до линии талии спереди (длани талии спереди)" base="460" size_increace="7" height_increase ="9" number="36а"/>
<measurement name="Дп" gui_text="Дуга через высшую точку плечевого сустава" base="355" size_increace="5" height_increase ="5" number="38"/>
<measurement name="Впрз" gui_text="Расстояние от точки основания шеи сзади до линии обхватов груди первого и второго с учетом выступа лопаток" base="208" size_increace="3" height_increase ="5" number="39"/>
<measurement name="Дтс" gui_text="Длина спины до талии с учетом выступа лопаток" base="438" size_increace="2" height_increase ="10" number="40"/>
<measurement name="ДтсI" gui_text="Расстояние от линии талии сзади до точки основания шеи сбоку" base="469" size_increace="2" height_increase ="10" number="43"/>
<measurement name="Двчт" gui_text="Длина дуги верхней части туловища через точку основания шеи сбоку" base="929" size_increace="9" height_increase ="19" number="44"/>
<measurement name="Шг" gui_text="Ширина груди" base="370" size_increace="14" height_increase ="4" number="45"/>
<measurement name="Цг" gui_text="Расстояние между сосковыми точками" base="224" size_increace="6" height_increase ="0" number="46"/>
<measurement name="Шс" gui_text="Ширина спины" base="416" size_increace="10" height_increase ="2" number="47"/>
<measurement name="dпзр" gui_text="Передне-задний диаметр руки" base="121" size_increace="6" height_increase ="0" number="57"/>
<measurement name="Огол" gui_text="Обхват головы" base="576" size_increace="4" height_increase ="4" number="48"/>
<!--Конец основной таблицы. Дальше идет другая таблица. Параметры взятые с нее дополняют предедущую.-->
<measurement name="Вкт" gui_text="Высота ключичной точки" base="1454" size_increace="2" height_increase ="52" number="3"/>
<measurement name="Окис" gui_text="Обхват кисти" base="263" size_increace="3" height_increase ="3" number="30"/>
<measurement name="Впрк" gui_text="Расстояние от шейной точки до уровня заднего угла подмышечной впадины спереди (высота проймы косая)" base="324" size_increace="7" height_increase ="2" number="37"/>
<measurement name="Впк" gui_text="Высота плеча косая" base="495" size_increace="5" height_increase ="7" number="41"/>
<measurement name="Сш" gui_text="Полуобхват шеи" base="202" size_increace="4" height_increase ="2" number="13"/>
<measurement name="Сш1" gui_text="Полуобхват шеи для сорочек" base="205" size_increace="5" height_increase ="0" number="13а"/>
<measurement name="СгI" gui_text="Полуобхват груди первый" base="517" size_increace="18" height_increase ="2" number="14"/>
<measurement name="СгII" gui_text="Полуобхват груди второй" base="522" size_increace="19" height_increase ="1" number="15"/>
<measurement name="СгIII" gui_text="Полуобхват груди третий" base="500" size_increace="20" height_increase ="0" number="16"/>
<measurement name="Ст" gui_text="Полуобхват талии" base="390" size_increace="20" height_increase ="0" number="18"/>
<measurement name="Сб" gui_text="Полуобхват бедер с учетом выступания живота" base="492" size_increace="15" height_increase ="5" number="19"/>
<measurement name="СбI" gui_text="Полуобхват бедер без учета выступания живота" base="482" size_increace="12" height_increase ="6" number="20"/>
<measurement name="Окс" gui_text="Обхват колена в согнутом положении ноги" base="399" size_increace="9" height_increase ="8" number="50"/>
<measurement name="dпл" gui_text="Плечевой диаметр" base="412" size_increace="5" height_increase ="8" number="53"/>
<measurement name="dш" gui_text="Поперечный диаметр шеи" base="130" size_increace="2" height_increase ="2" number="54"/>
<measurement name="Впкп" gui_text="Высота плеча косая спереди" base="453" size_increace="7" height_increase ="8" number="42"/>
<measurement name="Дтн1" gui_text="Расстояние от точки основания шеи до линии талии спереди" base="449" size_increace="6" height_increase ="8" number="61"/>
<measurement name="Дрлок" gui_text="Длина руки до локтя" base="338" size_increace="2" height_increase ="12" number="62"/>
<measurement name="Дрзап" gui_text="Длина рукава до линии обхвата запястья" base="594" size_increace="3" height_increase ="19" number="68"/>
<measurement name="dвр" gui_text="Вертикальный диаметр руки" base="128" size_increace="2" height_increase ="2" number="69"/>
<measurement name="Дшк" gui_text="Расстояние от шейной точки до колена" base="1019" size_increace="0" height_increase ="34" number="70"/>
<measurement name="Дтк" gui_text="Расстояние от линии талии до колена" base="603" size_increace="-2" height_increase ="24" number="71"/>
<measurement name="Вп" gui_text="Высота плеча" base="67" size_increace="0" height_increase ="2" number="72"/>
<measurement name="Вгол" gui_text="Высота головы" base="246" size_increace="-2" height_increase ="6" number="73"/>
<measurement name="Пкор" gui_text="Положение корпуса" base="84" size_increace="0" height_increase ="3" number="74"/>
<measurement name="Дпз" gui_text="Дуга плечевого пояса сзади" base="535" size_increace="7" height_increase ="7" number="75"/>
<measurement name="Дшош" gui_text="Расстояние от шейной точки до точки основания шеи сбоку по линии измерения обхвата шеи" base="109" size_increace="1" height_increase ="0" number="76"/>
<measurement name="Гт1" gui_text="Глубина талии первая" base="64" size_increace="-1" height_increase ="0" number="78"/>
<measurement name="ГтII" gui_text="Глубина талии вторая" base="37" size_increace="0" height_increase ="0" number="79"/>
</measurements>
</vst>

View file

@ -42,8 +42,8 @@ public:
* @brief Calculator class constructor. * @brief Calculator class constructor.
* @param data pointer to a variable container. * @param data pointer to a variable container.
*/ */
explicit Calculator(const VContainer *data):errorMsg(0), token(QString()), tok(0), token_type(0), prog(QString()), explicit Calculator(const VContainer *data):errorMsg(nullptr), token(QString()), tok(0), token_type(0),
index(0), data(data), debugFormula(QString()){} prog(QString()), index(0), data(data), debugFormula(QString()){}
/** /**
* @brief eval calculate formula. * @brief eval calculate formula.
* @param prog string of formula. * @param prog string of formula.

View file

@ -1,11 +1,11 @@
SOURCES += \ SOURCES += \
src/container/vincrementtablerow.cpp \
src/container/vcontainer.cpp \ src/container/vcontainer.cpp \
src/container/calculator.cpp \ src/container/calculator.cpp \
src/container/vstandardtablerow.cpp src/container/vmeasurement.cpp \
src/container/vincrement.cpp
HEADERS += \ HEADERS += \
src/container/vincrementtablerow.h \
src/container/vcontainer.h \ src/container/vcontainer.h \
src/container/calculator.h \ src/container/calculator.h \
src/container/vstandardtablerow.h src/container/vmeasurement.h \
src/container/vincrement.h

View file

@ -30,18 +30,16 @@
#include <QDebug> #include <QDebug>
#include <QtAlgorithms> #include <QtAlgorithms>
#include "../widgets/vapplication.h"
qint64 VContainer::_id = 0; quint32 VContainer::_id = 0;
VContainer::VContainer() VContainer::VContainer()
:base(QHash<QString, qint32>()), gObjects(QHash<qint64, VGObject *>()), :_size(50), sizeName("Сг"), _height(176), heightName("P"), gObjects(QHash<quint32, VGObject *>()),
standardTable(QHash<QString, VStandardTableRow>()), incrementTable(QHash<QString, VIncrementTableRow>()), measurements(QHash<QString, VMeasurement>()), increments(QHash<QString, VIncrement>()),
lengthLines(QHash<QString, qreal>()), lineAngles(QHash<QString, qreal>()), lengthSplines(QHash<QString, qreal>()), lengthLines(QHash<QString, qreal>()), lineAngles(QHash<QString, qreal>()), lengthSplines(QHash<QString, qreal>()),
lengthArcs(QHash<QString, qreal>()), details(QHash<qint64, VDetail>()) lengthArcs(QHash<QString, qreal>()), details(QHash<quint32, VDetail>())
{ {
SetSize(500);
SetGrowth(1760);
CreateManTableIGroup ();
} }
VContainer &VContainer::operator =(const VContainer &data) VContainer &VContainer::operator =(const VContainer &data)
@ -51,10 +49,10 @@ VContainer &VContainer::operator =(const VContainer &data)
} }
VContainer::VContainer(const VContainer &data) VContainer::VContainer(const VContainer &data)
:base(QHash<QString, qint32>()), gObjects(QHash<qint64, VGObject *>()), :_size(50), sizeName("Сг"), _height(176), heightName("P"), gObjects(QHash<quint32, VGObject *>()),
standardTable(QHash<QString, VStandardTableRow>()), incrementTable(QHash<QString, VIncrementTableRow>()), measurements(QHash<QString, VMeasurement>()), increments(QHash<QString, VIncrement>()),
lengthLines(QHash<QString, qreal>()), lineAngles(QHash<QString, qreal>()), lengthSplines(QHash<QString, qreal>()), lengthLines(QHash<QString, qreal>()), lineAngles(QHash<QString, qreal>()), lengthSplines(QHash<QString, qreal>()),
lengthArcs(QHash<QString, qreal>()), details(QHash<qint64, VDetail>()) lengthArcs(QHash<QString, qreal>()), details(QHash<quint32, VDetail>())
{ {
setData(data); setData(data);
} }
@ -67,44 +65,40 @@ VContainer::~VContainer()
void VContainer::setData(const VContainer &data) void VContainer::setData(const VContainer &data)
{ {
base = *data.DataBase(); _size = data.size();
sizeName = data.SizeName();
_height = data.height();
heightName = data.HeightName();
qDeleteAll(gObjects); qDeleteAll(gObjects);
gObjects.clear(); gObjects.clear();
const QHash<qint64, VGObject*> *obj = data.DataGObjects(); const QHash<quint32, VGObject*> *obj = data.DataGObjects();
Q_CHECK_PTR(obj); Q_CHECK_PTR(obj);
QHashIterator<qint64, VGObject*> i(*obj); QHashIterator<quint32, VGObject*> i(*obj);
while (i.hasNext()) while (i.hasNext())
{ {
i.next(); i.next();
switch (i.value()->getType()) switch (i.value()->getType())
{ {
case (GObject::Arc): case (GObject::Arc):
{
CopyGObject<VArc>(data, i.key()); CopyGObject<VArc>(data, i.key());
break; break;
}
case (GObject::Point): case (GObject::Point):
{
CopyGObject<VPointF>(data, i.key()); CopyGObject<VPointF>(data, i.key());
break; break;
}
case (GObject::Spline): case (GObject::Spline):
{
CopyGObject<VSpline>(data, i.key()); CopyGObject<VSpline>(data, i.key());
break; break;
}
case (GObject::SplinePath): case (GObject::SplinePath):
{
CopyGObject<VSplinePath>(data, i.key()); CopyGObject<VSplinePath>(data, i.key());
break; break;
}
default: default:
qWarning()<<"Don't know how copy this type."; qDebug()<<"Don't know how copy this type.";
break;
} }
} }
standardTable = *data.DataStandardTable(); measurements = *data.DataMeasurements();
incrementTable = *data.DataIncrementTable(); increments = *data.DataIncrements();
lengthLines = *data.DataLengthLines(); lengthLines = *data.DataLengthLines();
lineAngles = *data.DataLineAngles(); lineAngles = *data.DataLineAngles();
lengthSplines = *data.DataLengthSplines(); lengthSplines = *data.DataLengthSplines();
@ -112,7 +106,7 @@ void VContainer::setData(const VContainer &data)
details = *data.DataDetails(); details = *data.DataDetails();
} }
const VGObject *VContainer::GetGObject(qint64 id)const const VGObject *VContainer::GetGObject(quint32 id)const
{ {
return GetObject(gObjects, id); return GetObject(gObjects, id);
} }
@ -143,16 +137,16 @@ val VContainer::GetVariable(const QHash<key, val> &obj, key id) const
} }
} }
const VStandardTableRow VContainer::GetStandardTableCell(const QString &name) const const VMeasurement VContainer::GetMeasurement(const QString &name) const
{ {
Q_ASSERT(name.isEmpty()==false); Q_ASSERT(name.isEmpty()==false);
return GetVariable(standardTable, name); return GetVariable(measurements, name);
} }
const VIncrementTableRow VContainer::GetIncrementTableRow(const QString& name) const const VIncrement VContainer::GetIncrement(const QString& name) const
{ {
Q_ASSERT(name.isEmpty()==false); Q_ASSERT(name.isEmpty()==false);
return GetVariable(incrementTable, name); return GetVariable(increments, name);
} }
qreal VContainer::GetLine(const QString &name) const qreal VContainer::GetLine(const QString &name) const
@ -179,35 +173,35 @@ qreal VContainer::GetLineAngle(const QString &name) const
return GetVariable(lineAngles, name); return GetVariable(lineAngles, name);
} }
const VDetail VContainer::GetDetail(qint64 id) const const VDetail VContainer::GetDetail(quint32 id) const
{ {
return GetVariable(details, id); return GetVariable(details, id);
} }
qint64 VContainer::AddGObject(VGObject *obj) quint32 VContainer::AddGObject(VGObject *obj)
{ {
return AddObject(gObjects, obj); return AddObject(gObjects, obj);
} }
qint64 VContainer::AddDetail(VDetail detail) quint32 VContainer::AddDetail(VDetail detail)
{ {
qint64 id = getNextId(); quint32 id = getNextId();
details[id] = detail; details[id] = detail;
return id; return id;
} }
void VContainer::AddIncrementTableRow(const QString &name, VIncrementTableRow row) void VContainer::AddIncrement(const QString &name, VIncrement incr)
{ {
incrementTable[name] = row; increments[name] = incr;
} }
qint64 VContainer::getNextId() quint32 VContainer::getNextId()
{ {
_id++; _id++;
return _id; return _id;
} }
void VContainer::UpdateId(qint64 newId) void VContainer::UpdateId(quint32 newId)
{ {
if (newId > _id) if (newId > _id)
{ {
@ -216,7 +210,7 @@ void VContainer::UpdateId(qint64 newId)
} }
template <typename val> template <typename val>
void VContainer::UpdateObject(QHash<qint64, val> &obj, const qint64 &id, val point) void VContainer::UpdateObject(QHash<quint32, val> &obj, const quint32 &id, val point)
{ {
Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0"); Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0");
Q_CHECK_PTR(point); Q_CHECK_PTR(point);
@ -236,10 +230,10 @@ void VContainer::AddLengthSpline(const QString &name, const qreal &value)
lengthSplines[name] = value; lengthSplines[name] = value;
} }
void VContainer::AddLengthArc(const qint64 &id) void VContainer::AddLengthArc(const quint32 &id)
{ {
const VArc * arc = GeometricObject<const VArc *>(id); const VArc * arc = GeometricObject<const VArc *>(id);
lengthArcs[arc->name()] = toMM(arc->GetLength()); lengthArcs[arc->name()] = qApp->fromPixel(arc->GetLength());
} }
void VContainer::AddLineAngle(const QString &name, const qreal &value) void VContainer::AddLineAngle(const QString &name, const qreal &value)
@ -248,33 +242,42 @@ void VContainer::AddLineAngle(const QString &name, const qreal &value)
lineAngles[name] = value; lineAngles[name] = value;
} }
qreal VContainer::GetValueStandardTableCell(const QString& name) const qreal VContainer::GetValueStandardTableRow(const QString& name) const
{ {
VStandardTableRow cell = GetStandardTableCell(name); const VMeasurement m = GetMeasurement(name);
qreal k_size = ( static_cast<qreal> (size()/10.0) - 50.0 ) / 2.0; if (qApp->patternType() == Pattern::Individual)
qreal k_growth = ( static_cast<qreal> (growth()/10.0) - 176.0 ) / 6.0; {
qreal value = cell.GetBase() + k_size*cell.GetKsize() + k_growth*cell.GetKgrowth(); return m.GetValue();
return value; }
else
{
return m.GetValue(size(), height());
}
} }
qreal VContainer::GetValueIncrementTableRow(const QString& name) const qreal VContainer::GetValueIncrementTableRow(const QString& name) const
{ {
VIncrementTableRow cell = GetIncrementTableRow(name); const VIncrement icr = GetIncrement(name);
qreal k_size = ( static_cast<qreal> (size()/10.0) - 50.0 ) / 2.0; if (qApp->patternType() == Pattern::Individual)
qreal k_growth = ( static_cast<qreal> (growth()/10.0) - 176.0 ) / 6.0; {
qreal value = cell.getBase() + k_size*cell.getKsize() + k_growth*cell.getKgrowth(); return icr.GetValue();
return value; }
else
{
return icr.GetValue(size(), height());
}
} }
void VContainer::Clear() void VContainer::Clear()
{ {
_id = 0; _id = 0;
standardTable.clear(); measurements.clear();
incrementTable.clear(); increments.clear();
lengthLines.clear(); lengthLines.clear();
lengthArcs.clear(); lengthArcs.clear();
lineAngles.clear(); lineAngles.clear();
details.clear(); details.clear();
lengthSplines.clear();
ClearGObjects(); ClearGObjects();
} }
@ -291,11 +294,11 @@ void VContainer::ClearCalculationGObjects()
{ {
if (gObjects.size()>0) if (gObjects.size()>0)
{ {
QHashIterator<qint64, VGObject*> i(gObjects); QHashIterator<quint32, VGObject*> i(gObjects);
while (i.hasNext()) while (i.hasNext())
{ {
i.next(); i.next();
if (i.value()->getMode() == Draw::Calculation) if (i.value()->getMode() == Valentina::Calculation)
{ {
delete i.value(); delete i.value();
gObjects.remove(i.key()); gObjects.remove(i.key());
@ -306,18 +309,22 @@ void VContainer::ClearCalculationGObjects()
qreal VContainer::FindVar(const QString &name, bool *ok)const qreal VContainer::FindVar(const QString &name, bool *ok)const
{ {
if (base.contains(name)) if (sizeName == name)
{ {
*ok = true; *ok = true;
return base.value(name); return _size;
} }
if (heightName == name)
if (standardTable.contains(name))
{ {
*ok = true; *ok = true;
return GetValueStandardTableCell(name); return _height;
} }
if (incrementTable.contains(name)) if (measurements.contains(name))
{
*ok = true;
return GetValueStandardTableRow(name);
}
if (increments.contains(name))
{ {
*ok = true; *ok = true;
return GetValueIncrementTableRow(name); return GetValueIncrementTableRow(name);
@ -346,27 +353,27 @@ qreal VContainer::FindVar(const QString &name, bool *ok)const
return 0; return 0;
} }
void VContainer::AddLine(const qint64 &firstPointId, const qint64 &secondPointId) void VContainer::AddLine(const quint32 &firstPointId, const quint32 &secondPointId)
{ {
QString nameLine = GetNameLine(firstPointId, secondPointId); QString nameLine = GetNameLine(firstPointId, secondPointId);
const VPointF *first = GeometricObject<const VPointF *>(firstPointId); const VPointF *first = GeometricObject<const VPointF *>(firstPointId);
const VPointF *second = GeometricObject<const VPointF *>(secondPointId); const VPointF *second = GeometricObject<const VPointF *>(secondPointId);
AddLengthLine(nameLine, toMM(QLineF(first->toQPointF(), second->toQPointF()).length())); AddLengthLine(nameLine, qApp->fromPixel(QLineF(first->toQPointF(), second->toQPointF()).length()));
nameLine = GetNameLineAngle(firstPointId, secondPointId); nameLine = GetNameLineAngle(firstPointId, secondPointId);
AddLineAngle(nameLine, QLineF(first->toQPointF(), second->toQPointF()).angle()); AddLineAngle(nameLine, QLineF(first->toQPointF(), second->toQPointF()).angle());
} }
template <typename key, typename val> template <typename key, typename val>
qint64 VContainer::AddObject(QHash<key, val> &obj, val value) quint32 VContainer::AddObject(QHash<key, val> &obj, val value)
{ {
Q_CHECK_PTR(value); Q_CHECK_PTR(value);
qint64 id = getNextId(); quint32 id = getNextId();
value->setId(id); value->setId(id);
obj[id] = value; obj[id] = value;
return id; return id;
} }
QString VContainer::GetNameLine(const qint64 &firstPoint, const qint64 &secondPoint) const QString VContainer::GetNameLine(const quint32 &firstPoint, const quint32 &secondPoint) const
{ {
const VPointF *first = GeometricObject<const VPointF *>(firstPoint); const VPointF *first = GeometricObject<const VPointF *>(firstPoint);
const VPointF *second = GeometricObject<const VPointF *>(secondPoint); const VPointF *second = GeometricObject<const VPointF *>(secondPoint);
@ -374,7 +381,7 @@ QString VContainer::GetNameLine(const qint64 &firstPoint, const qint64 &secondPo
return QString("Line_%1_%2").arg(first->name(), second->name()); return QString("Line_%1_%2").arg(first->name(), second->name());
} }
QString VContainer::GetNameLineAngle(const qint64 &firstPoint, const qint64 &secondPoint) const QString VContainer::GetNameLineAngle(const quint32 &firstPoint, const quint32 &secondPoint) const
{ {
const VPointF *first = GeometricObject<const VPointF *>(firstPoint); const VPointF *first = GeometricObject<const VPointF *>(firstPoint);
const VPointF *second = GeometricObject<const VPointF *>(secondPoint); const VPointF *second = GeometricObject<const VPointF *>(secondPoint);
@ -382,12 +389,12 @@ QString VContainer::GetNameLineAngle(const qint64 &firstPoint, const qint64 &sec
return QString("AngleLine_%1_%2").arg(first->name(), second->name()); return QString("AngleLine_%1_%2").arg(first->name(), second->name());
} }
void VContainer::UpdateGObject(qint64 id, VGObject* obj) void VContainer::UpdateGObject(quint32 id, VGObject* obj)
{ {
UpdateObject(gObjects, id, obj); UpdateObject(gObjects, id, obj);
} }
void VContainer::UpdateDetail(qint64 id, const VDetail &detail) void VContainer::UpdateDetail(quint32 id, const VDetail &detail)
{ {
Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0"); Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0");
details[id] = detail; details[id] = detail;
@ -399,65 +406,3 @@ void VContainer::AddLengthLine(const QString &name, const qreal &value)
Q_ASSERT(name.isEmpty() == false); Q_ASSERT(name.isEmpty() == false);
lengthLines[name] = value; lengthLines[name] = value;
} }
void VContainer::CreateManTableIGroup ()
{
AddStandardTableCell("Pkor", VStandardTableRow(84, 0, 3));
AddStandardTableCell("Vtos", VStandardTableRow(1450, 2, 51));
AddStandardTableCell("Vtosh", VStandardTableRow(1506, 2, 54));
AddStandardTableCell("Vpt", VStandardTableRow(1438, 3, 52));
AddStandardTableCell("Vst", VStandardTableRow(1257, -1, 49));
AddStandardTableCell("Vlt", VStandardTableRow(1102, 0, 43));
AddStandardTableCell("Vk", VStandardTableRow(503, 0, 22));
AddStandardTableCell("Vsht", VStandardTableRow(1522, 2, 54));
AddStandardTableCell("Vzy", VStandardTableRow(1328, 0, 49));
AddStandardTableCell("Vlop", VStandardTableRow(1320, 0, 49));
AddStandardTableCell("Vps", VStandardTableRow(811, -1, 36));
AddStandardTableCell("Ssh", VStandardTableRow(202, 4, 1));
AddStandardTableCell("SgI", VStandardTableRow(517, 18, 2));
AddStandardTableCell("SgII", VStandardTableRow(522, 19, 1));
AddStandardTableCell("SgIII", VStandardTableRow(500, 20, 0));
AddStandardTableCell("SbI", VStandardTableRow(482, 12, 6));
AddStandardTableCell("Obed", VStandardTableRow(566, 18, 6));
AddStandardTableCell("Ok", VStandardTableRow(386, 8, 8));
AddStandardTableCell("Oi", VStandardTableRow(380, 8, 6));
AddStandardTableCell("Osch", VStandardTableRow(234, 4, 4));
AddStandardTableCell("Dsb", VStandardTableRow(1120, 0, 44));
AddStandardTableCell("Dsp", VStandardTableRow(1110, 0, 43));
AddStandardTableCell("Dn", VStandardTableRow(826, -3, 37));
AddStandardTableCell("Dps", VStandardTableRow(316, 4, 7));
AddStandardTableCell("Dpob", VStandardTableRow(783, 14, 15));
AddStandardTableCell("Ds", VStandardTableRow(260, 1, 6));
AddStandardTableCell("Op", VStandardTableRow(316, 12, 0));
AddStandardTableCell("Ozap", VStandardTableRow(180, 4, 0));
AddStandardTableCell("Pkis", VStandardTableRow(250, 4, 0));
AddStandardTableCell("SHp", VStandardTableRow(160, 1, 4));
AddStandardTableCell("Dlych", VStandardTableRow(500, 2, 15));
AddStandardTableCell("Dzap", VStandardTableRow(768, 2, 24));
AddStandardTableCell("DIIIp", VStandardTableRow(970, 2, 29));
AddStandardTableCell("Vprp", VStandardTableRow(214, 3, 3));
AddStandardTableCell("Vg", VStandardTableRow(262, 8, 3));
AddStandardTableCell("Dtp", VStandardTableRow(460, 7, 9));
AddStandardTableCell("Dp", VStandardTableRow(355, 5, 5));
AddStandardTableCell("Vprz", VStandardTableRow(208, 3, 5));
AddStandardTableCell("Dts", VStandardTableRow(438, 2, 10));
AddStandardTableCell("DtsI", VStandardTableRow(469, 2, 10));
AddStandardTableCell("Dvcht", VStandardTableRow(929, 9, 19));
AddStandardTableCell("SHg", VStandardTableRow(370, 14, 4));
AddStandardTableCell("Cg", VStandardTableRow(224, 6, 0));
AddStandardTableCell("SHs", VStandardTableRow(416, 10, 2));
AddStandardTableCell("dpzr", VStandardTableRow(121, 6, 0));
AddStandardTableCell("Ogol", VStandardTableRow(576, 4, 4));
AddStandardTableCell("Ssh1", VStandardTableRow(205, 5, 0));
//TODO Posible duplicate. Need check.
//AddStandardTableCell("St", VStandardTableRow(410, 20, 0));
AddStandardTableCell("St", VStandardTableRow(390, 20, 0));
AddStandardTableCell("Drzap", VStandardTableRow(594, 3, 19));
AddStandardTableCell("DbII", VStandardTableRow(1020, 0, 44));
//TODO Posible duplicate. Need check.
//AddStandardTableCell("Sb", VStandardTableRow(504, 15, 4));
AddStandardTableCell("Sb", VStandardTableRow(492, 15, 5));
}

View file

@ -29,8 +29,8 @@
#ifndef VCONTAINER_H #ifndef VCONTAINER_H
#define VCONTAINER_H #define VCONTAINER_H
#include "vstandardtablerow.h" #include "vmeasurement.h"
#include "vincrementtablerow.h" #include "vincrement.h"
#include "../geometry/varc.h" #include "../geometry/varc.h"
#include "../geometry/vsplinepath.h" #include "../geometry/vsplinepath.h"
#include "../geometry/vdetail.h" #include "../geometry/vdetail.h"
@ -62,10 +62,9 @@ public:
VContainer(const VContainer &data); VContainer(const VContainer &data);
~VContainer(); ~VContainer();
template <typename T> template <typename T>
void CopyGObject(const VContainer &data, const qint64 &id) void CopyGObject(const VContainer &data, const quint32 &id)
{ {
T *obj = new T(*data.GeometricObject<const T *>(id)); T *obj = new T(*data.GeometricObject<const T *>(id));
Q_CHECK_PTR(obj);
UpdateGObject(id, obj); UpdateGObject(id, obj);
} }
/** /**
@ -74,9 +73,9 @@ public:
*/ */
void setData(const VContainer &data); void setData(const VContainer &data);
template <typename T> template <typename T>
const T GeometricObject(qint64 id) const const T GeometricObject(const quint32 &id) const
{ {
VGObject *gObj = 0; VGObject *gObj = nullptr;
if (gObjects.contains(id)) if (gObjects.contains(id))
{ {
gObj = gObjects.value(id); gObj = gObjects.value(id);
@ -84,10 +83,21 @@ public:
else else
{ {
throw VExceptionBadId(tr("Can't find object"), id); throw VExceptionBadId(tr("Can't find object"), id);
return nullptr;
} }
T obj = dynamic_cast<T>(gObj);
Q_CHECK_PTR(obj); try
return obj; {
T obj = dynamic_cast<T>(gObj);
Q_CHECK_PTR(obj);
return obj;
}
catch (const std::bad_alloc &)
{
throw VExceptionBadId(tr("Can't cast object"), id);
return nullptr;
}
return nullptr;
} }
/** /**
@ -95,19 +105,19 @@ public:
* @param id id of point * @param id id of point
* @return point * @return point
*/ */
const VGObject *GetGObject(qint64 id) const; const VGObject *GetGObject(quint32 id) const;
/** /**
* @brief GetStandardTableCell return standard table row by name * @brief GetMeasurement return measurement by name
* @param name name of standard table row * @param name short measurement name
* @return row of standard table * @return measurement
*/ */
const VStandardTableRow GetStandardTableCell(const QString& name) const; const VMeasurement GetMeasurement(const QString& name) const;
/** /**
* @brief GetIncrementTableRow return increment table row by name * @brief GetIncrement return increment table row by name
* @param name name of increment table row * @param name name of increment table row
* @return row of increment table * @return increment
*/ */
const VIncrementTableRow GetIncrementTableRow(const QString& name) const; const VIncrement GetIncrement(const QString& name) const;
/** /**
* @brief GetLine return length of line by name * @brief GetLine return length of line by name
* @param name name of line * @param name name of line
@ -137,37 +147,36 @@ public:
* @param id id of detail * @param id id of detail
* @return detail * @return detail
*/ */
const VDetail GetDetail(qint64 id) const; const VDetail GetDetail(quint32 id) const;
/** /**
* @brief getId return current id * @brief getId return current id
* @return current id * @return current id
*/ */
static qint64 getId() {return _id;} static quint32 getId() {return _id;}
/** /**
* @brief AddPoint add new point to container * @brief AddPoint add new point to container
* @param point new point * @param point new point
* @return return id of new point in container * @return return id of new point in container
*/ */
qint64 AddGObject(VGObject *obj); quint32 AddGObject(VGObject *obj);
/** /**
* @brief AddDetail add new detail to container * @brief AddDetail add new detail to container
* @param detail new detail * @param detail new detail
* @return return id of new detail in container * @return return id of new detail in container
*/ */
qint64 AddDetail(VDetail detail); quint32 AddDetail(VDetail detail);
/** /**
* @brief AddStandardTableCell add new row of standard table * @brief AddMeasurement add new measurement
* @param name name of row of standard table * @param name short measurement name
* @param cell row of standard table * @param row measurement
*/ */
inline void AddStandardTableCell(const QString& name, const VStandardTableRow &cell) void AddMeasurement(const QString& name, const VMeasurement &m);
{standardTable[name] = cell;}
/** /**
* @brief AddIncrementTableRow add new row of increment table * @brief AddIncrement add new row of increment table
* @param name name of new row of increment table * @param name name of new row of increment table
* @param row new row of increment table * @param row new row of increment table
*/ */
void AddIncrementTableRow(const QString& name, VIncrementTableRow row); void AddIncrement(const QString& name, VIncrement incr);
/** /**
* @brief AddLengthLine add length of line to container * @brief AddLengthLine add length of line to container
* @param name name of line * @param name name of line
@ -184,7 +193,7 @@ public:
* @brief AddLengthArc add length of arc to container * @brief AddLengthArc add length of arc to container
* @param id id of arc * @param id id of arc
*/ */
void AddLengthArc(const qint64 &id); void AddLengthArc(const quint32 &id);
/** /**
* @brief AddLineAngle add angle of line to container * @brief AddLineAngle add angle of line to container
* @param name name of line angle * @param name name of line angle
@ -197,7 +206,7 @@ public:
* @param secondPointId id of second point of line * @param secondPointId id of second point of line
* @param mode mode of line * @param mode mode of line
*/ */
void AddLine(const qint64 &firstPointId, const qint64 &secondPointId); void AddLine(const quint32 &firstPointId, const quint32 &secondPointId);
/** /**
* @brief GetNameLine return name of line * @brief GetNameLine return name of line
* @param firstPoint id of first point of line * @param firstPoint id of first point of line
@ -205,7 +214,7 @@ public:
* @return name of line * @return name of line
*/ */
// cppcheck-suppress functionStatic // cppcheck-suppress functionStatic
QString GetNameLine(const qint64 &firstPoint, const qint64 &secondPoint) const; QString GetNameLine(const quint32 &firstPoint, const quint32 &secondPoint) const;
/** /**
* @brief GetNameLineAngle return name of line angle * @brief GetNameLineAngle return name of line angle
* @param firstPoint id of first point of line * @param firstPoint id of first point of line
@ -213,39 +222,37 @@ public:
* @return name of angle of line * @return name of angle of line
*/ */
// cppcheck-suppress functionStatic // cppcheck-suppress functionStatic
QString GetNameLineAngle(const qint64 &firstPoint, const qint64 &secondPoint) const; QString GetNameLineAngle(const quint32 &firstPoint, const quint32 &secondPoint) const;
/** /**
* @brief UpdatePoint update point by id * @brief UpdatePoint update point by id
* @param id id of existing point * @param id id of existing point
* @param point point * @param point point
*/ */
void UpdateGObject(qint64 id, VGObject* obj); void UpdateGObject(quint32 id, VGObject* obj);
/** /**
* @brief UpdateDetail update detail by id * @brief UpdateDetail update detail by id
* @param id id of existing detail * @param id id of existing detail
* @param detail detail * @param detail detail
*/ */
void UpdateDetail(qint64 id, const VDetail &detail); void UpdateDetail(quint32 id, const VDetail &detail);
/** /**
* @brief UpdateStandardTableCell update standard table row by name * @brief UpdateMeasurement update measurement by name
* @param name name of row * @param name short measurement name
* @param cell row of standard table * @param m measurement
*/ */
inline void UpdateStandardTableCell(const QString& name, VStandardTableRow cell) void UpdateMeasurement(const QString& name, VMeasurement m);
{standardTable[name] = cell;}
/** /**
* @brief UpdateIncrementTableRow update increment table row by name * @brief UpdateIncrement update increment table row by name
* @param name name of row * @param name name of row
* @param row row * @param row row
*/ */
inline void UpdateIncrementTableRow(const QString& name, VIncrementTableRow row) void UpdateIncrement(const QString& name, VIncrement incr);
{incrementTable[name] = row;}
/** /**
* @brief GetValueStandardTableCell return value of standard table row by name * @brief GetValueStandardTableRow return value of measurement by name
* @param name name of row * @param name name of measurement
* @return value in mm * @return value in measurement units
*/ */
qreal GetValueStandardTableCell(const QString& name) const; qreal GetValueStandardTableRow(const QString& name) const;
/** /**
* @brief GetValueIncrementTableRow return value of increment table row by name * @brief GetValueIncrementTableRow return value of increment table row by name
* @param name name of row * @param name name of row
@ -264,44 +271,49 @@ public:
/** /**
* @brief ClearIncrementTable clear increment table * @brief ClearIncrementTable clear increment table
*/ */
inline void ClearIncrementTable() {incrementTable.clear();} void ClearIncrementTable();
void ClearMeasurements();
/** /**
* @brief ClearLengthLines clear length lines * @brief ClearLengthLines clear length lines
*/ */
inline void ClearLengthLines() {lengthLines.clear();} void ClearLengthLines();
/** /**
* @brief ClearLengthSplines clear length splines * @brief ClearLengthSplines clear length splines
*/ */
inline void ClearLengthSplines() {lengthSplines.clear();} void ClearLengthSplines();
/** /**
* @brief ClearLengthArcs clear length arcs * @brief ClearLengthArcs clear length arcs
*/ */
inline void ClearLengthArcs() {lengthArcs.clear();} void ClearLengthArcs();
/** /**
* @brief ClearLineAngles clear angles of lines * @brief ClearLineAngles clear angles of lines
*/ */
inline void ClearLineAngles() {lineAngles.clear();} void ClearLineAngles();
inline void ClearDetails() {details.clear();} void ClearDetails();
/** /**
* @brief SetSize set value of size * @brief SetSize set value of size
* @param size value of size in mm * @param size value of size
*/ */
inline void SetSize(qint32 size) {base["Сг"] = size;} void SetSize(qreal size);
void SetSizeName(const QString &name);
/** /**
* @brief SetGrowth set value of growth * @brief SetGrowth set value of growth
* @param growth value of growth in mm * @param growth value of growth
*/ */
inline void SetGrowth(qint32 growth) {base["Р"] = growth;} void SetHeight(qreal height);
void SetHeightName(const QString &name);
/** /**
* @brief size return size * @brief size return size
* @return size in mm * @return size in mm
*/ */
inline qint32 size() const {return base.value("Сг");} qreal size() const;
QString SizeName()const;
/** /**
* @brief growth return growth * @brief height return height
* @return growth in mm * @return height in pattern units
*/ */
inline qint32 growth() const {return base.value("Р");} qreal height() const;
QString HeightName()const;
/** /**
* @brief FindVar return value of variable by name * @brief FindVar return value of variable by name
* @param name name of variable * @param name name of variable
@ -314,92 +326,83 @@ public:
* @param name name of row * @param name name of row
* @return true if contains * @return true if contains
*/ */
inline bool IncrementTableContains(const QString& name) {return incrementTable.contains(name);} bool IncrementTableContains(const QString& name);
/** /**
* @brief getNextId generate next unique id * @brief getNextId generate next unique id
* @return next unique id * @return next unique id
*/ */
static qint64 getNextId(); static quint32 getNextId();
/** /**
* @brief RemoveIncrementTableRow remove row by name from increment table * @brief RemoveIncrementTableRow remove row by name from increment table
* @param name name of existing row * @param name name of existing row
*/ */
inline void RemoveIncrementTableRow(const QString& name) {incrementTable.remove(name);} void RemoveIncrementTableRow(const QString& name);
/** /**
* @brief data container with datagObjects return container of gObjects * @brief data container with datagObjects return container of gObjects
* @return pointer on container of gObjects * @return pointer on container of gObjects
*/ */
inline const QHash<qint64, VGObject*> *DataGObjects() const {return &gObjects;} const QHash<quint32, VGObject*> *DataGObjects() const;
/** /**
* @brief data container with dataBase return container of data * @brief DataMeasurements container with measurements.
* @return pointer on container of base data * @return pointer to measurements.
*/ */
inline const QHash<QString, qint32> *DataBase() const {return &base;} const QHash<QString, VMeasurement> *DataMeasurements() const;
/** /**
* @brief data container with dataStandardTable return container of standard table * @brief data container with dataIncrements return container of increment table
* @return pointer on container of standard table
*/
inline const QHash<QString, VStandardTableRow> *DataStandardTable() const {return &standardTable;}
/**
* @brief data container with dataIncrementTable return container of increment table
* @return pointer on container of increment table * @return pointer on container of increment table
*/ */
inline const QHash<QString, VIncrementTableRow> *DataIncrementTable() const {return &incrementTable;} const QHash<QString, VIncrement> *DataIncrements() const;
/** /**
* @brief data container with dataLengthLines return container of lines lengths * @brief data container with dataLengthLines return container of lines lengths
* @return pointer on container of lines lengths * @return pointer on container of lines lengths
*/ */
inline const QHash<QString, qreal> *DataLengthLines() const {return &lengthLines;} const QHash<QString, qreal> *DataLengthLines() const;
/** /**
* @brief data container with dataLengthSplines return container of splines lengths * @brief data container with dataLengthSplines return container of splines lengths
* @return pointer on container of splines lengths * @return pointer on container of splines lengths
*/ */
inline const QHash<QString, qreal> *DataLengthSplines() const {return &lengthSplines;} const QHash<QString, qreal> *DataLengthSplines() const;
/** /**
* @brief data container with dataLengthArcs return container of arcs length * @brief data container with dataLengthArcs return container of arcs length
* @return pointer on container of arcs length * @return pointer on container of arcs length
*/ */
inline const QHash<QString, qreal> *DataLengthArcs() const {return &lengthArcs;} const QHash<QString, qreal> *DataLengthArcs() const;
/** /**
* @brief data container with dataLineAngles return container of angles of line * @brief data container with dataLineAngles return container of angles of line
* @return pointer on container of angles of line * @return pointer on container of angles of line
*/ */
inline const QHash<QString, qreal> *DataLineAngles() const {return &lineAngles;} const QHash<QString, qreal> *DataLineAngles() const;
/** /**
* @brief data container with dataDetails return container of details * @brief data container with dataDetails return container of details
* @return pointer on container of details * @return pointer on container of details
*/ */
inline const QHash<qint64, VDetail> *DataDetails() const {return &details;} const QHash<quint32, VDetail> *DataDetails() const;
/** /**
* @brief UpdateId update id. If new id bigger when current save new like current. * @brief UpdateId update id. If new id bigger when current save new like current.
* @param newId id * @param newId id
*/ */
static void UpdateId(qint64 newId); static void UpdateId(quint32 newId);
/**
* @brief CreateManTableIGroup generate man standard table of measurements
*/
void CreateManTableIGroup ();
private: private:
/** /**
* @brief _id current id. New object will have value +1. For empty class equal 0. * @brief _id current id. New object will have value +1. For empty class equal 0.
*/ */
static qint64 _id; static quint32 _id;
/** qreal _size;
* @brief base container of base data (size and growth) QString sizeName;
*/ qreal _height;
QHash<QString, qint32> base; QString heightName;
/** /**
* @brief gObjects graphicals objects of pattern. * @brief gObjects graphicals objects of pattern.
*/ */
QHash<qint64, VGObject*> gObjects; QHash<quint32, VGObject*> gObjects;
/** /**
* @brief standardTable container of standard table rows * @brief measurements container of measurements.
*/ */
QHash<QString, VStandardTableRow> standardTable; QHash<QString, VMeasurement> measurements;
/** /**
* @brief incrementTable * @brief increments
*/ */
QHash<QString, VIncrementTableRow> incrementTable; QHash<QString, VIncrement> increments;
/** /**
* @brief lengthLines container of lines lengths * @brief lengthLines container of lines lengths
*/ */
@ -419,7 +422,7 @@ private:
/** /**
* @brief details container of details * @brief details container of details
*/ */
QHash<qint64, VDetail> details; QHash<quint32, VDetail> details;
template <typename key, typename val> template <typename key, typename val>
/** /**
* @brief GetObject return object from container * @brief GetObject return object from container
@ -445,7 +448,7 @@ private:
* @param id id of existing object * @param id id of existing object
* @param point object * @param point object
*/ */
void UpdateObject(QHash<qint64, val > &obj, const qint64 &id, val point); void UpdateObject(QHash<quint32, val > &obj, const quint32 &id, val point);
template <typename key, typename val> template <typename key, typename val>
/** /**
* @brief AddObject add object to container * @brief AddObject add object to container
@ -453,7 +456,147 @@ private:
* @param value object * @param value object
* @return id of object in container * @return id of object in container
*/ */
static qint64 AddObject(QHash<key, val> &obj, val value); static quint32 AddObject(QHash<key, val> &obj, val value);
}; };
inline void VContainer::AddMeasurement(const QString &name, const VMeasurement &m)
{
measurements[name] = m;
}
inline void VContainer::UpdateMeasurement(const QString &name, VMeasurement m)
{
measurements[name] = m;
}
inline void VContainer::UpdateIncrement(const QString &name, VIncrement incr)
{
increments[name] = incr;
}
inline void VContainer::ClearIncrementTable()
{
increments.clear();
}
inline void VContainer::ClearMeasurements()
{
measurements.clear();
}
inline void VContainer::ClearLengthLines()
{
lengthLines.clear();
}
inline void VContainer::ClearLengthSplines()
{
lengthSplines.clear();
}
inline void VContainer::ClearLengthArcs()
{
lengthArcs.clear();
}
inline void VContainer::ClearLineAngles()
{
lineAngles.clear();
}
inline void VContainer::ClearDetails()
{
details.clear();
}
inline void VContainer::SetSize(qreal size)
{
_size = size;
}
inline void VContainer::SetSizeName(const QString &name)
{
sizeName = name;
}
inline void VContainer::SetHeight(qreal height)
{
_height = height;
}
inline void VContainer::SetHeightName(const QString &name)
{
heightName = name;
}
inline qreal VContainer::size() const
{
return _size;
}
inline QString VContainer::SizeName() const
{
return sizeName;
}
inline qreal VContainer::height() const
{
return _height;
}
inline QString VContainer::HeightName() const
{
return heightName;
}
inline bool VContainer::IncrementTableContains(const QString &name)
{
return increments.contains(name);
}
inline void VContainer::RemoveIncrementTableRow(const QString &name)
{
increments.remove(name);
}
inline const QHash<quint32, VGObject *> *VContainer::DataGObjects() const
{
return &gObjects;
}
inline const QHash<QString, VMeasurement> *VContainer::DataMeasurements() const
{
return &measurements;
}
inline const QHash<QString, VIncrement> *VContainer::DataIncrements() const
{
return &increments;
}
inline const QHash<QString, qreal> *VContainer::DataLengthLines() const
{
return &lengthLines;
}
inline const QHash<QString, qreal> *VContainer::DataLengthSplines() const
{
return &lengthSplines;
}
inline const QHash<QString, qreal> *VContainer::DataLengthArcs() const
{
return &lengthArcs;
}
inline const QHash<QString, qreal> *VContainer::DataLineAngles() const
{
return &lineAngles;
}
inline const QHash<quint32, VDetail> *VContainer::DataDetails() const
{
return &details;
}
#endif // VCONTAINER_H #endif // VCONTAINER_H

View file

@ -26,10 +26,22 @@
** **
*************************************************************************/ *************************************************************************/
#include "vincrementtablerow.h" #include "vincrement.h"
VIncrementTableRow::VIncrementTableRow() VIncrement::VIncrement()
:id(0), base(0), ksize(0), kgrowth(0), description(QString()){} :id(0), base(0), ksize(50.0), kheight(176.0), description(QString()){}
VIncrementTableRow::VIncrementTableRow(qint64 id, qreal base, qreal ksize, qreal kgrowth, QString description) VIncrement::VIncrement(quint32 id, qreal base, qreal ksize, qreal kheight, QString description)
:id(id), base(base), ksize(ksize), kgrowth(kgrowth), description(description){} :id(id), base(base), ksize(ksize), kheight(kheight), description(description){}
qreal VIncrement::GetValue() const
{
return base;
}
qreal VIncrement::GetValue(const qreal &size, const qreal &height) const
{
const qreal k_size = ( size - 50.0 ) / 2.0;
const qreal k_height = ( height - 176.0 ) / 6.0;
return base + k_size * ksize + k_height * kheight;
}

View file

@ -32,15 +32,15 @@
#include <QString> #include <QString>
/** /**
* @brief The VIncrementTableRow class keep data row of increment table * @brief The VIncrement class keep data row of increment table
*/ */
class VIncrementTableRow class VIncrement
{ {
public: public:
/** /**
* @brief VIncrementTableRow create enpty row * @brief VIncrementTableRow create enpty row
*/ */
VIncrementTableRow(); VIncrement();
/** /**
* @brief VIncrementTableRow create row * @brief VIncrementTableRow create row
* @param id id * @param id id
@ -49,63 +49,64 @@ public:
* @param kgrowth increment in growths * @param kgrowth increment in growths
* @param description description of increment * @param description description of increment
*/ */
VIncrementTableRow(qint64 id, qreal base, qreal ksize, qreal kgrowth, VIncrement(quint32 id, qreal base, qreal ksize, qreal kheight, QString description = QString());
QString description = QString());
/** /**
* @brief getId return id of row * @brief getId return id of row
* @return id * @return id
*/ */
inline qint64 getId() const {return id;} quint32 getId() const;
/** /**
* @brief setId set id of row * @brief setId set id of row
* @param value id * @param value id
*/ */
inline void setId(const qint64 &value) {id = value;} void setId(const quint32 &value);
/** /**
* @brief getBase return value in base size and growth * @brief getBase return value in base size and growth
* @return value * @return value
*/ */
inline qreal getBase() const {return base;} qreal getBase() const;
/** /**
* @brief setBase set value in base size and growth * @brief setBase set value in base size and growth
* @param value base value * @param value base value
*/ */
inline void setBase(const qreal &value) {base = value;} void setBase(const qreal &value);
/** /**
* @brief getKsize return increment in sizes * @brief getKsize return increment in sizes
* @return increment * @return increment
*/ */
inline qreal getKsize() const {return ksize;} qreal getKsize() const;
/** /**
* @brief setKsize set increment in sizes * @brief setKsize set increment in sizes
* @param value value of increment * @param value value of increment
*/ */
inline void setKsize(const qreal &value) {ksize = value;} void setKsize(const qreal &value);
/** /**
* @brief getKgrowth return increment in growths * @brief getKheight return increment in growths
* @return increment * @return increment
*/ */
inline qreal getKgrowth() const {return kgrowth;} qreal getKheight() const;
/** /**
* @brief setKgrowth set increment in growths * @brief setKheight set increment in growths
* @param value value of increment * @param value value of increment
*/ */
inline void setKgrowth(const qreal &value) {kgrowth = value;} void setKheight(const qreal &value);
/** /**
* @brief getDescription return description * @brief getDescription return description
* @return description * @return description
*/ */
inline QString getDescription() const {return description;} QString getDescription() const;
/** /**
* @brief setDescription set description for row * @brief setDescription set description for row
* @param value description * @param value description
*/ */
inline void setDescription(const QString &value) {description = value;} void setDescription(const QString &value);
qreal GetValue() const;
qreal GetValue(const qreal &size, const qreal &height) const;
private: private:
/** /**
* @brief id identificator * @brief id identificator
*/ */
qint64 id; quint32 id;
/** /**
* @brief base value in base size and growth * @brief base value in base size and growth
*/ */
@ -117,11 +118,61 @@ private:
/** /**
* @brief kgrowth increment in growths * @brief kgrowth increment in growths
*/ */
qreal kgrowth; qreal kheight;
/** /**
* @brief description description of increment * @brief description description of increment
*/ */
QString description; QString description;
}; };
inline quint32 VIncrement::getId() const
{
return id;
}
inline void VIncrement::setId(const quint32 &value)
{
id = value;
}
inline qreal VIncrement::getBase() const
{
return base;
}
inline void VIncrement::setBase(const qreal &value)
{
base = value;
}
inline qreal VIncrement::getKsize() const
{
return ksize;
}
inline void VIncrement::setKsize(const qreal &value)
{
ksize = value;
}
inline qreal VIncrement::getKheight() const
{
return kheight;
}
inline void VIncrement::setKheight(const qreal &value)
{
kheight = value;
}
inline QString VIncrement::getDescription() const
{
return description;
}
inline void VIncrement::setDescription(const QString &value)
{
description = value;
}
#endif // VINCREMENTTABLEROW_H #endif // VINCREMENTTABLEROW_H

View file

@ -0,0 +1,67 @@
/************************************************************************
**
** @file vstandardtablecell.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "vmeasurement.h"
VMeasurement::VMeasurement()
:base(0), ksize(50.0), kheight(176.0), gui_text(QString()), number(QString()), virtualM(false),
_tagName(QString())
{
}
VMeasurement::VMeasurement(const qreal &base, const qreal &ksize, const qreal &kgrowth,
const QString &gui_text, const QString &number, const QString &tagName)
:base(base), ksize(ksize), kheight(kgrowth), gui_text(gui_text), number(number), virtualM(false),
_tagName(tagName)
{
}
VMeasurement::VMeasurement(const qreal &base, const QString &gui_text, const QString &number, const QString &tagName)
:base(base), ksize(50.0), kheight(176.0), gui_text(gui_text), number(number), virtualM(false),
_tagName(tagName)
{
}
qreal VMeasurement::GetValue() const
{
return base;
}
qreal VMeasurement::GetValue(const qreal &size, const qreal &height) const
{
const qreal k_size = ( size - 50.0 ) / 2.0;
const qreal k_height = ( height - 176.0 ) / 6.0;
return base + k_size * ksize + k_height * kheight;
}

View file

@ -32,15 +32,15 @@
#include <QString> #include <QString>
/** /**
* @brief The VStandardTableRow class keep data row of standard table * @brief The VMeasurement class keep data row of standard table
*/ */
class VStandardTableRow class VMeasurement
{ {
public: public:
/** /**
* @brief VStandardTableRow create empty row * @brief VStandardTableRow create empty row
*/ */
VStandardTableRow(); VMeasurement();
/** /**
* @brief VStandardTableRow create row * @brief VStandardTableRow create row
* @param base value in base size and growth * @param base value in base size and growth
@ -48,34 +48,45 @@ public:
* @param kgrowth increment in growths * @param kgrowth increment in growths
* @param description description of increment * @param description description of increment
*/ */
VStandardTableRow(const qint32 &base, const qreal &ksize, const qreal &kgrowth, VMeasurement(const qreal &base, const qreal &ksize, const qreal &kheight,
const QString &description = QString()); const QString &gui_text = QString(), const QString &number = QString(),
~VStandardTableRow(){} const QString &TagName = QString());
VMeasurement(const qreal &base, const QString &gui_text = QString(),
const QString &number = QString(), const QString &TagName = QString());
~VMeasurement(){}
/** /**
* @brief GetBase return value in base size and growth * @brief GetBase return value in base size and growth
* @return value * @return value
*/ */
inline qint32 GetBase() const {return base;} qreal GetBase() const;
void setBase(const qreal &value);
/** /**
* @brief GetKsize return increment in sizes * @brief GetKsize return increment in sizes
* @return increment * @return increment
*/ */
inline qreal GetKsize() const {return ksize;} qreal GetKsize() const;
/** /**
* @brief GetKgrowth return increment in growths * @brief GetKgrowth return increment in growths
* @return increment * @return increment
*/ */
inline qreal GetKgrowth() const {return kgrowth;} qreal GetKheight() const;
/** /**
* @brief GetDescription return description * @brief GetDescription return description
* @return description * @return description
*/ */
inline QString GetDescription() const {return description;} QString GetDescription() const;
QString GetNumber() const;
qreal GetValue() const;
qreal GetValue(const qreal &size, const qreal &height) const;
QString TagName() const;
void setTagName(const QString &TagName);
bool Virtual() const;
void setVirtual(bool value);
private: private:
/** /**
* @brief base value in base size and growth * @brief base value in base size and growth
*/ */
qint32 base; qreal base;
/** /**
* @brief ksize increment in sizes * @brief ksize increment in sizes
*/ */
@ -83,11 +94,64 @@ private:
/** /**
* @brief kgrowth increment in growths * @brief kgrowth increment in growths
*/ */
qreal kgrowth; qreal kheight;
/** /**
* @brief description description measurement * @brief description description measurement
*/ */
QString description; QString gui_text;
QString number;
bool virtualM;
QString _tagName;
}; };
inline qreal VMeasurement::GetBase() const
{
return base;
}
inline void VMeasurement::setBase(const qreal &value)
{
base = value;
}
inline qreal VMeasurement::GetKsize() const
{
return ksize;
}
inline qreal VMeasurement::GetKheight() const
{
return kheight;
}
inline QString VMeasurement::GetDescription() const
{
return gui_text;
}
inline QString VMeasurement::GetNumber() const
{
return number;
}
inline QString VMeasurement::TagName() const
{
return _tagName;
}
inline void VMeasurement::setTagName(const QString &tagName)
{
_tagName = tagName;
}
inline bool VMeasurement::Virtual() const
{
return virtualM;
}
inline void VMeasurement::setVirtual(bool value)
{
virtualM = value;
}
#endif // VSTANDARDTABLEROW_H #endif // VSTANDARDTABLEROW_H

View file

@ -29,10 +29,9 @@
#include "configdialog.h" #include "configdialog.h"
ConfigDialog::ConfigDialog(QWidget *parent) : ConfigDialog::ConfigDialog(QWidget *parent) :
QDialog(parent), contentsWidget(0), pagesWidget(0), configurationPage(0), patternPage(0) QDialog(parent), contentsWidget(nullptr), pagesWidget(nullptr), configurationPage(nullptr), patternPage(nullptr)
{ {
contentsWidget = new QListWidget; contentsWidget = new QListWidget;
Q_CHECK_PTR(contentsWidget);
contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setViewMode(QListView::IconMode);
contentsWidget->setIconSize(QSize(96, 84)); contentsWidget->setIconSize(QSize(96, 84));
contentsWidget->setMovement(QListView::Static); contentsWidget->setMovement(QListView::Static);
@ -41,20 +40,14 @@ ConfigDialog::ConfigDialog(QWidget *parent) :
contentsWidget->setSpacing(12); contentsWidget->setSpacing(12);
pagesWidget = new QStackedWidget; pagesWidget = new QStackedWidget;
Q_CHECK_PTR(pagesWidget);
configurationPage = new ConfigurationPage(); configurationPage = new ConfigurationPage();
Q_CHECK_PTR(configurationPage);
pagesWidget->addWidget(configurationPage); pagesWidget->addWidget(configurationPage);
patternPage = new PatternPage(); patternPage = new PatternPage();
Q_CHECK_PTR(patternPage);
pagesWidget->addWidget(patternPage); pagesWidget->addWidget(patternPage);
QPushButton *applyButton = new QPushButton(tr("Apply")); QPushButton *applyButton = new QPushButton(tr("Apply"));
Q_CHECK_PTR(applyButton);
QPushButton *canselButton = new QPushButton(tr("&Cancel")); QPushButton *canselButton = new QPushButton(tr("&Cancel"));
Q_CHECK_PTR(canselButton);
QPushButton *okButton = new QPushButton(tr("&Ok")); QPushButton *okButton = new QPushButton(tr("&Ok"));
Q_CHECK_PTR(okButton);
createIcons(); createIcons();
contentsWidget->setCurrentRow(0); contentsWidget->setCurrentRow(0);
@ -64,19 +57,16 @@ ConfigDialog::ConfigDialog(QWidget *parent) :
connect(okButton, &QPushButton::clicked, this, &ConfigDialog::Ok); connect(okButton, &QPushButton::clicked, this, &ConfigDialog::Ok);
QHBoxLayout *horizontalLayout = new QHBoxLayout; QHBoxLayout *horizontalLayout = new QHBoxLayout;
Q_CHECK_PTR(horizontalLayout);
horizontalLayout->addWidget(contentsWidget); horizontalLayout->addWidget(contentsWidget);
horizontalLayout->addWidget(pagesWidget, 1); horizontalLayout->addWidget(pagesWidget, 1);
QHBoxLayout *buttonsLayout = new QHBoxLayout; QHBoxLayout *buttonsLayout = new QHBoxLayout;
Q_CHECK_PTR(buttonsLayout);
buttonsLayout->addStretch(1); buttonsLayout->addStretch(1);
buttonsLayout->addWidget(applyButton); buttonsLayout->addWidget(applyButton);
buttonsLayout->addWidget(canselButton); buttonsLayout->addWidget(canselButton);
buttonsLayout->addWidget(okButton); buttonsLayout->addWidget(okButton);
QVBoxLayout *mainLayout = new QVBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
Q_CHECK_PTR(mainLayout);
mainLayout->addLayout(horizontalLayout); mainLayout->addLayout(horizontalLayout);
mainLayout->addStretch(1); mainLayout->addStretch(1);
mainLayout->addSpacing(12); mainLayout->addSpacing(12);
@ -107,14 +97,12 @@ void ConfigDialog::closeEvent(QCloseEvent *event)
void ConfigDialog::createIcons() void ConfigDialog::createIcons()
{ {
QListWidgetItem *configButton = new QListWidgetItem(contentsWidget); QListWidgetItem *configButton = new QListWidgetItem(contentsWidget);
Q_CHECK_PTR(configButton);
configButton->setIcon(QIcon("://icon/config.png")); configButton->setIcon(QIcon("://icon/config.png"));
configButton->setText(tr("Configuration")); configButton->setText(tr("Configuration"));
configButton->setTextAlignment(Qt::AlignHCenter); configButton->setTextAlignment(Qt::AlignHCenter);
configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *patternButton = new QListWidgetItem(contentsWidget); QListWidgetItem *patternButton = new QListWidgetItem(contentsWidget);
Q_CHECK_PTR(patternButton);
patternButton->setIcon(QIcon("://icon/pattern_config.png")); patternButton->setIcon(QIcon("://icon/pattern_config.png"));
patternButton->setText(tr("Pattern")); patternButton->setText(tr("Pattern"));
patternButton->setTextAlignment(Qt::AlignHCenter); patternButton->setTextAlignment(Qt::AlignHCenter);
@ -125,12 +113,12 @@ void ConfigDialog::createIcons()
void ConfigDialog::Apply() void ConfigDialog::Apply()
{ {
switch(contentsWidget->currentRow()) switch (contentsWidget->currentRow())
{ {
case(0): case (0):
configurationPage->Apply(); configurationPage->Apply();
break; break;
case(1): case (1):
patternPage->Apply(); patternPage->Apply();
break; break;
default: default:

View file

@ -40,7 +40,7 @@ class ConfigDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ConfigDialog(QWidget *parent = 0); explicit ConfigDialog(QWidget *parent = nullptr);
public slots: public slots:
void changePage(QListWidgetItem *current, QListWidgetItem *previous); void changePage(QListWidgetItem *current, QListWidgetItem *previous);
protected: protected:

View file

@ -0,0 +1,437 @@
/************************************************************************
**
** @file dialoghistory.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialoghistory.h"
#include "ui_dialoghistory.h"
#include "../../geometry/varc.h"
#include "../../geometry/vspline.h"
#include "../../geometry/vsplinepath.h"
#include "../../tools/vabstracttool.h"
#include "../../tools/drawTools/vtoolcutspline.h"
#include "../../tools/drawTools/vtoolcutsplinepath.h"
#include "../../tools/drawTools/vtoolcutarc.h"
#include <QDebug>
#include <QPushButton>
DialogHistory::DialogHistory(VContainer *data, VPattern *doc, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogHistory), doc(doc), cursorRow(0),
cursorToolRecordRow(0)
{
ui->setupUi(this);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogHistory::DialogAccepted);
FillTable();
InitialTable();
connect(ui->tableWidget, &QTableWidget::cellClicked, this, &DialogHistory::cellClicked);
connect(this, &DialogHistory::ShowHistoryTool, doc, &VPattern::ShowHistoryTool);
connect(doc, &VPattern::ChangedCursor, this, &DialogHistory::ChangedCursor);
connect(doc, &VPattern::patternChanged, this, &DialogHistory::UpdateHistory);
connect(doc, &VPattern::ChangedActivDraw, this, &DialogHistory::UpdateHistory);
ShowPoint();
}
DialogHistory::~DialogHistory()
{
delete ui;
}
void DialogHistory::DialogAccepted()
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
emit DialogClosed(QDialog::Accepted);
}
void DialogHistory::cellClicked(int row, int column)
{
if (column == 0)
{
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
item->setIcon(QIcon());
item = ui->tableWidget->item(row, 0);
cursorRow = row;
item->setIcon(QIcon("://icon/32x32/put_after.png"));
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
disconnect(doc, &VPattern::ChangedCursor, this, &DialogHistory::ChangedCursor);
doc->setCursor(id);
connect(doc, &VPattern::ChangedCursor, this, &DialogHistory::ChangedCursor);
}
else
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
cursorToolRecordRow = row;
item = ui->tableWidget->item(cursorToolRecordRow, 0);
id = qvariant_cast<quint32>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, true);
}
}
void DialogHistory::ChangedCursor(quint32 id)
{
for (qint32 i = 0; i< ui->tableWidget->rowCount(); ++i)
{
QTableWidgetItem *item = ui->tableWidget->item(i, 0);
quint32 rId = qvariant_cast<quint32>(item->data(Qt::UserRole));
if (rId == id)
{
QTableWidgetItem *oldCursorItem = ui->tableWidget->item(cursorRow, 0);
oldCursorItem->setIcon(QIcon());
cursorRow = i;
item->setIcon(QIcon("://icon/32x32/put_after.png"));
}
}
}
void DialogHistory::UpdateHistory()
{
FillTable();
InitialTable();
}
void DialogHistory::FillTable()
{
ui->tableWidget->clear();
const QVector<VToolRecord> *history = doc->getHistory();
Q_CHECK_PTR(history);
qint32 currentRow = -1;
qint32 count = 0;
ui->tableWidget->setRowCount(history->size());
for (qint32 i = 0; i< history->size(); ++i)
{
const VToolRecord tool = history->at(i);
if (tool.getNameDraw() != doc->GetNameActivDraw())
{
continue;
}
const QString historyRecord = Record(tool);
if (historyRecord.isEmpty() ==false)
{
currentRow++;
{
QTableWidgetItem *item = new QTableWidgetItem(QString());
item->setTextAlignment(Qt::AlignHCenter);
item->setData(Qt::UserRole, tool.getId());
ui->tableWidget->setItem(currentRow, 0, item);
}
QTableWidgetItem *item = new QTableWidgetItem(historyRecord);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->tableWidget->setItem(currentRow, 1, item);
++count;
}
}
ui->tableWidget->setRowCount(count);
if (history->size()>0)
{
cursorRow = currentRow;
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
Q_CHECK_PTR(item);
item->setIcon(QIcon("://icon/32x32/put_after.png"));
}
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->resizeRowsToContents();
ui->tableWidget->verticalHeader()->setDefaultSectionSize(20);
}
QString DialogHistory::Record(const VToolRecord &tool)
{
const QDomElement domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement() == false)
{
qDebug()<<"Can't find element by id"<<Q_FUNC_INFO;
return QString(tr("Can't create record."));
}
try
{
switch ( tool.getTypeTool() )
{
case Valentina::ArrowTool:
Q_UNREACHABLE();
break;
case Valentina::SinglePointTool:
{
const QString name = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - Base point")).arg(name);
}
case Valentina::EndLineTool:
{
const quint32 basePointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrBasePoint, "0");
const QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1_%2 - Line from point %1 to point %2")).arg(basePointIdName, toolIdName);
}
case Valentina::LineTool:
{
const quint32 firstPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
return QString(tr("%1_%2 - Line from point %1 to point %2")).arg(firstPointIdName, secondPointIdName);
}
case Valentina::AlongLineTool:
{
const quint32 basePointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%3 - Point along line %1_%2")).arg(basePointIdName, secondPointIdName, toolIdName);
}
case Valentina::ShoulderPointTool:
{
const QString name = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - Point of shoulder")).arg(name);
}
case Valentina::NormalTool:
{
const quint32 basePointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%3 - normal to line %1_%2")).arg(basePointIdName, secondPointIdName, toolIdName);
}
case Valentina::BisectorTool:
{
const quint32 firstPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const quint32 thirdPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrThirdPoint, "0");
const QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
const QString thirdPointIdName = data->GeometricObject<const VPointF *>(thirdPointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%4 - bisector of angle %1_%2_%3")).arg(firstPointIdName, secondPointIdName,
thirdPointIdName, toolIdName);
}
case Valentina::LineIntersectTool:
{
const quint32 p1Line1 = doc->GetParametrUInt(domElement, VAbstractTool::AttrP1Line1, "0");
const quint32 p2Line1 = doc->GetParametrUInt(domElement, VAbstractTool::AttrP2Line1, "0");
const quint32 p1Line2 = doc->GetParametrUInt(domElement, VAbstractTool::AttrP1Line2, "0");
const quint32 p2Line2 = doc->GetParametrUInt(domElement, VAbstractTool::AttrP2Line2, "0");
const QString p1Line1Name = data->GeometricObject<const VPointF *>(p1Line1)->name();
const QString p2Line1Name = data->GeometricObject<const VPointF *>(p2Line1)->name();
const QString p1Line2Name = data->GeometricObject<const VPointF *>(p1Line2)->name();
const QString p2Line2Name = data->GeometricObject<const VPointF *>(p2Line2)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%5 - intersection of lines %1_%2 and %3_%4")).arg(p1Line1Name, p2Line1Name,
p1Line2Name, p2Line2Name,
toolIdName);
}
case Valentina::SplineTool:
{
const VSpline *spl = data->GeometricObject<const VSpline *>(tool.getId());
Q_CHECK_PTR(spl);
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
return QString(tr("Curve %1_%2")).arg(splP1Name, splP4Name);
}
case Valentina::ArcTool:
{
const VArc *arc = data->GeometricObject<const VArc *>(tool.getId());
Q_CHECK_PTR(arc);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
return QString(tr("Arc with center in point %1")).arg(arcCenterName);
}
case Valentina::SplinePathTool:
{
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(tool.getId());
Q_CHECK_PTR(splPath);
const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record;
if (points.size() != 0 )
{
const QString pName = data->GeometricObject<const VPointF *>(points.at(0).P().id())->name();
record = QString(tr("Curve point %1")).arg(pName);
if (points.size() > 1)
{
const QString pName = data->GeometricObject<const VPointF *>(points.last().P().id())->name();
record.append(QString("_%1").arg(pName));
}
}
else
{
qDebug()<<"Not enough points in splinepath"<<Q_FUNC_INFO;
return QString(tr("Can't create record."));
}
return record;
}
case Valentina::PointOfContact:
{
const quint32 center = doc->GetParametrUInt(domElement, VAbstractTool::AttrCenter, "0");
const quint32 firstPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
const QString centerName = data->GeometricObject<const VPointF *>(center)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%4 - point of contact of arc with the center in point %1 and line %2_%3")).arg(
centerName, firstPointIdName, secondPointIdName, toolIdName);
}
case Valentina::Height:
{
const quint32 basePointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrBasePoint, "0");
const quint32 p1LineId = doc->GetParametrUInt(domElement, VAbstractTool::AttrP1Line, "0");
const quint32 p2LineId = doc->GetParametrUInt(domElement, VAbstractTool::AttrP2Line, "0");
const QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
const QString p1LineIdName = data->GeometricObject<const VPointF *>(p1LineId)->name();
const QString p2LineIdName = data->GeometricObject<const VPointF *>(p2LineId)->name();
return QString(tr("Point of perpendicular from point %1 to line %2_%3")).arg(basePointIdName,
p1LineIdName,
p2LineIdName);
}
case Valentina::Triangle:
{
const quint32 axisP1Id = doc->GetParametrUInt(domElement, VAbstractTool::AttrAxisP1, "0");
const quint32 axisP2Id = doc->GetParametrUInt(domElement, VAbstractTool::AttrAxisP2, "0");
const quint32 firstPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString axisP1IdName = data->GeometricObject<const VPointF *>(axisP1Id)->name();
const QString axisP2IdName = data->GeometricObject<const VPointF *>(axisP2Id)->name();
const QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
return QString(tr("Triangle: axis %1_%2, points %3 and %4")).arg(axisP1IdName, axisP2IdName,
firstPointIdName, secondPointIdName);
}
case Valentina::PointOfIntersection:
{
const quint32 firstPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrFirstPoint, "0");
const quint32 secondPointId = doc->GetParametrUInt(domElement, VAbstractTool::AttrSecondPoint, "0");
const QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
const QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - point of intersection %2 and %3")).arg(toolIdName, firstPointIdName,
secondPointIdName);
}
case Valentina::CutArcTool:
{
const quint32 arcId = doc->GetParametrUInt(domElement, VToolCutArc::AttrArc, "0");
const VArc *arc = data->GeometricObject<const VArc *>(arcId);
Q_CHECK_PTR(arc);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - cut arc with center %2")).arg(toolIdName, arcCenterName);
}
case Valentina::CutSplineTool:
{
const quint32 splineId = doc->GetParametrUInt(domElement, VToolCutSpline::AttrSpline, "0");
const VSpline *spl = data->GeometricObject<const VSpline *>(splineId);
Q_CHECK_PTR(spl);
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
return QString(tr("%1 - cut curve %2_%3")).arg(toolIdName, splP1Name, splP4Name);
}
case Valentina::CutSplinePathTool:
{
const quint32 splinePathId = doc->GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, "0");
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
Q_CHECK_PTR(splPath);
const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record;
if (points.size() != 0 )
{
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
const QString pName = data->GeometricObject<const VPointF *>(points.at(0).P().id())->name();
record = QString(tr("%1 - cut curve path %2")).arg(toolIdName, pName);
if (points.size() > 1)
{
const QString pName = data->GeometricObject<const VPointF *>(points.last().P().id())->name();
const QString name = QString("_%1").arg(pName);
record.append(name);
}
}
else
{
qDebug()<<"Not enough points in splinepath"<<Q_FUNC_INFO;
return QString(tr("Can't create record."));
}
return record;
}
//Because "history" not only show history of pattern, but help restore current data for each pattern's
//piece, we need add record about details and nodes, but don't show them.
case Valentina::DetailTool:
break;
case Valentina::UnionDetails:
break;
case Valentina::NodeArc:
break;
case Valentina::NodePoint:
break;
case Valentina::NodeSpline:
break;
case Valentina::NodeSplinePath:
break;
default:
qDebug()<<"Got wrong tool type. Ignore.";
break;
}
}
catch (const VExceptionBadId &e)
{
qDebug()<<e.ErrorMessage()<<Q_FUNC_INFO;
return QString(tr("Can't create record."));
}
return QString();
}
void DialogHistory::InitialTable()
{
ui->tableWidget->setSortingEnabled(false);
ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem(" "));
ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("Tool")));
}
void DialogHistory::ShowPoint()
{
QVector<VToolRecord> *history = doc->getHistory();
if (history->size()>0)
{
QTableWidgetItem *item = ui->tableWidget->item(0, 1);
item->setSelected(true);
cursorToolRecordRow = 0;
item = ui->tableWidget->item(0, 0);
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, true);
}
}
void DialogHistory::closeEvent(QCloseEvent *event)
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
DialogTool::closeEvent(event);
}

View file

@ -29,8 +29,8 @@
#ifndef DIALOGHISTORY_H #ifndef DIALOGHISTORY_H
#define DIALOGHISTORY_H #define DIALOGHISTORY_H
#include "dialogtool.h" #include "../tools/dialogtool.h"
#include "../xml/vdomdocument.h" #include "../../xml/vpattern.h"
namespace Ui namespace Ui
{ {
@ -50,7 +50,7 @@ public:
* @param doc dom document container * @param doc dom document container
* @param parent parent widget * @param parent parent widget
*/ */
DialogHistory(VContainer *data, VDomDocument *doc, QWidget *parent = 0); DialogHistory(VContainer *data, VPattern *doc, QWidget *parent = nullptr);
virtual ~DialogHistory(); virtual ~DialogHistory();
public slots: public slots:
/** /**
@ -67,7 +67,7 @@ public slots:
* @brief ChangedCursor changed cursor of input. Cursor show after what record we will insert new object * @brief ChangedCursor changed cursor of input. Cursor show after what record we will insert new object
* @param id id of object * @param id id of object
*/ */
void ChangedCursor(qint64 id); void ChangedCursor(quint32 id);
/** /**
* @brief UpdateHistory update history table * @brief UpdateHistory update history table
*/ */
@ -79,7 +79,7 @@ signals:
* @param color new color of tool * @param color new color of tool
* @param enable true enable selection, false disable selection * @param enable true enable selection, false disable selection
*/ */
void ShowHistoryTool(qint64 id, Qt::GlobalColor color, bool enable); void ShowHistoryTool(quint32 id, Qt::GlobalColor color, bool enable);
protected: protected:
/** /**
* @brief closeEvent handle when windows is closing * @brief closeEvent handle when windows is closing
@ -95,7 +95,7 @@ private:
/** /**
* @brief doc dom document container * @brief doc dom document container
*/ */
VDomDocument *doc; VPattern *doc;
/** /**
* @brief cursorRow save number of row where is cursor * @brief cursorRow save number of row where is cursor
*/ */

View file

@ -0,0 +1,749 @@
/************************************************************************
**
** @file dialogincrements.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialogincrements.h"
#include "ui_dialogincrements.h"
#include "../../widgets/doubledelegate.h"
#include "../../widgets/textdelegate.h"
#include "../../exception/vexception.h"
#include "../../xml/vstandardmeasurements.h"
#include <QPushButton>
#include <QFile>
DialogIncrements::DialogIncrements(VContainer *data, VPattern *doc, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogIncrements), data(data), doc(doc), row(0), column(0), m(nullptr)
{
ui->setupUi(this);
if (qApp->patternType() == Pattern::Individual)
{
const QString filePath = doc->MPath();
try
{
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", filePath);
m = new VIndividualMeasurements(data);
m->setContent(filePath);
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
emit DialogClosed(QDialog::Rejected);
return;
}
}
//Same regex in each shema files. Don't forget synchronize.
TextDelegate *textDelegate = new TextDelegate("^([^0-9-*/^+=\\s\\(\\)%:;!]){1,1}([^-*/^+=\\s\\(\\)%:;!]){0,}$",
ui->tableWidgetIncrement);
ui->tableWidgetIncrement->setItemDelegateForColumn(0, textDelegate);// name
DoubleSpinBoxDelegate *doubleDelegate = new DoubleSpinBoxDelegate(ui->tableWidgetIncrement);
ui->tableWidgetIncrement->setItemDelegateForColumn(2, doubleDelegate);// base value
ui->tableWidgetIncrement->setItemDelegateForColumn(3, doubleDelegate);// in sizes
ui->tableWidgetIncrement->setItemDelegateForColumn(4, doubleDelegate);// in heights
FillMeasurements();
FillIncrements();
FillLengthLines();
FillLengthSplines();
FillLengthArcs();
if (qApp->patternType() == Pattern::Standard)
{
ui->pagePersonalInformation->setVisible(false);
}
else
{
QRegExpValidator *reg = new QRegExpValidator(QRegExp("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"));
ui->lineEditMail->setValidator(reg);
ui->tableWidgetMeasurements->setColumnHidden( 1, true );// calculated value
ui->tableWidgetMeasurements->setColumnHidden( 3, true );// in sizes
ui->tableWidgetMeasurements->setColumnHidden( 4, true );// in heights
ui->tableWidgetIncrement->setColumnHidden( 1, true );// calculated value
ui->tableWidgetIncrement->setColumnHidden( 3, true );// in sizes
ui->tableWidgetIncrement->setColumnHidden( 4, true );// in heights
ui->tableWidgetMeasurements->setItemDelegateForColumn(2, doubleDelegate);// base value
connect(ui->tableWidgetMeasurements, &QTableWidget::cellChanged, this, &DialogIncrements::MeasurementChanged);
ui->lineEditGivenName->setText(m->GivenName());
ui->lineEditFamilyName->setText(m->FamilyName());
ui->comboBoxSex->addItem(tr("male"),QVariant(m->GenderToStr(VIndividualMeasurements::Male)));
ui->comboBoxSex->addItem(tr("female"),QVariant(m->GenderToStr(VIndividualMeasurements::Female)));
qint32 index = ui->comboBoxSex->findData(m->GenderToStr(m->Sex()));
if (index != -1)
{
ui->comboBoxSex->setCurrentIndex(index);
}
ui->dateEditBirthDate->setDate(m->BirthDate());
ui->lineEditMail->setText(m->Mail());
connect(ui->lineEditGivenName, &QLineEdit::editingFinished, this, &DialogIncrements::SaveGivenName);
connect(ui->lineEditFamilyName, &QLineEdit::editingFinished, this, &DialogIncrements::SaveFamilyName);
connect(ui->lineEditMail, &QLineEdit::editingFinished, this, &DialogIncrements::SaveEmail);
connect(ui->comboBoxSex, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
&DialogIncrements::SaveSex);
connect(ui->dateEditBirthDate, &QDateEdit::dateChanged, this, &DialogIncrements::SaveBirthDate);
}
ui->toolBoxMeasurements->setCurrentIndex(1);
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this, &DialogIncrements::IncrementChanged);
connect(ui->toolButtonAdd, &QPushButton::clicked, this, &DialogIncrements::clickedToolButtonAdd);
connect(ui->toolButtonRemove, &QPushButton::clicked, this, &DialogIncrements::clickedToolButtonRemove);
connect(this, &DialogIncrements::FullUpdateTree, this->doc, &VPattern::FullUpdateTree);
connect(this, &DialogIncrements::haveLiteChange, this->doc, &VPattern::haveLiteChange);
connect(this->doc, &VPattern::FullUpdateFromFile, this, &DialogIncrements::FullUpdateFromFile);
ui->tabWidget->setCurrentIndex(0);
connect(ui->toolButtonOpenMeasurements, &QToolButton::clicked, this, &DialogIncrements::OpenTable);
}
void DialogIncrements::FillMeasurements()
{
const QHash<QString, VMeasurement> *table = data->DataMeasurements();
QHashIterator<QString, VMeasurement> i(*table);
QMap<QString, VMeasurement> map;
//Sorting QHash by id
while (i.hasNext())
{
i.next();
map.insert(i.key(), i.value());
}
qint32 currentRow = -1;
QMapIterator<QString, VMeasurement> iMap(map);
ui->tableWidgetMeasurements->setRowCount ( table->size() );
while (iMap.hasNext())
{
iMap.next();
VMeasurement m = iMap.value();
currentRow++;
QTableWidgetItem *item = new QTableWidgetItem(QString(iMap.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setToolTip(m.GetDescription());
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetMeasurements->setItem(currentRow, 0, item);
if (qApp->patternType() == Pattern::Standard)
{
QTableWidgetItem *item = new QTableWidgetItem(QString().setNum(data->GetValueStandardTableRow(iMap.key())));
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetMeasurements->setItem(currentRow, 1, item);
}
item = new QTableWidgetItem(QString().setNum(m.GetBase()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetMeasurements->setItem(currentRow, 2, item);
if (qApp->patternType() == Pattern::Standard)
{
QTableWidgetItem *item = new QTableWidgetItem(QString().setNum(m.GetKsize()));
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetMeasurements->setItem(currentRow, 3, item);
item = new QTableWidgetItem(QString().setNum(m.GetKheight()));
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetMeasurements->setItem(currentRow, 4, item);
}
item = new QTableWidgetItem(m.GetNumber());
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetMeasurements->setItem(currentRow, 5, item);
}
ui->tableWidgetMeasurements->verticalHeader()->setDefaultSectionSize(20);
ui->tableWidgetMeasurements->resizeColumnsToContents();
ui->tableWidgetMeasurements->resizeRowsToContents();
}
void DialogIncrements::FillIncrements()
{
const QHash<QString, VIncrement> *increments = data->DataIncrements();
QHashIterator<QString, VIncrement> i(*increments);
QMap<quint32, QString> map;
//Sorting QHash by id
while (i.hasNext())
{
i.next();
VIncrement incr = i.value();
map.insert(incr.getId(), i.key());
}
qint32 currentRow = -1;
QMapIterator<quint32, QString> iMap(map);
while (iMap.hasNext())
{
iMap.next();
VIncrement incr = increments->value(iMap.value());
currentRow++;
ui->tableWidgetIncrement->setRowCount ( increments->size() );
QTableWidgetItem *item = new QTableWidgetItem(iMap.value());
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setData(Qt::UserRole, incr.getId());
ui->tableWidgetIncrement->setItem(currentRow, 0, item);
if (qApp->patternType() == Pattern::Standard)
{
item = new QTableWidgetItem(QString().setNum(data->GetValueIncrementTableRow(iMap.value())));
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetIncrement->setItem(currentRow, 1, item);
}
item = new QTableWidgetItem(QString().setNum(incr.getBase()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 2, item);
if (qApp->patternType() == Pattern::Standard)
{
item = new QTableWidgetItem(QString().setNum(incr.getKsize()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 3, item);
item = new QTableWidgetItem(QString().setNum(incr.getKheight()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 4, item);
}
item = new QTableWidgetItem(incr.getDescription());
item->setTextAlignment(Qt::AlignLeft);
ui->tableWidgetIncrement->setItem(currentRow, 5, item);
}
if (ui->tableWidgetIncrement->rowCount()>0)
{
ui->toolButtonRemove->setEnabled(true);
}
ui->tableWidgetIncrement->resizeColumnsToContents();
ui->tableWidgetIncrement->resizeRowsToContents();
ui->tableWidgetIncrement->setCurrentCell( row, column );
}
void DialogIncrements::FillLengthLines()
{
const QHash<QString, qreal> *linesTable = data->DataLengthLines();
QHashIterator<QString, qreal> iHash(*linesTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetLines->setRowCount ( linesTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetLines->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetLines->setItem(currentRow, 1, item);
}
ui->tableWidgetLines->resizeColumnsToContents();
ui->tableWidgetLines->resizeRowsToContents();
ui->tableWidgetLines->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FillLengthSplines()
{
const QHash<QString, qreal> *splinesTable = data->DataLengthSplines();
QHashIterator<QString, qreal> iHash(*splinesTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetSplines->setRowCount ( splinesTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignLeft);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetSplines->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetSplines->setItem(currentRow, 1, item);
}
ui->tableWidgetSplines->resizeColumnsToContents();
ui->tableWidgetSplines->resizeRowsToContents();
ui->tableWidgetSplines->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FillLengthArcs()
{
const QHash<QString, qreal> *arcsTable = data->DataLengthArcs();
QHashIterator<QString, qreal> iHash(*arcsTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetArcs->setRowCount ( arcsTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetArcs->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetArcs->setItem(currentRow, 1, item);
}
ui->tableWidgetArcs->verticalHeader()->setDefaultSectionSize(20);
ui->tableWidgetArcs->resizeColumnsToContents();
ui->tableWidgetArcs->resizeRowsToContents();
}
void DialogIncrements::FullUpdateFromFile()
{
disconnect(ui->tableWidgetMeasurements, &QTableWidget::cellChanged, this, &DialogIncrements::MeasurementChanged);
ui->tableWidgetMeasurements->clearContents();
FillMeasurements();
connect(ui->tableWidgetMeasurements, &QTableWidget::cellChanged, this, &DialogIncrements::MeasurementChanged);
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this, &DialogIncrements::IncrementChanged);
ui->tableWidgetIncrement->clearContents();
FillIncrements();
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this, &DialogIncrements::IncrementChanged);
ui->tableWidgetLines->clearContents();
FillLengthLines();
ui->tableWidgetSplines->clearContents();
FillLengthSplines();
ui->tableWidgetArcs->clearContents();
FillLengthArcs();
}
void DialogIncrements::SaveGivenName()
{
m->setGivenName(ui->lineEditGivenName->text());
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save GivenName";
}
}
void DialogIncrements::SaveFamilyName()
{
m->setFamilyName(ui->lineEditFamilyName->text());
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save FamilyName";
}
}
void DialogIncrements::SaveEmail()
{
m->setMail(ui->lineEditMail->text());
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save Email";
}
}
void DialogIncrements::SaveSex(int index)
{
m->setSex(m->StrToGender(ui->comboBoxSex->itemData(index).toString()));
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save Sex";
}
}
void DialogIncrements::SaveBirthDate(const QDate & date)
{
m->setBirthDate(date);
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save BirthDate";
}
}
void DialogIncrements::OpenTable()
{
QString text = tr("Measurements use different units than pattern. This pattern required measurements in %1")
.arg(doc->UnitsToStr(qApp->patternUnit()));
if (qApp->patternType() == Pattern::Individual)
{
const QString filter(tr("Individual measurements (*.vit)"));
const QString filePath = QFileDialog::getOpenFileName(this, tr("Open file"), QDir::homePath(), filter);
if (filePath.isEmpty())
{
return;
}
VIndividualMeasurements *m1 = nullptr;
try
{
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", filePath);
m1 = new VIndividualMeasurements(data);
m1->setContent(filePath);
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
delete m1;
emit DialogClosed(QDialog::Rejected);
return;
}
Valentina::Units mUnit = m1->Unit();
if (qApp->patternUnit() != mUnit)
{
QMessageBox::critical(this, tr("Wrong units."), text);
delete m1;
return;
}
delete m;
m = m1;
data->ClearMeasurements();
m->Measurements();
emit FullUpdateTree();
doc->SetPath(filePath);
emit haveLiteChange();
}
else
{
const QString filter(tr("Standard measurements (*.vst)"));
const QString filePath = QFileDialog::getOpenFileName(this, tr("Open file"), QDir::homePath(), filter);
if (filePath.isEmpty())
{
return;
}
VStandardMeasurements *m1 = nullptr;
try
{
VDomDocument::ValidateXML("://schema/standard_measurements.xsd", filePath);
m1 = new VStandardMeasurements(data);
m1->setContent(filePath);
Valentina::Units mUnit = m1->Unit();
if (qApp->patternUnit() != mUnit)
{
QMessageBox::critical(this, tr("Wrong units."), text);
delete m1;
return;
}
m1->SetSize();
m1->SetHeight();
data->ClearMeasurements();
m1->Measurements();
delete m1;
emit FullUpdateTree();
doc->SetPath(filePath);
emit haveLiteChange();
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
delete m1;
emit DialogClosed(QDialog::Rejected);
return;
}
}
}
void DialogIncrements::clickedToolButtonAdd()
{
ui->tableWidgetIncrement->setFocus(Qt::OtherFocusReason);
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::IncrementChanged);
qint32 currentRow = ui->tableWidgetIncrement->rowCount();
ui->tableWidgetIncrement->insertRow( currentRow );
qint32 num = 1;
QString name;
do
{
name = QString(tr("Name_%1")).arg(num);
num++;
} while (data->IncrementTableContains(name));
const quint32 id = data->getNextId();
const QString description(tr("Description"));
VIncrement incr = VIncrement(id, 0, 0, 0, description);
data->AddIncrement(name, incr);
AddIncrementToFile(id, name, 0, 0, 0, description);
QTableWidgetItem *item = new QTableWidgetItem(name);
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setData(Qt::UserRole, id);
ui->tableWidgetIncrement->setItem(currentRow, 0, item);
ui->tableWidgetIncrement->setCurrentCell(currentRow, 0, QItemSelectionModel::ClearAndSelect);
item = new QTableWidgetItem("0");// calculated value
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetIncrement->setItem(currentRow, 1, item);
item = new QTableWidgetItem("0");// base value
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 2, item);
item = new QTableWidgetItem("0");// in sizes
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 3, item);
item = new QTableWidgetItem("0"); // in heights
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 4, item);
item = new QTableWidgetItem(description);
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 5, item);
ui->toolButtonRemove->setEnabled(true);
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::IncrementChanged);
emit haveLiteChange();
}
void DialogIncrements::clickedToolButtonRemove()
{
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::IncrementChanged);
QTableWidgetItem *item = ui->tableWidgetIncrement->currentItem();
qint32 row = item->row();
QTableWidgetItem *itemName = ui->tableWidgetIncrement->item(row, 0);
data->RemoveIncrementTableRow(itemName->text());
quint32 id = qvariant_cast<quint32>(item->data(Qt::UserRole));
QDomElement domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
QDomNodeList list = doc->elementsByTagName(VPattern::TagIncrements);
list.at(0).removeChild(domElement);
}
ui->tableWidgetIncrement->removeRow(row);
if (ui->tableWidgetIncrement->rowCount() == 0)
{
ui->toolButtonRemove->setEnabled(false);
}
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::IncrementChanged);
emit haveLiteChange();
}
void DialogIncrements::AddIncrementToFile(const quint32 &id, const QString &name, const qreal &base, const qreal &ksize,
const qreal &kheight, const QString &description)
{
QDomElement element = doc->createElement(VPattern::TagIncrement);
doc->SetAttribute(element, VDomDocument::AttrId, id);
doc->SetAttribute(element, VPattern::IncrementName, name);
doc->SetAttribute(element, VPattern::IncrementBase, base);
doc->SetAttribute(element, VPattern::IncrementKsize, ksize);
doc->SetAttribute(element, VPattern::IncrementKgrowth, kheight);
doc->SetAttribute(element, VPattern::IncrementDescription, description);
QDomNodeList list = doc->elementsByTagName(VPattern::TagIncrements);
list.at(0).appendChild(element);
}
void DialogIncrements::IncrementChanged ( qint32 row, qint32 column )
{
const QTableWidgetItem *itemName = ui->tableWidgetIncrement->item(row, 0);
const QTableWidgetItem *item = ui->tableWidgetIncrement->item(row, column);
const quint32 id = qvariant_cast<quint32>(itemName->data(Qt::UserRole));
QDomElement domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement() == false)
{
qDebug()<<"Cant't find increment with id = "<<id<<Q_FUNC_INFO;
return;
}
this->row = row;
switch (column)
{
case 0: // VPattern::IncrementName
doc->SetAttribute(domElement, VPattern::IncrementName, item->text());
data->ClearIncrementTable();
this->column = 2;
emit FullUpdateTree();
break;
case 2: // VPattern::IncrementBase
doc->SetAttribute(domElement, VPattern::IncrementBase, item->text());
this->column = 3;
emit FullUpdateTree();
break;
case 3: // VPattern::IncrementKsize
doc->SetAttribute(domElement, VPattern::IncrementKsize, item->text());
this->column = 4;
emit FullUpdateTree();
break;
case 4: // VPattern::IncrementKgrowth
doc->SetAttribute(domElement, VPattern::IncrementKgrowth, item->text());
this->column = 5;
emit FullUpdateTree();
break;
case 5: // VPattern::IncrementDescription
{
doc->SetAttribute(domElement, VPattern::IncrementDescription, item->text());
VIncrement incr = data->GetIncrement(itemName->text());
incr.setDescription(item->text());
data->UpdateIncrement(itemName->text(), incr);
ui->tableWidgetIncrement->resizeColumnsToContents();
ui->tableWidgetIncrement->resizeRowsToContents();
this->column = 0;
ui->tableWidgetIncrement->setCurrentCell( row, this->column );
break;
}
default:
break;
}
emit haveLiteChange();
}
void DialogIncrements::MeasurementChanged(qint32 row, qint32 column)
{
switch (column)
{
case 2:// value column
{
const QTableWidgetItem *itemName = ui->tableWidgetMeasurements->item(row, 0);
QTableWidgetItem *item = ui->tableWidgetMeasurements->item(row, 2);
VMeasurement measur = data->GetMeasurement(itemName->text());
const QString tag = measur.TagName();
QDomNodeList list = m->elementsByTagName(tag);
QDomElement domElement = list.at(0).toElement();
if (domElement.isElement() == false)
{
qDebug()<<"Cant't find measurement "<<tag<<Q_FUNC_INFO;
return;
}
m->SetAttribute(domElement, VIndividualMeasurements::AttrValue, item->text());
if (m->SaveDocument(doc->MPath()) == false)
{
qDebug()<<"Can't save measurement";
}
bool ok = false;
const qreal base = item->text().replace(",", ".").toDouble(&ok);
if (ok == false)
{
measur.setBase(0);
item->setText("0");
qDebug()<<"Can't convert toDouble measurement value"<<Q_FUNC_INFO;
}
else
{
measur.setBase(base);
}
data->ClearMeasurements();
m->Measurements();
emit FullUpdateTree();
break;
}
default:
break;
}
}
void DialogIncrements::closeEvent(QCloseEvent *event)
{
emit DialogClosed(QDialog::Accepted);
event->accept();
}
DialogIncrements::~DialogIncrements()
{
delete ui;
delete m;
}

View file

@ -29,8 +29,9 @@
#ifndef DIALOGINCREMENTS_H #ifndef DIALOGINCREMENTS_H
#define DIALOGINCREMENTS_H #define DIALOGINCREMENTS_H
#include "dialogtool.h" #include "../tools/dialogtool.h"
#include "../xml/vdomdocument.h" #include "../../xml/vpattern.h"
#include "../../xml/vindividualmeasurements.h"
namespace Ui namespace Ui
{ {
@ -50,7 +51,7 @@ public:
* @param doc dom document container * @param doc dom document container
* @param parent parent widget * @param parent parent widget
*/ */
DialogIncrements(VContainer *data, VDomDocument *doc, QWidget *parent = 0); DialogIncrements(VContainer *data, VPattern *doc, QWidget *parent = nullptr);
~DialogIncrements(); ~DialogIncrements();
public slots: public slots:
/** /**
@ -66,11 +67,18 @@ public slots:
* @param row number of row * @param row number of row
* @param column number of column * @param column number of column
*/ */
void cellChanged ( qint32 row, qint32 column ); void IncrementChanged ( qint32 row, qint32 column );
void MeasurementChanged ( qint32 row, qint32 column );
/** /**
* @brief FullUpdateFromFile update information in tables form file * @brief FullUpdateFromFile update information in tables form file
*/ */
void FullUpdateFromFile(); void FullUpdateFromFile();
void SaveGivenName();
void SaveFamilyName();
void SaveEmail();
void SaveSex(int index);
void SaveBirthDate(const QDate & date);
void OpenTable();
signals: signals:
/** /**
* @brief FullUpdateTree signal update data for dom document * @brief FullUpdateTree signal update data for dom document
@ -95,7 +103,7 @@ private:
/** /**
* @brief doc dom document container * @brief doc dom document container
*/ */
VDomDocument *doc; VPattern *doc;
/** /**
* @brief row save number of row current selected cell * @brief row save number of row current selected cell
*/ */
@ -104,14 +112,15 @@ private:
* @brief column save number of column current selected cell * @brief column save number of column current selected cell
*/ */
qint32 column; qint32 column;
VIndividualMeasurements *m;
/** /**
* @brief FillStandardTable fill data for standard table * @brief FillMeasurements load measurements data
*/ */
void FillStandardTable(); void FillMeasurements();
/** /**
* @brief FillIncrementTable fill data for increment table * @brief FillIncrementTable fill data for increment table
*/ */
void FillIncrementTable(); void FillIncrements();
/** /**
* @brief FillLengthLines fill data for table of lines lengths * @brief FillLengthLines fill data for table of lines lengths
*/ */
@ -130,11 +139,11 @@ private:
* @param name name * @param name name
* @param base base value * @param base base value
* @param ksize increment in sizes * @param ksize increment in sizes
* @param kgrowth increment in growths * @param kheight increment in heights
* @param description description of increment * @param description description of increment
*/ */
void AddIncrementToFile(qint64 id, QString name, qreal base, qreal ksize, qreal kgrowth, void AddIncrementToFile(const quint32 &id, const QString &name, const qreal &base,
QString description); const qreal &ksize, const qreal &kheight, const QString &description);
}; };
#endif // DIALOGINCREMENTS_H #endif // DIALOGINCREMENTS_H

View file

@ -0,0 +1,605 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogIncrements</class>
<widget class="QDialog" name="DialogIncrements">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>979</width>
<height>574</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>800</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Increments</string>
</property>
<property name="windowIcon">
<iconset resource="../../../share/resources/icon.qrc">
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tabStandard">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="title">
<string>Measurements</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>6</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Load another measurements table</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QToolButton" name="toolButtonOpenMeasurements">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="document-open">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</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="pagePersonalInformation">
<property name="enabled">
<bool>true</bool>
</property>
<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="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelGivenName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Given name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditGivenName"/>
</item>
</layout>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>6</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="labelFamilyName">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Family name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFamilyName"/>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="labelBirthDate">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Birth date</string>
</property>
</widget>
</item>
<item>
<widget class="QDateEdit" name="dateEditBirthDate">
<property name="displayFormat">
<string>yyyy-MM-dd</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="labelSex">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>84</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Sex</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxSex">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="2">
<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>
</widget>
<widget class="QWidget" name="pageMeasurements">
<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>
<widget class="QTableWidget" name="tableWidgetMeasurements">
<property name="enabled">
<bool>true</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>25</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>45</number>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>8</number>
</attribute>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In heights</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabIncrements">
<attribute name="title">
<string>Increments</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<widget class="QTableWidget" name="tableWidgetIncrement">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>17</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>20</number>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In heights</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="toolButtonAdd">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="list-add">
<normaloff/>
</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="toolButtonRemove">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="list-remove">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Lines</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetLines">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Line</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Curves</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetSplines">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Curve</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Arcs</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetArcs">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Arc</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>tableWidgetMeasurements</tabstop>
<tabstop>tableWidgetIncrement</tabstop>
<tabstop>toolButtonAdd</tabstop>
<tabstop>toolButtonRemove</tabstop>
<tabstop>tableWidgetLines</tabstop>
<tabstop>tableWidgetSplines</tabstop>
<tabstop>tableWidgetArcs</tabstop>
</tabstops>
<resources>
<include location="../../../share/resources/icon.qrc"/>
</resources>
<connections/>
</ui>

View file

@ -0,0 +1,287 @@
/************************************************************************
**
** @file dialogindividualmeasurements.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date 22 2, 2014
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialogindividualmeasurements.h"
#include "ui_dialogindividualmeasurements.h"
#include <QButtonGroup>
#include "../../xml/vindividualmeasurements.h"
#include <QSettings>
#include <QFileDialog>
#include <QMessageBox>
#include "../../widgets/vapplication.h"
DialogIndividualMeasurements::DialogIndividualMeasurements(VContainer *data, const QString &patternPieceName,
QWidget *parent) :
QDialog(parent), ui(new Ui::DialogIndividualMeasurements), _name(patternPieceName), _tablePath(QString()),
data(data)
{
ui->setupUi(this);
{
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
connect(bOk, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogAccepted);
}
{
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogRejected);
}
ui->lineEditName->setText(_name);
LoadIndividualTables();
InitUnits();
CheckState();
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogIndividualMeasurements::CheckState);
connect(ui->buttonGroupPath, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this,
&DialogIndividualMeasurements::CheckState);
connect(ui->toolButtonOpenExist, &QToolButton::clicked, this, &DialogIndividualMeasurements::OpenTable);
connect(ui->toolButtonOpenNew, &QToolButton::clicked, this, &DialogIndividualMeasurements::NewTable);
}
DialogIndividualMeasurements::~DialogIndividualMeasurements()
{
delete ui;
}
void DialogIndividualMeasurements::DialogAccepted()
{
_name = ui->lineEditName->text();
if (ui->radioButtonExistM->isChecked())
{
_tablePath = ui->lineEditPathExistM->text();
}
else
{
_tablePath = ui->lineEditPathNewM->text();
QFile table(_tablePath);
if (table.exists())
{
table.remove();
}
const qint32 index = ui->comboBoxLang->currentIndex();
QString path = ui->comboBoxLang->itemData(index).toString();
QFile iMeasur(path);
if ( iMeasur.copy(_tablePath) == false )
{
QMessageBox::warning(this, tr("Could not create measurements file"), tr("Please try again or change file"));
DialogRejected();
}
}
try
{
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", _tablePath);
VIndividualMeasurements m(data);
m.setContent(_tablePath);
const qint32 index = ui->comboBoxUnits->currentIndex();
Valentina::Units unit = VDomDocument::StrToUnits(ui->comboBoxUnits->itemData(index).toString());
m.setUnit(unit);
qApp->setPatternUnit( m.Unit());
QFile iMeasur(_tablePath);
if (iMeasur.open(QIODevice::WriteOnly| QIODevice::Truncate))
{
const int indent = 4;
QTextStream out(&iMeasur);
out.setCodec("UTF-8");
m.save(out, indent);
iMeasur.close();
}
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
qDebug()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
DialogRejected();
}
accept();
}
void DialogIndividualMeasurements::DialogRejected()
{
_name.clear();
_tablePath.clear();
reject();
}
void DialogIndividualMeasurements::CheckState()
{
bool flagName = false;
if (ui->lineEditName->text().isEmpty() == false)
{
flagName = true;
}
bool flagPath = false;
if (ui->radioButtonExistM->isChecked())
{
ui->lineEditPathExistM->setEnabled(true);
ui->toolButtonOpenExist->setEnabled(true);
ui->lineEditPathNewM->setEnabled(false);
ui->toolButtonOpenNew->setEnabled(false);
ui->comboBoxLang->setEnabled(false);
ui->comboBoxUnits->setEnabled(false);
if (ui->lineEditPathExistM->text().isEmpty() == false)
{
flagPath = true;
}
}
else
{
ui->lineEditPathNewM->setEnabled(true);
ui->toolButtonOpenNew->setEnabled(true);
ui->comboBoxLang->setEnabled(true);
ui->comboBoxUnits->setEnabled(true);
ui->toolButtonOpenExist->setEnabled(false);
ui->lineEditPathExistM->setEnabled(false);
if (ui->lineEditPathNewM->text().isEmpty() == false)
{
flagPath = true;
}
}
bool flagLang = false;
{
const QComboBox *box = ui->comboBoxLang;
Q_CHECK_PTR(box);
if (box->count() > 0 && box->currentIndex() != -1)
{
flagLang = true;
}
}
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
bOk->setEnabled(flagName && flagPath && flagLang);
}
void DialogIndividualMeasurements::LoadIndividualTables()
{
QStringList filters;
filters << "*.vit";
QDir tablesDir(qApp->pathToTables());
tablesDir.setNameFilters(filters);
tablesDir.setCurrent(qApp->pathToTables());
const QStringList allFiles = tablesDir.entryList(QDir::NoDotAndDotDot | QDir::Files);
if (allFiles.isEmpty() == true)
{
ui->comboBoxLang->clear();
CheckState();
return;
}
for (int i = 0; i < allFiles.size(); ++i)
{
QFileInfo fi(allFiles.at(i));
try
{
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", fi.absoluteFilePath());
VIndividualMeasurements m(data);
m.setContent(fi.absoluteFilePath());
const QString lang = QLocale(m.Language()).nativeLanguageName();
ui->comboBoxLang->addItem(lang, QVariant(fi.absoluteFilePath()));
}
catch(VException &e)
{
qDebug()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
continue;
}
}
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName());
QString defaultLocale = QLocale::system().name(); // e.g. "de_DE"
defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de"
QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString();
//TODO make sure this part work.
// set default translators and language checked
qint32 index = ui->comboBoxLang->findData(checkedLocale);
if (index != -1)
{
ui->comboBoxLang->setCurrentIndex(index);
}
}
void DialogIndividualMeasurements::OpenTable()
{
const QString filter(tr("Individual measurements (*.vit)"));
QString fileName = QFileDialog::getOpenFileName(this, tr("Open file"), QDir::homePath(), filter);
if (fileName.isEmpty())
{
return;
}
try
{
VDomDocument::ValidateXML("://schema/individual_measurements.xsd", fileName);
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
fileName.clear();
}
ui->lineEditPathExistM->setText(fileName);
ui->lineEditPathExistM->setToolTip(fileName);
CheckState();
}
void DialogIndividualMeasurements::NewTable()
{
QString dir = QDir::homePath()+"/measurements.vit";
QString name = QFileDialog::getSaveFileName(this, tr("Where save measurements?"), dir,
tr("Individual measurements (*.vit)"));
if (name.isEmpty())
{
return;
}
// what if the users did not specify a suffix...?
QFileInfo f( name );
if (f.suffix().isEmpty() && f.suffix() != "vit")
{
name += ".vit";
}
ui->lineEditPathNewM->setText(name);
ui->lineEditPathNewM->setToolTip(name);
CheckState();
}
void DialogIndividualMeasurements::InitUnits()
{
ui->comboBoxUnits->addItem(tr("centimeter"), QVariant(VDomDocument::UnitsToStr(Valentina::Cm)));
ui->comboBoxUnits->addItem(tr("inch"), QVariant(VDomDocument::UnitsToStr(Valentina::Inch)));
}

View file

@ -0,0 +1,74 @@
/************************************************************************
**
** @file dialogindividualmeasurements.h
** @author Roman Telezhinsky <dismine@gmail.com>
** @date 22 2, 2014
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#ifndef DIALOGINDIVIDUALMEASUREMENTS_H
#define DIALOGINDIVIDUALMEASUREMENTS_H
#include <QDialog>
#include "../../container/vcontainer.h"
namespace Ui
{
class DialogIndividualMeasurements;
}
class DialogIndividualMeasurements : public QDialog
{
Q_OBJECT
public:
DialogIndividualMeasurements(VContainer *data, const QString &patternPieceName, QWidget *parent = nullptr);
~DialogIndividualMeasurements();
QString name() const;
QString tablePath() const;
public slots:
void OpenTable();
void NewTable();
void CheckState();
void DialogAccepted();
void DialogRejected();
private:
Q_DISABLE_COPY(DialogIndividualMeasurements)
Ui::DialogIndividualMeasurements *ui;
QString _name;
QString _tablePath;
VContainer *data;
void LoadIndividualTables();
void InitUnits();
};
inline QString DialogIndividualMeasurements::name() const
{
return _name;
}
inline QString DialogIndividualMeasurements::tablePath() const
{
return _tablePath;
}
#endif // DIALOGINDIVIDUALMEASUREMENTS_H

View file

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogIndividualMeasurements</class>
<widget class="QDialog" name="DialogIndividualMeasurements">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>397</width>
<height>280</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Pattern piece name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditName"/>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="radioButtonExistM">
<property name="text">
<string>Exist measurements</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroupPath</string>
</attribute>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditPathExistM">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonOpenExist">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="document-open">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="radioButtonNewM">
<property name="text">
<string>New measurements</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroupPath</string>
</attribute>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxLang">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Units:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxUnits"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditPathNewM">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="toolButtonOpenNew">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="document-new">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogIndividualMeasurements</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogIndividualMeasurements</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
<buttongroups>
<buttongroup name="buttonGroupPath"/>
</buttongroups>
</ui>

View file

@ -0,0 +1,60 @@
/************************************************************************
**
** @file dialogpatterntype.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date 21 2, 2014
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialogmeasurements.h"
#include "ui_dialogmeasurements.h"
DialogMeasurements::DialogMeasurements(QWidget *parent) :
QDialog(parent), ui(new Ui::DialogMeasurements), result(Measurements::Individual)
{
ui->setupUi(this);
connect(ui->toolButtonStandard, &QToolButton::clicked, this, &DialogMeasurements::StandardMeasurements);
connect(ui->toolButtonIndividual, &QToolButton::clicked, this, &DialogMeasurements::IndividualMeasurements);
}
DialogMeasurements::~DialogMeasurements()
{
delete ui;
}
Measurements::Type DialogMeasurements::type() const
{
return result;
}
void DialogMeasurements::StandardMeasurements()
{
result = Measurements::Standard;
accept();
}
void DialogMeasurements::IndividualMeasurements()
{
result = Measurements::Individual;
accept();
}

View file

@ -1,8 +1,8 @@
/************************************************************************ /************************************************************************
** **
** @file vexceptionuniqueid.cpp ** @file dialogpatterntype.h
** @author Roman Telezhinsky <dismine@gmail.com> ** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013 ** @date 21 2, 2014
** **
** @brief ** @brief
** @copyright ** @copyright
@ -26,28 +26,39 @@
** **
*************************************************************************/ *************************************************************************/
#include "vexceptionuniqueid.h" #ifndef DIALOGMEASUREMENTS_H
#define DIALOGMEASUREMENTS_H
#include <QtWidgets> #include <QDialog>
VExceptionUniqueId::VExceptionUniqueId(const QString &what, const QDomElement &domElement) namespace Ui
:VException(what), tagText(QString()), tagName(QString()), lineNumber(-1)
{ {
Q_ASSERT_X(domElement.isNull() == false, Q_FUNC_INFO, "domElement is null"); class DialogMeasurements;
QTextStream stream(&tagText);
domElement.save(stream, 4);
tagName = domElement.tagName();
lineNumber = domElement.lineNumber();
} }
QString VExceptionUniqueId::ErrorMessage() const namespace Measurements
{ {
QString error = QString("ExceptionUniqueId: %1").arg(what); /**
return error; * @brief The Type enum pattern measurements.
*/
enum Type { Standard, Individual };
Q_DECLARE_FLAGS(Types, Type)
} }
Q_DECLARE_OPERATORS_FOR_FLAGS( Measurements::Types )
QString VExceptionUniqueId::DetailedInformation() const class DialogMeasurements : public QDialog
{ {
QString detail = QString("tag: %1 in line %2\nFull tag:\n%3").arg(tagName).arg(lineNumber).arg(tagText); Q_OBJECT
return detail; public:
} explicit DialogMeasurements(QWidget *parent = nullptr);
~DialogMeasurements();
Measurements::Type type() const;
private:
Q_DISABLE_COPY(DialogMeasurements)
Ui::DialogMeasurements *ui;
Measurements::Type result;
void StandardMeasurements();
void IndividualMeasurements();
};
#endif // DIALOGMEASUREMENTS_H

View file

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogMeasurements</class>
<widget class="QDialog" name="DialogMeasurements">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>385</width>
<height>244</height>
</rect>
</property>
<property name="windowTitle">
<string>Measurements</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:18pt;&quot;&gt;Please, choose pattern type.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>13</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QToolButton" name="toolButtonStandard">
<property name="text">
<string>Graduation</string>
</property>
<property name="icon">
<iconset resource="../../../share/resources/icon.qrc">
<normaloff>:/icon/Graduation.png</normaloff>:/icon/Graduation.png</iconset>
</property>
<property name="iconSize">
<size>
<width>160</width>
<height>120</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Use for creation pattern standard measurement table</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QToolButton" name="toolButtonIndividual">
<property name="text">
<string>Individual</string>
</property>
<property name="icon">
<iconset resource="../../../share/resources/icon.qrc">
<normaloff>:/icon/individual.png</normaloff>:/icon/individual.png</iconset>
</property>
<property name="iconSize">
<size>
<width>160</width>
<height>120</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Use for creation pattern individual measurements</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>toolButtonIndividual</tabstop>
<tabstop>toolButtonStandard</tabstop>
</tabstops>
<resources>
<include location="../../../share/resources/icon.qrc"/>
</resources>
<connections/>
</ui>

View file

@ -30,7 +30,7 @@
#include "ui_dialogpatternproperties.h" #include "ui_dialogpatternproperties.h"
#include <QSettings> #include <QSettings>
DialogPatternProperties::DialogPatternProperties(VDomDocument *doc, QWidget *parent) : DialogPatternProperties::DialogPatternProperties(VPattern *doc, QWidget *parent) :
QDialog(parent), ui(new Ui::DialogPatternProperties), doc(doc) QDialog(parent), ui(new Ui::DialogPatternProperties), doc(doc)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -39,7 +39,7 @@ DialogPatternProperties::DialogPatternProperties(VDomDocument *doc, QWidget *par
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName()); QApplication::applicationName());
#ifdef Q_OS_WIN32 #ifdef Q_OS_WIN
QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USERNAME").constData())).toString(); QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USERNAME").constData())).toString();
#else #else
QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USER").constData())).toString(); QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USER").constData())).toString();
@ -57,7 +57,7 @@ DialogPatternProperties::DialogPatternProperties(VDomDocument *doc, QWidget *par
Q_CHECK_PTR(bCansel); Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogPatternProperties::close); connect(bCansel, &QPushButton::clicked, this, &DialogPatternProperties::close);
connect(this, &DialogPatternProperties::haveChange, this->doc, &VDomDocument::haveLiteChange); connect(this, &DialogPatternProperties::haveChange, this->doc, &VPattern::haveLiteChange);
} }
DialogPatternProperties::~DialogPatternProperties() DialogPatternProperties::~DialogPatternProperties()

View file

@ -30,17 +30,18 @@
#define DIALOGPATTERNPROPERTIES_H #define DIALOGPATTERNPROPERTIES_H
#include <QDialog> #include <QDialog>
#include "../xml/vdomdocument.h" #include "../../xml/vpattern.h"
namespace Ui { namespace Ui
class DialogPatternProperties; {
class DialogPatternProperties;
} }
class DialogPatternProperties : public QDialog class DialogPatternProperties : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
DialogPatternProperties(VDomDocument *doc, QWidget *parent = 0); DialogPatternProperties(VPattern *doc, QWidget *parent = nullptr);
virtual ~DialogPatternProperties(); virtual ~DialogPatternProperties();
signals: signals:
void haveChange(); void haveChange();
@ -49,7 +50,7 @@ public slots:
private: private:
Q_DISABLE_COPY(DialogPatternProperties) Q_DISABLE_COPY(DialogPatternProperties)
Ui::DialogPatternProperties *ui; Ui::DialogPatternProperties *ui;
VDomDocument *doc; VPattern *doc;
void Write(const QString &tagName, const QString &text) const; void Write(const QString &tagName, const QString &text) const;
}; };

View file

@ -0,0 +1,160 @@
/************************************************************************
**
** @file dialogstandardmeasurements.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date 21 2, 2014
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialogstandardmeasurements.h"
#include "ui_dialogstandardmeasurements.h"
#include <QDir>
#include "../../xml/vstandardmeasurements.h"
#include "../../widgets/vapplication.h"
DialogStandardMeasurements::DialogStandardMeasurements(VContainer *data, const QString &patternPieceName,
QWidget *parent) :
QDialog(parent), ui(new Ui::DialogStandardMeasurements), data(data), _name(patternPieceName), _tablePath(QString())
{
ui->setupUi(this);
{
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
connect(bOk, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogAccepted);
}
{
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogRejected);
}
ui->lineEditName->setText(_name);
LoadStandardTables();
CheckState();
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogStandardMeasurements::CheckState);
}
DialogStandardMeasurements::~DialogStandardMeasurements()
{
delete ui;
}
QString DialogStandardMeasurements::name() const
{
return _name;
}
QString DialogStandardMeasurements::tablePath() const
{
return _tablePath;
}
void DialogStandardMeasurements::DialogAccepted()
{
_name = ui->lineEditName->text();
const qint32 index = ui->comboBoxTables->currentIndex();
_tablePath = ui->comboBoxTables->itemData(index).toString();
try
{
VDomDocument::ValidateXML("://schema/standard_measurements.xsd", _tablePath);
VStandardMeasurements m(data);
m.setContent(_tablePath);
qApp->setPatternUnit(m.Unit());
}
catch(VException &e)
{
e.CriticalMessageBox(tr("File error."), this);
qDebug()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
return;
}
accept();
}
void DialogStandardMeasurements::DialogRejected()
{
_name.clear();
_tablePath.clear();
reject();
}
void DialogStandardMeasurements::CheckState()
{
bool flagName = false;
if (ui->lineEditName->text().isEmpty() == false)
{
flagName = true;
}
bool flagTable = false;
{
const QComboBox *box = ui->comboBoxTables;
Q_CHECK_PTR(box);
if (box->count() > 0 && box->currentIndex() != -1)
{
flagTable = true;
}
}
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
bOk->setEnabled(flagTable && flagName);
}
void DialogStandardMeasurements::LoadStandardTables()
{
QStringList filters;
filters << "*.vst";
QDir tablesDir(qApp->pathToTables());
tablesDir.setNameFilters(filters);
tablesDir.setCurrent(qApp->pathToTables());
const QStringList allFiles = tablesDir.entryList(QDir::NoDotAndDotDot | QDir::Files);
if (allFiles.isEmpty() == true)
{
ui->comboBoxTables->clear();
CheckState();
return;
}
for (int i = 0; i < allFiles.size(); ++i)
{
QFileInfo fi(allFiles.at(i));
try
{
VDomDocument::ValidateXML("://schema/standard_measurements.xsd", fi.absoluteFilePath());
VStandardMeasurements m(data);
m.setContent(fi.absoluteFilePath());
ui->comboBoxTables->addItem(m.Description(), QVariant(fi.absoluteFilePath()));
}
catch(VException &e)
{
qDebug()<<"File error."<<e.ErrorMessage()<<e.DetailedInformation()<<Q_FUNC_INFO;
continue;
}
}
}

View file

@ -0,0 +1,61 @@
/************************************************************************
**
** @file dialogstandardmeasurements.h
** @author Roman Telezhinsky <dismine@gmail.com>
** @date 21 2, 2014
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#ifndef DIALOGSTANDARDMEASUREMENTS_H
#define DIALOGSTANDARDMEASUREMENTS_H
#include <QDialog>
#include "../../container/vcontainer.h"
namespace Ui
{
class DialogStandardMeasurements;
}
class DialogStandardMeasurements : public QDialog
{
Q_OBJECT
public:
DialogStandardMeasurements(VContainer *data, const QString &patternPieceName, QWidget *parent = nullptr);
~DialogStandardMeasurements();
QString name() const;
QString tablePath() const;
public slots:
void DialogAccepted();
void DialogRejected();
void CheckState();
private:
Q_DISABLE_COPY(DialogStandardMeasurements)
Ui::DialogStandardMeasurements *ui;
VContainer *data;
QString _name;
QString _tablePath;
void LoadStandardTables();
};
#endif // DIALOGSTANDARDMEASUREMENTS_H

View file

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogStandardMeasurements</class>
<widget class="QDialog" name="DialogStandardMeasurements">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>452</width>
<height>115</height>
</rect>
</property>
<property name="windowTitle">
<string>Standard table</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>206</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Pattern piece name</string>
</property>
<property name="margin">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditName">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Standard measurements table</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxTables">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogStandardMeasurements</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogStandardMeasurements</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View file

@ -27,7 +27,8 @@
*************************************************************************/ *************************************************************************/
#include "pages.h" #include "pages.h"
#include "../options.h" #include "../../options.h"
#include "../../widgets/vapplication.h"
ConfigurationPage::ConfigurationPage(QWidget *parent): ConfigurationPage::ConfigurationPage(QWidget *parent):
QWidget(parent), autoSaveCheck(0), autoTime(0), langCombo(0), osOptionCheck(0), langChanged(false) QWidget(parent), autoSaveCheck(0), autoTime(0), langCombo(0), osOptionCheck(0), langChanged(false)
@ -71,18 +72,14 @@ QGroupBox *ConfigurationPage::SaveGroup()
QApplication::applicationName()); QApplication::applicationName());
QGroupBox *saveGroup = new QGroupBox(tr("Save")); QGroupBox *saveGroup = new QGroupBox(tr("Save"));
Q_CHECK_PTR(saveGroup);
autoSaveCheck = new QCheckBox(tr("Auto-save modified pattern")); autoSaveCheck = new QCheckBox(tr("Auto-save modified pattern"));
Q_CHECK_PTR(autoSaveCheck);
bool autoSaveValue = settings.value("configuration/autosave/state", 1).toBool(); bool autoSaveValue = settings.value("configuration/autosave/state", 1).toBool();
autoSaveCheck->setChecked(autoSaveValue); autoSaveCheck->setChecked(autoSaveValue);
QLabel *intervalLabel = new QLabel(tr("Interval:")); QLabel *intervalLabel = new QLabel(tr("Interval:"));
Q_CHECK_PTR(intervalLabel);
autoTime = new QSpinBox(); autoTime = new QSpinBox();
Q_CHECK_PTR(autoTime);
bool ok = true; bool ok = true;
qint32 autoTimeValue = settings.value("configuration/autosave/time", 5).toInt(&ok); qint32 autoTimeValue = settings.value("configuration/autosave/time", 5).toInt(&ok);
if (ok == false) if (ok == false)
@ -94,13 +91,11 @@ QGroupBox *ConfigurationPage::SaveGroup()
autoTime->setSuffix(tr("min")); autoTime->setSuffix(tr("min"));
QHBoxLayout *autosaveLayout = new QHBoxLayout; QHBoxLayout *autosaveLayout = new QHBoxLayout;
Q_CHECK_PTR(autosaveLayout);
autosaveLayout->addWidget(autoSaveCheck); autosaveLayout->addWidget(autoSaveCheck);
autosaveLayout->addWidget(intervalLabel); autosaveLayout->addWidget(intervalLabel);
autosaveLayout->addWidget(autoTime); autosaveLayout->addWidget(autoTime);
QVBoxLayout *saveLayout = new QVBoxLayout; QVBoxLayout *saveLayout = new QVBoxLayout;
Q_CHECK_PTR(saveLayout);
saveLayout->addLayout(autosaveLayout); saveLayout->addLayout(autosaveLayout);
saveGroup->setLayout(saveLayout); saveGroup->setLayout(saveLayout);
return saveGroup; return saveGroup;
@ -112,21 +107,15 @@ QGroupBox *ConfigurationPage::LangGroup()
QApplication::applicationName()); QApplication::applicationName());
QGroupBox *langGroup = new QGroupBox(tr("Language")); QGroupBox *langGroup = new QGroupBox(tr("Language"));
Q_CHECK_PTR(langGroup);
QLabel *guiLabel = new QLabel(tr("GUI language")); QLabel *guiLabel = new QLabel(tr("GUI language"));
Q_CHECK_PTR(guiLabel);
langCombo = new QComboBox; langCombo = new QComboBox;
Q_CHECK_PTR(langCombo);
// format systems language // format systems language
QString defaultLocale = QLocale::system().name(); // e.g. "de_DE" QString defaultLocale = QLocale::system().name(); // e.g. "de_DE"
defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de" defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de"
QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString(); QString checkedLocale = settings.value("configuration/locale", defaultLocale).toString();
QString m_langPath = QApplication::applicationDirPath(); QString m_langPath = qApp->translationsPath();
m_langPath.append(translationsPath);
QDir dir(m_langPath); QDir dir(m_langPath);
QStringList fileNames = dir.entryList(QStringList("valentina_*.qm")); QStringList fileNames = dir.entryList(QStringList("valentina_*.qm"));
@ -158,26 +147,21 @@ QGroupBox *ConfigurationPage::LangGroup()
&ConfigurationPage::LangChenged); &ConfigurationPage::LangChenged);
QHBoxLayout *guiLangLayout = new QHBoxLayout; QHBoxLayout *guiLangLayout = new QHBoxLayout;
Q_CHECK_PTR(guiLangLayout);
guiLangLayout->addWidget(guiLabel); guiLangLayout->addWidget(guiLabel);
guiLangLayout->addWidget(langCombo); guiLangLayout->addWidget(langCombo);
QLabel *separatorLabel = new QLabel(tr("Decimal separator parts")); QLabel *separatorLabel = new QLabel(tr("Decimal separator parts"));
Q_CHECK_PTR(separatorLabel);
osOptionCheck = new QCheckBox(tr("With OS options (.)")); osOptionCheck = new QCheckBox(tr("With OS options (.)"));
Q_CHECK_PTR(osOptionCheck);
//bool osOptionValue = settings.value("configuration/osSeparator", 1).toBool(); //bool osOptionValue = settings.value("configuration/osSeparator", 1).toBool();
//osOptionCheck->setChecked(osOptionValue); //osOptionCheck->setChecked(osOptionValue);
osOptionCheck->setEnabled(false); osOptionCheck->setEnabled(false);
QHBoxLayout *separatorLayout = new QHBoxLayout; QHBoxLayout *separatorLayout = new QHBoxLayout;
Q_CHECK_PTR(separatorLayout);
separatorLayout->addWidget(separatorLabel); separatorLayout->addWidget(separatorLabel);
separatorLayout->addWidget(osOptionCheck); separatorLayout->addWidget(osOptionCheck);
QVBoxLayout *langLayout = new QVBoxLayout; QVBoxLayout *langLayout = new QVBoxLayout;
Q_CHECK_PTR(langLayout);
langLayout->addLayout(guiLangLayout); langLayout->addLayout(guiLangLayout);
langLayout->addLayout(separatorLayout); langLayout->addLayout(separatorLayout);
langGroup->setLayout(langLayout); langGroup->setLayout(langLayout);
@ -215,14 +199,10 @@ QGroupBox *PatternPage::UserGroup()
QApplication::applicationName()); QApplication::applicationName());
QGroupBox *userGroup = new QGroupBox(tr("User")); QGroupBox *userGroup = new QGroupBox(tr("User"));
Q_CHECK_PTR(userGroup);
QLabel *nameLabel = new QLabel(tr("User name")); QLabel *nameLabel = new QLabel(tr("User name"));
Q_CHECK_PTR(nameLabel);
userName = new QLineEdit; userName = new QLineEdit;
Q_CHECK_PTR(userName); #ifdef Q_OS_WIN
#ifdef Q_OS_WIN32
QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USERNAME").constData())).toString(); QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USERNAME").constData())).toString();
#else #else
QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USER").constData())).toString(); QString user = settings.value("pattern/user", QString::fromLocal8Bit(qgetenv("USER").constData())).toString();
@ -230,12 +210,10 @@ QGroupBox *PatternPage::UserGroup()
userName->setText(user); userName->setText(user);
QHBoxLayout *nameLayout = new QHBoxLayout; QHBoxLayout *nameLayout = new QHBoxLayout;
Q_CHECK_PTR(nameLayout);
nameLayout->addWidget(nameLabel); nameLayout->addWidget(nameLabel);
nameLayout->addWidget(userName); nameLayout->addWidget(userName);
QVBoxLayout *userLayout = new QVBoxLayout; QVBoxLayout *userLayout = new QVBoxLayout;
Q_CHECK_PTR(userLayout);
userLayout->addLayout(nameLayout); userLayout->addLayout(nameLayout);
userGroup->setLayout(userLayout); userGroup->setLayout(userLayout);
return userGroup; return userGroup;
@ -247,20 +225,16 @@ QGroupBox *PatternPage::GraphOutputGroup()
// QApplication::applicationName()); // QApplication::applicationName());
QGroupBox *graphOutputGroup = new QGroupBox(tr("Graphical output")); QGroupBox *graphOutputGroup = new QGroupBox(tr("Graphical output"));
Q_CHECK_PTR(graphOutputGroup);
graphOutputCheck = new QCheckBox(tr("Use antialiasing")); graphOutputCheck = new QCheckBox(tr("Use antialiasing"));
Q_CHECK_PTR(graphOutputCheck);
//bool graphOutputValue = settings.value("pattern/graphicalOutput", 1).toBool(); //bool graphOutputValue = settings.value("pattern/graphicalOutput", 1).toBool();
//graphOutputCheck->setChecked(graphOutputValue); //graphOutputCheck->setChecked(graphOutputValue);
graphOutputCheck->setEnabled(false); graphOutputCheck->setEnabled(false);
QHBoxLayout *graphLayout = new QHBoxLayout; QHBoxLayout *graphLayout = new QHBoxLayout;
Q_CHECK_PTR(graphLayout);
graphLayout->addWidget(graphOutputCheck); graphLayout->addWidget(graphOutputCheck);
QVBoxLayout *graphOutputLayout = new QVBoxLayout; QVBoxLayout *graphOutputLayout = new QVBoxLayout;
Q_CHECK_PTR(graphOutputLayout);
graphOutputLayout->addLayout(graphLayout); graphOutputLayout->addLayout(graphLayout);
graphOutputGroup->setLayout(graphOutputLayout); graphOutputGroup->setLayout(graphOutputLayout);
return graphOutputGroup; return graphOutputGroup;
@ -272,13 +246,8 @@ QGroupBox *PatternPage::UndoneGroup()
// QApplication::applicationName()); // QApplication::applicationName());
QGroupBox *undoneGroup = new QGroupBox(tr("Undone")); QGroupBox *undoneGroup = new QGroupBox(tr("Undone"));
Q_CHECK_PTR(undoneGroup);
QLabel *undoneLabel = new QLabel(tr("Count steps")); QLabel *undoneLabel = new QLabel(tr("Count steps"));
Q_CHECK_PTR(undoneLabel);
undoneCount = new QSpinBox; undoneCount = new QSpinBox;
Q_CHECK_PTR(undoneCount);
// bool ok = true; // bool ok = true;
// qint32 count = settings.value("pattern/undone", 100).toInt(&ok); // qint32 count = settings.value("pattern/undone", 100).toInt(&ok);
// if (ok == false) // if (ok == false)
@ -289,12 +258,10 @@ QGroupBox *PatternPage::UndoneGroup()
undoneCount->setEnabled(false); undoneCount->setEnabled(false);
QHBoxLayout *countLayout = new QHBoxLayout; QHBoxLayout *countLayout = new QHBoxLayout;
Q_CHECK_PTR(countLayout);
countLayout->addWidget(undoneLabel); countLayout->addWidget(undoneLabel);
countLayout->addWidget(undoneCount); countLayout->addWidget(undoneCount);
QVBoxLayout *undoneLayout = new QVBoxLayout; QVBoxLayout *undoneLayout = new QVBoxLayout;
Q_CHECK_PTR(undoneLayout);
undoneLayout->addLayout(countLayout); undoneLayout->addLayout(countLayout);
undoneGroup->setLayout(undoneLayout); undoneGroup->setLayout(undoneLayout);
return undoneGroup; return undoneGroup;

View file

@ -35,7 +35,7 @@ class ConfigurationPage : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
ConfigurationPage(QWidget *parent = 0); ConfigurationPage(QWidget *parent = nullptr);
void Apply(); void Apply();
public slots: public slots:
void LangChenged(); void LangChenged();
@ -54,7 +54,7 @@ class PatternPage : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
PatternPage(QWidget *parent = 0); PatternPage(QWidget *parent = nullptr);
void Apply(); void Apply();
private: private:
Q_DISABLE_COPY(PatternPage) Q_DISABLE_COPY(PatternPage)

View file

@ -1,483 +0,0 @@
/************************************************************************
**
** @file dialoghistory.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialoghistory.h"
#include "ui_dialoghistory.h"
#include "../geometry/varc.h"
#include "../geometry/vspline.h"
#include "../geometry/vsplinepath.h"
#include "../tools/vabstracttool.h"
#include "../tools/drawTools/vtoolcutspline.h"
#include "../tools/drawTools/vtoolcutsplinepath.h"
#include "../tools/drawTools/vtoolcutarc.h"
#include <QDebug>
#include <QPushButton>
DialogHistory::DialogHistory(VContainer *data, VDomDocument *doc, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogHistory), doc(doc), cursorRow(0),
cursorToolRecordRow(0)
{
ui->setupUi(this);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogHistory::DialogAccepted);
FillTable();
InitialTable();
connect(ui->tableWidget, &QTableWidget::cellClicked, this, &DialogHistory::cellClicked);
connect(this, &DialogHistory::ShowHistoryTool, doc, &VDomDocument::ShowHistoryTool);
connect(doc, &VDomDocument::ChangedCursor, this, &DialogHistory::ChangedCursor);
connect(doc, &VDomDocument::patternChanged, this, &DialogHistory::UpdateHistory);
connect(doc, &VDomDocument::ChangedActivDraw, this, &DialogHistory::UpdateHistory);
ShowPoint();
}
DialogHistory::~DialogHistory()
{
delete ui;
}
void DialogHistory::DialogAccepted()
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
emit DialogClosed(QDialog::Accepted);
}
void DialogHistory::cellClicked(int row, int column)
{
if (column == 0)
{
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
item->setIcon(QIcon());
item = ui->tableWidget->item(row, 0);
cursorRow = row;
item->setIcon(QIcon("://icon/32x32/put_after.png"));
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
disconnect(doc, &VDomDocument::ChangedCursor, this, &DialogHistory::ChangedCursor);
doc->setCursor(id);
connect(doc, &VDomDocument::ChangedCursor, this, &DialogHistory::ChangedCursor);
}
else
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
cursorToolRecordRow = row;
item = ui->tableWidget->item(cursorToolRecordRow, 0);
id = qvariant_cast<qint64>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, true);
}
}
void DialogHistory::ChangedCursor(qint64 id)
{
for (qint32 i = 0; i< ui->tableWidget->rowCount(); ++i)
{
QTableWidgetItem *item = ui->tableWidget->item(i, 0);
qint64 rId = qvariant_cast<qint64>(item->data(Qt::UserRole));
if (rId == id)
{
QTableWidgetItem *oldCursorItem = ui->tableWidget->item(cursorRow, 0);
oldCursorItem->setIcon(QIcon());
cursorRow = i;
item->setIcon(QIcon("://icon/32x32/put_after.png"));
}
}
}
void DialogHistory::UpdateHistory()
{
FillTable();
InitialTable();
}
void DialogHistory::FillTable()
{
ui->tableWidget->clear();
QVector<VToolRecord> *history = doc->getHistory();
qint32 currentRow = -1;
qint32 count = 0;
ui->tableWidget->setRowCount(history->size());
for (qint32 i = 0; i< history->size(); ++i)
{
VToolRecord tool = history->at(i);
if (tool.getNameDraw() != doc->GetNameActivDraw())
{
continue;
}
currentRow++;
QTableWidgetItem *item = new QTableWidgetItem(QString());
item->setTextAlignment(Qt::AlignHCenter);
item->setData(Qt::UserRole, tool.getId());
ui->tableWidget->setItem(currentRow, 0, item);
QString historyRecord = Record(tool);
item = new QTableWidgetItem(historyRecord);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->tableWidget->setItem(currentRow, 1, item);
++count;
}
ui->tableWidget->setRowCount(count);
if (history->size()>0)
{
cursorRow = currentRow;
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
item->setIcon(QIcon("://icon/32x32/put_after.png"));
}
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->resizeRowsToContents();
ui->tableWidget->verticalHeader()->setDefaultSectionSize(20);
}
QString DialogHistory::Record(const VToolRecord &tool)
{
QString record = QString();
qint64 basePointId = 0;
qint64 secondPointId = 0;
qint64 firstPointId = 0;
qint64 thirdPointId = 0;
qint64 p1Line1 = 0;
qint64 p2Line1 = 0;
qint64 p1Line2 = 0;
qint64 p2Line2 = 0;
qint64 center = 0;
QDomElement domElement;
switch ( tool.getTypeTool() )
{
case Tool::ArrowTool:
break;
case Tool::SinglePointTool:
{
QString name = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%1 - Base point")).arg(name);
break;
}
case Tool::EndLineTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
basePointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrBasePoint, "0");
}
QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%1_%2 - Line from point %1 to point %2")).arg(basePointIdName, toolIdName);
break;
}
case Tool::LineTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
firstPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
record = QString(tr("%1_%2 - Line from point %1 to point %2")).arg(firstPointIdName, secondPointIdName);
break;
}
case Tool::AlongLineTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
basePointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%3 - Point along line %1_%2")).arg(basePointIdName, secondPointIdName, toolIdName);
break;
}
case Tool::ShoulderPointTool:
{
QString name = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%1 - Point of shoulder")).arg(name);
break;
}
case Tool::NormalTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
basePointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%3 - normal to line %1_%2")).arg(basePointIdName, secondPointIdName, toolIdName);
break;
}
case Tool::BisectorTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
firstPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
thirdPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrThirdPoint, "0");
}
QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
QString thirdPointIdName = data->GeometricObject<const VPointF *>(thirdPointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%4 - bisector of angle %1_%2_%3")).arg(firstPointIdName, basePointIdName,
thirdPointIdName, toolIdName);
break;
}
case Tool::LineIntersectTool:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
p1Line1 = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP1Line1, "0");
p2Line1 = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP2Line1, "0");
p1Line2 = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP1Line2, "0");
p2Line2 = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP2Line2, "0");
}
QString p1Line1Name = data->GeometricObject<const VPointF *>(p1Line1)->name();
QString p2Line1Name = data->GeometricObject<const VPointF *>(p2Line1)->name();
QString p1Line2Name = data->GeometricObject<const VPointF *>(p1Line2)->name();
QString p2Line2Name = data->GeometricObject<const VPointF *>(p2Line2)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%5 - intersection of lines %1_%2 and %3_%4")).arg(p1Line1Name, p2Line1Name,
p1Line2Name, p2Line2Name,
toolIdName);
break;
}
case Tool::SplineTool:
{
const VSpline *spl = data->GeometricObject<const VSpline *>(tool.getId());
QString splP1Name = data->GeometricObject<const VSpline *>(spl->GetP1().id())->name();
QString splP4Name = data->GeometricObject<const VSpline *>(spl->GetP4().id())->name();
record = QString(tr("Curve %1_%2")).arg(splP1Name, splP4Name);
}
break;
case Tool::ArcTool:
{
const VArc *arc = data->GeometricObject<const VArc *>(tool.getId());
QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
record = QString(tr("Arc with center in point %1")).arg(arcCenterName);
}
break;
case Tool::SplinePathTool:
{
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(tool.getId());
QVector<VSplinePoint> points = splPath->GetSplinePath();
if (points.size() != 0 )
{
QString pName = data->GeometricObject<const VPointF *>(points[0].P().id())->name();
record = QString(tr("Curve point %1")).arg(pName);
for (qint32 i = 1; i< points.size(); ++i)
{
pName = data->GeometricObject<const VPointF *>(points[i].P().id())->name();
QString name = QString("_%1").arg(pName);
record.append(name);
}
}
}
break;
case Tool::PointOfContact:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
center = doc->GetParametrLongLong(domElement, VAbstractTool::AttrCenter, "0");
firstPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
QString centerName = data->GeometricObject<const VPointF *>(center)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%4 - point of contact of arc with the center in point %1 and line %2_%3")).arg(
centerName, firstPointIdName, secondPointIdName, toolIdName);
break;
}
case Tool::Height:
{
qint64 p1LineId = 0;
qint64 p2LineId = 0;
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
basePointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrBasePoint, "0");
p1LineId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP1Line, "0");
p2LineId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrP2Line, "0");
}
QString basePointIdName = data->GeometricObject<const VPointF *>(basePointId)->name();
QString p1LineIdName = data->GeometricObject<const VPointF *>(p1LineId)->name();
QString p2LineIdName = data->GeometricObject<const VPointF *>(p2LineId)->name();
record = QString(tr("Point of perpendicular from point %1 to line %2_%3")).arg( basePointIdName,
p1LineIdName, p2LineIdName);
break;
}
case Tool::Triangle:
{
qint64 axisP1Id = 0;
qint64 axisP2Id = 0;
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
axisP1Id = doc->GetParametrLongLong(domElement, VAbstractTool::AttrAxisP1, "0");
axisP2Id = doc->GetParametrLongLong(domElement, VAbstractTool::AttrAxisP2, "0");
firstPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString axisP1IdName = data->GeometricObject<const VPointF *>(axisP1Id)->name();
QString axisP2IdName = data->GeometricObject<const VPointF *>(axisP2Id)->name();
QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
record = QString(tr("Triangle: axis %1_%2, points %3 and %4")).arg( axisP1IdName, axisP2IdName,
firstPointIdName, secondPointIdName);
break;
}
case Tool::PointOfIntersection:
{
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
firstPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrFirstPoint, "0");
secondPointId = doc->GetParametrLongLong(domElement, VAbstractTool::AttrSecondPoint, "0");
}
QString firstPointIdName = data->GeometricObject<const VPointF *>(firstPointId)->name();
QString secondPointIdName = data->GeometricObject<const VPointF *>(secondPointId)->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%1 - point of intersection %2 and %3")).arg(toolIdName, firstPointIdName,
secondPointIdName);
}
break;
case Tool::CutArcTool:
{
qint64 arcId = 0;
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
arcId = doc->GetParametrLongLong(domElement, VToolCutArc::AttrArc, "0");
}
const VArc *arc = data->GeometricObject<const VArc *>(arcId);
QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
record = QString(tr("%1 - cut arc with center %2")).arg(toolIdName, arcCenterName);
}
break;
case Tool::CutSplineTool:
{
qint64 splineId = 0;
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
splineId = doc->GetParametrLongLong(domElement, VToolCutSpline::AttrSpline, "0");
}
const VSpline *spl = data->GeometricObject<const VSpline *>(splineId);
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
record = QString(tr("%1 - cut curve %2_%3")).arg(toolIdName, splP1Name, splP4Name);
}
break;
case Tool::CutSplinePathTool:
{
qint64 splinePathId = 0;
domElement = doc->elementById(QString().setNum(tool.getId()));
if (domElement.isElement())
{
splinePathId = doc->GetParametrLongLong(domElement, VToolCutSplinePath::AttrSplinePath, "0");
}
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
QVector<VSplinePoint> points = splPath->GetSplinePath();
if (points.size() != 0 )
{
QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
QString pName = data->GeometricObject<const VPointF *>(points[0].P().id())->name();
record = QString(tr("%1 - cut curve path %2")).arg(toolIdName, pName);
for (qint32 i = 1; i< points.size(); ++i)
{
pName = data->GeometricObject<const VPointF *>(points[i].P().id())->name();
QString name = QString("_%1").arg(pName);
record.append(name);
}
}
}
break;
//Because "history" not only show history of pattern, but help restore current data for each pattern's piece, we
//need add record about details and nodes, but don't show them.
case Tool::Detail:
break;
case Tool::UnionDetails:
break;
case Tool::NodeArc:
break;
case Tool::NodePoint:
break;
case Tool::NodeSpline:
break;
case Tool::NodeSplinePath:
break;
default:
qWarning()<<tr("Got wrong tool type. Ignore.");
break;
}
return record;
}
void DialogHistory::InitialTable()
{
ui->tableWidget->setSortingEnabled(false);
ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem(" "));
ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("Tool")));
}
void DialogHistory::ShowPoint()
{
QVector<VToolRecord> *history = doc->getHistory();
if (history->size()>0)
{
QTableWidgetItem *item = ui->tableWidget->item(0, 1);
item->setSelected(true);
cursorToolRecordRow = 0;
item = ui->tableWidget->item(0, 0);
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, true);
}
}
void DialogHistory::closeEvent(QCloseEvent *event)
{
QTableWidgetItem *item = ui->tableWidget->item(cursorToolRecordRow, 0);
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
emit ShowHistoryTool(id, Qt::green, false);
DialogTool::closeEvent(event);
}

View file

@ -1,521 +0,0 @@
/************************************************************************
**
** @file dialogincrements.cpp
** @author Roman Telezhinsky <dismine@gmail.com>
** @date November 15, 2013
**
** @brief
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#include "dialogincrements.h"
#include "ui_dialogincrements.h"
#include "../widgets/doubledelegate.h"
#include "../widgets/textdelegate.h"
#include "../exception/vexception.h"
#include <QPushButton>
DialogIncrements::DialogIncrements(VContainer *data, VDomDocument *doc, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogIncrements), data(data), doc(doc), row(0), column(0)
{
ui->setupUi(this);
TextDelegate *textDelegate = new TextDelegate(ui->tableWidgetIncrement);
Q_CHECK_PTR(textDelegate);
ui->tableWidgetIncrement->setItemDelegateForColumn(0, textDelegate);
DoubleSpinBoxDelegate *doubleDelegate = new DoubleSpinBoxDelegate(ui->tableWidgetIncrement);
Q_CHECK_PTR(doubleDelegate);
ui->tableWidgetIncrement->setItemDelegateForColumn(2, doubleDelegate);
ui->tableWidgetIncrement->setItemDelegateForColumn(3, doubleDelegate);
ui->tableWidgetIncrement->setItemDelegateForColumn(4, doubleDelegate);
FillStandardTable();
FillIncrementTable();
FillLengthLines();
FillLengthSplines();
FillLengthArcs();
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this, &DialogIncrements::cellChanged);
connect(ui->toolButtonAdd, &QPushButton::clicked, this, &DialogIncrements::clickedToolButtonAdd);
connect(ui->toolButtonRemove, &QPushButton::clicked, this, &DialogIncrements::clickedToolButtonRemove);
connect(this, &DialogIncrements::FullUpdateTree, this->doc, &VDomDocument::FullUpdateTree);
connect(this, &DialogIncrements::haveLiteChange, this->doc, &VDomDocument::haveLiteChange);
connect(this->doc, &VDomDocument::FullUpdateFromFile, this, &DialogIncrements::FullUpdateFromFile);
ui->tabWidget->setCurrentIndex(0);
}
void DialogIncrements::FillStandardTable()
{
const QHash<QString, VStandardTableRow> *standardTable = data->DataStandardTable();
qint32 currentRow = -1;
QHashIterator<QString, VStandardTableRow> i(*standardTable);
ui->tableWidgetStandard->setRowCount ( standardTable->size() );
while (i.hasNext())
{
i.next();
VStandardTableRow cell = i.value();
currentRow++;
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetStandard->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(data->GetValueStandardTableCell(i.key())));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetStandard->setItem(currentRow, 1, item);
item = new QTableWidgetItem(QString().setNum(cell.GetBase()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetStandard->setItem(currentRow, 2, item);
item = new QTableWidgetItem(QString().setNum(cell.GetKsize()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetStandard->setItem(currentRow, 3, item);
item = new QTableWidgetItem(QString().setNum(cell.GetKgrowth()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetStandard->setItem(currentRow, 4, item);
item = new QTableWidgetItem(cell.GetDescription());
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetStandard->setItem(currentRow, 5, item);
}
ui->tableWidgetStandard->resizeColumnsToContents();
ui->tableWidgetStandard->resizeRowsToContents();
ui->tableWidgetStandard->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FillIncrementTable()
{
const QHash<QString, VIncrementTableRow> *incrementTable = data->DataIncrementTable();
QHashIterator<QString, VIncrementTableRow> i(*incrementTable);
QMap<qint64, QString> map;
//Sorting QHash by id
while (i.hasNext())
{
i.next();
VIncrementTableRow cell = i.value();
map.insert(cell.getId(), i.key());
}
qint32 currentRow = -1;
QMapIterator<qint64, QString> iMap(map);
while (iMap.hasNext())
{
iMap.next();
VIncrementTableRow cell = incrementTable->value(iMap.value());
currentRow++;
ui->tableWidgetIncrement->setRowCount ( incrementTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(iMap.value());
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setData(Qt::UserRole, cell.getId());
ui->tableWidgetIncrement->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(data->GetValueIncrementTableRow(iMap.value())));
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetIncrement->setItem(currentRow, 1, item);
item = new QTableWidgetItem(QString().setNum(cell.getBase()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 2, item);
item = new QTableWidgetItem(QString().setNum(cell.getKsize()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 3, item);
item = new QTableWidgetItem(QString().setNum(cell.getKgrowth()));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 4, item);
item = new QTableWidgetItem(cell.getDescription());
item->setTextAlignment(Qt::AlignLeft);
ui->tableWidgetIncrement->setItem(currentRow, 5, item);
}
if (ui->tableWidgetIncrement->rowCount()>0)
{
ui->toolButtonRemove->setEnabled(true);
}
ui->tableWidgetIncrement->resizeColumnsToContents();
ui->tableWidgetIncrement->resizeRowsToContents();
ui->tableWidgetIncrement->setCurrentCell( row, column );
}
void DialogIncrements::FillLengthLines()
{
const QHash<QString, qreal> *linesTable = data->DataLengthLines();
QHashIterator<QString, qreal> iHash(*linesTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetLines->setRowCount ( linesTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetLines->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetLines->setItem(currentRow, 1, item);
}
ui->tableWidgetLines->resizeColumnsToContents();
ui->tableWidgetLines->resizeRowsToContents();
ui->tableWidgetLines->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FillLengthSplines()
{
const QHash<QString, qreal> *splinesTable = data->DataLengthSplines();
QHashIterator<QString, qreal> iHash(*splinesTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetSplines->setRowCount ( splinesTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignLeft);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetSplines->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetSplines->setItem(currentRow, 1, item);
}
ui->tableWidgetSplines->resizeColumnsToContents();
ui->tableWidgetSplines->resizeRowsToContents();
ui->tableWidgetSplines->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FillLengthArcs()
{
const QHash<QString, qreal> *arcsTable = data->DataLengthArcs();
QHashIterator<QString, qreal> iHash(*arcsTable);
QMap<QString, qreal> map;
//Sorting QHash by name
while (iHash.hasNext())
{
iHash.next();
map.insert(iHash.key(), iHash.value());
}
qint32 currentRow = -1;
QMapIterator<QString, qreal> i(map);
while (i.hasNext())
{
i.next();
qreal length = i.value();
currentRow++;
ui->tableWidgetArcs->setRowCount ( arcsTable->size() );
QTableWidgetItem *item = new QTableWidgetItem(QString(i.key()));
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
ui->tableWidgetArcs->setItem(currentRow, 0, item);
item = new QTableWidgetItem(QString().setNum(length));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetArcs->setItem(currentRow, 1, item);
}
ui->tableWidgetArcs->resizeColumnsToContents();
ui->tableWidgetArcs->resizeRowsToContents();
ui->tableWidgetArcs->verticalHeader()->setDefaultSectionSize(20);
}
void DialogIncrements::FullUpdateFromFile()
{
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
ui->tableWidgetStandard->clearContents();
FillStandardTable();
ui->tableWidgetIncrement->clearContents();
FillIncrementTable();
ui->tableWidgetLines->clearContents();
FillLengthLines();
ui->tableWidgetSplines->clearContents();
FillLengthSplines();
ui->tableWidgetArcs->clearContents();
FillLengthArcs();
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
}
void DialogIncrements::clickedToolButtonAdd()
{
ui->tableWidgetIncrement->setFocus(Qt::OtherFocusReason);
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
qint32 currentRow = ui->tableWidgetIncrement->rowCount();
ui->tableWidgetIncrement->insertRow( currentRow );
qint32 num = 1;
QString name;
do
{
name = QString(tr("Name_%1")).arg(num);
num++;
} while (data->IncrementTableContains(name));
qint64 id = data->getNextId();
qreal base = 0;
qreal ksize = 0;
qreal kgrowth = 0;
QString description = QString(tr("Description"));
VIncrementTableRow incrementRow = VIncrementTableRow(id, base, ksize, kgrowth, description);
data->AddIncrementTableRow(name, incrementRow);
AddIncrementToFile(id, name, base, ksize, kgrowth, description);
QTableWidgetItem *item = new QTableWidgetItem(name);
item->setTextAlignment(Qt::AlignHCenter);
item->setFont(QFont("Times", 12, QFont::Bold));
item->setData(Qt::UserRole, id);
ui->tableWidgetIncrement->setItem(currentRow, 0, item);
ui->tableWidgetIncrement->setCurrentCell(currentRow, 0, QItemSelectionModel::ClearAndSelect);
item = new QTableWidgetItem("0");
item->setTextAlignment(Qt::AlignHCenter);
// set the item non-editable (view only), and non-selectable
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsSelectable | Qt::ItemIsEditable); // reset/clear the flag
item->setFlags(flags);
ui->tableWidgetIncrement->setItem(currentRow, 1, item);
item = new QTableWidgetItem("0");
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 2, item);
item = new QTableWidgetItem("0");
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 3, item);
item = new QTableWidgetItem("0");
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 4, item);
item = new QTableWidgetItem(tr("Description"));
item->setTextAlignment(Qt::AlignHCenter);
ui->tableWidgetIncrement->setItem(currentRow, 5, item);
ui->toolButtonRemove->setEnabled(true);
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
emit haveLiteChange();
}
void DialogIncrements::clickedToolButtonRemove()
{
disconnect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
QTableWidgetItem *item = ui->tableWidgetIncrement->currentItem();
qint32 row = item->row();
QTableWidgetItem *itemName = ui->tableWidgetIncrement->item(row, 0);
data->RemoveIncrementTableRow(itemName->text());
qint64 id = qvariant_cast<qint64>(item->data(Qt::UserRole));
QDomElement domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
QDomNodeList list = doc->elementsByTagName("increments");
list.at(0).removeChild(domElement);
}
ui->tableWidgetIncrement->removeRow(row);
if (ui->tableWidgetIncrement->rowCount() == 0)
{
ui->toolButtonRemove->setEnabled(false);
}
connect(ui->tableWidgetIncrement, &QTableWidget::cellChanged, this,
&DialogIncrements::cellChanged);
emit haveLiteChange();
}
void DialogIncrements::AddIncrementToFile(qint64 id, QString name, qreal base, qreal ksize, qreal kgrowth,
QString description)
{
QDomNodeList list = doc->elementsByTagName("increments");
QDomElement element = doc->createElement("increment");
QDomAttr drawAttr = doc->createAttribute("id");
drawAttr.setValue(QString().setNum(id));
element.setAttributeNode(drawAttr);
drawAttr = doc->createAttribute("name");
drawAttr.setValue(name);
element.setAttributeNode(drawAttr);
drawAttr = doc->createAttribute("base");
drawAttr.setValue(QString().setNum(base));
element.setAttributeNode(drawAttr);
drawAttr = doc->createAttribute("ksize");
drawAttr.setValue(QString().setNum(ksize));
element.setAttributeNode(drawAttr);
drawAttr = doc->createAttribute("kgrowth");
drawAttr.setValue(QString().setNum(kgrowth));
element.setAttributeNode(drawAttr);
drawAttr = doc->createAttribute("description");
drawAttr.setValue(description);
element.setAttributeNode(drawAttr);
list.at(0).appendChild(element);
}
void DialogIncrements::cellChanged ( qint32 row, qint32 column )
{
QTableWidgetItem *item = 0;
QTableWidgetItem *itemName = 0;
qint64 id;
QDomElement domElement;
this->row = row;
switch (column)
{
case 0:
item = ui->tableWidgetIncrement->item(row, 0);
id = qvariant_cast<qint64>(item->data(Qt::UserRole));
domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
domElement.setAttribute("name", item->text());
data->ClearIncrementTable();
this->column = 2;
emit FullUpdateTree();
emit haveLiteChange();
}
break;
case 2:
itemName = ui->tableWidgetIncrement->item(row, 0);
item = ui->tableWidgetIncrement->item(row, column);
id = qvariant_cast<qint64>(itemName->data(Qt::UserRole));
domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
bool ok = false;
qreal value = item->text().replace(",", ".").toDouble(&ok);
if (ok)
{
domElement.setAttribute("base", value);
this->column = 3;
emit FullUpdateTree();
emit haveLiteChange();
}
else
{
throw VException(tr("Can't convert toDouble value."));
}
}
break;
case 3:
itemName = ui->tableWidgetIncrement->item(row, 0);
item = ui->tableWidgetIncrement->item(row, column);
id = qvariant_cast<qint64>(itemName->data(Qt::UserRole));
domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
domElement.setAttribute("ksize", item->text().replace(",", ".").toDouble());
this->column = 4;
emit FullUpdateTree();
emit haveLiteChange();
}
break;
case 4:
itemName = ui->tableWidgetIncrement->item(row, 0);
item = ui->tableWidgetIncrement->item(row, column);
id = qvariant_cast<qint64>(itemName->data(Qt::UserRole));
domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
domElement.setAttribute("kgrowth", item->text().replace(",", ".").toDouble());
this->column = 5;
emit FullUpdateTree();
emit haveLiteChange();
}
break;
case 5:
itemName = ui->tableWidgetIncrement->item(row, 0);
item = ui->tableWidgetIncrement->item(row, column);
id = qvariant_cast<qint64>(itemName->data(Qt::UserRole));
domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
domElement.setAttribute("description", item->text());
VIncrementTableRow incr = data->GetIncrementTableRow(itemName->text());
incr.setDescription(item->text());
data->UpdateIncrementTableRow(itemName->text(), incr);
ui->tableWidgetIncrement->resizeColumnsToContents();
ui->tableWidgetIncrement->resizeRowsToContents();
ui->tableWidgetIncrement->setCurrentCell( row, 0 );
emit haveLiteChange();
}
break;
default:
break;
}
}
void DialogIncrements::closeEvent(QCloseEvent *event)
{
emit DialogClosed(QDialog::Accepted);
event->accept();
}
DialogIncrements::~DialogIncrements()
{
delete ui;
}

View file

@ -1,369 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogIncrements</class>
<widget class="QDialog" name="DialogIncrements">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>897</width>
<height>422</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>800</width>
<height>0</height>
</size>
</property>
<property name="windowTitle">
<string>Increments</string>
</property>
<property name="windowIcon">
<iconset resource="../../share/resources/icon.qrc">
<normaloff>:/icon/64x64/icon64x64.png</normaloff>:/icon/64x64/icon64x64.png</iconset>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tabStandard">
<attribute name="title">
<string>Sizes table</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetStandard">
<property name="enabled">
<bool>true</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>25</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>45</number>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>8</number>
</attribute>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In growths</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabIncrements">
<attribute name="title">
<string>Increments</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="3">
<widget class="QTableWidget" name="tableWidgetIncrement">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>95</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>17</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>20</number>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>The calculated value</string>
</property>
</column>
<column>
<property name="text">
<string>Base value</string>
</property>
</column>
<column>
<property name="text">
<string>In sizes</string>
</property>
</column>
<column>
<property name="text">
<string>In growths</string>
</property>
</column>
<column>
<property name="text">
<string>Description</string>
</property>
</column>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="toolButtonAdd">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="list-add">
<normaloff/>
</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="toolButtonRemove">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset theme="list-remove">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Lines</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetLines">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Line</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Curves</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetSplines">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Curve</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_5">
<attribute name="title">
<string>Arcs</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidgetArcs">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>137</number>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Arc</string>
</property>
</column>
<column>
<property name="text">
<string>Length</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>tabWidget</tabstop>
<tabstop>tableWidgetStandard</tabstop>
<tabstop>tableWidgetIncrement</tabstop>
<tabstop>toolButtonAdd</tabstop>
<tabstop>toolButtonRemove</tabstop>
<tabstop>tableWidgetLines</tabstop>
<tabstop>tableWidgetSplines</tabstop>
<tabstop>tableWidgetArcs</tabstop>
</tabstops>
<resources>
<include location="../../share/resources/icon.qrc"/>
</resources>
<connections/>
</ui>

View file

@ -29,29 +29,33 @@
#ifndef DIALOGS_H #ifndef DIALOGS_H
#define DIALOGS_H #define DIALOGS_H
#include "dialogalongline.h" #include "tools/dialogalongline.h"
#include "dialogarc.h" #include "tools/dialogarc.h"
#include "dialogbisector.h" #include "tools/dialogbisector.h"
#include "dialogdetail.h" #include "tools/dialogdetail.h"
#include "dialogendline.h" #include "tools/dialogendline.h"
#include "dialoghistory.h" #include "tools/dialogline.h"
#include "dialogincrements.h" #include "tools/dialoglineintersect.h"
#include "dialogline.h" #include "tools/dialognormal.h"
#include "dialoglineintersect.h" #include "tools/dialogpointofcontact.h"
#include "dialognormal.h" #include "tools/dialogshoulderpoint.h"
#include "dialogpointofcontact.h" #include "tools/dialogsinglepoint.h"
#include "dialogshoulderpoint.h" #include "tools/dialogspline.h"
#include "dialogsinglepoint.h" #include "tools/dialogsplinepath.h"
#include "dialogspline.h" #include "tools/dialogheight.h"
#include "dialogsplinepath.h" #include "tools/dialogcutarc.h"
#include "dialogheight.h" #include "tools/dialogcutspline.h"
#include "dialogcutarc.h" #include "tools/dialogcutsplinepath.h"
#include "dialogcutspline.h" #include "tools/dialoguniondetails.h"
#include "dialogcutsplinepath.h" #include "tools/dialogtriangle.h"
#include "dialoguniondetails.h" #include "tools/dialogpointofintersection.h"
#include "dialogtriangle.h"
#include "dialogpointofintersection.h" #include "app/dialoghistory.h"
#include "configdialog.h" #include "app/dialogincrements.h"
#include "dialogpatternproperties.h" #include "app/configdialog.h"
#include "app/dialogpatternproperties.h"
#include "app/dialogmeasurements.h"
#include "app/dialogindividualmeasurements.h"
#include "app/dialogstandardmeasurements.h"
#endif // DIALOGS_H #endif // DIALOGS_H

View file

@ -1,81 +1,90 @@
HEADERS += \ HEADERS += \
src/dialogs/dialogtriangle.h \
src/dialogs/dialogtool.h \
src/dialogs/dialogsplinepath.h \
src/dialogs/dialogspline.h \
src/dialogs/dialogsinglepoint.h \
src/dialogs/dialogshoulderpoint.h \
src/dialogs/dialogs.h \ src/dialogs/dialogs.h \
src/dialogs/dialogpointofintersection.h \ src/dialogs/tools/dialogtriangle.h \
src/dialogs/dialogpointofcontact.h \ src/dialogs/tools/dialogtool.h \
src/dialogs/dialognormal.h \ src/dialogs/tools/dialogsplinepath.h \
src/dialogs/dialoglineintersect.h \ src/dialogs/tools/dialogspline.h \
src/dialogs/dialogline.h \ src/dialogs/tools/dialogsinglepoint.h \
src/dialogs/dialogincrements.h \ src/dialogs/tools/dialogshoulderpoint.h \
src/dialogs/dialoghistory.h \ src/dialogs/tools/dialogpointofintersection.h \
src/dialogs/dialogheight.h \ src/dialogs/tools/dialogpointofcontact.h \
src/dialogs/dialogendline.h \ src/dialogs/tools/dialognormal.h \
src/dialogs/dialogdetail.h \ src/dialogs/tools/dialoglineintersect.h \
src/dialogs/dialogbisector.h \ src/dialogs/tools/dialogline.h \
src/dialogs/dialogarc.h \ src/dialogs/tools/dialogheight.h \
src/dialogs/dialogalongline.h \ src/dialogs/tools/dialogendline.h \
src/dialogs/dialogcutspline.h \ src/dialogs/tools/dialogdetail.h \
src/dialogs/dialogcutsplinepath.h \ src/dialogs/tools/dialogbisector.h \
src/dialogs/dialoguniondetails.h \ src/dialogs/tools/dialogarc.h \
src/dialogs/dialogcutarc.h \ src/dialogs/tools/dialogalongline.h \
src/dialogs/configdialog.h \ src/dialogs/tools/dialogcutspline.h \
src/dialogs/pages.h \ src/dialogs/tools/dialogcutsplinepath.h \
src/dialogs/dialogpatternproperties.h src/dialogs/tools/dialoguniondetails.h \
src/dialogs/tools/dialogcutarc.h \
src/dialogs/app/dialogincrements.h \
src/dialogs/app/dialoghistory.h \
src/dialogs/app/configdialog.h \
src/dialogs/app/pages.h \
src/dialogs/app/dialogpatternproperties.h \
src/dialogs/app/dialogmeasurements.h \
src/dialogs/app/dialogstandardmeasurements.h \
src/dialogs/app/dialogindividualmeasurements.h
SOURCES += \ SOURCES += \
src/dialogs/dialogtriangle.cpp \ src/dialogs/tools/dialogtriangle.cpp \
src/dialogs/dialogtool.cpp \ src/dialogs/tools/dialogtool.cpp \
src/dialogs/dialogsplinepath.cpp \ src/dialogs/tools/dialogsplinepath.cpp \
src/dialogs/dialogspline.cpp \ src/dialogs/tools/dialogspline.cpp \
src/dialogs/dialogsinglepoint.cpp \ src/dialogs/tools/dialogsinglepoint.cpp \
src/dialogs/dialogshoulderpoint.cpp \ src/dialogs/tools/dialogshoulderpoint.cpp \
src/dialogs/dialogpointofintersection.cpp \ src/dialogs/tools/dialogpointofintersection.cpp \
src/dialogs/dialogpointofcontact.cpp \ src/dialogs/tools/dialogpointofcontact.cpp \
src/dialogs/dialognormal.cpp \ src/dialogs/tools/dialognormal.cpp \
src/dialogs/dialoglineintersect.cpp \ src/dialogs/tools/dialoglineintersect.cpp \
src/dialogs/dialogline.cpp \ src/dialogs/tools/dialogline.cpp \
src/dialogs/dialogincrements.cpp \ src/dialogs/tools/dialogheight.cpp \
src/dialogs/dialoghistory.cpp \ src/dialogs/tools/dialogendline.cpp \
src/dialogs/dialogheight.cpp \ src/dialogs/tools/dialogdetail.cpp \
src/dialogs/dialogendline.cpp \ src/dialogs/tools/dialogbisector.cpp \
src/dialogs/dialogdetail.cpp \ src/dialogs/tools/dialogarc.cpp \
src/dialogs/dialogbisector.cpp \ src/dialogs/tools/dialogalongline.cpp \
src/dialogs/dialogarc.cpp \ src/dialogs/tools/dialogcutspline.cpp \
src/dialogs/dialogalongline.cpp \ src/dialogs/tools/dialogcutsplinepath.cpp \
src/dialogs/dialogcutspline.cpp \ src/dialogs/tools/dialoguniondetails.cpp \
src/dialogs/dialogcutsplinepath.cpp \ src/dialogs/tools/dialogcutarc.cpp \
src/dialogs/dialoguniondetails.cpp \ src/dialogs/app/dialogincrements.cpp \
src/dialogs/dialogcutarc.cpp \ src/dialogs/app/dialoghistory.cpp \
src/dialogs/configdialog.cpp \ src/dialogs/app/configdialog.cpp \
src/dialogs/pages.cpp \ src/dialogs/app/pages.cpp \
src/dialogs/dialogpatternproperties.cpp src/dialogs/app/dialogpatternproperties.cpp \
src/dialogs/app/dialogmeasurements.cpp \
src/dialogs/app/dialogstandardmeasurements.cpp \
src/dialogs/app/dialogindividualmeasurements.cpp
FORMS += \ FORMS += \
src/dialogs/dialogtriangle.ui \ src/dialogs/tools/dialogtriangle.ui \
src/dialogs/dialogsplinepath.ui \ src/dialogs/tools/dialogsplinepath.ui \
src/dialogs/dialogspline.ui \ src/dialogs/tools/dialogspline.ui \
src/dialogs/dialogsinglepoint.ui \ src/dialogs/tools/dialogsinglepoint.ui \
src/dialogs/dialogshoulderpoint.ui \ src/dialogs/tools/dialogshoulderpoint.ui \
src/dialogs/dialogpointofintersection.ui \ src/dialogs/tools/dialogpointofintersection.ui \
src/dialogs/dialogpointofcontact.ui \ src/dialogs/tools/dialogpointofcontact.ui \
src/dialogs/dialognormal.ui \ src/dialogs/tools/dialognormal.ui \
src/dialogs/dialoglineintersect.ui \ src/dialogs/tools/dialoglineintersect.ui \
src/dialogs/dialogline.ui \ src/dialogs/tools/dialogline.ui \
src/dialogs/dialogincrements.ui \ src/dialogs/tools/dialogheight.ui \
src/dialogs/dialoghistory.ui \ src/dialogs/tools/dialogendline.ui \
src/dialogs/dialogheight.ui \ src/dialogs/tools/dialogdetail.ui \
src/dialogs/dialogendline.ui \ src/dialogs/tools/dialogbisector.ui \
src/dialogs/dialogdetail.ui \ src/dialogs/tools/dialogarc.ui \
src/dialogs/dialogbisector.ui \ src/dialogs/tools/dialogalongline.ui \
src/dialogs/dialogarc.ui \ src/dialogs/tools/dialogcutspline.ui \
src/dialogs/dialogalongline.ui \ src/dialogs/tools/dialogcutsplinepath.ui \
src/dialogs/dialogcutspline.ui \ src/dialogs/tools/dialoguniondetails.ui \
src/dialogs/dialogcutsplinepath.ui \ src/dialogs/tools/dialogcutarc.ui \
src/dialogs/dialoguniondetails.ui \ src/dialogs/app/dialogincrements.ui \
src/dialogs/dialogcutarc.ui \ src/dialogs/app/dialoghistory.ui \
src/dialogs/dialogpatternproperties.ui src/dialogs/app/dialogpatternproperties.ui \
src/dialogs/app/dialogmeasurements.ui \
src/dialogs/app/dialogstandardmeasurements.ui \
src/dialogs/app/dialogindividualmeasurements.ui

View file

@ -36,44 +36,27 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent)
typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0) typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
listWidget = ui->listWidget;
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogAlongLine::DialogAccepted);
flagName = false; flagName = false;
InitOkCansel(ui);
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogAlongLine::DialogRejected);
FillComboBoxTypeLine(ui->comboBoxLineType); FillComboBoxTypeLine(ui->comboBoxLineType);
ui->comboBoxLineType->setCurrentIndex(0); ui->comboBoxLineType->setCurrentIndex(0);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
labelEditNamePoint = ui->labelEditNamePoint;
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogAlongLine::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogAlongLine::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogAlongLine::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogAlongLine::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogAlongLine::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogAlongLine::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogAlongLine::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogAlongLine::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogAlongLine::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogAlongLine::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogAlongLine::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogAlongLine::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogAlongLine::NamePointChanged);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogAlongLine::EvalFormula);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogAlongLine::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogAlongLine::FormulaChanged);
InitVariables(ui);
connect(listWidget, &QListWidget::itemDoubleClicked, this, &DialogTool::PutVal);
} }
DialogAlongLine::~DialogAlongLine() DialogAlongLine::~DialogAlongLine()
@ -81,34 +64,27 @@ DialogAlongLine::~DialogAlongLine()
delete ui; delete ui;
} }
void DialogAlongLine::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogAlongLine::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
{ {
qint32 index = ui->comboBoxFirstPoint->findText(point->name()); if (ChoosedPoint(id, ui->comboBoxFirstPoint, tr("Select second point of line")))
if ( index != -1 ) {
{ // -1 for not found
ui->comboBoxFirstPoint->setCurrentIndex(index);
number++; number++;
emit ToolTip(tr("Select second point of line"));
return; return;
} }
} }
if (number == 1) if (number == 1)
{ {
qint32 index = ui->comboBoxSecondPoint->findText(point->name()); if (ChoosedPoint(id, ui->comboBoxSecondPoint, ""))
if ( index != -1 )
{ // -1 for not found
ui->comboBoxSecondPoint->setCurrentIndex(index);
number = 0;
emit ToolTip("");
}
if (isInitialized == false)
{ {
this->show(); number = 0;
if (isInitialized == false)
{
this->show();
}
} }
} }
} }
@ -124,12 +100,12 @@ void DialogAlongLine::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogAlongLine::setSecondPointId(const qint64 &value, const qint64 &id) void DialogAlongLine::setSecondPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id); setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id);
} }
void DialogAlongLine::setFirstPointId(const qint64 &value, const qint64 &id) void DialogAlongLine::setFirstPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id); setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id);
} }

View file

@ -43,18 +43,18 @@ class DialogAlongLine : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogAlongLine create dialog * @brief DialogAlongLine create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogAlongLine(const VContainer *data, QWidget *parent = 0); DialogAlongLine(const VContainer *data, QWidget *parent = nullptr);
~DialogAlongLine(); ~DialogAlongLine();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,7 +64,7 @@ public:
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
@ -74,7 +74,7 @@ public:
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
@ -84,31 +84,31 @@ public:
* @brief getFirstPointId return id first point of line * @brief getFirstPointId return id first point of line
* @return id * @return id
*/ */
inline qint64 getFirstPointId() const {return firstPointId;} quint32 getFirstPointId() const;
/** /**
* @brief setFirstPointId set id first point of line * @brief setFirstPointId set id first point of line
* @param value id * @param value id
* @param id id of current point * @param id id of current point
*/ */
void setFirstPointId(const qint64 &value, const qint64 &id); void setFirstPointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getSecondPointId return id second point of line * @brief getSecondPointId return id second point of line
* @return id * @return id
*/ */
inline qint64 getSecondPointId() const {return secondPointId;} quint32 getSecondPointId() const;
/** /**
* @brief setSecondPointId set id second point of line * @brief setSecondPointId set id second point of line
* @param value id * @param value id
* @param id id of current point * @param id id of current point
*/ */
void setSecondPointId(const qint64 &value, const qint64 &id); void setSecondPointId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -138,11 +138,36 @@ private:
/** /**
* @brief firstPointId id first point of line * @brief firstPointId id first point of line
*/ */
qint64 firstPointId; quint32 firstPointId;
/** /**
* @brief secondPointId id second point of line * @brief secondPointId id second point of line
*/ */
qint64 secondPointId; quint32 secondPointId;
}; };
inline QString DialogAlongLine::getPointName() const
{
return pointName;
}
inline QString DialogAlongLine::getTypeLine() const
{
return typeLine;
}
inline QString DialogAlongLine::getFormula() const
{
return formula;
}
inline quint32 DialogAlongLine::getFirstPointId() const
{
return firstPointId;
}
inline quint32 DialogAlongLine::getSecondPointId() const
{
return secondPointId;
}
#endif // DIALOGALONGLINE_H #endif // DIALOGALONGLINE_H

View file

@ -34,7 +34,7 @@
DialogArc::DialogArc(const VContainer *data, QWidget *parent) DialogArc::DialogArc(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogArc), flagRadius(false), flagF1(false), flagF2(false), :DialogTool(data, parent), ui(new Ui::DialogArc), flagRadius(false), flagF1(false), flagF2(false),
timerRadius(0), timerF1(0), timerF2(0), center(0), radius(QString()), f1(QString()), f2(QString()) timerRadius(nullptr), timerF1(nullptr), timerF2(nullptr), center(0), radius(QString()), f1(QString()), f2(QString())
{ {
ui->setupUi(this); ui->setupUi(this);
@ -47,38 +47,17 @@ DialogArc::DialogArc(const VContainer *data, QWidget *parent)
timerF2 = new QTimer(this); timerF2 = new QTimer(this);
connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2); connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogArc::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogArc::DialogRejected);
FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxPoints(ui->comboBoxBasePoint);
CheckState(); CheckState();
listWidget = ui->listWidget; InitVariables(ui);
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
connect(ui->toolButtonPutHereRadius, &QPushButton::clicked, this, &DialogArc::PutRadius); connect(ui->toolButtonPutHereRadius, &QPushButton::clicked, this, &DialogArc::PutRadius);
connect(ui->toolButtonPutHereF1, &QPushButton::clicked, this, &DialogArc::PutF1); connect(ui->toolButtonPutHereF1, &QPushButton::clicked, this, &DialogArc::PutF1);
connect(ui->toolButtonPutHereF2, &QPushButton::clicked, this, &DialogArc::PutF2); connect(ui->toolButtonPutHereF2, &QPushButton::clicked, this, &DialogArc::PutF2);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogArc::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogArc::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogArc::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogArc::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogArc::LengthLines);
connect(ui->radioButtonLineAngles, &QRadioButton::clicked, this, &DialogArc::LineAngles);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogArc::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogArc::LengthCurves);
connect(ui->toolButtonEqualRadius, &QPushButton::clicked, this, &DialogArc::EvalRadius); connect(ui->toolButtonEqualRadius, &QPushButton::clicked, this, &DialogArc::EvalRadius);
connect(ui->toolButtonEqualF1, &QPushButton::clicked, this, &DialogArc::EvalF1); connect(ui->toolButtonEqualF1, &QPushButton::clicked, this, &DialogArc::EvalF1);
@ -94,7 +73,7 @@ DialogArc::~DialogArc()
delete ui; delete ui;
} }
void DialogArc::SetCenter(const qint64 &value) void DialogArc::SetCenter(const quint32 &value)
{ {
center = value; center = value;
ChangeCurrentData(ui->comboBoxBasePoint, center); ChangeCurrentData(ui->comboBoxBasePoint, center);
@ -118,9 +97,9 @@ void DialogArc::SetRadius(const QString &value)
ui->lineEditRadius->setText(radius); ui->lineEditRadius->setText(radius);
} }
void DialogArc::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogArc::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);

View file

@ -43,164 +43,184 @@ class DialogArc : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogArc create dialog * @brief DialogArc create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogArc(const VContainer *data, QWidget *parent = 0); DialogArc(const VContainer *data, QWidget *parent = nullptr);
~DialogArc(); ~DialogArc();
/** /**
* @brief GetCenter return id of center point * @brief GetCenter return id of center point
* @return id id * @return id id
*/ */
inline qint64 GetCenter() const {return center;} quint32 GetCenter() const;
/** /**
* @brief SetCenter set id of center point * @brief SetCenter set id of center point
* @param value id * @param value id
*/ */
void SetCenter(const qint64 &value); void SetCenter(const quint32 &value);
/** /**
* @brief GetRadius return formula of radius * @brief GetRadius return formula of radius
* @return formula * @return formula
*/ */
inline QString GetRadius() const {return radius;} QString GetRadius() const;
/** /**
* @brief SetRadius set formula of radius * @brief SetRadius set formula of radius
* @param value formula * @param value formula
*/ */
void SetRadius(const QString &value); void SetRadius(const QString &value);
/** /**
* @brief GetF1 return formula first angle of arc * @brief GetF1 return formula first angle of arc
* @return formula * @return formula
*/ */
inline QString GetF1() const {return f1;} QString GetF1() const;
/** /**
* @brief SetF1 set formula first angle of arc * @brief SetF1 set formula first angle of arc
* @param value formula * @param value formula
*/ */
void SetF1(const QString &value); void SetF1(const QString &value);
/** /**
* @brief GetF2 return formula second angle of arc * @brief GetF2 return formula second angle of arc
* @return formula * @return formula
*/ */
inline QString GetF2() const {return f2;} QString GetF2() const;
/** /**
* @brief SetF2 set formula second angle of arc * @brief SetF2 set formula second angle of arc
* @param value formula * @param value formula
*/ */
void SetF2(const QString &value); void SetF2(const QString &value);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
virtual void DialogAccepted(); virtual void DialogAccepted();
/** /**
* @brief ValChenged show description angles of lines * @brief ValChenged show description angles of lines
* @param row number of row * @param row number of row
*/ */
virtual void ValChenged(int row); virtual void ValChenged(int row);
/** /**
* @brief PutRadius put variable into formula of radius * @brief PutRadius put variable into formula of radius
*/ */
void PutRadius(); void PutRadius();
/** /**
* @brief PutF1 put variable into formula of first angle * @brief PutF1 put variable into formula of first angle
*/ */
void PutF1(); void PutF1();
/** /**
* @brief PutF2 put variable into formula of second angle * @brief PutF2 put variable into formula of second angle
*/ */
void PutF2(); void PutF2();
/** /**
* @brief LineAngles show variable angles of lines * @brief LineAngles show variable angles of lines
*/ */
void LineAngles(); void LineAngles();
/** /**
* @brief RadiusChanged after change formula of radius calculate value and show result * @brief RadiusChanged after change formula of radius calculate value and show result
*/ */
void RadiusChanged(); void RadiusChanged();
/** /**
* @brief F1Changed after change formula of first angle calculate value and show result * @brief F1Changed after change formula of first angle calculate value and show result
*/ */
void F1Changed(); void F1Changed();
/** /**
* @brief F2Changed after change formula of second angle calculate value and show result * @brief F2Changed after change formula of second angle calculate value and show result
*/ */
void F2Changed(); void F2Changed();
protected: protected:
/** /**
* @brief CheckState if all is right enable button ok * @brief CheckState if all is right enable button ok
*/ */
virtual void CheckState(); virtual void CheckState();
private: private:
Q_DISABLE_COPY(DialogArc) Q_DISABLE_COPY(DialogArc)
/** /**
* @brief ui keeps information about user interface * @brief ui keeps information about user interface
*/ */
Ui::DialogArc *ui; Ui::DialogArc *ui;
/** /**
* @brief flagRadius true if value of radius is correct * @brief flagRadius true if value of radius is correct
*/ */
bool flagRadius; bool flagRadius;
/** /**
* @brief flagF1 true if value of first angle is correct * @brief flagF1 true if value of first angle is correct
*/ */
bool flagF1; bool flagF1;
/** /**
* @brief flagF2 true if value of second angle is correct * @brief flagF2 true if value of second angle is correct
*/ */
bool flagF2; bool flagF2;
/** /**
* @brief timerRadius timer of check formula of radius * @brief timerRadius timer of check formula of radius
*/ */
QTimer *timerRadius; QTimer *timerRadius;
/** /**
* @brief timerF1 timer of check formula of first angle * @brief timerF1 timer of check formula of first angle
*/ */
QTimer *timerF1; QTimer *timerF1;
/** /**
* @brief timerF2 timer of check formula of second angle * @brief timerF2 timer of check formula of second angle
*/ */
QTimer *timerF2; QTimer *timerF2;
/** /**
* @brief center id of center point * @brief center id of center point
*/ */
qint64 center; quint32 center;
/** /**
* @brief radius formula of radius * @brief radius formula of radius
*/ */
QString radius; QString radius;
/** /**
* @brief f1 formula of first angle * @brief f1 formula of first angle
*/ */
QString f1; QString f1;
/** /**
* @brief f2 formula of second angle * @brief f2 formula of second angle
*/ */
QString f2; QString f2;
/** /**
* @brief EvalRadius calculate value of radius * @brief EvalRadius calculate value of radius
*/ */
void EvalRadius(); void EvalRadius();
/** /**
* @brief EvalF1 calculate value of first angle * @brief EvalF1 calculate value of first angle
*/ */
void EvalF1(); void EvalF1();
/** /**
* @brief EvalF2 calculate value of second angle * @brief EvalF2 calculate value of second angle
*/ */
void EvalF2(); void EvalF2();
/** /**
* @brief ShowLineAngles show varibles angles of lines * @brief ShowLineAngles show varibles angles of lines
*/ */
void ShowLineAngles(); void ShowLineAngles();
}; };
inline quint32 DialogArc::GetCenter() const
{
return center;
}
inline QString DialogArc::GetRadius() const
{
return radius;
}
inline QString DialogArc::GetF1() const
{
return f1;
}
inline QString DialogArc::GetF2() const
{
return f2;
}
#endif // DIALOGARC_H #endif // DIALOGARC_H

View file

@ -36,25 +36,15 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0), thirdPointId(0) typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0), thirdPointId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
listWidget = ui->listWidget; InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogBisector::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogBisector::DialogRejected);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
@ -62,16 +52,8 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
FillComboBoxTypeLine(ui->comboBoxLineType); FillComboBoxTypeLine(ui->comboBoxLineType);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogBisector::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogBisector::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogBisector::PutVal); connect(listWidget, &QListWidget::itemDoubleClicked, this, &DialogBisector::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogBisector::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogBisector::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogBisector::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogBisector::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogBisector::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogBisector::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogBisector::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogBisector::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogBisector::FormulaChanged);
@ -82,9 +64,9 @@ DialogBisector::~DialogBisector()
delete ui; delete ui;
} }
void DialogBisector::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogBisector::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -144,17 +126,17 @@ void DialogBisector::setFormula(const QString &value)
ui->lineEditFormula->setText(formula); ui->lineEditFormula->setText(formula);
} }
void DialogBisector::setFirstPointId(const qint64 &value, const qint64 &id) void DialogBisector::setFirstPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id); setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id);
} }
void DialogBisector::setSecondPointId(const qint64 &value, const qint64 &id) void DialogBisector::setSecondPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id); setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id);
} }
void DialogBisector::setThirdPointId(const qint64 &value, const qint64 &id) void DialogBisector::setThirdPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxThirdPoint, thirdPointId, value, id); setCurrentPointId(ui->comboBoxThirdPoint, thirdPointId, value, id);
} }

View file

@ -43,87 +43,87 @@ class DialogBisector : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogBisector create dialog * @brief DialogBisector create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogBisector(const VContainer *data, QWidget *parent = 0); DialogBisector(const VContainer *data, QWidget *parent = nullptr);
~DialogBisector(); ~DialogBisector();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
QString getPointName() const {return pointName;} QString getPointName() const {return pointName;}
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
*/ */
void setPointName(const QString &value); void setPointName(const QString &value);
/** /**
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
*/ */
void setTypeLine(const QString &value); void setTypeLine(const QString &value);
/** /**
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
*/ */
void setFormula(const QString &value); void setFormula(const QString &value);
/** /**
* @brief getFirstPointId return id of first point * @brief getFirstPointId return id of first point
* @return id * @return id
*/ */
inline qint64 getFirstPointId() const {return firstPointId;} quint32 getFirstPointId() const;
/** /**
* @brief setFirstPointId set id of first point * @brief setFirstPointId set id of first point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setFirstPointId(const qint64 &value, const qint64 &id); void setFirstPointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getSecondPointId return id of second point * @brief getSecondPointId return id of second point
* @return id * @return id
*/ */
inline qint64 getSecondPointId() const {return secondPointId;} quint32 getSecondPointId() const;
/** /**
* @brief setSecondPointId set id of second point * @brief setSecondPointId set id of second point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setSecondPointId(const qint64 &value, const qint64 &id); void setSecondPointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getThirdPointId return id of third point * @brief getThirdPointId return id of third point
* @return id * @return id
*/ */
inline qint64 getThirdPointId() const {return thirdPointId;} quint32 getThirdPointId() const;
/** /**
* @brief setThirdPointId set id of third point * @brief setThirdPointId set id of third point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setThirdPointId(const qint64 &value, const qint64 &id); void setThirdPointId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
virtual void DialogAccepted(); virtual void DialogAccepted();
private: private:
Q_DISABLE_COPY(DialogBisector) Q_DISABLE_COPY(DialogBisector)
/** /**
@ -149,15 +149,40 @@ private:
/** /**
* @brief firstPointId id of first point * @brief firstPointId id of first point
*/ */
qint64 firstPointId; quint32 firstPointId;
/** /**
* @brief secondPointId id of second point * @brief secondPointId id of second point
*/ */
qint64 secondPointId; quint32 secondPointId;
/** /**
* @brief thirdPointId id of third point * @brief thirdPointId id of third point
*/ */
qint64 thirdPointId; quint32 thirdPointId;
}; };
inline QString DialogBisector::getTypeLine() const
{
return typeLine;
}
inline QString DialogBisector::getFormula() const
{
return formula;
}
inline quint32 DialogBisector::getFirstPointId() const
{
return firstPointId;
}
inline quint32 DialogBisector::getSecondPointId() const
{
return secondPointId;
}
inline quint32 DialogBisector::getThirdPointId() const
{
return thirdPointId;
}
#endif // DIALOGBISECTOR_H #endif // DIALOGBISECTOR_H

View file

@ -33,39 +33,22 @@ DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) :
DialogTool(data, parent), ui(new Ui::DialogCutArc), pointName(QString()), formula(QString()), arcId(0) DialogTool(data, parent), ui(new Ui::DialogCutArc), pointName(QString()), formula(QString()), arcId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
listWidget = ui->listWidget; InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogCutArc::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogCutArc::DialogRejected);
FillComboBoxArcs(ui->comboBoxArc); FillComboBoxArcs(ui->comboBoxArc);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutArc::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutArc::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutArc::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutArc::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogCutArc::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogCutArc::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogCutArc::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogCutArc::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogCutArc::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogCutArc::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogCutArc::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutArc::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutArc::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutArc::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutArc::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutArc::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutArc::FormulaChanged);
@ -76,9 +59,9 @@ DialogCutArc::~DialogCutArc()
delete ui; delete ui;
} }
void DialogCutArc::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogCutArc::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Arc) if (type == Valentina::Arc)
{ {
const VArc *arc = data->GeometricObject<const VArc *>(id); const VArc *arc = data->GeometricObject<const VArc *>(id);
ChangeCurrentText(ui->comboBoxArc, arc->name()); ChangeCurrentText(ui->comboBoxArc, arc->name());
@ -95,7 +78,7 @@ void DialogCutArc::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogCutArc::setArcId(const qint64 &value, const qint64 &id) void DialogCutArc::setArcId(const quint32 &value, const quint32 &id)
{ {
setCurrentArcId(ui->comboBoxArc, arcId, value, id, ComboMode::CutArc); setCurrentArcId(ui->comboBoxArc, arcId, value, id, ComboMode::CutArc);
} }

View file

@ -48,7 +48,7 @@ public:
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogCutArc(const VContainer *data, QWidget *parent = 0); DialogCutArc(const VContainer *data, QWidget *parent = nullptr);
~DialogCutArc(); ~DialogCutArc();
/** /**
* @brief getPointName return name point on arc * @brief getPointName return name point on arc
@ -74,20 +74,20 @@ public:
* @brief getArcId return id of arc * @brief getArcId return id of arc
* @return id * @return id
*/ */
qint64 getArcId() const {return arcId;} quint32 getArcId() const {return arcId;}
/** /**
* @brief setArcId set id of arc * @brief setArcId set id of arc
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setArcId(const qint64 &value, const qint64 &id); void setArcId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -109,7 +109,7 @@ private:
/** /**
* @brief arcId keep id of arc * @brief arcId keep id of arc
*/ */
qint64 arcId; quint32 arcId;
}; };
#endif // DIALOGCUTARC_H #endif // DIALOGCUTARC_H

View file

@ -33,39 +33,21 @@ DialogCutSpline::DialogCutSpline(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogCutSpline), pointName(QString()), formula(QString()), splineId(0) :DialogTool(data, parent), ui(new Ui::DialogCutSpline), pointName(QString()), formula(QString()), splineId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
listWidget = ui->listWidget; InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogCutSpline::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogCutSpline::DialogRejected);
FillComboBoxSplines(ui->comboBoxSpline); FillComboBoxSplines(ui->comboBoxSpline);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutSpline::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutSpline::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutSpline::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutSpline::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogCutSpline::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogCutSpline::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogCutSpline::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogCutSpline::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogCutSpline::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogCutSpline::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogCutSpline::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutSpline::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutSpline::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutSpline::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutSpline::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutSpline::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutSpline::FormulaChanged);
@ -88,14 +70,14 @@ void DialogCutSpline::setFormula(const QString &value)
ui->lineEditFormula->setText(formula); ui->lineEditFormula->setText(formula);
} }
void DialogCutSpline::setSplineId(const qint64 &value, const qint64 &id) void DialogCutSpline::setSplineId(const quint32 &value, const quint32 &id)
{ {
setCurrentSplineId(ui->comboBoxSpline, splineId, value, id, ComboMode::CutSpline); setCurrentSplineId(ui->comboBoxSpline, splineId, value, id, ComboMode::CutSpline);
} }
void DialogCutSpline::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogCutSpline::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Spline) if (type == Valentina::Spline)
{ {
const VSpline *spl = data->GeometricObject<const VSpline *>(id); const VSpline *spl = data->GeometricObject<const VSpline *>(id);
ChangeCurrentText(ui->comboBoxSpline, spl->name()); ChangeCurrentText(ui->comboBoxSpline, spl->name());

View file

@ -48,50 +48,50 @@ public:
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogCutSpline(const VContainer *data, QWidget *parent = 0); DialogCutSpline(const VContainer *data, QWidget *parent = nullptr);
~DialogCutSpline(); ~DialogCutSpline();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
*/ */
void setPointName(const QString &value); void setPointName(const QString &value);
/** /**
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
*/ */
void setFormula(const QString &value); void setFormula(const QString &value);
/** /**
* @brief getSplineId return id base point of line * @brief getSplineId return id base point of line
* @return id * @return id
*/ */
inline qint64 getSplineId() const {return splineId;} quint32 getSplineId() const;
/** /**
* @brief setSplineId set id spline * @brief setSplineId set id spline
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setSplineId(const qint64 &value, const qint64 &id); void setSplineId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
virtual void DialogAccepted(); virtual void DialogAccepted();
private: private:
Q_DISABLE_COPY(DialogCutSpline) Q_DISABLE_COPY(DialogCutSpline)
/** /**
@ -101,15 +101,30 @@ private:
/** /**
* @brief pointName name of created point * @brief pointName name of created point
*/ */
QString pointName; QString pointName;
/** /**
* @brief formula string with formula * @brief formula string with formula
*/ */
QString formula; QString formula;
/** /**
* @brief splineId keep id of spline * @brief splineId keep id of spline
*/ */
qint64 splineId; quint32 splineId;
}; };
inline QString DialogCutSpline::getPointName() const
{
return pointName;
}
inline QString DialogCutSpline::getFormula() const
{
return formula;
}
inline quint32 DialogCutSpline::getSplineId() const
{
return splineId;
}
#endif // DIALOGCUTSPLINE_H #endif // DIALOGCUTSPLINE_H

View file

@ -34,39 +34,21 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, QWidget *parent
splinePathId(0) splinePathId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
listWidget = ui->listWidget; InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogCutSplinePath::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogCutSplinePath::DialogRejected);
FillComboBoxSplinesPath(ui->comboBoxSplinePath); FillComboBoxSplinesPath(ui->comboBoxSplinePath);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutSplinePath::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogCutSplinePath::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutSplinePath::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogCutSplinePath::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogCutSplinePath::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogCutSplinePath::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogCutSplinePath::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogCutSplinePath::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogCutSplinePath::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogCutSplinePath::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogCutSplinePath::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutSplinePath::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutSplinePath::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutSplinePath::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutSplinePath::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutSplinePath::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutSplinePath::FormulaChanged);
@ -89,14 +71,14 @@ void DialogCutSplinePath::setFormula(const QString &value)
ui->lineEditFormula->setText(formula); ui->lineEditFormula->setText(formula);
} }
void DialogCutSplinePath::setSplinePathId(const qint64 &value, const qint64 &id) void DialogCutSplinePath::setSplinePathId(const quint32 &value, const quint32 &id)
{ {
setCurrentSplinePathId(ui->comboBoxSplinePath, splinePathId, value, id, ComboMode::CutSpline); setCurrentSplinePathId(ui->comboBoxSplinePath, splinePathId, value, id, ComboMode::CutSpline);
} }
void DialogCutSplinePath::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogCutSplinePath::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::SplinePath) if (type == Valentina::SplinePath)
{ {
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(id); const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(id);
ChangeCurrentText(ui->comboBoxSplinePath, splPath->name()); ChangeCurrentText(ui->comboBoxSplinePath, splPath->name());

View file

@ -48,50 +48,50 @@ public:
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogCutSplinePath(const VContainer *data, QWidget *parent = 0); DialogCutSplinePath(const VContainer *data, QWidget *parent = nullptr);
~DialogCutSplinePath(); ~DialogCutSplinePath();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
*/ */
void setPointName(const QString &value); void setPointName(const QString &value);
/** /**
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
*/ */
void setFormula(const QString &value); void setFormula(const QString &value);
/** /**
* @brief getSplineId return id base point of line * @brief getSplineId return id base point of line
* @return id * @return id
*/ */
inline qint64 getSplinePathId() const {return splinePathId;} quint32 getSplinePathId() const;
/** /**
* @brief setSplineId set id spline * @brief setSplineId set id spline
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setSplinePathId(const qint64 &value, const qint64 &id); void setSplinePathId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
virtual void DialogAccepted(); virtual void DialogAccepted();
private: private:
Q_DISABLE_COPY(DialogCutSplinePath) Q_DISABLE_COPY(DialogCutSplinePath)
/** /**
@ -101,15 +101,30 @@ private:
/** /**
* @brief pointName name of created point * @brief pointName name of created point
*/ */
QString pointName; QString pointName;
/** /**
* @brief formula string with formula * @brief formula string with formula
*/ */
QString formula; QString formula;
/** /**
* @brief splinePathId keep id of splinePath * @brief splinePathId keep id of splinePath
*/ */
qint64 splinePathId; quint32 splinePathId;
}; };
inline QString DialogCutSplinePath::getPointName() const
{
return pointName;
}
inline QString DialogCutSplinePath::getFormula() const
{
return formula;
}
inline quint32 DialogCutSplinePath::getSplinePathId() const
{
return splinePathId;
}
#endif // DIALOGCUTSPLINEPATH_H #endif // DIALOGCUTSPLINEPATH_H

View file

@ -36,8 +36,13 @@ DialogDetail::DialogDetail(const VContainer *data, QWidget *parent)
{ {
ui.setupUi(this); ui.setupUi(this);
labelEditNamePoint = ui.labelEditNameDetail; labelEditNamePoint = ui.labelEditNameDetail;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok); bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogDetail::DialogAccepted); Q_CHECK_PTR(bOk);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
flagName = true;//We have default name of detail. flagName = true;//We have default name of detail.
QPalette palette = labelEditNamePoint->palette(); QPalette palette = labelEditNamePoint->palette();
@ -45,9 +50,6 @@ DialogDetail::DialogDetail(const VContainer *data, QWidget *parent)
labelEditNamePoint->setPalette(palette); labelEditNamePoint->setPalette(palette);
CheckState(); CheckState();
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogDetail::DialogRejected);
connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogDetail::ObjectChanged); connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogDetail::ObjectChanged);
connect(ui.spinBoxBiasX, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged), connect(ui.spinBoxBiasX, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged),
this, &DialogDetail::BiasXChanged); this, &DialogDetail::BiasXChanged);
@ -60,26 +62,26 @@ DialogDetail::DialogDetail(const VContainer *data, QWidget *parent)
connect(ui.toolButtonDelete, &QToolButton::clicked, this, &DialogDetail::DeleteItem); connect(ui.toolButtonDelete, &QToolButton::clicked, this, &DialogDetail::DeleteItem);
} }
void DialogDetail::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogDetail::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type != Scene::Line && type != Scene::Detail) if (type != Valentina::Line && type != Valentina::Detail)
{ {
switch (type) switch (type)
{ {
case (Scene::Arc): case (Valentina::Arc):
NewItem(id, Tool::NodeArc, NodeDetail::Contour); NewItem(id, Valentina::NodeArc, NodeDetail::Contour);
break; break;
case (Scene::Point): case (Valentina::Point):
NewItem(id, Tool::NodePoint, NodeDetail::Contour); NewItem(id, Valentina::NodePoint, NodeDetail::Contour);
break; break;
case (Scene::Spline): case (Valentina::Spline):
NewItem(id, Tool::NodeSpline, NodeDetail::Contour); NewItem(id, Valentina::NodeSpline, NodeDetail::Contour);
break; break;
case (Scene::SplinePath): case (Valentina::SplinePath):
NewItem(id, Tool::NodeSplinePath, NodeDetail::Contour); NewItem(id, Valentina::NodeSplinePath, NodeDetail::Contour);
break; break;
default: default:
qWarning()<<tr("Got wrong scene object. Ignore."); qDebug()<<tr("Got wrong scene object. Ignore.");
break; break;
} }
ui.toolButtonDelete->setEnabled(true); ui.toolButtonDelete->setEnabled(true);
@ -103,38 +105,38 @@ void DialogDetail::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogDetail::NewItem(qint64 id, const Tool::Tools &typeTool, const NodeDetail::NodeDetails &typeNode, qreal mx, void DialogDetail::NewItem(quint32 id, const Valentina::Tools &typeTool, const NodeDetail::NodeDetails &typeNode, qreal mx,
qreal my) qreal my)
{ {
QString name; QString name;
switch (typeTool) switch (typeTool)
{ {
case (Tool::NodePoint): case (Valentina::NodePoint):
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
name = point->name(); name = point->name();
break; break;
} }
case (Tool::NodeArc): case (Valentina::NodeArc):
{ {
const VArc *arc = data->GeometricObject<const VArc *>(id); const VArc *arc = data->GeometricObject<const VArc *>(id);
name = arc->name(); name = arc->name();
break; break;
} }
case (Tool::NodeSpline): case (Valentina::NodeSpline):
{ {
const VSpline *spl = data->GeometricObject<const VSpline *>(id); const VSpline *spl = data->GeometricObject<const VSpline *>(id);
name = spl->name(); name = spl->name();
break; break;
} }
case (Tool::NodeSplinePath): case (Valentina::NodeSplinePath):
{ {
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(id); const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(id);
name = splPath->name(); name = splPath->name();
break; break;
} }
default: default:
qWarning()<<tr("Got wrong tools. Ignore."); qDebug()<<"Got wrong tools. Ignore.";
break; break;
} }
@ -148,8 +150,8 @@ void DialogDetail::NewItem(qint64 id, const Tool::Tools &typeTool, const NodeDet
this, &DialogDetail::BiasXChanged); this, &DialogDetail::BiasXChanged);
disconnect(ui.spinBoxBiasY, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged), disconnect(ui.spinBoxBiasY, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged),
this, &DialogDetail::BiasYChanged); this, &DialogDetail::BiasYChanged);
ui.spinBoxBiasX->setValue(static_cast<qint32>(toMM(node.getMx()))); ui.spinBoxBiasX->setValue(static_cast<qint32>(qApp->fromPixel(node.getMx())));
ui.spinBoxBiasY->setValue(static_cast<qint32>(toMM(node.getMy()))); ui.spinBoxBiasY->setValue(static_cast<qint32>(qApp->fromPixel(node.getMy())));
connect(ui.spinBoxBiasX, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged), connect(ui.spinBoxBiasX, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged),
this, &DialogDetail::BiasXChanged); this, &DialogDetail::BiasXChanged);
connect(ui.spinBoxBiasY, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged), connect(ui.spinBoxBiasY, static_cast<void (QSpinBox::*)(qint32)>(&QSpinBox::valueChanged),
@ -182,7 +184,7 @@ void DialogDetail::BiasXChanged(qreal d)
QListWidgetItem *item = ui.listWidget->item( row ); QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item); Q_CHECK_PTR(item);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole)); VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMx(toPixel(d)); node.setMx(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node)); item->setData(Qt::UserRole, QVariant::fromValue(node));
} }
@ -192,7 +194,7 @@ void DialogDetail::BiasYChanged(qreal d)
QListWidgetItem *item = ui.listWidget->item( row ); QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item); Q_CHECK_PTR(item);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole)); VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMy(toPixel(d)); node.setMy(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node)); item->setData(Qt::UserRole, QVariant::fromValue(node));
} }
@ -216,8 +218,8 @@ void DialogDetail::ObjectChanged(int row)
} }
QListWidgetItem *item = ui.listWidget->item( row ); QListWidgetItem *item = ui.listWidget->item( row );
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole)); VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
ui.spinBoxBiasX->setValue(static_cast<qint32>(toMM(node.getMx()))); ui.spinBoxBiasX->setValue(static_cast<qint32>(qApp->fromPixel(node.getMx())));
ui.spinBoxBiasY->setValue(static_cast<qint32>(toMM(node.getMy()))); ui.spinBoxBiasY->setValue(static_cast<qint32>(qApp->fromPixel(node.getMy())));
} }
void DialogDetail::DeleteItem() void DialogDetail::DeleteItem()

View file

@ -44,12 +44,12 @@ public:
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogDetail(const VContainer *data, QWidget *parent = 0); DialogDetail(const VContainer *data, QWidget *parent = nullptr);
/** /**
* @brief getDetails return detail * @brief getDetails return detail
* @return detail * @return detail
*/ */
inline VDetail getDetails() const {return details;} VDetail getDetails() const;
/** /**
* @brief setDetails set detail * @brief setDetails set detail
* @param value detail * @param value detail
@ -61,7 +61,7 @@ public slots:
* @param id id of objects (points, arcs, splines, spline paths) * @param id id of objects (points, arcs, splines, spline paths)
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -121,8 +121,13 @@ private:
* @param mx offset respect to x * @param mx offset respect to x
* @param my offset respect to y * @param my offset respect to y
*/ */
void NewItem(qint64 id, const Tool::Tools &typeTool, const NodeDetail::NodeDetails &typeNode, void NewItem(quint32 id, const Valentina::Tools &typeTool, const NodeDetail::NodeDetails &typeNode,
qreal mx = 0, qreal my = 0); qreal mx = 0, qreal my = 0);
}; };
inline VDetail DialogDetail::getDetails() const
{
return details;
}
#endif // DIALOGDETAIL_H #endif // DIALOGDETAIL_H

View file

@ -36,66 +36,32 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
formula(QString()), angle(0), basePointId(0) formula(QString()), angle(0), basePointId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
spinBoxAngle = ui->doubleSpinBoxAngle; InitVariables(ui);
listWidget = ui->listWidget;
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogEndLine::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogEndLine::DialogRejected);
FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxPoints(ui->comboBoxBasePoint);
FillComboBoxTypeLine(ui->comboBoxLineType); FillComboBoxTypeLine(ui->comboBoxLineType);
connect(ui->toolButtonArrowDown, &QPushButton::clicked, this, InitArrow(ui);
&DialogEndLine::ArrowDown);
connect(ui->toolButtonArrowUp, &QPushButton::clicked, this,
&DialogEndLine::ArrowUp);
connect(ui->toolButtonArrowLeft, &QPushButton::clicked, this,
&DialogEndLine::ArrowLeft);
connect(ui->toolButtonArrowRight, &QPushButton::clicked, this,
&DialogEndLine::ArrowRight);
connect(ui->toolButtonArrowLeftUp, &QPushButton::clicked, this,
&DialogEndLine::ArrowLeftUp);
connect(ui->toolButtonArrowLeftDown, &QPushButton::clicked, this,
&DialogEndLine::ArrowLeftDown);
connect(ui->toolButtonArrowRightUp, &QPushButton::clicked, this,
&DialogEndLine::ArrowRightUp);
connect(ui->toolButtonArrowRightDown, &QPushButton::clicked, this,
&DialogEndLine::ArrowRightDown);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogEndLine::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogEndLine::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogEndLine::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogEndLine::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogEndLine::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogEndLine::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogEndLine::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogEndLine::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogEndLine::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogEndLine::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogEndLine::FormulaChanged);
} }
void DialogEndLine::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogEndLine::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
ChangeCurrentText(ui->comboBoxBasePoint, point->name()); ChangeCurrentText(ui->comboBoxBasePoint, point->name());
@ -128,7 +94,7 @@ void DialogEndLine::setAngle(const qreal &value)
ui->doubleSpinBoxAngle->setValue(angle); ui->doubleSpinBoxAngle->setValue(angle);
} }
void DialogEndLine::setBasePointId(const qint64 &value, const qint64 &id) void DialogEndLine::setBasePointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxBasePoint, basePointId, value, id); setCurrentPointId(ui->comboBoxBasePoint, basePointId, value, id);
} }

View file

@ -43,18 +43,18 @@ class DialogEndLine : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogEndLine create dialog * @brief DialogEndLine create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogEndLine(const VContainer *data, QWidget *parent = 0); DialogEndLine(const VContainer *data, QWidget *parent = nullptr);
~DialogEndLine(); ~DialogEndLine();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,7 +64,7 @@ public:
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
@ -74,7 +74,7 @@ public:
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
@ -84,7 +84,7 @@ public:
* @brief getAngle return angle of line * @brief getAngle return angle of line
* @return angle in degree * @return angle in degree
*/ */
inline qreal getAngle() const {return angle;} qreal getAngle() const;
/** /**
* @brief setAngle set angle of line * @brief setAngle set angle of line
* @param value angle in degree * @param value angle in degree
@ -94,20 +94,20 @@ public:
* @brief getBasePointId return id base point of line * @brief getBasePointId return id base point of line
* @return id * @return id
*/ */
inline qint64 getBasePointId() const {return basePointId;} quint32 getBasePointId() const;
/** /**
* @brief setBasePointId set id base point of line * @brief setBasePointId set id base point of line
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setBasePointId(const qint64 &value, const qint64 &id); void setBasePointId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -137,7 +137,32 @@ private:
/** /**
* @brief basePointId id base point of line * @brief basePointId id base point of line
*/ */
qint64 basePointId; quint32 basePointId;
}; };
inline QString DialogEndLine::getPointName() const
{
return pointName;
}
inline QString DialogEndLine::getTypeLine() const
{
return typeLine;
}
inline QString DialogEndLine::getFormula() const
{
return formula;
}
inline qreal DialogEndLine::getAngle() const
{
return angle;
}
inline quint32 DialogEndLine::getBasePointId() const
{
return basePointId;
}
#endif // DIALOGENDLINE_H #endif // DIALOGENDLINE_H

View file

@ -37,12 +37,9 @@ DialogHeight::DialogHeight(const VContainer *data, QWidget *parent)
{ {
ui->setupUi(this); ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogHeight::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogHeight::DialogRejected);
FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxPoints(ui->comboBoxBasePoint);
FillComboBoxPoints(ui->comboBoxP1Line); FillComboBoxPoints(ui->comboBoxP1Line);
@ -68,27 +65,27 @@ void DialogHeight::setTypeLine(const QString &value)
SetupTypeLine(ui->comboBoxLineType, value); SetupTypeLine(ui->comboBoxLineType, value);
} }
void DialogHeight::setBasePointId(const qint64 &value, const qint64 &id) void DialogHeight::setBasePointId(const quint32 &value, const quint32 &id)
{ {
basePointId = value; basePointId = value;
setCurrentPointId(ui->comboBoxBasePoint, basePointId, value, id); setCurrentPointId(ui->comboBoxBasePoint, basePointId, value, id);
} }
void DialogHeight::setP1LineId(const qint64 &value, const qint64 &id) void DialogHeight::setP1LineId(const quint32 &value, const quint32 &id)
{ {
p1LineId = value; p1LineId = value;
setCurrentPointId(ui->comboBoxP1Line, p1LineId, value, id); setCurrentPointId(ui->comboBoxP1Line, p1LineId, value, id);
} }
void DialogHeight::setP2LineId(const qint64 &value, const qint64 &id) void DialogHeight::setP2LineId(const quint32 &value, const quint32 &id)
{ {
p2LineId = value; p2LineId = value;
setCurrentPointId(ui->comboBoxP2Line, p2LineId, value, id); setCurrentPointId(ui->comboBoxP2Line, p2LineId, value, id);
} }
void DialogHeight::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogHeight::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
switch (number) switch (number)

View file

@ -43,18 +43,18 @@ class DialogHeight : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogHeight create dialog * @brief DialogHeight create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogHeight(const VContainer *data, QWidget *parent = 0); DialogHeight(const VContainer *data, QWidget *parent = nullptr);
~DialogHeight(); ~DialogHeight();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,7 +64,7 @@ public:
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
@ -74,42 +74,42 @@ public:
* @brief getBasePointId return id base point of height * @brief getBasePointId return id base point of height
* @return id * @return id
*/ */
inline qint64 getBasePointId() const {return basePointId;} quint32 getBasePointId() const;
/** /**
* @brief setBasePointId set id base point of height * @brief setBasePointId set id base point of height
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setBasePointId(const qint64 &value, const qint64 &id); void setBasePointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getP1LineId return id first point of line * @brief getP1LineId return id first point of line
* @return id id * @return id id
*/ */
inline qint64 getP1LineId() const {return p1LineId;} quint32 getP1LineId() const;
/** /**
* @brief setP1LineId set id first point of line * @brief setP1LineId set id first point of line
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setP1LineId(const qint64 &value, const qint64 &id); void setP1LineId(const quint32 &value, const quint32 &id);
/** /**
* @brief getP2LineId return id second point of line * @brief getP2LineId return id second point of line
* @return id * @return id
*/ */
inline qint64 getP2LineId() const{return p2LineId;} quint32 getP2LineId() const;
/** /**
* @brief setP2LineId set id second point of line * @brief setP2LineId set id second point of line
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setP2LineId(const qint64 &value, const qint64 &id); void setP2LineId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -135,15 +135,40 @@ private:
/** /**
* @brief basePointId id base point of height * @brief basePointId id base point of height
*/ */
qint64 basePointId; quint32 basePointId;
/** /**
* @brief p1LineId id first point of line * @brief p1LineId id first point of line
*/ */
qint64 p1LineId; quint32 p1LineId;
/** /**
* @brief p2LineId id second point of line * @brief p2LineId id second point of line
*/ */
qint64 p2LineId; quint32 p2LineId;
}; };
inline QString DialogHeight::getPointName() const
{
return pointName;
}
inline QString DialogHeight::getTypeLine() const
{
return typeLine;
}
inline quint32 DialogHeight::getBasePointId() const
{
return basePointId;
}
inline quint32 DialogHeight::getP1LineId() const
{
return p1LineId;
}
inline quint32 DialogHeight::getP2LineId() const
{
return p2LineId;
}
#endif // DIALOGHEIGHT_H #endif // DIALOGHEIGHT_H

View file

@ -35,10 +35,7 @@ DialogLine::DialogLine(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString()) :DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString())
{ {
ui->setupUi(this); ui->setupUi(this);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogLine::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogLine::DialogRejected);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
@ -52,7 +49,7 @@ DialogLine::~DialogLine()
delete ui; delete ui;
} }
void DialogLine::setSecondPoint(const qint64 &value) void DialogLine::setSecondPoint(const quint32 &value)
{ {
secondPoint = value; secondPoint = value;
const VPointF *point = data->GeometricObject<const VPointF *>(value); const VPointF *point = data->GeometricObject<const VPointF *>(value);
@ -69,7 +66,7 @@ void DialogLine::setTypeLine(const QString &value)
SetupTypeLine(ui->comboBoxLineType, value); SetupTypeLine(ui->comboBoxLineType, value);
} }
void DialogLine::setFirstPoint(const qint64 &value) void DialogLine::setFirstPoint(const quint32 &value)
{ {
firstPoint = value; firstPoint = value;
const VPointF *point = data->GeometricObject<const VPointF *>(value); const VPointF *point = data->GeometricObject<const VPointF *>(value);
@ -84,16 +81,16 @@ void DialogLine::setFirstPoint(const qint64 &value)
void DialogLine::DialogAccepted() void DialogLine::DialogAccepted()
{ {
qint32 index = ui->comboBoxFirstPoint->currentIndex(); qint32 index = ui->comboBoxFirstPoint->currentIndex();
firstPoint = qvariant_cast<qint64>(ui->comboBoxFirstPoint->itemData(index)); firstPoint = qvariant_cast<quint32>(ui->comboBoxFirstPoint->itemData(index));
index = ui->comboBoxSecondPoint->currentIndex(); index = ui->comboBoxSecondPoint->currentIndex();
secondPoint = qvariant_cast<qint64>(ui->comboBoxSecondPoint->itemData(index)); secondPoint = qvariant_cast<quint32>(ui->comboBoxSecondPoint->itemData(index));
typeLine = GetTypeLine(ui->comboBoxLineType); typeLine = GetTypeLine(ui->comboBoxLineType);
DialogClosed(QDialog::Accepted); DialogClosed(QDialog::Accepted);
} }
void DialogLine::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogLine::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)

View file

@ -43,76 +43,91 @@ class DialogLine : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogLine create dialog * @brief DialogLine create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogLine(const VContainer *data, QWidget *parent = 0); DialogLine(const VContainer *data, QWidget *parent = nullptr);
~DialogLine(); ~DialogLine();
/** /**
* @brief getFirstPoint return id first point * @brief getFirstPoint return id first point
* @return id * @return id
*/ */
inline qint64 getFirstPoint() const {return firstPoint;} quint32 getFirstPoint() const;
/** /**
* @brief setFirstPoint set id first point * @brief setFirstPoint set id first point
* @param value id * @param value id
*/ */
void setFirstPoint(const qint64 &value); void setFirstPoint(const quint32 &value);
/** /**
* @brief getSecondPoint return id second point * @brief getSecondPoint return id second point
* @return id * @return id
*/ */
inline qint64 getSecondPoint() const {return secondPoint;} quint32 getSecondPoint() const;
/** /**
* @brief setSecondPoint set id second point * @brief setSecondPoint set id second point
* @param value id * @param value id
*/ */
void setSecondPoint(const qint64 &value); void setSecondPoint(const quint32 &value);
/** /**
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
*/ */
void setTypeLine(const QString &value); void setTypeLine(const QString &value);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
virtual void DialogAccepted(); virtual void DialogAccepted();
private: private:
Q_DISABLE_COPY(DialogLine) Q_DISABLE_COPY(DialogLine)
/** /**
* @brief ui keeps information about user interface * @brief ui keeps information about user interface
*/ */
Ui::DialogLine *ui; Ui::DialogLine *ui;
/** /**
* @brief number number of handled objects * @brief number number of handled objects
*/ */
qint32 number; qint32 number;
/** /**
* @brief firstPoint id first point * @brief firstPoint id first point
*/ */
qint64 firstPoint; quint32 firstPoint;
/** /**
* @brief secondPoint id second point * @brief secondPoint id second point
*/ */
qint64 secondPoint; quint32 secondPoint;
/** /**
* @brief typeLine type of line * @brief typeLine type of line
*/ */
QString typeLine; QString typeLine;
}; };
inline quint32 DialogLine::getFirstPoint() const
{
return firstPoint;
}
inline quint32 DialogLine::getSecondPoint() const
{
return secondPoint;
}
inline QString DialogLine::getTypeLine() const
{
return typeLine;
}
#endif // DIALOGLINE_H #endif // DIALOGLINE_H

View file

@ -37,12 +37,9 @@ DialogLineIntersect::DialogLineIntersect(const VContainer *data, QWidget *parent
{ {
ui->setupUi(this); ui->setupUi(this);
number = 0; number = 0;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogLineIntersect::DialogAccepted);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
flagName = false; flagName = false;
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogLineIntersect::DialogRejected);
FillComboBoxPoints(ui->comboBoxP1Line1); FillComboBoxPoints(ui->comboBoxP1Line1);
FillComboBoxPoints(ui->comboBoxP2Line1); FillComboBoxPoints(ui->comboBoxP2Line1);
@ -57,9 +54,9 @@ DialogLineIntersect::~DialogLineIntersect()
delete ui; delete ui;
} }
void DialogLineIntersect::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogLineIntersect::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -142,28 +139,28 @@ void DialogLineIntersect::DialogAccepted()
void DialogLineIntersect::P1Line1Changed( int index) void DialogLineIntersect::P1Line1Changed( int index)
{ {
p1Line1 = qvariant_cast<qint64>(ui->comboBoxP1Line1->itemData(index)); p1Line1 = qvariant_cast<quint32>(ui->comboBoxP1Line1->itemData(index));
flagPoint = CheckIntersecion(); flagPoint = CheckIntersecion();
CheckState(); CheckState();
} }
void DialogLineIntersect::P2Line1Changed(int index) void DialogLineIntersect::P2Line1Changed(int index)
{ {
p2Line1 = qvariant_cast<qint64>(ui->comboBoxP2Line1->itemData(index)); p2Line1 = qvariant_cast<quint32>(ui->comboBoxP2Line1->itemData(index));
flagPoint = CheckIntersecion(); flagPoint = CheckIntersecion();
CheckState(); CheckState();
} }
void DialogLineIntersect::P1Line2Changed(int index) void DialogLineIntersect::P1Line2Changed(int index)
{ {
p1Line2 = qvariant_cast<qint64>(ui->comboBoxP1Line2->itemData(index)); p1Line2 = qvariant_cast<quint32>(ui->comboBoxP1Line2->itemData(index));
flagPoint = CheckIntersecion(); flagPoint = CheckIntersecion();
CheckState(); CheckState();
} }
void DialogLineIntersect::P2Line2Changed(int index) void DialogLineIntersect::P2Line2Changed(int index)
{ {
p2Line2 = qvariant_cast<qint64>(ui->comboBoxP2Line2->itemData(index)); p2Line2 = qvariant_cast<quint32>(ui->comboBoxP2Line2->itemData(index));
flagPoint = CheckIntersecion(); flagPoint = CheckIntersecion();
CheckState(); CheckState();
} }
@ -195,25 +192,25 @@ bool DialogLineIntersect::CheckIntersecion()
} }
} }
void DialogLineIntersect::setP2Line2(const qint64 &value) void DialogLineIntersect::setP2Line2(const quint32 &value)
{ {
p2Line2 = value; p2Line2 = value;
ChangeCurrentData(ui->comboBoxP2Line2, value); ChangeCurrentData(ui->comboBoxP2Line2, value);
} }
void DialogLineIntersect::setP1Line2(const qint64 &value) void DialogLineIntersect::setP1Line2(const quint32 &value)
{ {
p1Line2 = value; p1Line2 = value;
ChangeCurrentData(ui->comboBoxP1Line2, value); ChangeCurrentData(ui->comboBoxP1Line2, value);
} }
void DialogLineIntersect::setP2Line1(const qint64 &value) void DialogLineIntersect::setP2Line1(const quint32 &value)
{ {
p2Line1 = value; p2Line1 = value;
ChangeCurrentData(ui->comboBoxP2Line1, value); ChangeCurrentData(ui->comboBoxP2Line1, value);
} }
void DialogLineIntersect::setP1Line1(const qint64 &value) void DialogLineIntersect::setP1Line1(const quint32 &value)
{ {
p1Line1 = value; p1Line1 = value;
ChangeCurrentData(ui->comboBoxP1Line1, value); ChangeCurrentData(ui->comboBoxP1Line1, value);

View file

@ -43,58 +43,58 @@ class DialogLineIntersect : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogLineIntersect create dialog * @brief DialogLineIntersect create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogLineIntersect(const VContainer *data, QWidget *parent = 0); DialogLineIntersect(const VContainer *data, QWidget *parent = nullptr);
~DialogLineIntersect(); ~DialogLineIntersect();
/** /**
* @brief getP1Line1 return id first point of first line * @brief getP1Line1 return id first point of first line
* @return id * @return id
*/ */
inline qint64 getP1Line1() const {return p1Line1;} quint32 getP1Line1() const;
/** /**
* @brief setP1Line1 set id first point of first line * @brief setP1Line1 set id first point of first line
* @param value id * @param value id
*/ */
void setP1Line1(const qint64 &value); void setP1Line1(const quint32 &value);
/** /**
* @brief getP2Line1 return id second point of first line * @brief getP2Line1 return id second point of first line
* @return id * @return id
*/ */
inline qint64 getP2Line1() const {return p2Line1;} quint32 getP2Line1() const;
/** /**
* @brief setP2Line1 set id second point of first line * @brief setP2Line1 set id second point of first line
* @param value id * @param value id
*/ */
void setP2Line1(const qint64 &value); void setP2Line1(const quint32 &value);
/** /**
* @brief getP1Line2 return id first point of second line * @brief getP1Line2 return id first point of second line
* @return id * @return id
*/ */
inline qint64 getP1Line2() const {return p1Line2;} quint32 getP1Line2() const;
/** /**
* @brief setP1Line2 set id first point of second line * @brief setP1Line2 set id first point of second line
* @param value id * @param value id
*/ */
void setP1Line2(const qint64 &value); void setP1Line2(const quint32 &value);
/** /**
* @brief getP2Line2 return id second point of second line * @brief getP2Line2 return id second point of second line
* @return id * @return id
*/ */
inline qint64 getP2Line2() const {return p2Line2;} quint32 getP2Line2() const;
/** /**
* @brief setP2Line2 set id second point of second line * @brief setP2Line2 set id second point of second line
* @param value id * @param value id
*/ */
void setP2Line2(const qint64 &value); void setP2Line2(const quint32 &value);
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return * @return
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value * @param value
@ -106,7 +106,7 @@ public slots:
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -148,19 +148,19 @@ private:
/** /**
* @brief p1Line1 id first point of first line * @brief p1Line1 id first point of first line
*/ */
qint64 p1Line1; quint32 p1Line1;
/** /**
* @brief p2Line1 id second point of first line * @brief p2Line1 id second point of first line
*/ */
qint64 p2Line1; quint32 p2Line1;
/** /**
* @brief p1Line2 id first point of second line * @brief p1Line2 id first point of second line
*/ */
qint64 p1Line2; quint32 p1Line2;
/** /**
* @brief p2Line2 id second point of second line * @brief p2Line2 id second point of second line
*/ */
qint64 p2Line2; quint32 p2Line2;
/** /**
* @brief flagPoint keep state of point * @brief flagPoint keep state of point
*/ */
@ -176,4 +176,29 @@ private:
bool CheckIntersecion(); bool CheckIntersecion();
}; };
inline quint32 DialogLineIntersect::getP1Line1() const
{
return p1Line1;
}
inline quint32 DialogLineIntersect::getP2Line1() const
{
return p2Line1;
}
inline quint32 DialogLineIntersect::getP1Line2() const
{
return p1Line2;
}
inline quint32 DialogLineIntersect::getP2Line2() const
{
return p2Line2;
}
inline QString DialogLineIntersect::getPointName() const
{
return pointName;
}
#endif // DIALOGLINEINTERSECT_H #endif // DIALOGLINEINTERSECT_H

View file

@ -36,58 +36,25 @@ DialogNormal::DialogNormal(const VContainer *data, QWidget *parent)
typeLine(QString()), formula(QString()), angle(0), firstPointId(0), secondPointId(0) typeLine(QString()), formula(QString()), angle(0), firstPointId(0), secondPointId(0)
{ {
ui->setupUi(this); ui->setupUi(this);
spinBoxAngle = ui->doubleSpinBoxAngle; InitVariables(ui);
listWidget = ui->listWidget;
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogNormal::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogNormal::DialogRejected);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
FillComboBoxTypeLine(ui->comboBoxLineType); FillComboBoxTypeLine(ui->comboBoxLineType);
connect(ui->toolButtonArrowDown, &QPushButton::clicked, this, InitArrow(ui);
&DialogNormal::ArrowDown);
connect(ui->toolButtonArrowUp, &QPushButton::clicked, this,
&DialogNormal::ArrowUp);
connect(ui->toolButtonArrowLeft, &QPushButton::clicked, this,
&DialogNormal::ArrowLeft);
connect(ui->toolButtonArrowRight, &QPushButton::clicked, this,
&DialogNormal::ArrowRight);
connect(ui->toolButtonArrowLeftUp, &QPushButton::clicked, this,
&DialogNormal::ArrowLeftUp);
connect(ui->toolButtonArrowLeftDown, &QPushButton::clicked, this,
&DialogNormal::ArrowLeftDown);
connect(ui->toolButtonArrowRightUp, &QPushButton::clicked, this,
&DialogNormal::ArrowRightUp);
connect(ui->toolButtonArrowRightDown, &QPushButton::clicked, this,
&DialogNormal::ArrowRightDown);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogNormal::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogNormal::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogNormal::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogNormal::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogNormal::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogNormal::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogNormal::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogNormal::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogNormal::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogNormal::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogNormal::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogNormal::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogNormal::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogNormal::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogNormal::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogNormal::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogNormal::FormulaChanged);
@ -98,34 +65,27 @@ DialogNormal::~DialogNormal()
delete ui; delete ui;
} }
void DialogNormal::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogNormal::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
{ {
qint32 index = ui->comboBoxFirstPoint->findText(point->name()); if (ChoosedPoint(id, ui->comboBoxFirstPoint, tr("Select second point of line")))
if ( index != -1 ) {
{ // -1 for not found
ui->comboBoxFirstPoint->setCurrentIndex(index);
number++; number++;
emit ToolTip(tr("Select second point of line"));
return; return;
} }
} }
if (number == 1) if (number == 1)
{ {
qint32 index = ui->comboBoxSecondPoint->findText(point->name()); if (ChoosedPoint(id, ui->comboBoxSecondPoint, ""))
if ( index != -1 )
{ // -1 for not found
ui->comboBoxSecondPoint->setCurrentIndex(index);
number = 0;
emit ToolTip("");
}
if (isInitialized == false)
{ {
this->show(); number = 0;
if (isInitialized == false)
{
this->show();
}
} }
} }
} }
@ -142,12 +102,12 @@ void DialogNormal::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogNormal::setSecondPointId(const qint64 &value, const qint64 &id) void DialogNormal::setSecondPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id); setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id);
} }
void DialogNormal::setFirstPointId(const qint64 &value, const qint64 &id) void DialogNormal::setFirstPointId(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id); setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id);
} }

View file

@ -43,18 +43,18 @@ class DialogNormal : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogNormal create dialog * @brief DialogNormal create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogNormal(const VContainer *data, QWidget *parent = 0); DialogNormal(const VContainer *data, QWidget *parent = nullptr);
~DialogNormal(); ~DialogNormal();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const{return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,7 +64,7 @@ public:
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
@ -74,7 +74,7 @@ public:
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
@ -84,7 +84,7 @@ public:
* @brief getAngle return aditional angle of normal * @brief getAngle return aditional angle of normal
* @return angle in degree * @return angle in degree
*/ */
inline qreal getAngle() const {return angle;} qreal getAngle() const;
/** /**
* @brief setAngle set aditional angle of normal * @brief setAngle set aditional angle of normal
* @param value angle in degree * @param value angle in degree
@ -94,31 +94,31 @@ public:
* @brief getFirstPointId return id of first point * @brief getFirstPointId return id of first point
* @return id * @return id
*/ */
inline qint64 getFirstPointId() const {return firstPointId;} quint32 getFirstPointId() const;
/** /**
* @brief setFirstPointId set id of first point * @brief setFirstPointId set id of first point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setFirstPointId(const qint64 &value, const qint64 &id); void setFirstPointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getSecondPointId return id of second point * @brief getSecondPointId return id of second point
* @return id * @return id
*/ */
inline qint64 getSecondPointId() const {return secondPointId;} quint32 getSecondPointId() const;
/** /**
* @brief setSecondPointId set id of second point * @brief setSecondPointId set id of second point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setSecondPointId(const qint64 &value, const qint64 &id); void setSecondPointId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -152,11 +152,41 @@ private:
/** /**
* @brief firstPointId id first point of line * @brief firstPointId id first point of line
*/ */
qint64 firstPointId; quint32 firstPointId;
/** /**
* @brief secondPointId id second point of line * @brief secondPointId id second point of line
*/ */
qint64 secondPointId; quint32 secondPointId;
}; };
inline QString DialogNormal::getPointName() const
{
return pointName;
}
inline QString DialogNormal::getTypeLine() const
{
return typeLine;
}
inline QString DialogNormal::getFormula() const
{
return formula;
}
inline qreal DialogNormal::getAngle() const
{
return angle;
}
inline quint32 DialogNormal::getFirstPointId() const
{
return firstPointId;
}
inline quint32 DialogNormal::getSecondPointId() const
{
return secondPointId;
}
#endif // DIALOGNORMAL_H #endif // DIALOGNORMAL_H

View file

@ -47,13 +47,17 @@ DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *pare
lineEditFormula = ui.lineEditFormula; lineEditFormula = ui.lineEditFormula;
labelEditFormula = ui.labelEditFormula; labelEditFormula = ui.labelEditFormula;
labelEditNamePoint = ui.labelEditNamePoint; labelEditNamePoint = ui.labelEditNamePoint;
flagFormula = false;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok); bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogPointOfContact::DialogAccepted); Q_CHECK_PTR(bOk);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
flagFormula = false;
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogPointOfContact::DialogRejected);
FillComboBoxPoints(ui.comboBoxCenter); FillComboBoxPoints(ui.comboBoxCenter);
FillComboBoxPoints(ui.comboBoxFirstPoint); FillComboBoxPoints(ui.comboBoxFirstPoint);
@ -63,9 +67,17 @@ DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *pare
connect(ui.listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal); connect(ui.listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal);
connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged); connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged);
ShowVariable(data->DataBase()); if (qApp->patternType() == Pattern::Standard)
connect(ui.radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogPointOfContact::SizeGrowth); {
connect(ui.radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::StandardTable); SizeHeight();
connect(ui.radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogTool::SizeHeight);
}
else
{
radioButtonSizeGrowth->setVisible(false);
Measurements();
}
connect(ui.radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::Measurements);
connect(ui.radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments); connect(ui.radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments);
connect(ui.radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines); connect(ui.radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines);
connect(ui.radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs); connect(ui.radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs);
@ -75,9 +87,9 @@ DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *pare
connect(ui.lineEditFormula, &QLineEdit::textChanged, this, &DialogPointOfContact::FormulaChanged); connect(ui.lineEditFormula, &QLineEdit::textChanged, this, &DialogPointOfContact::FormulaChanged);
} }
void DialogPointOfContact::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -129,17 +141,17 @@ void DialogPointOfContact::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogPointOfContact::setSecondPoint(const qint64 &value, const qint64 &id) void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxSecondPoint, secondPoint, value, id); setCurrentPointId(ui.comboBoxSecondPoint, secondPoint, value, id);
} }
void DialogPointOfContact::setFirstPoint(const qint64 &value, const qint64 &id) void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxFirstPoint, firstPoint, value, id); setCurrentPointId(ui.comboBoxFirstPoint, firstPoint, value, id);
} }
void DialogPointOfContact::setCenter(const qint64 &value, const qint64 &id) void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui.comboBoxCenter, center, value, id); setCurrentPointId(ui.comboBoxCenter, center, value, id);
center = value; center = value;

View file

@ -39,17 +39,17 @@ class DialogPointOfContact : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogPointOfContact create dialog * @brief DialogPointOfContact create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogPointOfContact(const VContainer *data, QWidget *parent = 0); DialogPointOfContact(const VContainer *data, QWidget *parent = nullptr);
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -59,7 +59,7 @@ public:
* @brief getRadius return formula radius of arc * @brief getRadius return formula radius of arc
* @return formula * @return formula
*/ */
inline QString getRadius() const {return radius;} QString getRadius() const;
/** /**
* @brief setRadius set formula radius of arc * @brief setRadius set formula radius of arc
* @param value formula * @param value formula
@ -69,42 +69,42 @@ public:
* @brief GetCenter return id of center point * @brief GetCenter return id of center point
* @return id * @return id
*/ */
inline qint64 getCenter() const {return center;} quint32 getCenter() const;
/** /**
* @brief SetCenter set id of center point * @brief SetCenter set id of center point
* @param value id * @param value id
* @param id don't show this id in list. * @param id don't show this id in list.
*/ */
void setCenter(const qint64 &value, const qint64 &id); void setCenter(const quint32 &value, const quint32 &id);
/** /**
* @brief getFirstPoint return id first point * @brief getFirstPoint return id first point
* @return id * @return id
*/ */
inline qint64 getFirstPoint() const {return firstPoint;} quint32 getFirstPoint() const;
/** /**
* @brief setFirstPoint set id first point * @brief setFirstPoint set id first point
* @param value id * @param value id
* @param id don't show this id in list. * @param id don't show this id in list.
*/ */
void setFirstPoint(const qint64 &value, const qint64 &id); void setFirstPoint(const quint32 &value, const quint32 &id);
/** /**
* @brief getSecondPoint return id second point * @brief getSecondPoint return id second point
* @return id * @return id
*/ */
inline qint64 getSecondPoint() const {return secondPoint;} quint32 getSecondPoint() const;
/** /**
* @brief setSecondPoint set id second point * @brief setSecondPoint set id second point
* @param value id * @param value id
* @param id don't show this id in list. * @param id don't show this id in list.
*/ */
void setSecondPoint(const qint64 &value, const qint64 &id); void setSecondPoint(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -130,15 +130,40 @@ private:
/** /**
* @brief center id center point of arc * @brief center id center point of arc
*/ */
qint64 center; quint32 center;
/** /**
* @brief firstPoint id first point of line * @brief firstPoint id first point of line
*/ */
qint64 firstPoint; quint32 firstPoint;
/** /**
* @brief secondPoint id second point of line * @brief secondPoint id second point of line
*/ */
qint64 secondPoint; quint32 secondPoint;
}; };
inline QString DialogPointOfContact::getPointName() const
{
return pointName;
}
inline QString DialogPointOfContact::getRadius() const
{
return radius;
}
inline quint32 DialogPointOfContact::getCenter() const
{
return center;
}
inline quint32 DialogPointOfContact::getFirstPoint() const
{
return firstPoint;
}
inline quint32 DialogPointOfContact::getSecondPoint() const
{
return secondPoint;
}
#endif // DIALOGPOINTOFCONTACT_H #endif // DIALOGPOINTOFCONTACT_H

View file

@ -37,12 +37,9 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, QWi
{ {
ui->setupUi(this); ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogPointOfIntersection::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogPointOfIntersection::DialogRejected);
FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxPoints(ui->comboBoxSecondPoint);
@ -55,15 +52,15 @@ DialogPointOfIntersection::~DialogPointOfIntersection()
delete ui; delete ui;
} }
void DialogPointOfIntersection::setSecondPointId(const qint64 &value, const qint64 &id) void DialogPointOfIntersection::setSecondPointId(const quint32 &value, const quint32 &id)
{ {
secondPointId = value; secondPointId = value;
setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id); setCurrentPointId(ui->comboBoxSecondPoint, secondPointId, value, id);
} }
void DialogPointOfIntersection::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogPointOfIntersection::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -102,7 +99,7 @@ void DialogPointOfIntersection::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogPointOfIntersection::setFirstPointId(const qint64 &value, const qint64 &id) void DialogPointOfIntersection::setFirstPointId(const quint32 &value, const quint32 &id)
{ {
firstPointId = value; firstPointId = value;
setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id); setCurrentPointId(ui->comboBoxFirstPoint, firstPointId, value, id);

View file

@ -43,18 +43,18 @@ class DialogPointOfIntersection : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogPointOfIntersection create dialog * @brief DialogPointOfIntersection create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogPointOfIntersection(const VContainer *data, QWidget *parent = 0); DialogPointOfIntersection(const VContainer *data, QWidget *parent = nullptr);
~DialogPointOfIntersection(); ~DialogPointOfIntersection();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,31 +64,31 @@ public:
* @brief getFirstPointId return id of first point * @brief getFirstPointId return id of first point
* @return id * @return id
*/ */
inline qint64 getFirstPointId() const {return firstPointId;} quint32 getFirstPointId() const;
/** /**
* @brief setFirstPointId set id of first point * @brief setFirstPointId set id of first point
* @param value id * @param value id
* @param id don't show this id in list. * @param id don't show this id in list.
*/ */
void setFirstPointId(const qint64 &value, const qint64 &id); void setFirstPointId(const quint32 &value, const quint32 &id);
/** /**
* @brief getSecondPointId return id of second point * @brief getSecondPointId return id of second point
* @return id * @return id
*/ */
inline qint64 getSecondPointId() const {return secondPointId;} quint32 getSecondPointId() const;
/** /**
* @brief setSecondPointId set id of second point * @brief setSecondPointId set id of second point
* @param value id * @param value id
* @param id don't show this id in list. * @param id don't show this id in list.
*/ */
void setSecondPointId(const qint64 &value, const qint64 &id); void setSecondPointId(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -110,11 +110,26 @@ private:
/** /**
* @brief firstPointId id first point of line * @brief firstPointId id first point of line
*/ */
qint64 firstPointId; quint32 firstPointId;
/** /**
* @brief secondPointId id second point of line * @brief secondPointId id second point of line
*/ */
qint64 secondPointId; quint32 secondPointId;
}; };
inline QString DialogPointOfIntersection::getPointName() const
{
return pointName;
}
inline quint32 DialogPointOfIntersection::getFirstPointId() const
{
return firstPointId;
}
inline quint32 DialogPointOfIntersection::getSecondPointId() const
{
return secondPointId;
}
#endif // DIALOGPOINTOFINTERSECTION_H #endif // DIALOGPOINTOFINTERSECTION_H

View file

@ -37,42 +37,24 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent
{ {
ui->setupUi(this); ui->setupUi(this);
number = 0; number = 0;
listWidget = ui->listWidget; InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation; labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
lineEditFormula = ui->lineEditFormula; lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula; labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint; labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
flagFormula = false; flagFormula = false;
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
connect(bOk, &QPushButton::clicked, this, &DialogShoulderPoint::DialogAccepted);
flagName = false; flagName = false;
CheckState(); CheckState();
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogShoulderPoint::DialogRejected);
FillComboBoxTypeLine(ui->comboBoxLineType);
FillComboBoxTypeLine(ui->comboBoxLineType);
FillComboBoxPoints(ui->comboBoxP1Line); FillComboBoxPoints(ui->comboBoxP1Line);
FillComboBoxPoints(ui->comboBoxP2Line); FillComboBoxPoints(ui->comboBoxP2Line);
FillComboBoxPoints(ui->comboBoxPShoulder); FillComboBoxPoints(ui->comboBoxPShoulder);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogShoulderPoint::PutHere); connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogShoulderPoint::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogShoulderPoint::PutVal); connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogShoulderPoint::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogShoulderPoint::ValChenged);
ShowVariable(data->DataBase());
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogShoulderPoint::SizeGrowth);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogShoulderPoint::StandardTable);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogShoulderPoint::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogShoulderPoint::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogShoulderPoint::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogShoulderPoint::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogShoulderPoint::EvalFormula); connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogShoulderPoint::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogShoulderPoint::NamePointChanged); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogShoulderPoint::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogShoulderPoint::FormulaChanged); connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogShoulderPoint::FormulaChanged);
@ -83,9 +65,9 @@ DialogShoulderPoint::~DialogShoulderPoint()
delete ui; delete ui;
} }
void DialogShoulderPoint::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogShoulderPoint::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -138,17 +120,17 @@ void DialogShoulderPoint::DialogAccepted()
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
void DialogShoulderPoint::setPShoulder(const qint64 &value, const qint64 &id) void DialogShoulderPoint::setPShoulder(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxPShoulder, pShoulder, value, id); setCurrentPointId(ui->comboBoxPShoulder, pShoulder, value, id);
} }
void DialogShoulderPoint::setP2Line(const qint64 &value, const qint64 &id) void DialogShoulderPoint::setP2Line(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxP2Line, p2Line, value, id); setCurrentPointId(ui->comboBoxP2Line, p2Line, value, id);
} }
void DialogShoulderPoint::setP1Line(const qint64 &value, const qint64 &id) void DialogShoulderPoint::setP1Line(const quint32 &value, const quint32 &id)
{ {
setCurrentPointId(ui->comboBoxP1Line, p1Line, value, id); setCurrentPointId(ui->comboBoxP1Line, p1Line, value, id);
} }

View file

@ -43,18 +43,18 @@ class DialogShoulderPoint : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogShoulderPoint create dialog * @brief DialogShoulderPoint create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogShoulderPoint(const VContainer *data, QWidget *parent = 0); DialogShoulderPoint(const VContainer *data, QWidget *parent = nullptr);
~DialogShoulderPoint(); ~DialogShoulderPoint();
/** /**
* @brief getPointName return name of point * @brief getPointName return name of point
* @return name * @return name
*/ */
inline QString getPointName() const {return pointName;} QString getPointName() const;
/** /**
* @brief setPointName set name of point * @brief setPointName set name of point
* @param value name * @param value name
@ -64,7 +64,7 @@ public:
* @brief getTypeLine return type of line * @brief getTypeLine return type of line
* @return type * @return type
*/ */
inline QString getTypeLine() const {return typeLine;} QString getTypeLine() const;
/** /**
* @brief setTypeLine set type of line * @brief setTypeLine set type of line
* @param value type * @param value type
@ -74,7 +74,7 @@ public:
* @brief getFormula return string of formula * @brief getFormula return string of formula
* @return formula * @return formula
*/ */
inline QString getFormula() const {return formula;} QString getFormula() const;
/** /**
* @brief setFormula set string of formula * @brief setFormula set string of formula
* @param value formula * @param value formula
@ -84,42 +84,42 @@ public:
* @brief getP1Line return id first point of line * @brief getP1Line return id first point of line
* @return id * @return id
*/ */
inline qint64 getP1Line() const {return p1Line;} quint32 getP1Line() const;
/** /**
* @brief setP1Line set id first point of line * @brief setP1Line set id first point of line
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setP1Line(const qint64 &value, const qint64 &id); void setP1Line(const quint32 &value, const quint32 &id);
/** /**
* @brief getP2Line return id second point of line * @brief getP2Line return id second point of line
* @return id * @return id
*/ */
inline qint64 getP2Line() const {return p2Line;} quint32 getP2Line() const;
/** /**
* @brief setP2Line set id second point of line * @brief setP2Line set id second point of line
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setP2Line(const qint64 &value, const qint64 &id); void setP2Line(const quint32 &value, const quint32 &id);
/** /**
* @brief getPShoulder return id shoulder point * @brief getPShoulder return id shoulder point
* @return id * @return id
*/ */
inline qint64 getPShoulder() const {return pShoulder;} quint32 getPShoulder() const;
/** /**
* @brief setPShoulder set id shoulder point * @brief setPShoulder set id shoulder point
* @param value id * @param value id
* @param id don't show this id in list * @param id don't show this id in list
*/ */
void setPShoulder(const qint64 &value, const qint64 &id); void setPShoulder(const quint32 &value, const quint32 &id);
public slots: public slots:
/** /**
* @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong. * @brief ChoosedObject gets id and type of selected object. Save right data and ignore wrong.
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -149,15 +149,45 @@ private:
/** /**
* @brief p1Line id first point of line * @brief p1Line id first point of line
*/ */
qint64 p1Line; quint32 p1Line;
/** /**
* @brief p2Line id second point of line * @brief p2Line id second point of line
*/ */
qint64 p2Line; quint32 p2Line;
/** /**
* @brief pShoulder id shoulder point * @brief pShoulder id shoulder point
*/ */
qint64 pShoulder; quint32 pShoulder;
}; };
inline QString DialogShoulderPoint::getPointName() const
{
return pointName;
}
inline QString DialogShoulderPoint::getTypeLine() const
{
return typeLine;
}
inline QString DialogShoulderPoint::getFormula() const
{
return formula;
}
inline quint32 DialogShoulderPoint::getP1Line() const
{
return p1Line;
}
inline quint32 DialogShoulderPoint::getP2Line() const
{
return p2Line;
}
inline quint32 DialogShoulderPoint::getPShoulder() const
{
return pShoulder;
}
#endif // DIALOGSHOULDERPOINT_H #endif // DIALOGSHOULDERPOINT_H

View file

@ -36,15 +36,14 @@ DialogSinglePoint::DialogSinglePoint(const VContainer *data, QWidget *parent)
point(QPointF()) point(QPointF())
{ {
ui->setupUi(this); ui->setupUi(this);
ui->doubleSpinBoxX->setRange(0, toMM(SceneSize)); ui->doubleSpinBoxX->setRange(0, qApp->fromPixel(SceneSize));
ui->doubleSpinBoxY->setRange(0, toMM(SceneSize)); ui->doubleSpinBoxY->setRange(0, qApp->fromPixel(SceneSize));
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
labelEditNamePoint = ui->labelEditName; labelEditNamePoint = ui->labelEditName;
InitOkCansel(ui);
flagName = false; flagName = false;
CheckState(); CheckState();
connect(bOk, &QPushButton::clicked, this, &DialogSinglePoint::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogSinglePoint::DialogRejected);
connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogSinglePoint::NamePointChanged); connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogSinglePoint::NamePointChanged);
} }
@ -52,20 +51,20 @@ void DialogSinglePoint::mousePress(const QPointF &scenePos)
{ {
if (isInitialized == false) if (isInitialized == false)
{ {
ui->doubleSpinBoxX->setValue(toMM(scenePos.x())); ui->doubleSpinBoxX->setValue(qApp->fromPixel(scenePos.x()));
ui->doubleSpinBoxY->setValue(toMM(scenePos.y())); ui->doubleSpinBoxY->setValue(qApp->fromPixel(scenePos.y()));
this->show(); this->show();
} }
else else
{ {
ui->doubleSpinBoxX->setValue(toMM(scenePos.x())); ui->doubleSpinBoxX->setValue(qApp->fromPixel(scenePos.x()));
ui->doubleSpinBoxY->setValue(toMM(scenePos.y())); ui->doubleSpinBoxY->setValue(qApp->fromPixel(scenePos.y()));
} }
} }
void DialogSinglePoint::DialogAccepted() void DialogSinglePoint::DialogAccepted()
{ {
point = QPointF(toPixel(ui->doubleSpinBoxX->value()), toPixel(ui->doubleSpinBoxY->value())); point = QPointF(qApp->toPixel(ui->doubleSpinBoxX->value()), qApp->toPixel(ui->doubleSpinBoxY->value()));
name = ui->lineEditName->text(); name = ui->lineEditName->text();
emit DialogClosed(QDialog::Accepted); emit DialogClosed(QDialog::Accepted);
} }
@ -76,8 +75,8 @@ void DialogSinglePoint::setData(const QString &name, const QPointF &point)
this->point = point; this->point = point;
isInitialized = true; isInitialized = true;
ui->lineEditName->setText(name); ui->lineEditName->setText(name);
ui->doubleSpinBoxX->setValue(toMM(point.x())); ui->doubleSpinBoxX->setValue(qApp->fromPixel(point.x()));
ui->doubleSpinBoxY->setValue(toMM(point.y())); ui->doubleSpinBoxY->setValue(qApp->fromPixel(point.y()));
} }
DialogSinglePoint::~DialogSinglePoint() DialogSinglePoint::~DialogSinglePoint()

View file

@ -43,12 +43,13 @@ class DialogSinglePoint : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogSinglePoint create dialog * @brief DialogSinglePoint create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogSinglePoint(const VContainer *data, QWidget *parent = 0); DialogSinglePoint(const VContainer *data, QWidget *parent = nullptr);
~DialogSinglePoint();
/** /**
* @brief setData set name and point * @brief setData set name and point
* @param name name of point * @param name name of point
@ -59,13 +60,12 @@ public:
* @brief getName return name * @brief getName return name
* @return name * @return name
*/ */
inline QString getName()const {return name;} QString getName()const;
/** /**
* @brief getPoint return point * @brief getPoint return point
* @return point * @return point
*/ */
inline QPointF getPoint()const {return point;} QPointF getPoint()const;
~DialogSinglePoint();
public slots: public slots:
/** /**
* @brief mousePress get mouse position * @brief mousePress get mouse position
@ -92,4 +92,14 @@ private:
QPointF point; QPointF point;
}; };
inline QString DialogSinglePoint::getName() const
{
return name;
}
inline QPointF DialogSinglePoint::getPoint() const
{
return point;
}
#endif // DIALOGSINGLEPOINT_H #endif // DIALOGSINGLEPOINT_H

View file

@ -36,11 +36,7 @@ DialogSpline::DialogSpline(const VContainer *data, QWidget *parent)
kAsm1(1), kAsm2(1), kCurve(1) kAsm1(1), kAsm2(1), kCurve(1)
{ {
ui->setupUi(this); ui->setupUi(this);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogSpline::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogSpline::DialogRejected);
FillComboBoxPoints(ui->comboBoxP1); FillComboBoxPoints(ui->comboBoxP1);
FillComboBoxPoints(ui->comboBoxP4); FillComboBoxPoints(ui->comboBoxP4);
@ -51,14 +47,14 @@ DialogSpline::~DialogSpline()
delete ui; delete ui;
} }
qint64 DialogSpline::getP1() const quint32 DialogSpline::getP1() const
{ {
return p1; return p1;
} }
void DialogSpline::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogSpline::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0) if (number == 0)
@ -81,7 +77,7 @@ void DialogSpline::ChoosedObject(qint64 id, const Scene::Scenes &type)
number = 0; number = 0;
emit ToolTip(""); emit ToolTip("");
index = ui->comboBoxP1->currentIndex(); index = ui->comboBoxP1->currentIndex();
qint64 p1Id = qvariant_cast<qint64>(ui->comboBoxP1->itemData(index)); quint32 p1Id = qvariant_cast<quint32>(ui->comboBoxP1->itemData(index));
QPointF p1 = data->GeometricObject<const VPointF *>(p1Id)->toQPointF(); QPointF p1 = data->GeometricObject<const VPointF *>(p1Id)->toQPointF();
QPointF p4 = data->GeometricObject<const VPointF *>(id)->toQPointF(); QPointF p4 = data->GeometricObject<const VPointF *>(id)->toQPointF();
@ -139,19 +135,19 @@ void DialogSpline::setAngle1(const qreal &value)
ui->spinBoxAngle1->setValue(static_cast<qint32>(value)); ui->spinBoxAngle1->setValue(static_cast<qint32>(value));
} }
void DialogSpline::setP4(const qint64 &value) void DialogSpline::setP4(const quint32 &value)
{ {
p4 = value; p4 = value;
ChangeCurrentData(ui->comboBoxP4, value); ChangeCurrentData(ui->comboBoxP4, value);
} }
void DialogSpline::setP1(const qint64 &value) void DialogSpline::setP1(const quint32 &value)
{ {
p1 = value; p1 = value;
ChangeCurrentData(ui->comboBoxP1, value); ChangeCurrentData(ui->comboBoxP1, value);
} }
qint64 DialogSpline::getP4() const quint32 DialogSpline::getP4() const
{ {
return p4; return p4;
} }

View file

@ -43,38 +43,38 @@ class DialogSpline : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogSpline create dialog * @brief DialogSpline create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogSpline(const VContainer *data, QWidget *parent = 0); DialogSpline(const VContainer *data, QWidget *parent = nullptr);
~DialogSpline(); ~DialogSpline();
/** /**
* @brief getP1 return id first point of spline * @brief getP1 return id first point of spline
* @return id * @return id
*/ */
qint64 getP1() const; quint32 getP1() const;
/** /**
* @brief setP1 set id first point of spline * @brief setP1 set id first point of spline
* @param value id * @param value id
*/ */
void setP1(const qint64 &value); void setP1(const quint32 &value);
/** /**
* @brief getP4 return id fourth point of spline * @brief getP4 return id fourth point of spline
* @return id * @return id
*/ */
qint64 getP4() const; quint32 getP4() const;
/** /**
* @brief setP4 set id fourth point of spline * @brief setP4 set id fourth point of spline
* @param value id * @param value id
*/ */
void setP4(const qint64 &value); void setP4(const quint32 &value);
/** /**
* @brief getAngle1 return first angle of spline * @brief getAngle1 return first angle of spline
* @return angle in degree * @return angle in degree
*/ */
inline qreal getAngle1() const {return angle1;} qreal getAngle1() const;
/** /**
* @brief setAngle1 set first angle of spline * @brief setAngle1 set first angle of spline
* @param value angle in degree * @param value angle in degree
@ -84,7 +84,7 @@ public:
* @brief getAngle2 return second angle of spline * @brief getAngle2 return second angle of spline
* @return angle in degree * @return angle in degree
*/ */
inline qreal getAngle2() const {return angle2;} qreal getAngle2() const;
/** /**
* @brief setAngle2 set second angle of spline * @brief setAngle2 set second angle of spline
* @param value angle in degree * @param value angle in degree
@ -94,7 +94,7 @@ public:
* @brief getKAsm1 return first coefficient asymmetry * @brief getKAsm1 return first coefficient asymmetry
* @return value. Can be >= 0. * @return value. Can be >= 0.
*/ */
inline qreal getKAsm1() const {return kAsm1;} qreal getKAsm1() const;
/** /**
* @brief setKAsm1 set first coefficient asymmetry * @brief setKAsm1 set first coefficient asymmetry
* @param value value. Can be >= 0. * @param value value. Can be >= 0.
@ -104,7 +104,7 @@ public:
* @brief getKAsm2 return second coefficient asymmetry * @brief getKAsm2 return second coefficient asymmetry
* @return value. Can be >= 0. * @return value. Can be >= 0.
*/ */
inline qreal getKAsm2() const {return kAsm2;} qreal getKAsm2() const;
/** /**
* @brief setKAsm2 set second coefficient asymmetry * @brief setKAsm2 set second coefficient asymmetry
* @param value value. Can be >= 0. * @param value value. Can be >= 0.
@ -114,7 +114,7 @@ public:
* @brief getKCurve return coefficient curve * @brief getKCurve return coefficient curve
* @return value. Can be >= 0. * @return value. Can be >= 0.
*/ */
inline qreal getKCurve() const {return kCurve;} qreal getKCurve() const;
/** /**
* @brief setKCurve set coefficient curve * @brief setKCurve set coefficient curve
* @param value value. Can be >= 0. * @param value value. Can be >= 0.
@ -126,7 +126,7 @@ public slots:
* @param id id of point or detail * @param id id of point or detail
* @param type type of object * @param type type of object
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -144,11 +144,11 @@ private:
/** /**
* @brief p1 id first point of spline * @brief p1 id first point of spline
*/ */
qint64 p1; quint32 p1;
/** /**
* @brief p4 id fourth point of spline * @brief p4 id fourth point of spline
*/ */
qint64 p4; quint32 p4;
/** /**
* @brief angle1 first angle of spline in degree * @brief angle1 first angle of spline in degree
*/ */
@ -171,4 +171,29 @@ private:
qreal kCurve; qreal kCurve;
}; };
inline qreal DialogSpline::getAngle1() const
{
return angle1;
}
inline qreal DialogSpline::getAngle2() const
{
return angle2;
}
inline qreal DialogSpline::getKAsm1() const
{
return kAsm1;
}
inline qreal DialogSpline::getKAsm2() const
{
return kAsm2;
}
inline qreal DialogSpline::getKCurve() const
{
return kCurve;
}
#endif // DIALOGSPLINE_H #endif // DIALOGSPLINE_H

View file

@ -28,7 +28,7 @@
#include "dialogsplinepath.h" #include "dialogsplinepath.h"
#include "ui_dialogsplinepath.h" #include "ui_dialogsplinepath.h"
#include "../geometry/vsplinepoint.h" #include "../../geometry/vsplinepoint.h"
#include <QPushButton> #include <QPushButton>
@ -36,13 +36,9 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath()) :DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath())
{ {
ui->setupUi(this); ui->setupUi(this);
bOk = ui->buttonBox->button(QDialogButtonBox::Ok); InitOkCansel(ui);
connect(bOk, &QPushButton::clicked, this, &DialogSplinePath::DialogAccepted);
bOk->setEnabled(false); bOk->setEnabled(false);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
connect(bCansel, &QPushButton::clicked, this, &DialogSplinePath::DialogRejected);
FillComboBoxPoints(ui->comboBoxPoint); FillComboBoxPoints(ui->comboBoxPoint);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogSplinePath::PointChanged); connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogSplinePath::PointChanged);
@ -76,9 +72,9 @@ void DialogSplinePath::SetPath(const VSplinePath &value)
} }
void DialogSplinePath::ChoosedObject(qint64 id, const Scene::Scenes &type) void DialogSplinePath::ChoosedObject(quint32 id, const Valentina::Scenes &type)
{ {
if (type == Scene::Point) if (type == Valentina::Point)
{ {
NewItem(id, 1, 0, 1, 180); NewItem(id, 1, 0, 1, 180);
emit ToolTip(tr("Select point of curve path")); emit ToolTip(tr("Select point of curve path"));
@ -113,7 +109,7 @@ void DialogSplinePath::PointChanged(int row)
void DialogSplinePath::currentPointChanged(int index) void DialogSplinePath::currentPointChanged(int index)
{ {
qint64 id = qvariant_cast<qint64>(ui->comboBoxPoint->itemData(index)); quint32 id = qvariant_cast<quint32>(ui->comboBoxPoint->itemData(index));
qint32 row = ui->listWidget->currentRow(); qint32 row = ui->listWidget->currentRow();
QListWidgetItem *item = ui->listWidget->item( row ); QListWidgetItem *item = ui->listWidget->item( row );
VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole)); VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole));
@ -164,7 +160,7 @@ void DialogSplinePath::KAsm2Changed(qreal d)
item->setData(Qt::UserRole, QVariant::fromValue(p)); item->setData(Qt::UserRole, QVariant::fromValue(p));
} }
void DialogSplinePath::NewItem(qint64 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2) void DialogSplinePath::NewItem(quint32 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2)
{ {
const VPointF *point = data->GeometricObject<const VPointF *>(id); const VPointF *point = data->GeometricObject<const VPointF *>(id);
QListWidgetItem *item = new QListWidgetItem(point->name()); QListWidgetItem *item = new QListWidgetItem(point->name());
@ -182,7 +178,7 @@ void DialogSplinePath::NewItem(qint64 id, qreal kAsm1, qreal angle1, qreal kAsm2
EnableFields(); EnableFields();
} }
void DialogSplinePath::DataPoint(qint64 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2) void DialogSplinePath::DataPoint(quint32 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2)
{ {
disconnect(ui->comboBoxPoint, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), disconnect(ui->comboBoxPoint, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &DialogSplinePath::currentPointChanged); this, &DialogSplinePath::currentPointChanged);

View file

@ -30,7 +30,7 @@
#define DIALOGSPLINEPATH_H #define DIALOGSPLINEPATH_H
#include "dialogtool.h" #include "dialogtool.h"
#include "../geometry/vsplinepath.h" #include "../../geometry/vsplinepath.h"
namespace Ui namespace Ui
{ {
@ -44,18 +44,18 @@ class DialogSplinePath : public DialogTool
{ {
Q_OBJECT Q_OBJECT
public: public:
/** /**
* @brief DialogSplinePath create dialog * @brief DialogSplinePath create dialog
* @param data container with data * @param data container with data
* @param parent parent widget * @param parent parent widget
*/ */
DialogSplinePath(const VContainer *data, QWidget *parent = 0); DialogSplinePath(const VContainer *data, QWidget *parent = nullptr);
~DialogSplinePath(); ~DialogSplinePath();
/** /**
* @brief GetPath return spline path * @brief GetPath return spline path
* @return path * @return path
*/ */
inline VSplinePath GetPath() const {return path;} VSplinePath GetPath() const;
/** /**
* @brief SetPath set spline path * @brief SetPath set spline path
* @param value path * @param value path
@ -67,7 +67,7 @@ public slots:
* @param id id of point or detail * @param id id of point or detail
* @param type don't show this id in list * @param type don't show this id in list
*/ */
virtual void ChoosedObject(qint64 id, const Scene::Scenes &type); virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
/** /**
* @brief DialogAccepted save data and emit signal about closed dialog. * @brief DialogAccepted save data and emit signal about closed dialog.
*/ */
@ -120,7 +120,7 @@ private:
* @param kAsm2 second coefficient asymmetry * @param kAsm2 second coefficient asymmetry
* @param angle2 second angle in degree * @param angle2 second angle in degree
*/ */
void NewItem(qint64 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2); void NewItem(quint32 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2);
/** /**
* @brief dataPoint show data of point in fields * @brief dataPoint show data of point in fields
* @param id id * @param id id
@ -129,11 +129,16 @@ private:
* @param kAsm2 second coefficient asymmetry * @param kAsm2 second coefficient asymmetry
* @param angle2 second angle of spline * @param angle2 second angle of spline
*/ */
void DataPoint(qint64 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2); void DataPoint(quint32 id, qreal kAsm1, qreal angle1, qreal kAsm2, qreal angle2);
/** /**
* @brief EnableFields enable or disable fields * @brief EnableFields enable or disable fields
*/ */
void EnableFields(); void EnableFields();
}; };
inline VSplinePath DialogSplinePath::GetPath() const
{
return path;
}
#endif // DIALOGSPLINEPATH_H #endif // DIALOGSPLINEPATH_H

Some files were not shown because too many files have changed in this diff Show more