remove timebar canvas and just use a single canvas instead. This is just part one...
[ardour.git] / gtk2_ardour / editor.h
index 38045f25749d1ac609ebe8715072354945d3709c..9f71ec620fb8a8e1b328fd894cd6fd4a0516cc78 100644 (file)
@@ -51,7 +51,7 @@
 #include "gtk-custom-ruler.h"
 #include "ardour_button.h"
 #include "ardour_dialog.h"
-#include "ardour_menu.h"
+#include "ardour_dropdown.h"
 #include "public_editor.h"
 #include "editing.h"
 #include "enums.h"
@@ -319,6 +319,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void nudge_forward_capture_offset ();
        void nudge_backward_capture_offset ();
 
+       void sequence_regions ();
+
        /* playhead/screen stuff */
 
        void set_stationary_playhead (bool yn);
@@ -447,7 +449,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        ArdourCanvas::Group* get_trackview_group () const { return _trackview_group; }
         ArdourCanvas::Group* get_time_bars_group () const;
         ArdourCanvas::Group* get_track_canvas_group () const;
-        ArdourCanvas::GtkCanvasViewport* get_time_bars_canvas () const;
         ArdourCanvas::GtkCanvasViewport* get_track_canvas () const;
 
         void override_visible_track_count ();
@@ -693,9 +694,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        ArdourCanvas::GtkCanvas* _track_canvas;
        ArdourCanvas::GtkCanvasViewport* _track_canvas_viewport;
 
-        ArdourCanvas::GtkCanvas* _time_bars_canvas;
-        ArdourCanvas::GtkCanvasViewport* _time_bars_canvas_viewport;
-
        bool within_track_canvas;
 
        friend class VerboseCursor;
@@ -731,12 +729,31 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        ArdourCanvas::Group*      transport_marker_bar_group;
        ArdourCanvas::Group*      cd_marker_bar_group;
 
-       /* The group containing all trackviews.  Only scrolled vertically. */
+       /* The group containing all other groups that are scrolled vertically
+          and horizontally.
+       */
+        ArdourCanvas::Group* hv_scroll_group;
+
+       /* The group containing all other groups that are scrolled vertically ONLY
+       */
+        ArdourCanvas::Group* v_scroll_group;
+
+       /* The group containing all other groups that are scrolled horizontally ONLY
+       */
+        ArdourCanvas::Group* h_scroll_group;
+
+       /* The group containing all trackviews. */
        ArdourCanvas::Group* _trackview_group;
 
        /* The group used for region motion.  Sits on top of _trackview_group */
        ArdourCanvas::Group* _region_motion_group;
 
+        /* a rect that sits at the bottom of all tracks to act as a drag-no-drop/clickable
+        * target area.
+        */
+        ArdourCanvas::Rectangle* _canvas_bottom_rect;
+        bool canvas_bottom_rect_event (GdkEvent* event);
+
        enum RulerType {
                ruler_metric_timecode = 0,
                ruler_metric_bbt = 1,
@@ -1037,7 +1054,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        /* track views */
        TrackViewList track_views;
        std::pair<TimeAxisView*, double> trackview_by_y_position (double);
-       TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const;
+       RouteTimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const;
 
        TrackViewList get_tracks_for_range_action () const;
 
@@ -1345,7 +1362,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void escape ();
 
        Gtk::Menu fade_context_menu;
-       void popup_fade_context_menu (int, int, ArdourCanvas::Item*, ItemType);
 
        Gtk::Menu xfade_in_context_menu;
        Gtk::Menu xfade_out_context_menu;
@@ -1393,9 +1409,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        bool canvas_start_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
        bool canvas_end_xfade_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
        bool canvas_fade_in_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
-       bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
+       bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*, bool trim = false);
        bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
-       bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*);
+       bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*, bool trim = false);
        bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
        bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
        bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*);
@@ -1448,7 +1464,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
 
        Gtk::Allocation _canvas_viewport_allocation;
        void track_canvas_viewport_allocate (Gtk::Allocation alloc);
-       bool track_canvas_viewport_size_allocated ();
+       void track_canvas_viewport_size_allocated ();
        bool track_canvas_drag_motion (Glib::RefPtr<Gdk::DragContext> const &, int, int, guint);
        bool track_canvas_key_press (GdkEventKey *);
        bool track_canvas_key_release (GdkEventKey *);
@@ -1565,10 +1581,11 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
 
        ArdourButton              tav_expand_button;
        ArdourButton              tav_shrink_button;
-       ArdourMenu                visible_tracks_selector;
-        int32_t                   _visible_track_count;
-        void build_track_count_menu ();
-        void set_visible_track_count (int32_t);
+       ArdourDropdown            visible_tracks_selector;
+
+    int32_t                   _visible_track_count;
+    void build_track_count_menu ();
+    void set_visible_track_count (int32_t);
 
        Gtk::VBox                toolbar_clock_vbox;
        Gtk::VBox                toolbar_selection_clock_vbox;
@@ -1600,7 +1617,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        Gtk::Button              automation_mode_button;
 
        //edit mode menu stuff
-       ArdourMenu      edit_mode_selector;
+       ArdourDropdown  edit_mode_selector;
        void edit_mode_selection_done ( ARDOUR::EditMode m );
        void build_edit_mode_menu ();
        Gtk::VBox         edit_mode_box;
@@ -1609,10 +1626,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void set_edit_mode (ARDOUR::EditMode);
        void cycle_edit_mode ();
 
-       ArdourMenu snap_type_selector;
+       ArdourDropdown snap_type_selector;
        void build_snap_type_menu ();
 
-       ArdourMenu snap_mode_selector;
+       ArdourDropdown snap_mode_selector;
        void build_snap_mode_menu ();
        Gtk::HBox         snap_box;
 
@@ -1628,7 +1645,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        Glib::RefPtr<Gtk::RadioAction> snap_mode_action (Editing::SnapMode);
 
        //zoom focus meu stuff
-       ArdourMenu      zoom_focus_selector;
+       ArdourDropdown  zoom_focus_selector;
        void zoom_focus_selection_done ( Editing::ZoomFocus f );
        void build_zoom_focus_menu ();
        std::vector<std::string> zoom_focus_strings;
@@ -1954,7 +1971,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
 
        Editing::EditPoint _edit_point;
 
-       ArdourMenu edit_point_selector;
+       ArdourDropdown edit_point_selector;
        void build_edit_point_menu();
 
        void set_edit_point_preference (Editing::EditPoint ep, bool force = false);