#include "keybindings.h" Keybindings::Model::Model(Keybindings::Config &config) : menu_ui_string_(config.menu_xml()) { /* hidden_ui_string_ = " " " " " " " " " ";*/ } Keybindings::Model::~Model() { } Keybindings::Controller::Controller(Keybindings::Config &config) : config_(config), model_(config) { action_group_menu_ = Gtk::ActionGroup::create(); ui_manager_menu_ = Gtk::UIManager::create(); action_group_hidden_ = Gtk::ActionGroup::create(); ui_manager_hidden_ = Gtk::UIManager::create(); } Keybindings::Controller::~Controller() { } void Keybindings::Controller::BuildMenu() { try { ui_manager_menu_->add_ui_from_string(model_.menu_ui_string()); } catch (const Glib::Error &ex) { std::cerr << "building menu failed" << ex.what(); } ui_manager_menu_->insert_action_group(action_group_menu_); } void Keybindings::Controller::BuildHiddenMenu() { try { ui_manager_hidden_->add_ui_from_string(model_.hidden_ui_string()); } catch (const Glib::Error &ex) { std::cerr << "building hidden menu failed" << ex.what(); } ui_manager_hidden_->insert_action_group(action_group_hidden_); } Keybindings::Config::Config(Keybindings::Config &original) { SetMenu(original.menu_xml()); SetKeyMap(original.key_map()); } Keybindings::Config::Config() { menu_xml_ = ""; } void Keybindings::Config::AppendXml(std::string &child) { menu_xml_ += child; } void Keybindings::Config::SetMenu(std::string &menu_xml) { menu_xml_ = menu_xml; } void Keybindings::Config::SetKeyMap(std::unordered_map &key_map) { key_map_ = key_map; }