5 #include <sigc++/signal.h>
6 #include <sigc++/trackable.h>
7 #include <msp/input/keyboard.h>
8 #include <msp/input/mouse.h>
9 #include "libr2c2/geometry.h"
14 class Tool: public sigc::trackable
17 sigc::signal<void> signal_done;
18 sigc::signal<void, const std::string &> signal_status;
23 R2C2::Vector ground_pointer;
30 Tool(Designer &, Msp::Input::Keyboard &, Msp::Input::Mouse &);
35 void set_status(const std::string &);
38 const std::string &get_status() const { return status; }
39 bool is_done() const { return done; }
42 virtual void key_press(unsigned);
43 virtual void key_release(unsigned);
44 virtual void button_press(unsigned);
45 virtual void axis_motion(unsigned, float, float);
46 virtual void pointer_motion() { }
47 virtual void finish() { }
50 virtual void update_selection(Selection &) const { }