Improved loging. Base point's DeleteTool should ignore value "_referens".

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2015-11-03 17:11:35 +02:00
parent 31ee872a1d
commit a342948437
4 changed files with 40 additions and 16 deletions

View File

@ -166,25 +166,26 @@ void VToolBasePoint::decrementReferens()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VToolBasePoint::DeleteTool(bool ask) void VToolBasePoint::DeleteTool(bool ask)
{ {
if (_referens <= 1) qCDebug(vTool, "Deleting base point.");
qApp->getSceneView()->itemClicked(nullptr);
if (ask)
{ {
qApp->getSceneView()->itemClicked(nullptr); qCDebug(vTool, "Asking.");
if (ask) if (ConfirmDeletion() == QMessageBox::No)
{ {
if (ConfirmDeletion() == QMessageBox::No) qCDebug(vTool, "User said no.");
{ return;
return;
}
} }
DeletePatternPiece *deletePP = new DeletePatternPiece(doc, nameActivDraw);
connect(deletePP, &DeletePatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing);
qApp->getUndoStack()->push(deletePP);
// Throw exception, this will help prevent case when we forget to immediately quit function.
VExceptionToolWasDeleted e("Tool was used after deleting.");
throw e;
} }
qCDebug(vTool, "Begin deleting.");
DeletePatternPiece *deletePP = new DeletePatternPiece(doc, nameActivDraw);
connect(deletePP, &DeletePatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing);
qApp->getUndoStack()->push(deletePP);
// Throw exception, this will help prevent case when we forget to immediately quit function.
VExceptionToolWasDeleted e("Tool was used after deleting.");
throw e;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -291,26 +292,32 @@ void VToolBasePoint::ReadToolAttributes(const QDomElement &domElement)
*/ */
void VToolBasePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) void VToolBasePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event )
{ {
qCDebug(vTool, "Context menu base point");
#ifndef QT_NO_CURSOR #ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
qCDebug(vTool, "Restored overriden cursor");
#endif #endif
try try
{ {
if (doc->CountPP() > 1) if (doc->CountPP() > 1)
{ {
qCDebug(vTool, "PP count > 1");
ContextMenu<DialogSinglePoint>(this, event, RemoveOption::Enable, Referens::Ignore); ContextMenu<DialogSinglePoint>(this, event, RemoveOption::Enable, Referens::Ignore);
} }
else else
{ {
qCDebug(vTool, "PP count = 1");
ContextMenu<DialogSinglePoint>(this, event, RemoveOption::Disable); ContextMenu<DialogSinglePoint>(this, event, RemoveOption::Disable);
} }
} }
catch(const VExceptionToolWasDeleted &e) catch(const VExceptionToolWasDeleted &e)
{ {
qCDebug(vTool, "Tool was deleted. Immediately leave method.");
Q_UNUSED(e); Q_UNUSED(e);
return;//Leave this method immediately!!! return;//Leave this method immediately!!!
} }
qCDebug(vTool, "Context menu closed. Tool was not deleted.");
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View File

@ -32,7 +32,7 @@
#include "vtoolsinglepoint.h" #include "vtoolsinglepoint.h"
/** /**
* @brief The VToolBasePoint class tool for creation pattern base point. Obly base point can move. All object * @brief The VToolBasePoint class tool for creation pattern base point. Only base point can move. All object
* pattern peace depend on base point. * pattern peace depend on base point.
*/ */
class VToolBasePoint : public VToolSinglePoint class VToolBasePoint : public VToolSinglePoint

View File

@ -133,6 +133,7 @@ void VDrawTool::ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, c
SCASSERT(tool != nullptr); SCASSERT(tool != nullptr);
SCASSERT(event != nullptr); SCASSERT(event != nullptr);
qCDebug(vTool, "Creating tool context menu.");
QMenu menu; QMenu menu;
QAction *actionOption = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Options")); QAction *actionOption = menu.addAction(QIcon::fromTheme("preferences-other"), tr("Options"));
QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete")); QAction *actionRemove = menu.addAction(QIcon::fromTheme("edit-delete"), tr("Delete"));
@ -142,26 +143,31 @@ void VDrawTool::ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, c
{ {
if (_referens > 1) if (_referens > 1)
{ {
qCDebug(vTool, "Remove disabled. Tool has childern.");
actionRemove->setEnabled(false); actionRemove->setEnabled(false);
} }
else else
{ {
qCDebug(vTool, "Remove enabled. Tool has not childern.");
actionRemove->setEnabled(true); actionRemove->setEnabled(true);
} }
} }
else else
{ {
qCDebug(vTool, "Remove enabled. Ignore referens value.");
actionRemove->setEnabled(true); actionRemove->setEnabled(true);
} }
} }
else else
{ {
qCDebug(vTool, "Remove disabled.");
actionRemove->setEnabled(false); actionRemove->setEnabled(false);
} }
QAction *selectedAction = menu.exec(event->screenPos()); QAction *selectedAction = menu.exec(event->screenPos());
if (selectedAction == actionOption) if (selectedAction == actionOption)
{ {
qCDebug(vTool, "Show options.");
qApp->getSceneView()->itemClicked(nullptr); qApp->getSceneView()->itemClicked(nullptr);
dialog = new Dialog(getData(), id, qApp->getMainWindow()); dialog = new Dialog(getData(), id, qApp->getMainWindow());
dialog->setModal(true); dialog->setModal(true);
@ -175,6 +181,7 @@ void VDrawTool::ContextMenu(Tool *tool, QGraphicsSceneContextMenuEvent *event, c
} }
if (selectedAction == actionRemove) if (selectedAction == actionRemove)
{ {
qCDebug(vTool, "Deleting tool.");
DeleteTool(); // do not catch exception here DeleteTool(); // do not catch exception here
return; //Leave this method immediately after call!!! return; //Leave this method immediately after call!!!
} }

View File

@ -67,16 +67,22 @@ VAbstractTool::~VAbstractTool()
*/ */
void VAbstractTool::DeleteTool(bool ask) void VAbstractTool::DeleteTool(bool ask)
{ {
qCDebug(vTool, "Deleting abstract tool.");
if (_referens <= 1) if (_referens <= 1)
{ {
qCDebug(vTool, "No children.");
qApp->getSceneView()->itemClicked(nullptr); qApp->getSceneView()->itemClicked(nullptr);
if (ask) if (ask)
{ {
qCDebug(vTool, "Asking.");
if (ConfirmDeletion() == QMessageBox::No) if (ConfirmDeletion() == QMessageBox::No)
{ {
qCDebug(vTool, "User said no.");
return; return;
} }
} }
qCDebug(vTool, "Begin deleting.");
DelTool *delTool = new DelTool(doc, id); DelTool *delTool = new DelTool(doc, id);
connect(delTool, &DelTool::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); connect(delTool, &DelTool::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing);
qApp->getUndoStack()->push(delTool); qApp->getUndoStack()->push(delTool);
@ -85,6 +91,10 @@ void VAbstractTool::DeleteTool(bool ask)
VExceptionToolWasDeleted e("Tool was used after deleting."); VExceptionToolWasDeleted e("Tool was used after deleting.");
throw e; throw e;
} }
else
{
qCDebug(vTool, "Can't delete, tool has children.");
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------