Skip to content
Snippets Groups Projects
Commit b92e0452 authored by Tobias Schmidt's avatar Tobias Schmidt
Browse files

add button tool option

parent 90b45594
Branches
Tags
No related merge requests found
......@@ -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;
}
}}
......@@ -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;
}}
......
......@@ -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);
......
......@@ -87,6 +87,7 @@ private:
QWidget* MakeIntWidget(ToolOptionInt* opts);
QWidget* MakeEnumWidget(ToolOptionEnum* opts);
QWidget* MakeFloatWidget(ToolOptionFloat* opts);
QWidget* MakeButtonWidget(ToolOptionButton* opts);
ToolOptions* options_;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment