X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=29e3ac2bef2939dd5281ce4a2620e205e2e8e606;hb=2c79f74e49cb4ab96724d6183435e8f47b15c7d1;hp=768e524e3aaaaaf39773da135fc60b01b39c5d21;hpb=5cac4a6885f38b9ecd211b39cef6593da853cee4;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 768e524e3a..29e3ac2bef 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -56,7 +56,6 @@ #include "enums.h" #include "editor_items.h" #include "region_selection.h" -#include "window_proxy.h" namespace Gtkmm2ext { class TearOff; @@ -96,14 +95,25 @@ class BundleManager; class ButtonJoiner; class ControlPoint; class DragManager; +class EditNoteDialog; +class EditorCursor; +class EditorGroupTabs; +class EditorLocations; +class EditorRegions; +class EditorRoutes; +class EditorRouteGroups; +class EditorSnapshots; +class EditorSummary; class GroupedButtons; class GUIObjectState; class Marker; class MidiRegionView; class MixerStrip; +class MouseCursors; class NoteBase; class PlaylistSelector; class PluginSelector; +class ProgressReporter; class RhythmFerret; class Selection; class SoundFileOmega; @@ -112,29 +122,9 @@ class TempoLines; class TimeAxisView; class TimeFXDialog; class TimeSelection; -class EditorGroupTabs; -class EditorRoutes; -class EditorRouteGroups; -class EditorRegions; -class EditorLocations; -class EditorSnapshots; -class EditorSummary; class RegionLayeringOrderEditor; -class ProgressReporter; -class EditorCursor; -class MouseCursors; class VerboseCursor; -/* */ -class ImageFrameView; -class ImageFrameTimeAxisView; -class ImageFrameTimeAxis; -class MarkerTimeAxis ; -class MarkerView ; -class ImageFrameSocketHandler ; -class TimeAxisViewItem ; -/* */ - class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr { public: @@ -150,7 +140,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD framepos_t leftmost_sample() const { return leftmost_frame; } framecnt_t current_page_samples() const { - return (framecnt_t) floor (_visible_canvas_width * samples_per_pixel); + return (framecnt_t) _visible_canvas_width * samples_per_pixel; } double visible_canvas_height () const { @@ -187,14 +177,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_internal_edit (bool yn); bool toggle_internal_editing_from_double_click (GdkEvent*); -#ifdef WITH_CMT - void add_imageframe_time_axis(const std::string & track_name, void*) ; - void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) ; - void connect_to_image_compositor() ; - void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) ; - TimeAxisView* get_named_time_axis(const std::string & name) ; -#endif /* WITH_CMT */ - void foreach_time_axis_view (sigc::slot); void add_to_idle_resize (TimeAxisView*, int32_t); @@ -234,18 +216,18 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD */ if (pixel >= 0) { - return (framepos_t) rint (pixel * samples_per_pixel); + return pixel * samples_per_pixel; } else { return 0; } } - double sample_to_pixel (framepos_t sample) const { - return rint (sample / samples_per_pixel); + double sample_to_pixel (framepos_t sample) const { + return sample / samples_per_pixel; } double sample_to_pixel_unrounded (framepos_t sample) const { - return sample / samples_per_pixel; + return sample / (double) samples_per_pixel; } /* selection */ @@ -292,7 +274,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_zoom_focus (Editing::ZoomFocus); Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; } - double get_current_zoom () const { return samples_per_pixel; } + framecnt_t get_current_zoom () const { return samples_per_pixel; } void cycle_zoom_focus (); void temporal_zoom_step (bool coarser); void tav_zoom_step (bool coarser); @@ -378,7 +360,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void reset_x_origin (framepos_t); void reset_x_origin_to_follow_playhead (); void reset_y_origin (double); - void reset_zoom (double); + void reset_zoom (framecnt_t); void reposition_and_zoom (framepos_t, double); framepos_t get_preferred_edit_position (bool ignore_playhead = false, bool use_context_click = false); @@ -484,7 +466,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD VisualState (bool with_tracks); ~VisualState (); double y_position; - double samples_per_pixel; + framecnt_t samples_per_pixel; framepos_t leftmost_frame; Editing::ZoomFocus zoom_focus; GUIObjectState* gui_state; @@ -503,12 +485,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void start_visual_state_op (uint32_t n); void cancel_visual_state_op (uint32_t n); - framepos_t leftmost_frame; - double samples_per_pixel; + framepos_t leftmost_frame; + framecnt_t samples_per_pixel; Editing::ZoomFocus zoom_focus; - void set_samples_per_pixel (double); - bool clamp_samples_per_pixel (double &) const; + void set_samples_per_pixel (framecnt_t); + bool clamp_samples_per_pixel (framecnt_t &) const; Editing::MouseMode mouse_mode; Editing::MouseMode pre_internal_mouse_mode; @@ -906,13 +888,14 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Glib::RefPtr xjadeo_zoom_100; void set_xjadeo_proc (); void toggle_xjadeo_proc (int state=-1); + void set_close_video_sensitive (bool onoff); void set_xjadeo_sensitive (bool onoff); void set_xjadeo_viewoption (int); void toggle_xjadeo_viewoption (int what, int state=-1); void toggle_ruler_video (bool onoff) {ruler_video_action->set_active(onoff);} int videotl_bar_height; /* in units of timebar_height; default: 4 */ int get_videotl_bar_height () const { return videotl_bar_height; } - void export_video (); + void export_video (bool range = false); void toggle_region_video_lock (); Gtk::VBox time_bars_vbox; @@ -1020,10 +1003,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD YOrigin = 0x4 }; - Type pending; + Type pending; framepos_t time_origin; - double samples_per_pixel; - double y_origin; + framecnt_t samples_per_pixel; + double y_origin; int idle_handler_id; /** true if we are currently in the idle handler */ @@ -1068,6 +1051,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool button_press_handler_1 (ArdourCanvas::Item *, GdkEvent *, ItemType); bool button_press_handler_2 (ArdourCanvas::Item *, GdkEvent *, ItemType); bool button_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); + bool button_double_click_handler (ArdourCanvas::Item*, GdkEvent*, ItemType); bool button_press_dispatch (GdkEventButton*); bool button_release_dispatch (GdkEventButton*); bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false); @@ -1207,7 +1191,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void temporal_zoom_region (bool both_axes); void zoom_to_region (bool both_axes); void temporal_zoom_session (); - void temporal_zoom (double scale); + void temporal_zoom (framecnt_t samples_per_pixel); void temporal_zoom_by_frame (framepos_t start, framepos_t end); void temporal_zoom_to_frame (bool coarser, framepos_t frame); @@ -1232,13 +1216,17 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool idle_drop_paths (std::vector paths, framepos_t frame, double ypos, bool copy); void drop_paths_part_two (const std::vector& paths, framepos_t frame, double ypos, bool copy); - int import_sndfiles (std::vector paths, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t& pos, + int import_sndfiles (std::vector paths, Editing::ImportDisposition, Editing::ImportMode mode, + ARDOUR::SrcQuality, framepos_t& pos, int target_regions, int target_tracks, boost::shared_ptr&, bool); - int embed_sndfiles (std::vector paths, bool multiple_files, bool& check_sample_rate, Editing::ImportMode mode, + int embed_sndfiles (std::vector paths, bool multiple_files, bool& check_sample_rate, + Editing::ImportDisposition disposition, Editing::ImportMode mode, framepos_t& pos, int target_regions, int target_tracks, boost::shared_ptr&); - int add_sources (std::vector paths, ARDOUR::SourceList& sources, framepos_t& pos, Editing::ImportMode, + int add_sources (std::vector paths, ARDOUR::SourceList& sources, framepos_t& pos, + Editing::ImportDisposition, Editing::ImportMode, int target_regions, int target_tracks, boost::shared_ptr&, bool add_channel_suffix); + int finish_bringing_in_material (boost::shared_ptr region, uint32_t, uint32_t, framepos_t& pos, Editing::ImportMode mode, boost::shared_ptr& existing_track); @@ -1427,16 +1415,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void toggle_video_timeline_locked (); void set_video_timeline_locked (const bool); void queue_visual_videotimeline_update (); - void embed_audio_from_video (std::string, framepos_t n = 0); - - bool canvas_imageframe_item_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*); - bool canvas_imageframe_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameTimeAxis*); - bool canvas_imageframe_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*); - bool canvas_imageframe_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*); - bool canvas_marker_time_axis_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerTimeAxis*); - bool canvas_markerview_item_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*); - bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*); - bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*); + void embed_audio_from_video (std::string, framepos_t n = 0, bool lock_position_to_video = true); PBD::Signal0 EditorFreeze; PBD::Signal0 EditorThaw; @@ -1484,12 +1463,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD TempoLines* tempo_lines; + ArdourCanvas::Group* global_rect_group; ArdourCanvas::Group* time_line_group; void hide_measures (); void draw_measures (ARDOUR::TempoMap::BBTPointList::const_iterator& begin, ARDOUR::TempoMap::BBTPointList::const_iterator& end); - bool redraw_measures (); void new_tempo_section (); @@ -1506,11 +1485,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void edit_tempo_marker (ArdourCanvas::Item*); void edit_meter_marker (ArdourCanvas::Item*); void edit_control_point (ArdourCanvas::Item*); - void edit_notes (std::set const & s); + void edit_notes (TimeAxisViewItem&); void marker_menu_edit (); void marker_menu_remove (); void marker_menu_rename (); + void rename_marker (Marker *marker); void toggle_marker_menu_lock (); void toggle_marker_menu_glue (); void marker_menu_hide (); @@ -1895,47 +1875,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void nudge_track (bool use_edit_point, bool forwards); -#ifdef WITH_CMT - void handle_new_imageframe_time_axis_view(const std::string & track_name, void* src) ; - void handle_new_imageframe_marker_time_axis_view(const std::string & track_name, TimeAxisView* marked_track) ; - - void start_imageframe_grab(ArdourCanvas::Item*, GdkEvent*) ; - void start_markerview_grab(ArdourCanvas::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(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(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(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(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, 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 ; -#endif - static const int32_t default_width = 995; static const int32_t default_height = 765; @@ -2110,22 +2049,23 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool _following_mixer_selection; int time_fx (ARDOUR::RegionList&, float val, bool pitching); - + void note_edit_done (int, EditNoteDialog*); void toggle_sound_midi_notes (); /** Flag for a bit of a hack wrt control point selection; see set_selected_control_point_from_click */ bool _control_point_toggled_on_press; /** This is used by TimeAxisView to keep a track of the TimeAxisView that is currently being - stepped in height using Shift-Scrollwheel. When a scroll event occurs, we do the step on - this _stepping_axis_view if it is non-0 (and we set up this _stepping_axis_view with the - TimeAxisView underneath the mouse if it is 0). Then Editor resets _stepping_axis_view when - the shift key is released. In this (hacky) way, pushing shift and moving the scroll wheel - will operate on the same track until shift is released (rather than skipping about to whatever - happens to be underneath the mouse at the time). + stepped in height using ScrollZoomVerticalModifier+Scrollwheel. When a scroll event + occurs, we do the step on this _stepping_axis_view if it is non-0 (and we set up this + _stepping_axis_view with the TimeAxisView underneath the mouse if it is 0). Then Editor + resets _stepping_axis_view when the modifier key is released. In this (hacky) way, + pushing the modifier key and moving the scroll wheel will operate on the same track + until the key is released (rather than skipping about to whatever happens to be + underneath the mouse at the time). */ TimeAxisView* _stepping_axis_view; - void shift_key_released (); + void zoom_vertical_modifier_released(); friend class Drag; friend class RegionDrag;