#include "enums.h"
#include "time_axis_view.h"
#include "canvas.h"
-#include "color.h"
namespace ARDOUR {
class Session;
class Region;
class Diskstream;
class RouteGroup;
- class Redirect;
- class Insert;
+ class IOProcessor;
+ class Processor;
class Location;
class Playlist;
}
class Selectable;
class AutomationTimeAxisView;
class AutomationLine;
-class RedirectAutomationLine;
+class ProcessorAutomationLine;
class TimeSelection;
class RouteTimeAxisView : public RouteUI, public TimeAxisView
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);
bool cut_copy_clear (Selection&, Editing::CutCopyOp);
bool paste (nframes_t, float times, Selection&, size_t nth);
- list<TimeAxisView*> get_child_list();
+ TimeAxisView::Children get_child_list();
/* The editor calls these when mapping an operation across multiple tracks */
void use_new_playlist (bool prompt);
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; }
protected:
friend class StreamView;
- struct RedirectAutomationNode {
- uint32_t what;
- Gtk::CheckMenuItem* menu_item;
- AutomationTimeAxisView* view;
- RouteTimeAxisView& parent;
+ struct RouteAutomationNode {
+ ARDOUR::ParamID param;
+ Gtk::CheckMenuItem* menu_item;
+ boost::shared_ptr<AutomationTimeAxisView> track;
+
+ RouteAutomationNode (ARDOUR::ParamID par, Gtk::CheckMenuItem* mi, boost::shared_ptr<AutomationTimeAxisView> tr)
+ : param (par), menu_item (mi), track (tr) {}
+ };
- RedirectAutomationNode (uint32_t w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p)
- : what (w), menu_item (mitem), view (0), parent (p) {}
+ struct ProcessorAutomationNode {
+ ARDOUR::ParamID what;
+ Gtk::CheckMenuItem* menu_item;
+ boost::shared_ptr<AutomationTimeAxisView> view;
+ RouteTimeAxisView& parent;
- ~RedirectAutomationNode ();
+ ProcessorAutomationNode (ARDOUR::ParamID w, Gtk::CheckMenuItem* mitem, RouteTimeAxisView& p)
+ : what (w), menu_item (mitem), parent (p) {}
+
+ ~ProcessorAutomationNode ();
};
- struct RedirectAutomationInfo {
- boost::shared_ptr<ARDOUR::Redirect> redirect;
- bool valid;
- Gtk::Menu* menu;
- vector<RedirectAutomationNode*> lines;
+ struct ProcessorAutomationInfo {
+ boost::shared_ptr<ARDOUR::Processor> processor;
+ bool valid;
+ Gtk::Menu* menu;
+ vector<ProcessorAutomationNode*> lines;
- RedirectAutomationInfo (boost::shared_ptr<ARDOUR::Redirect> r)
- : redirect (r), valid (true), menu (0) {}
+ ProcessorAutomationInfo (boost::shared_ptr<ARDOUR::Processor> i)
+ : processor (i), valid (true), menu (0) {}
- ~RedirectAutomationInfo ();
+ ~ProcessorAutomationInfo ();
};
gint edit_click (GdkEventButton *);
- void redirects_changed (void *);
+ void processors_changed ();
- void add_redirect_to_subplugin_menu (boost::shared_ptr<ARDOUR::Redirect>);
- void remove_ran (RedirectAutomationNode* ran);
+ void add_processor_to_subplugin_menu (boost::shared_ptr<ARDOUR::Processor>);
+ void remove_processor_automation_node (ProcessorAutomationNode* pan);
- void redirect_menu_item_toggled (RouteTimeAxisView::RedirectAutomationInfo*,
- RouteTimeAxisView::RedirectAutomationNode*);
+ void processor_menu_item_toggled (RouteTimeAxisView::ProcessorAutomationInfo*,
+ RouteTimeAxisView::ProcessorAutomationNode*);
+
+ void processor_automation_track_hidden (ProcessorAutomationNode*,
+ boost::shared_ptr<ARDOUR::Processor>);
- void redirect_automation_track_hidden (RedirectAutomationNode*,
- boost::shared_ptr<ARDOUR::Redirect>);
+ void automation_track_hidden (ARDOUR::ParamID param);
- RedirectAutomationNode*
- find_redirect_automation_node (boost::shared_ptr<ARDOUR::Redirect> r, uint32_t);
+ RouteAutomationNode* automation_track(ARDOUR::ParamID param);
+ RouteAutomationNode* automation_track(ARDOUR::AutomationType type);
+
+ ProcessorAutomationNode*
+ find_processor_automation_node (boost::shared_ptr<ARDOUR::Processor> i, ARDOUR::ParamID);
- RedirectAutomationLine*
- find_redirect_automation_curve (boost::shared_ptr<ARDOUR::Redirect> r, uint32_t);
+ boost::shared_ptr<AutomationLine>
+ find_processor_automation_curve (boost::shared_ptr<ARDOUR::Processor> i, ARDOUR::ParamID);
+
+ void add_processor_automation_curve (boost::shared_ptr<ARDOUR::Processor> r, ARDOUR::ParamID);
+ void add_existing_processor_automation_curves (boost::shared_ptr<ARDOUR::Processor>);
- void add_redirect_automation_curve (boost::shared_ptr<ARDOUR::Redirect> r, uint32_t);
- void add_existing_redirect_automation_curves (boost::shared_ptr<ARDOUR::Redirect>);
+ void add_automation_child(ARDOUR::ParamID param, boost::shared_ptr<AutomationTimeAxisView> track);
- void reset_redirect_automation_curves ();
+ void reset_processor_automation_curves ();
- void take_name_changed (void *);
- void route_name_changed (void *);
+ void take_name_changed (void *src);
+ void route_name_changed ();
void name_entry_changed ();
+ void update_rec_display ();
+
virtual void label_view ();
void add_edit_group_menu_item (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*);
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 ();
void map_frozen ();
- void color_handler (ColorID, uint32_t);
+ void color_handler ();
void region_view_added (RegionView*);
- void add_ghost_to_redirect (RegionView*, AutomationTimeAxisView*);
-
+ void add_ghost_to_processor (RegionView*, boost::shared_ptr<AutomationTimeAxisView>);
StreamView* _view;
ArdourCanvas::Canvas& parent_canvas;
Gtk::HBox other_button_hbox;
Gtk::Table button_table;
- Gtk::Button redirect_button;
+ Gtk::Button processor_button;
Gtk::Button edit_group_button;
Gtk::Button playlist_button;
Gtk::Button size_button;
void _set_track_mode (ARDOUR::Track* track, ARDOUR::TrackMode mode, Gtk::RadioMenuItem* reset_item);
void track_mode_changed ();
- list<RedirectAutomationInfo*> redirect_automation;
- vector<RedirectAutomationLine*> redirect_automation_curves;
+ list<ProcessorAutomationInfo*> processor_automation;
+
+ typedef vector<boost::shared_ptr<AutomationLine> > ProcessorAutomationCurves;
+ ProcessorAutomationCurves processor_automation_curves;
+
+ // Set from XML so context menu automation buttons can be correctly initialized
+ set<ARDOUR::ParamID> _show_automation;
+
+ typedef map<ARDOUR::ParamID, RouteAutomationNode*> AutomationTracks;
+ AutomationTracks _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__ */