5 #include <sigc++/signal.h>
6 #include <sigc++/trackable.h>
7 #include <msp/input/mouse.h>
8 #include "libr2c2/geometry.h"
13 class Tool: public sigc::trackable
16 sigc::signal<void> signal_done;
17 sigc::signal<void, const std::string &> signal_status;
22 R2C2::Vector ground_pointer;
27 Tool(Designer &, Msp::Input::Mouse &);
32 void set_status(const std::string &);
35 const std::string &get_status() const { return status; }
36 bool is_done() const { return done; }
39 virtual void button_press(unsigned);
40 virtual void axis_motion(unsigned, float, float);
41 virtual void pointer_motion() { }
42 virtual void finish() { }
45 virtual void update_selection(Selection &) const { }