convert property_foo().set_value(bar) to property_foo() = bar
[ardour.git] / gtk2_ardour / marker.h
index 01f1404a82ff5f48ea79b4eecf7e434b73d7eaf4..13e80ef51279d411bf31e67c05194fc0a1677489 100644 (file)
@@ -24,8 +24,9 @@
 #include <string>
 #include <glib.h>
 #include <ardour/ardour.h>
-#include <gtk-canvas.h>
-#include <sigc++/signal_system.h>
+#include <sigc++/signal.h>
+
+#include "canvas.h"
 
 namespace ARDOUR {
        class TempoSection;
@@ -34,7 +35,7 @@ namespace ARDOUR {
 
 class PublicEditor;
 
-class Marker : public SigC::Object
+class Marker : public sigc::trackable
 {
   public:
        enum Type {
@@ -49,10 +50,14 @@ class Marker : public SigC::Object
                PunchOut
        };
 
-       Marker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, Type, 
-               gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer), jack_nframes_t frame = 0);
+
+       Marker (PublicEditor& editor, ArdourCanvas::Group& parent, guint32 rgba, const string& text, Type, 
+               jack_nframes_t frame = 0, bool handle_events = true);
+
        virtual ~Marker ();
 
+       ArdourCanvas::Item& the_item() const;
+
        void set_position (jack_nframes_t);
        void set_name (const string&);
        void set_color_rgba (uint32_t rgba);
@@ -65,10 +70,10 @@ class Marker : public SigC::Object
   protected:
        PublicEditor& editor;
 
-       GtkCanvasItem *group;
-       GtkCanvasItem *mark;
-       GtkCanvasItem *text;
-       GtkCanvasPoints *points;
+       ArdourCanvas::Group *group;
+       ArdourCanvas::Polygon *mark;
+       ArdourCanvas::Text *text;
+       ArdourCanvas::Points *points;
 
        double    unit_position;
        jack_nframes_t frame_position;
@@ -81,8 +86,7 @@ class Marker : public SigC::Object
 class TempoMarker : public Marker
 {
   public:
-       TempoMarker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, ARDOUR::TempoSection&, 
-                    gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer));
+        TempoMarker (PublicEditor& editor, ArdourCanvas::Group& parent, guint32 rgba, const string& text, ARDOUR::TempoSection&);
        ~TempoMarker ();
 
        ARDOUR::TempoSection& tempo() const { return _tempo; }
@@ -94,8 +98,7 @@ class TempoMarker : public Marker
 class MeterMarker : public Marker
 {
   public:
-       MeterMarker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, ARDOUR::MeterSection&, 
-                    gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer));
+        MeterMarker (PublicEditor& editor, ArdourCanvas::Group& parent, guint32 rgba, const string& text, ARDOUR::MeterSection&);
        ~MeterMarker ();
 
        ARDOUR::MeterSection& meter() const { return _meter; }