Auto-created Visibility Group for group operation. Closes smart-pattern/valentina#18.
This commit is contained in:
parent
9869ae249f
commit
526892ed5a
|
@ -43,6 +43,7 @@
|
||||||
- Change default values for grainline length and pattern label size to 10 cm.
|
- Change default values for grainline length and pattern label size to 10 cm.
|
||||||
- Tool Point at distance and angle now allows negative length.
|
- Tool Point at distance and angle now allows negative length.
|
||||||
- Export pattern to DXF-ASTM.
|
- Export pattern to DXF-ASTM.
|
||||||
|
- [smart-pattern/valentina#18] Auto-created Visibility Group for group operation.
|
||||||
|
|
||||||
# Version 0.6.2 (unreleased)
|
# Version 0.6.2 (unreleased)
|
||||||
- [#903] Bug in tool Cut Spline path.
|
- [#903] Bug in tool Cut Spline path.
|
||||||
|
|
|
@ -148,9 +148,9 @@ void VWidgetGroups::RenameGroup(int row, int column)
|
||||||
}
|
}
|
||||||
|
|
||||||
const quint32 id = ui->tableWidget->item(row, 0)->data(Qt::UserRole).toUInt();
|
const quint32 id = ui->tableWidget->item(row, 0)->data(Qt::UserRole).toUInt();
|
||||||
doc->SetGroupName(id, ui->tableWidget->item(row, column)->text());
|
::RenameGroup *renameGroup = new ::RenameGroup(doc, id, ui->tableWidget->item(row, column)->text());
|
||||||
|
connect(renameGroup, &RenameGroup::UpdateGroups, this, &VWidgetGroups::UpdateGroups);
|
||||||
UpdateGroups();
|
qApp->getUndoStack()->push(renameGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -209,9 +209,9 @@ void VWidgetGroups::CtxMenu(const QPoint &pos)
|
||||||
|
|
||||||
if (result == QDialog::Accepted)
|
if (result == QDialog::Accepted)
|
||||||
{
|
{
|
||||||
doc->SetGroupName(id, dialog->GetName());
|
::RenameGroup *renameGroup = new ::RenameGroup(doc, id, dialog->GetName());
|
||||||
item = ui->tableWidget->item(row, 1);
|
connect(renameGroup, &RenameGroup::UpdateGroups, this, &VWidgetGroups::UpdateGroups);
|
||||||
item->setText(dialog->GetName());
|
qApp->getUndoStack()->push(renameGroup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (selectedAction == actionDelete)
|
else if (selectedAction == actionDelete)
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
<file>schema/pattern/v0.8.4.xsd</file>
|
<file>schema/pattern/v0.8.4.xsd</file>
|
||||||
<file>schema/pattern/v0.8.5.xsd</file>
|
<file>schema/pattern/v0.8.5.xsd</file>
|
||||||
<file>schema/pattern/v0.8.6.xsd</file>
|
<file>schema/pattern/v0.8.6.xsd</file>
|
||||||
|
<file>schema/pattern/v0.8.7.xsd</file>
|
||||||
<file>schema/standard_measurements/v0.3.0.xsd</file>
|
<file>schema/standard_measurements/v0.3.0.xsd</file>
|
||||||
<file>schema/standard_measurements/v0.4.0.xsd</file>
|
<file>schema/standard_measurements/v0.4.0.xsd</file>
|
||||||
<file>schema/standard_measurements/v0.4.1.xsd</file>
|
<file>schema/standard_measurements/v0.4.1.xsd</file>
|
||||||
|
|
1253
src/libs/ifc/schema/pattern/v0.8.7.xsd
Normal file
1253
src/libs/ifc/schema/pattern/v0.8.7.xsd
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -1730,6 +1730,12 @@ void VAbstractPattern::SelectedDetail(quint32 id)
|
||||||
emit ShowDetail(id);
|
emit ShowDetail(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VAbstractPattern::UpdateVisiblityGroups()
|
||||||
|
{
|
||||||
|
emit UpdateGroups();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractPattern::ToolExists(const quint32 &id)
|
void VAbstractPattern::ToolExists(const quint32 &id)
|
||||||
{
|
{
|
||||||
|
@ -2422,7 +2428,8 @@ QDomElement VAbstractPattern::CreateGroups()
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QDomElement VAbstractPattern::CreateGroup(quint32 id, const QString &name, const QMap<quint32, quint32> &groupData)
|
QDomElement VAbstractPattern::CreateGroup(quint32 id, const QString &name, const QMap<quint32, quint32> &groupData,
|
||||||
|
vidtype tool)
|
||||||
{
|
{
|
||||||
if (id == NULL_ID || groupData.isEmpty())
|
if (id == NULL_ID || groupData.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -2433,6 +2440,7 @@ QDomElement VAbstractPattern::CreateGroup(quint32 id, const QString &name, const
|
||||||
SetAttribute(group, AttrId, id);
|
SetAttribute(group, AttrId, id);
|
||||||
SetAttribute(group, AttrName, name);
|
SetAttribute(group, AttrName, name);
|
||||||
SetAttribute(group, AttrVisible, true);
|
SetAttribute(group, AttrVisible, true);
|
||||||
|
SetAttributeOrRemoveIf(group, AttrTool, tool, tool == null_id);
|
||||||
|
|
||||||
auto i = groupData.constBegin();
|
auto i = groupData.constBegin();
|
||||||
while (i != groupData.constEnd())
|
while (i != groupData.constEnd())
|
||||||
|
@ -2446,66 +2454,50 @@ QDomElement VAbstractPattern::CreateGroup(quint32 id, const QString &name, const
|
||||||
|
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
vidtype VAbstractPattern::GroupLinkedToTool(vidtype toolId) const
|
||||||
|
{
|
||||||
|
const QDomNodeList groups = elementsByTagName(TagGroup);
|
||||||
|
for (int i=0; i < groups.size(); ++i)
|
||||||
|
{
|
||||||
|
const QDomElement group = groups.at(i).toElement();
|
||||||
|
if (not group.isNull() && group.hasAttribute(AttrTool))
|
||||||
|
{
|
||||||
|
const quint32 id = GetParametrUInt(group, AttrTool, NULL_ID_STR);
|
||||||
|
|
||||||
|
if (toolId == id)
|
||||||
|
{
|
||||||
|
return GetParametrUInt(group, AttrId, NULL_ID_STR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null_id;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VAbstractPattern::GetGroupName(quint32 id)
|
QString VAbstractPattern::GetGroupName(quint32 id)
|
||||||
{
|
{
|
||||||
QString name = tr("New group");
|
QString name = tr("New group");
|
||||||
QDomElement groups = CreateGroups();
|
QDomElement group = elementById(id, TagGroup);
|
||||||
if (not groups.isNull())
|
if (group.isElement())
|
||||||
{
|
{
|
||||||
QDomElement group = elementById(id, TagGroup);
|
name = GetParametrString(group, AttrName, name);
|
||||||
if (group.isElement())
|
|
||||||
{
|
|
||||||
name = GetParametrString(group, AttrName, name);
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (groups.childNodes().isEmpty())
|
|
||||||
{
|
|
||||||
QDomNode parent = groups.parentNode();
|
|
||||||
parent.removeChild(groups);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("Can't get group by id = %u.", id);
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qDebug("Can't get tag Groups.");
|
|
||||||
return name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractPattern::SetGroupName(quint32 id, const QString &name)
|
void VAbstractPattern::SetGroupName(quint32 id, const QString &name)
|
||||||
{
|
{
|
||||||
QDomElement groups = CreateGroups();
|
QDomElement group = elementById(id, TagGroup);
|
||||||
if (not groups.isNull())
|
if (group.isElement())
|
||||||
{
|
{
|
||||||
QDomElement group = elementById(id, TagGroup);
|
group.setAttribute(AttrName, name);
|
||||||
if (group.isElement())
|
modified = true;
|
||||||
{
|
emit patternChanged(false);
|
||||||
group.setAttribute(AttrName, name);
|
|
||||||
modified = true;
|
|
||||||
emit patternChanged(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (groups.childNodes().isEmpty())
|
|
||||||
{
|
|
||||||
QDomNode parent = groups.parentNode();
|
|
||||||
parent.removeChild(groups);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("Can't get group by id = %u.", id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qDebug("Can't get tag Groups.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -200,7 +200,9 @@ public:
|
||||||
|
|
||||||
void ParseGroups(const QDomElement &domElement);
|
void ParseGroups(const QDomElement &domElement);
|
||||||
QDomElement CreateGroups();
|
QDomElement CreateGroups();
|
||||||
QDomElement CreateGroup(quint32 id, const QString &name, const QMap<quint32, quint32> &groupData);
|
QDomElement CreateGroup(quint32 id, const QString &name, const QMap<quint32, quint32> &groupData,
|
||||||
|
vidtype tool=null_id);
|
||||||
|
vidtype GroupLinkedToTool(vidtype toolId) const;
|
||||||
QString GetGroupName(quint32 id);
|
QString GetGroupName(quint32 id);
|
||||||
void SetGroupName(quint32 id, const QString &name);
|
void SetGroupName(quint32 id, const QString &name);
|
||||||
QMap<quint32, QPair<QString, bool> > GetGroups();
|
QMap<quint32, QPair<QString, bool> > GetGroups();
|
||||||
|
@ -413,6 +415,7 @@ public slots:
|
||||||
void ClearScene();
|
void ClearScene();
|
||||||
void CheckInLayoutList();
|
void CheckInLayoutList();
|
||||||
void SelectedDetail(quint32 id);
|
void SelectedDetail(quint32 id);
|
||||||
|
void UpdateVisiblityGroups();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** @brief nameActivDraw name current pattern peace. */
|
/** @brief nameActivDraw name current pattern peace. */
|
||||||
|
|
|
@ -59,8 +59,8 @@ class QDomElement;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.4");
|
const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.4");
|
||||||
const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.8.6");
|
const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.8.7");
|
||||||
const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.8.6.xsd");
|
const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.8.7.xsd");
|
||||||
|
|
||||||
//VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!!
|
//VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!!
|
||||||
//VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!!
|
//VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!!
|
||||||
|
@ -236,7 +236,8 @@ QString VPatternConverter::XSDSchema(int ver) const
|
||||||
std::make_pair(FORMAT_VERSION(0, 8, 3), QStringLiteral("://schema/pattern/v0.8.3.xsd")),
|
std::make_pair(FORMAT_VERSION(0, 8, 3), QStringLiteral("://schema/pattern/v0.8.3.xsd")),
|
||||||
std::make_pair(FORMAT_VERSION(0, 8, 4), QStringLiteral("://schema/pattern/v0.8.4.xsd")),
|
std::make_pair(FORMAT_VERSION(0, 8, 4), QStringLiteral("://schema/pattern/v0.8.4.xsd")),
|
||||||
std::make_pair(FORMAT_VERSION(0, 8, 5), QStringLiteral("://schema/pattern/v0.8.5.xsd")),
|
std::make_pair(FORMAT_VERSION(0, 8, 5), QStringLiteral("://schema/pattern/v0.8.5.xsd")),
|
||||||
std::make_pair(FORMAT_VERSION(0, 8, 6), CurrentSchema)
|
std::make_pair(FORMAT_VERSION(0, 8, 6), QStringLiteral("://schema/pattern/v0.8.6.xsd")),
|
||||||
|
std::make_pair(FORMAT_VERSION(0, 8, 7), CurrentSchema)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (schemas.contains(ver))
|
if (schemas.contains(ver))
|
||||||
|
@ -481,6 +482,10 @@ void VPatternConverter::ApplyPatches()
|
||||||
ValidateXML(XSDSchema(FORMAT_VERSION(0, 8, 6)));
|
ValidateXML(XSDSchema(FORMAT_VERSION(0, 8, 6)));
|
||||||
Q_FALLTHROUGH();
|
Q_FALLTHROUGH();
|
||||||
case (FORMAT_VERSION(0, 8, 6)):
|
case (FORMAT_VERSION(0, 8, 6)):
|
||||||
|
ToV0_8_7();
|
||||||
|
ValidateXML(XSDSchema(FORMAT_VERSION(0, 8, 7)));
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case (FORMAT_VERSION(0, 8, 7)):
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
InvalidVersion(m_ver);
|
InvalidVersion(m_ver);
|
||||||
|
@ -498,7 +503,7 @@ void VPatternConverter::DowngradeToCurrentMaxVersion()
|
||||||
bool VPatternConverter::IsReadOnly() const
|
bool VPatternConverter::IsReadOnly() const
|
||||||
{
|
{
|
||||||
// Check if attribute readOnly was not changed in file format
|
// Check if attribute readOnly was not changed in file format
|
||||||
Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == FORMAT_VERSION(0, 8, 6),
|
Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == FORMAT_VERSION(0, 8, 7),
|
||||||
"Check attribute readOnly.");
|
"Check attribute readOnly.");
|
||||||
|
|
||||||
// Possibly in future attribute readOnly will change position etc.
|
// Possibly in future attribute readOnly will change position etc.
|
||||||
|
@ -1128,6 +1133,16 @@ void VPatternConverter::ToV0_8_6()
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VPatternConverter::ToV0_8_7()
|
||||||
|
{
|
||||||
|
// TODO. Delete if minimal supported version is 0.8.7
|
||||||
|
Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FORMAT_VERSION(0, 8, 7),
|
||||||
|
"Time to refactor the code.");
|
||||||
|
SetVersion(QStringLiteral("0.8.7"));
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPatternConverter::TagUnitToV0_2_0()
|
void VPatternConverter::TagUnitToV0_2_0()
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,7 +53,7 @@ public:
|
||||||
static const QString PatternMaxVerStr;
|
static const QString PatternMaxVerStr;
|
||||||
static const QString CurrentSchema;
|
static const QString CurrentSchema;
|
||||||
static Q_DECL_CONSTEXPR const int PatternMinVer = FORMAT_VERSION(0, 1, 4);
|
static Q_DECL_CONSTEXPR const int PatternMinVer = FORMAT_VERSION(0, 1, 4);
|
||||||
static Q_DECL_CONSTEXPR const int PatternMaxVer = FORMAT_VERSION(0, 8, 6);
|
static Q_DECL_CONSTEXPR const int PatternMaxVer = FORMAT_VERSION(0, 8, 7);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int MinVer() const override;
|
virtual int MinVer() const override;
|
||||||
|
@ -129,6 +129,7 @@ private:
|
||||||
void ToV0_8_4();
|
void ToV0_8_4();
|
||||||
void ToV0_8_5();
|
void ToV0_8_5();
|
||||||
void ToV0_8_6();
|
void ToV0_8_6();
|
||||||
|
void ToV0_8_7();
|
||||||
|
|
||||||
void TagUnitToV0_2_0();
|
void TagUnitToV0_2_0();
|
||||||
void TagIncrementToV0_2_0();
|
void TagIncrementToV0_2_0();
|
||||||
|
|
|
@ -67,6 +67,7 @@ DialogFlippingByAxis::DialogFlippingByAxis(const VContainer *data, quint32 toolI
|
||||||
stage1(true),
|
stage1(true),
|
||||||
m_suffix(),
|
m_suffix(),
|
||||||
flagName(true),
|
flagName(true),
|
||||||
|
flagGroupName(true),
|
||||||
flagError(false)
|
flagError(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
@ -81,6 +82,7 @@ DialogFlippingByAxis::DialogFlippingByAxis(const VContainer *data, quint32 toolI
|
||||||
ui->comboBoxOriginPoint->setCurrentIndex(-1);
|
ui->comboBoxOriginPoint->setCurrentIndex(-1);
|
||||||
|
|
||||||
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogFlippingByAxis::SuffixChanged);
|
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogFlippingByAxis::SuffixChanged);
|
||||||
|
connect(ui->lineEditVisibilityGroup, &QLineEdit::textChanged, this, &DialogFlippingByAxis::GroupNameChanged);
|
||||||
connect(ui->comboBoxOriginPoint, &QComboBox::currentTextChanged,
|
connect(ui->comboBoxOriginPoint, &QComboBox::currentTextChanged,
|
||||||
this, &DialogFlippingByAxis::PointChanged);
|
this, &DialogFlippingByAxis::PointChanged);
|
||||||
|
|
||||||
|
@ -147,6 +149,30 @@ QVector<quint32> DialogFlippingByAxis::GetObjects() const
|
||||||
return ConvertToVector(objects);
|
return ConvertToVector(objects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogFlippingByAxis::GetVisibilityGroupName() const
|
||||||
|
{
|
||||||
|
return ui->lineEditVisibilityGroup->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByAxis::SetVisibilityGroupName(const QString &name)
|
||||||
|
{
|
||||||
|
ui->lineEditVisibilityGroup->setText(name.isEmpty() ? tr("Rotation") : name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DialogFlippingByAxis::HasLinkedVisibilityGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBoxVisibilityGroup->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByAxis::SetHasLinkedVisibilityGroup(bool linked)
|
||||||
|
{
|
||||||
|
ui->groupBoxVisibilityGroup->setChecked(linked);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogFlippingByAxis::ShowDialog(bool click)
|
void DialogFlippingByAxis::ShowDialog(bool click)
|
||||||
{
|
{
|
||||||
|
@ -277,6 +303,27 @@ void DialogFlippingByAxis::SuffixChanged()
|
||||||
CheckState();
|
CheckState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByAxis::GroupNameChanged()
|
||||||
|
{
|
||||||
|
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
|
||||||
|
if (edit)
|
||||||
|
{
|
||||||
|
const QString name = edit->text();
|
||||||
|
if (name.isEmpty())
|
||||||
|
{
|
||||||
|
flagGroupName = false;
|
||||||
|
ChangeColor(ui->labelGroupName, errorColor);
|
||||||
|
CheckState();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
flagGroupName = true;
|
||||||
|
ChangeColor(ui->labelGroupName, OkColor(this));
|
||||||
|
}
|
||||||
|
CheckState();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogFlippingByAxis::ShowVisualization()
|
void DialogFlippingByAxis::ShowVisualization()
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,12 @@ public:
|
||||||
|
|
||||||
QVector<quint32> GetObjects() const;
|
QVector<quint32> GetObjects() const;
|
||||||
|
|
||||||
|
QString GetVisibilityGroupName() const;
|
||||||
|
void SetVisibilityGroupName(const QString &name);
|
||||||
|
|
||||||
|
bool HasLinkedVisibilityGroup() const;
|
||||||
|
void SetHasLinkedVisibilityGroup(bool linked);
|
||||||
|
|
||||||
virtual void ShowDialog(bool click) override;
|
virtual void ShowDialog(bool click) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -73,6 +79,7 @@ public slots:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void SuffixChanged();
|
void SuffixChanged();
|
||||||
|
void GroupNameChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void ShowVisualization() override;
|
virtual void ShowVisualization() override;
|
||||||
|
@ -96,6 +103,7 @@ private:
|
||||||
QString m_suffix;
|
QString m_suffix;
|
||||||
|
|
||||||
bool flagName;
|
bool flagName;
|
||||||
|
bool flagGroupName;
|
||||||
bool flagError;
|
bool flagError;
|
||||||
|
|
||||||
static void FillComboBoxAxisType(QComboBox *box);
|
static void FillComboBoxAxisType(QComboBox *box);
|
||||||
|
@ -104,7 +112,7 @@ private:
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
inline bool DialogFlippingByAxis::IsValid() const
|
inline bool DialogFlippingByAxis::IsValid() const
|
||||||
{
|
{
|
||||||
return flagError && flagName;
|
return flagError && flagName && flagGroupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DIALOGFLIPPINGBYAXIS_H
|
#endif // DIALOGFLIPPINGBYAXIS_H
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>285</width>
|
<width>304</width>
|
||||||
<height>146</height>
|
<height>207</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -48,6 +48,41 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBoxVisibilityGroup">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Enable to create a visibility gropup from original objects</string>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Visibility Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelGroupName">
|
||||||
|
<property name="text">
|
||||||
|
<string>Name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEditVisibilityGroup">
|
||||||
|
<property name="text">
|
||||||
|
<string>Flipping by axis</string>
|
||||||
|
</property>
|
||||||
|
<property name="clearButtonEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
|
@ -79,6 +79,7 @@ DialogFlippingByLine::DialogFlippingByLine(const VContainer *data, quint32 toolI
|
||||||
FillComboBoxPoints(ui->comboBoxSecondLinePoint);
|
FillComboBoxPoints(ui->comboBoxSecondLinePoint);
|
||||||
|
|
||||||
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogFlippingByLine::SuffixChanged);
|
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogFlippingByLine::SuffixChanged);
|
||||||
|
connect(ui->lineEditVisibilityGroup, &QLineEdit::textChanged, this, &DialogFlippingByLine::GroupNameChanged);
|
||||||
connect(ui->comboBoxFirstLinePoint, &QComboBox::currentTextChanged,
|
connect(ui->comboBoxFirstLinePoint, &QComboBox::currentTextChanged,
|
||||||
this, &DialogFlippingByLine::PointChanged);
|
this, &DialogFlippingByLine::PointChanged);
|
||||||
connect(ui->comboBoxSecondLinePoint, &QComboBox::currentTextChanged,
|
connect(ui->comboBoxSecondLinePoint, &QComboBox::currentTextChanged,
|
||||||
|
@ -142,6 +143,30 @@ QVector<quint32> DialogFlippingByLine::GetObjects() const
|
||||||
return ConvertToVector(objects);
|
return ConvertToVector(objects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogFlippingByLine::GetVisibilityGroupName() const
|
||||||
|
{
|
||||||
|
return ui->lineEditVisibilityGroup->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByLine::SetVisibilityGroupName(const QString &name)
|
||||||
|
{
|
||||||
|
ui->lineEditVisibilityGroup->setText(name.isEmpty() ? tr("Rotation") : name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DialogFlippingByLine::HasLinkedVisibilityGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBoxVisibilityGroup->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByLine::SetHasLinkedVisibilityGroup(bool linked)
|
||||||
|
{
|
||||||
|
ui->groupBoxVisibilityGroup->setChecked(linked);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogFlippingByLine::ShowDialog(bool click)
|
void DialogFlippingByLine::ShowDialog(bool click)
|
||||||
{
|
{
|
||||||
|
@ -301,6 +326,27 @@ void DialogFlippingByLine::SuffixChanged()
|
||||||
CheckState();
|
CheckState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogFlippingByLine::GroupNameChanged()
|
||||||
|
{
|
||||||
|
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
|
||||||
|
if (edit)
|
||||||
|
{
|
||||||
|
const QString name = edit->text();
|
||||||
|
if (name.isEmpty())
|
||||||
|
{
|
||||||
|
flagGroupName = false;
|
||||||
|
ChangeColor(ui->labelGroupName, errorColor);
|
||||||
|
CheckState();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
flagGroupName = true;
|
||||||
|
ChangeColor(ui->labelGroupName, OkColor(this));
|
||||||
|
}
|
||||||
|
CheckState();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogFlippingByLine::ShowVisualization()
|
void DialogFlippingByLine::ShowVisualization()
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,12 @@ public:
|
||||||
|
|
||||||
QVector<quint32> GetObjects() const;
|
QVector<quint32> GetObjects() const;
|
||||||
|
|
||||||
|
QString GetVisibilityGroupName() const;
|
||||||
|
void SetVisibilityGroupName(const QString &name);
|
||||||
|
|
||||||
|
bool HasLinkedVisibilityGroup() const;
|
||||||
|
void SetHasLinkedVisibilityGroup(bool linked);
|
||||||
|
|
||||||
virtual void ShowDialog(bool click) override;
|
virtual void ShowDialog(bool click) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -73,6 +79,7 @@ public slots:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void SuffixChanged();
|
void SuffixChanged();
|
||||||
|
void GroupNameChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void ShowVisualization() override;
|
virtual void ShowVisualization() override;
|
||||||
|
@ -96,13 +103,14 @@ private:
|
||||||
QString m_suffix;
|
QString m_suffix;
|
||||||
|
|
||||||
bool flagName;
|
bool flagName;
|
||||||
|
bool flagGroupName;
|
||||||
bool flagError;
|
bool flagError;
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
inline bool DialogFlippingByLine::IsValid() const
|
inline bool DialogFlippingByLine::IsValid() const
|
||||||
{
|
{
|
||||||
return flagError && flagName;
|
return flagError && flagName && flagGroupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DIALOGFLIPPINGBYLINE_H
|
#endif // DIALOGFLIPPINGBYLINE_H
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>285</width>
|
<width>304</width>
|
||||||
<height>146</height>
|
<height>207</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -52,6 +52,41 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBoxVisibilityGroup">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Enable to create a visibility gropup from original objects</string>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Visibility Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelGroupName">
|
||||||
|
<property name="text">
|
||||||
|
<string>Name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEditVisibilityGroup">
|
||||||
|
<property name="text">
|
||||||
|
<string>Flipping by line</string>
|
||||||
|
</property>
|
||||||
|
<property name="clearButtonEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
|
@ -85,7 +85,8 @@ DialogMove::DialogMove(const VContainer *data, quint32 toolId, QWidget *parent)
|
||||||
flagAngle(false),
|
flagAngle(false),
|
||||||
flagRotationAngle(false),
|
flagRotationAngle(false),
|
||||||
flagLength(false),
|
flagLength(false),
|
||||||
flagName(true)
|
flagName(true),
|
||||||
|
flagGroupName(true)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
@ -118,6 +119,7 @@ DialogMove::DialogMove(const VContainer *data, quint32 toolId, QWidget *parent)
|
||||||
ui->comboBoxRotationOriginPoint->blockSignals(false);
|
ui->comboBoxRotationOriginPoint->blockSignals(false);
|
||||||
|
|
||||||
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogMove::SuffixChanged);
|
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogMove::SuffixChanged);
|
||||||
|
connect(ui->lineEditVisibilityGroup, &QLineEdit::textChanged, this, &DialogMove::GroupNameChanged);
|
||||||
connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogMove::FXAngle);
|
connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogMove::FXAngle);
|
||||||
connect(ui->toolButtonExprRotationAngle, &QPushButton::clicked, this, &DialogMove::FXRotationAngle);
|
connect(ui->toolButtonExprRotationAngle, &QPushButton::clicked, this, &DialogMove::FXRotationAngle);
|
||||||
connect(ui->toolButtonExprLength, &QPushButton::clicked, this, &DialogMove::FXLength);
|
connect(ui->toolButtonExprLength, &QPushButton::clicked, this, &DialogMove::FXLength);
|
||||||
|
@ -257,6 +259,30 @@ QVector<quint32> DialogMove::GetObjects() const
|
||||||
return ConvertToVector(objects);
|
return ConvertToVector(objects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogMove::GetVisibilityGroupName() const
|
||||||
|
{
|
||||||
|
return ui->lineEditVisibilityGroup->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogMove::SetVisibilityGroupName(const QString &name)
|
||||||
|
{
|
||||||
|
ui->lineEditVisibilityGroup->setText(name.isEmpty() ? tr("Rotation") : name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DialogMove::HasLinkedVisibilityGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBoxVisibilityGroup->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogMove::SetHasLinkedVisibilityGroup(bool linked)
|
||||||
|
{
|
||||||
|
ui->groupBoxVisibilityGroup->setChecked(linked);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogMove::ShowDialog(bool click)
|
void DialogMove::ShowDialog(bool click)
|
||||||
{
|
{
|
||||||
|
@ -481,6 +507,27 @@ void DialogMove::SuffixChanged()
|
||||||
CheckState();
|
CheckState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogMove::GroupNameChanged()
|
||||||
|
{
|
||||||
|
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
|
||||||
|
if (edit)
|
||||||
|
{
|
||||||
|
const QString name = edit->text();
|
||||||
|
if (name.isEmpty())
|
||||||
|
{
|
||||||
|
flagGroupName = false;
|
||||||
|
ChangeColor(ui->labelGroupName, errorColor);
|
||||||
|
CheckState();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
flagGroupName = true;
|
||||||
|
ChangeColor(ui->labelGroupName, OkColor(this));
|
||||||
|
}
|
||||||
|
CheckState();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogMove::ShowVisualization()
|
void DialogMove::ShowVisualization()
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,6 +70,12 @@ public:
|
||||||
|
|
||||||
QVector<quint32> GetObjects() const;
|
QVector<quint32> GetObjects() const;
|
||||||
|
|
||||||
|
QString GetVisibilityGroupName() const;
|
||||||
|
void SetVisibilityGroupName(const QString &name);
|
||||||
|
|
||||||
|
bool HasLinkedVisibilityGroup() const;
|
||||||
|
void SetHasLinkedVisibilityGroup(bool linked);
|
||||||
|
|
||||||
virtual void ShowDialog(bool click) override;
|
virtual void ShowDialog(bool click) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -87,6 +93,7 @@ private slots:
|
||||||
void FXLength();
|
void FXLength();
|
||||||
|
|
||||||
void SuffixChanged();
|
void SuffixChanged();
|
||||||
|
void GroupNameChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void ShowVisualization() override;
|
virtual void ShowVisualization() override;
|
||||||
|
@ -129,6 +136,7 @@ private:
|
||||||
bool flagRotationAngle;
|
bool flagRotationAngle;
|
||||||
bool flagLength;
|
bool flagLength;
|
||||||
bool flagName;
|
bool flagName;
|
||||||
|
bool flagGroupName;
|
||||||
|
|
||||||
void EvalAngle();
|
void EvalAngle();
|
||||||
void EvalRotationAngle();
|
void EvalRotationAngle();
|
||||||
|
@ -138,7 +146,7 @@ private:
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
inline bool DialogMove::IsValid() const
|
inline bool DialogMove::IsValid() const
|
||||||
{
|
{
|
||||||
return flagAngle && flagRotationAngle && flagLength && flagName;
|
return flagAngle && flagRotationAngle && flagLength && flagName && flagGroupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DIALOGMOVING_H
|
#endif // DIALOGMOVING_H
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>292</width>
|
<width>304</width>
|
||||||
<height>332</height>
|
<height>402</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -591,6 +591,41 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBoxVisibilityGroup">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Enable to create a visibility gropup from original objects</string>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Visibility Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelGroupName">
|
||||||
|
<property name="text">
|
||||||
|
<string>Name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEditVisibilityGroup">
|
||||||
|
<property name="text">
|
||||||
|
<string>Move</string>
|
||||||
|
</property>
|
||||||
|
<property name="clearButtonEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
|
@ -77,6 +77,7 @@ DialogRotation::DialogRotation(const VContainer *data, quint32 toolId, QWidget *
|
||||||
m_firstRelease(false),
|
m_firstRelease(false),
|
||||||
flagAngle(false),
|
flagAngle(false),
|
||||||
flagName(true),
|
flagName(true),
|
||||||
|
flagGroupName(true),
|
||||||
flagError(false)
|
flagError(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
@ -94,6 +95,7 @@ DialogRotation::DialogRotation(const VContainer *data, quint32 toolId, QWidget *
|
||||||
FillComboBoxPoints(ui->comboBoxOriginPoint);
|
FillComboBoxPoints(ui->comboBoxOriginPoint);
|
||||||
|
|
||||||
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogRotation::SuffixChanged);
|
connect(ui->lineEditSuffix, &QLineEdit::textChanged, this, &DialogRotation::SuffixChanged);
|
||||||
|
connect(ui->lineEditVisibilityGroup, &QLineEdit::textChanged, this, &DialogRotation::GroupNameChanged);
|
||||||
connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogRotation::FXAngle);
|
connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogRotation::FXAngle);
|
||||||
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, [this]()
|
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, [this]()
|
||||||
{
|
{
|
||||||
|
@ -170,6 +172,30 @@ QVector<quint32> DialogRotation::GetObjects() const
|
||||||
return ConvertToVector(objects);
|
return ConvertToVector(objects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogRotation::GetVisibilityGroupName() const
|
||||||
|
{
|
||||||
|
return ui->lineEditVisibilityGroup->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogRotation::SetVisibilityGroupName(const QString &name)
|
||||||
|
{
|
||||||
|
ui->lineEditVisibilityGroup->setText(name.isEmpty() ? tr("Rotation") : name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DialogRotation::HasLinkedVisibilityGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBoxVisibilityGroup->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogRotation::SetHasLinkedVisibilityGroup(bool linked)
|
||||||
|
{
|
||||||
|
ui->groupBoxVisibilityGroup->setChecked(linked);
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogRotation::ShowDialog(bool click)
|
void DialogRotation::ShowDialog(bool click)
|
||||||
{
|
{
|
||||||
|
@ -366,6 +392,27 @@ void DialogRotation::SuffixChanged()
|
||||||
CheckState();
|
CheckState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void DialogRotation::GroupNameChanged()
|
||||||
|
{
|
||||||
|
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
|
||||||
|
if (edit)
|
||||||
|
{
|
||||||
|
const QString name = edit->text();
|
||||||
|
if (name.isEmpty())
|
||||||
|
{
|
||||||
|
flagGroupName = false;
|
||||||
|
ChangeColor(ui->labelGroupName, errorColor);
|
||||||
|
CheckState();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
flagGroupName = true;
|
||||||
|
ChangeColor(ui->labelGroupName, OkColor(this));
|
||||||
|
}
|
||||||
|
CheckState();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void DialogRotation::ShowVisualization()
|
void DialogRotation::ShowVisualization()
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,6 +63,12 @@ public:
|
||||||
|
|
||||||
QVector<quint32> GetObjects() const;
|
QVector<quint32> GetObjects() const;
|
||||||
|
|
||||||
|
QString GetVisibilityGroupName() const;
|
||||||
|
void SetVisibilityGroupName(const QString &name);
|
||||||
|
|
||||||
|
bool HasLinkedVisibilityGroup() const;
|
||||||
|
void SetHasLinkedVisibilityGroup(bool linked);
|
||||||
|
|
||||||
virtual void ShowDialog(bool click) override;
|
virtual void ShowDialog(bool click) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -74,6 +80,7 @@ private slots:
|
||||||
void DeployAngleTextEdit();
|
void DeployAngleTextEdit();
|
||||||
void FXAngle();
|
void FXAngle();
|
||||||
void SuffixChanged();
|
void SuffixChanged();
|
||||||
|
void GroupNameChanged();
|
||||||
void EvalAngle();
|
void EvalAngle();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -111,13 +118,14 @@ private:
|
||||||
/** @brief flagAngle true if value of angle is correct */
|
/** @brief flagAngle true if value of angle is correct */
|
||||||
bool flagAngle;
|
bool flagAngle;
|
||||||
bool flagName;
|
bool flagName;
|
||||||
|
bool flagGroupName;
|
||||||
bool flagError;
|
bool flagError;
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
inline bool DialogRotation::IsValid() const
|
inline bool DialogRotation::IsValid() const
|
||||||
{
|
{
|
||||||
return flagAngle && flagName && flagError;
|
return flagAngle && flagName && flagError && flagGroupName;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DIALOGROTATION_H
|
#endif // DIALOGROTATION_H
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>285</width>
|
<width>392</width>
|
||||||
<height>189</height>
|
<height>252</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -222,6 +222,41 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBoxVisibilityGroup">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Enable to create a visibility gropup from original objects</string>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Visibility Group</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelGroupName">
|
||||||
|
<property name="text">
|
||||||
|
<string>Name:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineEditVisibilityGroup">
|
||||||
|
<property name="text">
|
||||||
|
<string>Rotation</string>
|
||||||
|
</property>
|
||||||
|
<property name="clearButtonEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
|
|
@ -74,6 +74,17 @@ void VToolFlippingByAxis::setDialog()
|
||||||
dialogTool->SetOriginPointId(m_originPointId);
|
dialogTool->SetOriginPointId(m_originPointId);
|
||||||
dialogTool->SetAxisType(m_axisType);
|
dialogTool->SetAxisType(m_axisType);
|
||||||
dialogTool->SetSuffix(suffix);
|
dialogTool->SetSuffix(suffix);
|
||||||
|
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(true);
|
||||||
|
dialogTool->SetVisibilityGroupName(doc->GetGroupName(group));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -89,6 +100,8 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(const QPointer<DialogTool> &dia
|
||||||
initData.axisType = dialogTool->GetAxisType();
|
initData.axisType = dialogTool->GetAxisType();
|
||||||
initData.suffix = dialogTool->GetSuffix();
|
initData.suffix = dialogTool->GetSuffix();
|
||||||
initData.source = dialogTool->GetObjects();
|
initData.source = dialogTool->GetObjects();
|
||||||
|
initData.hasLinkedVisibilityGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
initData.visibilityGroupName = dialogTool->GetVisibilityGroupName();
|
||||||
initData.scene = scene;
|
initData.scene = scene;
|
||||||
initData.doc = doc;
|
initData.doc = doc;
|
||||||
initData.data = data;
|
initData.data = data;
|
||||||
|
@ -123,6 +136,11 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(VToolFlippingByAxisInitData ini
|
||||||
|
|
||||||
if (initData.parse == Document::FullParse)
|
if (initData.parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->beginMacro(tr("Flipping by axis"));
|
||||||
|
}
|
||||||
|
|
||||||
VAbstractTool::AddRecord(initData.id, Tool::FlippingByAxis, initData.doc);
|
VAbstractTool::AddRecord(initData.id, Tool::FlippingByAxis, initData.doc);
|
||||||
VToolFlippingByAxis *tool = new VToolFlippingByAxis(initData);
|
VToolFlippingByAxis *tool = new VToolFlippingByAxis(initData);
|
||||||
initData.scene->addItem(tool);
|
initData.scene->addItem(tool);
|
||||||
|
@ -133,6 +151,13 @@ VToolFlippingByAxis *VToolFlippingByAxis::Create(VToolFlippingByAxisInitData ini
|
||||||
{
|
{
|
||||||
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
VAbstractOperation::CreateVisibilityGroup(initData);
|
||||||
|
qApp->getUndoStack()->endMacro();
|
||||||
|
}
|
||||||
|
|
||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -208,6 +233,10 @@ void VToolFlippingByAxis::SaveDialog(QDomElement &domElement, QList<quint32> &ol
|
||||||
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetOriginPointId()));
|
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetOriginPointId()));
|
||||||
doc->SetAttribute(domElement, AttrAxisType, QString().setNum(static_cast<int>(dialogTool->GetAxisType())));
|
doc->SetAttribute(domElement, AttrAxisType, QString().setNum(static_cast<int>(dialogTool->GetAxisType())));
|
||||||
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
||||||
|
|
||||||
|
// Save for later use.
|
||||||
|
hasLinkedGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
groupName = dialogTool->GetVisibilityGroupName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -74,6 +74,17 @@ void VToolFlippingByLine::setDialog()
|
||||||
dialogTool->SetFirstLinePointId(m_firstLinePointId);
|
dialogTool->SetFirstLinePointId(m_firstLinePointId);
|
||||||
dialogTool->SetSecondLinePointId(m_secondLinePointId);
|
dialogTool->SetSecondLinePointId(m_secondLinePointId);
|
||||||
dialogTool->SetSuffix(suffix);
|
dialogTool->SetSuffix(suffix);
|
||||||
|
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(true);
|
||||||
|
dialogTool->SetVisibilityGroupName(doc->GetGroupName(group));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -89,6 +100,8 @@ VToolFlippingByLine *VToolFlippingByLine::Create(const QPointer<DialogTool> &dia
|
||||||
initData.secondLinePointId = dialogTool->GetSecondLinePointId();
|
initData.secondLinePointId = dialogTool->GetSecondLinePointId();
|
||||||
initData.suffix = dialogTool->GetSuffix();
|
initData.suffix = dialogTool->GetSuffix();
|
||||||
initData.source = dialogTool->GetObjects();
|
initData.source = dialogTool->GetObjects();
|
||||||
|
initData.hasLinkedVisibilityGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
initData.visibilityGroupName = dialogTool->GetVisibilityGroupName();
|
||||||
initData.scene = scene;
|
initData.scene = scene;
|
||||||
initData.doc = doc;
|
initData.doc = doc;
|
||||||
initData.data = data;
|
initData.data = data;
|
||||||
|
@ -116,6 +129,11 @@ VToolFlippingByLine *VToolFlippingByLine::Create(VToolFlippingByLineInitData ini
|
||||||
|
|
||||||
if (initData.parse == Document::FullParse)
|
if (initData.parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->beginMacro(tr("flipping by line"));
|
||||||
|
}
|
||||||
|
|
||||||
VAbstractTool::AddRecord(initData.id, Tool::FlippingByLine, initData.doc);
|
VAbstractTool::AddRecord(initData.id, Tool::FlippingByLine, initData.doc);
|
||||||
VToolFlippingByLine *tool = new VToolFlippingByLine(initData);
|
VToolFlippingByLine *tool = new VToolFlippingByLine(initData);
|
||||||
initData.scene->addItem(tool);
|
initData.scene->addItem(tool);
|
||||||
|
@ -127,6 +145,13 @@ VToolFlippingByLine *VToolFlippingByLine::Create(VToolFlippingByLineInitData ini
|
||||||
{
|
{
|
||||||
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
VAbstractOperation::CreateVisibilityGroup(initData);
|
||||||
|
qApp->getUndoStack()->endMacro();
|
||||||
|
}
|
||||||
|
|
||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -195,6 +220,10 @@ void VToolFlippingByLine::SaveDialog(QDomElement &domElement, QList<quint32> &ol
|
||||||
doc->SetAttribute(domElement, AttrP1Line, QString().setNum(dialogTool->GetFirstLinePointId()));
|
doc->SetAttribute(domElement, AttrP1Line, QString().setNum(dialogTool->GetFirstLinePointId()));
|
||||||
doc->SetAttribute(domElement, AttrP2Line, QString().setNum(dialogTool->GetSecondLinePointId()));
|
doc->SetAttribute(domElement, AttrP2Line, QString().setNum(dialogTool->GetSecondLinePointId()));
|
||||||
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
||||||
|
|
||||||
|
// Save for later use.
|
||||||
|
hasLinkedGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
groupName = dialogTool->GetVisibilityGroupName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -29,12 +29,42 @@
|
||||||
#include "vabstractoperation.h"
|
#include "vabstractoperation.h"
|
||||||
#include "../../../undocommands/label/operationmovelabel.h"
|
#include "../../../undocommands/label/operationmovelabel.h"
|
||||||
#include "../../../undocommands/label/operationshowlabel.h"
|
#include "../../../undocommands/label/operationshowlabel.h"
|
||||||
|
#include "../../../undocommands/savetooloptions.h"
|
||||||
|
#include "../../../undocommands/undogroup.h"
|
||||||
#include "../vgeometry/vpointf.h"
|
#include "../vgeometry/vpointf.h"
|
||||||
|
|
||||||
const QString VAbstractOperation::TagItem = QStringLiteral("item");
|
const QString VAbstractOperation::TagItem = QStringLiteral("item");
|
||||||
const QString VAbstractOperation::TagSource = QStringLiteral("source");
|
const QString VAbstractOperation::TagSource = QStringLiteral("source");
|
||||||
const QString VAbstractOperation::TagDestination = QStringLiteral("destination");
|
const QString VAbstractOperation::TagDestination = QStringLiteral("destination");
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @brief VisibilityGroupDataFromSource
|
||||||
|
* @param initData
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
QMap<quint32, quint32> VisibilityGroupDataFromSource(const VContainer *data, const QVector<quint32> &source)
|
||||||
|
{
|
||||||
|
QMap<quint32, quint32> groupData;
|
||||||
|
|
||||||
|
for (auto &sId : source)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
groupData.insert(sId, data->GetGObject(sId)->getIdTool());
|
||||||
|
}
|
||||||
|
catch (const VExceptionBadId &)
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return groupData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VAbstractOperation::getTagName() const
|
QString VAbstractOperation::getTagName() const
|
||||||
{
|
{
|
||||||
|
@ -528,6 +558,66 @@ void VAbstractOperation::ChangeLabelVisibility(quint32 id, bool visible)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VAbstractOperation::ApplyToolOptions(const QList<quint32> &oldDependencies, const QList<quint32> &newDependencies,
|
||||||
|
const QDomElement &oldDomElement, const QDomElement &newDomElement)
|
||||||
|
{
|
||||||
|
bool updateToolOptions =
|
||||||
|
newDependencies != oldDependencies || not VDomDocument::Compare(newDomElement, oldDomElement);
|
||||||
|
bool updateVisibilityOptions = NeedUpdateVisibilityGroup();
|
||||||
|
|
||||||
|
if (updateToolOptions && updateVisibilityOptions)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->beginMacro(tr("operation options"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateToolOptions)
|
||||||
|
{
|
||||||
|
SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, oldDependencies,
|
||||||
|
newDependencies, doc, m_id);
|
||||||
|
connect(saveOptions, &SaveToolOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
||||||
|
qApp->getUndoStack()->push(saveOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateVisibilityOptions)
|
||||||
|
{
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
|
||||||
|
if (hasLinkedGroup)
|
||||||
|
{
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
RenameGroup *renameGroup = new RenameGroup(doc, group, groupName);
|
||||||
|
connect(renameGroup, &RenameGroup::UpdateGroups, doc, &VAbstractPattern::UpdateVisiblityGroups);
|
||||||
|
qApp->getUndoStack()->push(renameGroup);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VAbstractOperationInitData initData;
|
||||||
|
initData.id = m_id;
|
||||||
|
initData.hasLinkedVisibilityGroup = hasLinkedGroup;
|
||||||
|
initData.visibilityGroupName = groupName;
|
||||||
|
initData.data = &(VDataTool::data);
|
||||||
|
initData.doc = doc;
|
||||||
|
initData.source = source;
|
||||||
|
|
||||||
|
VAbstractOperation::CreateVisibilityGroup(initData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DelGroup *delGroup = new DelGroup(doc, group);
|
||||||
|
connect(delGroup, &DelGroup::UpdateGroups, doc, &VAbstractPattern::UpdateVisiblityGroups);
|
||||||
|
qApp->getUndoStack()->push(delGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateToolOptions && updateVisibilityOptions)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->endMacro();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractOperation::UpdateNamePosition(quint32 id, const QPointF &pos)
|
void VAbstractOperation::UpdateNamePosition(quint32 id, const QPointF &pos)
|
||||||
{
|
{
|
||||||
|
@ -641,6 +731,33 @@ void VAbstractOperation::AllowCurveSelecting(bool enabled, GOType type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool VAbstractOperation::NeedUpdateVisibilityGroup() const
|
||||||
|
{
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
|
||||||
|
if (hasLinkedGroup)
|
||||||
|
{
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
if (groupName != doc->GetGroupName(group))
|
||||||
|
{
|
||||||
|
return true; // rename group
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true; // create group
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return group != null_id; // remove group
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractOperation::InitOperatedObjects()
|
void VAbstractOperation::InitOperatedObjects()
|
||||||
{
|
{
|
||||||
|
@ -725,3 +842,24 @@ QString VAbstractOperation::ComplexCurveToolTip(quint32 itemId) const
|
||||||
.arg(UnitsToStr(qApp->patternUnit(), true), MakeToolTip());
|
.arg(UnitsToStr(qApp->patternUnit(), true), MakeToolTip());
|
||||||
return toolTip;
|
return toolTip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VAbstractOperation::CreateVisibilityGroup(const VAbstractOperationInitData &initData)
|
||||||
|
{
|
||||||
|
if (not initData.hasLinkedVisibilityGroup && not initData.visibilityGroupName.isEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QMap<quint32, quint32> groupData = VisibilityGroupDataFromSource(initData.data, initData.source);
|
||||||
|
vidtype groupId = initData.data->getNextId();
|
||||||
|
const QDomElement group = initData.doc->CreateGroup(groupId, initData.visibilityGroupName, groupData, initData.id);
|
||||||
|
if (not group.isNull())
|
||||||
|
{
|
||||||
|
AddGroup *addGroup = new AddGroup(group, initData.doc);
|
||||||
|
connect(addGroup, &AddGroup::UpdateGroups, initData.doc, &VAbstractPattern::UpdateVisiblityGroups);
|
||||||
|
qApp->getUndoStack()->push(addGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -53,15 +53,14 @@ struct DestinationItem
|
||||||
struct VAbstractOperationInitData : VAbstractToolInitData
|
struct VAbstractOperationInitData : VAbstractToolInitData
|
||||||
{
|
{
|
||||||
VAbstractOperationInitData()
|
VAbstractOperationInitData()
|
||||||
: VAbstractToolInitData(),
|
: VAbstractToolInitData()
|
||||||
suffix(),
|
|
||||||
source(),
|
|
||||||
destination()
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
QString suffix;
|
QString suffix{};
|
||||||
QVector<quint32> source;
|
QVector<quint32> source{};
|
||||||
QVector<DestinationItem> destination;
|
QVector<DestinationItem> destination{};
|
||||||
|
QString visibilityGroupName{};
|
||||||
|
bool hasLinkedVisibilityGroup{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME. I don't know how to use QGraphicsItem properly, so just took first available finished class.
|
// FIXME. I don't know how to use QGraphicsItem properly, so just took first available finished class.
|
||||||
|
@ -133,12 +132,17 @@ protected:
|
||||||
|
|
||||||
QMap<quint32, VAbstractSimple *> operatedObjects;
|
QMap<quint32, VAbstractSimple *> operatedObjects;
|
||||||
|
|
||||||
|
bool hasLinkedGroup{false};
|
||||||
|
QString groupName{};
|
||||||
|
|
||||||
VAbstractOperation(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &suffix,
|
VAbstractOperation(VAbstractPattern *doc, VContainer *data, quint32 id, const QString &suffix,
|
||||||
const QVector<quint32> &source, const QVector<DestinationItem> &destination,
|
const QVector<quint32> &source, const QVector<DestinationItem> &destination,
|
||||||
QGraphicsItem *parent = nullptr);
|
QGraphicsItem *parent = nullptr);
|
||||||
|
|
||||||
virtual void AddToFile() override;
|
virtual void AddToFile() override;
|
||||||
virtual void ChangeLabelVisibility(quint32 id, bool visible) override;
|
virtual void ChangeLabelVisibility(quint32 id, bool visible) override;
|
||||||
|
virtual void ApplyToolOptions(const QList<quint32> &oldDependencies, const QList<quint32> &newDependencies,
|
||||||
|
const QDomElement &oldDomElement, const QDomElement &newDomElement) override;
|
||||||
|
|
||||||
void UpdateNamePosition(quint32 id, const QPointF &pos);
|
void UpdateNamePosition(quint32 id, const QPointF &pos);
|
||||||
void SaveSourceDestination(QDomElement &tag);
|
void SaveSourceDestination(QDomElement &tag);
|
||||||
|
@ -155,11 +159,15 @@ protected:
|
||||||
|
|
||||||
QString ComplexPointToolTip(quint32 itemId) const;
|
QString ComplexPointToolTip(quint32 itemId) const;
|
||||||
QString ComplexCurveToolTip(quint32 itemId) const;
|
QString ComplexCurveToolTip(quint32 itemId) const;
|
||||||
|
|
||||||
|
static void CreateVisibilityGroup(const VAbstractOperationInitData & initData);
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(VAbstractOperation)
|
Q_DISABLE_COPY(VAbstractOperation)
|
||||||
|
|
||||||
void AllowCurveHover(bool enabled, GOType type);
|
void AllowCurveHover(bool enabled, GOType type);
|
||||||
void AllowCurveSelecting(bool enabled, GOType type);
|
void AllowCurveSelecting(bool enabled, GOType type);
|
||||||
|
|
||||||
|
bool NeedUpdateVisibilityGroup() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -128,6 +128,17 @@ void VToolMove::setDialog()
|
||||||
dialogTool->SetLength(formulaLength);
|
dialogTool->SetLength(formulaLength);
|
||||||
dialogTool->SetSuffix(suffix);
|
dialogTool->SetSuffix(suffix);
|
||||||
dialogTool->SetRotationOrigPointId(origPointId);
|
dialogTool->SetRotationOrigPointId(origPointId);
|
||||||
|
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(true);
|
||||||
|
dialogTool->SetVisibilityGroupName(doc->GetGroupName(group));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -145,6 +156,8 @@ VToolMove *VToolMove::Create(const QPointer<DialogTool> &dialog, VMainGraphicsSc
|
||||||
initData.rotationOrigin = dialogTool->GetRotationOrigPointId();
|
initData.rotationOrigin = dialogTool->GetRotationOrigPointId();
|
||||||
initData.suffix = dialogTool->GetSuffix();
|
initData.suffix = dialogTool->GetSuffix();
|
||||||
initData.source = dialogTool->GetObjects();
|
initData.source = dialogTool->GetObjects();
|
||||||
|
initData.hasLinkedVisibilityGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
initData.visibilityGroupName = dialogTool->GetVisibilityGroupName();
|
||||||
initData.scene = scene;
|
initData.scene = scene;
|
||||||
initData.doc = doc;
|
initData.doc = doc;
|
||||||
initData.data = data;
|
initData.data = data;
|
||||||
|
@ -309,6 +322,11 @@ QT_WARNING_POP
|
||||||
|
|
||||||
if (initData.parse == Document::FullParse)
|
if (initData.parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->beginMacro(tr("move"));
|
||||||
|
}
|
||||||
|
|
||||||
VAbstractTool::AddRecord(initData.id, Tool::Move, initData.doc);
|
VAbstractTool::AddRecord(initData.id, Tool::Move, initData.doc);
|
||||||
VToolMove *tool = new VToolMove(initData);
|
VToolMove *tool = new VToolMove(initData);
|
||||||
initData.scene->addItem(tool);
|
initData.scene->addItem(tool);
|
||||||
|
@ -324,6 +342,13 @@ QT_WARNING_POP
|
||||||
{
|
{
|
||||||
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
VAbstractOperation::CreateVisibilityGroup(initData);
|
||||||
|
qApp->getUndoStack()->endMacro();
|
||||||
|
}
|
||||||
|
|
||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -464,6 +489,10 @@ void VToolMove::SaveDialog(QDomElement &domElement, QList<quint32> &oldDependenc
|
||||||
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
||||||
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetRotationOrigPointId()));
|
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetRotationOrigPointId()));
|
||||||
doc->SetAttribute(domElement, AttrRotationAngle, dialogTool->GetRotationAngle());
|
doc->SetAttribute(domElement, AttrRotationAngle, dialogTool->GetRotationAngle());
|
||||||
|
|
||||||
|
// Save for later use.
|
||||||
|
hasLinkedGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
groupName = dialogTool->GetVisibilityGroupName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -98,6 +98,17 @@ void VToolRotation::setDialog()
|
||||||
dialogTool->SetOrigPointId(origPointId);
|
dialogTool->SetOrigPointId(origPointId);
|
||||||
dialogTool->SetAngle(formulaAngle);
|
dialogTool->SetAngle(formulaAngle);
|
||||||
dialogTool->SetSuffix(suffix);
|
dialogTool->SetSuffix(suffix);
|
||||||
|
|
||||||
|
vidtype group = doc->GroupLinkedToTool(m_id);
|
||||||
|
if (group != null_id)
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(true);
|
||||||
|
dialogTool->SetVisibilityGroupName(doc->GetGroupName(group));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dialogTool->SetHasLinkedVisibilityGroup(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -113,6 +124,8 @@ VToolRotation *VToolRotation::Create(const QPointer<DialogTool> &dialog, VMainGr
|
||||||
initData.angle = dialogTool->GetAngle();
|
initData.angle = dialogTool->GetAngle();
|
||||||
initData.suffix = dialogTool->GetSuffix();
|
initData.suffix = dialogTool->GetSuffix();
|
||||||
initData.source = dialogTool->GetObjects();
|
initData.source = dialogTool->GetObjects();
|
||||||
|
initData.hasLinkedVisibilityGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
initData.visibilityGroupName = dialogTool->GetVisibilityGroupName();
|
||||||
initData.scene = scene;
|
initData.scene = scene;
|
||||||
initData.doc = doc;
|
initData.doc = doc;
|
||||||
initData.data = data;
|
initData.data = data;
|
||||||
|
@ -251,6 +264,11 @@ QT_WARNING_POP
|
||||||
|
|
||||||
if (initData.parse == Document::FullParse)
|
if (initData.parse == Document::FullParse)
|
||||||
{
|
{
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
qApp->getUndoStack()->beginMacro(tr("rotate"));
|
||||||
|
}
|
||||||
|
|
||||||
VAbstractTool::AddRecord(initData.id, Tool::Rotation, initData.doc);
|
VAbstractTool::AddRecord(initData.id, Tool::Rotation, initData.doc);
|
||||||
VToolRotation *tool = new VToolRotation(initData);
|
VToolRotation *tool = new VToolRotation(initData);
|
||||||
initData.scene->addItem(tool);
|
initData.scene->addItem(tool);
|
||||||
|
@ -261,6 +279,13 @@ QT_WARNING_POP
|
||||||
{
|
{
|
||||||
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
initData.doc->IncrementReferens(initData.data->GetGObject(idObject)->getIdTool());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (initData.typeCreation == Source::FromGui && initData.hasLinkedVisibilityGroup)
|
||||||
|
{
|
||||||
|
VAbstractOperation::CreateVisibilityGroup(initData);
|
||||||
|
qApp->getUndoStack()->endMacro();
|
||||||
|
}
|
||||||
|
|
||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -344,6 +369,10 @@ void VToolRotation::SaveDialog(QDomElement &domElement, QList<quint32> &oldDepen
|
||||||
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetOrigPointId()));
|
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetOrigPointId()));
|
||||||
doc->SetAttribute(domElement, AttrAngle, dialogTool->GetAngle());
|
doc->SetAttribute(domElement, AttrAngle, dialogTool->GetAngle());
|
||||||
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
doc->SetAttribute(domElement, AttrSuffix, dialogTool->GetSuffix());
|
||||||
|
|
||||||
|
// Save for later use.
|
||||||
|
hasLinkedGroup = dialogTool->HasLinkedVisibilityGroup();
|
||||||
|
groupName = dialogTool->GetVisibilityGroupName();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -114,14 +114,7 @@ void VDrawTool::SaveDialogChange(const QString &undoText)
|
||||||
QList<quint32> oldDependencies;
|
QList<quint32> oldDependencies;
|
||||||
QList<quint32> newDependencies;
|
QList<quint32> newDependencies;
|
||||||
SaveDialog(newDomElement, oldDependencies, newDependencies);
|
SaveDialog(newDomElement, oldDependencies, newDependencies);
|
||||||
|
ApplyToolOptions(oldDependencies, newDependencies, oldDomElement, newDomElement);
|
||||||
if (newDependencies != oldDependencies || not VDomDocument::Compare(newDomElement, oldDomElement))
|
|
||||||
{
|
|
||||||
SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, oldDependencies,
|
|
||||||
newDependencies, doc, m_id);
|
|
||||||
connect(saveOptions, &SaveToolOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
|
||||||
qApp->getUndoStack()->push(saveOptions);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -129,6 +122,19 @@ void VDrawTool::SaveDialogChange(const QString &undoText)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VDrawTool::ApplyToolOptions(const QList<quint32> &oldDependencies, const QList<quint32> &newDependencies,
|
||||||
|
const QDomElement &oldDomElement, const QDomElement &newDomElement)
|
||||||
|
{
|
||||||
|
if (newDependencies != oldDependencies || not VDomDocument::Compare(newDomElement, oldDomElement))
|
||||||
|
{
|
||||||
|
SaveToolOptions *saveOptions = new SaveToolOptions(oldDomElement, newDomElement, oldDependencies,
|
||||||
|
newDependencies, doc, m_id);
|
||||||
|
connect(saveOptions, &SaveToolOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree);
|
||||||
|
qApp->getUndoStack()->push(saveOptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief AddToFile add tag with informations about tool into file.
|
* @brief AddToFile add tag with informations about tool into file.
|
||||||
|
|
|
@ -99,6 +99,8 @@ protected:
|
||||||
virtual void SaveDialog(QDomElement &domElement, QList<quint32> &oldDependencies,
|
virtual void SaveDialog(QDomElement &domElement, QList<quint32> &oldDependencies,
|
||||||
QList<quint32> &newDependencies)=0;
|
QList<quint32> &newDependencies)=0;
|
||||||
virtual void SaveDialogChange(const QString &undoText = QString()) final;
|
virtual void SaveDialogChange(const QString &undoText = QString()) final;
|
||||||
|
virtual void ApplyToolOptions(const QList<quint32> &oldDependencies, const QList<quint32> &newDependencies,
|
||||||
|
const QDomElement &oldDomElement, const QDomElement &newDomElement);
|
||||||
virtual void AddToFile() override;
|
virtual void AddToFile() override;
|
||||||
void SaveOption(QSharedPointer<VGObject> &obj);
|
void SaveOption(QSharedPointer<VGObject> &obj);
|
||||||
virtual void SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj);
|
virtual void SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj);
|
||||||
|
|
|
@ -117,6 +117,34 @@ void AddGroup::redo()
|
||||||
VMainGraphicsView::NewSceneRect(qApp->getCurrentScene(), qApp->getSceneView());
|
VMainGraphicsView::NewSceneRect(qApp->getCurrentScene(), qApp->getSceneView());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//RenameGroup
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
RenameGroup::RenameGroup(VAbstractPattern *doc, quint32 id, const QString &name, QUndoCommand *parent)
|
||||||
|
: VUndoCommand(QDomElement(), doc, parent),
|
||||||
|
newName(name)
|
||||||
|
{
|
||||||
|
setText(tr("rename group"));
|
||||||
|
nodeId = id;
|
||||||
|
oldName = doc->GetGroupName(nodeId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void RenameGroup::undo()
|
||||||
|
{
|
||||||
|
qCDebug(vUndo, "Undo.");
|
||||||
|
doc->SetGroupName(nodeId, oldName);
|
||||||
|
emit UpdateGroups();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void RenameGroup::redo()
|
||||||
|
{
|
||||||
|
qCDebug(vUndo, "Redo.");
|
||||||
|
|
||||||
|
doc->SetGroupName(nodeId, newName);
|
||||||
|
emit UpdateGroups();
|
||||||
|
}
|
||||||
|
|
||||||
//AddItemToGroup
|
//AddItemToGroup
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
AddItemToGroup::AddItemToGroup(const QDomElement &xml, VAbstractPattern *doc, quint32 groupId, QUndoCommand *parent)
|
AddItemToGroup::AddItemToGroup(const QDomElement &xml, VAbstractPattern *doc, quint32 groupId, QUndoCommand *parent)
|
||||||
|
|
|
@ -53,6 +53,22 @@ private:
|
||||||
const QString nameActivDraw;
|
const QString nameActivDraw;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class RenameGroup : public VUndoCommand
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
RenameGroup(VAbstractPattern *doc, quint32 id, const QString &name, QUndoCommand *parent = nullptr);
|
||||||
|
virtual ~RenameGroup()=default;
|
||||||
|
virtual void undo() override;
|
||||||
|
virtual void redo() override;
|
||||||
|
signals:
|
||||||
|
void UpdateGroups();
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY(RenameGroup)
|
||||||
|
QString newName;
|
||||||
|
QString oldName{};
|
||||||
|
};
|
||||||
|
|
||||||
class AddItemToGroup : public VUndoCommand
|
class AddItemToGroup : public VUndoCommand
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
Loading…
Reference in New Issue
Block a user