#include "support/docstream.h"
#include "support/FileName.h"
#include "support/filetools.h"
+#include "support/gettext.h"
+#include "support/lstrings.h"
+
+#include "frontends/alert.h"
#include <fstream>
#include <sstream>
}
-bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
+bool KeyMap::read(string const & bind_file, KeyMap * unbind_map, BindReadType rt)
+{
+ FileName bf = i18nLibFileSearch("bind", bind_file, "bind");
+ if (bf.empty()) {
+ if (rt == MissingOK)
+ return true;
+
+ lyxerr << "Could not find bind file: " << bind_file;
+ if (rt == Default) {
+ frontend::Alert::warning(_("Could not find bind file"),
+ bformat(_("Unable to find the bind file\n%1$s.\n"
+ "Please check your installation."), from_utf8(bind_file)));
+ return false;
+ }
+
+ static string const defaultBindfile = "cua";
+ if (bind_file == defaultBindfile) {
+ frontend::Alert::warning(_("Could not find `cua.bind' file"),
+ _("Unable to find the default bind file `cua.bind'.\n"
+ "Please check your installation."));
+ return false;
+ }
+
+ // Try it with the default file.
+ frontend::Alert::warning(_("Could not find bind file"),
+ bformat(_("Unable to find the bind file\n%1$s.\n"
+ "Falling back to default."), from_utf8(bind_file)));
+ return read(defaultBindfile, unbind_map);
+ }
+ return read(bf, unbind_map);
+}
+
+
+bool KeyMap::read(FileName const & bind_file, KeyMap * unbind_map)
{
enum {
BN_BIND,
if (lyxerr.debugging(Debug::PARSER))
lexrc.printTable(lyxerr);
- FileName const tmp = i18nLibFileSearch("bind", bind_file, "bind");
- lexrc.setFile(tmp);
+ lexrc.setFile(bind_file);
if (!lexrc.isOK()) {
- LYXERR0("KeyMap::read: cannot open bind file:" << tmp);
+ LYXERR0("KeyMap::read: cannot open bind file:" << bind_file.absFilename());
return false;
}
- LYXERR(Debug::KBMAP, "Reading bind file:" << tmp);
+ LYXERR(Debug::KBMAP, "Reading bind file:" << bind_file.absFilename());
bool error = false;
while (lexrc.isOK()) {
}
if (error)
- LYXERR0("KeyMap::read: error while reading bind file:" << tmp);
+ LYXERR0("KeyMap::read: error while reading bind file:" << bind_file.absFilename());
return !error;
}
BindingList list;
listBindings(list, KeySequence(0, 0), tag);
if (unbound) {
- LyXAction::const_func_iterator fit = lyxaction.func_begin();
- LyXAction::const_func_iterator fit_end = lyxaction.func_end();
- for (; fit != fit_end; ++fit) {
+ LyXAction::const_iterator fit = lyxaction.func_begin();
+ LyXAction::const_iterator const fen = lyxaction.func_end();
+ for (; fit != fen; ++fit) {
FuncCode action = fit->second;
bool has_action = false;
- BindingList::const_iterator it = list.begin();
- BindingList::const_iterator it_end = list.end();
- for (; it != it_end; ++it)
- if (it->request.action == action) {
+ BindingList::const_iterator bit = list.begin();
+ BindingList::const_iterator const ben = list.end();
+ for (; bit != ben; ++bit)
+ if (bit->request.action == action) {
has_action = true;
break;
}