summaryrefslogtreecommitdiff
path: root/gtk2_ardour/automation_time_axis.h
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
committerTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
commit209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch)
tree9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/automation_time_axis.h
parente4b9aed743fc765219ac775905a221c017c88fba (diff)
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/automation_time_axis.h')
-rw-r--r--gtk2_ardour/automation_time_axis.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h
new file mode 100644
index 0000000000..55f402aa1c
--- /dev/null
+++ b/gtk2_ardour/automation_time_axis.h
@@ -0,0 +1,121 @@
+#ifndef __ardour_gtk_automation_time_axis_h__
+#define __ardour_gtk_automation_time_axis_h__
+
+#include <vector>
+#include <list>
+#include <string>
+#include <ardour/types.h>
+
+#include "time_axis_view.h"
+
+using std::vector;
+using std::list;
+using std::string;
+
+namespace ARDOUR {
+ class Session;
+ class Route;
+}
+
+namespace Gtk {
+ class Widget;
+}
+
+class PublicEditor;
+class TimeSelection;
+class AudioRegionSelection;
+class PointSelection;
+class AutomationLine;
+class GhostRegion;
+class Selection;
+class Selectable;
+
+class AutomationTimeAxisView : public TimeAxisView {
+ public:
+ AutomationTimeAxisView (ARDOUR::Session&,
+ ARDOUR::Route&,
+ PublicEditor&,
+ TimeAxisView& parent,
+ Gtk::Widget* parent,
+ std::string name, /* translatable */
+ std::string state_name, /* not translatable */
+ std::string plug_name = "");
+
+ ~AutomationTimeAxisView();
+
+ void set_height (TimeAxisView::TrackHeight);
+ void set_samples_per_unit (double);
+ std::string name() const { return _name; }
+
+ virtual void add_automation_event (GtkCanvasItem *item, GdkEvent *event, jack_nframes_t, double) = 0;
+
+ void clear_lines ();
+ void add_line (AutomationLine&);
+
+ vector<AutomationLine*> lines;
+
+ void set_selected_points (PointSelection&);
+ void get_selectables (jack_nframes_t start, jack_nframes_t end, double top, double bot, list<Selectable *>&);
+ void get_inverted_selectables (Selection&, list<Selectable*>& results);
+
+ void show_timestretch (jack_nframes_t start, jack_nframes_t end) {}
+ void hide_timestretch () {}
+
+ /* editing operations */
+
+ bool cut_copy_clear (Selection&, Editing::CutCopyOp);
+ bool cut_copy_clear_objects (PointSelection&, Editing::CutCopyOp);
+ bool paste (jack_nframes_t, float times, Selection&, size_t nth);
+
+ void add_ghost (GhostRegion*);
+ void remove_ghost (GhostRegion*);
+
+ void show_all_control_points ();
+ void hide_all_but_selected_control_points ();
+ void set_state (const XMLNode&);
+ XMLNode* get_state_node ();
+
+ protected:
+ ARDOUR::Route& route;
+ GtkCanvasItem* base_rect;
+ string _name;
+ string _state_name;
+ bool in_destructor;
+
+ Gtk::Button hide_button;
+ Gtk::Button height_button;
+ Gtk::Button clear_button;
+ Gtk::Button auto_button;
+ Gtk::Menu* automation_menu;
+ Gtk::Label* plugname;
+ bool plugname_packed;
+
+ Gtk::CheckMenuItem* auto_off_item;
+ Gtk::CheckMenuItem* auto_play_item;
+ Gtk::CheckMenuItem* auto_touch_item;
+ Gtk::CheckMenuItem* auto_write_item;
+
+ void clear_clicked ();
+ void height_clicked ();
+ void hide_clicked ();
+ void auto_clicked ();
+
+ virtual void build_display_menu ();
+
+ list<GhostRegion*> ghosts;
+
+ bool cut_copy_clear_one (AutomationLine&, Selection&, Editing::CutCopyOp);
+ bool cut_copy_clear_objects_one (AutomationLine&, PointSelection&, Editing::CutCopyOp);
+ bool paste_one (AutomationLine&, jack_nframes_t, float times, Selection&, size_t nth);
+
+ virtual void set_automation_state (ARDOUR::AutoState) = 0;
+ bool ignore_state_request;
+
+ void automation_state_changed ();
+ SigC::Connection automation_connection;
+
+ void entered ();
+ void exited ();
+};
+
+#endif /* __ardour_gtk_automation_time_axis_h__ */