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 "menu.h" |
||||||
#include "singletons.h" |
#include <iostream> |
||||||
|
|
||||||
Menu::View::View(Gtk::Orientation orientation) : |
Menu::Menu() : box(Gtk::ORIENTATION_VERTICAL) { |
||||||
view_(orientation) { |
action_group = Gtk::ActionGroup::create(); |
||||||
Gtk::MenuBar menutest; |
ui_manager = Gtk::UIManager::create(); |
||||||
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::Controller::Controller() : menu_view_(Gtk::ORIENTATION_VERTICAL) { |
action_group->add(Gtk::Action::create("FileNew", "New File")); |
||||||
auto keybindings=Singleton::keybindings(); |
action_group->add(Gtk::Action::create("EditMenu", Gtk::Stock::EDIT)); |
||||||
keybindings->action_group_menu->add(Gtk::Action::create("FileNew", |
action_group->add(Gtk::Action::create("WindowMenu", "_Window")); |
||||||
"New File")); |
action_group->add(Gtk::Action::create("WindowSplitWindow", "Split window"), Gtk::AccelKey(key_map["split_window"]), [this]() { |
||||||
keybindings->action_group_menu->add(Gtk::Action::create("EditMenu", |
}); |
||||||
Gtk::Stock::EDIT)); |
action_group->add(Gtk::Action::create("ProjectMenu", "P_roject")); |
||||||
keybindings->action_group_menu->add(Gtk::Action::create("WindowMenu", |
action_group->add(Gtk::Action::create("PluginMenu", "_Plugins")); |
||||||
"_Window")); |
action_group->add(Gtk::Action::create("HelpMenu", Gtk::Stock::HELP)); |
||||||
keybindings->action_group_menu->add(Gtk::Action::create("WindowSplitWindow", |
action_group->add(Gtk::Action::create("HelpAbout", Gtk::Stock::ABOUT), [this]() { |
||||||
"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(); |
|
||||||
}); |
|
||||||
keybindings->action_group_hidden->add(Gtk::Action::create("Test"), |
|
||||||
Gtk::AccelKey("<control><alt>K"), |
|
||||||
[this]() { |
|
||||||
OnHelpAbout(); |
|
||||||
}); |
|
||||||
//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; |
Gtk::Widget& Menu::get_widget() { |
||||||
//TODO(Oyvang) Legg til funksjon
|
return *ui_manager->get_widget("/MenuBar"); |
||||||
} |
|
||||||
void Menu::Controller::OnEditFind() { |
|
||||||
std::cout << "Clicked find" << std::endl; |
|
||||||
//TODO(Oyvang) Legg til funksjon
|
|
||||||
} |
} |
||||||
void Menu::Controller::OnWindowSplitWindow() { |
|
||||||
std::cout << "Clicked split window" << std::endl; |
Gtk::Menu& Menu::get_cpp() { |
||||||
//TODO(Oyvang) Legg til funksjon
|
return *(Gtk::Menu*)ui_manager->get_widget("/MenuBar/CppMenu"); |
||||||
} |
} |
||||||
void Menu::Controller::OnHelpAbout() { |
|
||||||
std::cout << "Clicked about" << std::endl; |
void Menu::build() { |
||||||
//TODO(Oyvang) Legg til funksjon
|
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_ |
#ifndef JUCI_MENU_H_ |
||||||
#define JUCI_MENU_H_ |
#define JUCI_MENU_H_ |
||||||
|
|
||||||
#include <iostream> |
#include <string> |
||||||
|
#include <unordered_map> |
||||||
#include <gtkmm.h> |
#include <gtkmm.h> |
||||||
|
|
||||||
namespace Menu { |
class Menu { |
||||||
class View { |
public: |
||||||
public: |
Menu(); |
||||||
explicit View(Gtk::Orientation orient); |
Gtk::Widget& get_widget(); |
||||||
Gtk::Box &view(Glib::RefPtr<Gtk::UIManager> ui_manager); |
Gtk::Menu& get_cpp(); |
||||||
protected: |
void build(); |
||||||
Gtk::Box view_; |
|
||||||
}; // class View
|
Gtk::Box box; |
||||||
class Controller { |
std::unordered_map<std::string, std::string> key_map; |
||||||
public: |
std::string ui; |
||||||
Controller(); |
Glib::RefPtr<Gtk::UIManager> ui_manager; |
||||||
Gtk::Box &view(); |
Glib::RefPtr<Gtk::ActionGroup> action_group; |
||||||
|
}; |
||||||
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
|
|
||||||
#endif // JUCI_MENU_H_
|
#endif // JUCI_MENU_H_
|
||||||
|
|||||||
Loading…
Reference in new issue