#include <set>
#include <string>
#include <sys/time.h>
+#include <glibmm/ustring.h>
+
+#include <boost/optional.hpp>
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/group.h>
class StreamView;
class AudioStreamView;
class ControlPoint;
+class SoundFileBrowser;
#ifdef FFT_ANALYSIS
class AnalysisWindow;
#endif
TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0);
Width editor_mixer_strip_width;
+ void maybe_add_mixer_strip_width (XMLNode&);
void show_editor_mixer (bool yn);
void set_selected_mixer_strip (TimeAxisView&);
void hide_track_in_display (TimeAxisView& tv);
void toggle_xfades_active ();
void toggle_xfade_visibility ();
bool xfade_visibility() const { return _xfade_visibility; }
+ void update_xfade_visibility ();
void update_crossfade_model ();
void set_crossfade_model (ARDOUR::CrossfadeModel);
ARDOUR::Session *session;
bool constructed;
+
+ // to keep track of the playhead position for control_scroll
+ boost::optional<nframes_t> _control_scroll_target;
PlaylistSelector* _playlist_selector;
void insert_region_list_selection (float times);
void add_external_audio_action (Editing::ImportMode);
+ void external_audio_dialog ();
+ bool check_multichannel_status (const std::vector<Glib::ustring>& paths);
+
+ SoundFileBrowser* sfbrowser;
+
+ void bring_in_external_audio (Editing::ImportMode mode, nframes64_t& pos);
+ void do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
+
+ void _do_embed (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
+ void do_embed (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
+ bool idle_do_embed (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, nframes64_t&);
+
+ int import_sndfiles (vector<Glib::ustring> paths, Editing::ImportMode mode, nframes64_t& pos,
+ int target_regions, int target_tracks, boost::shared_ptr<ARDOUR::AudioTrack>&);
+ int embed_sndfiles (vector<Glib::ustring> paths, bool multiple_files, bool& check_sample_rate, Editing::ImportMode mode,
+ nframes64_t& pos, int target_regions, int target_tracks, boost::shared_ptr<ARDOUR::AudioTrack>&);
- void bring_in_external_audio (Editing::ImportMode mode, ARDOUR::AudioTrack*, nframes_t& pos, bool prompt);
- void do_import (vector<Glib::ustring> paths, bool split, Editing::ImportMode mode, ARDOUR::AudioTrack*, nframes_t&, bool);
- void do_embed (vector<Glib::ustring> paths, bool split, Editing::ImportMode mode, ARDOUR::AudioTrack*, nframes_t&, bool);
- int import_sndfile (vector<Glib::ustring> paths, Editing::ImportMode mode, ARDOUR::AudioTrack* track, nframes_t& pos);
- int embed_sndfile (vector<Glib::ustring> paths, bool split, bool multiple_files, bool& check_sample_rate, Editing::ImportMode mode,
- ARDOUR::AudioTrack* track, nframes_t& pos, bool prompt);
- int finish_bringing_in_audio (boost::shared_ptr<ARDOUR::AudioRegion> region, uint32_t, uint32_t, ARDOUR::AudioTrack* track, nframes_t& pos, Editing::ImportMode mode);
+ int add_sources (vector<Glib::ustring> paths, ARDOUR::SourceList& sources, nframes64_t& pos, Editing::ImportMode,
+ int target_regions, int target_tracks, boost::shared_ptr<ARDOUR::AudioTrack>&);
+ int finish_bringing_in_audio (boost::shared_ptr<ARDOUR::AudioRegion> region, uint32_t, uint32_t, nframes64_t& pos, Editing::ImportMode mode,
+ boost::shared_ptr<ARDOUR::AudioTrack>& existing_track, int nth);
/* generic interthread progress window */
void add_location_from_audio_region ();
void add_location_from_selection ();
- void set_route_loop_selection ();
+ void set_loop_from_selection (bool play);
+ void set_punch_from_selection ();
+
+ void set_loop_range (nframes_t start, nframes_t end, std::string cmd);
+ void set_punch_range (nframes_t start, nframes_t end, std::string cmd);
void add_location_from_playhead_cursor ();
void start_scrolling ();
void stop_scrolling ();
+ bool _scrubbing;
+ nframes64_t last_scrub_frame;
+ uint32_t last_scrub_time;
+
void keyboard_selection_begin ();
void keyboard_selection_finish (bool add);
bool have_pending_keyboard_selection;
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*);
bool track_canvas_scroll (GdkEventScroll* event);
+ bool track_canvas_scroll_event (GdkEventScroll* event);
+ bool track_canvas_button_press_event (GdkEventButton* event);
+ bool track_canvas_button_release_event (GdkEventButton* event);
+ bool track_canvas_motion_notify_event (GdkEventMotion* event);
+
Gtk::Allocation canvas_allocation;
bool canvas_idle_queued;
void track_canvas_allocate (Gtk::Allocation alloc);
void tempo_map_changed (ARDOUR::Change);
void redisplay_tempo (bool immediate_redraw);
- void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false);
+ void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false);
+ void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false) {
+ /* XXX remove this function when everything moves to 64 bit frame counts */
+ nframes64_t first64 = first;
+ snap_to (first64, direction, for_mark);
+ first = (nframes_t) first64;
+ }
+
uint32_t bbt_beat_subdivision;
/* toolbar */
void drag_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
void end_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
- bool select_all_within (nframes_t start, nframes_t end, gdouble topy, gdouble boty, Selection::Operation op);
+ bool select_all_within (nframes_t start, nframes_t end, gdouble topy, gdouble boty, const TrackViewList&, Selection::Operation op);
ArdourCanvas::SimpleRect *rubberband_rect;
Glib::RefPtr<Gtk::Action> redo_action;
void history_changed ();
+ void color_handler ();
};
#endif /* __ardour_editor_h__ */