#include <list>
#include <gtkmm/box.h>
+#include <gtkmm/fixed.h>
#include <gtkmm/frame.h>
#include <gtkmm/drawingarea.h>
#include <gtkmm/eventbox.h>
#include "ardour/region.h"
#include "evoral/Parameter.hpp"
+#include "canvas/line.h"
+
#include "prompter.h"
#include "axis_view.h"
#include "enums.h"
class GhostRegion;
class StreamView;
class ArdourDialog;
+class ItemCounts;
+class PasteContext;
/** Abstract base class for time-axis views (horizontal editor 'strips')
*
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; }
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 ();
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();
/* editing operations */
virtual void cut_copy_clear (Selection&, Editing::CutCopyOp) {}
- virtual bool paste (ARDOUR::framepos_t, float /*times*/, Selection&, size_t /*nth*/) { return false; }
+
+ /** Paste a selection.
+ * @param pos Position to paste to (session frames).
+ * @param selection Selection to paste.
+ * @param ctx Paste context.
+ */
+ virtual bool paste (ARDOUR::framepos_t pos,
+ const Selection& selection,
+ PasteContext& ctx) { return false; }
virtual void set_selected_regionviews (RegionSelection&) {}
virtual void set_selected_points (PointSelection&) {}
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*);
protected:
static Glib::RefPtr<Gtk::SizeGroup> controls_meters_size_group;
+ static Glib::RefPtr<Gtk::SizeGroup> midi_scroomer_size_group;
static unsigned int name_width_px;
/* The Standard LHS Controls */
Gtk::Table controls_table;
Gtk::EventBox controls_ebox;
Gtk::VBox controls_vbox;
Gtk::VBox time_axis_vbox;
+ Gtk::HBox time_axis_hbox;
Gtk::Frame time_axis_frame;
Gtk::HBox name_hbox;
Gtk::HBox top_hbox;
Gtk::Label name_label;
+ Gtk::Fixed scroomer_placeholder;
bool _name_editing;
uint32_t height; /* in canvas units */
std::string controls_base_unselected_name;
bool _hidden;
bool in_destructor;
Gtk::Menu* _size_menu;
+ ArdourCanvas::Line* _canvas_separator;
ArdourCanvas::Container* _canvas_display;
double _y_position;
PublicEditor& _editor;
int _order;
uint32_t _effective_height;
double _resize_drag_start;
+ bool _did_resize;
GdkCursor* _preresize_cursor;
bool _have_preresize_cursor;
- bool _ebox_release_can_act;
+ bool _ebox_release_can_act;
static uint32_t button_height;
static uint32_t extra_height;