forked from qt-creator/qt-creator
Utils: Make LayoutBuilder setter setup less repetitive
Change-Id: I9113f7a97566c21cf83dcb95ce8e75e9707360b4 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -139,13 +139,16 @@ public:
|
||||
Layout(Implementation *w) { ptr = w; }
|
||||
|
||||
void span(int cols, int rows);
|
||||
void noMargin();
|
||||
void normalMargin();
|
||||
void customMargin(const QMargins &margin);
|
||||
|
||||
void setNoMargins();
|
||||
void setNormalMargins();
|
||||
void setContentMargins(const QMargins &margin);
|
||||
void setColumnStretch(int cols, int rows);
|
||||
void setSpacing(int space);
|
||||
void setFieldGrowthPolicy(int policy);
|
||||
|
||||
void attachTo(QWidget *);
|
||||
|
||||
void addItem(I item);
|
||||
void addItems(std::initializer_list<I> items);
|
||||
void addRow(std::initializer_list<I> items);
|
||||
@@ -153,7 +156,6 @@ public:
|
||||
|
||||
void flush();
|
||||
void flush_() const;
|
||||
void fieldGrowthPolicy(int policy);
|
||||
|
||||
QWidget *emerge() const;
|
||||
void show() const;
|
||||
@@ -258,15 +260,15 @@ public:
|
||||
Widget(Implementation *w) { ptr = w; }
|
||||
|
||||
QWidget *emerge() const;
|
||||
|
||||
void show();
|
||||
void resize(int, int);
|
||||
|
||||
void setLayout(const Layout &layout);
|
||||
void setSize(int, int);
|
||||
void setWindowTitle(const QString &);
|
||||
void setToolTip(const QString &);
|
||||
void noMargin(int = 0);
|
||||
void normalMargin(int = 0);
|
||||
void customMargin(const QMargins &margin);
|
||||
void setNoMargins(int = 0);
|
||||
void setNormalMargins(int = 0);
|
||||
void setContentMargins(const QMargins &);
|
||||
};
|
||||
|
||||
class QTCREATOR_UTILS_EXPORT Label : public Widget
|
||||
@@ -439,69 +441,38 @@ void doit(Interface *x, IdId, auto p)
|
||||
|
||||
// Setter dispatchers
|
||||
|
||||
class SizeId {};
|
||||
auto size(auto w, auto h) { return IdAndArg{SizeId{}, std::pair{w, h}}; }
|
||||
void doit(auto x, SizeId, auto p) { x->resize(p->first, p->second); }
|
||||
#define QTCREATOR_SETTER(name, setter) \
|
||||
class name##_TAG {}; \
|
||||
inline auto name(auto p) { return IdAndArg{name##_TAG{}, p}; } \
|
||||
inline void doit(auto x, name##_TAG, auto p) { x->setter(p); }
|
||||
|
||||
class TextId {};
|
||||
auto text(auto p) { return IdAndArg{TextId{}, p}; }
|
||||
void doit(auto x, TextId, auto p) { x->setText(p); }
|
||||
#define QTCREATOR_SETTER2(name, setter) \
|
||||
class name##_TAG {}; \
|
||||
inline auto name(auto p1, auto p2) { return IdAndArg{name##_TAG{}, std::pair{p1, p2}}; } \
|
||||
inline void doit(auto x, name##_TAG, auto p) { x->setter(p.first, p.second); }
|
||||
|
||||
class TitleId {};
|
||||
auto title(auto p) { return IdAndArg{TitleId{}, p}; }
|
||||
void doit(auto x, TitleId, auto p) { x->setTitle(p); }
|
||||
#define QTCREATOR_TYPED_SETTER(name, setter, type) \
|
||||
class name##_TAG {}; \
|
||||
inline auto name(type p) { return IdAndArg{name##_TAG{}, p}; } \
|
||||
inline void doit(auto x, name##_TAG, auto p) { x->setter(p); }
|
||||
|
||||
class TextFormatId {};
|
||||
auto textFormat(auto p) { return IdAndArg{TextFormatId{}, p}; }
|
||||
void doit(auto x, TextFormatId, auto p) { x->setTextFormat(p); }
|
||||
QTCREATOR_SETTER(fieldGrowthPolicy, setFieldGrowthPolicy);
|
||||
QTCREATOR_SETTER(groupChecker, setGroupChecker);
|
||||
QTCREATOR_SETTER(openExternalLinks, setOpenExternalLinks);
|
||||
QTCREATOR_SETTER2(size, setSize)
|
||||
QTCREATOR_SETTER(text, setText)
|
||||
QTCREATOR_SETTER(textFormat, setTextFormat);
|
||||
QTCREATOR_SETTER(textInteractionFlags, setTextInteractionFlags);
|
||||
QTCREATOR_SETTER(title, setTitle)
|
||||
QTCREATOR_SETTER(toolTip, setToolTip);
|
||||
QTCREATOR_SETTER(windowTitle, setWindowTitle);
|
||||
QTCREATOR_SETTER(wordWrap, setWordWrap);
|
||||
QTCREATOR_SETTER2(columnStretch, setColumnStretch);
|
||||
QTCREATOR_SETTER2(onClicked, onClicked);
|
||||
QTCREATOR_SETTER2(onLinkHovered, onLinkHovered);
|
||||
QTCREATOR_SETTER2(onTextChanged, onTextChanged);
|
||||
|
||||
class WordWrapId {};
|
||||
auto wordWrap(auto p) { return IdAndArg{WordWrapId{}, p}; }
|
||||
void doit(auto x, WordWrapId, auto p) { x->setWordWrap(p); }
|
||||
|
||||
class TextInteractionFlagId {};
|
||||
auto textInteractionFlags(auto p) { return IdAndArg{TextInteractionFlagId{}, p}; }
|
||||
void doit(auto x, TextInteractionFlagId, auto p) { x->setTextInteractionFlags(p); }
|
||||
|
||||
class OpenExternalLinksId {};
|
||||
auto openExternalLinks(auto p) { return IdAndArg{OpenExternalLinksId{}, p}; }
|
||||
void doit(auto x, OpenExternalLinksId, auto p) { x->setOpenExternalLinks(p); }
|
||||
|
||||
class OnLinkHoveredId {};
|
||||
auto onLinkHovered(auto p, QObject *guard) { return IdAndArg{OnLinkHoveredId{}, std::pair{p, guard}}; }
|
||||
void doit(auto x, OnLinkHoveredId, auto p) { x->onLinkHovered(p.first, p.second); }
|
||||
|
||||
class GroupCheckerId {};
|
||||
auto groupChecker(auto p) { return IdAndArg{GroupCheckerId{}, p}; }
|
||||
void doit(auto x, GroupCheckerId, auto p) { x->setGroupChecker(p); }
|
||||
|
||||
class ToolTipId {};
|
||||
auto toolTip(auto p) { return IdAndArg{ToolTipId{}, p}; }
|
||||
void doit(auto x, ToolTipId, auto p) { x->setToolTip(p); }
|
||||
|
||||
class WindowTitleId {};
|
||||
auto windowTitle(auto p) { return IdAndArg{WindowTitleId{}, p}; }
|
||||
void doit(auto x, WindowTitleId, auto p) { x->setWindowTitle(p); }
|
||||
|
||||
class OnTextChangedId {};
|
||||
auto onTextChanged(auto p) { return IdAndArg{OnTextChangedId{}, p}; }
|
||||
void doit(auto x, OnTextChangedId, auto p) { x->onTextChanged(p); }
|
||||
|
||||
class OnClickedId {};
|
||||
auto onClicked(auto p, auto guard) { return IdAndArg{OnClickedId{}, std::pair{p, guard}}; }
|
||||
void doit(auto x, OnClickedId, auto p) { x->onClicked(p.first, p.second); }
|
||||
|
||||
class CustomMarginId {};
|
||||
inline auto customMargin(const QMargins &p) { return IdAndArg{CustomMarginId{}, p}; }
|
||||
void doit(auto x, CustomMarginId, auto p) { x->customMargin(p); }
|
||||
|
||||
class FieldGrowthPolicyId {};
|
||||
inline auto fieldGrowthPolicy(auto p) { return IdAndArg{FieldGrowthPolicyId{}, p}; }
|
||||
void doit(auto x, FieldGrowthPolicyId, auto p) { x->fieldGrowthPolicy(p); }
|
||||
|
||||
class ColumnStretchId {};
|
||||
inline auto columnStretch(int column, int stretch) { return IdAndArg{ColumnStretchId{}, std::pair{column, stretch}}; }
|
||||
void doit(auto x, ColumnStretchId, auto p) { x->setColumnStretch(p.first, p.second); }
|
||||
QTCREATOR_TYPED_SETTER(customMargin, setContentMargins, const QMargins &);
|
||||
|
||||
// Nesting dispatchers
|
||||
|
||||
|
||||
Reference in New Issue
Block a user