Dialog Restrict dimension.
This commit is contained in:
parent
0668a99cb5
commit
df2f2f7f83
50
src/app/tape/dialogs/dialogrestrictdimension.cpp
Normal file
50
src/app/tape/dialogs/dialogrestrictdimension.cpp
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/************************************************************************
|
||||||
|
**
|
||||||
|
** @file dialogrestrictdimension.cpp
|
||||||
|
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||||
|
** @date 5 10, 2020
|
||||||
|
**
|
||||||
|
** @brief
|
||||||
|
** @copyright
|
||||||
|
** This source code is part of the Valentina project, a pattern making
|
||||||
|
** program, whose allow create and modeling patterns of clothing.
|
||||||
|
** Copyright (C) 2020 Valentina project
|
||||||
|
** <https://gitlab.com/smart-pattern/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 "dialogrestrictdimension.h"
|
||||||
|
#include "ui_dialogrestrictdimension.h"
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
DialogRestrictDimension::DialogRestrictDimension(const QList<MeasurementDimension_p> &dimensions,
|
||||||
|
const QMap<QString, QPair<int, int>> &restrictions,
|
||||||
|
bool oneDimesionRestriction, bool fullCircumference,
|
||||||
|
QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::DialogRestrictDimension),
|
||||||
|
m_oneDimesionRestriction(oneDimesionRestriction),
|
||||||
|
m_fullCircumference(fullCircumference),
|
||||||
|
m_dimensions(dimensions),
|
||||||
|
m_restrictions(restrictions)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
DialogRestrictDimension::~DialogRestrictDimension()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
69
src/app/tape/dialogs/dialogrestrictdimension.h
Normal file
69
src/app/tape/dialogs/dialogrestrictdimension.h
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
/************************************************************************
|
||||||
|
**
|
||||||
|
** @file dialogrestrictdimension.h
|
||||||
|
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||||
|
** @date 5 10, 2020
|
||||||
|
**
|
||||||
|
** @brief
|
||||||
|
** @copyright
|
||||||
|
** This source code is part of the Valentina project, a pattern making
|
||||||
|
** program, whose allow create and modeling patterns of clothing.
|
||||||
|
** Copyright (C) 2020 Valentina project
|
||||||
|
** <https://gitlab.com/smart-pattern/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 DIALOGRESTRICTDIMENSION_H
|
||||||
|
#define DIALOGRESTRICTDIMENSION_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
|
#include "../vformat/vdimensions.h"
|
||||||
|
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class DialogRestrictDimension;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DialogRestrictDimension : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogRestrictDimension(const QList<MeasurementDimension_p> &dimensions,
|
||||||
|
const QMap<QString, QPair<int, int>> &restrictions, bool oneDimesionRestriction,
|
||||||
|
bool fullCircumference, QWidget *parent = nullptr);
|
||||||
|
virtual ~DialogRestrictDimension();
|
||||||
|
|
||||||
|
QMap<QString, QPair<int, int> > Restrictions() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY(DialogRestrictDimension)
|
||||||
|
Ui::DialogRestrictDimension *ui;
|
||||||
|
|
||||||
|
bool m_oneDimesionRestriction;
|
||||||
|
bool m_fullCircumference;
|
||||||
|
QList<MeasurementDimension_p> m_dimensions;
|
||||||
|
QMap<QString, QPair<int, int>> m_restrictions;
|
||||||
|
};
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
inline QMap<QString, QPair<int, int> > DialogRestrictDimension::Restrictions() const
|
||||||
|
{
|
||||||
|
return m_restrictions;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DIALOGRESTRICTDIMENSION_H
|
211
src/app/tape/dialogs/dialogrestrictdimension.ui
Normal file
211
src/app/tape/dialogs/dialogrestrictdimension.ui
Normal file
|
@ -0,0 +1,211 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>DialogRestrictDimension</class>
|
||||||
|
<widget class="QDialog" name="DialogRestrictDimension">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>844</width>
|
||||||
|
<height>683</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="1" column="3">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QComboBox" name="comboBoxDimensionB"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QComboBox" name="comboBoxDimensionA"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLabel" name="labelDimensioB">
|
||||||
|
<property name="text">
|
||||||
|
<string>Dimension B:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="labelDimensionA">
|
||||||
|
<property name="text">
|
||||||
|
<string>Dimension A:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSplitter" name="splitter">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QTableWidget" name="tableWidget">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>4</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="groupBoxRestriction">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Restriction</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBoxMin"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Min:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Max:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBoxMax"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</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>DialogRestrictDimension</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>DialogRestrictDimension</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>
|
|
@ -2,6 +2,7 @@
|
||||||
# This need for corect working file translations.pro
|
# This need for corect working file translations.pro
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
$$PWD/dialogs/dialogrestrictdimension.cpp \
|
||||||
$$PWD/main.cpp \
|
$$PWD/main.cpp \
|
||||||
$$PWD/tmainwindow.cpp \
|
$$PWD/tmainwindow.cpp \
|
||||||
$$PWD/mapplication.cpp \
|
$$PWD/mapplication.cpp \
|
||||||
|
@ -17,6 +18,7 @@ SOURCES += \
|
||||||
*msvc*:SOURCES += $$PWD/stable.cpp
|
*msvc*:SOURCES += $$PWD/stable.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
$$PWD/dialogs/dialogrestrictdimension.h \
|
||||||
$$PWD/tmainwindow.h \
|
$$PWD/tmainwindow.h \
|
||||||
$$PWD/stable.h \
|
$$PWD/stable.h \
|
||||||
$$PWD/mapplication.h \
|
$$PWD/mapplication.h \
|
||||||
|
@ -31,6 +33,7 @@ HEADERS += \
|
||||||
$$PWD/dialogs/dialogsetupmultisize.h
|
$$PWD/dialogs/dialogsetupmultisize.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
|
$$PWD/dialogs/dialogrestrictdimension.ui \
|
||||||
$$PWD/tmainwindow.ui \
|
$$PWD/tmainwindow.ui \
|
||||||
$$PWD/dialogs/dialogabouttape.ui \
|
$$PWD/dialogs/dialogabouttape.ui \
|
||||||
$$PWD/dialogs/dialognewmeasurements.ui \
|
$$PWD/dialogs/dialognewmeasurements.ui \
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "dialogs/dialogmdatabase.h"
|
#include "dialogs/dialogmdatabase.h"
|
||||||
#include "dialogs/dialogtapepreferences.h"
|
#include "dialogs/dialogtapepreferences.h"
|
||||||
#include "dialogs/dialogsetupmultisize.h"
|
#include "dialogs/dialogsetupmultisize.h"
|
||||||
|
#include "dialogs/dialogrestrictdimension.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
#include "../vpatterndb/calculator.h"
|
#include "../vpatterndb/calculator.h"
|
||||||
#include "../vpatterndb/pmsystems.h"
|
#include "../vpatterndb/pmsystems.h"
|
||||||
|
@ -2187,6 +2188,44 @@ void TMainWindow::ExportToIndividual()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TMainWindow::RestrictSecondDimesion()
|
||||||
|
{
|
||||||
|
const QList<MeasurementDimension_p> dimensions = m->Dimensions().values();
|
||||||
|
const QMap<QString, QPair<int, int>> restrictions = m->GetRestrictions();
|
||||||
|
|
||||||
|
bool oneDimesionRestriction = true;
|
||||||
|
bool fullCircumference = m->IsFullCircumference();
|
||||||
|
|
||||||
|
DialogRestrictDimension dialog(dimensions, restrictions, oneDimesionRestriction, fullCircumference, this);
|
||||||
|
if (dialog.exec() == QDialog::Rejected)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m->SetRestrictions(dialog.Restrictions());
|
||||||
|
MeasurementsWereSaved(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void TMainWindow::RestrictThirdDimesion()
|
||||||
|
{
|
||||||
|
const QList<MeasurementDimension_p> dimensions = m->Dimensions().values();
|
||||||
|
const QMap<QString, QPair<int, int>> restrictions = m->GetRestrictions();
|
||||||
|
|
||||||
|
bool oneDimesionRestriction = false;
|
||||||
|
bool fullCircumference = m->IsFullCircumference();
|
||||||
|
|
||||||
|
DialogRestrictDimension dialog(dimensions, restrictions, oneDimesionRestriction, fullCircumference, this);
|
||||||
|
if (dialog.exec() == QDialog::Rejected)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m->SetRestrictions(dialog.Restrictions());
|
||||||
|
MeasurementsWereSaved(false);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void TMainWindow::SetupMenu()
|
void TMainWindow::SetupMenu()
|
||||||
{
|
{
|
||||||
|
@ -2467,6 +2506,26 @@ void TMainWindow::InitMenu()
|
||||||
separator->setSeparator(true);
|
separator->setSeparator(true);
|
||||||
ui->menuMeasurements->insertAction(ui->actionUseFullCircumference, separator);
|
ui->menuMeasurements->insertAction(ui->actionUseFullCircumference, separator);
|
||||||
|
|
||||||
|
const QList<MeasurementDimension_p> dimensions = m->Dimensions().values();
|
||||||
|
if (dimensions.size() > 1)
|
||||||
|
{
|
||||||
|
ui->actionRestrictSecondDimension->setVisible(true);
|
||||||
|
ui->actionRestrictSecondDimension->setEnabled(true);
|
||||||
|
connect(ui->actionRestrictSecondDimension, &QAction::triggered, this, &TMainWindow::RestrictSecondDimesion);
|
||||||
|
|
||||||
|
separator = new QAction(this);
|
||||||
|
separator->setSeparator(true);
|
||||||
|
ui->menuMeasurements->insertAction(ui->actionRestrictSecondDimension, separator);
|
||||||
|
|
||||||
|
if (dimensions.size() > 2)
|
||||||
|
{
|
||||||
|
ui->actionRestrictThirdDimension->setVisible(true);
|
||||||
|
ui->actionRestrictThirdDimension->setEnabled(true);
|
||||||
|
connect(ui->actionRestrictThirdDimension, &QAction::triggered, this,
|
||||||
|
&TMainWindow::RestrictThirdDimesion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// File
|
// File
|
||||||
ui->actionExportToIndividual->setVisible(true);
|
ui->actionExportToIndividual->setVisible(true);
|
||||||
ui->actionExportToIndividual->setEnabled(true);
|
ui->actionExportToIndividual->setEnabled(true);
|
||||||
|
@ -3995,7 +4054,7 @@ QVector<int> TMainWindow::DimensionRestrictedValues(int index, const Measurement
|
||||||
}
|
}
|
||||||
else if (dimension->Type() == MeasurementDimension::Y)
|
else if (dimension->Type() == MeasurementDimension::Y)
|
||||||
{
|
{
|
||||||
const QPair<int, int> restriction = m->OneDimensionRestriction(currentDimensionA);
|
const QPair<int, int> restriction = m->Restriction(currentDimensionA);
|
||||||
VYMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
VYMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
||||||
restricted.SetCircumference(dimension->IsCircumference());
|
restricted.SetCircumference(dimension->IsCircumference());
|
||||||
|
|
||||||
|
@ -4013,11 +4072,11 @@ QVector<int> TMainWindow::DimensionRestrictedValues(int index, const Measurement
|
||||||
|
|
||||||
if (index == 1)
|
if (index == 1)
|
||||||
{
|
{
|
||||||
restriction = m->OneDimensionRestriction(currentDimensionA);
|
restriction = m->Restriction(currentDimensionA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
restriction = m->TwoDimensionRestriction(currentDimensionA, currentDimensionB);
|
restriction = m->Restriction(currentDimensionA, currentDimensionB);
|
||||||
}
|
}
|
||||||
|
|
||||||
VWMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
VWMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
||||||
|
@ -4036,11 +4095,11 @@ QVector<int> TMainWindow::DimensionRestrictedValues(int index, const Measurement
|
||||||
|
|
||||||
if (index == 1)
|
if (index == 1)
|
||||||
{
|
{
|
||||||
restriction = m->OneDimensionRestriction(currentDimensionA);
|
restriction = m->Restriction(currentDimensionA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
restriction = m->TwoDimensionRestriction(currentDimensionA, currentDimensionB);
|
restriction = m->Restriction(currentDimensionA, currentDimensionB);
|
||||||
}
|
}
|
||||||
|
|
||||||
VZMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
VZMeasurementDimension restricted(dimension->Units(), restriction.first, restriction.second, dimension->Step());
|
||||||
|
|
|
@ -139,6 +139,9 @@ private slots:
|
||||||
|
|
||||||
void ExportToIndividual();
|
void ExportToIndividual();
|
||||||
|
|
||||||
|
void RestrictSecondDimesion();
|
||||||
|
void RestrictThirdDimesion();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(TMainWindow)
|
Q_DISABLE_COPY(TMainWindow)
|
||||||
Ui::TMainWindow *ui;
|
Ui::TMainWindow *ui;
|
||||||
|
|
|
@ -993,6 +993,8 @@
|
||||||
<addaction name="actionImportFromPattern"/>
|
<addaction name="actionImportFromPattern"/>
|
||||||
<addaction name="actionMeasurementDiagram"/>
|
<addaction name="actionMeasurementDiagram"/>
|
||||||
<addaction name="actionUseFullCircumference"/>
|
<addaction name="actionUseFullCircumference"/>
|
||||||
|
<addaction name="actionRestrictSecondDimension"/>
|
||||||
|
<addaction name="actionRestrictThirdDimension"/>
|
||||||
</widget>
|
</widget>
|
||||||
<addaction name="menuFile"/>
|
<addaction name="menuFile"/>
|
||||||
<addaction name="menuMeasurements"/>
|
<addaction name="menuMeasurements"/>
|
||||||
|
@ -1365,6 +1367,28 @@
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionRestrictSecondDimension">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Restrict second dimension</string>
|
||||||
|
</property>
|
||||||
|
<property name="visible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionRestrictThirdDimension">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Restrict third dimension</string>
|
||||||
|
</property>
|
||||||
|
<property name="visible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
|
|
@ -71,6 +71,7 @@ const QString VMeasurements::TagMeasurement = QStringLiteral("m");
|
||||||
const QString VMeasurements::TagDimensions = QStringLiteral("dimensions");
|
const QString VMeasurements::TagDimensions = QStringLiteral("dimensions");
|
||||||
const QString VMeasurements::TagDimension = QStringLiteral("dimension");
|
const QString VMeasurements::TagDimension = QStringLiteral("dimension");
|
||||||
const QString VMeasurements::TagRestrictions = QStringLiteral("restrictions");
|
const QString VMeasurements::TagRestrictions = QStringLiteral("restrictions");
|
||||||
|
const QString VMeasurements::TagRestriction = QStringLiteral("restriction");
|
||||||
const QString VMeasurements::TagCorrections = QStringLiteral("corrections");
|
const QString VMeasurements::TagCorrections = QStringLiteral("corrections");
|
||||||
const QString VMeasurements::TagCorrection = QStringLiteral("correction");
|
const QString VMeasurements::TagCorrection = QStringLiteral("correction");
|
||||||
|
|
||||||
|
@ -853,15 +854,58 @@ QMap<MeasurementDimension, MeasurementDimension_p > VMeasurements::Dimensions()
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QPair<int, int> VMeasurements::OneDimensionRestriction(int base) const
|
QMap<QString, QPair<int, int> > VMeasurements::GetRestrictions() const
|
||||||
{
|
{
|
||||||
return QPair<int, int>(0, 0);
|
QMap<QString, QPair<int, int> > restrictions;
|
||||||
|
|
||||||
|
const QDomNodeList list = elementsByTagName(TagRestriction);
|
||||||
|
for (int i=0; i < list.size(); ++i)
|
||||||
|
{
|
||||||
|
const QDomElement res = list.at(i).toElement();
|
||||||
|
|
||||||
|
QString coordinates = GetParametrString(res, AttrCoordinates);
|
||||||
|
const int min = GetParametrInt(res, AttrMin, QChar('0'));
|
||||||
|
const int max = GetParametrInt(res, AttrMax, QChar('0'));
|
||||||
|
|
||||||
|
restrictions.insert(coordinates, qMakePair(min, max));
|
||||||
|
}
|
||||||
|
|
||||||
|
return restrictions;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QPair<int, int> VMeasurements::TwoDimensionRestriction(int base1, int base2) const
|
void VMeasurements::SetRestrictions(const QMap<QString, QPair<int, int> > &restrictions)
|
||||||
{
|
{
|
||||||
return QPair<int, int>(0, 0);
|
QDomElement root = documentElement();
|
||||||
|
QDomElement restrictionsTag = root.firstChildElement(TagRestrictions);
|
||||||
|
|
||||||
|
if (restrictionsTag.isNull())
|
||||||
|
{
|
||||||
|
qDebug() << "Can't find restrictions tag";
|
||||||
|
}
|
||||||
|
|
||||||
|
RemoveAllChildren(restrictionsTag);
|
||||||
|
|
||||||
|
QMap<QString, QPair<int, int> >::const_iterator i = restrictions.constBegin();
|
||||||
|
while (i != restrictions.constEnd())
|
||||||
|
{
|
||||||
|
QDomElement restrictionTag = createElement(TagRestriction);
|
||||||
|
|
||||||
|
SetAttribute(restrictionTag, AttrCoordinates, i.key());
|
||||||
|
SetAttribute(restrictionTag, AttrMin, i.value().first);
|
||||||
|
SetAttribute(restrictionTag, AttrMax, i.value().second);
|
||||||
|
|
||||||
|
restrictionsTag.appendChild(restrictionTag);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QPair<int, int> VMeasurements::Restriction(int base, int base2) const
|
||||||
|
{
|
||||||
|
const QMap<QString, QPair<int, int> > restrictions = GetRestrictions();
|
||||||
|
const QString hash = VMeasurement::CorrectionHash(base, base2, 0);
|
||||||
|
return restrictions.value(hash, QPair<int, int>(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -116,8 +116,10 @@ public:
|
||||||
|
|
||||||
QMap<MeasurementDimension, MeasurementDimension_p > Dimensions() const;
|
QMap<MeasurementDimension, MeasurementDimension_p > Dimensions() const;
|
||||||
|
|
||||||
QPair<int, int> OneDimensionRestriction(int base) const;
|
QMap<QString, QPair<int, int> > GetRestrictions() const;
|
||||||
QPair<int, int> TwoDimensionRestriction(int base1, int base2) const;
|
void SetRestrictions(const QMap<QString, QPair<int, int> > &restrictions);
|
||||||
|
|
||||||
|
QPair<int, int> Restriction(int base, int base2=0) const;
|
||||||
|
|
||||||
static const QString TagVST;
|
static const QString TagVST;
|
||||||
static const QString TagVIT;
|
static const QString TagVIT;
|
||||||
|
@ -134,6 +136,7 @@ public:
|
||||||
static const QString TagDimensions;
|
static const QString TagDimensions;
|
||||||
static const QString TagDimension;
|
static const QString TagDimension;
|
||||||
static const QString TagRestrictions;
|
static const QString TagRestrictions;
|
||||||
|
static const QString TagRestriction;
|
||||||
static const QString TagCorrections;
|
static const QString TagCorrections;
|
||||||
static const QString TagCorrection;
|
static const QString TagCorrection;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user