Dialog seam allowance tool should show visualization only when user is creating

new piece.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2016-11-08 19:11:47 +02:00
parent fc035f6f67
commit f593d4ca5b
2 changed files with 37 additions and 23 deletions

View File

@ -54,8 +54,11 @@ DialogSeamAllowance::DialogSeamAllowance(const VContainer *data, const quint32 &
connect(ui->listWidget, &QListWidget::customContextMenuRequested, this, &DialogSeamAllowance::ShowContextMenu); connect(ui->listWidget, &QListWidget::customContextMenuRequested, this, &DialogSeamAllowance::ShowContextMenu);
connect(ui->listWidget->model(), &QAbstractItemModel::rowsMoved, this, &DialogSeamAllowance::ListChanged); connect(ui->listWidget->model(), &QAbstractItemModel::rowsMoved, this, &DialogSeamAllowance::ListChanged);
if (not applyAllowed)
{
vis = new VisToolPiece(data); vis = new VisToolPiece(data);
} }
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
DialogSeamAllowance::~DialogSeamAllowance() DialogSeamAllowance::~DialogSeamAllowance()
@ -129,6 +132,8 @@ void DialogSeamAllowance::ChosenObject(quint32 id, const SceneObject &type)
ValidObjects(MainPathIsValid()); ValidObjects(MainPathIsValid());
if (not applyAllowed)
{
auto visPath = qobject_cast<VisToolPiece *>(vis); auto visPath = qobject_cast<VisToolPiece *>(vis);
SCASSERT(visPath != nullptr); SCASSERT(visPath != nullptr);
const VPiece p = CreatePiece(); const VPiece p = CreatePiece();
@ -147,6 +152,7 @@ void DialogSeamAllowance::ChosenObject(quint32 id, const SceneObject &type)
} }
} }
} }
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogSeamAllowance::ShowDialog(bool click) void DialogSeamAllowance::ShowDialog(bool click)
@ -156,10 +162,13 @@ void DialogSeamAllowance::ShowDialog(bool click)
emit ToolTip(""); emit ToolTip("");
prepare = true; prepare = true;
if (not applyAllowed)
{
auto visPath = qobject_cast<VisToolPiece *>(vis); auto visPath = qobject_cast<VisToolPiece *>(vis);
SCASSERT(visPath != nullptr); SCASSERT(visPath != nullptr);
visPath->SetMode(Mode::Show); visPath->SetMode(Mode::Show);
visPath->RefreshGeometry(); visPath->RefreshGeometry();
}
// Fix issue #526. Dialog Detail is not on top after selection second object on Mac. // Fix issue #526. Dialog Detail is not on top after selection second object on Mac.
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
@ -230,12 +239,15 @@ void DialogSeamAllowance::ShowContextMenu(const QPoint &pos)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogSeamAllowance::ListChanged() void DialogSeamAllowance::ListChanged()
{
if (not applyAllowed)
{ {
auto visPath = qobject_cast<VisToolPiece *>(vis); auto visPath = qobject_cast<VisToolPiece *>(vis);
SCASSERT(visPath != nullptr); SCASSERT(visPath != nullptr);
visPath->SetPiece(CreatePiece()); visPath->SetPiece(CreatePiece());
visPath->RefreshGeometry(); visPath->RefreshGeometry();
} }
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPiece DialogSeamAllowance::CreatePiece() const VPiece DialogSeamAllowance::CreatePiece() const

View File

@ -400,7 +400,9 @@ void VToolSeamAllowance::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
QAction *selectedAction = menu.exec(event->screenPos()); QAction *selectedAction = menu.exec(event->screenPos());
if (selectedAction == actionOption) if (selectedAction == actionOption)
{ {
m_dialog = new DialogSeamAllowance(getData(), id, qApp->getMainWindow()); auto *dialog = new DialogSeamAllowance(getData(), id, qApp->getMainWindow());
dialog->EnableApply(true);
m_dialog = dialog;
m_dialog->setModal(true); m_dialog->setModal(true);
connect(m_dialog, &DialogTool::DialogClosed, this, &VToolSeamAllowance::FullUpdateFromGuiOk); connect(m_dialog, &DialogTool::DialogClosed, this, &VToolSeamAllowance::FullUpdateFromGuiOk);
SetDialog(); SetDialog();