GObject canvas changes
[ardour.git] / gtk2_ardour / automation_line.h
index dbb920f52a84a08940b39aee9406a2e6a8c93796..0567abba0541b2ed25dc6863e3e81eceb6a529e8 100644 (file)
 #include <sys/types.h>
 
 #include <gtkmm.h>
-#include <libgnomecanvasmm/libgnomecanvasmm.h>
+#include <libgnomecanvasmm/line.h>
 #include <sigc++/signal.h>
-
+#include "canvas.h"
+#include "simplerect.h"
 #include <pbd/undo.h>
 
 #include <ardour/automation_event.h>
@@ -55,9 +56,9 @@ namespace Gnome {
 class ControlPoint 
 {
   public:
-        ControlPoint (AutomationLine& al, sigc::slot<bool,GdkEvent*,ControlPoint*>);
+        ControlPoint (AutomationLine& al);
        ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor);
-       ~ControlPoint ();
+       virtual ~ControlPoint ();
 
        enum ShapeType {
                Full,
@@ -77,13 +78,16 @@ class ControlPoint
        void set_size (double);
        void set_visible (bool);
 
-       Gnome::Canvas::SimpleRect* item;
+       ArdourCanvas::SimpleRect* item;
        AutomationLine& line;
        uint32_t view_index;
        ARDOUR::AutomationList::iterator model;
        bool can_slide;
        bool selected;
        
+  protected:
+       virtual bool event_handler (GdkEvent*);
+
   private:
        double _x;
        double _y;
@@ -94,9 +98,7 @@ class ControlPoint
 class AutomationLine : public sigc::trackable
 {
   public:
-        AutomationLine (string name, TimeAxisView&, Gnome::Canvas::Group&, ARDOUR::AutomationList&,
-                       sigc::slot<bool,GdkEvent*,ControlPoint*>, sigc::slot<bool,GdkEvent*,AutomationLine*>);
-
+        AutomationLine (string name, TimeAxisView&, ArdourCanvas::Group&, ARDOUR::AutomationList&);
        virtual ~AutomationLine ();
 
        void queue_reset ();
@@ -136,9 +138,9 @@ class AutomationLine : public sigc::trackable
 
        TimeAxisView& trackview;
 
-       Gnome::Canvas::Group& canvas_group() const { return *group; }
-       Gnome::Canvas::Item&  parent_group() const { return _parent_group; }
-       Gnome::Canvas::Item&  grab_item() const { return *line; }
+       ArdourCanvas::Group& canvas_group() const { return *group; }
+       ArdourCanvas::Item&  parent_group() const { return _parent_group; }
+       ArdourCanvas::Item&  grab_item() const { return *line; }
 
        void show_selection();
        void hide_selection ();
@@ -170,14 +172,12 @@ class AutomationLine : public sigc::trackable
        bool    no_draw : 1;
        bool    points_visible : 1;
        
-       Gnome::Canvas::Group&  _parent_group;
-       Gnome::Canvas::Group*   group;
-       Gnome::Canvas::Line*   line; /* line */
-       Gnome::Canvas::Points  line_points; /* coordinates for canvas line */
+       ArdourCanvas::Group&  _parent_group;
+       ArdourCanvas::Group*   group;
+       ArdourCanvas::Line*   line; /* line */
+       ArdourCanvas::Points  line_points; /* coordinates for canvas line */
        vector<ControlPoint*>  control_points; /* visible control points */
 
-       sigc::slot<bool,GdkEvent*,ControlPoint*> point_slot;
-
        struct ALPoint {
            double x;
            double y;
@@ -202,6 +202,8 @@ class AutomationLine : public sigc::trackable
        void list_changed (ARDOUR::Change);
 
        UndoAction get_memento();
+
+       virtual bool event_handler (GdkEvent*);
        
   private:
        uint32_t drags;