#include "canvas/rectangle.h"
+#include "widgets/ardour_button.h"
+#include "widgets/ardour_dropdown.h"
+
#include "time_axis_view.h"
#include "automation_controller.h"
-#include "ardour_button.h"
-#include "ardour_dropdown.h"
namespace ARDOUR {
class Session;
class AutomationController;
class ItemCounts;
-class AutomationTimeAxisView : public TimeAxisView {
- public:
+class AutomationTimeAxisView : public TimeAxisView
+{
+public:
AutomationTimeAxisView (ARDOUR::Session*,
- boost::shared_ptr<ARDOUR::Stripable>,
- boost::shared_ptr<ARDOUR::Automatable>,
- boost::shared_ptr<ARDOUR::AutomationControl>,
- Evoral::Parameter,
- PublicEditor&,
- TimeAxisView& parent,
- bool show_regions,
- ArdourCanvas::Canvas& canvas,
- const std::string & name, /* translatable */
- const std::string & plug_name = "");
+ boost::shared_ptr<ARDOUR::Stripable>,
+ boost::shared_ptr<ARDOUR::Automatable>,
+ boost::shared_ptr<ARDOUR::AutomationControl>,
+ Evoral::Parameter,
+ PublicEditor&,
+ TimeAxisView& parent,
+ bool show_regions,
+ ArdourCanvas::Canvas& canvas,
+ const std::string & name, /* translatable */
+ const std::string & plug_name = "");
~AutomationTimeAxisView();
boost::shared_ptr<ARDOUR::Stripable> stripable() const;
ARDOUR::PresentationInfo const & presentation_info () const;
- void add_automation_event (GdkEvent *, framepos_t, double, bool with_guard_points);
+ void add_automation_event (GdkEvent *, samplepos_t, double, bool with_guard_points);
void clear_lines ();
std::list<boost::shared_ptr<AutomationLine> > lines () const;
void set_selected_points (PointSelection&);
- void get_selectables (ARDOUR::framepos_t start, ARDOUR::framepos_t end, double top, double bot, std::list<Selectable *>&, bool within = false);
+ void get_selectables (ARDOUR::samplepos_t start, ARDOUR::samplepos_t end, double top, double bot, std::list<Selectable *>&, bool within = false);
void get_inverted_selectables (Selection&, std::list<Selectable*>& results);
- void show_timestretch (framepos_t /*start*/, framepos_t /*end*/, int /*layers*/, int /*layer*/) {}
+ void show_timestretch (samplepos_t /*start*/, samplepos_t /*end*/, int /*layers*/, int /*layer*/) {}
void hide_timestretch () {}
/* editing operations */
void cut_copy_clear (Selection&, Editing::CutCopyOp);
- bool paste (ARDOUR::framepos_t, const Selection&, PasteContext&, const int32_t sub_num);
+ bool paste (ARDOUR::samplepos_t, const Selection&, PasteContext&, const int32_t sub_num);
int set_state (const XMLNode&, int version);
static void what_has_visible_automation (const boost::shared_ptr<ARDOUR::Automatable>& automatable, std::set<Evoral::Parameter>& visible);
- protected:
+protected:
/* Note that for MIDI controller "automation" (in regions), all of these
- may be set. In this case, _automatable is likely _route so the
- controller will send immediate events out the route's MIDI port. */
+ * may be set. In this case, _automatable is likely _route so the
+ * controller will send immediate events out the route's MIDI port. */
/** parent strip */
boost::shared_ptr<ARDOUR::Stripable> _stripable;
bool ignore_toggle;
bool first_call_to_set_height;
- ArdourButton hide_button;
- ArdourDropdown auto_dropdown;
+ ArdourWidgets::ArdourButton hide_button;
+ ArdourWidgets::ArdourDropdown auto_dropdown;
Gtk::Label* plugname;
bool plugname_packed;
Gtk::CheckMenuItem* auto_play_item;
Gtk::CheckMenuItem* auto_touch_item;
Gtk::CheckMenuItem* auto_write_item;
+ Gtk::CheckMenuItem* auto_latch_item;
Gtk::CheckMenuItem* mode_discrete_item;
Gtk::CheckMenuItem* mode_line_item;
void build_display_menu ();
void cut_copy_clear_one (AutomationLine&, Selection&, Editing::CutCopyOp);
- bool paste_one (ARDOUR::framepos_t, unsigned, float times, const Selection&, ItemCounts& counts, bool greedy=false);
+ bool paste_one (ARDOUR::samplepos_t, unsigned, float times, const Selection&, ItemCounts& counts, bool greedy=false);
void route_going_away ();
void set_automation_state (ARDOUR::AutoState);
bool ignore_state_request;
bool ignore_mode_request;
+ bool propagate_time_selection () const;
+
void automation_state_changed ();
void set_interpolation (ARDOUR::AutomationList::InterpolationStyle);
static Pango::FontDescription name_font;
static bool have_name_font;
+ std::string automation_state_off_string () const;
+
private:
int set_state_2X (const XMLNode &, int);
};