"Lock" mode is now "Constrained", make snap absolute modifier configurable.
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / click_box.h
index 8f9fb55717fa5f04925407a847f6b87e25252241..c2afa2dd1248fd4cab20c6b8b265965a7cd35c4e 100644 (file)
 #ifndef __gtkmm2ext_click_box_h__
 #define __gtkmm2ext_click_box_h__
 
+#ifdef interface
+#undef interface
+#endif
+
 #include <string>
 #include <gtkmm.h>
 
-#include <gtkmm2ext/auto_spin.h>
+#include "gtkmm2ext/visibility.h"
+#include "gtkmm2ext/auto_spin.h"
 
 namespace Gtkmm2ext {
 
-class ClickBox : public Gtk::DrawingArea, public AutoSpin
+class LIBGTKMM2EXT_API ClickBox : public Gtk::DrawingArea, public AutoSpin
 {
   public:
        ClickBox (Gtk::Adjustment *adj, const std::string &name, bool round_to_steps = false);
        ~ClickBox ();
 
-       void set_print_func(void (*pf)(char buf[32], Gtk::Adjustment &, void *),
-                           void *arg) {
-               print_func = pf;
-               print_arg = arg;
-               set_label ();
-       }
-
+       /** Set a slot to `print' the value to put in the box.
+        *  The slot should write the value of the Gtk::Adjustment
+        *  into the char array, and should return true if it has done the printing,
+        *  or false to use the ClickBox's default printing method.
+        */
+       void set_printer (sigc::slot<bool, char *, Gtk::Adjustment &>);
 
   protected:
        bool on_expose_event (GdkEventExpose*);
 
   private:
-       void (*print_func) (char buf[32], Gtk::Adjustment &, void *);
-       void *print_arg;
-
        Glib::RefPtr<Pango::Layout> layout;
        int twidth;
        int theight;
@@ -57,7 +58,7 @@ class ClickBox : public Gtk::DrawingArea, public AutoSpin
        bool button_press_handler (GdkEventButton *);
        bool button_release_handler (GdkEventButton *);
 
-       static void default_printer (char buf[32], Gtk::Adjustment &, void *);
+       sigc::slot<bool, char *, Gtk::Adjustment &> _printer;
 };
 
 } /* namespace */