summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-10-26 13:35:45 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:24 -0500
commit589f2a1ab83e4498920faa2f0ef37c1632eaf914 (patch)
treee49066b419b9d65e889093dc87f68a2ec6c3f7d9
parent9b9a7beb130d183fc08a57927a3eaf4441be6809 (diff)
change suffix of keybinding files to ".keys" to avoid conflict with earlier versions.
Move some code around that should never have been inside libs/ardour to begin with.
-rw-r--r--gtk2_ardour/ardour.keys.in (renamed from gtk2_ardour/us.bindings.in)0
-rw-r--r--gtk2_ardour/ardour_ui.cc4
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc14
-rw-r--r--gtk2_ardour/keyboard.cc47
-rw-r--r--gtk2_ardour/keyboard.h5
-rw-r--r--gtk2_ardour/ui_config_vars.h2
-rw-r--r--gtk2_ardour/wscript6
-rw-r--r--libs/ardour/ardour/ardour.h2
-rw-r--r--libs/ardour/globals.cc26
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/keyboard.h2
-rw-r--r--libs/gtkmm2ext/keyboard.cc1
11 files changed, 64 insertions, 45 deletions
diff --git a/gtk2_ardour/us.bindings.in b/gtk2_ardour/ardour.keys.in
index bdb40eb04d..bdb40eb04d 100644
--- a/gtk2_ardour/us.bindings.in
+++ b/gtk2_ardour/ardour.keys.in
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 645a781782..72e15f8b60 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -5295,7 +5295,7 @@ ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey
DEBUG_TRACE (DEBUG::Accelerators, "\tnot yet handled, try global bindings\n");
- if (global_bindings->activate (k, Bindings::Press)) {
+ if (global_bindings && global_bindings->activate (k, Bindings::Press)) {
DEBUG_TRACE (DEBUG::Accelerators, "\t\thandled\n");
return true;
}
@@ -5335,7 +5335,7 @@ ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey
DEBUG_TRACE (DEBUG::Accelerators, "\tnot yet handled, try global bindings\n");
- if (global_bindings->activate (k, Bindings::Press)) {
+ if (global_bindings && global_bindings->activate (k, Bindings::Press)) {
DEBUG_TRACE (DEBUG::Accelerators, "\t\thandled\n");
return true;
}
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 7bc36dbc1f..b57808e24a 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -478,9 +478,17 @@ ARDOUR_UI::create_key_editor ()
{
KeyEditor* kedit = new KeyEditor;
- kedit->add_tab (_("Global"), *global_bindings);
- kedit->add_tab (_("Editing"), *editor->bindings);
- kedit->add_tab (_("Mixing"), *mixer->bindings);
+ if (global_bindings) {
+ kedit->add_tab (_("Global"), *global_bindings);
+ }
+
+ if (editor->bindings) {
+ kedit->add_tab (_("Editing"), *editor->bindings);
+ }
+
+ if (mixer->bindings) {
+ kedit->add_tab (_("Mixing"), *mixer->bindings);
+ }
return kedit;
}
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc
index 6e19e73808..734c4ecc0e 100644
--- a/gtk2_ardour/keyboard.cc
+++ b/gtk2_ardour/keyboard.cc
@@ -20,6 +20,7 @@
#include "pbd/convert.h"
#include "pbd/error.h"
#include "pbd/file_utils.h"
+#include "pbd/basename.h"
#include "ardour/filesystem_paths.h"
@@ -27,6 +28,7 @@
#include "public_editor.h"
#include "keyboard.h"
#include "opts.h"
+#include "ui_config.h"
#include "i18n.h"
@@ -35,7 +37,7 @@ using namespace Gtk;
using namespace PBD;
using namespace ARDOUR;
using Gtkmm2ext::Keyboard;
-
+
#ifdef GTKOSX
guint ArdourKeyboard::constraint_mod = Keyboard::PrimaryModifier;
#else
@@ -49,21 +51,46 @@ guint ArdourKeyboard::push_points_mod = Keyboard::PrimaryModifier;
guint ArdourKeyboard::note_size_relative_mod = Keyboard::PrimaryModifier;
void
+ArdourKeyboard::find_bindings_files (map<string,string>& files)
+{
+ vector<std::string> found;
+ Searchpath spath = ardour_config_search_path();
+
+ if (getenv ("ARDOUR_SAE")) {
+ find_files_matching_pattern (found, spath, string_compose ("*SAE-*.%1", Keyboard::binding_filename_suffix));
+ } else {
+ find_files_matching_pattern (found, spath, string_compose ("*.%1", Keyboard::binding_filename_suffix));
+ }
+
+ if (found.empty()) {
+ return;
+ }
+
+ for (vector<std::string>::iterator x = found.begin(); x != found.end(); ++x) {
+ std::string path(*x);
+ pair<string,string> namepath;
+ namepath.second = path;
+ namepath.first = PBD::basename_nosuffix (path);
+ files.insert (namepath);
+ }
+}
+
+void
ArdourKeyboard::setup_keybindings ()
{
using namespace ARDOUR_COMMAND_LINE;
- string default_bindings = "us.bindings";
+ string default_bindings = string_compose ("%1%2", UIConfiguration::instance().get_default_bindings(), Keyboard::binding_filename_suffix);
vector<string> strs;
binding_files.clear ();
- ARDOUR::find_bindings_files (binding_files);
+ find_bindings_files (binding_files);
/* set up the per-user bindings path */
string lowercase_program_name = downcase (string(PROGRAM_NAME));
- user_keybindings_path = Glib::build_filename (user_config_directory(), lowercase_program_name + ".bindings");
+ user_keybindings_path = Glib::build_filename (user_config_directory(), lowercase_program_name + binding_filename_suffix);
if (Glib::file_test (user_keybindings_path, Glib::FILE_TEST_EXISTS)) {
std::pair<string,string> newpair;
@@ -76,7 +103,7 @@ ArdourKeyboard::setup_keybindings ()
an actual filename (*.bindings)
*/
- if (!keybindings_path.empty() && keybindings_path.find (".bindings") == string::npos) {
+ if (!keybindings_path.empty() && keybindings_path.find (binding_filename_suffix) == string::npos) {
// just a style name - allow user to
// specify the layout type.
@@ -97,7 +124,7 @@ ArdourKeyboard::setup_keybindings ()
keybindings_path += "-us";
}
- keybindings_path += ".bindings";
+ keybindings_path += binding_filename_suffix;
}
if (keybindings_path.empty()) {
@@ -120,6 +147,8 @@ ArdourKeyboard::setup_keybindings ()
keybindings_path = default_bindings;
}
+ cerr << "KP is " << keybindings_path << endl;
+
while (true) {
if (!Glib::path_is_absolute (keybindings_path)) {
@@ -127,7 +156,7 @@ ArdourKeyboard::setup_keybindings ()
/* not absolute - look in the usual places */
std::string keybindings_file;
- if ( ! find_file (ardour_config_search_path(), keybindings_path, keybindings_file)) {
+ if (!find_file (ardour_config_search_path(), keybindings_path, keybindings_file)) {
if (keybindings_path == default_bindings) {
error << string_compose (_("Default keybindings not found - %1 will be hard to use!"), PROGRAM_NAME) << endmsg;
@@ -166,8 +195,10 @@ ArdourKeyboard::setup_keybindings ()
}
}
+ info << string_compose (_("Loading keybindings from %1"), keybindings_path) << endmsg;
+
load_keybindings (keybindings_path);
-
+
/* catch changes made via some GTK mechanism */
// GtkAccelMap* accelmap = gtk_accel_map_get();
diff --git a/gtk2_ardour/keyboard.h b/gtk2_ardour/keyboard.h
index 9ca60950bb..c6a05abe2a 100644
--- a/gtk2_ardour/keyboard.h
+++ b/gtk2_ardour/keyboard.h
@@ -20,6 +20,9 @@
#ifndef __ardour_keyboard_h__
#define __ardour_keyboard_h__
+#include <map>
+#include <string>
+
#include "ardour/types.h"
#include "gtkmm2ext/keyboard.h"
@@ -93,6 +96,8 @@ private:
static guint fine_adjust_mod;
static guint push_points_mod;
static guint note_size_relative_mod;
+
+ void find_bindings_files (std::map<std::string,std::string>& files);
};
#endif /* __ardour_keyboard_h__ */
diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h
index c52820ebff..4aa00034c9 100644
--- a/gtk2_ardour/ui_config_vars.h
+++ b/gtk2_ardour/ui_config_vars.h
@@ -33,7 +33,7 @@ UI_CONFIG_VARIABLE (uint32_t, lock_gui_after_seconds, "lock-gui-after-seconds",
UI_CONFIG_VARIABLE (bool, draggable_playhead, "draggable-playhead", true)
UI_CONFIG_VARIABLE (std::string, keyboard_layout, "keyboard-layout", "ansi")
UI_CONFIG_VARIABLE (std::string, keyboard_layout_name, "keyboard-layout-name", "ansi")
-UI_CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "ardour")
+UI_CONFIG_VARIABLE (std::string, default_bindings, "default-bindings", "us")
UI_CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", false)
UI_CONFIG_VARIABLE (bool, default_narrow_ms, "default-narrow_ms", false)
UI_CONFIG_VARIABLE (bool, name_new_markers, "name-new-markers", false)
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index d9e67c4a9d..64b63e6887 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -719,10 +719,10 @@ def build(bld):
# explicitly state the use of perl here so that it works on windows too
#
a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap ${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
- for b in [ 'us' ] :
+ for b in [ 'ardour' ] :
obj = bld(
- target = b + '.bindings',
- source = b + '.bindings.in',
+ target = b + '.keys',
+ source = b + '.keys.in',
rule = a_rule
)
obj.install_path = bld.env['CONFDIR']
diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h
index ddea43f889..79b69124ac 100644
--- a/libs/ardour/ardour/ardour.h
+++ b/libs/ardour/ardour/ardour.h
@@ -72,8 +72,6 @@ namespace ARDOUR {
extern LIBARDOUR_API const char* const ardour_config_info;
- LIBARDOUR_API void find_bindings_files (std::map<std::string,std::string>&);
-
/* these only impact bundled installations */
LIBARDOUR_API std::string translation_enable_path ();
LIBARDOUR_API bool translations_are_enabled ();
diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc
index 9f4a1399b3..e68e6f08e3 100644
--- a/libs/ardour/globals.cc
+++ b/libs/ardour/globals.cc
@@ -80,7 +80,6 @@
#include "pbd/fpu.h"
#include "pbd/file_utils.h"
#include "pbd/enumwriter.h"
-#include "pbd/basename.h"
#include "midi++/port.h"
#include "midi++/mmc.h"
@@ -608,31 +607,6 @@ ARDOUR::cleanup ()
return;
}
-void
-ARDOUR::find_bindings_files (map<string,string>& files)
-{
- vector<std::string> found;
- Searchpath spath = ardour_config_search_path();
-
- if (getenv ("ARDOUR_SAE")) {
- find_files_matching_pattern (found, spath, "*SAE-*.bindings");
- } else {
- find_files_matching_pattern (found, spath, "*.bindings");
- }
-
- if (found.empty()) {
- return;
- }
-
- for (vector<std::string>::iterator x = found.begin(); x != found.end(); ++x) {
- std::string path(*x);
- pair<string,string> namepath;
- namepath.second = path;
- namepath.first = PBD::basename_nosuffix (path);
- files.insert (namepath);
- }
-}
-
bool
ARDOUR::no_auto_connect()
{
diff --git a/libs/gtkmm2ext/gtkmm2ext/keyboard.h b/libs/gtkmm2ext/gtkmm2ext/keyboard.h
index fdea0416c3..34be6e44ab 100644
--- a/libs/gtkmm2ext/gtkmm2ext/keyboard.h
+++ b/libs/gtkmm2ext/gtkmm2ext/keyboard.h
@@ -173,6 +173,8 @@ class LIBGTKMM2EXT_API Keyboard : public sigc::trackable, PBD::Stateful
static bool load_keybindings (std::string const& path);
static void save_keybindings (std::string const& path);
+ static std::string binding_filename_suffix;
+
int reset_bindings ();
sigc::signal0<void> ZoomVerticalModifierReleased;
diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc
index cd6c179b1a..d23529f232 100644
--- a/libs/gtkmm2ext/keyboard.cc
+++ b/libs/gtkmm2ext/keyboard.cc
@@ -111,6 +111,7 @@ bool Keyboard::can_save_keybindings = false;
bool Keyboard::bindings_changed_after_save_became_legal = false;
map<string,string> Keyboard::binding_files;
string Keyboard::_current_binding_name;
+string Keyboard::binding_filename_suffix = X_(".keys");
/* set this to initially contain the modifiers we care about, then track changes in ::set_edit_modifier() etc. */
GdkModifierType Keyboard::RelevantModifierKeyMask;