Browse Source

BAB-35 #comment started out with generalizing plugin load #time 4h

master
tedjk 11 years ago
parent
commit
2b4c24e20e
  1. 37
      juci/api.cc
  2. 3
      juci/api.h
  3. 6
      juci/api_ext.cc
  4. 6
      juci/keybindings.cc
  5. 6
      juci/keybindings.h
  6. 7
      juci/menu.cc
  7. 13
      juci/plugins/plugins.py
  8. 0
      juci/plugins/snippet.py

37
juci/api.cc

@ -46,6 +46,9 @@ std::string libjuci::ApiServiceProvider::GetWord() {
void libjuci::ApiServiceProvider::AddKeybinding() {
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginSnippet", "Snippet"));
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginAddSnippet",
"Add snippet"),
@ -53,6 +56,8 @@ void libjuci::ApiServiceProvider::AddKeybinding() {
[]() {
libjuci::LoadPlugin("snippet");
});
//TODO forgie: update views
}
///////////////////////
@ -73,6 +78,38 @@ std::string libjuci::GetWord() {
return libjuci::ApiServiceProvider::GetWord();
// return converted;
}
void libjuci::AddMenuElement(std::string plugin_name){
libjuci::EditUiString(plugin_name);
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("Plugin"+plugin_name, plugin_name));
/*
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginAdd"+plugin_name,
"Add snippet"),
Gtk::AccelKey("<control><alt>space"),
[]() {
libjuci::LoadPlugin("snippet");
});*/
}
void libjuci::EditUiString(std::string plugin_name){
std::string temp_menu = libjuci::ApiServiceProvider::menu_
->keybindings_.model_.menu_ui_string();
std::size_t plugin_menu_pos = temp_menu.find("PluginMenu");
std::string menu_prefix = temp_menu.substr(0, plugin_menu_pos);
std::string menu_suffix = temp_menu.substr(plugin_menu_pos);
std::string menu_input =
" <menu action='Plugin"+plugin_name+"'> "
// " <menuitem action='PluginAdd"+plugin_name+"'/> "
" </menu> ";
libjuci::ApiServiceProvider::menu_->keybindings_.model_.menu_ui_string_ =
menu_prefix + menu_input + menu_suffix;
}
//////////////////////////////
//// Boost.Python methods ////
//////////////////////////////

3
juci/api.h

@ -44,6 +44,9 @@ namespace libjuci {
void ReplaceWord(const std::string word);
void ReplaceLine(const std::string line);
std::string GetWord();
void AddMenuElement(const std::string plugin_name);
void EditUiString(const std::string plugin_name);
//TODO forgie: Make more functions targeting the python module
//////////////////////////////

6
juci/api_ext.cc

@ -2,9 +2,15 @@
BOOST_PYTHON_MODULE(juci_to_python_api) {
using namespace boost::python;
// plugin inclusion
def("addMenuElement", &libjuci::AddMenuElement);
def("loadPlugin", &libjuci::LoadPlugin);
// text editing
def("replaceLine", &libjuci::ReplaceLine);
def("replaceWord", &libjuci::ReplaceWord);
def("getWord", &libjuci::GetWord);
//something more
}// module::juci_to_python_api

6
juci/keybindings.cc

@ -27,9 +27,9 @@ Keybindings::Model::Model() {
" <menuitem action='WindowSplitWindow'/> "
" </menu> "
" <menu action='PluginMenu'> "
" <menu action='PluginSnippet'> "
" <menuitem action='PluginAddSnippet'/> "
" </menu> "
// " <menu action='PluginSnippet'> "
// " <menuitem action='PluginAddSnippet'/> "
// " </menu> "
" </menu> "
" <menu action='HelpMenu'> "
" <menuitem action='HelpAbout'/> "

6
juci/keybindings.h

@ -12,7 +12,7 @@ namespace Keybindings {
virtual ~Model();
std::string menu_ui_string(){return menu_ui_string_;}
std::string hidden_ui_string(){return hidden_ui_string_;}
private:
//private:
std::string menu_ui_string_;
std::string hidden_ui_string_;
}; // Model
@ -34,12 +34,12 @@ namespace Keybindings {
};
void BuildMenu();
void BuildHiddenMenu();
protected:
// 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:
// private:
Keybindings::Model model_;
};//Controller
}

7
juci/menu.cc

@ -34,9 +34,10 @@ Menu::Controller::Controller(Keybindings::Controller& keybindings) :
});
keybindings_.action_group_menu()->add(Gtk::Action::create("PluginMenu",
"_Plugins"));
keybindings_.action_group_menu()->add(Gtk::Action::create("PluginSnippet",
"Snippet"));
/*keybindings_.action_group_menu()->add(Gtk::Action::create("PluginAddSnippet",
//Moved to ApiServiceProvider
/*keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginSnippet", "Snippet"));
keybindings_.action_group_menu()->add(Gtk::Action::create("PluginAddSnippet",
"Add snippet"),
Gtk::AccelKey("<alt>space"),
[this]() {

13
juci/plugins/plugins.py

@ -0,0 +1,13 @@
#!/usr/bin/python
#snippet plugin
import juci_to_python_api
import os, glob
cwd = os.getcwd()
plugins = glob.glob(cwd+"/*.py")
for current_file in plugins:
(filepath, filename) = os.path.split(current_file)
if filename != "plugins.py":
juci_to_python_api.loadPlugin(filename)
juci_to_python_api.addMenuElement(filename)

0
juci/snippet.py → juci/plugins/snippet.py

Loading…
Cancel
Save