You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
1.9 KiB

//juCi++ class that holds every keybinding.
#ifndef JUCI_KEYBINDINGS_H_
#define JUCI_KEYBINDINGS_H_
#include <iostream>
#include "gtkmm.h"
#include <unordered_map>
//#include "config.h" //TODO :: remove?
namespace Keybindings {
class Config {
public:
Config(Config &original);
Config();
std::string& menu_xml() { return menu_xml_; }
std::unordered_map<std::string, std::string>& key_map() { return key_map_; }
void AppendXml(std::string &child);
void SetMenu(std::string &menu_xml);
void SetKeyMap(std::unordered_map<std::string, std::string> &key_map);
private:
std::unordered_map<std::string, std::string> key_map_;
std::string menu_xml_;
std::string hidden_ui_string_;
};//Config
class Model {
public:
Model(Keybindings::Config &config);
virtual ~Model();
std::string menu_ui_string() { return menu_ui_string_; }
std::string hidden_ui_string() { return hidden_ui_string_; }
//private:
std::string menu_ui_string_;
std::string hidden_ui_string_;
}; // Model
class Controller {
public:
explicit Controller(Keybindings::Config &config);
virtual ~Controller();
Glib::RefPtr<Gtk::ActionGroup> action_group_menu() {
return action_group_menu_;
};
Glib::RefPtr<Gtk::UIManager> ui_manager_menu() {
return ui_manager_menu_;
};
Glib::RefPtr<Gtk::ActionGroup> action_group_hidden() {
return action_group_hidden_;
};
Glib::RefPtr<Gtk::UIManager> ui_manager_hidden() {
return ui_manager_hidden_;
};
void BuildMenu();
void BuildHiddenMenu();
// protected:
Glib::RefPtr<Gtk::UIManager> ui_manager_menu_;
Glib::RefPtr<Gtk::ActionGroup> action_group_menu_;
Glib::RefPtr<Gtk::UIManager> ui_manager_hidden_;
Glib::RefPtr<Gtk::ActionGroup> action_group_hidden_;
// private:
Keybindings::Config config_;
Keybindings::Model model_;
};//Controller
}
#endif // JUCI_KEYBINDINGS_H_