make knob respond to X & Y axis drags
[ardour.git] / gtk2_ardour / time_axis_view.h
index c46d23ae58b97bb314a4f4b8b88f7ae487cb9600..baeeb2a92abed5d18558bf72cc7d63381cacb1ce 100644 (file)
@@ -79,6 +79,7 @@ class GhostRegion;
 class StreamView;
 class ArdourDialog;
 class ItemCounts;
+class PasteContext;
 
 /** Abstract base class for time-axis views (horizontal editor 'strips')
  *
@@ -99,15 +100,14 @@ class TimeAxisView : public virtual AxisView
 
        static PBD::Signal1<void,TimeAxisView*> CatchDeletion;
 
+       static void setup_sizes ();
+
        /** @return index of this TimeAxisView within its parent */
        int order () const { return _order; }
 
        /** @return maximum allowable value of order */
        static int max_order () { return _max_order; }
 
-       virtual void enter_internal_edit_mode () {}
-       virtual void leave_internal_edit_mode () {}
-
        ArdourCanvas::Container* canvas_display () { return _canvas_display; }
        ArdourCanvas::Container* ghost_group () { return _ghost_group; }
 
@@ -123,7 +123,7 @@ class TimeAxisView : public virtual AxisView
 
        uint32_t current_height() const { return height; }
 
-       void idle_resize (uint32_t);
+       void idle_resize (int32_t);
 
        virtual guint32 show_at (double y, int& nth, Gtk::VBox *parent);
        virtual void hide ();
@@ -142,7 +142,13 @@ class TimeAxisView : public virtual AxisView
        virtual void entered () {}
        virtual void exited () {}
 
-       virtual void set_height (uint32_t h);
+       enum TrackHeightMode {
+               OnlySelf,
+               TotalHeight,
+               HeightPerLane
+       };
+
+       virtual void set_height (uint32_t h, TrackHeightMode m = OnlySelf);
        void set_height_enum (Height, bool apply_to_selection = false);
        void reset_height();
 
@@ -169,17 +175,12 @@ class TimeAxisView : public virtual AxisView
 
        /** Paste a selection.
         *  @param pos Position to paste to (session frames).
-        *  @param paste_count Number of pastes to the same location previously (multi-paste).
-        *  @param times Number of times to paste.
         *  @param selection Selection to paste.
-        *  @param counts Count of consumed selection items (used to find the
-        *  correct item to paste here, then updated for the next pastee).
+        *  @param ctx Paste context.
         */
        virtual bool paste (ARDOUR::framepos_t pos,
-                           unsigned           paste_count,
-                           float              times,
                            const Selection&   selection,
-                           ItemCounts&        counts) { return false; }
+                           PasteContext&      ctx) { return false; }
 
        virtual void set_selected_regionviews (RegionSelection&) {}
        virtual void set_selected_points (PointSelection&) {}
@@ -192,7 +193,7 @@ class TimeAxisView : public virtual AxisView
 
        void order_selection_trims (ArdourCanvas::Item *item, bool put_start_on_top);
 
-       virtual void get_selectables (ARDOUR::framepos_t, ARDOUR::framepos_t, double, double, std::list<Selectable*>&);
+       virtual void get_selectables (ARDOUR::framepos_t, ARDOUR::framepos_t, double, double, std::list<Selectable*>&, bool within = false);
        virtual void get_inverted_selectables (Selection&, std::list<Selectable *>& results);
 
        void add_ghost (RegionView*);