Skip to content

Commit

Permalink
Gui: move to new-style connect() in createEditor()
Browse files Browse the repository at this point in the history
  • Loading branch information
wwmayer committed May 14, 2024
1 parent 8821614 commit f332747
Show file tree
Hide file tree
Showing 12 changed files with 109 additions and 109 deletions.
112 changes: 57 additions & 55 deletions src/Gui/propertyeditor/PropertyItem.cpp

Large diffs are not rendered by default.

56 changes: 28 additions & 28 deletions src/Gui/propertyeditor/PropertyItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,12 @@ class GuiExport PropertyItem : public QObject, public ExpressionBinding
const App::Property* getFirstProperty() const;

/** Creates the appropriate editor for this item and sets the editor to the value of overrideValue(). */
virtual QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const;
virtual QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const;
virtual void setEditorData(QWidget *editor, const QVariant& data) const;
virtual QVariant editorData(QWidget *editor) const;
virtual bool isSeparator() const { return false; }

QWidget* createExpressionEditor(QWidget* parent, const QObject* receiver, const char* method) const;
QWidget* createExpressionEditor(QWidget* parent, const std::function<void()>& method) const;
void setExpressionEditorData(QWidget *editor, const QVariant& data) const;
QVariant expressionEditorData(QWidget *editor) const;

Expand Down Expand Up @@ -233,7 +233,7 @@ class GuiExport PropertyStringItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -254,7 +254,7 @@ class GuiExport PropertyFontItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -276,7 +276,7 @@ class GuiExport PropertySeparatorItem : public PropertyItem
PROPERTYITEM_HEADER

bool isSeparator() const override { return true; }
QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;

