#include "editor_items.h"
#include "region_selection.h"
#include "canvas.h"
-#include "window_proxy.h"
namespace Gnome {
namespace Canvas {
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 PlaylistSelector;
class PluginSelector;
+class ProgressReporter;
class RhythmFerret;
class Selection;
class SoundFileOmega;
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;
-/* <CMT Additions> */
-class ImageFrameView;
-class ImageFrameTimeAxisView;
-class ImageFrameTimeAxis;
-class MarkerTimeAxis ;
-class MarkerView ;
-class ImageFrameSocketHandler ;
-class TimeAxisViewItem ;
-/* </CMT Additions> */
-
class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
{
public:
void set_zoom_focus (Editing::ZoomFocus);
Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; }
double get_current_zoom () const { return frames_per_unit; }
-
+ void cycle_zoom_focus ();
void temporal_zoom_step (bool coarser);
void tav_zoom_step (bool coarser);
void tav_zoom_smooth (bool coarser, bool force_all);
void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t&);
void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, framepos_t&);
- void get_regions_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& regions);
+ void get_regions_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& regions, bool src_comparison);
void center_screen (framepos_t);
ruler_time_range_marker = 7,
ruler_time_transport_marker = 8,
ruler_time_cd_marker = 9,
+ ruler_video_timeline = 10,
};
static GtkCustomMetric ruler_metrics[4];
void update_just_timecode ();
void compute_fixed_ruler_scale (); //calculates the RulerScale of the fixed rulers
void update_fixed_rulers ();
- void update_tempo_based_rulers ();
+ void update_tempo_based_rulers (ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
+ ARDOUR::TempoMap::BBTPointList::const_iterator& end);
void popup_ruler_menu (framepos_t where = 0, ItemType type = RegionItem);
void update_ruler_visibility ();
void set_ruler_visible (RulerType, bool);
gint bbt_nmarks;
uint32_t bbt_bar_helper_on;
uint32_t bbt_accent_modulo;
- void compute_bbt_ruler_scale (framepos_t lower, framepos_t upper);
+ void compute_bbt_ruler_scale (framepos_t lower, framepos_t upper,
+ ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_begin,
+ ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_end);
gint metric_get_timecode (GtkCustomRulerMark **, gdouble, gdouble, gint);
gint metric_get_bbt (GtkCustomRulerMark **, gdouble, gdouble, gint);
Gtk::Label transport_mark_label;
Gtk::Label cd_mark_label;
+ /* videtimline related actions */
+ ArdourCanvas::SimpleRect* videotl_bar;
+ Gtk::Label videotl_label;
+ ArdourCanvas::Group* videotl_bar_group;
+ ArdourCanvas::Group* videotl_group;
+ Glib::RefPtr<Gtk::ToggleAction> ruler_video_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_proc_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_ontop_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_timecode_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_frame_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_osdbg_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_fullscreen_action;
+ Glib::RefPtr<Gtk::ToggleAction> xjadeo_letterbox_action;
+ Glib::RefPtr<Gtk::Action> xjadeo_zoom_100;
+ void set_xjadeo_proc ();
+ void toggle_xjadeo_proc (int state=-1);
+ 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 toggle_region_video_lock ();
+
Gtk::VBox time_button_vbox;
Gtk::HBox time_button_hbox;
void bring_in_external_audio (Editing::ImportMode mode, framepos_t& pos);
- bool idle_drop_paths (std::vector<std::string> paths, framepos_t frame, double ypos);
- void drop_paths_part_two (const std::vector<std::string>& paths, framepos_t frame, double ypos);
+ bool idle_drop_paths (std::vector<std::string> paths, framepos_t frame, double ypos, bool copy);
+ void drop_paths_part_two (const std::vector<std::string>& paths, framepos_t frame, double ypos, bool copy);
int import_sndfiles (std::vector<std::string> paths, Editing::ImportMode mode, ARDOUR::SrcQuality, framepos_t& pos,
int target_regions, int target_tracks, boost::shared_ptr<ARDOUR::Track>&, bool);
bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_cd_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*);
+ bool canvas_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*);
+ void update_video_timeline (bool flush = false);
+ void set_video_timeline_height (const int);
+ bool is_video_timeline_locked ();
+ 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*);
/// true if we are in fullscreen mode
bool _maximised;
- ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_begin;
- ARDOUR::TempoMap::BBTPointList::const_iterator current_bbt_points_end;
-
TempoLines* tempo_lines;
ArdourCanvas::Group* time_line_group;
void hide_measures ();
- void draw_measures ();
+ void draw_measures (ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
+ ARDOUR::TempoMap::BBTPointList::const_iterator& end);
bool redraw_measures ();
void new_tempo_section ();
void edit_tempo_marker (ArdourCanvas::Item*);
void edit_meter_marker (ArdourCanvas::Item*);
void edit_control_point (ArdourCanvas::Item*);
- void edit_notes (std::set<Gnome::Canvas::CanvasNoteEvent *> const &);
+ void edit_notes (TimeAxisViewItem&);
void marker_menu_edit ();
void marker_menu_remove ();
void marker_menu_play_range ();
void marker_menu_set_playhead ();
void marker_menu_set_from_playhead ();
- void marker_menu_set_from_selection ();
+ void marker_menu_set_from_selection (bool force_regions);
void marker_menu_range_to_next ();
void marker_menu_zoom_to_range ();
void new_transport_marker_menu_set_loop ();
void remove_metric_marks ();
void draw_metric_marks (const ARDOUR::Metrics& metrics);
- void compute_current_bbt_points (framepos_t left, framepos_t right);
+ void compute_current_bbt_points (framepos_t left, framepos_t right,
+ ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
+ ARDOUR::TempoMap::BBTPointList::const_iterator& end);
+
void tempo_map_changed (const PBD::PropertyChange&);
void redisplay_tempo (bool immediate_redraw);
void editor_list_button_toggled ();
AudioClock* zoom_range_clock;
- Gtk::Button zoom_in_button;
- Gtk::Button zoom_out_button;
- Gtk::Button zoom_out_full_button;
- Gtk::Button tav_expand_button;
- Gtk::Button tav_shrink_button;
+ ArdourButton zoom_in_button;
+ ArdourButton zoom_out_button;
+ ArdourButton zoom_out_full_button;
+
+ ArdourButton tav_expand_button;
+ ArdourButton tav_shrink_button;
Gtk::VBox toolbar_clock_vbox;
Gtk::VBox toolbar_selection_clock_vbox;
ArdourButton mouse_timefx_button;
ArdourButton mouse_audition_button;
- ButtonJoiner* smart_mode_joiner;
+ ArdourButton smart_mode_button;
Glib::RefPtr<Gtk::ToggleAction> smart_mode_action;
void mouse_mode_toggled (Editing::MouseMode m);
- void mouse_mode_object_range_toggled () {}
+ void mouse_mode_object_range_toggled ();
bool ignore_mouse_mode_toggle;
ArdourButton internal_edit_button;
/* nudge */
- Gtk::Button nudge_forward_button;
- Gtk::Button nudge_backward_button;
+ ArdourButton nudge_forward_button;
+ ArdourButton nudge_backward_button;
Gtk::HBox nudge_hbox;
Gtk::VBox nudge_vbox;
AudioClock* nudge_clock;
void get_regions_at (RegionSelection&, framepos_t where, const TrackViewList& ts) const;
void get_regions_after (RegionSelection&, framepos_t where, const TrackViewList& ts) const;
- RegionSelection get_regions_from_selection ();
RegionSelection get_regions_from_selection_and_edit_point ();
RegionSelection get_regions_from_selection_and_entered ();
bool _following_mixer_selection;
int time_fx (ARDOUR::RegionList&, float val, bool pitching);
-
- bool doing_range_stuff() const {
- return (mouse_mode == Editing::MouseRange && (_join_object_range_state == JOIN_OBJECT_RANGE_NONE)) ||
- _join_object_range_state == JOIN_OBJECT_RANGE_RANGE;
- }
-
- bool doing_object_stuff() const {
- return (mouse_mode == Editing::MouseObject && (_join_object_range_state == JOIN_OBJECT_RANGE_NONE)) ||
- _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT;
- }
-
+ 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 */
friend class RegionCreateDrag;
friend class RegionMotionDrag;
friend class RegionInsertDrag;
+ friend class VideoTimeLineDrag;
friend class EditorSummary;
friend class EditorGroupTabs;