fix typo in 914224f
[ardour.git] / gtk2_ardour / editor_actions.cc
index c5ad6205680b3cefa098a4a40ad710f5ef422daa..c2f5d1516234cd6a62fc8f73f2d5aa44a9474af6 100644 (file)
 #include "editing.h"
 #include "editor.h"
 #include "gui_thread.h"
+#include "main_clock.h"
 #include "time_axis_view.h"
 #include "ui_config.h"
 #include "utils.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
 #include "audio_time_axis.h"
 #include "editor_group_tabs.h"
 #include "editor_routes.h"
@@ -202,6 +203,9 @@ Editor::register_actions ()
        reg_sens (editor_actions, "select-punch-range", _("Set Range to Punch Range"), sigc::mem_fun(*this, &Editor::set_selection_from_punch));
        reg_sens (editor_actions, "select-from-regions", _("Set Range to Selected Regions"), sigc::mem_fun(*this, &Editor::set_selection_from_region));
 
+       reg_sens (editor_actions, "edit-current-tempo", _("Edit Current Tempo"), sigc::mem_fun(*this, &Editor::edit_current_tempo));
+       reg_sens (editor_actions, "edit-current-meter", _("Edit Current Meter"), sigc::mem_fun(*this, &Editor::edit_current_meter));
+
        reg_sens (editor_actions, "select-all-after-edit-cursor", _("Select All After Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), true, false));
        reg_sens (editor_actions, "alternate-select-all-after-edit-cursor", _("Select All After Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), true, false));
        reg_sens (editor_actions, "select-all-before-edit-cursor", _("Select All Before Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), false, false));
@@ -254,6 +258,7 @@ Editor::register_actions ()
        reg_sens (editor_actions, "set-session-start-from-playhead", _("Set Session Start from Playhead"), sigc::mem_fun(*this, &Editor::set_session_start_from_playhead));
        reg_sens (editor_actions, "set-session-end-from-playhead", _("Set Session End from Playhead"), sigc::mem_fun(*this, &Editor::set_session_end_from_playhead));
 
+       reg_sens (editor_actions, "toggle-location-at-playhead", _("Toggle Mark at Playhead"), sigc::mem_fun(*this, &Editor::toggle_location_at_playhead_cursor));
        reg_sens (editor_actions, "add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(*this, &Editor::add_location_from_playhead_cursor));
        reg_sens (editor_actions, "alternate-add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(*this, &Editor::add_location_from_playhead_cursor));
 
@@ -300,8 +305,8 @@ Editor::register_actions ()
 
        act = reg_sens (editor_actions, "scroll-tracks-up", _("Scroll Tracks Up"), sigc::mem_fun(*this, &Editor::scroll_tracks_up));
        act = reg_sens (editor_actions, "scroll-tracks-down", _("Scroll Tracks Down"), sigc::mem_fun(*this, &Editor::scroll_tracks_down));
-       act = reg_sens (editor_actions, "step-tracks-up", _("Step Tracks Up"), sigc::mem_fun(*this, &Editor::scroll_tracks_up_line));
-       act = reg_sens (editor_actions, "step-tracks-down", _("Step Tracks Down"), sigc::mem_fun(*this, &Editor::scroll_tracks_down_line));
+       act = reg_sens (editor_actions, "step-tracks-up", _("Step Tracks Up"), sigc::hide_return (sigc::bind (sigc::mem_fun(*this, &Editor::scroll_up_one_track), true)));
+       act = reg_sens (editor_actions, "step-tracks-down", _("Step Tracks Down"), sigc::hide_return (sigc::bind (sigc::mem_fun(*this, &Editor::scroll_down_one_track), true)));
 
        reg_sens (editor_actions, "scroll-backward", _("Scroll Backward"), sigc::bind (sigc::mem_fun(*this, &Editor::scroll_backward), 0.8f));
        reg_sens (editor_actions, "scroll-forward", _("Scroll Forward"), sigc::bind (sigc::mem_fun(*this, &Editor::scroll_forward), 0.8f));
@@ -329,8 +334,13 @@ Editor::register_actions ()
 
        reg_sens (editor_actions, "set-playhead", _("Playhead to Mouse"), sigc::mem_fun(*this, &Editor::set_playhead_cursor));
        reg_sens (editor_actions, "set-edit-point", _("Active Marker to Mouse"), sigc::mem_fun(*this, &Editor::set_edit_point));
+       reg_sens (editor_actions, "set-auto-punch-range", _("Set Auto Punch In/Out from Playhead"), sigc::mem_fun(*this, &Editor::set_auto_punch_range));
+
+       reg_sens (editor_actions, "duplicate", _("Duplicate"), sigc::bind (sigc::mem_fun(*this, &Editor::duplicate_range), false));
 
-       reg_sens (editor_actions, "duplicate-range", _("Duplicate Range"), sigc::bind (sigc::mem_fun(*this, &Editor::duplicate_range), false));
+       /* Open the dialogue to duplicate selected regions multiple times */
+       reg_sens (editor_actions, "multi-duplicate", _ ("Multi-Duplicate..."),
+                 sigc::bind (sigc::mem_fun (*this, &Editor::duplicate_range), true));
 
        undo_action = reg_sens (editor_actions, "undo", S_("Command|Undo"), sigc::bind (sigc::mem_fun(*this, &Editor::undo), 1U));
 
@@ -645,7 +655,7 @@ Editor::register_actions ()
                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_bbt_action->set_active (true);
                ruler_cd_marker_action->set_active (true);
                ruler_timecode_action->set_active (true);
                ruler_minsec_action->set_active (false);
@@ -746,6 +756,11 @@ Editor::register_actions ()
 
        myactions.register_action (editor_actions, X_("toggle-midi-input-active"), _("Toggle MIDI Input Active for Editor-Selected Tracks/Busses"),
                                   sigc::bind (sigc::mem_fun (*this, &Editor::toggle_midi_input_active), false));
+
+
+       /* MIDI stuff */
+       reg_sens (editor_actions, "quantize", _("Quantize"), sigc::mem_fun (*this, &Editor::quantize_region));
+
 }
 
 void
@@ -980,6 +995,20 @@ Editor::toggle_measure_visibility ()
        }
 }
 
+void
+Editor::edit_current_meter ()
+{
+       ARDOUR::MeterSection* ms = const_cast<ARDOUR::MeterSection*>(&_session->tempo_map().meter_section_at_frame (ARDOUR_UI::instance()->primary_clock->absolute_time()));
+       edit_meter_section (ms);
+}
+
+void
+Editor::edit_current_tempo ()
+{
+       ARDOUR::TempoSection* ts = const_cast<ARDOUR::TempoSection*>(&_session->tempo_map().tempo_section_at_frame (ARDOUR_UI::instance()->primary_clock->absolute_time()));
+       edit_tempo_section (ts);
+}
+
 RefPtr<RadioAction>
 Editor::snap_type_action (SnapType type)
 {
@@ -1724,43 +1753,6 @@ Editor::parameter_changed (std::string p)
        }
 }
 
-void
-Editor::reset_focus (Gtk::Widget* w)
-{
-       /* this resets focus to the first focusable parent of the given widget,
-        * or, if there is no focusable parent, cancels focus in the toplevel
-        * window that the given widget is packed into (if there is one).
-        */
-
-       if (!w) {
-               return;
-       }
-
-       Gtk::Widget* top = w->get_toplevel();
-
-       if (!top || !top->is_toplevel()) {
-               return;
-       }
-
-       w = w->get_parent ();
-
-       while (w) {
-               if (w->get_can_focus ()) {
-                       Window* win = dynamic_cast<Window*> (top);
-                       win->set_focus (*w);
-                       return;
-               }
-               w = w->get_parent ();
-       }
-
-       /* no focusable parent found, cancel focus in top level window.
-          C++ API cannot be used for this. Thanks, references.
-        */
-
-       gtk_window_set_focus (GTK_WINDOW(top->gobj()), 0);
-
-}
-
 void
 Editor::reset_canvas_action_sensitivity (bool onoff)
 {
@@ -1860,7 +1852,7 @@ Editor::register_region_actions ()
                );
 
        /* Duplicate selected regions */
-       reg_sens (_region_actions, "duplicate-region", _("Duplicate"), sigc::bind (sigc::mem_fun (*this, &Editor::duplicate_range), false));
+       reg_sens (_region_actions, "duplicate-region", _("Duplicate"), sigc::bind (sigc::mem_fun (*this, &Editor::duplicate_regions), 1));
 
        /* Open the dialogue to duplicate selected regions multiple times */
        reg_sens (
@@ -2049,6 +2041,6 @@ Editor::register_region_actions ()
        reg_sens (_region_actions, "choose-top-region", _("Choose Top..."), sigc::bind (sigc::mem_fun (*this, &Editor::change_region_layering_order), false));
        reg_sens (_region_actions, "choose-top-region-context-menu", _("Choose Top..."), sigc::bind (sigc::mem_fun (*this, &Editor::change_region_layering_order), true));
 
-       _all_region_actions_sensitized = true;
-
+       /* desensitize them all by default. region selection will change this */
+       sensitize_all_region_actions (false);
 }