summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_time_axis.h
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/route_time_axis.h')
-rw-r--r--gtk2_ardour/route_time_axis.h42
1 files changed, 35 insertions, 7 deletions
diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h
index e14d682c83..42c889e16f 100644
--- a/gtk2_ardour/route_time_axis.h
+++ b/gtk2_ardour/route_time_axis.h
@@ -79,6 +79,7 @@ public:
void set_selected_regionviews (RegionSelection&);
void get_selectables (nframes_t start, nframes_t end, double top, double bot, list<Selectable *>&);
void get_inverted_selectables (Selection&, list<Selectable*>&);
+ bool show_automation(ARDOUR::ParamID param);
boost::shared_ptr<ARDOUR::Region> find_next_region (nframes_t pos, ARDOUR::RegionPoint, int32_t dir);
@@ -94,6 +95,8 @@ public:
void clear_playlist ();
void build_playlist_menu (Gtk::Menu *);
+
+ virtual void create_automation_child (ARDOUR::ParamID param) = 0;
string name() const;
StreamView* view() const { return _view; }
@@ -103,13 +106,22 @@ public:
protected:
friend class StreamView;
+ struct RouteAutomationNode {
+ ARDOUR::ParamID param;
+ Gtk::CheckMenuItem* menu_item;
+ AutomationTimeAxisView* track;
+
+ RouteAutomationNode (ARDOUR::ParamID par, Gtk::CheckMenuItem* mi, AutomationTimeAxisView* tr)
+ : param (par), menu_item (mi), track (tr) {}
+ };
+
struct InsertAutomationNode {
- uint32_t what;
+ ARDOUR::ParamID what;
Gtk::CheckMenuItem* menu_item;
AutomationTimeAxisView* view;
RouteTimeAxisView& parent;
- InsertAutomationNode (uint32_t w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p)
+ InsertAutomationNode (ARDOUR::ParamID w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p)
: what (w), menu_item (mitem), view (0), parent (p) {}
~InsertAutomationNode ();
@@ -143,15 +155,22 @@ protected:
void insert_automation_track_hidden (InsertAutomationNode*,
boost::shared_ptr<ARDOUR::Insert>);
+
+ void automation_track_hidden (ARDOUR::ParamID param);
+
+ RouteAutomationNode* automation_track(ARDOUR::ParamID param);
+ RouteAutomationNode* automation_track(ARDOUR::AutomationType type);
InsertAutomationNode*
- find_insert_automation_node (boost::shared_ptr<ARDOUR::Insert> i, uint32_t);
+ find_insert_automation_node (boost::shared_ptr<ARDOUR::Insert> i, ARDOUR::ParamID);
RedirectAutomationLine*
- find_insert_automation_curve (boost::shared_ptr<ARDOUR::Insert> i, uint32_t);
+ find_insert_automation_curve (boost::shared_ptr<ARDOUR::Insert> i, ARDOUR::ParamID);
- void add_insert_automation_curve (boost::shared_ptr<ARDOUR::Insert> r, uint32_t);
+ void add_insert_automation_curve (boost::shared_ptr<ARDOUR::Insert> r, ARDOUR::ParamID);
void add_existing_insert_automation_curves (boost::shared_ptr<ARDOUR::Insert>);
+
+ void add_automation_child(ARDOUR::ParamID param, AutomationTimeAxisView* track);
void reset_insert_automation_curves ();
@@ -186,6 +205,7 @@ protected:
void rename_current_playlist ();
void automation_click ();
+ void toggle_automation_track (ARDOUR::ParamID param);
virtual void show_all_automation ();
virtual void show_existing_automation ();
virtual void hide_all_automation ();
@@ -204,7 +224,6 @@ protected:
void region_view_added (RegionView*);
void add_ghost_to_insert (RegionView*, AutomationTimeAxisView*);
-
StreamView* _view;
ArdourCanvas::Canvas& parent_canvas;
bool no_redraw;
@@ -238,12 +257,21 @@ protected:
void _set_track_mode (ARDOUR::Track* track, ARDOUR::TrackMode mode, Gtk::RadioMenuItem* reset_item);
void track_mode_changed ();
- list<InsertAutomationInfo*> insert_automation;
+ list<InsertAutomationInfo*> insert_automation;
vector<RedirectAutomationLine*> insert_automation_curves;
+
+ // Set from XML so context menu automation buttons can be correctly initialized
+ set<ARDOUR::ParamID> _show_automation;
+
+ map<ARDOUR::ParamID, RouteAutomationNode*> _automation_tracks;
sigc::connection modified_connection;
void post_construct ();
+
+ void set_state (const XMLNode&);
+
+ XMLNode* get_child_xml_node (const string & childname);
};
#endif /* __ardour_route_time_axis_h__ */