mirror of https://gitlab.com/cppit/jucipp
14 changed files with 132 additions and 354 deletions
@ -1,41 +0,0 @@
|
||||
#include "keybindings.h" |
||||
#include "singletons.h" |
||||
|
||||
Keybindings::Keybindings() { |
||||
menu_ui_string=Singleton::Config::keybindings()->menu_xml; |
||||
action_group_menu = Gtk::ActionGroup::create(); |
||||
ui_manager_menu = Gtk::UIManager::create(); |
||||
action_group_hidden = Gtk::ActionGroup::create(); |
||||
ui_manager_hidden = Gtk::UIManager::create(); |
||||
} |
||||
|
||||
void Keybindings::BuildMenu() { |
||||
try { |
||||
ui_manager_menu->add_ui_from_string(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::BuildHiddenMenu() { |
||||
try { |
||||
ui_manager_hidden->add_ui_from_string(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); |
||||
} |
||||
|
||||
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<std::string, std::string> &key_map) { |
||||
key_map = key_map; |
||||
} |
||||
@ -1,32 +0,0 @@
|
||||
//juCi++ class that holds every keybinding.
|
||||
#ifndef JUCI_KEYBINDINGS_H_ |
||||
#define JUCI_KEYBINDINGS_H_ |
||||
|
||||
#include <gtkmm.h> |
||||
#include <iostream> |
||||
#include <unordered_map> |
||||
|
||||
class Keybindings { |
||||
public: |
||||
class Config { |
||||
public: |
||||
void AppendXml(std::string &child); |
||||
void SetMenu(std::string &menu_xml); |
||||
void SetKeyMap(std::unordered_map<std::string, std::string> &key_map); |
||||
std::unordered_map<std::string, std::string> key_map; |
||||
std::string menu_xml; |
||||
};//Config
|
||||
|
||||
Keybindings(); |
||||
void BuildMenu(); |
||||
void BuildHiddenMenu(); |
||||
|
||||
std::string menu_ui_string; |
||||
std::string hidden_ui_string; |
||||
|
||||
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; |
||||
}; |
||||
#endif // JUCI_KEYBINDINGS_H_
|
||||
@ -1,76 +1,36 @@
|
||||
#include "menu.h" |
||||
#include "singletons.h" |
||||
#include <iostream> |
||||
|
||||
Menu::View::View(Gtk::Orientation orientation) : |
||||
view_(orientation) { |
||||
Gtk::MenuBar menutest; |
||||
view_.pack_end(menutest); |
||||
} |
||||
Gtk::Box &Menu::View::view( |
||||
Glib::RefPtr<Gtk::UIManager> ui_manager) { |
||||
view_.pack_start(*ui_manager->get_widget("/MenuBar"), Gtk::PACK_SHRINK); |
||||
return view_; |
||||
} |
||||
Menu::Menu() : box(Gtk::ORIENTATION_VERTICAL) { |
||||
action_group = Gtk::ActionGroup::create(); |
||||
ui_manager = Gtk::UIManager::create(); |
||||
|
||||
Menu::Controller::Controller() : menu_view_(Gtk::ORIENTATION_VERTICAL) { |
||||
auto keybindings=Singleton::keybindings(); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("FileNew", |
||||
"New File")); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("EditMenu", |
||||
Gtk::Stock::EDIT)); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("WindowMenu", |
||||
"_Window")); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("WindowSplitWindow", |
||||
"Split window"), |
||||
Gtk::AccelKey(Singleton::Config::keybindings() |
||||
->key_map["split_window"]),//"<control><alt>S"),
|
||||
[this]() { |
||||
OnWindowSplitWindow(); |
||||
}); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("ProjectMenu", |
||||
"P_roject")); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("PluginMenu", |
||||
"_Plugins")); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("HelpMenu", |
||||
Gtk::Stock::HELP)); |
||||
keybindings->action_group_menu->add(Gtk::Action::create("HelpAbout", |
||||
Gtk::Stock::ABOUT), |
||||
[this]() { |
||||
OnHelpAbout(); |
||||
action_group->add(Gtk::Action::create("FileNew", "New File")); |
||||
action_group->add(Gtk::Action::create("EditMenu", Gtk::Stock::EDIT)); |
||||
action_group->add(Gtk::Action::create("WindowMenu", "_Window")); |
||||
action_group->add(Gtk::Action::create("WindowSplitWindow", "Split window"), Gtk::AccelKey(key_map["split_window"]), [this]() { |
||||
}); |
||||
keybindings->action_group_hidden->add(Gtk::Action::create("Test"), |
||||
Gtk::AccelKey("<control><alt>K"), |
||||
[this]() { |
||||
OnHelpAbout(); |
||||
action_group->add(Gtk::Action::create("ProjectMenu", "P_roject")); |
||||
action_group->add(Gtk::Action::create("PluginMenu", "_Plugins")); |
||||
action_group->add(Gtk::Action::create("HelpMenu", Gtk::Stock::HELP)); |
||||
action_group->add(Gtk::Action::create("HelpAbout", Gtk::Stock::ABOUT), [this]() { |
||||
}); |
||||
//keybindings->BuildMenu(); // moved to window.cc
|
||||
keybindings->BuildHiddenMenu(); |
||||
} // Controller
|
||||
Gtk::Box &Menu::Controller::view() { |
||||
return menu_view_.view(Singleton::keybindings()->ui_manager_menu); |
||||
} |
||||
void Menu::Controller::OnPluginAddSnippet() { |
||||
//TODO(Forgi add you snippet magic code)
|
||||
std::cout << "Add snippet" << std::endl; |
||||
//juci_api::py::LoadPlugin("snippet");
|
||||
} |
||||
void Menu::Controller::OnFileOpenFile() { |
||||
std::cout << "Open file clicked" << std::endl; |
||||
//TODO(Oyvang) Legg til funksjon
|
||||
} |
||||
void Menu::Controller::OnEditCut() { |
||||
std::cout << "Clicked cut" << std::endl; |
||||
//TODO(Oyvang) Legg til funksjon
|
||||
} |
||||
void Menu::Controller::OnEditFind() { |
||||
std::cout << "Clicked find" << std::endl; |
||||
//TODO(Oyvang) Legg til funksjon
|
||||
|
||||
Gtk::Widget& Menu::get_widget() { |
||||
return *ui_manager->get_widget("/MenuBar"); |
||||
} |
||||
void Menu::Controller::OnWindowSplitWindow() { |
||||
std::cout << "Clicked split window" << std::endl; |
||||
//TODO(Oyvang) Legg til funksjon
|
||||
|
||||
Gtk::Menu& Menu::get_cpp() { |
||||
return *(Gtk::Menu*)ui_manager->get_widget("/MenuBar/CppMenu"); |
||||
} |
||||
void Menu::Controller::OnHelpAbout() { |
||||
std::cout << "Clicked about" << std::endl; |
||||
//TODO(Oyvang) Legg til funksjon
|
||||
|
||||
void Menu::build() { |
||||
try { |
||||
ui_manager->add_ui_from_string(ui); |
||||
} |
||||
catch (const Glib::Error &ex) { |
||||
std::cerr << "building menu failed" << ex.what(); |
||||
} |
||||
ui_manager->insert_action_group(action_group); |
||||
} |
||||
|
||||
@ -1,34 +1,21 @@
|
||||
#ifndef JUCI_MENU_H_ |
||||
#define JUCI_MENU_H_ |
||||
|
||||
#include <iostream> |
||||
#include <string> |
||||
#include <unordered_map> |
||||
#include <gtkmm.h> |
||||
|
||||
namespace Menu { |
||||
class View { |
||||
public: |
||||
explicit View(Gtk::Orientation orient); |
||||
Gtk::Box &view(Glib::RefPtr<Gtk::UIManager> ui_manager); |
||||
protected: |
||||
Gtk::Box view_; |
||||
}; // class View
|
||||
class Controller { |
||||
public: |
||||
Controller(); |
||||
Gtk::Box &view(); |
||||
class Menu { |
||||
public: |
||||
Menu(); |
||||
Gtk::Widget& get_widget(); |
||||
Gtk::Menu& get_cpp(); |
||||
void build(); |
||||
|
||||
View menu_view_; |
||||
void OnFileNewEmptyfile(); |
||||
void OnFileNewCCFile(); |
||||
void OnFileNewHeaderFile(); |
||||
void OnFileOpenFile(); |
||||
void OnFileOpenFolder(); |
||||
void OnPluginAddSnippet(); |
||||
void OnWindowCloseTab(); |
||||
void OnEditCut(); |
||||
void OnEditFind(); |
||||
void OnWindowSplitWindow(); |
||||
void OnHelpAbout(); |
||||
}; // class Controller
|
||||
} // namespace Menu
|
||||
Gtk::Box box; |
||||
std::unordered_map<std::string, std::string> key_map; |
||||
std::string ui; |
||||
Glib::RefPtr<Gtk::UIManager> ui_manager; |
||||
Glib::RefPtr<Gtk::ActionGroup> action_group; |
||||
}; |
||||
#endif // JUCI_MENU_H_
|
||||
|
||||
Loading…
Reference in new issue