#include "ardour/session.h"
#include "ardour/types.h"
+#include "canvas/canvas.h"
+#include "canvas/pixbuf.h"
+
#include "actions.h"
#include "ardour_ui.h"
#include "editing.h"
using namespace Glib;
using namespace std;
using namespace ARDOUR;
+using namespace ARDOUR_UI_UTILS;
using namespace PBD;
using namespace Editing;
ActionManager::register_action (editor_actions, "escape", _("Break drag or deselect all"), sigc::mem_fun (*this, &Editor::escape));
+ /* We don't bother registering "unlock" because it would be insensitive
+ when required. Editor::unlock() must be invoked directly.
+ */
+ ActionManager::register_action (editor_actions, "lock", _("Lock"), sigc::mem_fun (*this, &Editor::lock));
+
toggle_reg_sens (editor_actions, "show-editor-mixer", _("Show Editor Mixer"), sigc::mem_fun (*this, &Editor::editor_mixer_button_toggled));
toggle_reg_sens (editor_actions, "show-editor-list", _("Show Editor List"), sigc::mem_fun (*this, &Editor::editor_list_button_toggled));
smart_mode_action = Glib::RefPtr<ToggleAction>::cast_static (act);
smart_mode_button.set_related_action (smart_mode_action);
smart_mode_button.set_text (_("Smart"));
- smart_mode_button.add_elements ( ArdourButton::FlatFace );
+ smart_mode_button.add_elements ( ArdourButton::Inset );
smart_mode_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-object", _("Object Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseObject));
mouse_move_button.set_related_action (act);
mouse_move_button.set_image (::get_icon("tool_object"));
- mouse_move_button.add_elements ( ArdourButton::FlatFace );
+ mouse_move_button.add_elements ( ArdourButton::Inset );
mouse_move_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-range", _("Range Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseRange));
mouse_select_button.set_related_action (act);
mouse_select_button.set_image (::get_icon("tool_range"));
- mouse_select_button.add_elements ( ArdourButton::FlatFace );
+ mouse_select_button.add_elements ( ArdourButton::Inset );
mouse_select_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-draw", _("Note Drawing Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseDraw));
mouse_draw_button.set_related_action (act);
mouse_draw_button.set_image (::get_icon("midi_tool_pencil"));
- mouse_draw_button.add_elements ( ArdourButton::FlatFace );
+ mouse_draw_button.add_elements ( ArdourButton::Inset );
mouse_draw_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-gain", _("Gain Tool"), sigc::bind (mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseGain));
mouse_gain_button.set_related_action (act);
mouse_gain_button.set_image (::get_icon("tool_gain"));
- mouse_gain_button.add_elements ( ArdourButton::FlatFace );
+ mouse_gain_button.add_elements ( ArdourButton::Inset );
mouse_gain_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-zoom", _("Zoom Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseZoom));
mouse_zoom_button.set_related_action (act);
mouse_zoom_button.set_image (::get_icon("tool_zoom"));
- mouse_zoom_button.add_elements ( ArdourButton::FlatFace );
+ mouse_zoom_button.add_elements ( ArdourButton::Inset );
mouse_zoom_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-audition", _("Audition Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseAudition));
mouse_audition_button.set_related_action (act);
mouse_audition_button.set_image (::get_icon("tool_audition"));
- mouse_audition_button.add_elements ( ArdourButton::FlatFace );
+ mouse_audition_button.add_elements ( ArdourButton::Inset );
mouse_audition_button.set_name ("mouse mode button");
act = ActionManager::register_radio_action (mouse_mode_actions, mouse_mode_group, "set-mouse-mode-timefx", _("Time FX Tool"), sigc::bind (sigc::mem_fun(*this, &Editor::mouse_mode_toggled), Editing::MouseTimeFX));
mouse_timefx_button.set_related_action (act);
mouse_timefx_button.set_image (::get_icon("tool_stretch"));
- mouse_timefx_button.add_elements ( ArdourButton::FlatFace );
+ mouse_timefx_button.add_elements ( ArdourButton::Inset );
mouse_timefx_button.set_name ("mouse mode button");
ActionManager::register_action (editor_actions, "step-mouse-mode", _("Step Mouse Mode"), sigc::bind (sigc::mem_fun(*this, &Editor::step_mouse_mode), true));
act = ActionManager::register_toggle_action (mouse_mode_actions, "toggle-internal-edit", _("Edit MIDI"), sigc::mem_fun(*this, &Editor::toggle_internal_editing));
internal_edit_button.set_related_action (act);
internal_edit_button.set_image (::get_icon("tool_note"));
- internal_edit_button.add_elements ( ArdourButton::FlatFace );
+ internal_edit_button.add_elements ( ArdourButton::Inset );
internal_edit_button.set_name ("mouse mode button");
RadioAction::Group edit_point_group;
ActionManager::register_action (editor_actions, "cycle-edit-point", _("Change Edit Point"), sigc::bind (sigc::mem_fun (*this, &Editor::cycle_edit_point), false));
ActionManager::register_action (editor_actions, "cycle-edit-point-with-marker", _("Change Edit Point Including Marker"), sigc::bind (sigc::mem_fun (*this, &Editor::cycle_edit_point), true));
- if (!Profile->get_sae()) {
- ActionManager::register_action (editor_actions, "set-edit-splice", _("Splice"), sigc::bind (sigc::mem_fun (*this, &Editor::set_edit_mode), Splice));
- }
+
+// ActionManager::register_action (editor_actions, "set-edit-splice", _("Splice"), sigc::bind (sigc::mem_fun (*this, &Editor::set_edit_mode), Splice));
+ ActionManager::register_action (editor_actions, "set-edit-ripple", _("Ripple"), bind (mem_fun (*this, &Editor::set_edit_mode), Ripple));
ActionManager::register_action (editor_actions, "set-edit-slide", _("Slide"), sigc::bind (sigc::mem_fun (*this, &Editor::set_edit_mode), Slide));
ActionManager::register_action (editor_actions, "set-edit-lock", _("Lock"), sigc::bind (sigc::mem_fun (*this, &Editor::set_edit_mode), Lock));
ActionManager::register_action (editor_actions, "toggle-edit-mode", _("Toggle Edit Mode"), sigc::mem_fun (*this, &Editor::cycle_edit_mode));
ruler_samples_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-samples-ruler"), _("Samples"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_samples)));
ruler_timecode_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-timecode-ruler"), _("Timecode"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_timecode)));
ruler_minsec_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-minsec-ruler"), _("Min:Sec"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_minsec)));
-#ifdef WITH_VIDEOTIMELINE
ActionManager::register_action (editor_menu_actions, X_("VideoMonitorMenu"), _("Video Monitor"));
xjadeo_ontop_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-ontop"), _("Always on Top"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 1)));
xjadeo_timecode_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-timecode"), _("Timecode"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 2)));
- xjadeo_frame_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-frame"), _("Framenumber"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 3)));
+ xjadeo_frame_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-frame"), _("Frame number"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 3)));
xjadeo_osdbg_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-osdbg"), _("Timecode Background"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 4)));
xjadeo_fullscreen_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-fullscreen"), _("Fullscreen"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 5)));
-
-#endif
+ xjadeo_letterbox_action = Glib::RefPtr<ToggleAction>::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-letterbox"), _("Letterbox"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 6)));
+ xjadeo_zoom_100 = reg_sens (editor_actions, "zoom-vmon-100", _("Original Size"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 7));
/* set defaults here */
no_ruler_shown_update = true;
- ruler_meter_action->set_active (true);
- ruler_tempo_action->set_active (true);
- ruler_marker_action->set_active (true);
- ruler_range_action->set_active (true);
- ruler_loop_punch_action->set_active (true);
- ruler_loop_punch_action->set_active (true);
-#ifdef WITH_VIDEOTIMELINE
+
+ if (Profile->get_trx()) {
+ ruler_marker_action->set_active (true);
+ ruler_meter_action->set_active (false);
+ ruler_tempo_action->set_active (false);
+ ruler_range_action->set_active (false);
+ ruler_loop_punch_action->set_active (false);
+ ruler_loop_punch_action->set_active (false);
+ ruler_bbt_action->set_active (true);
+ ruler_cd_marker_action->set_active (false);
+ ruler_timecode_action->set_active (false);
+ ruler_minsec_action->set_active (true);
+ } else {
+ ruler_marker_action->set_active (true);
+ ruler_meter_action->set_active (true);
+ ruler_tempo_action->set_active (true);
+ ruler_range_action->set_active (true);
+ ruler_loop_punch_action->set_active (true);
+ ruler_loop_punch_action->set_active (true);
+ ruler_bbt_action->set_active (false);
+ ruler_cd_marker_action->set_active (true);
+ ruler_timecode_action->set_active (true);
+ ruler_minsec_action->set_active (false);
+ }
+
ruler_video_action->set_active (false);
xjadeo_proc_action->set_active (false);
xjadeo_proc_action->set_sensitive (false);
xjadeo_osdbg_action->set_sensitive (false);
xjadeo_fullscreen_action->set_active (false);
xjadeo_fullscreen_action->set_sensitive (false);
-#endif
- if (Profile->get_sae()) {
- ruler_bbt_action->set_active (true);
- ruler_cd_marker_action->set_active (false);
- ruler_timecode_action->set_active (false);
- ruler_minsec_action->set_active (true);
- } else {
- ruler_bbt_action->set_active (false);
- ruler_cd_marker_action->set_active (true);
- ruler_timecode_action->set_active (true);
- ruler_minsec_action->set_active (false);
- }
+ xjadeo_letterbox_action->set_active (false);
+ xjadeo_letterbox_action->set_sensitive (false);
+ xjadeo_zoom_100->set_sensitive (false);
+
ruler_samples_action->set_active (false);
no_ruler_shown_update = false;
std::string binding_file;
- if (find_file_in_search_path (ardour_config_search_path(), "editor.bindings", binding_file)) {
+ if (find_file (ardour_config_search_path(), "editor.bindings", binding_file)) {
key_bindings.load (binding_file);
info << string_compose (_("Loaded editor bindings from %1"), binding_file) << endmsg;
} else {
case ruler_time_cd_marker:
action = "toggle-cd-marker-ruler";
break;
-#ifdef WITH_VIDEOTIMELINE
case ruler_video_timeline:
action = "toggle-video-ruler";
break;
-#endif
}
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Rulers"), action);
}
}
-#ifdef WITH_VIDEOTIMELINE
+void
+Editor::set_close_video_sensitive (bool onoff)
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Main"), X_("CloseVideo"));
+ if (act) {
+ act->set_sensitive (onoff);
+ }
+}
+
void
Editor::set_xjadeo_sensitive (bool onoff)
{
xjadeo_frame_action->set_sensitive(onoff);
xjadeo_osdbg_action->set_sensitive(onoff);
xjadeo_fullscreen_action->set_sensitive(onoff);
+ xjadeo_letterbox_action->set_sensitive(onoff);
+ xjadeo_zoom_100->set_sensitive(onoff);
}
void
case 5:
action = xjadeo_fullscreen_action;
break;
+ case 6:
+ action = xjadeo_letterbox_action;
+ break;
+ case 7:
+ return;
default:
return;
}
case 5:
action = xjadeo_fullscreen_action;
break;
+ case 6:
+ action = xjadeo_letterbox_action;
+ break;
+ case 7:
+ ARDOUR_UI::instance()->video_timeline->control_video_monitor(what, 0);
+ return;
default:
return;
}
ARDOUR_UI::instance()->video_timeline->control_video_monitor(what, 0);
}
}
-#endif
void
Editor::toggle_measure_visibility ()
{
switch (_snap_type) {
case Editing::SnapToCDFrame:
- set_snap_to (Editing::SnapToTimecodeFrame);
+ set_snap_to (Editing::SnapToRegionBoundary);
break;
case Editing::SnapToTimecodeFrame:
- set_snap_to (Editing::SnapToTimecodeSeconds);
+ set_snap_to (Editing::SnapToCDFrame);
break;
case Editing::SnapToTimecodeSeconds:
- set_snap_to (Editing::SnapToTimecodeMinutes);
+ set_snap_to (Editing::SnapToTimecodeFrame);
break;
case Editing::SnapToTimecodeMinutes:
- set_snap_to (Editing::SnapToSeconds);
+ set_snap_to (Editing::SnapToTimecodeSeconds);
break;
case Editing::SnapToSeconds:
- set_snap_to (Editing::SnapToMinutes);
+ set_snap_to (Editing::SnapToTimecodeMinutes);
break;
case Editing::SnapToMinutes:
- set_snap_to (Editing::SnapToBeatDiv128);
+ set_snap_to (Editing::SnapToSeconds);
break;
case Editing::SnapToBeatDiv128:
- set_snap_to (Editing::SnapToBeatDiv64);
+ set_snap_to (Editing::SnapToMinutes);
break;
case Editing::SnapToBeatDiv64:
- set_snap_to (Editing::SnapToBeatDiv32);
+ set_snap_to (Editing::SnapToBeatDiv128);
break;
case Editing::SnapToBeatDiv32:
- set_snap_to (Editing::SnapToBeatDiv28);
+ set_snap_to (Editing::SnapToBeatDiv64);
break;
case Editing::SnapToBeatDiv28:
- set_snap_to (Editing::SnapToBeatDiv24);
+ set_snap_to (Editing::SnapToBeatDiv32);
break;
case Editing::SnapToBeatDiv24:
- set_snap_to (Editing::SnapToBeatDiv20);
+ set_snap_to (Editing::SnapToBeatDiv28);
break;
case Editing::SnapToBeatDiv20:
- set_snap_to (Editing::SnapToBeatDiv16);
+ set_snap_to (Editing::SnapToBeatDiv24);
break;
case Editing::SnapToBeatDiv16:
- set_snap_to (Editing::SnapToBeatDiv14);
+ set_snap_to (Editing::SnapToBeatDiv20);
break;
case Editing::SnapToBeatDiv14:
- set_snap_to (Editing::SnapToBeatDiv12);
+ set_snap_to (Editing::SnapToBeatDiv16);
break;
case Editing::SnapToBeatDiv12:
- set_snap_to (Editing::SnapToBeatDiv10);
+ set_snap_to (Editing::SnapToBeatDiv14);
break;
case Editing::SnapToBeatDiv10:
- set_snap_to (Editing::SnapToBeatDiv8);
+ set_snap_to (Editing::SnapToBeatDiv12);
break;
case Editing::SnapToBeatDiv8:
- set_snap_to (Editing::SnapToBeatDiv7);
+ set_snap_to (Editing::SnapToBeatDiv10);
break;
case Editing::SnapToBeatDiv7:
- set_snap_to (Editing::SnapToBeatDiv6);
+ set_snap_to (Editing::SnapToBeatDiv8);
break;
case Editing::SnapToBeatDiv6:
- set_snap_to (Editing::SnapToBeatDiv5);
+ set_snap_to (Editing::SnapToBeatDiv7);
break;
case Editing::SnapToBeatDiv5:
- set_snap_to (Editing::SnapToBeatDiv4);
+ set_snap_to (Editing::SnapToBeatDiv6);
break;
case Editing::SnapToBeatDiv4:
- set_snap_to (Editing::SnapToBeatDiv3);
+ set_snap_to (Editing::SnapToBeatDiv5);
break;
case Editing::SnapToBeatDiv3:
- set_snap_to (Editing::SnapToBeatDiv2);
+ set_snap_to (Editing::SnapToBeatDiv4);
break;
case Editing::SnapToBeatDiv2:
- set_snap_to (Editing::SnapToBeat);
+ set_snap_to (Editing::SnapToBeatDiv3);
break;
case Editing::SnapToBeat:
- set_snap_to (Editing::SnapToBar);
+ set_snap_to (Editing::SnapToBeatDiv2);
break;
case Editing::SnapToBar:
- set_snap_to (Editing::SnapToMark);
+ set_snap_to (Editing::SnapToBeat);
break;
case Editing::SnapToMark:
- set_snap_to (Editing::SnapToRegionStart);
+ set_snap_to (Editing::SnapToBar);
break;
case Editing::SnapToRegionStart:
- set_snap_to (Editing::SnapToRegionEnd);
+ set_snap_to (Editing::SnapToMark);
break;
case Editing::SnapToRegionEnd:
- set_snap_to (Editing::SnapToRegionSync);
+ set_snap_to (Editing::SnapToRegionStart);
break;
case Editing::SnapToRegionSync:
- set_snap_to (Editing::SnapToRegionBoundary);
+ set_snap_to (Editing::SnapToRegionEnd);
break;
case Editing::SnapToRegionBoundary:
- set_snap_to (Editing::SnapToCDFrame);
+ set_snap_to (Editing::SnapToRegionSync);
break;
}
}
ENSURE_GUI_THREAD (*this, &Editor::parameter_changed, p)
if (p == "auto-loop") {
- update_loop_range_view (true);
+ update_loop_range_view ();
} else if (p == "punch-in") {
- update_punch_range_view (true);
+ update_punch_range_view ();
} else if (p == "punch-out") {
- update_punch_range_view (true);
+ update_punch_range_view ();
} else if (p == "timecode-format") {
update_just_timecode ();
} else if (p == "show-region-fades") {
update_region_fade_visibility ();
} else if (p == "edit-mode") {
- edit_mode_selector.set_active_text (edit_mode_to_string (Config->get_edit_mode()));
+ edit_mode_selector.set_text (edit_mode_to_string (Config->get_edit_mode()));
} else if (p == "show-track-meters") {
toggle_meter_updating();
} else if (p == "show-summary") {
} else if (p == "timecode-offset" || p == "timecode-offset-negative") {
update_just_timecode ();
} else if (p == "show-zoom-tools") {
- _zoom_tearoff->set_visible (Config->get_show_zoom_tools(), true);
+ if (_zoom_tearoff) {
+ _zoom_tearoff->set_visible (Config->get_show_zoom_tools(), true);
+ }
} else if (p == "sound-midi-notes") {
Glib::RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("sound-midi-notes"));
void
Editor::reset_focus ()
{
- track_canvas->grab_focus();
+ _track_canvas->grab_focus();
}
void
/* Toggle `locked' status of selected regions */
toggle_reg_sens (_region_actions, "toggle-region-lock", _("Lock"), sigc::mem_fun(*this, &Editor::toggle_region_lock));
-#ifdef WITH_VIDEOTIMELINE
toggle_reg_sens (_region_actions, "toggle-region-video-lock", _("Lock to Video"), sigc::mem_fun(*this, &Editor::toggle_region_video_lock));
-#endif
toggle_reg_sens (
_region_actions,
reg_sens (_region_actions, "nudge-forward", _("Nudge Later"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_forward), false, false));
reg_sens (_region_actions, "nudge-backward", _("Nudge Earlier"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_backward), false, false));
+ reg_sens (_region_actions, "sequence-regions", _("Sequence Regions"), sigc::mem_fun (*this, &Editor::sequence_regions));
+
reg_sens (
_region_actions,
"nudge-forward-by-capture-offset",