From 0f5725b34ae13c030eafe963201cd1a9c6e841fb Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 30 Jun 2022 20:31:55 +0200 Subject: [PATCH] modernize C++: replace boost::function with std::function --- src/App/PropertyExpressionEngine.h | 4 +-- src/Gui/ActionFunction.cpp | 34 +++++++++---------- src/Gui/ActionFunction.h | 21 ++++++------ src/Gui/TaskView/TaskView.cpp | 2 +- src/Gui/ViewProvider.cpp | 2 +- src/Gui/ViewProviderDocumentObject.cpp | 2 +- src/Gui/ViewProviderPart.cpp | 2 +- src/Gui/ViewProviderTextDocument.cpp | 2 +- src/Mod/Fem/Gui/ViewProviderAnalysis.cpp | 2 +- src/Mod/Part/Gui/TaskAttacher.h | 6 ++-- src/Mod/Part/Gui/TaskCheckGeometry.h | 3 +- .../Part/Gui/ViewProviderAttachExtension.cpp | 2 +- src/Mod/Part/Gui/ViewProviderPrimitive.cpp | 2 +- src/Mod/Part/Gui/ViewProviderSpline.cpp | 4 +-- src/Mod/PartDesign/Gui/Command.cpp | 4 +-- src/Mod/PartDesign/Gui/TaskFeaturePick.cpp | 6 ++-- src/Mod/PartDesign/Gui/TaskFeaturePick.h | 13 +++---- src/Mod/PartDesign/Gui/ViewProviderBody.cpp | 2 +- src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp | 2 +- .../TechDraw/Gui/ViewProviderDimension.cpp | 2 +- 20 files changed, 60 insertions(+), 57 deletions(-) diff --git a/src/App/PropertyExpressionEngine.h b/src/App/PropertyExpressionEngine.h index a3e95b6a5c..2c8ee09b24 100644 --- a/src/App/PropertyExpressionEngine.h +++ b/src/App/PropertyExpressionEngine.h @@ -23,8 +23,8 @@ #ifndef EXPRESSIONENGINE_H #define EXPRESSIONENGINE_H +#include #include -#include #include #include #include @@ -77,7 +77,7 @@ public: virtual Property *CopyOnLinkReplace(const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const override; - typedef boost::function expr)> ValidatorFunc; + typedef std::function expr)> ValidatorFunc; /** * @brief The ExpressionInfo struct encapsulates an expression. diff --git a/src/Gui/ActionFunction.cpp b/src/Gui/ActionFunction.cpp index dc3dbb147b..d64dc0aa71 100644 --- a/src/Gui/ActionFunction.cpp +++ b/src/Gui/ActionFunction.cpp @@ -38,9 +38,9 @@ namespace Gui { class ActionFunctionPrivate { public: - QMap > triggerMap; - QMap > toggleMap; - QMap > hoverMap; + QMap > triggerMap; + QMap > toggleMap; + QMap > hoverMap; }; } @@ -53,7 +53,7 @@ ActionFunction::~ActionFunction() { } -void ActionFunction::trigger(QAction* action, boost::function func) +void ActionFunction::trigger(QAction* action, std::function func) { Q_D(ActionFunction); @@ -66,19 +66,19 @@ void ActionFunction::triggered() Q_D(ActionFunction); QAction* a = qobject_cast(sender()); - QMap >::iterator it = d->triggerMap.find(a); + QMap >::iterator it = d->triggerMap.find(a); if (it != d->triggerMap.end()) { // invoke the class function here it.value()(); } } -void ActionFunction::toggle(QAction* action, boost::function func) +void ActionFunction::toggle(QAction* action, std::function func) { Q_D(ActionFunction); d->toggleMap[action] = func; - connect(action, SIGNAL(toggled(bool)), this, SLOT(toggled(bool))); + connect(action, &QAction::toggled, this, &ActionFunction::toggled); } void ActionFunction::toggled(bool on) @@ -86,19 +86,19 @@ void ActionFunction::toggled(bool on) Q_D(ActionFunction); QAction* a = qobject_cast(sender()); - QMap >::iterator it = d->toggleMap.find(a); + QMap >::iterator it = d->toggleMap.find(a); if (it != d->toggleMap.end()) { // invoke the class function here it.value()(on); } } -void ActionFunction::hover(QAction* action, boost::function func) +void ActionFunction::hover(QAction* action, std::function func) { Q_D(ActionFunction); d->hoverMap[action] = func; - connect(action, SIGNAL(hovered()), this, SLOT(hovered())); + connect(action, &QAction::hovered, this, &ActionFunction::hovered); } void ActionFunction::hovered() @@ -106,7 +106,7 @@ void ActionFunction::hovered() Q_D(ActionFunction); QAction* a = qobject_cast(sender()); - QMap >::iterator it = d->hoverMap.find(a); + QMap >::iterator it = d->hoverMap.find(a); if (it != d->hoverMap.end()) { // invoke the class function here it.value()(); @@ -119,9 +119,9 @@ namespace Gui { class TimerFunctionPrivate { public: - boost::function timeoutFunc; - boost::function timeoutFuncQObject; - boost::function timeoutFuncQVariant; + std::function timeoutFunc; + std::function timeoutFuncQObject; + std::function timeoutFuncQVariant; bool autoDelete; QPointer argQObject; QVariant argQVariant; @@ -138,20 +138,20 @@ TimerFunction::~TimerFunction() { } -void TimerFunction::setFunction(boost::function func) +void TimerFunction::setFunction(std::function func) { Q_D(TimerFunction); d->timeoutFunc = func; } -void TimerFunction::setFunction(boost::function func, QObject* args) +void TimerFunction::setFunction(std::function func, QObject* args) { Q_D(TimerFunction); d->timeoutFuncQObject = func; d->argQObject = args; } -void TimerFunction::setFunction(boost::function func, QVariant args) +void TimerFunction::setFunction(std::function func, QVariant args) { Q_D(TimerFunction); d->timeoutFuncQVariant = func; diff --git a/src/Gui/ActionFunction.h b/src/Gui/ActionFunction.h index 29adb0c4eb..d015451258 100644 --- a/src/Gui/ActionFunction.h +++ b/src/Gui/ActionFunction.h @@ -26,7 +26,8 @@ #include #include -#include +#include +#include class QAction; @@ -46,13 +47,13 @@ class ActionFunctionPrivate; Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* a1 = menu->addAction(QObject::tr("Menu item 1...")); - func->triggered(a1, boost::bind(&MyViewProvider::doItem1, this)); + func->triggered(a1, std::bind(&MyViewProvider::doItem1, this)); QAction* a2 = menu->addAction(QObject::tr("Menu item 2...")); - func->triggered(a2, boost::bind(&MyViewProvider::doItem2, this)); + func->triggered(a2, std::bind(&MyViewProvider::doItem2, this)); QAction* a3 = menu->addAction(QObject::tr("Menu item 3...")); - func->triggered(a3, boost::bind(&MyViewProvider::doItem3, this)); + func->triggered(a3, std::bind(&MyViewProvider::doItem3, this)); } \endcode @@ -72,9 +73,9 @@ public: /*! Connects the QAction's triggered() signal with the function \a func */ - void trigger(QAction* a, boost::function func); - void toggle(QAction* a, boost::function func); - void hover(QAction* a, boost::function func); + void trigger(QAction* a, std::function func); + void toggle(QAction* a, std::function func); + void hover(QAction* a, std::function func); private Q_SLOTS: void triggered(); @@ -98,9 +99,9 @@ public: TimerFunction(QObject* = nullptr); virtual ~TimerFunction(); - void setFunction(boost::function func); - void setFunction(boost::function func, QObject* args); - void setFunction(boost::function func, QVariant args); + void setFunction(std::function func); + void setFunction(std::function func, QObject* args); + void setFunction(std::function func, QVariant args); void setAutoDelete(bool); private Q_SLOTS: diff --git a/src/Gui/TaskView/TaskView.cpp b/src/Gui/TaskView/TaskView.cpp index 1d2b1c803e..1cd46d7c47 100644 --- a/src/Gui/TaskView/TaskView.cpp +++ b/src/Gui/TaskView/TaskView.cpp @@ -403,7 +403,7 @@ void TaskView::keyPressEvent(QKeyEvent* ke) func->setAutoDelete(true); Gui::Document* doc = Gui::Application::Instance->getDocument(ActiveDialog->getDocumentName().c_str()); if (doc) { - func->setFunction(boost::bind(&Document::resetEdit, doc)); + func->setFunction(std::bind(&Document::resetEdit, doc)); QTimer::singleShot(0, func, SLOT(timeout())); } } diff --git a/src/Gui/ViewProvider.cpp b/src/Gui/ViewProvider.cpp index c4a4251ab7..2b651d96b4 100644 --- a/src/Gui/ViewProvider.cpp +++ b/src/Gui/ViewProvider.cpp @@ -233,7 +233,7 @@ void ViewProvider::eventCallback(void * ud, SoEventCallback * node) Gui::TimerFunction* func = new Gui::TimerFunction(); func->setAutoDelete(true); - func->setFunction(boost::bind(&Document::resetEdit, doc)); + func->setFunction(std::bind(&Document::resetEdit, doc)); QTimer::singleShot(0, func, SLOT(timeout())); } } diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index d9f3ab59f0..3886b2de48 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -272,7 +272,7 @@ void ViewProviderDocumentObject::addDefaultAction(QMenu* menu, const QString& te QAction* act = menu->addAction(text); act->setData(QVariant((int)ViewProvider::Default)); Gui::ActionFunction* func = new Gui::ActionFunction(menu); - func->trigger(act, boost::bind(&ViewProviderDocumentObject::startDefaultEditMode, this)); + func->trigger(act, std::bind(&ViewProviderDocumentObject::startDefaultEditMode, this)); } void ViewProviderDocumentObject::setModeSwitch() { diff --git a/src/Gui/ViewProviderPart.cpp b/src/Gui/ViewProviderPart.cpp index fc4917d5c6..ad8a9c97db 100644 --- a/src/Gui/ViewProviderPart.cpp +++ b/src/Gui/ViewProviderPart.cpp @@ -71,7 +71,7 @@ void ViewProviderPart::setupContextMenu(QMenu* menu, QObject* receiver, const ch { Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Toggle active part")); - func->trigger(act, boost::bind(&ViewProviderPart::doubleClicked, this)); + func->trigger(act, std::bind(&ViewProviderPart::doubleClicked, this)); ViewProviderDragger::setupContextMenu(menu, receiver, member); } diff --git a/src/Gui/ViewProviderTextDocument.cpp b/src/Gui/ViewProviderTextDocument.cpp index 46d454f9ae..4e0a517379 100644 --- a/src/Gui/ViewProviderTextDocument.cpp +++ b/src/Gui/ViewProviderTextDocument.cpp @@ -74,7 +74,7 @@ void ViewProviderTextDocument::setupContextMenu(QMenu* menu, QObject* receiver, { Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit text")); - func->trigger(act, boost::bind(&ViewProviderTextDocument::doubleClicked, this)); + func->trigger(act, std::bind(&ViewProviderTextDocument::doubleClicked, this)); ViewProviderDocumentObject::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp index cbc179ddec..5155235102 100644 --- a/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp +++ b/src/Mod/Fem/Gui/ViewProviderAnalysis.cpp @@ -103,7 +103,7 @@ void ViewProviderFemAnalysis::setupContextMenu(QMenu* menu, QObject* , const cha { Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(tr("Activate analysis")); - func->trigger(act, boost::bind(&ViewProviderFemAnalysis::doubleClicked, this)); + func->trigger(act, std::bind(&ViewProviderFemAnalysis::doubleClicked, this)); } bool ViewProviderFemAnalysis::setEdit(int ModNum) diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index 0f439b1a30..a92f708777 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -30,7 +30,7 @@ #include #include #include -#include +#include class Ui_TaskAttacher; @@ -53,8 +53,8 @@ class PartGuiExport TaskAttacher : public Gui::TaskView::TaskBox, public Gui::Se Q_OBJECT public: - typedef boost::function VisibilityFunction; + typedef std::function VisibilityFunction; TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidget *parent = nullptr, QString picture = QString(), diff --git a/src/Mod/Part/Gui/TaskCheckGeometry.h b/src/Mod/Part/Gui/TaskCheckGeometry.h index 8df262de4f..841510aec8 100644 --- a/src/Mod/Part/Gui/TaskCheckGeometry.h +++ b/src/Mod/Part/Gui/TaskCheckGeometry.h @@ -23,6 +23,7 @@ #ifndef TASKCHECKGEOMETRY_H #define TASKCHECKGEOMETRY_H +#include #include #include #include @@ -73,7 +74,7 @@ void goSetupResultInvalidCurveSurface(ResultEntry *entry); void goSetupResultInvalidSameParameterFlag(ResultEntry *entry); void goSetupResultUnorientableShapeFace(ResultEntry *entry); -typedef boost::function ResultFunction; +typedef std::function ResultFunction; typedef std::tuple FunctionMapType; class ResultModel : public QAbstractItemModel diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp index 79163bd2f3..6d65ec5923 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp @@ -118,7 +118,7 @@ void ViewProviderAttachExtension::extensionSetupContextMenu(QMenu* menu, QObject QAction* act = menu->addAction(QObject::tr("Attachment editor")); if (Gui::Control().activeDialog()) act->setDisabled(true); - func->trigger(act, boost::bind(&ViewProviderAttachExtension::showAttachmentEditor, this)); + func->trigger(act, std::bind(&ViewProviderAttachExtension::showAttachmentEditor, this)); } } diff --git a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp index 007c69b529..97415db6f6 100644 --- a/src/Mod/Part/Gui/ViewProviderPrimitive.cpp +++ b/src/Mod/Part/Gui/ViewProviderPrimitive.cpp @@ -65,7 +65,7 @@ void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, con Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); - func->trigger(act, boost::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); + func->trigger(act, std::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); ViewProviderPart::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/Part/Gui/ViewProviderSpline.cpp b/src/Mod/Part/Gui/ViewProviderSpline.cpp index a51c6174d9..e876f4a192 100644 --- a/src/Mod/Part/Gui/ViewProviderSpline.cpp +++ b/src/Mod/Part/Gui/ViewProviderSpline.cpp @@ -55,7 +55,7 @@ using namespace PartGui; -namespace bp = boost::placeholders; +namespace sp = std::placeholders; PROPERTY_SOURCE(PartGui::ViewProviderSpline, PartGui::ViewProviderPartExt) @@ -99,7 +99,7 @@ void ViewProviderSplineExtension::extensionSetupContextMenu(QMenu* menu, QObject QAction* act = menu->addAction(QObject::tr("Show control points")); act->setCheckable(true); act->setChecked(ControlPoints.getValue()); - func->toggle(act, boost::bind(&ViewProviderSplineExtension::toggleControlPoints, this, bp::_1)); + func->toggle(act, std::bind(&ViewProviderSplineExtension::toggleControlPoints, this, sp::_1)); } void ViewProviderSplineExtension::extensionUpdateData(const App::Property* prop) diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index 59a9ff7b9c..8bf0b727c3 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -979,7 +979,7 @@ unsigned validateSketches(std::vector& sketches, } void prepareProfileBased(PartDesign::Body *pcActiveBody, Gui::Command* cmd, const std::string& which, - boost::function func) + std::function func) { auto base_worker = [=](App::DocumentObject* feature, const std::vector &subs) { @@ -2167,7 +2167,7 @@ bool CmdPartDesignThickness::isActive(void) //=========================================================================== void prepareTransformed(PartDesign::Body *pcActiveBody, Gui::Command* cmd, const std::string& which, - boost::function)> func) + std::function)> func) { std::string FeatName = cmd->getUniqueObjectName(which.c_str(), pcActiveBody); diff --git a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp index fe8b71aedf..35cbeda9f3 100644 --- a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp +++ b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp @@ -534,10 +534,10 @@ void TaskFeaturePick::showExternal(bool val) TaskDlgFeaturePick::TaskDlgFeaturePick( std::vector &objects, const std::vector &status, - boost::function)> afunc, - boost::function)> wfunc, + std::function)> afunc, + std::function)> wfunc, bool singleFeatureSelect, - boost::function abortfunc /* = NULL */ ) + std::function abortfunc /* = NULL */ ) : TaskDialog(), accepted(false) { pick = new TaskFeaturePick(objects, status, singleFeatureSelect); diff --git a/src/Mod/PartDesign/Gui/TaskFeaturePick.h b/src/Mod/PartDesign/Gui/TaskFeaturePick.h index fab0cb192e..afb24c0b55 100644 --- a/src/Mod/PartDesign/Gui/TaskFeaturePick.h +++ b/src/Mod/PartDesign/Gui/TaskFeaturePick.h @@ -23,6 +23,7 @@ #ifndef PARTDESIGNGUI_FeaturePickDialog_H #define PARTDESIGNGUI_FeaturePickDialog_H +#include #include #include @@ -106,10 +107,10 @@ class TaskDlgFeaturePick : public Gui::TaskView::TaskDialog public: TaskDlgFeaturePick( std::vector &objects, const std::vector &status, - boost::function)> acceptfunc, - boost::function)> workfunc, + std::function)> acceptfunc, + std::function)> workfunc, bool singleFeatureSelect, - boost::function abortfunc = 0); + std::function abortfunc = 0); ~TaskDlgFeaturePick(); public: @@ -135,9 +136,9 @@ public: protected: TaskFeaturePick *pick; bool accepted; - boost::function)> acceptFunction; - boost::function)> workFunction; - boost::function abortFunction; + std::function)> acceptFunction; + std::function)> workFunction; + std::function abortFunction; }; } diff --git a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp index ccb67a677d..ce5ac372cf 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp @@ -131,7 +131,7 @@ void ViewProviderBody::setupContextMenu(QMenu* menu, QObject* receiver, const ch Q_UNUSED(member); Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(tr("Toggle active body")); - func->trigger(act, boost::bind(&ViewProviderBody::doubleClicked, this)); + func->trigger(act, std::bind(&ViewProviderBody::doubleClicked, this)); Gui::ViewProviderGeometryObject::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index 18c70cca8b..16ac5d5e23 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -103,7 +103,7 @@ void ViewProviderBalloon::setupContextMenu(QMenu* menu, QObject* receiver, const Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); - func->trigger(act, boost::bind(&ViewProviderBalloon::startDefaultEditMode, this)); + func->trigger(act, std::bind(&ViewProviderBalloon::startDefaultEditMode, this)); ViewProviderDrawingView::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index fd61ef8021..152f191d43 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -122,7 +122,7 @@ void ViewProviderDimension::setupContextMenu(QMenu* menu, QObject* receiver, con Gui::ActionFunction* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); - func->trigger(act, boost::bind(&ViewProviderDimension::startDefaultEditMode, this)); + func->trigger(act, std::bind(&ViewProviderDimension::startDefaultEditMode, this)); ViewProviderDrawingView::setupContextMenu(menu, receiver, member); }