globally remove all trailing whitespace from ardour code base.
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / click_box.h
index 4f1ef5ca6b41d1155b3d2e5d3c5933ea3f9b4a0e..5c56a1b3e8ce858028fb13def95d2097ade53fcd 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 1999 Paul Barton-Davis 
+    Copyright (C) 1999 Paul Barton-Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #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;
 
        void set_label ();
+       void style_changed (const Glib::RefPtr<Gtk::Style> &);
        bool button_press_handler (GdkEventButton *);
        bool button_release_handler (GdkEventButton *);
+       bool on_scroll_event (GdkEventScroll*);
 
-       static void default_printer (char buf[32], Gtk::Adjustment &, void *);
+       sigc::slot<bool, char *, Gtk::Adjustment &> _printer;
 };
 
 } /* namespace */