Refactoring. Move static functions to dialogtoolbox.h.
--HG-- branch : develop
This commit is contained in:
parent
1fe7223096
commit
000062b7b7
|
@ -31,6 +31,8 @@
|
||||||
#include "../vmisc/vabstractapplication.h"
|
#include "../vmisc/vabstractapplication.h"
|
||||||
#include "../vpatterndb/calculator.h"
|
#include "../vpatterndb/calculator.h"
|
||||||
#include "../vpatterndb/vcontainer.h"
|
#include "../vpatterndb/vcontainer.h"
|
||||||
|
#include "../vpatterndb/vpiecenode.h"
|
||||||
|
#include "../vgeometry/vpointf.h"
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
@ -43,12 +45,79 @@
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <qnumeric.h>
|
#include <qnumeric.h>
|
||||||
|
#include <QListWidget>
|
||||||
|
#include <QBuffer>
|
||||||
|
|
||||||
const QColor errorColor = Qt::red;
|
const QColor errorColor = Qt::red;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const int dialogMaxFormulaHeight = 80;
|
const int dialogMaxFormulaHeight = 80;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DoublePoint(const VPieceNode &firstNode, const VPieceNode &secondNode, const VContainer *data)
|
||||||
|
{
|
||||||
|
if (firstNode.GetTypeTool() == Tool::NodePoint && not (firstNode.GetId() == NULL_ID)
|
||||||
|
&& secondNode.GetTypeTool() == Tool::NodePoint && not (secondNode.GetId() == NULL_ID))
|
||||||
|
{
|
||||||
|
// don't ignore the same point twice
|
||||||
|
if (firstNode.GetId() == secondNode.GetId())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// But ignore the same coordinate if a user wants
|
||||||
|
if (not firstNode.IsCheckUniqueness() || not secondNode.IsCheckUniqueness())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const QSharedPointer<VPointF> firstPoint = data->GeometricObject<VPointF>(firstNode.GetId());
|
||||||
|
const QSharedPointer<VPointF> secondPoint = data->GeometricObject<VPointF>(secondNode.GetId());
|
||||||
|
|
||||||
|
return firstPoint->toQPointF() == secondPoint->toQPointF();
|
||||||
|
}
|
||||||
|
catch(const VExceptionBadId &)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DoubleCurve(const VPieceNode &firstNode, const VPieceNode &secondNode)
|
||||||
|
{
|
||||||
|
if (firstNode.GetTypeTool() != Tool::NodePoint && not (firstNode.GetId() == NULL_ID)
|
||||||
|
&& secondNode.GetTypeTool() != Tool::NodePoint && not (secondNode.GetId() == NULL_ID))
|
||||||
|
{
|
||||||
|
// don't ignore the same curve twice
|
||||||
|
if (firstNode.GetId() == secondNode.GetId())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VPieceNode RowNode(QListWidget *listWidget, int i)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
|
||||||
|
if (i < 0 || i >= listWidget->count())
|
||||||
|
{
|
||||||
|
return VPieceNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
const QListWidgetItem *rowItem = listWidget->item(i);
|
||||||
|
SCASSERT(rowItem != nullptr);
|
||||||
|
return qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -238,3 +307,158 @@ void CheckPointLabel(QDialog *dialog, QLineEdit* edit, QLabel *labelEditNamePoin
|
||||||
ChangeColor(labelEditNamePoint, OkColor(dialog));
|
ChangeColor(labelEditNamePoint, OkColor(dialog));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
int FindNotExcludedNodeDown(QListWidget *listWidget, int candidate)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
|
||||||
|
int index = -1;
|
||||||
|
if (candidate < 0 || candidate >= listWidget->count())
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = candidate;
|
||||||
|
VPieceNode rowNode;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
const QListWidgetItem *rowItem = listWidget->item(i);
|
||||||
|
SCASSERT(rowItem != nullptr);
|
||||||
|
rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
|
|
||||||
|
if (not rowNode.IsExcluded())
|
||||||
|
{
|
||||||
|
index = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
while (rowNode.IsExcluded() && i < listWidget->count());
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
int FindNotExcludedNodeUp(QListWidget *listWidget, int candidate)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
|
||||||
|
int index = -1;
|
||||||
|
if (candidate < 0 || candidate >= listWidget->count())
|
||||||
|
{
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = candidate;
|
||||||
|
VPieceNode rowNode;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
const QListWidgetItem *rowItem = listWidget->item(i);
|
||||||
|
SCASSERT(rowItem != nullptr);
|
||||||
|
rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
|
|
||||||
|
if (not rowNode.IsExcluded())
|
||||||
|
{
|
||||||
|
index = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
--i;
|
||||||
|
}
|
||||||
|
while (rowNode.IsExcluded() && i > -1);
|
||||||
|
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool FirstPointEqualLast(QListWidget *listWidget, const VContainer *data)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
if (listWidget->count() > 1)
|
||||||
|
{
|
||||||
|
const VPieceNode topNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, 0));
|
||||||
|
const VPieceNode bottomNode = RowNode(listWidget, FindNotExcludedNodeUp(listWidget, listWidget->count()-1));
|
||||||
|
|
||||||
|
return DoublePoint(topNode, bottomNode, data);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DoublePoints(QListWidget *listWidget, const VContainer *data)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
for (int i=0, sz = listWidget->count()-1; i<sz; ++i)
|
||||||
|
{
|
||||||
|
const int firstIndex = FindNotExcludedNodeDown(listWidget, i);
|
||||||
|
const VPieceNode firstNode = RowNode(listWidget, firstIndex);
|
||||||
|
const VPieceNode secondNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, firstIndex+1));
|
||||||
|
|
||||||
|
if (DoublePoint(firstNode, secondNode, data))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool DoubleCurves(QListWidget *listWidget)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
for (int i=0, sz = listWidget->count()-1; i<sz; ++i)
|
||||||
|
{
|
||||||
|
const int firstIndex = FindNotExcludedNodeDown(listWidget, i);
|
||||||
|
const VPieceNode firstNode = RowNode(listWidget, firstIndex);
|
||||||
|
const VPieceNode secondNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, firstIndex+1));
|
||||||
|
|
||||||
|
if (DoubleCurve(firstNode, secondNode))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool EachPointLabelIsUnique(QListWidget *listWidget)
|
||||||
|
{
|
||||||
|
SCASSERT(listWidget != nullptr);
|
||||||
|
QSet<quint32> pointLabels;
|
||||||
|
int countPoints = 0;
|
||||||
|
for (int i=0; i < listWidget->count(); ++i)
|
||||||
|
{
|
||||||
|
const QListWidgetItem *rowItem = listWidget->item(i);
|
||||||
|
SCASSERT(rowItem != nullptr);
|
||||||
|
const VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
||||||
|
if (rowNode.GetTypeTool() == Tool::NodePoint)
|
||||||
|
{
|
||||||
|
++countPoints;
|
||||||
|
pointLabels.insert(rowNode.GetId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return countPoints == pointLabels.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString DialogWarningIcon()
|
||||||
|
{
|
||||||
|
const QIcon icon = QIcon::fromTheme("dialog-warning",
|
||||||
|
QIcon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"));
|
||||||
|
|
||||||
|
const QPixmap pixmap = icon.pixmap(QSize(16, 16));
|
||||||
|
QByteArray byteArray;
|
||||||
|
QBuffer buffer(&byteArray);
|
||||||
|
pixmap.save(&buffer, "PNG");
|
||||||
|
return QStringLiteral("<img src=\"data:image/png;base64,") + byteArray.toBase64() + QStringLiteral("\"/> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QFont NodeFont(QFont font, bool nodeExcluded)
|
||||||
|
{
|
||||||
|
font.setPointSize(12);
|
||||||
|
font.setWeight(QFont::Bold);
|
||||||
|
font.setStrikeOut(nodeExcluded);
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
|
@ -44,6 +44,8 @@ class QWidget;
|
||||||
class QColor;
|
class QColor;
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
class VContainer;
|
class VContainer;
|
||||||
|
class QListWidget;
|
||||||
|
class VPieceNode;
|
||||||
|
|
||||||
constexpr int formulaTimerTimeout = 300;
|
constexpr int formulaTimerTimeout = 300;
|
||||||
|
|
||||||
|
@ -65,6 +67,7 @@ struct FormulaData
|
||||||
|
|
||||||
QT_WARNING_POP
|
QT_WARNING_POP
|
||||||
|
|
||||||
|
VPieceNode RowNode(QListWidget *listWidget, int i);
|
||||||
void MoveCursorToEnd(QPlainTextEdit *plainTextEdit);
|
void MoveCursorToEnd(QPlainTextEdit *plainTextEdit);
|
||||||
void DeployFormula(QDialog *dialog, QPlainTextEdit *formula, QPushButton *buttonGrowLength, int formulaBaseHeight);
|
void DeployFormula(QDialog *dialog, QPlainTextEdit *formula, QPushButton *buttonGrowLength, int formulaBaseHeight);
|
||||||
bool FilterObject(QObject *object, QEvent *event);
|
bool FilterObject(QObject *object, QEvent *event);
|
||||||
|
@ -73,5 +76,13 @@ void ChangeColor(QWidget *widget, const QColor &color);
|
||||||
QColor OkColor(QWidget *widget);
|
QColor OkColor(QWidget *widget);
|
||||||
void CheckPointLabel(QDialog *dialog, QLineEdit* edit, QLabel *labelEditNamePoint, const QString &pointName,
|
void CheckPointLabel(QDialog *dialog, QLineEdit* edit, QLabel *labelEditNamePoint, const QString &pointName,
|
||||||
const VContainer *data, bool &flag);
|
const VContainer *data, bool &flag);
|
||||||
|
int FindNotExcludedNodeDown(QListWidget *listWidget, int candidate);
|
||||||
|
int FindNotExcludedNodeUp(QListWidget *listWidget, int candidate);
|
||||||
|
bool FirstPointEqualLast(QListWidget *listWidget, const VContainer *data);
|
||||||
|
bool DoublePoints(QListWidget *listWidget, const VContainer *data);
|
||||||
|
bool DoubleCurves(QListWidget *listWidget);
|
||||||
|
bool EachPointLabelIsUnique(QListWidget *listWidget);
|
||||||
|
QString DialogWarningIcon();
|
||||||
|
QFont NodeFont(QFont font, bool nodeExcluded = false);
|
||||||
|
|
||||||
#endif // DIALOGTOOLBOX_H
|
#endif // DIALOGTOOLBOX_H
|
||||||
|
|
|
@ -77,74 +77,6 @@ template <class T> class QSharedPointer;
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vDialog, "v.dialog")
|
Q_LOGGING_CATEGORY(vDialog, "v.dialog")
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
VPieceNode RowNode(QListWidget *listWidget, int i)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
|
|
||||||
if (i < 0 || i >= listWidget->count())
|
|
||||||
{
|
|
||||||
return VPieceNode();
|
|
||||||
}
|
|
||||||
|
|
||||||
const QListWidgetItem *rowItem = listWidget->item(i);
|
|
||||||
SCASSERT(rowItem != nullptr);
|
|
||||||
return qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DoublePoint(const VPieceNode &firstNode, const VPieceNode &secondNode, const VContainer *data)
|
|
||||||
{
|
|
||||||
if (firstNode.GetTypeTool() == Tool::NodePoint && not (firstNode.GetId() == NULL_ID)
|
|
||||||
&& secondNode.GetTypeTool() == Tool::NodePoint && not (secondNode.GetId() == NULL_ID))
|
|
||||||
{
|
|
||||||
// don't ignore the same point twice
|
|
||||||
if (firstNode.GetId() == secondNode.GetId())
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// But ignore the same coordinate if a user wants
|
|
||||||
if (not firstNode.IsCheckUniqueness() || not secondNode.IsCheckUniqueness())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const QSharedPointer<VPointF> firstPoint = data->GeometricObject<VPointF>(firstNode.GetId());
|
|
||||||
const QSharedPointer<VPointF> secondPoint = data->GeometricObject<VPointF>(secondNode.GetId());
|
|
||||||
|
|
||||||
return firstPoint->toQPointF() == secondPoint->toQPointF();
|
|
||||||
}
|
|
||||||
catch(const VExceptionBadId &)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DoubleCurve(const VPieceNode &firstNode, const VPieceNode &secondNode)
|
|
||||||
{
|
|
||||||
if (firstNode.GetTypeTool() != Tool::NodePoint && not (firstNode.GetId() == NULL_ID)
|
|
||||||
&& secondNode.GetTypeTool() != Tool::NodePoint && not (secondNode.GetId() == NULL_ID))
|
|
||||||
{
|
|
||||||
// don't ignore the same curve twice
|
|
||||||
if (firstNode.GetId() == secondNode.GetId())
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief DialogTool create dialog
|
* @brief DialogTool create dialog
|
||||||
|
@ -461,162 +393,6 @@ quint32 DialogTool::DNumber(const QString &baseName) const
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
int DialogTool::FindNotExcludedNodeDown(QListWidget *listWidget, int candidate)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
|
|
||||||
int index = -1;
|
|
||||||
if (candidate < 0 || candidate >= listWidget->count())
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
int i = candidate;
|
|
||||||
VPieceNode rowNode;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
const QListWidgetItem *rowItem = listWidget->item(i);
|
|
||||||
SCASSERT(rowItem != nullptr);
|
|
||||||
rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
|
||||||
|
|
||||||
if (not rowNode.IsExcluded())
|
|
||||||
{
|
|
||||||
index = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
while (rowNode.IsExcluded() && i < listWidget->count());
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
int DialogTool::FindNotExcludedNodeUp(QListWidget *listWidget, int candidate)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
|
|
||||||
int index = -1;
|
|
||||||
if (candidate < 0 || candidate >= listWidget->count())
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
int i = candidate;
|
|
||||||
VPieceNode rowNode;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
const QListWidgetItem *rowItem = listWidget->item(i);
|
|
||||||
SCASSERT(rowItem != nullptr);
|
|
||||||
rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
|
||||||
|
|
||||||
if (not rowNode.IsExcluded())
|
|
||||||
{
|
|
||||||
index = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
while (rowNode.IsExcluded() && i > -1);
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DialogTool::FirstPointEqualLast(QListWidget *listWidget, const VContainer *data)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
if (listWidget->count() > 1)
|
|
||||||
{
|
|
||||||
const VPieceNode topNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, 0));
|
|
||||||
const VPieceNode bottomNode = RowNode(listWidget, FindNotExcludedNodeUp(listWidget, listWidget->count()-1));
|
|
||||||
|
|
||||||
return DoublePoint(topNode, bottomNode, data);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DialogTool::DoublePoints(QListWidget *listWidget, const VContainer *data)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
for (int i=0, sz = listWidget->count()-1; i<sz; ++i)
|
|
||||||
{
|
|
||||||
const int firstIndex = FindNotExcludedNodeDown(listWidget, i);
|
|
||||||
const VPieceNode firstNode = RowNode(listWidget, firstIndex);
|
|
||||||
const VPieceNode secondNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, firstIndex+1));
|
|
||||||
|
|
||||||
if (DoublePoint(firstNode, secondNode, data))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DialogTool::DoubleCurves(QListWidget *listWidget)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
for (int i=0, sz = listWidget->count()-1; i<sz; ++i)
|
|
||||||
{
|
|
||||||
const int firstIndex = FindNotExcludedNodeDown(listWidget, i);
|
|
||||||
const VPieceNode firstNode = RowNode(listWidget, firstIndex);
|
|
||||||
const VPieceNode secondNode = RowNode(listWidget, FindNotExcludedNodeDown(listWidget, firstIndex+1));
|
|
||||||
|
|
||||||
if (DoubleCurve(firstNode, secondNode))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool DialogTool::EachPointLabelIsUnique(QListWidget *listWidget)
|
|
||||||
{
|
|
||||||
SCASSERT(listWidget != nullptr);
|
|
||||||
QSet<quint32> pointLabels;
|
|
||||||
int countPoints = 0;
|
|
||||||
for (int i=0; i < listWidget->count(); ++i)
|
|
||||||
{
|
|
||||||
const QListWidgetItem *rowItem = listWidget->item(i);
|
|
||||||
SCASSERT(rowItem != nullptr);
|
|
||||||
const VPieceNode rowNode = qvariant_cast<VPieceNode>(rowItem->data(Qt::UserRole));
|
|
||||||
if (rowNode.GetTypeTool() == Tool::NodePoint)
|
|
||||||
{
|
|
||||||
++countPoints;
|
|
||||||
pointLabels.insert(rowNode.GetId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return countPoints == pointLabels.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
QString DialogTool::DialogWarningIcon()
|
|
||||||
{
|
|
||||||
const QIcon icon = QIcon::fromTheme("dialog-warning",
|
|
||||||
QIcon(":/icons/win.icon.theme/16x16/status/dialog-warning.png"));
|
|
||||||
|
|
||||||
const QPixmap pixmap = icon.pixmap(QSize(16, 16));
|
|
||||||
QByteArray byteArray;
|
|
||||||
QBuffer buffer(&byteArray);
|
|
||||||
pixmap.save(&buffer, "PNG");
|
|
||||||
const QString url = QString("<img src=\"data:image/png;base64,") + byteArray.toBase64() + QLatin1String("\"/> ");
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
QFont DialogTool::NodeFont(QFont font, bool nodeExcluded)
|
|
||||||
{
|
|
||||||
font.setPointSize(12);
|
|
||||||
font.setWeight(QFont::Bold);
|
|
||||||
font.setStrikeOut(nodeExcluded);
|
|
||||||
return font;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString DialogTool::GetNodeName(const VPieceNode &node, bool showDetails) const
|
QString DialogTool::GetNodeName(const VPieceNode &node, bool showDetails) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -209,16 +209,6 @@ protected:
|
||||||
*/
|
*/
|
||||||
virtual void SaveData() {}
|
virtual void SaveData() {}
|
||||||
quint32 DNumber(const QString &baseName) const;
|
quint32 DNumber(const QString &baseName) const;
|
||||||
|
|
||||||
static int FindNotExcludedNodeDown(QListWidget *listWidget, int candidate);
|
|
||||||
static int FindNotExcludedNodeUp(QListWidget *listWidget, int candidate);
|
|
||||||
static bool FirstPointEqualLast(QListWidget *listWidget, const VContainer *data);
|
|
||||||
static bool DoublePoints(QListWidget *listWidget, const VContainer *data);
|
|
||||||
static bool DoubleCurves(QListWidget *listWidget);
|
|
||||||
static bool EachPointLabelIsUnique(QListWidget *listWidget);
|
|
||||||
static QString DialogWarningIcon();
|
|
||||||
static QFont NodeFont(QFont font, bool nodeExcluded = false);
|
|
||||||
|
|
||||||
QString GetNodeName(const VPieceNode &node, bool showDetails = false) const;
|
QString GetNodeName(const VPieceNode &node, bool showDetails = false) const;
|
||||||
void NewNodeItem(QListWidget *listWidget, const VPieceNode &node, bool showPassmark = true);
|
void NewNodeItem(QListWidget *listWidget, const VPieceNode &node, bool showPassmark = true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user