X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_actions.cc;h=a5e2e8a369b19fa98f19d50cbdcb448afb850e08;hb=4dc1bbff359308ad884c9429d155f772ebb89bc4;hp=a8b9f0da0cd4fff7bf932997b513883491592258;hpb=3fa84d0caa2fb74471619cff2e44f5db3f0a12c6;p=ardour.git diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index a8b9f0da0c..a5e2e8a369 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -23,6 +23,7 @@ #include "pbd/file_utils.h" #include "gtkmm2ext/tearoff.h" +#include "gtkmm2ext/utils.h" #include "ardour/filesystem_paths.h" #include "ardour/profile.h" @@ -400,45 +401,59 @@ Editor::register_actions () radio_reg_sens (zoom_actions, zoom_group, "zoom-focus-mouse", _("Zoom Focus Mouse"), sigc::bind (sigc::mem_fun(*this, &Editor::zoom_focus_chosen), Editing::ZoomFocusMouse)); radio_reg_sens (zoom_actions, zoom_group, "zoom-focus-edit", _("Zoom Focus Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::zoom_focus_chosen), Editing::ZoomFocusEdit)); + ActionManager::register_action (editor_actions, X_("cycle-zoom-focus"), _("Next Zoom Focus"), sigc::mem_fun (*this, &Editor::cycle_zoom_focus)); + + Glib::RefPtr mouse_mode_actions = ActionGroup::create (X_("MouseMode")); RadioAction::Group mouse_mode_group; + act = ActionManager::register_toggle_action (mouse_mode_actions, "set-mouse-mode-object-range", _("Smart Object Mode"), sigc::mem_fun (*this, &Editor::mouse_mode_object_range_toggled)); + smart_mode_action = Glib::RefPtr::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.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.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.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.set_name ("mouse mode button"); - act = ActionManager::register_toggle_action (mouse_mode_actions, "set-mouse-mode-object-range", _("Link Object / Range Tools"), sigc::mem_fun (*this, &Editor::mouse_mode_object_range_toggled)); - smart_mode_action = Glib::RefPtr::cast_static (act); - 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.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.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.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.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)); @@ -446,6 +461,7 @@ Editor::register_actions () 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.set_name ("mouse mode button"); RadioAction::Group edit_point_group; @@ -528,15 +544,46 @@ Editor::register_actions () ruler_timecode_action = Glib::RefPtr::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::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))); + ActionManager::register_action (editor_menu_actions, X_("VideoMonitorMenu"), _("Video Monitor")); + + ruler_video_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-video-ruler"), _("Video"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_video_timeline))); + xjadeo_proc_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (editor_actions, X_("ToggleJadeo"), _("Video Monitor"), sigc::mem_fun (*this, &Editor::set_xjadeo_proc))); + + xjadeo_ontop_action = Glib::RefPtr::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::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::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::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::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))); + xjadeo_letterbox_action = Glib::RefPtr::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 (false); + ruler_range_action->set_active (true); ruler_loop_punch_action->set_active (true); ruler_loop_punch_action->set_active (true); + + ruler_video_action->set_active (false); + xjadeo_proc_action->set_active (false); + xjadeo_proc_action->set_sensitive (false); + xjadeo_ontop_action->set_active (false); + xjadeo_ontop_action->set_sensitive (false); + xjadeo_timecode_action->set_active (false); + xjadeo_timecode_action->set_sensitive (false); + xjadeo_frame_action->set_active (false); + xjadeo_frame_action->set_sensitive (false); + xjadeo_osdbg_action->set_active (false); + xjadeo_osdbg_action->set_sensitive (false); + xjadeo_fullscreen_action->set_active (false); + xjadeo_fullscreen_action->set_sensitive (false); + xjadeo_letterbox_action->set_active (false); + xjadeo_letterbox_action->set_sensitive (false); + xjadeo_zoom_100->set_sensitive (false); + if (Profile->get_sae()) { ruler_bbt_action->set_active (true); ruler_cd_marker_action->set_active (false); @@ -692,6 +739,9 @@ Editor::toggle_ruler_visibility (RulerType rt) case ruler_time_cd_marker: action = "toggle-cd-marker-ruler"; break; + case ruler_video_timeline: + action = "toggle-video-ruler"; + break; } Glib::RefPtr act = ActionManager::get_action (X_("Rulers"), action); @@ -723,6 +773,133 @@ Editor::set_group_tabs () } } +void +Editor::set_close_video_sensitive (bool onoff) +{ + Glib::RefPtr act = ActionManager::get_action (X_("Main"), X_("CloseVideo")); + if (act) { + act->set_sensitive (onoff); + } +} + +void +Editor::set_xjadeo_sensitive (bool onoff) +{ + xjadeo_proc_action->set_sensitive(onoff); +} + +void +Editor::toggle_xjadeo_proc (int state) +{ + switch(state) { + case 1: + xjadeo_proc_action->set_active(true); + break; + case 0: + xjadeo_proc_action->set_active(false); + break; + default: + xjadeo_proc_action->set_active(!xjadeo_proc_action->get_active()); + break; + } + bool onoff = xjadeo_proc_action->get_active(); + xjadeo_ontop_action->set_sensitive(onoff); + xjadeo_timecode_action->set_sensitive(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 +Editor::set_xjadeo_proc () +{ + if (xjadeo_proc_action->get_active()) { + ARDOUR_UI::instance()->video_timeline->open_video_monitor(); + } else { + ARDOUR_UI::instance()->video_timeline->close_video_monitor(); + } +} + +void +Editor::toggle_xjadeo_viewoption (int what, int state) +{ + Glib::RefPtr action; + switch (what) { + case 1: + action = xjadeo_ontop_action; + break; + case 2: + action = xjadeo_timecode_action; + break; + case 3: + action = xjadeo_frame_action; + break; + case 4: + action = xjadeo_osdbg_action; + break; + case 5: + action = xjadeo_fullscreen_action; + break; + case 6: + action = xjadeo_letterbox_action; + break; + case 7: + return; + default: + return; + } + + switch(state) { + case 1: + action->set_active(true); + break; + case 0: + action->set_active(false); + break; + default: + action->set_active(!action->get_active()); + break; + } +} + +void +Editor::set_xjadeo_viewoption (int what) +{ + Glib::RefPtr action; + switch (what) { + case 1: + action = xjadeo_ontop_action; + break; + case 2: + action = xjadeo_timecode_action; + break; + case 3: + action = xjadeo_frame_action; + break; + case 4: + action = xjadeo_osdbg_action; + break; + 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; + } + if (action->get_active()) { + ARDOUR_UI::instance()->video_timeline->control_video_monitor(what, 1); + } else { + ARDOUR_UI::instance()->video_timeline->control_video_monitor(what, 0); + } +} + void Editor::toggle_measure_visibility () { @@ -1431,8 +1608,6 @@ Editor::parameter_changed (std::string p) update_region_fade_visibility (); } else if (p == "edit-mode") { edit_mode_selector.set_active_text (edit_mode_to_string (Config->get_edit_mode())); - } else if (p == "subframes-per-frame") { - update_just_timecode (); } else if (p == "show-track-meters") { toggle_meter_updating(); } else if (p == "show-summary") { @@ -1489,6 +1664,15 @@ Editor::parameter_changed (std::string p) if (_routes) { _routes->reset_remote_control_ids (); } + } else if (p == "use-tooltips") { + + /* this doesn't really belong here but it has to go somewhere */ + + if (Config->get_use_tooltips()) { + Gtkmm2ext::enable_tooltips (); + } else { + Gtkmm2ext::disable_tooltips (); + } } } @@ -1552,6 +1736,8 @@ Editor::register_region_actions () /* Toggle `locked' status of selected regions */ toggle_reg_sens (_region_actions, "toggle-region-lock", _("Lock"), sigc::mem_fun(*this, &Editor::toggle_region_lock)); + toggle_reg_sens (_region_actions, "toggle-region-video-lock", _("Lock to Video"), sigc::mem_fun(*this, &Editor::toggle_region_video_lock)); + toggle_reg_sens ( _region_actions, "toggle-region-lock-style",