/** * @author Edouard DUPIN * * @copyright 2010, Edouard DUPIN, all right reserved * * @license GPL v3 (see license file) */ #include #include #include #include #include #include #undef __class__ #define __class__ "textPluginManager" static etk::Vector& getList(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnEventEntry(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnEventInput(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnWrite(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnReplace(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnRemove(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnReceiveMessage(void) { static etk::Vector s_list; return s_list; } static etk::Vector& getListOnCursorMove(void) { static etk::Vector s_list; return s_list; } void appl::textPluginManager::init(void) { } void appl::textPluginManager::unInit(void) { // remove all sub plugin class: getListOnEventEntry().clear(); getListOnEventInput().clear(); getListOnWrite().clear(); getListOnReplace().clear(); getListOnRemove().clear(); getListOnReceiveMessage().clear(); getListOnCursorMove().clear(); // remove all plugin: for (esize_t iii=0; iiiisAvaillableOnEventEntry() == true) { getListOnEventEntry().pushBack(_plugin); } if (_plugin->isAvaillableOnEventInput() == true) { getListOnEventInput().pushBack(_plugin); } if (_plugin->isAvaillableOnWrite() == true) { getListOnWrite().pushBack(_plugin); } if (_plugin->isAvaillableOnReplace() == true) { getListOnReplace().pushBack(_plugin); } if (_plugin->isAvaillableOnRemove() == true) { getListOnRemove().pushBack(_plugin); } if (_plugin->isAvaillableOnReceiveMessage() == true) { getListOnReceiveMessage().pushBack(_plugin); } if (_plugin->isAvaillableOnCursorMove() == true) { getListOnCursorMove().pushBack(_plugin); } } void appl::textPluginManager::connect(appl::TextViewer& _widget) { for (esize_t iii=0; iiionPluginEnable(_widget); } } void appl::textPluginManager::disconnect(appl::TextViewer& _widget) { for (esize_t iii=0; iiionPluginDisable(_widget); } } bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, const ewol::EventEntry& _event) { etk::Vector& list = getListOnEventEntry(); for (esize_t iii=0; iiionEventEntry(_textDrawer, _event) == true ) { return true; } } return false; } bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer, const ewol::EventInput& _event) { etk::Vector& list = getListOnEventInput(); for (esize_t iii=0; iiionEventInput(_textDrawer, _event) == true ) { return true; } } return false; } bool appl::textPluginManager::onWrite(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const etk::UString& _data) { etk::Vector& list = getListOnWrite(); for (esize_t iii=0; iiionWrite(_textDrawer, _pos, _data) == true ) { return true; } } return false; } bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const etk::UString& _data, const appl::Buffer::Iterator& _posEnd) { etk::Vector& list = getListOnReplace(); for (esize_t iii=0; iiionReplace(_textDrawer, _pos, _data, _posEnd) == true ) { return true; } } return false; } bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { etk::Vector& list = getListOnRemove(); for (esize_t iii=0; iiionRemove(_textDrawer, _pos, _posEnd) == true ) { return true; } } return false; } bool appl::textPluginManager::onReceiveMessage(appl::TextViewer& _textDrawer, const ewol::EMessage& _msg) { etk::Vector& list = getListOnReceiveMessage(); for (esize_t iii=0; iiionReceiveMessage(_textDrawer, _msg) == true ) { return true; } } return false; } bool appl::textPluginManager::onCursorMove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos) { etk::Vector& list = getListOnCursorMove(); for (esize_t iii=0; iiionCursorMove(_textDrawer, _pos) == true ) { return true; } } return false; }