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.
This commit is contained in:
Paul Davis 2015-10-26 13:35:45 -04:00
parent 9b9a7beb13
commit 589f2a1ab8
11 changed files with 64 additions and 45 deletions

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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
@ -48,22 +50,47 @@ guint ArdourKeyboard::fine_adjust_mod = Keyboard::SecondaryModifier;
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();

View file

@ -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__ */

View file

@ -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)

View file

@ -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']

View file

@ -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 ();

View file

@ -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()
{

View file

@ -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;

View file

@ -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;