diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-04 22:37:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-04 22:37:57 +0000 |
commit | 0170a7666a43b14b9d3c1b0b1b733ad14b997316 (patch) | |
tree | 3033706a907f89858318dd381933ae80bf336cbe | |
parent | 3ce593374063f0d9a7ad72503c09ed11a67278dc (diff) |
provide instructional hint for keyeditor; fix keybinding issues on OS X (needs current GTK patch); fix up packaging up OSX native to include VAMP plugins and put control surfaces in (mostly) the right places ; new (improved) arrow key bindings
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3007 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/SConscript | 12 | ||||
-rw-r--r-- | gtk2_ardour/ardour.bindings.in | 15 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus | 8 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/keyeditor.cc | 22 | ||||
-rw-r--r-- | gtk2_ardour/main.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/option_editor.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/sync-menu.c | 10 | ||||
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/utils.cc | 33 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 4 | ||||
-rw-r--r-- | svn_revision.h | 2 | ||||
-rwxr-xr-x | tools/osx_packaging/osx_build | 10 |
15 files changed, 108 insertions, 45 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index a011cbe27e..b6baecf320 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -405,13 +405,17 @@ keybindings_dict = { } if gtkardour['GTKOSX'] and gtkardour['NATIVE_OSX_KEYS']: # - # Command(Mod1), Alt(Mod5), Ctrl, Shift + # Command(Meta), Alt(Mod1), Ctrl, Shift + # **** as of february 4th 2008, OUR VERSION OF ***** + # Gtk/Quartz maps: + # NSCommand (aka "Command" aka "Apple" aka "Cauliflower") -> Meta + # NSAlternate (aka "Option") -> Mod1 # - keybindings_dict['%PRIMARY%'] = 'Mod5' - keybindings_dict['%SECONDARY%'] = 'Alt' + keybindings_dict['%PRIMARY%'] = 'Meta' + keybindings_dict['%SECONDARY%'] = 'Mod1' keybindings_dict['%TERTIARY%'] = 'Shift' keybindings_dict['%LEVEL4%'] = 'Ctrl' - keybindings_dict['%WINDOW%'] = 'Mod5' + keybindings_dict['%WINDOW%'] = 'Mod1' else: # # Ctrl, Alt, Shift, Mod3(Meta) diff --git a/gtk2_ardour/ardour.bindings.in b/gtk2_ardour/ardour.bindings.in index 0465889f74..3d21244ede 100644 --- a/gtk2_ardour/ardour.bindings.in +++ b/gtk2_ardour/ardour.bindings.in @@ -117,13 +117,13 @@ (gtk_accel_path "<Actions>/Transport/TransitionToReverse" "<%PRIMARY%>downarrow") (gtk_accel_path "<Actions>/Editor/select-next-route" "<%SECONDARY%>downarrow") -(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow") -(gtk_accel_path "<Actions>/Transport/Rewind" "<%PRIMARY%>leftarrow") -(gtk_accel_path "<Actions>/Editor/scroll-playhead-backward" "<%TERTIARY%>leftarrow") +(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow") +(gtk_accel_path "<Actions>/Editor/tab-to-transient-backwards" "<%PRIMARY%>leftarrow") +(gtk_accel_path "<Actions>/Editor/nudge-playhead-backward" "<%SECONDARY%>leftarrow") -(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow") -(gtk_accel_path "<Actions>/Transport/Forward" "<%PRIMARY%>rightarrow") -(gtk_accel_path "<Actions>/Editor/scroll-playhead-forward" "<%TERTIARY%>rightarrow") +(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow") +(gtk_accel_path "<Actions>/Editor/tab-to-transient-forwards" "<%PRIMARY%>rightarrow") +(gtk_accel_path "<Actions>/Editor/nudge-playhead-forward" "<%SECONDARY%>rightarrow") (gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down") (gtk_accel_path "<Actions>/Editor/scroll-tracks-up" "Page_Up") @@ -182,12 +182,9 @@ (gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3") (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4") (gtk_accel_path "<Actions>/Transport/ToggleClick" "5") -(gtk_accel_path "<Actions>/Editor/tab-to-transient-forwards" "7") -(gtk_accel_path "<Actions>/Editor/tab-to-transient-backwards" "8") (gtk_accel_path "<Actions>/Editor/set-tempo-from-region" "9") (gtk_accel_path "<Actions>/Editor/set-tempo-from-edit-range" "0") - ;; ;; unbound actions ;; diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index bcf4ada3e7..f21356d127 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -46,6 +46,8 @@ <separator/> <menuitem action='tab-to-transient-forwards'/> <menuitem action='tab-to-transient-backwards'/> + <menuitem action='nudge-playhead-forward'/> + <menuitem action='nudge-playhead-backward'/> <separator/> <menuitem action='Record'/> <separator/> @@ -118,6 +120,8 @@ <menuitem action='edit-cursor-to-range-start'/> <menuitem action='edit-cursor-to-range-end'/> </menu> + <menuitem action='set-tempo-from-region'/> + <menuitem action='set-tempo-from-edit-range'/> <menu name='KeyMouse Actions' action='KeyMouse Actions'> <menuitem action='play-selected-regions'/> <menuitem action='brush-at-mouse'/> @@ -172,9 +176,7 @@ <menuitem action='normalize-region'/> <separator/> <menuitem action="nudge-forward"/> - <menuitem action="nudge-next-forward"/> <menuitem action="nudge-backward"/> - <menuitem action="nudge-next-backward"/> <menuitem action='split-region'/> <menuitem action='set-region-sync-position'/> <separator/> @@ -198,8 +200,6 @@ <menuitem action='trim-region-to-punch'/> <separator/> <menuitem action='pitch-shift-region'/> - <menuitem action='set-tempo-from-region'/> - <menuitem action='set-tempo-from-edit-range'/> </menu> <menu name='View' action = 'View'> <menu name='ZoomFocus' action='ZoomFocus'> diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index fe0ba2943f..751266e4bb 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -203,6 +203,11 @@ Editor::register_actions () act = ActionManager::register_action (editor_actions, "nudge-next-backward", _("Nudge Next Backward"), bind (mem_fun(*this, &Editor::nudge_backward), true, false)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "nudge-playhead-forward", _("Nudge Playhead Forward"), bind (mem_fun(*this, &Editor::nudge_forward), false, true)); + ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "nudge-playhead-backward", _("Nudge Playhead Backward"), bind (mem_fun(*this, &Editor::nudge_backward), false, true)); + ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "temporal-zoom-out", _("Zoom Out"), bind (mem_fun(*this, &Editor::temporal_zoom_step), true)); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index c37b7c0dbd..aaa505bc81 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -5128,6 +5128,7 @@ Editor::split_region_at_points (boost::shared_ptr<Region> r, AnalysisFeatureList if ((*x) > pos) { break; } + ++x; } if (x == positions.end()) { diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index fb10b0b81f..d68212fe32 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -183,6 +183,8 @@ void Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no_remove) { + cerr << "set selected track, op = " << op << " selected ? " << selection->selected (&view) << " no remove? " << no_remove << endl; + switch (op) { case Selection::Toggle: if (selection->selected (&view)) { diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index c914b6282b..cdac398a30 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -3,6 +3,7 @@ #include <ardour/profile.h> #include <gtkmm/stock.h> +#include <gtkmm/label.h> #include <gtkmm/accelkey.h> #include <gtkmm/accelmap.h> #include <gtkmm/uimanager.h> @@ -50,17 +51,23 @@ KeyEditor::KeyEditor () scroller.add (view); scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); - unbind_box.pack_start (unbind_button, false, false); - - unbind_button.signal_clicked().connect (mem_fun (*this, &KeyEditor::unbind)); get_vbox()->set_spacing (6); get_vbox()->pack_start (scroller); if (!ARDOUR::Profile->get_sae()) { + + Label* hint = manage (new Label (_("Select an action, then press the key(s) to (re)set its shortcut"))); + hint->show (); + unbind_box.set_spacing (6); + unbind_box.pack_start (*hint, false, true); + unbind_box.pack_start (unbind_button, false, false); + unbind_button.signal_clicked().connect (mem_fun (*this, &KeyEditor::unbind)); + get_vbox()->pack_start (unbind_box, false, false); unbind_box.show (); unbind_button.show (); + } get_vbox()->set_border_width (12); @@ -248,9 +255,16 @@ KeyEditor::populate () #ifdef GTKOSX string label = (*k); - replace_all (label, "<Mod5>", _("Command-")); + + /* Gtk/Quartz maps: + NSAlternate/NSOption key to Mod1 + NSCommand key to Meta + */ + + replace_all (label, "<Meta>", _("Command-")); replace_all (label, "<Alt>", _("Option-")); replace_all (label, "<Shift>", _("Shift-")); + replace_all (label, "<Control>", _("Control-")); row[columns.binding] = label; #else row[columns.binding] = (*k); diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index f7039039cf..896deb6343 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -122,7 +122,27 @@ fixup_bundle_environment () path += "/../Plugins"; setenv ("LADSPA_PATH", path.c_str(), 1); + + cstr = getenv ("VAMP_PATH"); + if (cstr) { + path = cstr; + path += ':'; + } + path = dir_path; + path += "/../Frameworks"; + + setenv ("VAMP_PATH", path.c_str(), 1); + + cstr = getenv ("ARDOUR_CONTROL_SURFACE_PATH"); + if (cstr) { + path = cstr; + path += ':'; + } + path = dir_path; + path += "/../Surfaces"; + setenv ("ARDOUR_CONTROL_SURFACE_PATH", path.c_str(), 1); + cstr = getenv ("LV2_PATH"); if (cstr) { path = cstr; diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index 2a2cb4e359..d6893b4ada 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -1081,14 +1081,14 @@ static const struct { #ifdef GTKOSX - /* Command = Mod1 - Option/Alt = Mod5 + /* Command = Meta + Option/Alt = Mod1 */ { "Shift", GDK_SHIFT_MASK }, - { "Command", GDK_MOD1_MASK }, + { "Command", GDK_META_MASK }, { "Control", GDK_CONTROL_MASK }, - { "Option", GDK_MOD5_MASK }, + { "Option", GDK_MOD1_MASK }, { "Command-Shift", GDK_MOD1_MASK|GDK_SHIFT_MASK }, { "Command-Option", GDK_MOD1_MASK|GDK_MOD5_MASK }, { "Shift-Option", GDK_SHIFT_MASK|GDK_MOD5_MASK }, diff --git a/gtk2_ardour/sync-menu.c b/gtk2_ardour/sync-menu.c index cf697db466..22beca9b11 100644 --- a/gtk2_ardour/sync-menu.c +++ b/gtk2_ardour/sync-menu.c @@ -331,6 +331,8 @@ carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, modifiers |= kMenuShiftModifier; } + /* gdk/quartz maps Alt/Option to Mod1 */ + if (key->accel_mods & (GDK_MOD1_MASK)) { modifiers |= kMenuOptionModifier; } @@ -338,12 +340,10 @@ carbon_menu_item_update_accelerator (CarbonMenuItem *carbon_item, if (key->accel_mods & GDK_CONTROL_MASK) { modifiers |= kMenuControlModifier; } + + /* gdk/quartz maps Command to Meta */ - if (key->accel_mods & GDK_MOD5_MASK) { - /* Mod5 is what ardour's binding file uses to mean "Command" - Nothing needs to be set in modifiers, but we need to notice - that there *is* an implicit modifier - */ + if (key->accel_mods & GDK_META_MASK) { use_command = 1; } } diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 5cc44f1712..904e627273 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -271,6 +271,7 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev) bool TimeAxisView::controls_ebox_button_release (GdkEventButton* ev) { + cerr << "CEB button release\n"; switch (ev->button) { case 1: selection_click (ev); diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index d0e85a4fa0..7a058b9ce5 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -460,42 +460,51 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev) it does allow. */ + int fakekey = GDK_VoidSymbol; int ret = false; switch (ev->keyval) { case GDK_Tab: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state)); - break; - - // some X and/or GDK implementations do Shift-Tab -> GDK_ISO_Left_Tab - case GDK_ISO_Left_Tab: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_nabla, GdkModifierType(ev->state)); + fakekey = GDK_nabla; break; case GDK_Up: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_uparrow, GdkModifierType(ev->state)); + fakekey = GDK_uparrow; break; case GDK_Down: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_downarrow, GdkModifierType(ev->state)); + fakekey = GDK_downarrow; break; case GDK_Right: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_rightarrow, GdkModifierType(ev->state)); + fakekey = GDK_rightarrow; break; case GDK_Left: - ret = gtk_accel_groups_activate(G_OBJECT(win), GDK_leftarrow, GdkModifierType(ev->state)); + fakekey = GDK_leftarrow; break; default: break; } - if (ret) { - return true; + if (fakekey != GDK_VoidSymbol) { + ret = gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state)); + + if (ret) { + return true; + } + +#ifdef GTKOSX + int oldval = ev->keyval; + ev->keyval = fakekey; + if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) { + return true; + } + ev->keyval = oldval; } +#endif } /* consider all relevant modifiers but not LOCK or SHIFT */ diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index d0302ea675..168885ea8e 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -2139,6 +2139,10 @@ Session::template_path () string Session::control_protocol_path () { + char *p = getenv ("ARDOUR_CONTROL_SURFACE_PATH"); + if (p && *p) { + return p; + } return suffixed_search_path (X_("surfaces"), false); } diff --git a/svn_revision.h b/svn_revision.h index 5000e5a2a4..0029caf988 100644 --- a/svn_revision.h +++ b/svn_revision.h @@ -1,4 +1,4 @@ #ifndef __ardour_svn_revision_h__ #define __ardour_svn_revision_h__ -static const char* ardour_svn_revision = "2985"; +static const char* ardour_svn_revision = "2986"; #endif diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build index 4160b07d56..b3984f6b40 100755 --- a/tools/osx_packaging/osx_build +++ b/tools/osx_packaging/osx_build @@ -32,6 +32,7 @@ APPROOT=Ardour2.app/Contents Frameworks=$APPROOT/Frameworks Resources=$APPROOT/Resources Plugins=$APPROOT/Plugins +Surfaces=$APPROOT/Surfaces Shared=$Resources/share Etc=$Resources/etc @@ -60,6 +61,7 @@ echo "Building new app directory structure ..." mkdir -p $APPROOT/MacOS mkdir -p $APPROOT/Resources mkdir -p $APPROOT/Plugins +mkdir -p $APPROOT/Surfaces mkdir -p $Frameworks/modules mkdir -p $Shared/templates mkdir -p $Etc @@ -140,8 +142,12 @@ mkdir -p $Frameworks/clearlooks/engines (cd $Frameworks/clearlooks/engines && ln -s ../../libclearlooks.dylib libclearlooks.dylib && ln -s ../../libclearlooks.dylib libclearlooks.so) # XXX STILL NEED TO DO PANNERS FOR TRUNK +cp ../../libs/surfaces/*/libardour_*.dylib $Surfaces +# hack ... move libardour_cp back into Frameworks +cp $Surfaces/libardour_cp*.dylib $Frameworks -cp ../../libs/surfaces/*/libardour_*.dylib $Frameworks +# VAMP plugins that we use +cp ../../libs/vamp-plugins/libardourvampplugins.dylib $Frameworks while [ true ] ; do missing=false @@ -228,7 +234,7 @@ done echo "Fixing up library names ..." # now do the same for all the libraries we include -for dylib in $Frameworks/*.dylib $Frameworks/modules/*.so ; do +for dylib in $Frameworks/*.dylib $Frameworks/modules/*.so $Surfaces/*.dylib ; do # skip symlinks if test ! -L $dylib ; then |