From 2ce1e94f9081e12aafce2b17acb9ce1324f9ba23 Mon Sep 17 00:00:00 2001 From: Raphael Grimm <raphael.grimm@student.kit.edu> Date: Tue, 15 Aug 2017 13:19:27 +0200 Subject: [PATCH] Make WidgetDescription::Widget a framed widget and add a parameter whether the frame should be shown --- .../ArmarXGui/interface/WidgetDescription.ice | 1 + .../DefaultWidgetDescriptions.cpp | 2 +- .../WidgetDescription/WidgetDescription.cpp | 61 ++++++++++++------- .../WidgetDescription/WidgetDescription.h | 11 ++-- 4 files changed, 47 insertions(+), 28 deletions(-) diff --git a/source/ArmarXGui/interface/WidgetDescription.ice b/source/ArmarXGui/interface/WidgetDescription.ice index 2fa8b0d2..471b6f0b 100644 --- a/source/ArmarXGui/interface/WidgetDescription.ice +++ b/source/ArmarXGui/interface/WidgetDescription.ice @@ -31,6 +31,7 @@ module armarx { class Widget { + bool framed = false; }; sequence<Widget> WidgetSeq; dictionary<string,Widget> StringWidgetDictionary; diff --git a/source/ArmarXGui/libraries/DefaultWidgetDescriptions/DefaultWidgetDescriptions.cpp b/source/ArmarXGui/libraries/DefaultWidgetDescriptions/DefaultWidgetDescriptions.cpp index f948e99c..92863f93 100644 --- a/source/ArmarXGui/libraries/DefaultWidgetDescriptions/DefaultWidgetDescriptions.cpp +++ b/source/ArmarXGui/libraries/DefaultWidgetDescriptions/DefaultWidgetDescriptions.cpp @@ -119,7 +119,7 @@ namespace armarx LabelPtr makeLabel(std::string text) { - return new Label {std::move(text)}; + return new Label {false, std::move(text)}; } CheckBoxPtr makeCheckBox(std::string name, bool defaultValue, std::string label) diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp index 8e0f09c5..c6ac9565 100644 --- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp +++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp @@ -51,7 +51,7 @@ namespace armarx class DescribedWidget : public DescribedWidgetBase { public: - DescribedWidget(const WidgetPtr&, ValueChangedListenerInterface*) {} + DescribedWidget(const WidgetPtr& ptr, ValueChangedListenerInterface*): DescribedWidgetBase(ptr) {} virtual std::map<std::string, VariantBasePtr> getVariants() override { return {}; @@ -63,7 +63,7 @@ namespace armarx { public: DescribedVBoxLayout(const WidgetPtr& p, ValueChangedListenerInterface* listener) - : DescribedWidgetLayoutBase(listener) + : DescribedWidgetLayoutBase(p, listener) { VBoxLayoutPtr ptr = VBoxLayoutPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -82,7 +82,7 @@ namespace armarx { public: DescribedHBoxLayout(const WidgetPtr& p, ValueChangedListenerInterface* listener) - : DescribedWidgetLayoutBase(listener) + : DescribedWidgetLayoutBase(p, listener) { HBoxLayoutPtr ptr = HBoxLayoutPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -100,7 +100,7 @@ namespace armarx { public: DescribedFormLayout(const WidgetPtr& p, ValueChangedListenerInterface* listener) - : DescribedWidgetLayoutBase(listener) + : DescribedWidgetLayoutBase(p, listener) { FormLayoutPtr ptr = FormLayoutPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -129,7 +129,7 @@ namespace armarx { public: DescribedFormLayoutElement(const WidgetPtr& p, ValueChangedListenerInterface* listener) - : DescribedWidgetLayoutBase(listener) + : DescribedWidgetLayoutBase(p, listener) { FormLayoutElementPtr ptr = FormLayoutElementPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -153,14 +153,13 @@ namespace armarx { public: DescribedGroupBox(const WidgetPtr& p, ValueChangedListenerInterface* listener) - : DescribedWidgetLayoutBase(listener) + : DescribedWidgetLayoutBase(p, listener) { GroupBoxPtr ptr = GroupBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); auto ltop = new QHBoxLayout; setLayout(ltop); layout()->setContentsMargins(0, 0, 0, 0); - QGroupBox* grp = new QGroupBox; ltop->addWidget(grp); grp->setTitle(QString::fromStdString(ptr->label)); @@ -176,7 +175,7 @@ namespace armarx class DescribedHSpacer : public DescribedWidgetBase { public: - DescribedHSpacer(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedHSpacer(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { setLayout(new QVBoxLayout); layout()->setContentsMargins(0, 0, 0, 0); @@ -192,7 +191,7 @@ namespace armarx class DescribedVSpacer : public DescribedWidgetBase { public: - DescribedVSpacer(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedVSpacer(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { setLayout(new QVBoxLayout); layout()->setContentsMargins(0, 0, 0, 0); @@ -208,7 +207,7 @@ namespace armarx class DescribedLabel : public DescribedWidgetBase { public: - DescribedLabel(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedLabel(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { auto ptr = LabelPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -227,7 +226,7 @@ namespace armarx class DescribedVariantWidget : public DescribedWidgetBase { public: - DescribedVariantWidget(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedVariantWidget(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { auto ptr = VariantWidgetPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -269,7 +268,7 @@ namespace armarx class DescribedCheckBox : public DescribedWidgetBase { public: - DescribedCheckBox(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedCheckBox(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { CheckBoxPtr ptr = CheckBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -298,7 +297,7 @@ namespace armarx class DescribedIntSpinBox : public DescribedWidgetBase { public: - DescribedIntSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedIntSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { IntSpinBoxPtr ptr = IntSpinBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -329,7 +328,7 @@ namespace armarx class DescribedDoubleSpinBox : public DescribedWidgetBase { public: - DescribedDoubleSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedDoubleSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { DoubleSpinBoxPtr ptr = DoubleSpinBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -362,7 +361,7 @@ namespace armarx class DescribedFloatSpinBox : public DescribedWidgetBase { public: - DescribedFloatSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedFloatSpinBox(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { FloatSpinBoxPtr ptr = FloatSpinBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -395,7 +394,7 @@ namespace armarx class DescribedStringComboBox : public DescribedWidgetBase { public: - DescribedStringComboBox(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedStringComboBox(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { StringComboBoxPtr ptr = StringComboBoxPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -428,7 +427,7 @@ namespace armarx class DescribedLineEdit : public DescribedWidgetBase { public: - DescribedLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { LineEditPtr ptr = LineEditPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -457,7 +456,7 @@ namespace armarx class DescribedDoubleLineEdit : public DescribedWidgetBase { public: - DescribedDoubleLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedDoubleLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { DoubleLineEditPtr ptr = DoubleLineEditPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -487,7 +486,7 @@ namespace armarx class DescribedFloatLineEdit : public DescribedWidgetBase { public: - DescribedFloatLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedFloatLineEdit(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { FloatLineEditPtr ptr = FloatLineEditPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -518,7 +517,7 @@ namespace armarx class DescribedIntSlider : public DescribedWidgetBase { public: - DescribedIntSlider(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedIntSlider(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { IntSliderPtr ptr = IntSliderPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -549,7 +548,7 @@ namespace armarx class DescribedDoubleSlider : public DescribedWidgetBase { public: - DescribedDoubleSlider(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedDoubleSlider(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { DoubleSliderPtr ptr = DoubleSliderPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -582,7 +581,7 @@ namespace armarx class DescribedFloatSlider : public DescribedWidgetBase { public: - DescribedFloatSlider(const WidgetPtr& p, ValueChangedListenerInterface*) + DescribedFloatSlider(const WidgetPtr& p, ValueChangedListenerInterface*): DescribedWidgetBase(p) { FloatSliderPtr ptr = FloatSliderPtr::dynamicCast(p); ARMARX_CHECK_NOT_NULL(ptr); @@ -614,6 +613,8 @@ namespace armarx DescribedWidgetFactoryRegistration<DescribedFloatSlider> registerDescribedFloatSlider {FloatSlider::ice_staticId()}; //functions from base classes + DescribedWidgetLayoutBase::DescribedWidgetLayoutBase(WidgetPtr ptr, ValueChangedListenerInterface* listener): DescribedWidgetBase(ptr), listener {listener ? listener : this} {} + std::map<std::string, VariantBasePtr> DescribedWidgetLayoutBase::getVariants() { std::map<std::string, VariantBasePtr> result; @@ -641,7 +642,7 @@ namespace armarx class ErrorMessageWidget : public DescribedWidgetBase { public: - ErrorMessageWidget(const std::string& errorMessage) + ErrorMessageWidget(const std::string& errorMessage): DescribedWidgetBase(nullptr) { setLayout(new QVBoxLayout); setName(".ErrorMessageWidget"); @@ -684,5 +685,19 @@ namespace armarx return new ErrorMessageWidget {"makeDescribedWidget: Unknown error"}; } + DescribedWidgetBase::DescribedWidgetBase(WidgetPtr ptr) + { + if (ptr && ptr->framed) + { + setFrameShape(QFrame::StyledPanel); + } + } + + ValueChangedListenerInterface::ValueChangedListenerInterface() + { + setFrameShape(QFrame::NoFrame); + setFrameShadow(QFrame::Raised); + } + } } diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h index 4f2abe86..baacde93 100644 --- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h +++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h @@ -25,7 +25,7 @@ #include <functional> -#include <QWidget> +#include <QFrame> #include <ArmarXCore/core/util/Registrar.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h> @@ -36,18 +36,21 @@ namespace armarx { namespace WidgetDescription { - class ValueChangedListenerInterface: public QWidget + class ValueChangedListenerInterface: public QFrame { Q_OBJECT + public: + ValueChangedListenerInterface(); public slots: virtual void valueChangedSlot(std::string name, VariantBasePtr value) {} }; - class DescribedWidgetBase: public ValueChangedListenerInterface { Q_OBJECT public: + DescribedWidgetBase(WidgetPtr ptr); + virtual std::map<std::string, VariantBasePtr> getVariants() { return {}; @@ -74,7 +77,7 @@ namespace armarx { Q_OBJECT public: - DescribedWidgetLayoutBase(ValueChangedListenerInterface* listener): listener {listener ? listener : this} {} + DescribedWidgetLayoutBase(WidgetPtr ptr, ValueChangedListenerInterface* listener); virtual std::map<std::string, VariantBasePtr> getVariants() override; virtual void valueChangedSlot(std::string name, VariantBasePtr value) override { -- GitLab