X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Ftool.h;fp=source%2Fdesigner%2Ftool.h;h=bfadfc03feae9154b1ab1215e103add88ed03d7e;hb=678982e7ddb22bb5fd44ce448d1c5cbf646b2573;hp=0000000000000000000000000000000000000000;hpb=a5e1363ceac1ab552849640c9021fcda362c4416;p=r2c2.git diff --git a/source/designer/tool.h b/source/designer/tool.h new file mode 100644 index 0000000..bfadfc0 --- /dev/null +++ b/source/designer/tool.h @@ -0,0 +1,43 @@ +#ifndef TOOL_H_ +#define TOOL_H_ + +#include +#include +#include +#include +#include "libr2c2/geometry.h" + +class Designer; +class Selection; + +class Tool: public sigc::trackable +{ +public: + sigc::signal signal_done; + sigc::signal signal_status; + +protected: + Designer &designer; + R2C2::Vector pointer; + R2C2::Vector ground_pointer; + std::string status; + bool done; + + Tool(Designer &, Msp::Input::Mouse &); +public: + virtual ~Tool() { } + +protected: + void set_status(const std::string &); + void set_done(); +public: + const std::string &get_status() const { return status; } + bool is_done() const { return done; } + + virtual void button_press(unsigned) { } + virtual void axis_motion(unsigned, float, float); + + virtual void update_selection(Selection &) const { } +}; + +#endif