Merging from trunk
[ardour.git] / gtk2_ardour / audio_time_axis.h
index 780469ccb922037657ae5d265c79531269740033..b319d0ea9945c08733712f68a0cf3f222c908ded 100644 (file)
 #ifndef __ardour_trackview_h__
 #define __ardour_trackview_h__
 
-#include <gtkmm.h>
-#include <gtk-canvas.h>
+#include <gtkmm/table.h>
+#include <gtkmm/button.h>
+#include <gtkmm/box.h>
+#include <gtkmm/menu.h>
+#include <gtkmm/menuitem.h>
+#include <gtkmm/radiomenuitem.h>
+#include <gtkmm/checkmenuitem.h>
+
 #include <gtkmm2ext/selector.h>
-#include <gtkmm2ext/popup_selector.h>
 #include <list>
 
 #include <ardour/types.h>
@@ -34,6 +39,8 @@
 #include "route_ui.h"
 #include "enums.h"
 #include "time_axis_view.h"
+#include "canvas.h"
+#include "color.h"
 
 namespace ALSA {
        class MultiChannelDevice;
@@ -41,7 +48,7 @@ namespace ALSA {
 
 namespace ARDOUR {
        class Session;
-       class DiskStream;
+       class AudioDiskstream;
        class RouteGroup;
        class Redirect;
        class Insert;
@@ -70,7 +77,7 @@ class AutomationTimeAxisView;
 class AudioTimeAxisView : public RouteUI, public TimeAxisView
 {
   public:
-       AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, ARDOUR::Route&, Gtk::Widget *canvas);
+       AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, ARDOUR::Route&, ArdourCanvas::Canvas& canvas);
        virtual ~AudioTimeAxisView ();
 
        void show_selection (TimeSelection&);
@@ -117,13 +124,19 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
        list<TimeAxisView*>get_child_list();
 
        void set_state (const XMLNode&);
-       XMLNode* get_child_xml_node (std::string childname);
+       XMLNode* get_child_xml_node (const string & childname);
+
+       /* the editor calls these when mapping an operation across multiple tracks */
+
+       void use_new_playlist (bool prompt);
+       void use_copy_playlist (bool prompt);
+       void clear_playlist ();
 
   private:
        friend class StreamView;
        friend class AudioRegionView;
 
-       Gtk::Widget* parent_canvas;
+       ArdourCanvas::Canvas& parent_canvas;
 
        bool         no_redraw;
   
@@ -152,22 +165,6 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
        
        gint edit_click  (GdkEventButton *);
 
-       /* Redirect handling */
-
-       ArdourDialog redirect_window;
-       Gtk::CList  redirect_display;
-       Gtk::Button redirect_add_button;
-       Gtk::Button redirect_remove_button;
-       Gtk::Button redirect_up_button;
-       Gtk::Button redirect_down_button;
-       Gtk::Button redirect_edit_button;
-       Gtk::HBox   redirect_button_box;
-       Gtk::VBox   redirect_vpacker;
-       Gtk::HBox   redirect_display_hpacker;
-
-       int redirect_selected_row;
-
-
        // variables to get the context menu
        // automation buttons correctly initialized
        bool show_gain_automation;
@@ -188,20 +185,15 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
 
        void take_name_changed (void *);
        void route_name_changed (void *);
-       void name_entry_activated ();
        void name_entry_changed ();
-       gint name_entry_focus_out_handler (GdkEventFocus*);
-       gint name_entry_key_release_handler (GdkEventKey*);
-       gint name_entry_button_release_handler (GdkEventButton*);
-       gint name_entry_button_press_handler (GdkEventButton*);
+
        void on_area_realize ();
 
        virtual void label_view ();
 
        Gtk::Menu edit_group_menu;
-       Gtk::RadioMenuItem::Group edit_group_menu_radio_group;
 
-       void add_edit_group_menu_item (ARDOUR::RouteGroup *);
+       void add_edit_group_menu_item (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*);
        void set_edit_group_from_menu (ARDOUR::RouteGroup *);
 
        void reset_samples_per_unit ();
@@ -240,10 +232,6 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
        void playlist_modified ();
 
        void add_playlist_to_playlist_menu (ARDOUR::Playlist*);
-       void playlist_selected (ARDOUR::AudioPlaylist*);
-       void use_new_playlist ();
-       void use_copy_playlist ();
-       void clear_playlist ();
        void rename_current_playlist ();
 
        /* automation stuff */
@@ -299,7 +287,7 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
        void add_redirect_automation_curve (ARDOUR::Redirect*, uint32_t);
        void add_existing_redirect_automation_curves (ARDOUR::Redirect*);
 
-       GtkCanvasItem *timestretch_rect;
+       ArdourCanvas::SimpleRect *timestretch_rect;
 
        void timestretch (jack_nframes_t start, jack_nframes_t end);
 
@@ -325,6 +313,9 @@ class AudioTimeAxisView : public RouteUI, public TimeAxisView
        void add_ghost_to_redirect (AudioRegionView*, AutomationTimeAxisView*);
 
        void map_frozen ();
+
+       void color_handler (ColorID, uint32_t);
+       bool select_me (GdkEventButton*);
 };
 
 #endif /* __ardour_trackview_h__ */