Per-region MIDI CC "automation".
[ardour.git] / gtk2_ardour / marker_time_axis_view.cc
index b07448e1a60780ac4c549555f080424382a3e28a..d10ec4dae91fdc658ba231b4ec01d05649a402be 100644 (file)
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #include <algorithm>
 
-#include <gtk--.h>
-#include <gtkmmext/gtk_ui.h>
+#include <gtkmm.h>
+#include <gtkmm2ext/gtk_ui.h>
 
 #include "marker_time_axis_view.h"
 #include "marker_time_axis.h"
@@ -32,6 +31,7 @@
 #include "public_editor.h"
 #include "rgb_macros.h"
 #include "gui_thread.h"
+#include "ardour_ui.h"
 
 #include "i18n.h"
 
@@ -50,25 +50,23 @@ MarkerTimeAxisView::MarkerTimeAxisView(MarkerTimeAxis& tv)
        : _trackview (tv)
 {
        region_color = _trackview.color();
-       stream_base_color = color_map[cMarkerTrackBase];
-
-       canvas_group = gtk_canvas_item_new (GTK_CANVAS_GROUP(_trackview.canvas_display), gtk_canvas_group_get_type (), 0);
-
-       canvas_rect = gtk_canvas_item_new (GTK_CANVAS_GROUP(canvas_group),
-               gtk_canvas_simplerect_get_type(),
-               "x1", 0.0,
-               "y1", 0.0,
-               "x2", 1000000.0,
-               "y2", (double)20,
-               "outline_color_rgba", color_map[cMarkerTrackOutline],
-               "fill_color_rgba", stream_base_color,
-               0) ;
-                                          
-       gtk_signal_connect(GTK_OBJECT(canvas_rect), "event", (GtkSignalFunc)PublicEditor::canvas_marker_time_axis_view_event, &_trackview) ;
+       stream_base_color = ARDOUR_UI::config()->canvasvar_MarkerTrack.get();
+
+       canvas_group = new ArdourCanvas::Group (*_trackview.canvas_display);
+
+       canvas_rect =  new ArdourCanvas::SimpleRect (*canvas_group);
+       canvas_rect->property_x1() = 0.0;
+       canvas_rect->property_y1() = 0.0;
+       canvas_rect->property_x2() = max_frames;
+       canvas_rect->property_y2() = (double)20;
+       canvas_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerTrack.get();
+       canvas_rect->property_fill_color_rgba() = stream_base_color;
+                  
+       canvas_rect->signal_event().connect (bind (mem_fun (_trackview.editor, &PublicEditor::canvas_marker_time_axis_view_event), canvas_rect, &_trackview));
 
        _samples_per_unit = _trackview.editor.get_current_zoom() ;
 
-       _trackview.editor.ZoomChanged.connect (slot(*this, &MarkerTimeAxisView::reset_samples_per_unit));
+       _trackview.editor.ZoomChanged.connect (mem_fun(*this, &MarkerTimeAxisView::reset_samples_per_unit));
 }
 
 /**
@@ -95,13 +93,13 @@ MarkerTimeAxisView::~MarkerTimeAxisView()
        
        if(canvas_rect)
        {
-               gtk_object_destroy(GTK_OBJECT(canvas_rect)) ;
+               delete canvas_rect;
                canvas_rect = 0 ;
        }
        
        if(canvas_group)
        {
-               gtk_object_destroy(GTK_OBJECT(canvas_group)) ;
+               delete canvas_group;
                canvas_group = 0 ;
        }
 }
@@ -118,16 +116,14 @@ MarkerTimeAxisView::~MarkerTimeAxisView()
 int
 MarkerTimeAxisView::set_height(gdouble h)
 {
-       if (h < 10.0 || h > 1000.0)
-       {
-               return -1 ;
+       if (h < 10.0 || h > 1000.0) {
+               return -1;
        }
        
-       gtk_object_set (GTK_OBJECT(canvas_rect), "y2", h, NULL);
+       canvas_rect->property_y2() = h;
 
-       for (MarkerViewList::iterator i = marker_view_list.begin(); i != marker_view_list.end(); ++i)
-       {
-               (*i)->set_height(h) ;
+       for (MarkerViewList::iterator i = marker_view_list.begin(); i != marker_view_list.end(); ++i) {
+               (*i)->set_y_position_and_height(0, h);
        }
 
        return 0;
@@ -142,7 +138,8 @@ MarkerTimeAxisView::set_height(gdouble h)
 int
 MarkerTimeAxisView::set_position(gdouble x, gdouble y)
 {
-       gtk_canvas_item_set (canvas_group, "x", x, "y", y, NULL);
+       canvas_group->property_x() = x;
+       canvas_group->property_y() = y;
        return 0;
 }
 
@@ -174,7 +171,7 @@ MarkerTimeAxisView::set_samples_per_unit(gdouble spp)
  * @param color the new base color
  */
 void
-MarkerTimeAxisView::apply_color(GdkColor& color)
+MarkerTimeAxisView::apply_color(Gdk::Color& color)
 {
        region_color = color;
 
@@ -200,14 +197,14 @@ MarkerTimeAxisView::apply_color(GdkColor& color)
  * @param src the identity of the object that initiated the change
  */     
 MarkerView*
-MarkerTimeAxisView::add_marker_view(ImageFrameView* ifv, std::string mark_type, std::string mark_id, jack_nframes_t start, jack_nframes_t dur, void* src)
+MarkerTimeAxisView::add_marker_view(ImageFrameView* ifv, std::string mark_type, std::string mark_id, nframes_t start, nframes_t dur, void* src)
 {
        if(ifv->has_marker_view_item(mark_id))
        {
                return(0) ;
        }
        
-       MarkerView* mv = new MarkerView(GTK_CANVAS_GROUP(canvas_group),
+       MarkerView* mv = new MarkerView(canvas_group,
                 &_trackview,
                 ifv,
                 _trackview.editor.get_current_zoom(),
@@ -220,7 +217,7 @@ MarkerTimeAxisView::add_marker_view(ImageFrameView* ifv, std::string mark_type,
        ifv->add_marker_view_item(mv, src) ;
        marker_view_list.push_front(mv) ;
        
-       mv->GoingAway.connect(bind (slot (*this,&MarkerTimeAxisView::remove_marker_view), (void*)this)) ;
+       mv->GoingAway.connect(bind (mem_fun(*this,&MarkerTimeAxisView::remove_marker_view), (void*)this)) ;
        
         MarkerViewAdded(mv,src) ; /* EMIT_SIGNAL */
        
@@ -322,7 +319,7 @@ MarkerTimeAxisView::remove_named_marker_view(std::string item_id, void* src)
 void
 MarkerTimeAxisView::remove_marker_view(MarkerView* mv, void* src)
 {
-       ENSURE_GUI_THREAD(bind (slot (*this, &MarkerTimeAxisView::remove_marker_view), mv, src));
+       ENSURE_GUI_THREAD(bind (mem_fun(*this, &MarkerTimeAxisView::remove_marker_view), mv, src));
        
        MarkerViewList::iterator i;
 
@@ -346,7 +343,7 @@ MarkerTimeAxisView::set_marker_duration_sec(double sec)
 {
   if(get_selected_time_axis_item() != 0)
   {
-         get_selected_time_axis_item()->set_duration((jack_nframes_t) (sec * _trackview.editor.current_session()->frame_rate()), this) ;
+         get_selected_time_axis_item()->set_duration((nframes_t) (sec * _trackview.editor.current_session()->frame_rate()), this) ;
   }
 }