2008-07-19 00:57:37 +00:00
|
|
|
#include "backends/common/keymap-manager.h"
|
|
|
|
|
2008-07-21 00:11:25 +00:00
|
|
|
#define GLOBAL_ID_STR "___GLOBAL"
|
2008-07-20 15:42:52 +00:00
|
|
|
|
2008-07-19 00:57:37 +00:00
|
|
|
namespace Common {
|
|
|
|
|
2008-07-21 00:11:25 +00:00
|
|
|
KeymapManager::KeymapManager() {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2008-07-20 15:42:52 +00:00
|
|
|
bool KeymapManager::registerSuperGlobalKeymap(const Keymap& map) {
|
2008-07-21 00:11:25 +00:00
|
|
|
return registerKeymap(GLOBAL_ID_STR, GLOBAL_ID_STR, map);
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
|
|
|
|
2008-07-20 15:42:52 +00:00
|
|
|
bool KeymapManager::registerGlobalKeymap(const String& name, const Keymap& map) {
|
2008-07-21 00:11:25 +00:00
|
|
|
return registerKeymap(name, GLOBAL_ID_STR, map);
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
|
|
|
|
2008-07-20 15:42:52 +00:00
|
|
|
bool KeymapManager::registerKeymap(const String& name, const String& domain, const Keymap& map) {
|
|
|
|
if (findEntry(name, domain) != _keymaps.end()) {
|
|
|
|
warning("Keymap with given name and domain already exists\n");
|
|
|
|
return false;
|
|
|
|
}
|
2008-07-19 00:57:37 +00:00
|
|
|
Entry *ent = new Entry;
|
|
|
|
ent->_name = name;
|
|
|
|
ent->_domain = domain;
|
|
|
|
ent->_keymap = new Keymap(map);
|
|
|
|
_keymaps.push_back(ent);
|
2008-07-20 15:42:52 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KeymapManager::unregisterSuperGlobalKeymap() {
|
2008-07-21 00:11:25 +00:00
|
|
|
return unregisterKeymap(GLOBAL_ID_STR, GLOBAL_ID_STR);
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool KeymapManager::unregisterGlobalKeymap(const String& name) {
|
2008-07-21 00:11:25 +00:00
|
|
|
return unregisterKeymap(name, GLOBAL_ID_STR);
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool KeymapManager::unregisterKeymap(const String& name, const String& domain) {
|
|
|
|
Iterator it = findEntry(name, domain);
|
|
|
|
if (it == _keymaps.end())
|
|
|
|
return true;
|
|
|
|
delete (*it)->_keymap;
|
|
|
|
delete *it;
|
|
|
|
_keymaps.erase(it);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
KeymapManager::Iterator KeymapManager::findEntry(const String& name, const String& domain) {
|
|
|
|
Iterator it;
|
|
|
|
for (it = _keymaps.begin(); it != _keymaps.end(); it++) {
|
|
|
|
if ((*it)->_name == name && (*it)->_domain == domain)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return it;
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // end of namespace Common
|