Browse Source

Menu xml is now hardcoded in menu.cc. Now we do not have to worry about how to update the menu for those already having a ~/.juci directory. menu.xml is no longer created in this directory.

merge-requests/365/head
eidheim 10 years ago
parent
commit
4fc6cee373
  1. 3
      src/config.cc
  2. 56
      src/files.h
  3. 58
      src/menu.cc
  4. 2
      src/menu.h
  5. 2
      src/window.cc

3
src/config.cc

@ -20,14 +20,13 @@ MainConfig::MainConfig() {
} }
void MainConfig::find_or_create_config_files() { void MainConfig::find_or_create_config_files() {
std::vector<std::string> files = {"config.json", "menu.xml", "plugins.py"}; std::vector<std::string> files = {"config.json", "plugins.py"};
boost::filesystem::create_directories(boost::filesystem::path(Singleton::config_dir())); boost::filesystem::create_directories(boost::filesystem::path(Singleton::config_dir()));
for (auto &file : files) { for (auto &file : files) {
auto path = boost::filesystem::path(Singleton::config_dir() + file); auto path = boost::filesystem::path(Singleton::config_dir() + file);
if (!boost::filesystem::is_regular_file(path)) { if (!boost::filesystem::is_regular_file(path)) {
if (file == "config.json") juci::filesystem::write(path, configjson); if (file == "config.json") juci::filesystem::write(path, configjson);
if (file == "plugins.py") juci::filesystem::write(path, pluginspy); if (file == "plugins.py") juci::filesystem::write(path, pluginspy);
if (file == "menu.xml") juci::filesystem::write(path, menuxml);
} }
} }

56
src/files.h

@ -83,62 +83,6 @@ const std::string configjson =
" }\n" " }\n"
"}\n"; "}\n";
const std::string menuxml =
"<ui>\n"
" <menubar name=\"MenuBar\">\n"
" <menu action=\"FileMenu\">\n"
" <menuitem action=\"FileNewFile\"/>\n"
" <menuitem action=\"FileNewFolder\"/>\n"
" <menu action=\"FileNewProject\">\n"
" <menuitem action=\"FileNewProjectCpp\"/>\n"
" </menu>\n"
" <separator/>\n"
" <menuitem action=\"FileOpenFile\"/>\n"
" <menuitem action=\"FileOpenFolder\"/>\n"
" <separator/>\n"
" <menuitem action=\"FileSave\"/>\n"
" <menuitem action=\"FileSaveAs\"/>\n"
" <separator/>\n"
" <menuitem action=\"FileQuit\"/>\n"
" </menu>\n"
" <menu action=\"EditMenu\">\n"
" <menuitem action=\"EditUndo\"/>\n"
" <menuitem action=\"EditRedo\"/>\n"
" <separator/>\n"
" <menuitem action=\"EditCopy\"/>\n"
" <menuitem action=\"EditCut\"/>\n"
" <menuitem action=\"EditPaste\"/>\n"
" <separator/>\n"
" <menuitem action=\"EditFind\"/>\n"
" </menu>\n"
" <menu action=\"SourceMenu\">\n"
" <menuitem action=\"SourceGotoLine\"/>\n"
" <menuitem action=\"SourceCenterCursor\"/>\n"
" <separator/>\n"
" <menuitem action=\"SourceGotoDeclaration\"/>\n"
" <menuitem action=\"SourceGotoMethod\"/>\n"
" <menuitem action=\"SourceRename\"/>\n"
" </menu>\n"
" <menu action=\"ProjectMenu\">\n"
" <menuitem action=\"ProjectCompileAndRun\"/>\n"
" <menuitem action=\"ProjectCompile\"/>\n"
" <separator/>\n"
" <menuitem action=\"ProjectRunCommand\"/>\n"
" <menuitem action=\"ProjectKillLastRunning\"/>\n"
" <menuitem action=\"ProjectForceKillLastRunning\"/>\n"
" </menu>\n"
" <menu action=\"WindowMenu\">\n"
" <menuitem action=\"WindowCloseTab\"/>\n"
" <menuitem action=\"WindowSplitWindow\"/>\n"
" </menu>\n"
" <menu action=\"PluginMenu\">\n"
" </menu>\n"
" <menu action=\"HelpMenu\">\n"
" <menuitem action=\"HelpAbout\"/>\n"
" </menu>\n"
" </menubar>\n"
"</ui>\n";
const std::string juci_light_style = const std::string juci_light_style =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"\n" "\n"

58
src/menu.cc

@ -14,6 +14,62 @@ Menu::Menu() : box(Gtk::ORIENTATION_VERTICAL) {
action_group->add(Gtk::Action::create("SourceMenu", "_Source")); action_group->add(Gtk::Action::create("SourceMenu", "_Source"));
action_group->add(Gtk::Action::create("PluginMenu", "_Plugins")); action_group->add(Gtk::Action::create("PluginMenu", "_Plugins"));
action_group->add(Gtk::Action::create("HelpMenu", "Help")); action_group->add(Gtk::Action::create("HelpMenu", "Help"));
ui_xml =
"<ui>\n"
" <menubar name=\"MenuBar\">\n"
" <menu action=\"FileMenu\">\n"
" <menuitem action=\"FileNewFile\"/>\n"
" <menuitem action=\"FileNewFolder\"/>\n"
" <menu action=\"FileNewProject\">\n"
" <menuitem action=\"FileNewProjectCpp\"/>\n"
" </menu>\n"
" <separator/>\n"
" <menuitem action=\"FileOpenFile\"/>\n"
" <menuitem action=\"FileOpenFolder\"/>\n"
" <separator/>\n"
" <menuitem action=\"FileSave\"/>\n"
" <menuitem action=\"FileSaveAs\"/>\n"
" <separator/>\n"
" <menuitem action=\"FileQuit\"/>\n"
" </menu>\n"
" <menu action=\"EditMenu\">\n"
" <menuitem action=\"EditUndo\"/>\n"
" <menuitem action=\"EditRedo\"/>\n"
" <separator/>\n"
" <menuitem action=\"EditCopy\"/>\n"
" <menuitem action=\"EditCut\"/>\n"
" <menuitem action=\"EditPaste\"/>\n"
" <separator/>\n"
" <menuitem action=\"EditFind\"/>\n"
" </menu>\n"
" <menu action=\"SourceMenu\">\n"
" <menuitem action=\"SourceGotoLine\"/>\n"
" <menuitem action=\"SourceCenterCursor\"/>\n"
" <separator/>\n"
" <menuitem action=\"SourceGotoDeclaration\"/>\n"
" <menuitem action=\"SourceGotoMethod\"/>\n"
" <menuitem action=\"SourceRename\"/>\n"
" </menu>\n"
" <menu action=\"ProjectMenu\">\n"
" <menuitem action=\"ProjectCompileAndRun\"/>\n"
" <menuitem action=\"ProjectCompile\"/>\n"
" <separator/>\n"
" <menuitem action=\"ProjectRunCommand\"/>\n"
" <menuitem action=\"ProjectKillLastRunning\"/>\n"
" <menuitem action=\"ProjectForceKillLastRunning\"/>\n"
" </menu>\n"
" <menu action=\"WindowMenu\">\n"
" <menuitem action=\"WindowCloseTab\"/>\n"
" <menuitem action=\"WindowSplitWindow\"/>\n"
" </menu>\n"
" <menu action=\"PluginMenu\">\n"
" </menu>\n"
" <menu action=\"HelpMenu\">\n"
" <menuitem action=\"HelpAbout\"/>\n"
" </menu>\n"
" </menubar>\n"
"</ui>\n";
} }
Gtk::Widget& Menu::get_widget() { Gtk::Widget& Menu::get_widget() {
@ -22,7 +78,7 @@ Gtk::Widget& Menu::get_widget() {
void Menu::build() { void Menu::build() {
try { try {
ui_manager->add_ui_from_string(ui); ui_manager->add_ui_from_string(ui_xml);
} }
catch (const Glib::Error &ex) { catch (const Glib::Error &ex) {
std::cerr << "building menu failed" << ex.what(); std::cerr << "building menu failed" << ex.what();

2
src/menu.h

@ -13,7 +13,7 @@ public:
Gtk::Box box; Gtk::Box box;
std::unordered_map<std::string, std::string> key_map; std::unordered_map<std::string, std::string> key_map;
std::string ui; std::string ui_xml;
Glib::RefPtr<Gtk::UIManager> ui_manager; Glib::RefPtr<Gtk::UIManager> ui_manager;
Glib::RefPtr<Gtk::ActionGroup> action_group; Glib::RefPtr<Gtk::ActionGroup> action_group;
}; };

2
src/window.cc

@ -24,8 +24,6 @@ namespace sigc {
} }
void Window::generate_keybindings() { void Window::generate_keybindings() {
boost::filesystem::path path(Singleton::config_dir() + "menu.xml");
menu.ui = juci::filesystem::read(path);
for (auto &i : Singleton::Config::window()->keybindings) { for (auto &i : Singleton::Config::window()->keybindings) {
auto key = i.second.get_value<std::string>(); auto key = i.second.get_value<std::string>();
menu.key_map[i.first] = key; menu.key_map[i.first] = key;

Loading…
Cancel
Save