From b92e0452770042c548ace6685ab227a245540a5e Mon Sep 17 00:00:00 2001 From: Tobias Schmidt <tobias.schmidt@unibas.ch> Date: Tue, 17 May 2011 17:04:43 +0200 Subject: [PATCH] add button tool option --- modules/gui/src/tools/tool_option.cc | 13 ++++++++++++ modules/gui/src/tools/tool_option.hh | 21 +++++++++++++++++++- modules/gui/src/tools/tool_options_widget.cc | 12 +++++++++++ modules/gui/src/tools/tool_options_widget.hh | 1 + 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/modules/gui/src/tools/tool_option.cc b/modules/gui/src/tools/tool_option.cc index 970c8f779..8f54a6c06 100644 --- a/modules/gui/src/tools/tool_option.cc +++ b/modules/gui/src/tools/tool_option.cc @@ -59,5 +59,18 @@ void ToolOptionEnum::Add(const String& text, int tag) tuples_.back().tag=tag; } +ToolOptionButton::ToolOptionButton(const String& key, + const String& verbose_name, + QObject* receiver, + const char *slot_method): + ToolOption(key, verbose_name, ToolOption::BUTTON), slot_method_(slot_method), receiver_(receiver) +{ + +} + +void ToolOptionButton::RunMe() +{ + std::cout << "TOOL RUN ME RUN ME" << std::endl; +} }} diff --git a/modules/gui/src/tools/tool_option.hh b/modules/gui/src/tools/tool_option.hh index 700cac3c6..ac035559e 100644 --- a/modules/gui/src/tools/tool_option.hh +++ b/modules/gui/src/tools/tool_option.hh @@ -25,6 +25,7 @@ #include <limits> #include <vector> +#include <iostream> #include <ost/gui/module_config.hh> @@ -37,7 +38,7 @@ class DLLEXPORT_OST_GUI ToolOption : public QObject { Q_OBJECT public: typedef enum { - INT, FLOAT, ENUM + INT, FLOAT, ENUM, BUTTON } Type; protected: ToolOption(const String& key, const String& verbose_name, Type type); @@ -116,11 +117,29 @@ public: ConstIterator Begin() const { return tuples_.begin(); } ConstIterator End() const { return tuples_.end(); } size_t Size() { return tuples_.size(); } + private: std::vector<Tuple> tuples_; int index_; }; +class DLLEXPORT_OST_GUI ToolOptionButton : public ToolOption { + Q_OBJECT +public: + ToolOptionButton(const String& key, + const String& verbose_name, + QObject* receiver, + const char *slot_method); + const char* GetSlotMethod() const { return slot_method_; } + QObject* GetReceiver() const { return receiver_; } +public slots: + void RunMe(); +private: + const char *slot_method_; + QObject* receiver_; +}; + + typedef std::vector<ToolOption*> ToolOptionList; }} diff --git a/modules/gui/src/tools/tool_options_widget.cc b/modules/gui/src/tools/tool_options_widget.cc index 58c175493..879868555 100644 --- a/modules/gui/src/tools/tool_options_widget.cc +++ b/modules/gui/src/tools/tool_options_widget.cc @@ -26,6 +26,7 @@ #include <QIntValidator> #include <QDoubleValidator> #include <QSpacerItem> +#include <QPushButton> namespace ost { namespace gui { @@ -74,6 +75,14 @@ QWidget* ToolOptionsWidget::MakeFloatWidget(ToolOptionFloat* opts) return line; } +QWidget* ToolOptionsWidget::MakeButtonWidget(ToolOptionButton* opts) +{ + QPushButton* button=new QPushButton(); + button->setText(QString(opts->GetVerboseName().c_str())); + connect(button, SIGNAL(released()), opts->GetReceiver(), opts->GetSlotMethod()); + return button; +} + void ToolOptionsWidget::Populate() { QGridLayout* grid=new QGridLayout(this); @@ -105,6 +114,9 @@ void ToolOptionsWidget::Populate() case ToolOption::ENUM: widget=MakeEnumWidget(dynamic_cast<ToolOptionEnum*>(opt)); break; + case ToolOption::BUTTON: + widget=MakeButtonWidget(dynamic_cast<ToolOptionButton*>(opt)); + break; } #if defined(__APPLE__) opt_label->setAttribute(Qt::WA_MacSmallSize, true); diff --git a/modules/gui/src/tools/tool_options_widget.hh b/modules/gui/src/tools/tool_options_widget.hh index 42cc48cd1..24e309f56 100644 --- a/modules/gui/src/tools/tool_options_widget.hh +++ b/modules/gui/src/tools/tool_options_widget.hh @@ -87,6 +87,7 @@ private: QWidget* MakeIntWidget(ToolOptionInt* opts); QWidget* MakeEnumWidget(ToolOptionEnum* opts); QWidget* MakeFloatWidget(ToolOptionFloat* opts); + QWidget* MakeButtonWidget(ToolOptionButton* opts); ToolOptions* options_; }; -- GitLab