editor_canvas_events.cc now compiles

git-svn-id: svn://localhost/trunk/ardour2@92 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2005-11-14 16:24:21 +00:00
parent f77ec623be
commit 08a6f9bbb5
7 changed files with 369 additions and 589 deletions

20
gtk2_ardour/canvas.h Normal file
View File

@ -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__ */

13
gtk2_ardour/canvas_impl.h Normal file
View File

@ -0,0 +1,13 @@
#ifndef __ardour_gtk_canvas_impl_h__
#define __ardour_gtk_canvas_impl_h__
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/polygon.h>
#include <libgnomecanvasmm/text.h>
#include <libgnomecanvasmm/rect.h>
#include <libgnomecanvasmm/line.h>
#include <libgnomecanvasmm/item.h>
using namespace ArdourCanvas;
#endif /* __ardour_gtk_canvas_impl_h__ */

View File

@ -27,6 +27,10 @@
#include <string>
#include <sys/time.h>
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/group.h>
#include <libgnomecanvasmm/line.h>
#include <cmath>
#include <sndfile.h>
@ -34,12 +38,6 @@
#include <gtkmm/layout.h>
#include <gtkmm/comboboxtext.h>
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/polygon.h>
#include <libgnomecanvasmm/text.h>
#include <libgnomecanvasmm/rect.h>
#include <libgnomecanvasmm/line.h>
#include <gtkmm2ext/selector.h>
#include <gtkmm2ext/click_box.h>
@ -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<ARDOUR::Location*,LocationMarkers *> 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<ARDOUR::Playlist*> 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<Gnome::Canvas::Line*> TimeLineList;
typedef vector<ArdourCanvas::Line*> 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<Marker*> 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 ;
/* </CMT Additions> */

View File

@ -21,8 +21,6 @@
#include <cstdlib>
#include <cmath>
#include <libgnomecanvas/libgnomecanvas.h>
#include <ardour/diskstream.h>
#include <ardour/audioplaylist.h>
@ -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<CrossfadeView*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView *>(data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView *> (data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioRegionView *> (data);
Editor* editor = dynamic_cast<Editor*>(&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<Editor*>(&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<Editor*>(&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<ControlPoint *>(data);
Editor* editor = dynamic_cast<Editor*>(&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<AudioTimeAxisView*>(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<AutomationLine*> (data);
Editor* editor = dynamic_cast<Editor*>(&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<Editor*>((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<Editor*>((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<Editor*>((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<Editor*>((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<Editor*>((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<Editor*>((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<Editor*>((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<ControlPoint *> (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<AudioTimeAxisView*>(clicked_trackview);
clicked_regionview = 0;
break;
default:
break;
}
if (dynamic_cast<AudioRegionGainLine*> (&cp->line) != 0) {
@ -699,22 +465,16 @@ Editor::canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event)
} else if (dynamic_cast<RedirectAutomationLine*> (&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<AutomationLine *> (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<AudioRegionGainLine*> (al) != 0) {
type = GainLineItem;
@ -725,24 +485,17 @@ Editor::canvas_line_event (GnomeCanvasItem *item, GdkEvent *event)
} else if (dynamic_cast<RedirectAutomationLine*> (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<SelectionRect*> (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<SelectionRect*> (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<SelectionRect*> (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<AudioRegionView *> (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<AudioTimeAxisView*>(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<AudioRegionView *> (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<AudioTimeAxisView*>(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);
}

View File

@ -6,13 +6,13 @@
#include <string>
#include <glib.h>
#include <gdk/gdktypes.h>
#include <libgnomecanvas/libgnomecanvas.h>
#include <gtkmm/window.h>
#include <jack/types.h>
#include <sigc++/signal.h>
#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;
};

View File

@ -24,6 +24,10 @@
#include <string>
#include <list>
#include <libgnomecanvasmm/libgnomecanvasmm.h>
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/item.h>
#include <pbd/error.h>
#include <gtkmm2ext/utils.h>
@ -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();

View File

@ -25,8 +25,6 @@
#include <list>
#include <gtkmm.h>
#include <libgnomecanvasmm/group.h>
#include <libgnomecanvasmm/canvas.h>
#include <ardour/types.h>
#include <ardour/region.h>
@ -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<Selectable*>& results);
virtual void get_inverted_selectables (Selection&, list<Selectable *>& results);
@ -273,7 +273,7 @@ class TimeAxisView : public virtual AxisView
/* selection display */
Gnome::Canvas::Group *selection_group;
ArdourCanvas::Group *selection_group;
list<SelectionRect*> free_selection_rects;
list<SelectionRect*> used_selection_rects;