diff --git a/src/api.cc b/src/api.cc
index fa93820..0cf4d8c 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -2,15 +2,15 @@
#include "logging.h"
#include "singletons.h"
-Menu* PluginApi::menu_=nullptr;
+Menu* PluginApi::menu=nullptr;
Notebook* PluginApi::notebook=nullptr;
/////////////////////////////
//// API ServiceProvider ////
/////////////////////////////
-PluginApi::PluginApi(Notebook* notebook) {
+PluginApi::PluginApi(Notebook* notebook, Menu* menu) {
DEBUG("Adding pointers for the API");
this->notebook = notebook;
- menu_ = Singleton::menu();
+ this->menu = menu;
DEBUG("Initiating plugins(from plugins.py)..");
#ifndef __APPLE__
InitPlugins(); //TODO: fix this
@@ -58,7 +58,7 @@ void PluginApi::AddMenuElement(std::string plugin_name) {
DEBUG("Adding menu element for "+plugin_name);
AddMenuXml(plugin_name, "PluginMenu");
std::string plugin_action_name = plugin_name+"Menu";
- Singleton::menu()->action_group->add(Gtk::Action::create(plugin_action_name, plugin_name));
+ menu->action_group->add(Gtk::Action::create(plugin_action_name, plugin_name));
}
void PluginApi::AddSubMenuElement(std::string parent_menu,
@@ -67,7 +67,7 @@ void PluginApi::AddSubMenuElement(std::string parent_menu,
std::string plugin_path,
std::string menu_keybinding) {
AddSubMenuXml(menu_func_name, parent_menu);
- Singleton::menu()->action_group->add(Gtk::Action::create(menu_func_name,
+ menu->action_group->add(Gtk::Action::create(menu_func_name,
menu_name),
Gtk::AccelKey(menu_keybinding),
[=]() {
@@ -76,7 +76,7 @@ void PluginApi::AddSubMenuElement(std::string parent_menu,
}
void PluginApi::AddMenuXml(std::string plugin_name, std::string parent_menu) {
- std::string temp_menu = Singleton::menu()->ui;
+ std::string temp_menu = menu->ui;
std::size_t plugin_menu_pos = temp_menu.find(parent_menu);
// +2 gets you outside of the tag:<'menu_name'>
plugin_menu_pos+=parent_menu.size() +2;
@@ -86,12 +86,12 @@ void PluginApi::AddMenuXml(std::string plugin_name, std::string parent_menu) {
"
";
- Singleton::menu()->ui = menu_prefix + menu_input + menu_suffix;
+ menu->ui = menu_prefix + menu_input + menu_suffix;
}
void PluginApi::AddSubMenuXml(std::string plugin_name,
std::string parent_menu) {
- std::string temp_menu = Singleton::menu()->ui;
+ std::string temp_menu = menu->ui;
std::size_t parent_menu_pos = temp_menu.find(parent_menu);
// +2 gets you outside of the tag:<'menu_name'>
@@ -100,7 +100,7 @@ void PluginApi::AddSubMenuXml(std::string plugin_name,
std::string menu_suffix = temp_menu.substr(parent_menu_pos);
std::string menu_input ="";
- Singleton::menu()->ui = menu_prefix + menu_input + menu_suffix;
+ menu->ui = menu_prefix + menu_input + menu_suffix;
}
///////////////////////
diff --git a/src/api.h b/src/api.h
index 4468631..a3aafca 100644
--- a/src/api.h
+++ b/src/api.h
@@ -12,8 +12,8 @@
////////////////////
class PluginApi {
public:
- PluginApi(Notebook* notebook);
- static Menu* menu_;
+ PluginApi(Notebook* notebook, Menu* menu);
+ static Menu* menu;
static Notebook* notebook;
static void InitPlugins();
// for Python module:
diff --git a/src/config.cc b/src/config.cc
index a75b078..6957af4 100644
--- a/src/config.cc
+++ b/src/config.cc
@@ -5,7 +5,7 @@
#include "files.h"
#include "sourcefile.h"
-MainConfig::MainConfig() {
+MainConfig::MainConfig(Menu &menu) : menu(menu) {
find_or_create_config_files();
boost::property_tree::json_parser::read_json(Singleton::config_dir() + "config.json", cfg);
GenerateSource();
@@ -71,17 +71,16 @@ void MainConfig::GenerateTerminalCommands() {
}
void MainConfig::GenerateKeybindings() {
- auto menu = Singleton::menu();
boost::filesystem::path path(Singleton::config_dir() + "menu.xml");
if (!boost::filesystem::is_regular_file(path)) {
std::cerr << "menu.xml not found" << std::endl;
throw;
}
- menu->ui = juci::filesystem::open(path);
+ menu.ui = juci::filesystem::open(path);
boost::property_tree::ptree keys_json = cfg.get_child("keybindings");
for (auto &i : keys_json) {
auto key=i.second.get_value();
- menu->key_map[i.first] = key;
+ menu.key_map[i.first] = key;
}
DEBUG("Keybindings fetched");
}
diff --git a/src/config.h b/src/config.h
index 9f97a90..d1ea90b 100644
--- a/src/config.h
+++ b/src/config.h
@@ -2,10 +2,11 @@
#define JUCI_CONFIG_H_
#include
#include
+#include "menu.h"
class MainConfig {
public:
- MainConfig();
+ MainConfig(Menu &menu);
void find_or_create_config_files();
void PrintMenu();
void GenerateSource();
@@ -15,5 +16,6 @@ public:
private:
boost::property_tree::ptree cfg;
boost::property_tree::ptree key_tree;
+ Menu &menu;
};
#endif
diff --git a/src/menu.cc b/src/menu.cc
index 7a040d3..ca59401 100644
--- a/src/menu.cc
+++ b/src/menu.cc
@@ -1,6 +1,5 @@
#include "menu.h"
#include "logging.h"
-#include
Menu::Menu() : box(Gtk::ORIENTATION_VERTICAL) {
INFO("Creating menu");
@@ -34,3 +33,4 @@ void Menu::build() {
}
ui_manager->insert_action_group(action_group);
}
+
diff --git a/src/singletons.cc b/src/singletons.cc
index 9af56e2..17f4b37 100644
--- a/src/singletons.cc
+++ b/src/singletons.cc
@@ -5,14 +5,8 @@ std::unique_ptr Singleton::Config::terminal_=std::unique_ptr Singleton::Config::directories_=std::unique_ptr(new Directories::Config());
std::unique_ptr Singleton::terminal_=std::unique_ptr();
-std::unique_ptr