int row() const override {
return _row<0?PropertyItem::row():_row;
Expand All @@ -296,7 +296,7 @@ class GuiExport PropertyIntegerItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -318,7 +318,7 @@ class GuiExport PropertyIntegerConstraintItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -356,7 +356,7 @@ class GuiExport PropertyFloatItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -378,7 +378,7 @@ class GuiExport PropertyUnitItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -430,7 +430,7 @@ class GuiExport PropertyFloatConstraintItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -496,7 +496,7 @@ class GuiExport PropertyBoolItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -521,7 +521,7 @@ class GuiExport PropertyVectorItem: public PropertyItem
Q_PROPERTY(double z READ z WRITE setZ DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -600,7 +600,7 @@ class GuiExport PropertyVectorListItem : public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -626,7 +626,7 @@ class GuiExport PropertyVectorDistanceItem: public PropertyItem
Q_PROPERTY(Base::Quantity z READ z WRITE setZ DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -686,7 +686,7 @@ class GuiExport PropertyMatrixItem: public PropertyItem
Q_PROPERTY(double A44 READ getA44 WRITE setA44 DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -784,7 +784,7 @@ class GuiExport PropertyRotationItem: public PropertyItem
Q_PROPERTY(Base::Vector3d Axis READ getAxis WRITE setAxis DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -842,7 +842,7 @@ class GuiExport PropertyPlacementItem: public PropertyItem
Q_PROPERTY(Base::Vector3d Position READ getPosition WRITE setPosition DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -883,7 +883,7 @@ class GuiExport PropertyEnumItem: public PropertyItem
Q_PROPERTY(QStringList Enum READ getEnum WRITE setEnum DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -926,7 +926,7 @@ class GuiExport PropertyStringListItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -948,7 +948,7 @@ class GuiExport PropertyFloatListItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -970,7 +970,7 @@ class GuiExport PropertyIntegerListItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -992,7 +992,7 @@ class GuiExport PropertyColorItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -1021,7 +1021,7 @@ class GuiExport PropertyMaterialItem : public PropertyItem
Q_PROPERTY(float Transparency READ getTransparency WRITE setTransparency DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -1070,7 +1070,7 @@ class GuiExport PropertyMaterialListItem : public PropertyItem
Q_PROPERTY(float Transparency READ getTransparency WRITE setTransparency DESIGNABLE true USER true) // clazy:exclude=qproperty-without-notify
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -1117,7 +1117,7 @@ class GuiExport PropertyFileItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -1139,7 +1139,7 @@ class GuiExport PropertyPathItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand All @@ -1161,7 +1161,7 @@ class GuiExport PropertyTransientFileItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down Expand Up @@ -1229,7 +1229,7 @@ class GuiExport PropertyLinkItem: public PropertyItem
Q_OBJECT
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget *editor, const QVariant& data) const override;
QVariant editorData(QWidget *editor) const override;

Expand Down
18 changes: 12 additions & 6 deletions src/Gui/propertyeditor/PropertyItemDelegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,19 +159,26 @@ QWidget * PropertyItemDelegate::createEditor (QWidget * parent, const QStyleOpti

FC_LOG("create editor " << index.row() << "," << index.column());

QWidget* editor;
QWidget* editor = nullptr;
expressionEditor = nullptr;
userEditor = nullptr;
if (parentEditor && parentEditor->isBinding()) {
expressionEditor = editor = childItem->createExpressionEditor(parent, this, SLOT(valueChanged()));
expressionEditor = editor = childItem->createExpressionEditor(parent, [this]() {
const_cast<PropertyItemDelegate*>(this)->valueChanged(); // NOLINT
});
propertyEditor = editor;
}
else {
const auto &props = childItem->getPropertyData();
if (!props.empty() && props[0]->testStatus(App::Property::UserEdit)) {
editor = userEditor = childItem->createPropertyEditorWidget(parent);
propertyEditor = editor;
}
else {
editor = childItem->createEditor(parent, this, SLOT(valueChanged()));
editor = childItem->createEditor(parent, [this]() {
const_cast<PropertyItemDelegate*>(this)->valueChanged(); // NOLINT
});
propertyEditor = editor;
}
}
if (editor) {
Expand Down Expand Up @@ -208,10 +215,9 @@ QWidget * PropertyItemDelegate::createEditor (QWidget * parent, const QStyleOpti

void PropertyItemDelegate::valueChanged()
{
QWidget* editor = qobject_cast<QWidget*>(sender());
if (editor) {
if (propertyEditor) {
Base::FlagToggler<> flag(changed);
Q_EMIT commitData(editor);
Q_EMIT commitData(propertyEditor);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/Gui/propertyeditor/PropertyItemDelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#define PROPERTYITEMDELEGATE_H

#include <QItemDelegate>
#include <QPointer>

namespace Gui {
namespace PropertyEditor {
Expand All @@ -49,10 +50,10 @@ class PropertyItemDelegate : public QItemDelegate
protected:
bool eventFilter(QObject *, QEvent *) override;

public Q_SLOTS:
void valueChanged();

private:
mutable QPointer<QWidget> propertyEditor;
mutable QWidget *expressionEditor;
mutable PropertyEditorWidget *userEditor = nullptr;
mutable bool pressed;
Expand Down
4 changes: 1 addition & 3 deletions src/Mod/Fem/Gui/PropertyFemMeshItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,9 @@ void PropertyFemMeshItem::setValue(const QVariant& value)
}

QWidget* PropertyFemMeshItem::createEditor(QWidget* parent,
const QObject* receiver,
const char* method) const
const std::function<void()>& method) const
{
Q_UNUSED(parent);
Q_UNUSED(receiver);
Q_UNUSED(method);
return nullptr;
}
Expand Down
3 changes: 1 addition & 2 deletions src/Mod/Fem/Gui/PropertyFemMeshItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,7 @@ class PropertyFemMeshItem: public Gui::PropertyEditor::PropertyItem
Q_PROPERTY(int Groups READ countGroups CONSTANT)
PROPERTYITEM_HEADER

QWidget*
createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget* editor, const QVariant& data) const override;
QVariant editorData(QWidget* editor) const override;

Expand Down
4 changes: 1 addition & 3 deletions src/Mod/Mesh/Gui/PropertyEditorMesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,9 @@ void PropertyMeshKernelItem::setValue(const QVariant& value)
}

QWidget* PropertyMeshKernelItem::createEditor(QWidget* parent,
const QObject* receiver,
const char* method) const
const std::function<void()>& method) const
{
Q_UNUSED(parent);
Q_UNUSED(receiver);
Q_UNUSED(method);
return nullptr;
}
Expand Down
4 changes: 1 addition & 3 deletions src/Mod/Mesh/Gui/PropertyEditorMesh.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ class MeshGuiExport PropertyMeshKernelItem: public Gui::PropertyEditor::Property
PROPERTYITEM_HEADER

// clang-format off
QWidget* createEditor(QWidget* parent,
const QObject* receiver,
const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
// clang-format on
void setEditorData(QWidget* editor, const QVariant& data) const override;
QVariant editorData(QWidget* editor) const override;
Expand Down
5 changes: 3 additions & 2 deletions src/Mod/Part/Gui/PropertyEnumAttacherItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,11 @@ PROPERTYITEM_SOURCE(PartGui::PropertyEnumAttacherItem)

PropertyEnumAttacherItem::PropertyEnumAttacherItem() = default;

QWidget* PropertyEnumAttacherItem::createEditor(QWidget* parent, const QObject* receiver, const char* method) const
QWidget* PropertyEnumAttacherItem::createEditor(QWidget* parent,
const std::function<void()>& method) const
{
Gui::LabelButton* modeEditor = new Gui::LabelButton(parent);
QObject::connect(modeEditor, SIGNAL(valueChanged(const QVariant &)), receiver, method);
QObject::connect(modeEditor, &Gui::LabelButton::valueChanged, method);
QObject::connect(modeEditor, &Gui::LabelButton::buttonClicked, this, &PropertyEnumAttacherItem::openTask);
modeEditor->setDisabled(isReadOnly());
return modeEditor;
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Part/Gui/PropertyEnumAttacherItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class PartGuiExport PropertyEnumAttacherItem: public Gui::PropertyEditor::Proper
public:
PROPERTYITEM_HEADER

QWidget* createEditor(QWidget* parent, const QObject* receiver, const char* method) const override;
QWidget* createEditor(QWidget* parent, const std::function<void()>& method) const override;
void setEditorData(QWidget* editor, const QVariant& data) const override;
QVariant editorData(QWidget* editor) const override;

Expand Down
4 changes: 1 addition & 3 deletions src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -369,10 +369,8 @@ void PropertyConstraintListItem::setValue(const QVariant& value)
}

QWidget* PropertyConstraintListItem::createEditor(QWidget* parent,
const QObject* receiver,
const char* method) const
const std::function<void()>& method) const
{
Q_UNUSED(receiver);
Q_UNUSED(method);
QLineEdit* le = new QLineEdit(parent);
le->setFrame(false);
Expand Down

0 comments on commit f332747

Please sign in to comment.