Added submenu to quick access to piece node point angle type.
--HG-- branch : release
This commit is contained in:
parent
eabfd48b50
commit
2ce59a1ee6
|
@ -101,6 +101,7 @@
|
||||||
- [#803] Bug in FancyTabBar widget. Wrongly calculated widget width.
|
- [#803] Bug in FancyTabBar widget. Wrongly calculated widget width.
|
||||||
- [#805] Invalid regular expression for validation layout output filename mask.
|
- [#805] Invalid regular expression for validation layout output filename mask.
|
||||||
- [#823] SVG Export - seam and cutting line of one piece missing.
|
- [#823] SVG Export - seam and cutting line of one piece missing.
|
||||||
|
- Added submenu to quick access to piece node point angle type.
|
||||||
|
|
||||||
# Version 0.5.0 May 9, 2017
|
# Version 0.5.0 May 9, 2017
|
||||||
- [#581] User can now filter input lists by keyword in function wizard.
|
- [#581] User can now filter input lists by keyword in function wizard.
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
#include "../ifc/ifcdef.h"
|
#include "../ifc/ifcdef.h"
|
||||||
#include "../vmisc/vabstractapplication.h"
|
#include "../vmisc/vabstractapplication.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
|
#include "../vpatterndb/vpiecenode.h"
|
||||||
#include "../vwidgets/vmaingraphicsscene.h"
|
#include "../vwidgets/vmaingraphicsscene.h"
|
||||||
#include "../vwidgets/vmaingraphicsview.h"
|
#include "../vwidgets/vmaingraphicsview.h"
|
||||||
#include "../vabstracttool.h"
|
#include "../vabstracttool.h"
|
||||||
|
@ -282,14 +283,47 @@ void VNodePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
|
||||||
|
|
||||||
QAction *actionExclude = menu.addAction(tr("Exclude"));
|
QAction *actionExclude = menu.addAction(tr("Exclude"));
|
||||||
|
|
||||||
|
QMenu *angleTypeMenu = menu.addMenu(tr("Angle"));
|
||||||
|
PieceNodeAngle curType = PieceNodeAngle::ByLength;
|
||||||
|
|
||||||
|
const VPiece detail = VAbstractTool::data.GetPiece(piece->getId());
|
||||||
|
const int nodeIndex = detail.GetPath().indexOfNode(m_id);
|
||||||
|
if (nodeIndex != -1)
|
||||||
|
{
|
||||||
|
const VPieceNode &node = detail.GetPath().at(nodeIndex);
|
||||||
|
curType = node.GetAngleType();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
angleTypeMenu->setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto InitAngleAction = [angleTypeMenu, curType](const QString &name, PieceNodeAngle checkType)
|
||||||
|
{
|
||||||
|
QAction *action = angleTypeMenu->addAction(name);
|
||||||
|
action->setCheckable(true);
|
||||||
|
action->setChecked(curType == checkType);
|
||||||
|
return action;
|
||||||
|
};
|
||||||
|
|
||||||
|
QAction *actionByLength = InitAngleAction(tr("by length"), PieceNodeAngle::ByLength);
|
||||||
|
QAction *actionByPointsIntersection = InitAngleAction(tr("by points intersetions"),
|
||||||
|
PieceNodeAngle::ByPointsIntersection);
|
||||||
|
QAction *actionByFirstEdgeSymmetry = InitAngleAction(tr("by first edge symmetry"),
|
||||||
|
PieceNodeAngle::ByFirstEdgeSymmetry);
|
||||||
|
QAction *actionBySecondEdgeSymmetry = InitAngleAction(tr("by second edge symmetry"),
|
||||||
|
PieceNodeAngle::BySecondEdgeSymmetry);
|
||||||
|
QAction *actionByFirstEdgeRightAngle = InitAngleAction(tr("by first edge right angle"),
|
||||||
|
PieceNodeAngle::ByFirstEdgeRightAngle);
|
||||||
|
QAction *actionBySecondEdgeRightAngle = InitAngleAction(tr("by second edge right angle"),
|
||||||
|
PieceNodeAngle::BySecondEdgeRightAngle);
|
||||||
|
|
||||||
QAction *separatorAct = new QAction(this);
|
QAction *separatorAct = new QAction(this);
|
||||||
separatorAct->setSeparator(true);
|
separatorAct->setSeparator(true);
|
||||||
menu.addAction(separatorAct);
|
menu.addAction(separatorAct);
|
||||||
|
|
||||||
QAction *actionOption = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Options"));
|
QAction *actionOption = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Options"));
|
||||||
|
|
||||||
const VPiece detail = VAbstractTool::data.GetPiece(piece->getId());
|
|
||||||
|
|
||||||
QAction *inLayoutOption = menu.addAction(tr("In layout"));
|
QAction *inLayoutOption = menu.addAction(tr("In layout"));
|
||||||
inLayoutOption->setCheckable(true);
|
inLayoutOption->setCheckable(true);
|
||||||
inLayoutOption->setChecked(detail.IsInLayout());
|
inLayoutOption->setChecked(detail.IsInLayout());
|
||||||
|
@ -343,6 +377,30 @@ void VNodePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
|
||||||
{
|
{
|
||||||
emit ToggleExcludeState(m_id);
|
emit ToggleExcludeState(m_id);
|
||||||
}
|
}
|
||||||
|
else if (selectedAction == actionByLength)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::ByLength);
|
||||||
|
}
|
||||||
|
else if (selectedAction == actionByPointsIntersection)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::ByPointsIntersection);
|
||||||
|
}
|
||||||
|
else if (selectedAction == actionByFirstEdgeSymmetry)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::ByFirstEdgeSymmetry);
|
||||||
|
}
|
||||||
|
else if (selectedAction == actionBySecondEdgeSymmetry)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::BySecondEdgeSymmetry);
|
||||||
|
}
|
||||||
|
else if (selectedAction == actionByFirstEdgeRightAngle)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::ByFirstEdgeRightAngle);
|
||||||
|
}
|
||||||
|
else if (selectedAction == actionBySecondEdgeRightAngle)
|
||||||
|
{
|
||||||
|
emit ToggleAngleType(m_id, PieceNodeAngle::BySecondEdgeRightAngle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@ signals:
|
||||||
void ToggleForceFlipping(bool checked);
|
void ToggleForceFlipping(bool checked);
|
||||||
void Delete();
|
void Delete();
|
||||||
void ToggleExcludeState(quint32 id);
|
void ToggleExcludeState(quint32 id);
|
||||||
|
void ToggleAngleType(quint32 id, PieceNodeAngle type);
|
||||||
public slots:
|
public slots:
|
||||||
virtual void FullUpdateFromFile() override;
|
virtual void FullUpdateFromFile() override;
|
||||||
void NameChangePosition(const QPointF &pos);
|
void NameChangePosition(const QPointF &pos);
|
||||||
|
|
|
@ -1524,6 +1524,26 @@ void VToolSeamAllowance::ToggleExcludeState(quint32 id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VToolSeamAllowance::ToggleNodePointAngleType(quint32 id, PieceNodeAngle type)
|
||||||
|
{
|
||||||
|
const VPiece oldDet = VAbstractTool::data.GetPiece(m_id);
|
||||||
|
VPiece newDet = oldDet;
|
||||||
|
|
||||||
|
for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i)
|
||||||
|
{
|
||||||
|
VPieceNode node = oldDet.GetPath().at(i);
|
||||||
|
if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint)
|
||||||
|
{
|
||||||
|
node.SetAngleType(type);
|
||||||
|
newDet.GetPath()[i] = node;
|
||||||
|
|
||||||
|
qApp->getUndoStack()->push(new SavePieceOptions(oldDet, newDet, doc, m_id));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData& labelData, qreal &rotationAngle,
|
VPieceItem::MoveTypes VToolSeamAllowance::FindLabelGeometry(const VPatternLabelData& labelData, qreal &rotationAngle,
|
||||||
qreal &labelWidth, qreal &labelHeight, QPointF &pos)
|
qreal &labelWidth, qreal &labelHeight, QPointF &pos)
|
||||||
|
@ -1749,6 +1769,8 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc
|
||||||
connect(tool, &VNodePoint::Delete, parent, &VToolSeamAllowance::DeleteFromMenu, Qt::UniqueConnection);
|
connect(tool, &VNodePoint::Delete, parent, &VToolSeamAllowance::DeleteFromMenu, Qt::UniqueConnection);
|
||||||
connect(tool, &VNodePoint::ToggleExcludeState, parent, &VToolSeamAllowance::ToggleExcludeState,
|
connect(tool, &VNodePoint::ToggleExcludeState, parent, &VToolSeamAllowance::ToggleExcludeState,
|
||||||
Qt::UniqueConnection);
|
Qt::UniqueConnection);
|
||||||
|
connect(tool, &VNodePoint::ToggleAngleType, parent, &VToolSeamAllowance::ToggleNodePointAngleType,
|
||||||
|
Qt::UniqueConnection);
|
||||||
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
|
connect(tool, &VNodePoint::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem, Qt::UniqueConnection);
|
||||||
tool->setParentItem(parent);
|
tool->setParentItem(parent);
|
||||||
tool->SetParentType(ParentType::Item);
|
tool->SetParentType(ParentType::Item);
|
||||||
|
|
|
@ -166,6 +166,7 @@ private slots:
|
||||||
void ToggleForceFlipping(bool checked);
|
void ToggleForceFlipping(bool checked);
|
||||||
void DeleteFromMenu();
|
void DeleteFromMenu();
|
||||||
void ToggleExcludeState(quint32 id);
|
void ToggleExcludeState(quint32 id);
|
||||||
|
void ToggleNodePointAngleType(quint32 id, PieceNodeAngle type);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(VToolSeamAllowance)
|
Q_DISABLE_COPY(VToolSeamAllowance)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user