From 08a6f9bbb52ef117c0b72555f0ba722d8215fb1b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 14 Nov 2005 16:24:21 +0000 Subject: [PATCH] editor_canvas_events.cc now compiles git-svn-id: svn://localhost/trunk/ardour2@92 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/canvas.h | 20 ++ gtk2_ardour/canvas_impl.h | 13 + gtk2_ardour/editor.h | 384 +++++++++++------------ gtk2_ardour/editor_canvas_events.cc | 455 ++++++---------------------- gtk2_ardour/public_editor.h | 60 ++-- gtk2_ardour/time_axis_view.cc | 14 +- gtk2_ardour/time_axis_view.h | 12 +- 7 files changed, 369 insertions(+), 589 deletions(-) create mode 100644 gtk2_ardour/canvas.h create mode 100644 gtk2_ardour/canvas_impl.h diff --git a/gtk2_ardour/canvas.h b/gtk2_ardour/canvas.h new file mode 100644 index 0000000000..da6ffb371d --- /dev/null +++ b/gtk2_ardour/canvas.h @@ -0,0 +1,20 @@ +#ifndef __ardour_gtk_canvas_h__ +#define __ardour_gtk_canvas_h__ + +namespace Gnome { + namespace Canvas { + class Item; + class Group; + class Canvas; + class SimpleRect; + class SimpleLine; + class Polygon; + class WaveView; + class Text; + class Line; + } +} + +namespace ArdourCanvas = Gnome::Canvas; + +#endif /* __ardour_gtk_canvas_h__ */ diff --git a/gtk2_ardour/canvas_impl.h b/gtk2_ardour/canvas_impl.h new file mode 100644 index 0000000000..f492d2901e --- /dev/null +++ b/gtk2_ardour/canvas_impl.h @@ -0,0 +1,13 @@ +#ifndef __ardour_gtk_canvas_impl_h__ +#define __ardour_gtk_canvas_impl_h__ + +#include +#include +#include +#include +#include +#include + +using namespace ArdourCanvas; + +#endif /* __ardour_gtk_canvas_impl_h__ */ diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 3602e4348c..d691ae6152 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -27,6 +27,10 @@ #include #include +#include +#include +#include + #include #include @@ -34,12 +38,6 @@ #include #include -#include -#include -#include -#include -#include - #include #include @@ -57,7 +55,7 @@ #include "editing.h" #include "enums.h" #include "region_selection.h" -#include "simplerect.h" +#include "canvas.h" namespace Gtkmm2ext { class TearOff; @@ -394,7 +392,7 @@ class Editor : public PublicEditor void refresh_location_display_internal (ARDOUR::Locations::LocationList&); void add_new_location (ARDOUR::Location *); void location_gone (ARDOUR::Location *); - void remove_marker (Gnome::Canvas::Item&, GdkEvent*); + void remove_marker (ArdourCanvas::Item&, GdkEvent*); gint really_remove_marker (ARDOUR::Location* loc); uint32_t location_marker_color; @@ -422,7 +420,7 @@ class Editor : public PublicEditor typedef std::map LocationMarkerMap; LocationMarkerMap location_markers; - void hide_marker (Gnome::Canvas::Item*, GdkEvent*); + void hide_marker (ArdourCanvas::Item*, GdkEvent*); void clear_marker_display (); void mouse_add_new_marker (jack_nframes_t where); @@ -476,18 +474,19 @@ class Editor : public PublicEditor Gdk::Cursor* current_canvas_cursor; - Gnome::Canvas::CanvasAA track_canvas; - Gnome::Canvas::CanvasAA time_canvas; + ArdourCanvas::CanvasAA track_canvas; + ArdourCanvas::CanvasAA time_canvas; - Gnome::Canvas::Text* first_action_message; - Gnome::Canvas::Text* verbose_canvas_cursor; + ArdourCanvas::Text* first_action_message; + ArdourCanvas::Text* verbose_canvas_cursor; bool verbose_cursor_visible; void session_control_changed (ARDOUR::Session::ControlType); void queue_session_control_changed (ARDOUR::Session::ControlType); - gint track_canvas_motion (GdkEvent*); + bool track_canvas_motion (GdkEvent*); + void set_verbose_canvas_cursor (string, double x, double y); void set_verbose_canvas_cursor_text (string); void show_verbose_canvas_cursor(); @@ -502,15 +501,15 @@ class Editor : public PublicEditor Gtk::EventBox track_canvas_event_box; Gtk::EventBox time_button_event_box; - Gnome::Canvas::Group *minsec_group; - Gnome::Canvas::Group *bbt_group; - Gnome::Canvas::Group *smpte_group; - Gnome::Canvas::Group *frame_group; - Gnome::Canvas::Group *tempo_group; - Gnome::Canvas::Group *meter_group; - Gnome::Canvas::Group *marker_group; - Gnome::Canvas::Group *range_marker_group; - Gnome::Canvas::Group *transport_marker_group; + ArdourCanvas::Group *minsec_group; + ArdourCanvas::Group *bbt_group; + ArdourCanvas::Group *smpte_group; + ArdourCanvas::Group *frame_group; + ArdourCanvas::Group *tempo_group; + ArdourCanvas::Group *meter_group; + ArdourCanvas::Group *marker_group; + ArdourCanvas::Group *range_marker_group; + ArdourCanvas::Group *transport_marker_group; enum { ruler_metric_smpte = 0, @@ -571,24 +570,24 @@ class Editor : public PublicEditor guint32 visible_timebars; Gtk::Menu *editor_ruler_menu; - Gnome::Canvas::SimpleRect* tempo_bar; - Gnome::Canvas::SimpleRect* meter_bar; - Gnome::Canvas::SimpleRect* marker_bar; - Gnome::Canvas::SimpleRect* range_marker_bar; - Gnome::Canvas::SimpleRect* transport_marker_bar; + ArdourCanvas::SimpleRect* tempo_bar; + ArdourCanvas::SimpleRect* meter_bar; + ArdourCanvas::SimpleRect* marker_bar; + ArdourCanvas::SimpleRect* range_marker_bar; + ArdourCanvas::SimpleRect* transport_marker_bar; - Gnome::Canvas::Line* tempo_line; - Gnome::Canvas::Line* meter_line; - Gnome::Canvas::Line* marker_line; - Gnome::Canvas::Line* range_marker_line; - Gnome::Canvas::Line* transport_marker_line; + ArdourCanvas::Line* tempo_line; + ArdourCanvas::Line* meter_line; + ArdourCanvas::Line* marker_line; + ArdourCanvas::Line* range_marker_line; + ArdourCanvas::Line* transport_marker_line; - Gnome::Canvas::Points tempo_line_points; - Gnome::Canvas::Points meter_line_points; - Gnome::Canvas::Points marker_line_points; - Gnome::Canvas::Points range_marker_line_points; - Gnome::Canvas::Points transport_marker_line_points; + ArdourCanvas::Points tempo_line_points; + ArdourCanvas::Points meter_line_points; + ArdourCanvas::Points marker_line_points; + ArdourCanvas::Points range_marker_line_points; + ArdourCanvas::Points transport_marker_line_points; Gtk::Label minsec_label; Gtk::Label bbt_label; @@ -606,8 +605,8 @@ class Editor : public PublicEditor struct Cursor { Editor& editor; - Gnome::Canvas::Points* points; - Gnome::Canvas::Item* canvas_item; + ArdourCanvas::Points* points; + ArdourCanvas::Item* canvas_item; jack_nframes_t current_frame; double length; @@ -625,7 +624,7 @@ class Editor : public PublicEditor Cursor* playhead_cursor; Cursor* edit_cursor; - Gnome::Canvas::Group* cursor_group; + ArdourCanvas::Group* cursor_group; void cursor_to_next_region_point (Cursor*, ARDOUR::RegionPoint); void cursor_to_previous_region_point (Cursor*, ARDOUR::RegionPoint); @@ -825,12 +824,12 @@ class Editor : public PublicEditor jack_nframes_t cut_buffer_start; jack_nframes_t cut_buffer_length; - gint typed_event (GnomeCanvasItem*, GdkEvent*, ItemType); - gint button_press_handler (Gnome::Canvas::Item*, GdkEvent*, ItemType); - gint button_release_handler (Gnome::Canvas::Item*, GdkEvent*, ItemType); - gint motion_handler (Gnome::Canvas::Item*, GdkEvent*, ItemType); - gint enter_handler (Gnome::Canvas::Item*, GdkEvent*, ItemType); - gint leave_handler (Gnome::Canvas::Item*, GdkEvent*, ItemType); + bool typed_event (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool button_press_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool button_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool motion_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool enter_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool leave_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); /* KEYMAP HANDLING */ @@ -1053,7 +1052,7 @@ class Editor : public PublicEditor void queue_route_list_reordered (); struct DragInfo { - Gnome::Canvas::Item* item; + ArdourCanvas::Item* item; void* data; jack_nframes_t last_frame_position; int32_t pointer_frame_offset; @@ -1065,8 +1064,8 @@ class Editor : public PublicEditor double cumulative_y_drag; double current_pointer_x; double current_pointer_y; - void (Editor::*motion_callback)(Gnome::Canvas::Item*, GdkEvent*); - void (Editor::*finished_callback)(Gnome::Canvas::Item*, GdkEvent*); + void (Editor::*motion_callback)(ArdourCanvas::Item*, GdkEvent*); + void (Editor::*finished_callback)(ArdourCanvas::Item*, GdkEvent*); TimeAxisView* last_trackview; bool x_constrained; bool copy; @@ -1086,56 +1085,56 @@ class Editor : public PublicEditor LineDragInfo current_line_drag_info; void start_grab (GdkEvent*, Gdk::Cursor* cursor = 0); - bool end_grab (Gnome::Canvas::Item*, GdkEvent*); + bool end_grab (ArdourCanvas::Item*, GdkEvent*); Gtk::Menu fade_context_menu; - void popup_fade_context_menu (int, int, Gnome::Canvas::Item*, ItemType); + void popup_fade_context_menu (int, int, ArdourCanvas::Item*, ItemType); - void start_fade_in_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_fade_out_grab (Gnome::Canvas::Item*, GdkEvent*); - void fade_in_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void fade_out_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void fade_in_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void fade_out_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); + void start_fade_in_grab (ArdourCanvas::Item*, GdkEvent*); + void start_fade_out_grab (ArdourCanvas::Item*, GdkEvent*); + void fade_in_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void fade_out_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void fade_in_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void fade_out_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); std::set motion_frozen_playlists; - void region_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void region_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void region_copy_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); + void region_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void region_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void region_copy_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); - void cursor_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void cursor_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void marker_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void marker_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void control_point_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void control_point_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void line_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void line_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); + void cursor_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void cursor_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void marker_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void marker_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void control_point_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void control_point_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void line_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void line_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); - void tempo_marker_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void tempo_marker_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); - void meter_marker_drag_motion_callback (Gnome::Canvas::Item*, GdkEvent*); - void meter_marker_drag_finished_callback (Gnome::Canvas::Item*, GdkEvent*); + void tempo_marker_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void tempo_marker_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + void meter_marker_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void meter_marker_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); - gint mouse_rename_region (Gnome::Canvas::Item*, GdkEvent*); + gint mouse_rename_region (ArdourCanvas::Item*, GdkEvent*); - void start_region_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_region_copy_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_region_brush_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_selection_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_cursor_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_marker_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_control_point_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_line_grab_from_regionview (Gnome::Canvas::Item*, GdkEvent*); - void start_line_grab_from_line (Gnome::Canvas::Item*, GdkEvent*); + void start_region_grab (ArdourCanvas::Item*, GdkEvent*); + void start_region_copy_grab (ArdourCanvas::Item*, GdkEvent*); + void start_region_brush_grab (ArdourCanvas::Item*, GdkEvent*); + void start_selection_grab (ArdourCanvas::Item*, GdkEvent*); + void start_cursor_grab (ArdourCanvas::Item*, GdkEvent*); + void start_marker_grab (ArdourCanvas::Item*, GdkEvent*); + void start_control_point_grab (ArdourCanvas::Item*, GdkEvent*); + void start_line_grab_from_regionview (ArdourCanvas::Item*, GdkEvent*); + void start_line_grab_from_line (ArdourCanvas::Item*, GdkEvent*); void start_line_grab (AutomationLine *, GdkEvent*); - void start_tempo_marker_grab (Gnome::Canvas::Item*, GdkEvent*); - void start_meter_marker_grab (Gnome::Canvas::Item*, GdkEvent*); + void start_tempo_marker_grab (ArdourCanvas::Item*, GdkEvent*); + void start_meter_marker_grab (ArdourCanvas::Item*, GdkEvent*); void region_view_item_click (AudioRegionView&, GdkEventButton*); - void remove_gain_control_point (Gnome::Canvas::Item*, GdkEvent*); - void remove_control_point (Gnome::Canvas::Item*, GdkEvent*); + void remove_gain_control_point (ArdourCanvas::Item*, GdkEvent*); + void remove_control_point (ArdourCanvas::Item*, GdkEvent*); void mouse_brush_insert_region (AudioRegionView*, jack_nframes_t pos); void brush (jack_nframes_t); @@ -1147,32 +1146,36 @@ class Editor : public PublicEditor // FIXED FOR GTK2 - bool canvas_control_point_event (GdkEvent* event,ControlPoint*); - bool canvas_line_event (GdkEvent* event,AutomationLine*); - bool canvas_selection_rect_event (GdkEvent* event,SelectionRect*); - bool canvas_selection_start_trim_event (GdkEvent* event,SelectionRect*); - bool canvas_selection_end_trim_event (GdkEvent* event,SelectionRect*); - + + bool canvas_control_point_event (GdkEvent* event,ArdourCanvas::Item*, ControlPoint*); + bool canvas_line_event (GdkEvent* event,ArdourCanvas::Item*, AutomationLine*); + bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); + bool canvas_selection_start_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); + bool canvas_selection_end_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); + bool canvas_crossfade_view_event (GdkEvent* event,ArdourCanvas::Item*, CrossfadeView*); + bool canvas_fade_in_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_region_view_name_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*); + bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, AudioTimeAxisView*); + bool canvas_marker_event (GdkEvent* event,ArdourCanvas::Item*, Marker*); + bool canvas_zoom_rect_event (GdkEvent* event,ArdourCanvas::Item*); + bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*); + bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*); + bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) ; + + bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); + // PENDING - gint canvas_crossfade_view_event (GdkEvent* event); - gint canvas_fade_in_event (GdkEvent* event); - gint canvas_fade_in_handle_event (GdkEvent* event); - gint canvas_fade_out_event (GdkEvent* event); - gint canvas_fade_out_handle_event (GdkEvent* event); - gint canvas_region_view_event (GdkEvent* event); - gint canvas_region_view_name_highlight_event (GdkEvent* event); - gint canvas_region_view_name_event (GdkEvent* event); - gint canvas_stream_view_event (GdkEvent* event); - gint canvas_marker_event (GdkEvent* event); - gint canvas_zoom_rect_event (GdkEvent* event); - gint canvas_tempo_marker_event (GdkEvent* event); - gint canvas_meter_marker_event (GdkEvent* event); - gint canvas_tempo_bar_event (GdkEvent* event); - gint canvas_meter_bar_event (GdkEvent* event); - gint canvas_marker_bar_event (GdkEvent* event); - gint canvas_range_marker_bar_event (GdkEvent* event); - gint canvas_transport_marker_bar_event (GdkEvent* event); + gint canvas_imageframe_item_view_event(GdkEvent* event) ; gint canvas_imageframe_view_event(GdkEvent* event) ; gint canvas_imageframe_start_handle_event(GdkEvent* event) ; @@ -1181,16 +1184,15 @@ class Editor : public PublicEditor gint canvas_markerview_item_view_event(GdkEvent* event) ; gint canvas_markerview_start_handle_event(GdkEvent* event) ; gint canvas_markerview_end_handle_event(GdkEvent* event) ; - gint canvas_automation_track_event(GdkEvent* event) ; + /* non-public event handlers */ - gint canvas_copy_region_event (GdkEvent* event); - gint canvas_playhead_cursor_event (GdkEvent* event); - gint canvas_edit_cursor_event (GdkEvent* event); - gint track_canvas_event (GdkEvent* event); + bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_edit_cursor_event (GdkEvent* event, ArdourCanvas::Item*); + bool track_canvas_event (GdkEvent* event, ArdourCanvas::Item*); - gint track_canvas_button_press_event (GdkEventButton *); - gint track_canvas_button_release_event (GdkEventButton *); + bool track_canvas_button_press_event (GdkEventButton *); + bool track_canvas_button_release_event (GdkEventButton *); void track_canvas_allocate (GtkAllocation* alloc); void time_canvas_allocate (GtkAllocation* alloc); @@ -1237,12 +1239,12 @@ class Editor : public PublicEditor ARDOUR::TempoMap::BBTPointList *current_bbt_points; - typedef vector TimeLineList; + typedef vector TimeLineList; TimeLineList free_measure_lines; TimeLineList used_measure_lines; - Gnome::Canvas::Group* time_line_group; - Gnome::Canvas::Line* get_time_line (); + ArdourCanvas::Group* time_line_group; + ArdourCanvas::Line* get_time_line (); void hide_measures (); void draw_measures (); void draw_time_bars (); @@ -1252,15 +1254,15 @@ class Editor : public PublicEditor void mouse_add_new_tempo_event (jack_nframes_t where); void mouse_add_new_meter_event (jack_nframes_t where); - void remove_tempo_marker (Gnome::Canvas::Item*); - void remove_meter_marker (Gnome::Canvas::Item*); + void remove_tempo_marker (ArdourCanvas::Item*); + void remove_meter_marker (ArdourCanvas::Item*); gint real_remove_tempo_marker (ARDOUR::TempoSection*); gint real_remove_meter_marker (ARDOUR::MeterSection*); void edit_tempo_section (ARDOUR::TempoSection*); void edit_meter_section (ARDOUR::MeterSection*); - void edit_tempo_marker (Gnome::Canvas::Item*); - void edit_meter_marker (Gnome::Canvas::Item*); + void edit_tempo_marker (ArdourCanvas::Item*); + void edit_meter_marker (ArdourCanvas::Item*); void marker_menu_edit (); void marker_menu_remove (); @@ -1276,10 +1278,10 @@ class Editor : public PublicEditor void update_loop_range_view (bool visibility=false); void update_punch_range_view (bool visibility=false); gint new_transport_marker_menu_popdown (GdkEventAny*); - void marker_context_menu (GdkEventButton*, Gnome::Canvas::Item*); - void tm_marker_context_menu (GdkEventButton*, Gnome::Canvas::Item*); - void transport_marker_context_menu (GdkEventButton*, Gnome::Canvas::Item*); - void new_transport_marker_context_menu (GdkEventButton*, Gnome::Canvas::Item*); + void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); + void tm_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); + void transport_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); + void new_transport_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void build_marker_menu (); void build_tm_marker_menu (); void build_transport_marker_menu (); @@ -1289,7 +1291,7 @@ class Editor : public PublicEditor Gtk::Menu* marker_menu; Gtk::Menu* transport_marker_menu; Gtk::Menu* new_transport_marker_menu; - Gnome::Canvas::Item* marker_menu_item; + ArdourCanvas::Item* marker_menu_item; typedef list Marks; Marks metric_marks; @@ -1403,9 +1405,9 @@ class Editor : public PublicEditor SelectionMove } selection_op; - void start_selection_op (Gnome::Canvas::Item* item, GdkEvent* event, SelectionOp); - void drag_selection (Gnome::Canvas::Item* item, GdkEvent* event); - void end_selection_op (Gnome::Canvas::Item* item, GdkEvent* event); + void start_selection_op (ArdourCanvas::Item* item, GdkEvent* event, SelectionOp); + void drag_selection (ArdourCanvas::Item* item, GdkEvent* event); + void end_selection_op (ArdourCanvas::Item* item, GdkEvent* event); void cancel_selection (); void region_selection_op (void (ARDOUR::Region::*pmf)(void)); @@ -1424,27 +1426,27 @@ class Editor : public PublicEditor CreateTransportMarker } range_marker_op; - void start_range_markerbar_op (Gnome::Canvas::Item* item, GdkEvent* event, RangeMarkerOp); - void drag_range_markerbar_op (Gnome::Canvas::Item* item, GdkEvent* event); - void end_range_markerbar_op (Gnome::Canvas::Item* item, GdkEvent* event); + void start_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event, RangeMarkerOp); + void drag_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event); + void end_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event); - Gnome::Canvas::SimpleRect* range_bar_drag_rect; - Gnome::Canvas::SimpleRect* transport_bar_drag_rect; - Gnome::Canvas::Line* marker_drag_line; - Gnome::Canvas::Points* marker_drag_line_points; - Gnome::Canvas::SimpleRect* range_marker_drag_rect; + ArdourCanvas::SimpleRect* range_bar_drag_rect; + ArdourCanvas::SimpleRect* transport_bar_drag_rect; + ArdourCanvas::Line* marker_drag_line; + ArdourCanvas::Points* marker_drag_line_points; + ArdourCanvas::SimpleRect* range_marker_drag_rect; void update_marker_drag_item (ARDOUR::Location *); - Gnome::Canvas::SimpleRect *transport_bar_range_rect; - Gnome::Canvas::SimpleRect *transport_bar_preroll_rect; - Gnome::Canvas::SimpleRect *transport_bar_postroll_rect; - Gnome::Canvas::SimpleRect *transport_loop_range_rect; - Gnome::Canvas::SimpleRect *transport_punch_range_rect; - Gnome::Canvas::Line *transport_punchin_line; - Gnome::Canvas::Line *transport_punchout_line; - Gnome::Canvas::SimpleRect *transport_preroll_rect; - Gnome::Canvas::SimpleRect *transport_postroll_rect; + ArdourCanvas::SimpleRect *transport_bar_range_rect; + ArdourCanvas::SimpleRect *transport_bar_preroll_rect; + ArdourCanvas::SimpleRect *transport_bar_postroll_rect; + ArdourCanvas::SimpleRect *transport_loop_range_rect; + ArdourCanvas::SimpleRect *transport_punch_range_rect; + ArdourCanvas::Line *transport_punchin_line; + ArdourCanvas::Line *transport_punchout_line; + ArdourCanvas::SimpleRect *transport_preroll_rect; + ArdourCanvas::SimpleRect *transport_postroll_rect; ARDOUR::Location* transport_loop_location(); ARDOUR::Location* transport_punch_location(); @@ -1453,21 +1455,21 @@ class Editor : public PublicEditor /* object rubberband select process */ - void start_rubberband_select (Gnome::Canvas::Item* item, GdkEvent* event); - void drag_rubberband_select (Gnome::Canvas::Item* item, GdkEvent* event); - void end_rubberband_select (Gnome::Canvas::Item* item, GdkEvent* event); + void start_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event); + void drag_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event); + void end_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event); bool select_all_within (jack_nframes_t start, jack_nframes_t end, gdouble topy, gdouble boty, bool add); - Gnome::Canvas::Item *rubberband_rect; + ArdourCanvas::Item *rubberband_rect; /* mouse zoom process */ - void start_mouse_zoom (Gnome::Canvas::Item* item, GdkEvent* event); - void drag_mouse_zoom (Gnome::Canvas::Item* item, GdkEvent* event); - void end_mouse_zoom (Gnome::Canvas::Item* item, GdkEvent* event); + void start_mouse_zoom (ArdourCanvas::Item* item, GdkEvent* event); + void drag_mouse_zoom (ArdourCanvas::Item* item, GdkEvent* event); + void end_mouse_zoom (ArdourCanvas::Item* item, GdkEvent* event); - Gnome::Canvas::Item *zoom_rect; + ArdourCanvas::Item *zoom_rect; void reposition_zoom_rect (jack_nframes_t start, jack_nframes_t end); /* diskstream/route display management */ @@ -1562,14 +1564,14 @@ class Editor : public PublicEditor ContentsTrim, } trim_op; - void start_trim (Gnome::Canvas::Item*, GdkEvent*); + void start_trim (ArdourCanvas::Item*, GdkEvent*); void point_trim (GdkEvent*); - void trim_motion_callback (Gnome::Canvas::Item*, GdkEvent*); + void trim_motion_callback (ArdourCanvas::Item*, GdkEvent*); void single_contents_trim (AudioRegionView&, jack_nframes_t, bool, bool, bool); void single_start_trim (AudioRegionView&, jack_nframes_t, bool, bool); void single_end_trim (AudioRegionView&, jack_nframes_t, bool, bool); - void trim_finished_callback (Gnome::Canvas::Item*, GdkEvent*); + void trim_finished_callback (ArdourCanvas::Item*, GdkEvent*); void thaw_region_after_trim (AudioRegionView& rv); void trim_region_to_edit_cursor (); @@ -1678,9 +1680,9 @@ class Editor : public PublicEditor jack_nframes_t event_frame (GdkEvent*, double* px = 0, double* py = 0); - void time_fx_motion (Gnome::Canvas::Item*, GdkEvent*); - void start_time_fx (Gnome::Canvas::Item*, GdkEvent*); - void end_time_fx (Gnome::Canvas::Item*, GdkEvent*); + void time_fx_motion (ArdourCanvas::Item*, GdkEvent*); + void start_time_fx (ArdourCanvas::Item*, GdkEvent*); + void end_time_fx (ArdourCanvas::Item*, GdkEvent*); struct TimeStretchDialog : public ArdourDialog { ARDOUR::Session::TimeStretchRequest request; @@ -1738,39 +1740,39 @@ class Editor : public PublicEditor void handle_new_imageframe_time_axis_view(std::string track_name, void* src) ; void handle_new_imageframe_marker_time_axis_view(std::string track_name, TimeAxisView* marked_track) ; - void start_imageframe_grab(Gnome::Canvas::Item*, GdkEvent*) ; - void start_markerview_grab(Gnome::Canvas::Item*, GdkEvent*) ; + void start_imageframe_grab(ArdourCanvas::Item*, GdkEvent*) ; + void start_markerview_grab(ArdourCanvas::Item*, GdkEvent*) ; - void imageframe_drag_motion_callback(Gnome::Canvas::Item*, GdkEvent*) ; - void markerview_drag_motion_callback(Gnome::Canvas::Item*, GdkEvent*) ; - void timeaxis_item_drag_finished_callback(Gnome::Canvas::Item*, GdkEvent*) ; + void imageframe_drag_motion_callback(ArdourCanvas::Item*, GdkEvent*) ; + void markerview_drag_motion_callback(ArdourCanvas::Item*, GdkEvent*) ; + void timeaxis_item_drag_finished_callback(ArdourCanvas::Item*, GdkEvent*) ; - gint canvas_imageframe_item_view_event(Gnome::Canvas::Item* item, GdkEvent* event, ImageFrameView* ifv); - gint canvas_imageframe_view_event(Gnome::Canvas::Item* item, GdkEvent* event, ImageFrameTimeAxis* ifta); - gint canvas_imageframe_start_handle_event(Gnome::Canvas::Item* item, GdkEvent* event, ImageFrameView* ifv); - gint canvas_imageframe_end_handle_event(Gnome::Canvas::Item* item, GdkEvent* event, ImageFrameView* ifv); + gint canvas_imageframe_item_view_event(ArdourCanvas::Item* item, GdkEvent* event, ImageFrameView* ifv); + gint canvas_imageframe_view_event(ArdourCanvas::Item* item, GdkEvent* event, ImageFrameTimeAxis* ifta); + gint canvas_imageframe_start_handle_event(ArdourCanvas::Item* item, GdkEvent* event, ImageFrameView* ifv); + gint canvas_imageframe_end_handle_event(ArdourCanvas::Item* item, GdkEvent* event, ImageFrameView* ifv); - gint canvas_marker_time_axis_view_event(Gnome::Canvas::Item* item, GdkEvent* event, MarkerTimeAxis* mta); - gint canvas_markerview_item_view_event(Gnome::Canvas::Item* item, GdkEvent* event, MarkerView* mv); - gint canvas_markerview_start_handle_event(Gnome::Canvas::Item* item, GdkEvent* event, MarkerView* mv); - gint canvas_markerview_end_handle_event(Gnome::Canvas::Item* item, GdkEvent* event, MarkerView* mv); + gint canvas_marker_time_axis_view_event(ArdourCanvas::Item* item, GdkEvent* event, MarkerTimeAxis* mta); + gint canvas_markerview_item_view_event(ArdourCanvas::Item* item, GdkEvent* event, MarkerView* mv); + gint canvas_markerview_start_handle_event(ArdourCanvas::Item* item, GdkEvent* event, MarkerView* mv); + gint canvas_markerview_end_handle_event(ArdourCanvas::Item* item, GdkEvent* event, MarkerView* mv); - void imageframe_start_handle_op(Gnome::Canvas::Item* item, GdkEvent* event) ; - void imageframe_end_handle_op(Gnome::Canvas::Item* item, GdkEvent* event) ; - void imageframe_start_handle_trim_motion(Gnome::Canvas::Item* item, GdkEvent* event) ; - void imageframe_start_handle_end_trim(Gnome::Canvas::Item* item, GdkEvent* event) ; - void imageframe_end_handle_trim_motion(Gnome::Canvas::Item* item, GdkEvent* event) ; - void imageframe_end_handle_end_trim(Gnome::Canvas::Item* item, GdkEvent* event) ; + void imageframe_start_handle_op(ArdourCanvas::Item* item, GdkEvent* event) ; + void imageframe_end_handle_op(ArdourCanvas::Item* item, GdkEvent* event) ; + void imageframe_start_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* event) ; + void imageframe_start_handle_end_trim(ArdourCanvas::Item* item, GdkEvent* event) ; + void imageframe_end_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* event) ; + void imageframe_end_handle_end_trim(ArdourCanvas::Item* item, GdkEvent* event) ; - void markerview_item_start_handle_op(Gnome::Canvas::Item* item, GdkEvent* event) ; - void markerview_item_end_handle_op(Gnome::Canvas::Item* item, GdkEvent* event) ; - void markerview_start_handle_trim_motion(Gnome::Canvas::Item* item, GdkEvent* event) ; - void markerview_start_handle_end_trim(Gnome::Canvas::Item* item, GdkEvent* event) ; - void markerview_end_handle_trim_motion(Gnome::Canvas::Item* item, GdkEvent* event) ; - void markerview_end_handle_end_trim(Gnome::Canvas::Item* item, GdkEvent* event) ; + void markerview_item_start_handle_op(ArdourCanvas::Item* item, GdkEvent* event) ; + void markerview_item_end_handle_op(ArdourCanvas::Item* item, GdkEvent* event) ; + void markerview_start_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* event) ; + void markerview_start_handle_end_trim(ArdourCanvas::Item* item, GdkEvent* event) ; + void markerview_end_handle_trim_motion(ArdourCanvas::Item* item, GdkEvent* event) ; + void markerview_end_handle_end_trim(ArdourCanvas::Item* item, GdkEvent* event) ; - void popup_imageframe_edit_menu(int button, int32_t time, Gnome::Canvas::Item* ifv, bool with_frame) ; - void popup_marker_time_axis_edit_menu(int button, int32_t time, Gnome::Canvas::Item* ifv, bool with_frame) ; + void popup_imageframe_edit_menu(int button, int32_t time, ArdourCanvas::Item* ifv, bool with_frame) ; + void popup_marker_time_axis_edit_menu(int button, int32_t time, ArdourCanvas::Item* ifv, bool with_frame) ; ImageFrameSocketHandler* image_socket_listener ; /* */ diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index eb05094429..b2b64e5545 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -21,8 +21,6 @@ #include #include -#include - #include #include @@ -37,6 +35,8 @@ #include "automation_pan_line.h" #include "automation_time_axis.h" #include "redirect_automation_line.h" +#include "canvas_impl.h" +#include "simplerect.h" #include "i18n.h" @@ -44,258 +44,16 @@ using namespace sigc; using namespace ARDOUR; using namespace Gtk; -gint -Editor::_canvas_copy_region_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = (Editor*)data; - return editor->canvas_copy_region_event (item, event); -} - -gint -Editor::_canvas_crossfade_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - CrossfadeView* xfv = static_cast (data); - Editor* editor = dynamic_cast(&xfv->get_time_axis_view().editor); - return editor->canvas_crossfade_view_event (item, event, xfv); -} - -gint -Editor::_canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView* rv = static_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - return editor->canvas_fade_in_event (item, event, rv); -} - -gint -Editor::_canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView* rv = static_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - return editor->canvas_fade_in_handle_event (item, event, rv); -} - -gint -Editor::_canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView* rv = static_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - return editor->canvas_fade_out_event (item, event, rv); -} - -gint -Editor::_canvas_fade_out_handle_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView* rv = static_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - return editor->canvas_fade_out_handle_event (item, event, rv); -} - -gint -Editor::_canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView *rv = reinterpret_cast(data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - - return editor->canvas_region_view_event (item, event, rv); -} - -gint -Editor::_canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView *rv = reinterpret_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - - return editor->canvas_region_view_name_highlight_event (item, event); -} - -gint -Editor::_canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AudioRegionView *rv = reinterpret_cast (data); - Editor* editor = dynamic_cast(&rv->get_time_axis_view().editor); - - return editor->canvas_region_view_name_event (item, event); -} - -gint -Editor::_canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* note that stream views are by definition audio track views */ - - AudioTimeAxisView *tv = (AudioTimeAxisView *) data; - Editor* editor = dynamic_cast(&tv->editor); - - return editor->canvas_stream_view_event (item, event, tv); -} - -gint -Editor::_canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AutomationTimeAxisView* atv = (AutomationTimeAxisView*) data; - Editor* editor = dynamic_cast(&atv->editor); - - return editor->canvas_automation_track_event (item, event, atv); -} - -gint -Editor::_canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - ControlPoint *cp = reinterpret_cast(data); - Editor* editor = dynamic_cast(&cp->line.trackview.editor); - - switch (event->type) { - case GDK_BUTTON_PRESS: - case GDK_2BUTTON_PRESS: - case GDK_3BUTTON_PRESS: - clicked_control_point = cp; - clicked_trackview = &cp->line.trackview; - clicked_audio_trackview = dynamic_cast(clicked_trackview); - clicked_regionview = 0; - break; - - default: - break; - } - - return editor->canvas_control_point_event (item, event); -} - -gint -Editor::_canvas_line_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - AutomationLine *line = reinterpret_cast (data); - Editor* editor = dynamic_cast(&line->trackview.editor); - - return editor->canvas_line_event (item, event); -} - -gint -Editor::_canvas_tempo_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_tempo_marker_event (item, event); -} - -gint -Editor::_canvas_meter_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor *) data); - return editor->canvas_meter_marker_event (item, event); -} - -gint -Editor::_canvas_tempo_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* XXX NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_tempo_bar_event (item, event); -} - -gint -Editor::_canvas_meter_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* XXX NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_meter_bar_event (item, event); -} - -gint -Editor::_canvas_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_marker_event (item, event); -} - -gint -Editor::_canvas_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_marker_bar_event (item, event); -} - -gint -Editor::_canvas_range_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_range_marker_bar_event (item, event); -} - -gint -Editor::_canvas_transport_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_transport_marker_bar_event (item, event); -} - -gint -Editor::_canvas_playhead_cursor_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_playhead_cursor_event (item, event); -} - -gint -Editor::_canvas_edit_cursor_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - Editor* editor = (Editor*) data; - return editor->canvas_edit_cursor_event (item, event); -} - -gint -Editor::_canvas_zoom_rect_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_zoom_rect_event (item, event); -} - -gint -Editor::_canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_selection_rect_event (item, event); -} - -gint -Editor::_canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_selection_start_trim_event (item, event); -} - -gint -Editor::_canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - Editor* editor = dynamic_cast((PublicEditor*) data); - return editor->canvas_selection_end_trim_event (item, event); -} - -gint -Editor::_track_canvas_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data) -{ - /* NO CAST */ - - Editor* editor = (Editor*) data; - return editor->track_canvas_event (item, event); -} - -/********** END OF.TATIC EVENT HANDLERS */ - -gint -Editor::track_canvas_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item) { gint x, y; switch (event->type) { case GDK_MOTION_NOTIFY: /* keep those motion events coming */ - track_canvas->get_pointer (x, y); - return track_canvas_motion (item, event); + track_canvas.get_pointer (x, y); + return track_canvas_motion (event); case GDK_BUTTON_RELEASE: switch (event->button.button) { @@ -313,18 +71,18 @@ Editor::track_canvas_event (GnomeCanvasItem *item, GdkEvent *event) return FALSE; } -gint -Editor::track_canvas_motion (GnomeCanvasItem *item, GdkEvent *ev) +bool +Editor::track_canvas_motion (GdkEvent *ev) { if (verbose_cursor_visible) { verbose_canvas_cursor->set_property ("x", ev->motion.x + 20); verbose_canvas_cursor->set_property ("y", ev->motion.y + 20); } - return FALSE; + return false; } -gint -Editor::typed_event (GnomeCanvasItem *item, GdkEvent *event, ItemType type) +bool +Editor::typed_event (ArdourCanvas::Item* item, GdkEvent *event, ItemType type) { gint ret = FALSE; @@ -356,8 +114,8 @@ Editor::typed_event (GnomeCanvasItem *item, GdkEvent *event, ItemType type) return ret; } -gint -Editor::canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv) +bool +Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) { gint ret = FALSE; @@ -395,10 +153,10 @@ Editor::canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioR return ret; } -gint -Editor::canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioTimeAxisView *tv) +bool +Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, AudioTimeAxisView *tv) { - gint ret = FALSE; + bool ret = FALSE; switch (event->type) { case GDK_BUTTON_PRESS: @@ -431,10 +189,10 @@ Editor::canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioT -gint -Editor::canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, AutomationTimeAxisView *atv) +bool +Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item, AutomationTimeAxisView *atv) { - gint ret = FALSE; + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: @@ -470,8 +228,8 @@ Editor::canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, A return ret; } -gint -Editor::canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv) +bool +Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) { /* we handle only button 3 press/release events */ @@ -499,13 +257,13 @@ Editor::canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegio /* proxy for the regionview */ - return canvas_region_view_event (rv->get_canvas_group(), event, rv); + return canvas_region_view_event (event, rv->get_canvas_group(), rv); } -gint -Editor::canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv) +bool +Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) { - gint ret = FALSE; + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: @@ -541,8 +299,8 @@ Editor::canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, Aud return ret; } -gint -Editor::canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv) +bool +Editor::canvas_fade_out_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) { /* we handle only button 3 press/release events */ @@ -570,13 +328,13 @@ Editor::canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegi /* proxy for the regionview */ - return canvas_region_view_event (rv->get_canvas_group(), event, rv); + return canvas_region_view_event (event, rv->get_canvas_group(), rv); } -gint -Editor::canvas_fade_out_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv) +bool +Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) { - gint ret = FALSE; + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: @@ -618,8 +376,8 @@ struct DescendingRegionLayerSorter { } }; -gint -Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, CrossfadeView* xfv) +bool +Editor::canvas_crossfade_view_event (GdkEvent* event, ArdourCanvas::Item* item, CrossfadeView* xfv) { /* we handle only button 3 press/release events */ @@ -634,7 +392,7 @@ Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, Cro case GDK_BUTTON_RELEASE: if (event->button.button == 3) { - gint ret = button_release_handler (item, event, CrossfadeViewItem); + bool ret = button_release_handler (item, event, CrossfadeViewItem); return ret; } break; @@ -671,7 +429,7 @@ Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, Cro delete rl; - return canvas_region_view_event (arv->get_canvas_group(), event, arv); + return canvas_region_view_event (event, arv->get_canvas_group(), arv); } } } @@ -679,15 +437,23 @@ Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, Cro return TRUE; } -gint -Editor::canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_control_point_event (GdkEvent *event, ArdourCanvas::Item* item, ControlPoint* cp) { ItemType type; - ControlPoint *cp; - - if ((cp = static_cast (gtk_object_get_data (GTK_OBJECT(item), "control_point"))) == 0) { - fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg; - /*NOTREACHED*/ + + switch (event->type) { + case GDK_BUTTON_PRESS: + case GDK_2BUTTON_PRESS: + case GDK_3BUTTON_PRESS: + clicked_control_point = cp; + clicked_trackview = &cp->line.trackview; + clicked_audio_trackview = dynamic_cast(clicked_trackview); + clicked_regionview = 0; + break; + + default: + break; } if (dynamic_cast (&cp->line) != 0) { @@ -699,22 +465,16 @@ Editor::canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event) } else if (dynamic_cast (&cp->line) != 0) { type = RedirectAutomationControlPointItem; } else { - return FALSE; + return false; } return typed_event (item, event, type); } -gint -Editor::canvas_line_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_line_event (GdkEvent *event, ArdourCanvas::Item* item, AutomationLine* al) { ItemType type; - AutomationLine *al; - - if ((al = static_cast (gtk_object_get_data (GTK_OBJECT(item), "line"))) == 0) { - fatal << _("programming error: line canvas item has no line object pointer!") << endmsg; - /*NOTREACHED*/ - } if (dynamic_cast (al) != 0) { type = GainLineItem; @@ -725,24 +485,17 @@ Editor::canvas_line_event (GnomeCanvasItem *item, GdkEvent *event) } else if (dynamic_cast (al) != 0) { type = RedirectAutomationLineItem; } else { - return FALSE; + return false; } return typed_event (item, event, type); } - -gint -Editor::canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_selection_rect_event (GdkEvent *event, ArdourCanvas::Item* item, SelectionRect* rect) { - gint ret = FALSE; - SelectionRect *rect = 0; - - if ((rect = reinterpret_cast (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) { - fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg; - /*NOTREACHED*/ - } - + bool ret = false; + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: @@ -772,16 +525,10 @@ Editor::canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event) return ret; } -gint -Editor::canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_selection_start_trim_event (GdkEvent *event, ArdourCanvas::Item* item, SelectionRect* rect) { - gint ret = FALSE; - SelectionRect *rect = 0; - - if ((rect = reinterpret_cast (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) { - fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg; - /*NOTREACHED*/ - } + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: @@ -811,16 +558,10 @@ Editor::canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *even return ret; } -gint -Editor::canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_selection_end_trim_event (GdkEvent *event, ArdourCanvas::Item* item, SelectionRect* rect) { - gint ret = FALSE; - SelectionRect *rect = 0; - - if ((rect = reinterpret_cast (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) { - fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg; - /*NOTREACHED*/ - } + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: @@ -851,16 +592,16 @@ Editor::canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event) } -gint -Editor::canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item* item, AudioRegionView* rv) { - gint ret = FALSE; - + bool ret = false; + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: - clicked_regionview = reinterpret_cast (gtk_object_get_data(GTK_OBJECT(item), "regionview")); + clicked_regionview = rv; clicked_control_point = 0; clicked_trackview = &clicked_regionview->get_time_axis_view(); clicked_audio_trackview = dynamic_cast(clicked_trackview); @@ -887,16 +628,16 @@ Editor::canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent return ret; } -gint -Editor::canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_region_view_name_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView* rv) { - gint ret = FALSE; + bool ret = false; switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: - clicked_regionview = reinterpret_cast (gtk_object_get_data(GTK_OBJECT(item), "regionview")); + clicked_regionview = rv; clicked_control_point = 0; clicked_trackview = &clicked_regionview->get_time_axis_view(); clicked_audio_trackview = dynamic_cast(clicked_trackview); @@ -923,75 +664,69 @@ Editor::canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event) return ret; } -gint -Editor::canvas_marker_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_marker_event (GdkEvent *event, ArdourCanvas::Item* item, Marker* marker) { return typed_event (item, event, MarkerItem); } -gint -Editor::canvas_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, MarkerBarItem); } -gint -Editor::canvas_range_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_range_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, RangeMarkerBarItem); } -gint -Editor::canvas_transport_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_transport_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, TransportMarkerBarItem); } -gint -Editor::canvas_tempo_marker_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_tempo_marker_event (GdkEvent *event, ArdourCanvas::Item* item, TempoMarker* marker) { return typed_event (item, event, TempoMarkerItem); } -gint -Editor::canvas_meter_marker_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_meter_marker_event (GdkEvent *event, ArdourCanvas::Item* item, MeterMarker* marker) { return typed_event (item, event, MeterMarkerItem); } -gint -Editor::canvas_tempo_bar_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_tempo_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, TempoBarItem); } -gint -Editor::canvas_meter_bar_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_meter_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, MeterBarItem); } -gint -Editor::canvas_playhead_cursor_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_playhead_cursor_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, PlayheadCursorItem); } -gint -Editor::canvas_edit_cursor_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_edit_cursor_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, EditCursorItem); } -gint -Editor::canvas_zoom_rect_event (GnomeCanvasItem *item, GdkEvent *event) +bool +Editor::canvas_zoom_rect_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, NoItem); } -gint -Editor::canvas_copy_region_event (GnomeCanvasItem *item GdkEvent *event) -{ - return typed_event (item, event, RegionItem); -} - diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index f82585802c..756ec028ae 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -6,13 +6,13 @@ #include #include #include -#include #include #include #include #include "editing.h" #include "keyboard_target.h" +#include "canvas.h" namespace ARDOUR { class Session; @@ -37,6 +37,13 @@ class Selection; class AutomationLine; class ControlPoint; class SelectionRect; +class CrossfadeView; +class AudioTimeAxisView; +class AudioRegionView; +class TempoMarker; +class MeterMarker; +class Marker; +class AutomationTimeAxisView; class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget { public: @@ -119,34 +126,34 @@ class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget // FIXED FOR GTK2 - virtual bool canvas_control_point_event (GdkEvent* event,ControlPoint*) = 0; - virtual bool canvas_line_event (GdkEvent* event,AutomationLine*) = 0; - virtual bool canvas_selection_rect_event (GdkEvent* event,SelectionRect*) = 0; - virtual bool canvas_selection_start_trim_event (GdkEvent* event,SelectionRect*) = 0; - virtual bool canvas_selection_end_trim_event (GdkEvent* event,SelectionRect*) = 0; + virtual bool canvas_control_point_event (GdkEvent* event,ArdourCanvas::Item*, ControlPoint*) = 0; + virtual bool canvas_line_event (GdkEvent* event,ArdourCanvas::Item*, AutomationLine*) = 0; + virtual bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*) = 0; + virtual bool canvas_selection_start_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*) = 0; + virtual bool canvas_selection_end_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*) = 0; + virtual bool canvas_crossfade_view_event (GdkEvent* event,ArdourCanvas::Item*, CrossfadeView*) = 0; + virtual bool canvas_fade_in_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_fade_in_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_fade_out_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_fade_out_handle_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_region_view_name_event (GdkEvent* event,ArdourCanvas::Item*, AudioRegionView*) = 0; + virtual bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, AudioTimeAxisView*) = 0; + virtual bool canvas_marker_event (GdkEvent* event,ArdourCanvas::Item*, Marker*) = 0; + virtual bool canvas_zoom_rect_event (GdkEvent* event,ArdourCanvas::Item*) = 0; + virtual bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*) = 0; + virtual bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*) = 0; + virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) = 0; + + virtual bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; + virtual bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; + virtual bool canvas_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; + virtual bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; + virtual bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; // PENDING - - virtual gint canvas_crossfade_view_event (GdkEvent* event) = 0; - virtual gint canvas_fade_in_event (GdkEvent* event) = 0; - virtual gint canvas_fade_in_handle_event (GdkEvent* event) = 0; - virtual gint canvas_fade_out_event (GdkEvent* event) = 0; - virtual gint canvas_fade_out_handle_event (GdkEvent* event) = 0; - virtual gint canvas_region_view_event (GdkEvent* event) = 0; - virtual gint canvas_region_view_name_highlight_event (GdkEvent* event) = 0; - virtual gint canvas_region_view_name_event (GdkEvent* event) = 0; - virtual gint canvas_stream_view_event (GdkEvent* event) = 0; - virtual gint canvas_marker_event (GdkEvent* event) = 0; - virtual gint canvas_zoom_rect_event (GdkEvent* event) = 0; - - virtual gint canvas_tempo_marker_event (GdkEvent* event) = 0; - virtual gint canvas_meter_marker_event (GdkEvent* event) = 0; - virtual gint canvas_tempo_bar_event (GdkEvent* event) = 0; - virtual gint canvas_meter_bar_event (GdkEvent* event) = 0; - virtual gint canvas_marker_bar_event (GdkEvent* event) = 0; - virtual gint canvas_range_marker_bar_event (GdkEvent* event) = 0; - virtual gint canvas_transport_marker_bar_event (GdkEvent* event) = 0; virtual gint canvas_imageframe_item_view_event(GdkEvent* event) = 0; virtual gint canvas_imageframe_view_event(GdkEvent* event) = 0; virtual gint canvas_imageframe_start_handle_event(GdkEvent* event) = 0; @@ -155,7 +162,6 @@ class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget virtual gint canvas_markerview_item_view_event(GdkEvent* event) = 0; virtual gint canvas_markerview_start_handle_event(GdkEvent* event) = 0; virtual gint canvas_markerview_end_handle_event(GdkEvent* event) = 0; - virtual gint canvas_automation_track_event(GdkEvent* event) = 0; static PublicEditor* _instance; }; diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index c89d3e8436..508ddb9260 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -24,6 +24,10 @@ #include #include +#include +#include +#include + #include #include @@ -50,7 +54,7 @@ using namespace Gtk; using namespace sigc; using namespace ARDOUR; using namespace Editing; -using namespace Gnome::Canvas; +using namespace ArdourCanvas; const double trim_handle_size = 6.0; /* pixels */ @@ -585,7 +589,7 @@ TimeAxisView::hide_selection () } void -TimeAxisView::order_selection_trims (Gnome::Canvas::Item *item, bool put_start_on_top) +TimeAxisView::order_selection_trims (ArdourCanvas::Item *item, bool put_start_on_top) { /* find the selection rect this is for. we have the item corresponding to one of the trim handles. @@ -657,9 +661,9 @@ TimeAxisView::get_selection_rect (uint32_t id) free_selection_rects.push_front (rect); - rect->rect->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_rect_event), rect)); - rect->start_trim->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_start_trim_event), rect)); - rect->end_trim->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_end_trim_event), rect)); + rect->rect->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_rect_event), rect->rect, rect)); + rect->start_trim->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_start_trim_event), rect->rect, rect)); + rect->end_trim->signal_event().connect (bind (mem_fun (editor, &PublicEditor::canvas_selection_end_trim_event), rect->rect, rect)); } rect = free_selection_rects.front(); diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index 17d687c6c2..9249a1fb72 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -25,8 +25,6 @@ #include #include -#include -#include #include #include @@ -36,6 +34,8 @@ #include "enums.h" #include "editing.h" +namespace ArdourCanvas = Gnome::Canvas; + namespace ARDOUR { class Session; class Region; @@ -75,7 +75,7 @@ class TimeAxisView : public virtual AxisView Small = 21 }; - TimeAxisView(ARDOUR::Session& sess, PublicEditor& ed, TimeAxisView* parent, Gnome::Canvas::Canvas& canvas); + TimeAxisView(ARDOUR::Session& sess, PublicEditor& ed, TimeAxisView* parent, ArdourCanvas::Canvas& canvas); virtual ~TimeAxisView (); /* public data: XXX create accessor/mutators for these ?? */ @@ -88,7 +88,7 @@ class TimeAxisView : public virtual AxisView int order; - Gnome::Canvas::Group *canvas_display; + ArdourCanvas::Group *canvas_display; Gtk::VBox *control_parent; /* The Standard LHS Controls */ @@ -169,7 +169,7 @@ class TimeAxisView : public virtual AxisView return 0; } - void order_selection_trims (Gnome::Canvas::Item *item, bool put_start_on_top); + void order_selection_trims (ArdourCanvas::Item *item, bool put_start_on_top); virtual void get_selectables (jack_nframes_t start, jack_nframes_t end, double top, double bot, list& results); virtual void get_inverted_selectables (Selection&, list& results); @@ -273,7 +273,7 @@ class TimeAxisView : public virtual AxisView /* selection display */ - Gnome::Canvas::Group *selection_group; + ArdourCanvas::Group *selection_group; list free_selection_rects; list used_selection_rects;