/************************************************************************ ** ** @file toolsdef.cpp ** @author Roman Telezhynskyi ** @date 6 11, 2020 ** ** @brief ** @copyright ** This source code is part of the Valentina project, a pattern making ** program, whose allow create and modeling patterns of clothing. ** Copyright (C) 2020 Valentina project ** All Rights Reserved. ** ** Valentina is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** Valentina is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Valentina. If not, see . ** *************************************************************************/ #include "toolsdef.h" #include #include #include #include #include #include #include #include #include #include #include "../qmuparser/qmudef.h" #include "../vgeometry/vgobject.h" #include "../vmisc/vabstractvalapplication.h" #include "../vpatterndb/vcontainer.h" #include "../vpropertyexplorer/checkablemessagebox.h" //--------------------------------------------------------------------------------------------------------------------- auto SourceToObjects(const QVector &source) -> QVector { QVector ids; ids.reserve(source.size()); for (const auto &s : source) { ids.append(s.id); } return ids; } //--------------------------------------------------------------------------------------------------------------------- auto SourceAliasValid(const SourceItem &item, const QSharedPointer &obj, const VContainer *data, const QString &originAlias) -> bool { SCASSERT(data != nullptr) QString alias; if (obj->getType() == GOType::Point) { alias = item.alias; } else { const QString oldAlias = obj->GetAliasSuffix(); obj->SetAliasSuffix(item.alias); alias = obj->GetAlias(); obj->SetAliasSuffix(oldAlias); } if (QRegularExpression const rx(NameRegExp()); not alias.isEmpty() && originAlias != alias && (not rx.match(alias).hasMatch() || not data->IsUnique(alias))) { return false; } return true; } //--------------------------------------------------------------------------------------------------------------------- auto OriginAlias(quint32 id, const QVector &source, const QSharedPointer &obj) -> QString { auto item = std::find_if(source.begin(), source.end(), [id](const SourceItem &sItem) { return sItem.id == id; }); if (item != source.end()) { if (obj->getType() == GOType::Point) { return item->alias; } const QString oldAlias = obj->GetAliasSuffix(); obj->SetAliasSuffix(item->alias); QString alias = obj->GetAlias(); obj->SetAliasSuffix(oldAlias); return alias; } return QString(); } //--------------------------------------------------------------------------------------------------------------------- auto OperationLineStylesPics(QColor backgroundColor, QColor textColor) -> QMap { QMap map = LineStylesPics(backgroundColor, textColor); map.insert(TypeLineDefault, QIcon()); return map; } //--------------------------------------------------------------------------------------------------------------------- auto ConfirmDeletion() -> int { if (not VAbstractApplication::VApp()->Settings()->GetConfirmItemDelete()) { return QMessageBox::Yes; } Utils::CheckableMessageBox msgBox(VAbstractValApplication::VApp()->getMainWindow()); msgBox.setWindowTitle(QObject::tr("Confirm deletion")); msgBox.setText(QObject::tr("Do you really want to delete?")); msgBox.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No); msgBox.setDefaultButton(QDialogButtonBox::No); msgBox.setIconPixmap(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion).pixmap(32, 32)); int const dialogResult = msgBox.exec(); if (dialogResult == QDialog::Accepted) { VAbstractApplication::VApp()->Settings()->SetConfirmItemDelete(not msgBox.isChecked()); } return dialogResult == QDialog::Accepted ? QMessageBox::Yes : QMessageBox::No; }