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() { void libjuci::ApiServiceProvider::AddKeybinding() {
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginSnippet", "Snippet"));
libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu() libjuci::ApiServiceProvider::menu_->keybindings_.action_group_menu()
->add(Gtk::Action::create("PluginAddSnippet", ->add(Gtk::Action::create("PluginAddSnippet",
"Add snippet"), "Add snippet"),
@ -53,6 +56,8 @@ void libjuci::ApiServiceProvider::AddKeybinding() {
[]() { []() {
libjuci::LoadPlugin("snippet"); libjuci::LoadPlugin("snippet");
}); });
//TODO forgie: update views
} }
/////////////////////// ///////////////////////
@ -73,6 +78,38 @@ std::string libjuci::GetWord() {
return libjuci::ApiServiceProvider::GetWord(); return libjuci::ApiServiceProvider::GetWord();
// return converted; // 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 //// //// Boost.Python methods ////
////////////////////////////// //////////////////////////////

3
juci/api.h

@ -44,6 +44,9 @@ namespace libjuci {
void ReplaceWord(const std::string word); void ReplaceWord(const std::string word);
void ReplaceLine(const std::string line); void ReplaceLine(const std::string line);
std::string GetWord(); 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 //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) { BOOST_PYTHON_MODULE(juci_to_python_api) {
using namespace boost::python; using namespace boost::python;
// plugin inclusion
def("addMenuElement", &libjuci::AddMenuElement);
def("loadPlugin", &libjuci::LoadPlugin);
// text editing // text editing
def("replaceLine", &libjuci::ReplaceLine); def("replaceLine", &libjuci::ReplaceLine);
def("replaceWord", &libjuci::ReplaceWord); def("replaceWord", &libjuci::ReplaceWord);
def("getWord", &libjuci::GetWord); def("getWord", &libjuci::GetWord);
//something more //something more
}// module::juci_to_python_api }// module::juci_to_python_api

6
juci/keybindings.cc

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

6
juci/keybindings.h

@ -12,7 +12,7 @@ namespace Keybindings {
virtual ~Model(); virtual ~Model();
std::string menu_ui_string(){return menu_ui_string_;} std::string menu_ui_string(){return menu_ui_string_;}
std::string hidden_ui_string(){return hidden_ui_string_;} std::string hidden_ui_string(){return hidden_ui_string_;}
private: //private:
std::string menu_ui_string_; std::string menu_ui_string_;
std::string hidden_ui_string_; std::string hidden_ui_string_;
}; // Model }; // Model
@ -34,12 +34,12 @@ namespace Keybindings {
}; };
void BuildMenu(); void BuildMenu();
void BuildHiddenMenu(); void BuildHiddenMenu();
protected: // protected:
Glib::RefPtr<Gtk::UIManager> ui_manager_menu_; Glib::RefPtr<Gtk::UIManager> ui_manager_menu_;
Glib::RefPtr<Gtk::ActionGroup> action_group_menu_; Glib::RefPtr<Gtk::ActionGroup> action_group_menu_;
Glib::RefPtr<Gtk::UIManager> ui_manager_hidden_; Glib::RefPtr<Gtk::UIManager> ui_manager_hidden_;
Glib::RefPtr<Gtk::ActionGroup> action_group_hidden_; Glib::RefPtr<Gtk::ActionGroup> action_group_hidden_;
private: // private:
Keybindings::Model model_; Keybindings::Model model_;
};//Controller };//Controller
} }

7
juci/menu.cc

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