preparations for using ardour's own keybinding system for the editor (not actually...
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 30 Nov 2011 15:29:53 +0000 (15:29 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 30 Nov 2011 15:29:53 +0000 (15:29 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@10841 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.bindings [new file with mode: 0644]
gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_actions.cc
gtk2_ardour/mixer.bindings

diff --git a/gtk2_ardour/editor.bindings b/gtk2_ardour/editor.bindings
new file mode 100644 (file)
index 0000000..0e63a91
--- /dev/null
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bindings name="ardour-editor">
+  <Press>
+  <Binding action="Editor/temporal-zoom-in" key="equal"/>
+  <Binding action="Editor/temporal-zoom-out" key="minus"/>
+  <Binding action="Editor/edit-cursor-to-previous-region-sync" key="apostrophe"/>
+  <Binding action="Editor/edit-cursor-to-next-region-sync" key="semicolon"/>
+  <Binding action="Editor/cycle-edit-point" key="grave"/>
+  <Binding action="Editor/cycle-edit-point-with-marker" key="Primary-asciicircum"/>
+  <Binding action="Editor/move-range-start-to-previous-region-boundary" key="less"/>
+  <Binding action="Editor/move-range-start-to-next-region-boundary" key="Primary-less"/>
+  <Binding action="Editor/move-range-end-to-previous-region-boundary" key="Primary-greater"/>
+  <Binding action="Editor/move-range-end-to-next-region-boundary" key="greater"/>
+  <Binding action="Transport/ToggleRoll" key="space"/>
+  <Binding action="Editor/play-edit-range" key="Secondary-space"/>
+  <Binding action="Editor/play-from-edit-point-and-return" key="Level4-space"/>
+  <Binding action="Transport/ToggleRollMaybe" key="Primary-Secondary-space"/>
+  <Binding action="Transport/ToggleRollForgetCapture" key="Primary-space"/>
+  <Binding action="Transport/record-roll" key="Tertiary-space"/>
+  <Binding action="Region/set-fade-in-length" key="slash"/>
+  <Binding action="Region/toggle-region-fade-out" key="Primary-slash"/>
+  <Binding action="Region/set-fade-out-length" key="backslash"/>
+  <Binding action="Region/toggle-region-fade-out" key="Primary-backslash"/>
+  <Binding action="Region/trim-from-start" key="Tertiary-braceleft"/>
+  <Binding action="Region/trim-to-end" key="Tertiary-braceright"/>
+  <Binding action="Editor/trim-to-previous-region" key="Primary-j"/>
+  <Binding action="Editor/trim-to-next-region" key="Primary-k"/>
+  <Binding action="Editor/set-loop-from-edit-range" key="bracketright"/>
+  <Binding action="Region/set-loop-from-region" key="Secondary-bracketright"/>
+  <Binding action="Editor/set-punch-from-edit-range" key="bracketleft"/>
+  <Binding action="Region/set-punch-from-region" key="Secondary-bracketleft"/>
+  <Binding action="Region/boost-region-gain" key="asciicircum"/>
+  <Binding action="Region/cut-region-gain" key="ampersand"/>
+  <Binding action="Common/Quit" key="Primary-q"/>
+  <Binding action="Region/quantize-region" key="q"/>
+  <Binding action="MouseMode/toggle-internal-edit" key="e"/>
+  <Binding action="Editor/select-all-before-edit-cursor" key="Primary-e"/>
+  <Binding action="Region/export-region" key="Primary-Level4-e"/>
+  <Binding action="Main/ExportSession" key="Level4-e"/>
+  <Binding action="Editor/select-all-after-edit-cursor" key="Primary-Tertiary-e"/>
+  <Binding action="Editor/show-editor-mixer" key="Tertiary-e"/>
+  <Binding action="Common/goto-editor" key="Secondary-e"/>
+  <Binding action="MouseMode/set-mouse-mode-range" key="r"/>
+  <Binding action="Editor/redo" key="Primary-r"/>
+  <Binding action="Region/reverse-region" key="Secondary-r"/>
+  <Binding action="Transport/Record" key="Tertiary-r"/>
+  <Binding action="MouseMode/set-mouse-mode-timefx" key="t"/>
+  <Binding action="Region/pitch-shift-region" key="Secondary-t"/>
+  <Binding action="Editor/insert-time" key="Primary-t"/>
+  <Binding action="MouseMode/set-mouse-mode-object-range" key="y"/>
+  <Binding action="Editor/select-all-between-cursors" key="Primary-u"/>
+  <Binding action="Editor/select-all-within-cursors" key="u"/>
+  <Binding action="Region/insert-region-from-region-list" key="i"/>
+  <Binding action="Editor/invert-selection" key="Tertiary-i"/>
+  <Binding action="Editor/addExistingAudioFiles" key="Secondary-i"/>
+  <Binding action="MouseMode/set-mouse-mode-object" key="o"/>
+  <Binding action="Main/Open" key="Primary-o"/>
+  <Binding action="Main/Recent" key="Primary-Tertiary-o"/>
+  <Binding action="Common/ToggleOptionsEditor" key="Secondary-o"/>
+  <Binding action="Region/naturalize-region" key="Secondary-o"/>
+  <Binding action="Editor/set-playhead" key="p"/>
+  <Binding action="Editor/select-all-before-playhead" key="Primary-p"/>
+  <Binding action="Common/toggle-audio-connection-manager" key="Secondary-p"/>
+  <Binding action="Common/toggle-midi-connection-manager" key="Secondary-Tertiary-p"/>
+  <Binding action="MIDI/panic" key="Primary-Secondary-p"/>
+  <Binding action="Editor/select-all-after-playhead" key="Tertiary-Primary-p"/>
+  <Binding action="Region/align-regions-sync-relative" key="a"/>
+  <Binding action="Editor/select-all" key="Primary-a"/>
+  <Binding action="Region/align-regions-end" key="Secondary-a"/>
+  <Binding action="Region/align-regions-sync" key="Tertiary-a"/>
+  <Binding action="Region/align-regions-start" key="Primary-Level4-a"/>
+  <Binding action="Region/align-regions-start-relative" key="Level4-a"/>
+  <Binding action="Region/split-region" key="s"/>
+  <Binding action="Common/Save" key="Primary-s"/>
+  <Binding action="Main/Snapshot" key="Primary-Tertiary-s"/>
+  <Binding action="Editor/track-solo-toggle" key="Secondary-s"/>
+  <Binding action="Region/duplicate-region" key="d"/>
+  <Binding action="Region/multi-duplicate-region" key="Tertiary-d"/>
+  <Binding action="Editor/select-all-in-punch-range" key="Primary-d"/>
+  <Binding action="Editor/fit-tracks" key="f"/>
+  <Binding action="Editor/toggle-follow-playhead" key="Primary-f"/>
+  <Binding action="Region/show-rhythm-ferret" key="Secondary-f"/>
+  <Binding action="MouseMode/set-mouse-mode-gain" key="g"/>
+  <Binding action="Region/play-selected-regions" key="h"/>
+  <Binding action="Region/trim-front" key="j"/>
+  <Binding action="Region/trim-back" key="k"/>
+  <Binding action="Common/ToggleKeyEditor" key="Secondary-k"/>
+  <Binding action="Transport/Loop" key="l"/>
+  <Binding action="Editor/select-all-in-loop-range" key="Primary-l"/>
+  <Binding action="Common/ToggleLocations" key="Secondary-l"/>
+  <Binding action="MouseMode/set-mouse-mode-zoom" key="z"/>
+  <Binding action="Editor/undo" key="Primary-z"/>
+  <Binding action="Editor/zoom-to-region" key="Primary-Secondary-z"/>
+  <Binding action="Editor/zoom-to-region-both-axes" key="Secondary-z"/>
+  <Binding action="Editor/toggle-zoom" key="Tertiary-z"/>
+  <Binding action="Editor/editor-cut" key="Primary-x"/>
+  <Binding action="Editor/editor-copy" key="Primary-c"/>
+  <Binding action="Common/ToggleColorManager" key="Secondary-c"/>
+  <Binding action="Region/set-region-sync-position" key="v"/>
+  <Binding action="Editor/editor-paste" key="Primary-v"/>
+  <Binding action="Editor/brush-at-mouse" key="Primary-b"/>
+  <Binding action="Editor/track-record-enable-toggle" key="Secondary-b"/>
+  <Binding action="Common/ToggleBigClock" key="Secondary-b"/>
+  <Binding action="Region/normalize-region" key="n"/>
+  <Binding action="Main/AddTrackBus" key="Primary-Tertiary-n"/>
+  <Binding action="Main/New" key="Primary-n"/>
+  <Binding action="Region/toggle-region-mute" key="Primary-m"/>
+  <Binding action="Common/toggle-mixer-on-top" key="Secondary-m"/>
+  <Binding action="Editor/step-tracks-up" key="uparrow"/>
+  <Binding action="Transport/TransitionToRoll" key="Tertiary-uparrow"/>
+  <Binding action="Editor/select-prev-route" key="Secondary-uparrow"/>
+  <Binding action="Editor/move-selected-tracks-up" key="Primary-uparrow"/>
+  <Binding action="Editor/step-tracks-down" key="downarrow"/>
+  <Binding action="Transport/TransitionToReverse" key="Tertiary-downarrow"/>
+  <Binding action="Editor/select-next-route" key="Secondary-downarrow"/>
+  <Binding action="Editor/move-selected-tracks-down" key="Primary-downarrow"/>
+  <Binding action="Editor/playhead-to-previous-region-boundary" key="leftarrow"/>
+  <Binding action="Editor/playhead-to-previous-region-boundary-noselection" key="Level4-leftarrow"/>
+  <Binding action="Editor/playhead-to-previous-region-sync" key="Primary-Secondary-leftarrow"/>
+  <Binding action="Editor/tab-to-transient-backwards" key="Primary-leftarrow"/>
+  <Binding action="Editor/nudge-playhead-backward" key="Secondary-leftarrow"/>
+  <Binding action="Editor/playhead-backward-to-grid" key="Tertiary-Level4-leftarrow"/>
+  <Binding action="Transport/Rewind" key="Tertiary-leftarrow"/>
+  <Binding action="Editor/selected-marker-to-previous-region-boundary" key="Primary-Tertiary-leftarrow"/>
+  <Binding action="Editor/playhead-to-next-region-boundary" key="rightarrow"/>
+  <Binding action="Editor/playhead-to-next-region-boundary-noselection" key="Level4-rightarrow"/>
+  <Binding action="Editor/playhead-to-next-region-sync" key="Primary-Secondary-rightarrow"/>
+  <Binding action="Editor/tab-to-transient-forwards" key="Primary-rightarrow"/>
+  <Binding action="Editor/nudge-playhead-forward" key="Secondary-rightarrow"/>
+  <Binding action="Editor/playhead-forward-to-grid" key="Tertiary-Level4-rightarrow"/>
+  <Binding action="Transport/Forward" key="Tertiary-rightarrow"/>
+  <Binding action="Editor/selected-marker-to-next-region-boundary" key="Primary-Tertiary-rightarrow"/>
+  <Binding action="Editor/scroll-tracks-down" key="Page_Down"/>
+  <Binding action="Editor/scroll-tracks-up" key="Page_Up"/>
+  <Binding action="Transport/GotoStart" key="Home"/>
+  <Binding action="Transport/GotoEnd" key="End"/>
+  <Binding action="Editor/editor-delete" key="Delete"/>
+  <Binding action="Editor/playhead-to-edit" key="Return"/>
+  <Binding action="Editor/edit-to-playhead" key="Secondary-Return"/>
+  <Binding action="Editor/remove-last-capture" key="Primary-Delete"/>
+  <Binding action="Editor/escape" key="Escape"/>
+  <Binding action="Region/nudge-backward" key="KP_Subtract"/>
+  <Binding action="Editor/nudge-next-backward" key="Primary-KP_Subtract"/>
+  <Binding action="Editor/jump-forward-to-mark" key="Primary-KP_Right"/>
+  <Binding action="Editor/jump-backward-to-mark" key="Primary-KP_Left"/>
+  <Binding action="Region/nudge-forward" key="KP_Add"/>
+  <Binding action="Editor/nudge-next-forward" key="Primary-KP_Add"/>
+  <Binding action="Editor/start-range" key="Primary-KP_Down"/>
+  <Binding action="Editor/finish-range" key="Primary-KP_Up"/>
+  <Binding action="Editor/finish-add-range" key="Tertiary-Primary-KP_Up"/>
+  <Binding action="Editor/add-location-from-playhead" key="KP_Enter"/>
+  <Binding action="Transport/focus-on-clock" key="KP_Divide"/>
+  <Binding action="Transport/GotoZero" key="KP_0"/>
+  <Binding action="Editor/goto-mark-1" key="KP_1"/>
+  <Binding action="Editor/goto-mark-2" key="KP_2"/>
+  <Binding action="Editor/goto-mark-3" key="KP_3"/>
+  <Binding action="Editor/goto-mark-4" key="KP_4"/>
+  <Binding action="Editor/goto-mark-5" key="KP_5"/>
+  <Binding action="Editor/goto-mark-6" key="KP_6"/>
+  <Binding action="Editor/goto-mark-7" key="KP_7"/>
+  <Binding action="Editor/goto-mark-8" key="KP_8"/>
+  <Binding action="Editor/goto-mark-9" key="KP_9"/>
+  <Binding action="Editor/edit-cursor-to-range-start" key="F1"/>
+  <Binding action="Editor/edit-cursor-to-range-end" key="F2"/>
+  <Binding action="Editor/crop" key="F3"/>
+  <Binding action="Editor/editor-separate" key="F4"/>
+  <Binding action="Editor/pitch-shift-region" key="F5"/>
+  <Binding action="Editor/select-range-between-cursors" key="F6"/>
+  <Binding action="Common/ToggleMaximalEditor" key="F11"/>
+  <Binding action="Editor/save-visual-state-1" key="Primary-F1"/>
+  <Binding action="Editor/save-visual-state-2" key="Primary-F2"/>
+  <Binding action="Editor/save-visual-state-3" key="Primary-F3"/>
+  <Binding action="Editor/save-visual-state-4" key="Primary-F4"/>
+  <Binding action="Editor/save-visual-state-5" key="Primary-F5"/>
+  <Binding action="Editor/save-visual-state-6" key="Primary-F6"/>
+  <Binding action="Editor/save-visual-state-7" key="Primary-F7"/>
+  <Binding action="Editor/save-visual-state-8" key="Primary-F8"/>
+  <Binding action="Editor/save-visual-state-9" key="Primary-F9"/>
+  <Binding action="Editor/save-visual-state-10" key="Primary-F10"/>
+  <Binding action="Editor/save-visual-state-11" key="Primary-F11"/>
+  <Binding action="Editor/save-visual-state-12" key="Primary-F12"/>
+  <Binding action="Editor/cycle-snap-mode" key="2"/>
+  <Binding action="Editor/cycle-snap-choice" key="3"/>
+  <Binding action="Editor/step-mouse-mode" key="4"/>
+  <Binding action="Transport/ToggleAutoReturn" key="5"/>
+  <Binding action="Transport/ToggleClick" key="6"/>
+  <Binding action="Editor/set-tempo-from-region" key="9"/>
+  <Binding action="Editor/set-tempo-from-edit-range" key="0"/>
+  </Press>
+  <Release>
+  <Binding action="Editor/goto-visual-state-1" key="Primary-F1"/>
+  <Binding action="Editor/goto-visual-state-2" key="Primary-F2"/>
+  <Binding action="Editor/goto-visual-state-3" key="Primary-F3"/>
+  <Binding action="Editor/goto-visual-state-4" key="Primary-F4"/>
+  <Binding action="Editor/goto-visual-state-5" key="Primary-F5"/>
+  <Binding action="Editor/goto-visual-state-6" key="Primary-F6"/>
+  <Binding action="Editor/goto-visual-state-7" key="Primary-F7"/>
+  <Binding action="Editor/goto-visual-state-8" key="Primary-F8"/>
+  <Binding action="Editor/goto-visual-state-9" key="Primary-F9"/>
+  <Binding action="Editor/goto-visual-state-10" key="Primary-F10"/>
+  <Binding action="Editor/goto-visual-state-11" key="Primary-F11"/>
+  <Binding action="Editor/goto-visual-state-12" key="Primary-F12"/>
+  </Release>
+</Bindings>
+  
index 0e4b4dfdd4c60d61ec0cb993c095e49ca673ab1e..8bfa7aa147a5e678a3e1367d59f8a55b80b3ab90 100644 (file)
@@ -637,6 +637,10 @@ Editor::Editor ()
        /* register actions now so that set_state() can find them and set toggles/checks etc */
 
        register_actions ();
+       /* when we start using our own keybinding system for the editor, this
+        * will be uncommented
+        */
+       // load_bindings ();
 
        setup_toolbar ();
        setup_midi_toolbar ();
index ea8aa02d2b92a1005bb278b435c1ec164ba2a158..7d7c38c30b4675ff5dfb4baa517a58a578f54874 100644 (file)
@@ -42,6 +42,7 @@
 #include "gtkmm2ext/click_box.h"
 #include "gtkmm2ext/dndtreeview.h"
 #include "gtkmm2ext/stateful_button.h"
+#include "gtkmm2ext/bindings.h"
 
 #include "pbd/stateful.h"
 #include "pbd/signals.h"
@@ -1069,6 +1070,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void register_actions ();
        void register_region_actions ();
 
+        void load_bindings ();
+        Gtkmm2ext::ActionMap editor_action_map;
+        Gtkmm2ext::Bindings  key_bindings;
+
        int ensure_cursor (framepos_t* pos);
 
        void cut_copy (Editing::CutCopyOp);
index 0d5534a05512d7bf9299d63e48f8fb63a6009c19..a149dba7963e22b8bc14d76806103d6eceb33227 100644 (file)
 #include <gio/gio.h>
 #include <gtk/gtkiconfactory.h>
 
+
+#include "pbd/filesystem.h"
+#include "pbd/file_utils.h"
+#include "pbd/search_path.h"
+
 #include "gtkmm2ext/tearoff.h"
 
 #include "ardour/ardour.h"
+#include "ardour/filesystem_paths.h"
 #include "ardour/profile.h"
 #include "ardour/session.h"
 
@@ -616,6 +622,24 @@ Editor::register_actions ()
        ActionManager::add_action_group (editor_actions);
 }
 
+void
+Editor::load_bindings ()
+{
+        /* XXX move this to a better place */
+       
+        key_bindings.set_action_map (editor_action_map);
+
+       sys::path binding_file;
+       SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
+
+       if (find_file_in_search_path (spath, "editor.bindings", binding_file)) {
+                key_bindings.load (binding_file.to_string());
+               info << string_compose (_("Loaded editor bindings from %1"), binding_file.to_string()) << endmsg;
+        } else {
+               error << string_compose (_("Could not find editor.bindings in search path %1"), spath.to_string()) << endmsg;
+       }
+}
+
 void
 Editor::toggle_ruler_visibility (RulerType rt)
 {
index 3daeab53ca88a71458ee6aa2c3a95dbe122a688f..25d4cfb077fb2ef845ecf8c074e03c4f5cdf73bc 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Bindings name="ardour">
+<Bindings name="ardour-mixer">
   <Press>
      <Binding key="s" action="Mixer/solo"/>
      <Binding key="m" action="Mixer/mute"/>