diff --git a/data/lang/EN.json b/data/lang/EN.json new file mode 100644 index 0000000..e69de29 diff --git a/data/lang/FR.json b/data/lang/FR.json new file mode 100644 index 0000000..e69de29 diff --git a/sources/appl/Buffer.cpp b/sources/appl/Buffer.cpp index 0a42d35..d530708 100644 --- a/sources/appl/Buffer.cpp +++ b/sources/appl/Buffer.cpp @@ -139,9 +139,7 @@ appl::Buffer::Buffer() : } appl::Buffer::~Buffer() { - if (m_highlight == NULL) { - appl::Highlight::release(m_highlight); - } + } bool appl::Buffer::loadFile(const std::string& _name) { @@ -301,7 +299,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos, for (Iterator it = _pos; (bool)it == true; ++it) { - if (tolower(*it) == firstElement) { + if ((char32_t)tolower(*it) == firstElement) { // find the first char ==> check next... bool find = true; Iterator tmp = it; @@ -373,7 +371,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos, (bool)it == true; --it) { //APPL_DEBUG("compare : " << *it << " ?= " << _search); - if (tolower(*it) == lastElement) { + if ((char32_t)tolower(*it) == lastElement) { // find the last char ==> check previous... bool find = true; _result = it; @@ -694,9 +692,7 @@ void appl::Buffer::tryFindHighlightType() { void appl::Buffer::setHighlightType(const std::string& _type) { m_highlightType = ""; cleanHighLight(); - if (m_highlight == NULL) { - appl::Highlight::release(m_highlight); - } + m_highlight.reset(); std::string resourceName = appl::highlightManager::getFileWithTypeType(_type); if (resourceName == "") { return; @@ -763,12 +759,12 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64 } else { elemStart = startId+1; } - for (int64_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { + for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) { //APPL_DEBUG("move element=" << i); - m_HLDataPass1[iii].beginStart += _nbAdded - _nbDeleted; - m_HLDataPass1[iii].beginStop += _nbAdded - _nbDeleted; - m_HLDataPass1[iii].endStart += _nbAdded - _nbDeleted; - m_HLDataPass1[iii].endStop += _nbAdded - _nbDeleted; + it->beginStart += _nbAdded - _nbDeleted; + it->beginStop += _nbAdded - _nbDeleted; + it->endStart += _nbAdded - _nbDeleted; + it->endStop += _nbAdded - _nbDeleted; } //Regenerate Element inside range if ( startId == -1 @@ -831,7 +827,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, ------------ ------------- ---------- S=-1 *************** E */ - for (int32_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { + for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { if (m_HLDataPass1[iii].endStop > _startPos) { break; } @@ -852,7 +848,7 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos, } else { elemStart = _startId+1; } - for (int32_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { + for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { if (m_HLDataPass1[iii].beginStart > _endPos) { _stopId = iii; break; @@ -876,7 +872,7 @@ void appl::Buffer::cleanHighLight() { appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) { int32_t start = etk_max(0, _starPos-1); - for (int32_t iii = start; iii < m_HLDataPass1.size(); ++iii) { + for (size_t iii = start; iii < m_HLDataPass1.size(); ++iii) { _starPos = iii; if ( m_HLDataPass1[iii].beginStart <= _pos && m_HLDataPass1[iii].endStop > _pos) { diff --git a/sources/appl/Buffer.h b/sources/appl/Buffer.h index edf82b7..4dd1042 100644 --- a/sources/appl/Buffer.h +++ b/sources/appl/Buffer.h @@ -68,7 +68,7 @@ namespace appl { /** * @brief Basic destructor */ - ~Iterator() { + virtual ~Iterator() { m_current = 0; m_data = NULL; m_value = u32char::Null; @@ -248,7 +248,7 @@ namespace appl { }; Iterator operator+ (const size_t _val) const { Iterator tmpp(*this); - for (int64_t iii=0; iii<_val; ++iii) { + for (int64_t iii=0; iii<(int64_t)_val; ++iii) { ++tmpp; } return tmpp; @@ -273,7 +273,7 @@ namespace appl { }; Iterator operator- (const size_t _val) const { Iterator tmpp(*this); - for (int64_t iii=0; iii<_val; ++iii) { + for (int64_t iii=0; iii<(int64_t)_val; ++iii) { --tmpp; } return tmpp; @@ -294,7 +294,7 @@ namespace appl { static const char* const eventChangeName; public: Buffer(); - ~Buffer(); + virtual ~Buffer(); private: bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ... std::string m_fileName; //!< name of the file (with his path) @@ -588,7 +588,7 @@ namespace appl { protected: std::string m_highlightType; //!< Name of the highlight type - appl::Highlight* m_highlight; //!< internal link with the Highlight system + ewol::object::Shared m_highlight; //!< internal link with the Highlight system std::vector m_HLDataPass1; //!< colorisation position in the current buffer pass 1 public: /** diff --git a/sources/appl/BufferManager.cpp b/sources/appl/BufferManager.cpp index 5351ddd..86a2295 100644 --- a/sources/appl/BufferManager.cpp +++ b/sources/appl/BufferManager.cpp @@ -25,23 +25,12 @@ appl::BufferManager::BufferManager() : } appl::BufferManager::~BufferManager() { - int32_t previousCount = m_list.size(); - for (int32_t iii = m_list.size()-1; iii >= 0 ; --iii) { - if (m_list[iii] == NULL) { - continue; - } - delete(m_list[iii]); - if (previousCount == m_list.size()) { - APPL_ERROR("Error in removing buffer !! "); - } - previousCount = m_list.size(); - } m_list.clear(); } -appl::Buffer* appl::BufferManager::createNewBuffer() { - appl::Buffer* tmp = new appl::Buffer(); +ewol::object::Shared appl::BufferManager::createNewBuffer() { + ewol::object::Shared tmp = ewol::object::makeShared(new appl::Buffer()); if (tmp == NULL) { APPL_ERROR("Can not allocate the Buffer (empty)."); return NULL; @@ -51,14 +40,14 @@ appl::Buffer* appl::BufferManager::createNewBuffer() { return tmp; } -appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { +ewol::object::Shared appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { APPL_INFO("get(" << _fileName << "," << _createIfNeeded << ")"); - for (int32_t iii = 0; iii < m_list.size(); ++iii) { - if (m_list[iii] == NULL) { + for (auto &it : m_list) { + if (it == NULL) { continue; } - if (m_list[iii]->getFileName() == _fileName) { - return m_list[iii]; + if (it->getFileName() == _fileName) { + return it; } } if (_createIfNeeded == true) { @@ -67,7 +56,7 @@ appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _creat APPL_CRITICAL("plop"); return NULL; } - appl::Buffer* tmp = new appl::Buffer(); + ewol::object::Shared tmp = ewol::object::makeShared(new appl::Buffer()); if (tmp == NULL) { APPL_ERROR("Can not allocate the Buffer class : " << _fileName); return NULL; @@ -78,31 +67,42 @@ appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _creat } return NULL; } -void appl::BufferManager::setBufferSelected(appl::Buffer* _bufferSelected) { +void appl::BufferManager::setBufferSelected(ewol::object::Shared _bufferSelected) { m_bufferSelected = _bufferSelected; sendMultiCast(appl::MsgSelectChange, ""); } -void appl::BufferManager::onObjectRemove(ewol::Object * _removeObject) { - if (m_bufferSelected == _removeObject) { +void appl::BufferManager::onObjectRemove(const ewol::object::Shared& _object) { + ewol::Resource::onObjectRemove(_object); + if (m_bufferSelected == _object) { setBufferSelected(NULL); } - for (int32_t iii = 0; iii < m_list.size(); ++iii) { - if (m_list[iii] != _removeObject) { + for (auto it(m_list.begin()); it!=m_list.end(); ++it) { + if (*it != _object) { continue; } - m_list[iii] = NULL; - m_list.erase(m_list.begin()+iii); - return; + m_list.erase(it); + it = m_list.begin(); } } +ewol::object::Shared appl::BufferManager::get(int32_t _id) { + int32_t id = 0; + for (auto &it : m_list) { + if (id == _id) { + return it; + } + id++; + } + return m_list.back(); +} + bool appl::BufferManager::exist(const std::string& _fileName) { - for (int32_t iii = 0; iii < m_list.size(); ++iii) { - if (m_list[iii] == NULL) { + for (auto &it : m_list) { + if (it == nullptr) { continue; } - if (m_list[iii]->getFileName() == _fileName) { + if (it->getFileName() == _fileName) { return true; } } @@ -123,15 +123,14 @@ void appl::BufferManager::onReceiveMessage(const ewol::object::Message& _msg) { APPL_DEBUG("receive message !!! " << _msg); } -appl::BufferManager* appl::BufferManager::keep() { - //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); - appl::BufferManager* object = static_cast(getManager().localKeep("???BufferManager???")); +ewol::object::Shared appl::BufferManager::keep() { + ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep("???BufferManager???")); if (NULL != object) { return object; } // this element create a new one every time .... EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???"); - object = new appl::BufferManager(); + object = ewol::object::makeShared(new appl::BufferManager()); if (NULL == object) { EWOL_ERROR("allocation error of a resource : ???BufferManager???"); return NULL; @@ -140,11 +139,3 @@ appl::BufferManager* appl::BufferManager::keep() { return object; } -void appl::BufferManager::release(appl::BufferManager*& _object) { - if (NULL == _object) { - return; - } - ewol::Resource* object2 = static_cast(_object); - getManager().release(object2); - _object = NULL; -} diff --git a/sources/appl/BufferManager.h b/sources/appl/BufferManager.h index 293b296..75dac80 100644 --- a/sources/appl/BufferManager.h +++ b/sources/appl/BufferManager.h @@ -9,6 +9,7 @@ #ifndef __BUFFER_MANAGER_H__ #define __BUFFER_MANAGER_H__ +#include #include #include #include @@ -18,9 +19,10 @@ namespace appl { class BufferManager : public ewol::Resource { protected: BufferManager(); - ~BufferManager(); + public: + virtual ~BufferManager(); private: - std::vector m_list; // list of all buffer curently open + std::list> m_list; // list of all buffer curently open public: /** * @brief Get a specific buffer with his name (can create a new buffer). @@ -28,7 +30,7 @@ namespace appl { * @param[in] _createIfNeeded Create the buffer if not existed. * @return a pointer on the buffer */ - appl::Buffer* get(const std::string& _fileName, bool _createIfNeeded=false); + ewol::object::Shared get(const std::string& _fileName, bool _createIfNeeded=false); /** * @brief Load a specific file, event if it not existed: * @param[in] _fileName Name of the file to open or create. @@ -52,32 +54,30 @@ namespace appl { * @param[in] _id Number of buffer * @return pointer on the buffer */ - appl::Buffer* get(int32_t _id) { - return m_list[_id]; - } + ewol::object::Shared get(int32_t _id); /** * @brief Create a new buffer empty. * @return Created buffer or NULL. */ - appl::Buffer* createNewBuffer(); + ewol::object::Shared createNewBuffer(); private: - appl::Buffer* m_bufferSelected; + ewol::object::Shared m_bufferSelected; public: /** * @brief Set the current buffer selected * @param[in] _bufferSelected Pointer on the buffer selected */ - void setBufferSelected(appl::Buffer* _bufferSelected); + void setBufferSelected(ewol::object::Shared _bufferSelected); /** * @brief Get the current buffer selected * @return Pointer on the buffer selected */ - appl::Buffer* getBufferSelected() { + ewol::object::Shared getBufferSelected() { return m_bufferSelected; }; public: // herited function void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(ewol::Object * _removeObject); + void onObjectRemove(const ewol::object::Shared& _removeObject); public: // resource manager /** * @brief keep the resource pointer. @@ -85,12 +85,7 @@ namespace appl { * @param[in] _filename Name of the configuration file. * @return pointer on the resource or NULL if an error occured. */ - static appl::BufferManager* keep(); - /** - * @brief release the keeped resources - * @param[in,out] reference on the object pointer - */ - static void release(appl::BufferManager*& _object); + static ewol::object::Shared keep(); }; }; diff --git a/sources/appl/GlyphDecoration.h b/sources/appl/GlyphDecoration.h index 7b0c222..2c5198a 100644 --- a/sources/appl/GlyphDecoration.h +++ b/sources/appl/GlyphDecoration.h @@ -17,7 +17,7 @@ namespace appl { public: // Constructeur GlyphDecoration(const std::string& _newColorName = "no_name"); - ~GlyphDecoration() { + virtual ~GlyphDecoration() { // nothing to do ... }; private: diff --git a/sources/appl/GlyphPainting.cpp b/sources/appl/GlyphPainting.cpp index 1377030..981b1c1 100644 --- a/sources/appl/GlyphPainting.cpp +++ b/sources/appl/GlyphPainting.cpp @@ -47,7 +47,7 @@ void appl::GlyphPainting::reload() { APPL_ERROR("Can not get basic array : 'ednColor'"); return; } - for (int32_t iii = 0; iii < baseArray->size(); ++iii) { + for (size_t iii = 0; iii < baseArray->size(); ++iii) { ejson::Object* tmpObj = baseArray->getObject(iii); if (tmpObj == NULL) { APPL_DEBUG(" can not get object in 'ednColor' id=" << iii); @@ -60,7 +60,7 @@ void appl::GlyphPainting::reload() { bool bold = tmpObj->getBooleanValue("bold", false); APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'"); bool findElement = false; - for (int32_t jjj=0; jjj appl::GlyphPainting::keep(const std::string& _filename) { //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); - appl::GlyphPainting* object = static_cast(getManager().localKeep(_filename)); + ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep(_filename)); if (NULL != object) { return object; } // this element create a new one every time .... EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\""); - object = new appl::GlyphPainting(_filename); + object = ewol::object::makeShared(new appl::GlyphPainting(_filename)); if (NULL == object) { EWOL_ERROR("allocation error of a resource : ??GlyphPainting??"); return NULL; @@ -111,13 +111,3 @@ appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) { getManager().localAdd(object); return object; } - -void appl::GlyphPainting::release(appl::GlyphPainting*& _object) { - if (NULL == _object) { - return; - } - ewol::Resource* object2 = static_cast(_object); - getManager().release(object2); - _object = NULL; -} - diff --git a/sources/appl/GlyphPainting.h b/sources/appl/GlyphPainting.h index 08a20a4..1e02391 100644 --- a/sources/appl/GlyphPainting.h +++ b/sources/appl/GlyphPainting.h @@ -20,6 +20,7 @@ namespace appl { std::vector m_list; protected: GlyphPainting(const std::string& _filename); + public: virtual ~GlyphPainting(); public: /** @@ -55,12 +56,7 @@ namespace appl { * @param[in] _filename Name of the configuration file. * @return pointer on the resource or NULL if an error occured. */ - static appl::GlyphPainting* keep(const std::string& _filename); - /** - * @brief release the keeped resources - * @param[in,out] reference on the object pointer - */ - static void release(appl::GlyphPainting*& _object); + static ewol::object::Shared keep(const std::string& _filename); }; }; diff --git a/sources/appl/Gui/BufferView.cpp b/sources/appl/Gui/BufferView.cpp index a34616a..263e1b1 100644 --- a/sources/appl/Gui/BufferView.cpp +++ b/sources/appl/Gui/BufferView.cpp @@ -20,12 +20,12 @@ static void SortElementList(std::vector& _list) { std::vector tmpList = _list; _list.clear(); - for(int32_t iii=0; iiiget(_msg.getData()); + ewol::object::Shared buffer = m_bufferManager->get(_msg.getData()); if (buffer == NULL) { APPL_ERROR("event on element nor exist : " << _msg.getData()); return; @@ -143,7 +138,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { appl::dataBufferStruct* tmp = m_list[iii]; m_list[iii] = NULL; m_list.erase(m_list.begin() + iii); - insertAlphabetic(tmp, (iii == m_selectedID)); + insertAlphabetic(tmp, ((int64_t)iii == m_selectedID)); break; } } @@ -162,12 +157,12 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) { APPL_DEBUG("message : " << _msg); if (_msg.getMessage() == appl::MsgSelectChange) { m_selectedID = -1; - appl::Buffer* tmpBuffer = NULL; + ewol::object::Shared tmpBuffer; if (m_bufferManager != NULL) { tmpBuffer = m_bufferManager->getBufferSelected(); } if (tmpBuffer != NULL) { - for (int32_t iii=0; iiim_isModify = BufferManager::get(m_list[iii]->m_bufferID)->isModify(); + for (auto &it : m_list) { + if (it != nullptr) { + //it->m_isModify = BufferManager::get(it->m_bufferID)->isModify(); } } markToRedraw(); } } -void BufferView::onObjectRemove(ewol::Object* _removeObject) { - ewol::widget::List::onObjectRemove(_removeObject); - for (int32_t iii=0; iii& _object) { + ewol::widget::List::onObjectRemove(_object); + auto it(m_list.begin()); + while (it != m_list.end()) { + if ( *it != nullptr + && (*it)->m_buffer == _object) { + m_list.erase(it); + markToRedraw(); + it = m_list.begin(); + } else { + ++it; } - if (m_list[iii]->m_buffer != _removeObject) { - continue; - } - m_list.erase(m_list.begin()+iii); - markToRedraw(); - return; + } + if (m_bufferManager == _object) { + m_bufferManager.reset(); } } @@ -256,8 +254,8 @@ uint32_t BufferView::getNuberOfRaw() { bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { if( _raw >= 0 - && _rawm_bufferName.getNameFile(); if ( m_list[_raw]->m_buffer != NULL @@ -286,7 +284,7 @@ bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::key::status _typeEvent if (1 == _IdInput && _typeEvent == ewol::key::statusSingle) { APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); if( _raw >= 0 - && _rawm_buffer != NULL) { sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName()); diff --git a/sources/appl/Gui/BufferView.h b/sources/appl/Gui/BufferView.h index 1e33974..00ffae1 100644 --- a/sources/appl/Gui/BufferView.h +++ b/sources/appl/Gui/BufferView.h @@ -15,28 +15,25 @@ #include #include -namespace appl -{ - class dataBufferStruct - { +namespace appl { + class dataBufferStruct { public: etk::FSNode m_bufferName; - appl::Buffer* m_buffer; - dataBufferStruct(const std::string& _bufferName, appl::Buffer* _buffer) : + ewol::object::Shared m_buffer; + dataBufferStruct(const std::string& _bufferName, const ewol::object::Shared& _buffer) : m_bufferName(_bufferName), m_buffer(_buffer) { }; - ~dataBufferStruct() { }; + virtual ~dataBufferStruct() { }; }; }; -class BufferView : public ewol::widget::List -{ +class BufferView : public ewol::widget::List { private: - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager private: - appl::GlyphPainting* m_paintingProperties; //!< element painting property + ewol::object::Shared m_paintingProperties; //!< element painting property int32_t m_colorBackground1; int32_t m_colorBackground2; int32_t m_colorBackgroundSelect; @@ -54,10 +51,10 @@ class BufferView : public ewol::widget::List public: // Constructeur BufferView(); - ~BufferView(); + virtual ~BufferView(); // Derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object* _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _object); private: bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order protected: diff --git a/sources/appl/Gui/MainWindows.cpp b/sources/appl/Gui/MainWindows.cpp index 49a24e1..f46f73b 100644 --- a/sources/appl/Gui/MainWindows.cpp +++ b/sources/appl/Gui/MainWindows.cpp @@ -61,9 +61,9 @@ class ParameterAboutGui : public ewol::widget::Sizer { public : ParameterAboutGui() : ewol::widget::Sizer(ewol::widget::Sizer::modeVert) { - ewol::widget::Spacer* mySpacer = NULL; + ewol::object::Shared mySpacer = NULL; - mySpacer = new ewol::widget::Spacer(); + mySpacer = ewol::object::makeShared(new ewol::widget::Spacer()); if (NULL == mySpacer) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -93,7 +93,7 @@ class ParameterAboutGui : public ewol::widget::Sizer { tmpLabel += " libPng, ogg-tremor, portaudio, libZip
"; tmpLabel += " tinyXml, freetype, agg2.4, etk
"; tmpLabel += ""; - ewol::widget::Label* myLabel = new ewol::widget::Label(tmpLabel); + ewol::object::Shared myLabel = ewol::object::makeShared(new ewol::widget::Label(tmpLabel)); if (NULL == myLabel) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -122,35 +122,37 @@ const char* l_smoothMax = "tmpEvent_maxChange"; MainWindows::MainWindows() { addObjectType("appl::MainWindows"); APPL_DEBUG("CREATE WINDOWS ... "); - ewol::widget::Sizer * mySizerVert = NULL; - ewol::widget::Sizer * mySizerVert2 = NULL; - ewol::widget::Sizer * mySizerHori = NULL; - //ewol::Button * myButton = NULL; - appl::TextViewer * myTextView = NULL; - BufferView * myBufferView = NULL; - ewol::widget::Menu * myMenu = NULL; + ewol::object::Shared mySizerVert = NULL; + ewol::object::Shared mySizerVert2 = NULL; + ewol::object::Shared mySizerHori = NULL; + ewol::object::Shared myTextView = NULL; + ewol::object::Shared myBufferView = NULL; + ewol::object::Shared myMenu = NULL; // load buffer manager: m_bufferManager = appl::BufferManager::keep(); - mySizerVert = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); + mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); + mySizerVert->setName("plop 1111111"); setSubWidget(mySizerVert); - mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori); + mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori)); + mySizerHori->setName("plop 222222222"); mySizerVert->subWidgetAdd(mySizerHori); - myBufferView = new BufferView(); + myBufferView = ewol::object::makeShared(new BufferView()); + myBufferView->setName("plop 3333333"); myBufferView->setExpand(bvec2(false,true)); myBufferView->setFill(bvec2(true,true)); mySizerHori->subWidgetAdd(myBufferView); - mySizerVert2 = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); + mySizerVert2 = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); mySizerHori->subWidgetAdd(mySizerVert2); - + mySizerVert2->setName("plop 4444444"); // main buffer Area : #if defined(__TARGET_OS__Android) - myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16); + myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 16)); #else - myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11); + myTextView = ewol::object::makeShared(new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11)); #endif myTextView->setName("appl-text-viewer"); myTextView->setExpand(bvec2(true,true)); @@ -163,13 +165,14 @@ MainWindows::MainWindows() { mySizerVert2->subWidgetAdd(myTextView); */ // search area : - Search * mySearch = new Search(); + ewol::object::Shared mySearch = ewol::object::makeShared(new appl::widget::Search()); mySizerVert2->subWidgetAdd(mySearch); - mySizerHori = new ewol::widget::Sizer(ewol::widget::Sizer::modeHori); + mySizerHori = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeHori)); + mySizerHori->setName("plop 555555"); mySizerVert->subWidgetAdd(mySizerHori); - myMenu = new ewol::widget::Menu(); + myMenu = ewol::object::makeShared(new ewol::widget::Menu()); mySizerHori->subWidgetAdd(myMenu); int32_t idMenuFile = myMenu->addTitle("File"); myMenu->add(idMenuFile, "New", "", ednMsgGuiNew); @@ -218,7 +221,7 @@ MainWindows::MainWindows() { myMenu->addSpacer(); myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader); - m_widgetLabelFileName = new ewol::widget::Label("FileName"); + m_widgetLabelFileName = ewol::object::makeShared(new ewol::widget::Label("FileName")); m_widgetLabelFileName->setExpand(bvec2(true,false)); m_widgetLabelFileName->setFill(bvec2(true,false));; mySizerHori->subWidgetAdd(m_widgetLabelFileName); @@ -265,7 +268,7 @@ MainWindows::MainWindows() { MainWindows::~MainWindows() { - appl::BufferManager::release(m_bufferManager); + } @@ -291,7 +294,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { return; } // Get a ref on the buffer selected (if null, no buffer was selected ...) - appl::Buffer* tmpBuffer = m_bufferManager->getBufferSelected(); + ewol::object::Shared tmpBuffer = m_bufferManager->getBufferSelected(); if (tmpBuffer != NULL) { etk::FSNode tmpFile = tmpBuffer->getFileName(); tmpWidget->setFolder(tmpFile.getNameFolder()); @@ -301,7 +304,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { tmpWidget->registerOnEvent(this, "validate", ednEventPopUpFileSelected); } else if (_msg.getMessage() == ednMsgProperties) { // Request the parameter GUI - ewol::widget::Parameter* tmpWidget = new ewol::widget::Parameter(); + ewol::object::Shared tmpWidget = ewol::object::makeShared(new ewol::widget::Parameter()); if (NULL == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -339,13 +342,13 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { tmpWidget->setTitle("Properties"); popUpWidgetPush(tmpWidget); tmpWidget->menuAddGroup("Editor"); - ewol::Widget* tmpSubWidget = new globals::ParameterGlobalsGui(); + ewol::object::Shared tmpSubWidget = ewol::object::makeShared(new globals::ParameterGlobalsGui()); tmpWidget->menuAdd("Editor", "", tmpSubWidget); tmpWidget->menuAdd("Font & Color", "", NULL); tmpWidget->menuAdd("Highlight", "", NULL); tmpWidget->menuAddGroup("General"); tmpWidget->menuAdd("Display", "", NULL); - tmpSubWidget = new ParameterAboutGui(); + tmpSubWidget = ewol::object::makeShared(new ParameterAboutGui()); tmpWidget->menuAdd("About", "", tmpSubWidget); } } else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) { @@ -372,7 +375,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { || _msg.getMessage() == appl::Buffer::eventIsSave || _msg.getMessage() == appl::Buffer::eventChangeName) { // select a new Buffer ==> change title: - appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); + ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); if (tmpp == NULL) { setTitle("Edn"); if (m_widgetLabelFileName != NULL) { @@ -422,7 +425,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); + ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); if (tmpBuffer == NULL) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; @@ -441,7 +444,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); + ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); if (tmpBuffer == NULL) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; @@ -452,7 +455,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); return; } - appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); + ewol::object::Shared tmpBuffer = m_bufferManager->get(_msg.getData()); if (tmpBuffer == NULL) { APPL_ERROR("Error to get the buffer : " << _msg.getData()); return; @@ -463,7 +466,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) { return; } -void MainWindows::saveAsPopUp(appl::Buffer* _buffer) { +void MainWindows::saveAsPopUp(const ewol::object::Shared& _buffer) { if (_buffer == NULL) { APPL_ERROR("Call With NULL input..."); return; @@ -471,19 +474,19 @@ void MainWindows::saveAsPopUp(appl::Buffer* _buffer) { appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName()); } -void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) { +void MainWindows::closeNotSavedFile(const ewol::object::Shared& _buffer) { if (_buffer == NULL) { APPL_ERROR("Call With NULL input..."); return; } - ewol::widget::StdPopUp* tmpPopUp = new ewol::widget::StdPopUp(); + ewol::object::Shared tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp()); if (tmpPopUp == NULL) { APPL_ERROR("Can not create a simple pop-up"); return; } tmpPopUp->setTitle("Close un-saved file:"); tmpPopUp->setComment("The file named : \"" + _buffer->getFileName() + "\" is curently modify.
If you don't saves these modifications,
they will be definitly lost..."); - ewol::Widget* bt = NULL; + ewol::object::Shared bt = NULL; if (_buffer->hasFileName() == true) { bt = tmpPopUp->addButton("Save", true); if (bt != NULL) { @@ -507,7 +510,7 @@ void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) { popUpWidgetPush(tmpPopUp); } -void MainWindows::onObjectRemove(ewol::Object* _removeObject) { +void MainWindows::onObjectRemove(const ewol::object::Shared& _removeObject) { ewol::widget::Windows::onObjectRemove(_removeObject); if (m_widgetLabelFileName == _removeObject) { m_widgetLabelFileName = NULL; diff --git a/sources/appl/Gui/MainWindows.h b/sources/appl/Gui/MainWindows.h index e96f068..fa1a5e8 100644 --- a/sources/appl/Gui/MainWindows.h +++ b/sources/appl/Gui/MainWindows.h @@ -19,26 +19,26 @@ class MainWindows : public ewol::widget::Windows { private: - ewol::widget::Label* m_widgetLabelFileName; + ewol::object::Shared m_widgetLabelFileName; public: // Constructeur MainWindows(); - ~MainWindows(); + virtual ~MainWindows(); private: - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager /** * @brief Display a pop-up to the select the name of the file. * @param[in] _buffer Buffer that might be saved with a new name. */ - void saveAsPopUp(appl::Buffer* _buffer); + void saveAsPopUp(const ewol::object::Shared& _buffer); /** * @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved. * @param[in] _buffer Buffer that might be close. */ - void closeNotSavedFile(appl::Buffer* _buffer); + void closeNotSavedFile(const ewol::object::Shared& _buffer); public: // Derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; diff --git a/sources/appl/Gui/Search.cpp b/sources/appl/Gui/Search.cpp index c21a0cd..a4d9fbe 100644 --- a/sources/appl/Gui/Search.cpp +++ b/sources/appl/Gui/Search.cpp @@ -28,7 +28,7 @@ const char* const l_eventWrapCb = "appl-wrap-CheckBox"; const char* const l_eventForwardCb = "appl-forward-CheckBox"; const char* const l_eventHideBt = "appl-hide-button"; -Search::Search() : +appl::widget::Search::Search() : ewol::widget::Composer(ewol::widget::Composer::file, "DATA:GUI-Search.xml"), m_viewerManager(NULL), m_forward(true), @@ -36,8 +36,8 @@ Search::Search() : m_wrap(true), m_searchEntry(NULL), m_replaceEntry(NULL) { - addObjectType("appl::Search"); - // load buffer manager: + addObjectType("appl::widget::Search"); + // load buffer manager:onObjectRemove m_viewerManager = appl::ViewerManager::keep(); // link event registerOnEventNameWidget(this, "SEARCH:close", "pressed", l_eventHideBt); @@ -55,24 +55,24 @@ Search::Search() : setConfigNamed("SEARCH:wrap", "value", std::to_string(m_wrap)); setConfigNamed("SEARCH:up-down", "value", std::to_string(m_forward)); // get widget - m_searchEntry = dynamic_cast(getWidgetNamed("SEARCH:search-entry")); - m_replaceEntry = dynamic_cast(getWidgetNamed("SEARCH:replace-entry")); + m_searchEntry = ewol::dynamic_pointer_cast(getWidgetNamed("SEARCH:search-entry")); + m_replaceEntry = ewol::dynamic_pointer_cast(getWidgetNamed("SEARCH:replace-entry")); // Display and hide event: registerMultiCast(ednMsgGuiSearch); // basicly hiden ... hide(); } -Search::~Search() { - appl::ViewerManager::release(m_viewerManager); +appl::widget::Search::~Search() { + } -void Search::find() { +void appl::widget::Search::find() { if (m_viewerManager == NULL) { APPL_WARNING("No viewer manager selected!!!"); return; } - appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); + ewol::object::Shared viewer = m_viewerManager->getViewerSelected(); if (viewer == NULL) { APPL_INFO("No viewer selected!!!"); return; @@ -103,12 +103,12 @@ void Search::find() { } } -void Search::replace() { +void appl::widget::Search::replace() { if (m_viewerManager == NULL) { APPL_WARNING("No viewer manager selected!!!"); return; } - appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); + ewol::object::Shared viewer = m_viewerManager->getViewerSelected(); if (viewer == NULL) { APPL_INFO("No viewer selected!!!"); return; @@ -121,7 +121,7 @@ void Search::replace() { } -void Search::onReceiveMessage(const ewol::object::Message& _msg) { +void appl::widget::Search::onReceiveMessage(const ewol::object::Message& _msg) { ewol::widget::Composer::onReceiveMessage(_msg); APPL_INFO("Search receive message : " << _msg); if ( _msg.getMessage() == l_eventSearchEntry) { @@ -162,16 +162,16 @@ void Search::onReceiveMessage(const ewol::object::Message& _msg) { } } -void Search::onObjectRemove(ewol::Object * _removeObject) { - ewol::widget::Composer::onObjectRemove(_removeObject); - if (_removeObject == m_searchEntry) { - m_searchEntry = NULL; +void appl::widget::Search::onObjectRemove(const ewol::object::Shared& _object) { + ewol::widget::Composer::onObjectRemove(_object); + if (_object == m_searchEntry) { + m_searchEntry.reset(); } - if (_removeObject == m_replaceEntry) { - m_replaceEntry = NULL; + if (_object == m_replaceEntry) { + m_replaceEntry.reset(); } - if (_removeObject == m_viewerManager) { - m_viewerManager = NULL; + if (_object == m_viewerManager) { + m_viewerManager.reset(); } } diff --git a/sources/appl/Gui/Search.h b/sources/appl/Gui/Search.h index f2b20f6..52b8204 100644 --- a/sources/appl/Gui/Search.h +++ b/sources/appl/Gui/Search.h @@ -14,35 +14,37 @@ #include #include #include - -class Search : public ewol::widget::Composer { - private: - appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager - bool m_forward; - bool m_caseSensitive; - bool m_wrap; - ewol::widget::Entry* m_searchEntry; - ewol::widget::Entry* m_replaceEntry; - std::u32string m_searchData; - std::u32string m_replaceData; - public: - // Constructeur - Search(); - ~Search(); - private: - /** - * @brief Find the next element that corespond at the search - */ - void find(); - /** - * @brief Replace the current selected text. - */ - void replace(); - public: // derived function - virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); +namespace appl { + namespace widget { + class Search : public ewol::widget::Composer { + private: + ewol::object::Shared m_viewerManager; //!< handle on the buffer manager + bool m_forward; + bool m_caseSensitive; + bool m_wrap; + ewol::object::Shared m_searchEntry; + ewol::object::Shared m_replaceEntry; + std::u32string m_searchData; + std::u32string m_replaceData; + public: + // Constructeur + Search(); + virtual ~Search(); + private: + /** + * @brief Find the next element that corespond at the search + */ + void find(); + /** + * @brief Replace the current selected text. + */ + void replace(); + public: // derived function + virtual void onReceiveMessage(const ewol::object::Message& _msg); + virtual void onObjectRemove(const ewol::object::Shared& _object); + }; + }; }; - #endif diff --git a/sources/appl/Gui/TagFileList.cpp b/sources/appl/Gui/TagFileList.cpp index a50efa1..de72afd 100644 --- a/sources/appl/Gui/TagFileList.cpp +++ b/sources/appl/Gui/TagFileList.cpp @@ -34,11 +34,10 @@ appl::TagFileList::TagFileList() { appl::TagFileList::~TagFileList() { - for (int32_t iii=0; iii appl::TagFileList::getBasicBG() { @@ -59,7 +58,7 @@ uint32_t appl::TagFileList::getNuberOfRaw() { } bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { - if (_raw >= 0 && _raw < m_list.size() && NULL != m_list[_raw]) { + if (_raw >= 0 && (size_t)_raw < m_list.size() && NULL != m_list[_raw]) { if (0 == _colomn) { _myTextToWrite = std::to_string(m_list[_raw]->fileLine); } else { @@ -86,7 +85,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); if (_IdInput == 1) { int32_t previousRaw = m_selectedLine; - if (_raw > m_list.size() ) { + if (_raw > (int64_t)m_list.size() ) { m_selectedLine = -1; } else { m_selectedLine = _raw; @@ -96,7 +95,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty event = applEventCtagsListSelect; } if( m_selectedLine >= 0 - && m_selectedLine < m_list.size() + && m_selectedLine < (int64_t)m_list.size() && NULL != m_list[m_selectedLine] ) { generateEventId(event, std::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename); } else { diff --git a/sources/appl/Gui/TagFileList.h b/sources/appl/Gui/TagFileList.h index 41f3f93..3827990 100644 --- a/sources/appl/Gui/TagFileList.h +++ b/sources/appl/Gui/TagFileList.h @@ -28,7 +28,7 @@ namespace appl { fileLine(_line) { }; - ~TagListElement() { + virtual ~TagListElement() { }; }; @@ -37,14 +37,14 @@ namespace appl { int32_t m_selectedLine; std::vector m_list; protected: - ewol::resource::ColorFile* m_colorProperty; //!< theme color property. + ewol::object::Shared m_colorProperty; //!< theme color property. int32_t m_colorIdText; //!< Color of the text. int32_t m_colorIdBackground1; //!< Color of the Background. int32_t m_colorIdBackground2; //!< Color of the Background 2. int32_t m_colorIdBackgroundSelected; //!< Color of line selected. public: TagFileList(); - ~TagFileList(); + virtual ~TagFileList(); // display API : virtual etk::Color<> getBasicBG(); uint32_t getNuberOfColomn(); diff --git a/sources/appl/Gui/TagFileSelection.cpp b/sources/appl/Gui/TagFileSelection.cpp index 224ce3e..d629ce3 100644 --- a/sources/appl/Gui/TagFileSelection.cpp +++ b/sources/appl/Gui/TagFileSelection.cpp @@ -35,9 +35,9 @@ appl::TagFileSelection::TagFileSelection() { addEventId(applEventctagsSelection); addEventId(applEventctagsCancel); - ewol::widget::Label* myWidgetTitle = NULL; + ewol::object::Shared myWidgetTitle; - ewol::widget::Sizer * mySizerVert = NULL; + ewol::object::Shared mySizerVert; #if defined(__TARGET_OS__Android) setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent)); #elif defined(__TARGET_OS__Windows) @@ -46,7 +46,7 @@ appl::TagFileSelection::TagFileSelection() { setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); #endif - mySizerVert = new ewol::widget::Sizer(ewol::widget::Sizer::modeVert); + mySizerVert = ewol::object::makeShared(new ewol::widget::Sizer(ewol::widget::Sizer::modeVert)); if (NULL == mySizerVert) { EWOL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -54,7 +54,7 @@ appl::TagFileSelection::TagFileSelection() { mySizerVert->setExpand(bvec2(true,true)); // set it in the pop-up-system : setSubWidget(mySizerVert); - ewol::widget::Composer* compose = new ewol::widget::Composer(ewol::widget::Composer::String, + ewol::object::Shared compose = ewol::object::makeShared(new ewol::widget::Composer(ewol::widget::Composer::String, "\n" " \n" " \n" - "\n"); + "\n")); compose->setExpand(bvec2(true,false)); compose->setFill(bvec2(true,true)); mySizerVert->subWidgetAdd(compose); compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection); compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel); - m_listTag = new appl::TagFileList(); + m_listTag = ewol::object::makeShared(new appl::TagFileList()); if (NULL == m_listTag) { EWOL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -139,7 +139,7 @@ void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) { } } -void appl::TagFileSelection::onObjectRemove(ewol::Object * _removeObject) { +void appl::TagFileSelection::onObjectRemove(const ewol::object::Shared& _removeObject) { // First step call parrent : ewol::widget::PopUp::onObjectRemove(_removeObject); // second step find if in all the elements ... diff --git a/sources/appl/Gui/TagFileSelection.h b/sources/appl/Gui/TagFileSelection.h index e7a1e30..417b591 100644 --- a/sources/appl/Gui/TagFileSelection.h +++ b/sources/appl/Gui/TagFileSelection.h @@ -19,7 +19,7 @@ extern const char * const applEventctagsCancel; namespace appl { class TagFileSelection : public ewol::widget::PopUp { private: - appl::TagFileList* m_listTag; + ewol::object::Shared m_listTag; std::string m_eventNamed; public: TagFileSelection(); @@ -32,7 +32,7 @@ namespace appl { void addCtagsNewItem(std::string file, int32_t line); public: // herited function void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(ewol::Object * _removeObject); + void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/TextViewer.cpp b/sources/appl/Gui/TextViewer.cpp index e3fe4ab..b665318 100644 --- a/sources/appl/Gui/TextViewer.cpp +++ b/sources/appl/Gui/TextViewer.cpp @@ -29,7 +29,6 @@ APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms"); appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) : - m_buffer(NULL), m_displayText(_fontName, _fontSize), m_insertMode(false) { addObjectType("appl::TextViewer"); @@ -65,9 +64,6 @@ appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) : appl::TextViewer::~TextViewer() { appl::textPluginManager::disconnect(*this); - appl::GlyphPainting::release(m_paintingProperties); - appl::BufferManager::release(m_bufferManager); - appl::ViewerManager::release(m_viewerManager); } std::string appl::TextViewer::getBufferPath() { @@ -428,7 +424,8 @@ bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) { } bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) { - if (_event.getId() != 0) { + if ( _event.getId() != 0 + && _event.getStatus() == ewol::key::statusDown) { keepFocus(); } //tic(); @@ -627,7 +624,7 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) { ewol::widget::WidgetScrolled::onReceiveMessage(_msg); APPL_VERBOSE("receive msg: " << _msg); // First call plugin - if (appl::textPluginManager::onReceiveMessage(*this, _msg) == true) { + if (appl::textPluginManager::onReceiveMessageViewer(*this, _msg) == true) { markToRedraw(); return; } @@ -702,7 +699,7 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) { } } -void appl::TextViewer::onObjectRemove(ewol::Object* _removeObject) { +void appl::TextViewer::onObjectRemove(const ewol::object::Shared& _removeObject) { ewol::widget::WidgetScrolled::onObjectRemove(_removeObject); if (m_buffer == _removeObject) { m_buffer = NULL; diff --git a/sources/appl/Gui/TextViewer.h b/sources/appl/Gui/TextViewer.h index 38d5204..a56e6ed 100644 --- a/sources/appl/Gui/TextViewer.h +++ b/sources/appl/Gui/TextViewer.h @@ -24,7 +24,7 @@ namespace appl { class TextViewer : public ewol::widget::WidgetScrolled { private: - appl::GlyphPainting* m_paintingProperties; //!< element painting property + ewol::object::Shared m_paintingProperties; //!< element painting property int32_t m_colorBackground; int32_t m_colorSpace; int32_t m_colorTabulation; @@ -33,25 +33,25 @@ namespace appl { int32_t m_colorSelection; int32_t m_colorNormal; private: - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager - appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_viewerManager; //!< handle on the buffer manager public: TextViewer(const std::string& _fontName="", int32_t _fontSize=-1); virtual ~TextViewer(); private: - appl::Buffer* m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) + ewol::object::Shared m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) public: /** * @brief Get the buffer property (only for the class : template class TextViewerPluginData) * @return pointer on buffer */ - appl::Buffer* internalGetBuffer() { + ewol::object::Shared internalGetBuffer() { return m_buffer; } private: ewol::compositing::Text m_displayText; //!< Text display properties. ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested. - std::vector> m_drawingRemenber; + std::vector, vec2>> m_drawingRemenber; public: void setFontSize(int32_t _size); void setFontName(const std::string& _fontName); @@ -61,7 +61,7 @@ namespace appl { virtual bool calculateMinSize(); virtual void onRegenerateDisplay(); virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object* _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); virtual bool onEventInput(const ewol::event::Input& _event); virtual bool onEventEntry(const ewol::event::Entry& _event); virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID); @@ -399,9 +399,9 @@ namespace appl { * @param[in] _data Associate data wit the event */ virtual void ext_shortCutAdd(const char * _descriptiveString, - const char * _generateEventId, - std::string _data="", - bool _broadcast=false) { + const char * _generateEventId, + std::string _data="", + bool _broadcast=false) { shortCutAdd(_descriptiveString, _generateEventId, _data, _broadcast); } }; diff --git a/sources/appl/Gui/ViewerManager.cpp b/sources/appl/Gui/ViewerManager.cpp index cb0c681..983d31d 100644 --- a/sources/appl/Gui/ViewerManager.cpp +++ b/sources/appl/Gui/ViewerManager.cpp @@ -26,10 +26,14 @@ appl::ViewerManager::ViewerManager() : } appl::ViewerManager::~ViewerManager() { - appl::BufferManager::release(m_bufferManager); + } -void appl::ViewerManager::setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer) { +bool appl::ViewerManager::isLastSelected(const ewol::object::Shared& _viewer) { + return m_viewer == _viewer; +} + +void appl::ViewerManager::setViewerSelected(const ewol::object::Shared& _viewer, const ewol::object::Shared& _buffer) { if (m_viewer == _viewer) { return; } @@ -43,23 +47,23 @@ void appl::ViewerManager::onReceiveMessage(const ewol::object::Message& _msg) { APPL_DEBUG("receive message !!! " << _msg); } -void appl::ViewerManager::onObjectRemove(ewol::Object* _removeObject) { +void appl::ViewerManager::onObjectRemove(const ewol::object::Shared& _removeObject) { ewol::Resource:: onObjectRemove(_removeObject); if (_removeObject == m_viewer) { - m_viewer = NULL; + m_viewer.reset(); return; } } -appl::ViewerManager* appl::ViewerManager::keep() { +ewol::object::Shared appl::ViewerManager::keep() { //EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\""); - appl::ViewerManager* object = static_cast(getManager().localKeep("???ViewerManager???")); + ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep("???ViewerManager???")); if (NULL != object) { return object; } // this element create a new one every time .... EWOL_INFO("CREATE : appl::ViewerManager: ???ViewerManager???"); - object = new appl::ViewerManager(); + object = ewol::object::makeShared(new appl::ViewerManager()); if (NULL == object) { EWOL_ERROR("allocation error of a resource : ???ViewerManager???"); return NULL; @@ -67,12 +71,3 @@ appl::ViewerManager* appl::ViewerManager::keep() { getManager().localAdd(object); return object; } - -void appl::ViewerManager::release(appl::ViewerManager*& _object) { - if (NULL == _object) { - return; - } - ewol::Resource* object2 = static_cast(_object); - getManager().release(object2); - _object = NULL; -} diff --git a/sources/appl/Gui/ViewerManager.h b/sources/appl/Gui/ViewerManager.h index 32bd811..42c5e4e 100644 --- a/sources/appl/Gui/ViewerManager.h +++ b/sources/appl/Gui/ViewerManager.h @@ -20,21 +20,22 @@ namespace appl { class ViewerManager : public ewol::Resource { protected: ViewerManager(); - ~ViewerManager(); + public: + virtual ~ViewerManager(); private: - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager - appl::TextViewer* m_viewer; + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_viewer; public: /** * @brief Set the current buffer selected * @param[in] _viewer Pointer on the viewer selected */ - void setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer); + void setViewerSelected(const ewol::object::Shared& _viewer, const ewol::object::Shared& _buffer); /** * @brief Get the current buffer selected * @return Pointer on the buffer selected */ - appl::TextViewer* getViewerSelected() { + ewol::object::Shared getViewerSelected() { return m_viewer; }; /** @@ -42,12 +43,10 @@ namespace appl { * @param[in] _viewer element selected. * @return true if the element is selected */ - bool isLastSelected(appl::TextViewer* _viewer) { - return m_viewer == _viewer; - }; + bool isLastSelected(const ewol::object::Shared& _viewer); public: // herited function void onReceiveMessage(const ewol::object::Message& _msg); - void onObjectRemove(ewol::Object* _removeObject); + void onObjectRemove(const ewol::object::Shared& _removeObject); public: // resource manager /** * @brief keep the resource pointer. @@ -55,12 +54,7 @@ namespace appl { * @param[in] _filename Name of the configuration file. * @return pointer on the resource or NULL if an error occured. */ - static appl::ViewerManager* keep(); - /** - * @brief release the keeped resources - * @param[in,out] reference on the object pointer - */ - static void release(appl::ViewerManager*& _object); + static ewol::object::Shared keep(); }; }; diff --git a/sources/appl/Gui/WorkerCloseAllFile.cpp b/sources/appl/Gui/WorkerCloseAllFile.cpp index 5afac3a..4c0d8db 100644 --- a/sources/appl/Gui/WorkerCloseAllFile.cpp +++ b/sources/appl/Gui/WorkerCloseAllFile.cpp @@ -29,7 +29,7 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile() : } // List all current open file : for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) { - appl::Buffer* tmpBuffer = m_bufferManager->get(iii); + ewol::object::Shared tmpBuffer = m_bufferManager->get(iii); if (tmpBuffer == NULL) { continue; } @@ -45,7 +45,7 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile() : return; } // create the worker : - m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); + m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front())); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { @@ -56,7 +56,7 @@ appl::WorkerCloseAllFile::WorkerCloseAllFile() : } appl::WorkerCloseAllFile::~WorkerCloseAllFile() { - appl::BufferManager::release(m_bufferManager); + } void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _msg) { @@ -70,7 +70,7 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms return; } // create the worker : - m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); + m_worker = ewol::object::makeShared(new appl::WorkerCloseFile(m_bufferNameList.front())); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { @@ -81,7 +81,7 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms } } -void appl::WorkerCloseAllFile::onObjectRemove(ewol::Object* _removeObject) { +void appl::WorkerCloseAllFile::onObjectRemove(const ewol::object::Shared& _removeObject) { if (_removeObject == m_worker) { m_worker = NULL; APPL_VERBOSE("AutoRemove After saving sub widget ..."); diff --git a/sources/appl/Gui/WorkerCloseAllFile.h b/sources/appl/Gui/WorkerCloseAllFile.h index ab1aea2..8d6714e 100644 --- a/sources/appl/Gui/WorkerCloseAllFile.h +++ b/sources/appl/Gui/WorkerCloseAllFile.h @@ -19,11 +19,11 @@ namespace appl { virtual ~WorkerCloseAllFile(); private: std::vector m_bufferNameList; - appl::WorkerCloseFile* m_worker; //! pop-up element that is open... - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_worker; //! pop-up element that is open... + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerCloseFile.cpp b/sources/appl/Gui/WorkerCloseFile.cpp index 86e9921..aa304d3 100644 --- a/sources/appl/Gui/WorkerCloseFile.cpp +++ b/sources/appl/Gui/WorkerCloseFile.cpp @@ -38,7 +38,7 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : } if (m_bufferName == "") { // need to find the curent file ... - appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); + ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); if (tmpp == NULL) { APPL_ERROR("No selected buffer now ..."); autoDestroy(); @@ -63,14 +63,14 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : return; } - ewol::widget::StdPopUp* tmpPopUp = new ewol::widget::StdPopUp(); + ewol::object::Shared tmpPopUp = ewol::object::makeShared(new ewol::widget::StdPopUp()); if (tmpPopUp == NULL) { APPL_ERROR("Can not create a simple pop-up"); return; } tmpPopUp->setTitle("Close un-saved file:"); tmpPopUp->setComment("The file named : \"" + m_buffer->getFileName() + "\" is curently modify.
If you don't saves these modifications,
they will be definitly lost..."); - ewol::Widget* bt = NULL; + ewol::object::Shared bt = NULL; if (m_buffer->hasFileName() == true) { bt = tmpPopUp->addButton("Save", true); if (bt != NULL) { @@ -87,7 +87,7 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : } tmpPopUp->addButton("Cancel", true); tmpPopUp->setRemoveOnExternClick(true); - ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); + ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); if (tmpWindows == NULL) { APPL_ERROR("Error to get the windows."); autoDestroy(); @@ -97,7 +97,7 @@ appl::WorkerCloseFile::WorkerCloseFile(const std::string& _bufferName) : } appl::WorkerCloseFile::~WorkerCloseFile() { - appl::BufferManager::release(m_bufferManager); + } void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) { @@ -107,7 +107,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) } APPL_DEBUG("have message : " << _msg); if (_msg.getMessage() == s_saveAsValidate) { - m_worker = new appl::WorkerSaveFile(m_bufferName); + m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferName)); if (m_worker != NULL) { m_worker->registerOnEvent(this, appl::WorkerSaveFile::eventSaveDone, s_saveAsDone); } @@ -118,7 +118,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) return; } if (m_buffer->storeFile() == false) { - ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); + ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); if (tmpWindows == NULL) { return; } @@ -138,7 +138,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg) } } -void appl::WorkerCloseFile::onObjectRemove(ewol::Object* _removeObject) { +void appl::WorkerCloseFile::onObjectRemove(const ewol::object::Shared& _removeObject) { if (_removeObject == m_worker) { m_worker = NULL; APPL_VERBOSE("AutoRemove After closing sub widget ..."); diff --git a/sources/appl/Gui/WorkerCloseFile.h b/sources/appl/Gui/WorkerCloseFile.h index 0b948bd..10f111a 100644 --- a/sources/appl/Gui/WorkerCloseFile.h +++ b/sources/appl/Gui/WorkerCloseFile.h @@ -23,12 +23,12 @@ namespace appl { virtual ~WorkerCloseFile(); private: std::string m_bufferName; - appl::Buffer* m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer - appl::WorkerSaveFile* m_worker; //! sub-worker element... - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_buffer; //!< reference on the buffer (when rename, we have no more reference on the buffer + ewol::object::Shared m_worker; //! sub-worker element... + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerSaveAllFile.cpp b/sources/appl/Gui/WorkerSaveAllFile.cpp index a759db7..5350729 100644 --- a/sources/appl/Gui/WorkerSaveAllFile.cpp +++ b/sources/appl/Gui/WorkerSaveAllFile.cpp @@ -28,8 +28,8 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile() : return; } // List all current open file : - for (size_t iii=0; iiisize(); ++iii) { - appl::Buffer* tmpBuffer = m_bufferManager->get(iii); + for (int32_t iii=0; iiisize(); ++iii) { + ewol::object::Shared tmpBuffer = m_bufferManager->get(iii); if (tmpBuffer == NULL) { continue; } @@ -48,7 +48,7 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile() : return; } // create the worker : - m_worker = new appl::WorkerSaveFile(m_bufferNameList.front()); + m_worker = ewol::object::makeShared(new appl::WorkerSaveFile(m_bufferNameList.front())); // remove first element : m_bufferNameList.erase(m_bufferNameList.begin()); if (m_bufferNameList.size() == 0) { @@ -59,7 +59,7 @@ appl::WorkerSaveAllFile::WorkerSaveAllFile() : } appl::WorkerSaveAllFile::~WorkerSaveAllFile() { - appl::BufferManager::release(m_bufferManager); + } void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg) { @@ -84,7 +84,7 @@ void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg } } -void appl::WorkerSaveAllFile::onObjectRemove(ewol::Object* _removeObject) { +void appl::WorkerSaveAllFile::onObjectRemove(const ewol::object::Shared& _removeObject) { if (_removeObject == m_worker) { m_worker = NULL; APPL_VERBOSE("AutoRemove After saving sub widget ..."); diff --git a/sources/appl/Gui/WorkerSaveAllFile.h b/sources/appl/Gui/WorkerSaveAllFile.h index 1ab8a21..2d8c0d4 100644 --- a/sources/appl/Gui/WorkerSaveAllFile.h +++ b/sources/appl/Gui/WorkerSaveAllFile.h @@ -19,11 +19,11 @@ namespace appl { virtual ~WorkerSaveAllFile(); private: std::vector m_bufferNameList; - appl::WorkerSaveFile* m_worker; //! pop-up element that is open... - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_worker; //! pop-up element that is open... + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Gui/WorkerSaveFile.cpp b/sources/appl/Gui/WorkerSaveFile.cpp index f245dc5..c331126 100644 --- a/sources/appl/Gui/WorkerSaveFile.cpp +++ b/sources/appl/Gui/WorkerSaveFile.cpp @@ -33,7 +33,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force } if (m_bufferName == "") { // need to find the curent file ... - appl::Buffer* tmpp = m_bufferManager->getBufferSelected(); + ewol::object::Shared tmpp = m_bufferManager->getBufferSelected(); if (tmpp == NULL) { APPL_ERROR("No selected buffer now ..."); autoDestroy(); @@ -46,7 +46,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force autoDestroy(); return; } - appl::Buffer* tmpBuffer = m_bufferManager->get(m_bufferName); + ewol::object::Shared tmpBuffer = m_bufferManager->get(m_bufferName); if (tmpBuffer == NULL) { APPL_ERROR("Error to get the buffer : " << m_bufferName); autoDestroy(); @@ -60,7 +60,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force return; } } - m_chooser = new ewol::widget::FileChooser(); + m_chooser = ewol::object::makeShared(new ewol::widget::FileChooser()); if (NULL == m_chooser) { APPL_ERROR("Can not allocate widget == > display might be in error"); autoDestroy(); @@ -71,7 +71,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force etk::FSNode tmpName(m_bufferName); m_chooser->setFolder(tmpName.getNameFolder()); m_chooser->setFileName(tmpName.getNameFile()); - ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); + ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); if (tmpWindows == NULL) { APPL_ERROR("Error to get the windows."); autoDestroy(); @@ -82,7 +82,7 @@ appl::WorkerSaveFile::WorkerSaveFile(const std::string& _bufferName, bool _force } appl::WorkerSaveFile::~WorkerSaveFile() { - appl::BufferManager::release(m_bufferManager); + } void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { @@ -99,14 +99,14 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { APPL_ERROR("Try to save an non-existant file :" << m_bufferName); return; } - appl::Buffer* tmpBuffer = m_bufferManager->get(m_bufferName); + ewol::object::Shared tmpBuffer = m_bufferManager->get(m_bufferName); if (tmpBuffer == NULL) { APPL_ERROR("Error to get the buffer : " << m_bufferName); return; } tmpBuffer->setFileName(_msg.getData()); if (tmpBuffer->storeFile() == false) { - ewol::widget::Windows* tmpWindows = ewol::getContext().getWindows(); + ewol::object::Shared tmpWindows = ewol::getContext().getWindows(); if (tmpWindows == NULL) { return; } @@ -117,7 +117,7 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) { } } -void appl::WorkerSaveFile::onObjectRemove(ewol::Object* _removeObject) { +void appl::WorkerSaveFile::onObjectRemove(const ewol::object::Shared& _removeObject) { if (_removeObject == m_chooser) { m_chooser = NULL; APPL_VERBOSE("AutoRemove After closing sub widget ..."); diff --git a/sources/appl/Gui/WorkerSaveFile.h b/sources/appl/Gui/WorkerSaveFile.h index f652515..03c1e6f 100644 --- a/sources/appl/Gui/WorkerSaveFile.h +++ b/sources/appl/Gui/WorkerSaveFile.h @@ -21,11 +21,11 @@ namespace appl { virtual ~WorkerSaveFile(); private: std::string m_bufferName; - ewol::widget::FileChooser* m_chooser; //! pop-up element that is open... - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_chooser; //! pop-up element that is open... + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager public: // derived function virtual void onReceiveMessage(const ewol::object::Message& _msg); - virtual void onObjectRemove(ewol::Object * _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _removeObject); }; }; diff --git a/sources/appl/Highlight.cpp b/sources/appl/Highlight.cpp index f3fb5f7..eff62d9 100644 --- a/sources/appl/Highlight.cpp +++ b/sources/appl/Highlight.cpp @@ -25,19 +25,20 @@ #define HL2_DEBUG APPL_VERBOSE void appl::Highlight::parseRules(exml::Element* _child, - std::vector& _mListPatern, + std::vector>& _mListPatern, int32_t _level) { // Create the patern ... HighlightPattern *myPattern = new HighlightPattern(m_paintingProperties); // parse under Element myPattern->parseRules(_child, _level); // add element in the list - _mListPatern.push_back(myPattern); + _mListPatern.push_back(std::unique_ptr(myPattern)); } appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _colorFile) : ewol::Resource(_xmlFilename), m_typeName("") { + addObjectType("appl::Highlight"); // keep color propertiy file : m_paintingProperties = appl::GlyphPainting::keep(_colorFile); @@ -55,7 +56,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ int32_t level1 = 0; int32_t level2 = 0; // parse all the elements : - for(int32_t iii = 0; iii < root->size(); ++iii) { + for(size_t iii = 0; iii < root->size(); ++iii) { exml::Element* child = root->getElement(iii); if (child == NULL) { // trash here all that is not element ... @@ -69,7 +70,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ } } else if (child->getValue() == "pass1") { // get sub Nodes ... - for(int32_t jjj=0; jjj< child->size(); jjj++) { + for(size_t jjj=0; jjj< child->size(); jjj++) { exml::Element* passChild = child->getElement(jjj); if (passChild == NULL) { continue; @@ -82,7 +83,7 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ } } else if (child->getValue() == "pass2") { // get sub Nodes ... - for(int32_t jjj=0; jjj< child->size(); jjj++) { + for(size_t jjj=0; jjj< child->size(); jjj++) { exml::Element* passChild = child->getElement(jjj); if (passChild == NULL) { continue; @@ -100,24 +101,19 @@ appl::Highlight::Highlight(const std::string& _xmlFilename, const std::string& _ } appl::Highlight::~Highlight() { - // clean all Element - for (int32_t iii = 0; iii < m_listHighlightPass1.size(); ++iii) { - if (m_listHighlightPass1[iii] != NULL) { - delete(m_listHighlightPass1[iii]); - m_listHighlightPass1[iii] = NULL; - } - } // clear the compleate list m_listHighlightPass1.clear(); // clear the compleate list + m_listHighlightPass2.clear(); + // clear the compleate list m_listExtentions.clear(); } bool appl::Highlight::hasExtention(const std::string& _ext) { - for (int32_t iii=0; iiigetName() ); + for (auto &it : m_listHighlightPass1) { + APPL_INFO(" Pass 1 : " << it->getName() ); //m_listHighlightPass1[iii]->display(); } // display all elements - for (int32_t iii=0; iii< m_listHighlightPass2.size(); iii++) { - APPL_INFO(" " << iii << " Pass 2 : " << m_listHighlightPass2[iii]->getName() ); + for (auto &it : m_listHighlightPass2) { + APPL_INFO(" pass 2 : " << it->getName() ); //m_listHighlightPass2[iii]->display(); } } @@ -179,7 +175,7 @@ void appl::Highlight::parse(int64_t _start, while (elementStart <= elementStop) { HL_DEBUG("Parse element in the buffer pos=" << elementStart); //try to fond the HL in ALL of we have - for (int64_t jjj=0; jjj appl::Highlight::keep(const std::string& _filename) { //EWOL_INFO("KEEP : appl::Highlight : file : \"" << _filename << "\""); - appl::Highlight* object = static_cast(getManager().localKeep(_filename)); + ewol::object::Shared object = ewol::dynamic_pointer_cast(getManager().localKeep(_filename)); if (NULL != object) { return object; } EWOL_INFO("CREATE : appl::Highlight : file : \"" << _filename << "\""); // this element create a new one every time .... - object = new appl::Highlight(_filename, "THEME:COLOR:textViewer.json"); + object = ewol::object::makeShared(new appl::Highlight(_filename, "THEME:COLOR:textViewer.json")); if (NULL == object) { EWOL_ERROR("allocation error of a resource : ??Highlight??"); return NULL; } getManager().localAdd(object); return object; - } -void appl::Highlight::release(appl::Highlight*& _object) { - if (NULL == _object) { - return; - } - ewol::Resource* object2 = static_cast(_object); - getManager().release(object2); - _object = NULL; -} diff --git a/sources/appl/Highlight.h b/sources/appl/Highlight.h index 01b9374..a481694 100644 --- a/sources/appl/Highlight.h +++ b/sources/appl/Highlight.h @@ -25,6 +25,7 @@ namespace appl { }; }; +#include #include #include #include @@ -34,11 +35,12 @@ namespace appl { namespace appl { class Highlight : public ewol::Resource { private: - appl::GlyphPainting* m_paintingProperties; + ewol::object::Shared m_paintingProperties; protected: // Constructeur Highlight(const std::string& _xmlFilename, const std::string& _colorFile); - ~Highlight(); + public: + virtual ~Highlight(); private: std::string m_typeName; //!< descriptive string type like "C/C++" public: @@ -60,12 +62,12 @@ namespace appl { etk::Buffer &_buffer); private: void parseRules(exml::Element* _child, - std::vector &_mListPatern, + std::vector> &_mListPatern, int32_t _level); std::string m_styleName; //!< curent style name (like "c++" or "c" or "script Bash") std::vector m_listExtentions; //!< List of possible extention for this high-light, like : ".c", ".cpp", ".h" - std::vector m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer) - std::vector m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) ) + std::vector> m_listHighlightPass1; //!< List of ALL hightlight modules (pass 1 == > when we load and wride data on the buffer) + std::vector> m_listHighlightPass2; //!< List of ALL hightlight modules (pass 2 == > When we display the buffer( only the display area (100 lines)) ) public: /** * @brief keep the resource pointer. @@ -73,12 +75,7 @@ namespace appl { * @param[in] _filename Name of the configuration file. * @return pointer on the resource or NULL if an error occured. */ - static appl::Highlight* keep(const std::string& _filename); - /** - * @brief release the keeped resources - * @param[in,out] reference on the object pointer - */ - static void release(appl::Highlight*& _object); + static ewol::object::Shared keep(const std::string& _filename); public: // herited function : virtual void updateContext() { // no upfate to do ... diff --git a/sources/appl/HighlightManager.cpp b/sources/appl/HighlightManager.cpp index c2c4b68..d926d04 100644 --- a/sources/appl/HighlightManager.cpp +++ b/sources/appl/HighlightManager.cpp @@ -15,14 +15,16 @@ #undef __class__ #define __class__ "highlightManager" -static std::vector& s_list() { - static std::vector list; +// TODO : Review this in a generic unique resource ... + +static std::vector>& s_list() { + static std::vector> list; return list; } void appl::highlightManager::init() { - std::vector& hlList = s_list(); + std::vector>& hlList = s_list(); if (hlList.size() != 0) { APPL_ERROR("HighlightManager == > already exist, just unlink the previous ..."); hlList.clear(); @@ -31,16 +33,16 @@ void appl::highlightManager::init() { etk::FSNode myFile("DATA:languages/"); // get the subfolder list : std::vector list = myFile.folderGetSubList(false, true, false,false); - for (int32_t iii = 0; iii < list.size(); ++iii) { - if (list[iii] == NULL) { + for (auto &it : list) { + if (it == NULL) { continue; } - if (list[iii]->getNodeType() != etk::FSN_FOLDER) { + if (it->getNodeType() != etk::FSN_FOLDER) { continue; } - std::string filename = list[iii]->getName() + "/highlight.xml"; + std::string filename = it->getName() + "/highlight.xml"; APPL_DEBUG("Load xml name : " << filename); - appl::Highlight *myHightLine = appl::Highlight::keep(filename); + ewol::object::Shared myHightLine = appl::Highlight::keep(filename); if (myHightLine != NULL) { hlList.push_back(myHightLine); } else { @@ -49,29 +51,22 @@ void appl::highlightManager::init() { } // display : /* - for (int32_t iii = 0; iii < hlList.size(); ++iii) { - if (hlList[iii] == NULL) { + for (auto &it : hlList) { + if (it == NULL) { continue; } - hlList[iii]->display(); + it->display(); } */ } void appl::highlightManager::unInit() { - std::vector& hlList = s_list(); + std::vector>& hlList = s_list(); if (hlList.size() == 0) { APPL_DEBUG("HighlightManager ==> no highlight"); hlList.clear(); return; } - for (int32_t iii = 0; iii < hlList.size(); ++iii) { - if (hlList[iii] == NULL) { - continue; - } - appl::Highlight::release(hlList[iii]); - hlList[iii] = NULL; - } hlList.clear(); } @@ -80,16 +75,16 @@ std::string appl::highlightManager::getTypeExtention(const std::string& _extenti return ""; } APPL_DEBUG("Try to find type for extention : '" << _extention << "' in " << s_list().size() << " types"); - std::vector& hlList = s_list(); - for (int32_t iii = 0; iii < hlList.size(); ++iii) { - if (hlList[iii] == NULL) { + std::vector>& hlList = s_list(); + for (auto &it : hlList) { + if (it == NULL) { continue; } - APPL_DEBUG(" check : " << hlList[iii]->getTypeName()); - if (hlList[iii]->hasExtention(_extention) == true) { + APPL_DEBUG(" check : " << it->getTypeName()); + if (it->hasExtention(_extention) == true) { APPL_DEBUG("Find type for extention : " << _extention - << " type : " << hlList[iii]->getTypeName()); - return hlList[iii]->getTypeName(); + << " type : " << it->getTypeName()); + return it->getTypeName(); } } return ""; @@ -99,13 +94,12 @@ std::string appl::highlightManager::getFileWithTypeType(const std::string& _type if (_type.size() == 0) { return ""; } - std::vector& hlList = s_list(); - for (int32_t iii = 0; iii < hlList.size(); ++iii) { - if (hlList[iii] == NULL) { + for (auto &it : s_list()) { + if (it == NULL) { continue; } - if (hlList[iii]->getTypeName() == _type) { - return hlList[iii]->getName(); + if (it->getTypeName() == _type) { + return it->getName(); } } return ""; diff --git a/sources/appl/HighlightPattern.cpp b/sources/appl/HighlightPattern.cpp index 4767602..cf50768 100644 --- a/sources/appl/HighlightPattern.cpp +++ b/sources/appl/HighlightPattern.cpp @@ -13,27 +13,20 @@ #undef __class__ #define __class__ "HighlightPattern" -appl::HighlightPattern::HighlightPattern(appl::GlyphPainting*& _glyphPainting) : +appl::HighlightPattern::HighlightPattern(const ewol::object::Shared& _glyphPainting) : m_glyphPainting(_glyphPainting), m_paternName(""), - m_regExpStart(NULL), - m_regExpStop(NULL), + m_regExpStart(nullptr), + m_regExpStop(nullptr), m_colorName(""), m_escapeChar(u32char::Null), m_multiline(false), m_level(0) { - m_regExpStart = new etk::RegExp(); + m_regExpStart = std::unique_ptr>(new etk::RegExp()); } appl::HighlightPattern::~HighlightPattern() { - if (m_regExpStart != NULL) { - delete(m_regExpStart); - m_regExpStart = NULL; - } - if (m_regExpStop != NULL) { - delete(m_regExpStop); - m_regExpStop = NULL; - } + } void appl::HighlightPattern::setPaternStart(std::string& _regExp) { @@ -44,12 +37,9 @@ void appl::HighlightPattern::setPaternStart(std::string& _regExp) { } void appl::HighlightPattern::setPaternStop(std::string& _regExp) { - if (m_regExpStop != NULL) { - delete(m_regExpStop); - m_regExpStop = NULL; - } + m_regExpStop.reset(); if (_regExp.size() != 0) { - m_regExpStop = new etk::RegExp(); + m_regExpStop = std::unique_ptr>(new etk::RegExp()); if (m_regExpStop != NULL) { m_regExpStop->compile(_regExp); } else { diff --git a/sources/appl/HighlightPattern.h b/sources/appl/HighlightPattern.h index fd8a702..4611254 100644 --- a/sources/appl/HighlightPattern.h +++ b/sources/appl/HighlightPattern.h @@ -29,11 +29,11 @@ enum resultFind { namespace appl { class HighlightPattern { private: - appl::GlyphPainting*& m_glyphPainting; + ewol::object::Shared m_glyphPainting; public: // Constructeur - HighlightPattern(appl::GlyphPainting*& _glyphPainting); - ~HighlightPattern(); + HighlightPattern(const ewol::object::Shared& _glyphPainting); + virtual ~HighlightPattern(); private: std::string m_paternName; //!< Current style name (like "c++" or "c" or "script Bash") public: @@ -44,11 +44,11 @@ namespace appl { return m_paternName; }; private: - etk::RegExp* m_regExpStart; //!< Start of Regular expression + std::unique_ptr> m_regExpStart; //!< Start of Regular expression public: void setPaternStart(std::string& _regExp); private: - etk::RegExp* m_regExpStop; //!< Stop of Regular Expression + std::unique_ptr> m_regExpStop; //!< Stop of Regular Expression public: void setPaternStop(std::string& _regExp); private: diff --git a/sources/appl/TextPlugin.cpp b/sources/appl/TextPlugin.cpp index 4458569..359b725 100644 --- a/sources/appl/TextPlugin.cpp +++ b/sources/appl/TextPlugin.cpp @@ -23,7 +23,7 @@ appl::TextViewerPlugin::TextViewerPlugin() : m_activateOnRemove(false), m_activateOnReceiveMessage(false), m_activateOnCursorMove(false) { - + addObjectType("appl::TextViewerPlugin"); } appl::TextViewerPlugin::~TextViewerPlugin() { diff --git a/sources/appl/TextPlugin.h b/sources/appl/TextPlugin.h index a3627b2..98461a7 100644 --- a/sources/appl/TextPlugin.h +++ b/sources/appl/TextPlugin.h @@ -186,8 +186,8 @@ namespace appl { * @param[in] _msg Generic message. * @return true if the event might not propagate anymore */ - virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg) { + virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg) { return false; } protected: diff --git a/sources/appl/TextPluginAutoIndent.cpp b/sources/appl/TextPluginAutoIndent.cpp index d6ea185..1cfb982 100644 --- a/sources/appl/TextPluginAutoIndent.cpp +++ b/sources/appl/TextPluginAutoIndent.cpp @@ -17,6 +17,7 @@ appl::TextPluginAutoIndent::TextPluginAutoIndent() { m_activateOnEventEntry = true; + addObjectType("appl::TextPluginAutoIndent"); } bool appl::TextPluginAutoIndent::onEventEntry(appl::TextViewer& _textDrawer, diff --git a/sources/appl/TextPluginAutoIndent.h b/sources/appl/TextPluginAutoIndent.h index c95f632..df7d6e5 100644 --- a/sources/appl/TextPluginAutoIndent.h +++ b/sources/appl/TextPluginAutoIndent.h @@ -19,7 +19,7 @@ namespace appl { class TextPluginAutoIndent : public appl::TextViewerPlugin { public: TextPluginAutoIndent(); - ~TextPluginAutoIndent() { + virtual ~TextPluginAutoIndent() { // nothing to do ... }; public: diff --git a/sources/appl/TextPluginCopy.cpp b/sources/appl/TextPluginCopy.cpp index 439c908..a5b1641 100644 --- a/sources/appl/TextPluginCopy.cpp +++ b/sources/appl/TextPluginCopy.cpp @@ -17,6 +17,7 @@ appl::TextPluginCopy::TextPluginCopy() { m_activateOnReceiveMessage = true; + addObjectType("appl::TextPluginCopy"); } void appl::TextPluginCopy::onPluginEnable(appl::TextViewer& _textDrawer) { @@ -33,8 +34,8 @@ void appl::TextPluginCopy::onPluginDisable(appl::TextViewer& _textDrawer) { // TODO : unknow function ... } -bool appl::TextPluginCopy::onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg) { +bool appl::TextPluginCopy::onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg) { if (isEnable() == false) { return false; } diff --git a/sources/appl/TextPluginCopy.h b/sources/appl/TextPluginCopy.h index 3a88432..03ef08f 100644 --- a/sources/appl/TextPluginCopy.h +++ b/sources/appl/TextPluginCopy.h @@ -19,13 +19,13 @@ namespace appl { class TextPluginCopy : public appl::TextViewerPlugin { public: TextPluginCopy(); - ~TextPluginCopy() { + virtual ~TextPluginCopy() { // nothing to do ... }; public: virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer); - virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg); + virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, const ewol::object::Message& _msg); }; }; diff --git a/sources/appl/TextPluginCtags.cpp b/sources/appl/TextPluginCtags.cpp index 202e84b..9ad1d6a 100644 --- a/sources/appl/TextPluginCtags.cpp +++ b/sources/appl/TextPluginCtags.cpp @@ -19,15 +19,16 @@ appl::TextPluginCtags::TextPluginCtags() : - m_tagFilename(""), m_tagFolderBase(""), + m_tagFilename(""), m_ctagFile(NULL) { m_activateOnReceiveMessage = true; // load buffer manager: m_bufferManager = appl::BufferManager::keep(); + addObjectType("appl::TextPluginCtags"); } appl::TextPluginCtags::~TextPluginCtags() { - appl::BufferManager::release(m_bufferManager); + } const char* eventJumpDestination = "event-plugin-ctags-jump-destination"; @@ -78,7 +79,7 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) { if (tagsFindNext (m_ctagFile, &entry) == TagSuccess) { APPL_INFO("Multiple file destination ..."); - appl::TagFileSelection* tmpWidget = new appl::TagFileSelection(); + ewol::object::Shared tmpWidget = ewol::object::makeShared(new appl::TagFileSelection()); if (NULL == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); } else { @@ -167,14 +168,14 @@ void appl::TextPluginCtags::onReceiveMessage(const ewol::object::Message& _msg) jumpFile(tmp, lineID - 1); } } -bool appl::TextPluginCtags::onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg) { +bool appl::TextPluginCtags::onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg) { if (isEnable() == false) { return false; } if (_msg.getMessage() == eventOpenCtagsFile) { APPL_INFO("Request opening ctag file"); - ewol::widget::FileChooser* tmpWidget = new ewol::widget::FileChooser(); + ewol::object::Shared tmpWidget = ewol::object::makeShared(new ewol::widget::FileChooser()); if (NULL == tmpWidget) { APPL_ERROR("Can not allocate widget == > display might be in error"); return true; diff --git a/sources/appl/TextPluginCtags.h b/sources/appl/TextPluginCtags.h index 1aa479d..ba7eafb 100644 --- a/sources/appl/TextPluginCtags.h +++ b/sources/appl/TextPluginCtags.h @@ -33,15 +33,15 @@ namespace appl { void printTag(const tagEntry *_entry); void jumpTo(const std::string& _name); void jumpFile(const std::string& _filename, int64_t _lineId); - appl::BufferManager* m_bufferManager; //!< handle on the buffer manager + ewol::object::Shared m_bufferManager; //!< handle on the buffer manager public: TextPluginCtags(); - ~TextPluginCtags(); + virtual ~TextPluginCtags(); public: virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer); - virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg); + virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg); // internal message : virtual void onReceiveMessage(const ewol::object::Message& _msg); }; diff --git a/sources/appl/TextPluginData.h b/sources/appl/TextPluginData.h index 0766786..ca83194 100644 --- a/sources/appl/TextPluginData.h +++ b/sources/appl/TextPluginData.h @@ -20,6 +20,7 @@ namespace appl { public: TextViewerPluginData() { // nothing to do ... + addObjectType("appl::TextViewerPluginData"); } virtual ~TextViewerPluginData() { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { @@ -32,7 +33,7 @@ namespace appl { m_specificData.clear(); } private: - std::vector> m_specificData; + std::vector ,TYPE* >> m_specificData; protected: TYPE* getDataRef(appl::TextViewer& _textDrawer) { for (size_t iii = 0; iii < m_specificData.size() ; ++iii) { @@ -49,13 +50,13 @@ namespace appl { return data; } protected: // Wrap all element with their internal data: (do not use theses function) - bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg) { + bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg) { TYPE* data = getDataRef(_textDrawer); if (data == NULL) { return false; } - return onReceiveMessage(_textDrawer, _msg, *data); + return onReceiveMessageViewer(_textDrawer, _msg, *data); } bool onWrite(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, @@ -87,9 +88,9 @@ namespace appl { } public: - virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg, - TYPE& _data) { + virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg, + TYPE& _data) { return false; } virtual bool onWrite(appl::TextViewer& _textDrawer, @@ -115,8 +116,14 @@ namespace appl { return; }; public: - virtual void onObjectRemove(ewol::Object* _removeObject) { - // TODO : plop + virtual void onObjectRemove(const ewol::object::Shared& _object) { + appl::TextViewerPlugin::onObjectRemove(_object); + for (auto it(m_specificData.begin()); it != m_specificData.end(); ++it) { + if (it->first == _object) { + m_specificData.erase(it); + it = m_specificData.begin(); + } + } }; }; }; diff --git a/sources/appl/TextPluginHistory.cpp b/sources/appl/TextPluginHistory.cpp index 00bcf4c..69e1869 100644 --- a/sources/appl/TextPluginHistory.cpp +++ b/sources/appl/TextPluginHistory.cpp @@ -20,6 +20,7 @@ appl::TextPluginHistory::TextPluginHistory() { m_activateOnWrite = true; m_activateOnReplace = true; m_activateOnRemove = true; + addObjectType("appl::TextPluginHistory"); } void appl::TextPluginHistory::onPluginEnable(appl::TextViewer& _textDrawer) { @@ -34,9 +35,9 @@ void appl::TextPluginHistory::onPluginDisable(appl::TextViewer& _textDrawer) { // TODO : unknow function ... } -bool appl::TextPluginHistory::onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg, - appl::PluginHistoryData& _data) { +bool appl::TextPluginHistory::onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg, + appl::PluginHistoryData& _data) { if (isEnable() == false) { return false; } @@ -176,7 +177,8 @@ bool appl::TextPluginHistory::onRemove(appl::TextViewer& _textDrawer, } -void appl::TextPluginHistory::onObjectRemove(ewol::Object* _removeObject) { +void appl::TextPluginHistory::onObjectRemove(const ewol::object::Shared& _object) { + appl::TextViewerPluginData::onObjectRemove(_object); // TODO : Dependence with buffer removing ... } diff --git a/sources/appl/TextPluginHistory.h b/sources/appl/TextPluginHistory.h index 33922d7..e77d400 100644 --- a/sources/appl/TextPluginHistory.h +++ b/sources/appl/TextPluginHistory.h @@ -43,9 +43,9 @@ namespace appl { public: virtual void onPluginEnable(appl::TextViewer& _textDrawer); virtual void onPluginDisable(appl::TextViewer& _textDrawer); - virtual bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg, - appl::PluginHistoryData& _data); + virtual bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg, + appl::PluginHistoryData& _data); virtual bool onWrite(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const std::string& _strData, @@ -67,7 +67,7 @@ namespace appl { void clearRedo(appl::PluginHistoryData& _data); void clearUndo(appl::PluginHistoryData& _data); public: - virtual void onObjectRemove(ewol::Object* _removeObject); + virtual void onObjectRemove(const ewol::object::Shared& _object); }; }; diff --git a/sources/appl/TextPluginManager.cpp b/sources/appl/TextPluginManager.cpp index d906f58..042f61d 100644 --- a/sources/appl/TextPluginManager.cpp +++ b/sources/appl/TextPluginManager.cpp @@ -19,36 +19,36 @@ #undef __class__ #define __class__ "textPluginManager" -static std::vector& getList() { - static std::vector s_list; +static std::list>& getList() { + static std::list> s_list; return s_list; } -static std::vector& getListOnEventEntry() { - static std::vector s_list; +static std::vector>& getListOnEventEntry() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnEventInput() { - static std::vector s_list; +static std::vector>& getListOnEventInput() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnWrite() { - static std::vector s_list; +static std::vector>& getListOnWrite() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnReplace() { - static std::vector s_list; +static std::vector>& getListOnReplace() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnRemove() { - static std::vector s_list; +static std::vector>& getListOnRemove() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnReceiveMessage() { - static std::vector s_list; +static std::vector>& getListonReceiveMessageViewer() { + static std::vector> s_list; return s_list; } -static std::vector& getListOnCursorMove() { - static std::vector s_list; +static std::vector>& getListOnCursorMove() { + static std::vector> s_list; return s_list; } @@ -63,30 +63,22 @@ void appl::textPluginManager::unInit() { getListOnWrite().clear(); getListOnReplace().clear(); getListOnRemove().clear(); - getListOnReceiveMessage().clear(); + getListonReceiveMessageViewer().clear(); getListOnCursorMove().clear(); - // remove all plugin: - for (int32_t iii=0; iii& _plugin) { if (_plugin == NULL) { return; } @@ -107,7 +99,7 @@ void appl::textPluginManager::addPlugin(appl::TextViewerPlugin* _plugin) { getListOnRemove().push_back(_plugin); } if (_plugin->isAvaillableOnReceiveMessage() == true) { - getListOnReceiveMessage().push_back(_plugin); + getListonReceiveMessageViewer().push_back(_plugin); } if (_plugin->isAvaillableOnCursorMove() == true) { getListOnCursorMove().push_back(_plugin); @@ -115,31 +107,30 @@ void appl::textPluginManager::addPlugin(appl::TextViewerPlugin* _plugin) { } void appl::textPluginManager::connect(appl::TextViewer& _widget) { - for (int32_t iii=0; iiionPluginEnable(_widget); + it->onPluginEnable(_widget); } } void appl::textPluginManager::disconnect(appl::TextViewer& _widget) { - for (int32_t iii=0; iiionPluginDisable(_widget); + it->onPluginDisable(_widget); } } bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, const ewol::event::Entry& _event) { - std::vector& list = getListOnEventEntry(); - for (int32_t iii=0; iiionEventEntry(_textDrawer, _event) == true ) { + if (it->onEventEntry(_textDrawer, _event) == true ) { return true; } } @@ -148,12 +139,11 @@ bool appl::textPluginManager::onEventEntry(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer, const ewol::event::Input& _event) { - std::vector& list = getListOnEventInput(); - for (int32_t iii=0; iiionEventInput(_textDrawer, _event) == true ) { + if (it->onEventInput(_textDrawer, _event) == true ) { return true; } } @@ -163,12 +153,11 @@ bool appl::textPluginManager::onEventInput(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onWrite(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const std::string& _data) { - std::vector& list = getListOnWrite(); - for (int32_t iii=0; iiionWrite(_textDrawer, _pos, _data) == true ) { + if (it->onWrite(_textDrawer, _pos, _data) == true ) { return true; } } @@ -179,12 +168,11 @@ bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const std::string& _data, const appl::Buffer::Iterator& _posEnd) { - std::vector& list = getListOnReplace(); - for (int32_t iii=0; iiionReplace(_textDrawer, _pos, _data, _posEnd) == true ) { + if (it->onReplace(_textDrawer, _pos, _data, _posEnd) == true ) { return true; } } @@ -194,26 +182,24 @@ bool appl::textPluginManager::onReplace(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onRemove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { - std::vector& list = getListOnRemove(); - for (int32_t iii=0; iiionRemove(_textDrawer, _pos, _posEnd) == true ) { + if (it->onRemove(_textDrawer, _pos, _posEnd) == true ) { return true; } } return false; } -bool appl::textPluginManager::onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg) { - std::vector& list = getListOnReceiveMessage(); - for (int32_t iii=0; iiionReceiveMessage(_textDrawer, _msg) == true ) { + if (it->onReceiveMessageViewer(_textDrawer, _msg) == true ) { return true; } } @@ -222,12 +208,11 @@ bool appl::textPluginManager::onReceiveMessage(appl::TextViewer& _textDrawer, bool appl::textPluginManager::onCursorMove(appl::TextViewer& _textDrawer, const appl::Buffer::Iterator& _pos) { - std::vector& list = getListOnCursorMove(); - for (int32_t iii=0; iiionCursorMove(_textDrawer, _pos) == true ) { + if (it->onCursorMove(_textDrawer, _pos) == true ) { return true; } } diff --git a/sources/appl/TextPluginManager.h b/sources/appl/TextPluginManager.h index 1230206..85393a9 100644 --- a/sources/appl/TextPluginManager.h +++ b/sources/appl/TextPluginManager.h @@ -33,7 +33,7 @@ namespace appl { * @brief Add a plugin. * @param[in] _plugin Plugin pointer to add. */ - void addPlugin(appl::TextViewerPlugin* _plugin); + void addPlugin(const ewol::object::Shared& _plugin); /** * @brief connect a new widget to the plugin. * @param[in] _widget Reference on the widget caller. @@ -98,8 +98,8 @@ namespace appl { * @param[in] _msg Generic message. * @return true if the event might not propagate anymore */ - bool onReceiveMessage(appl::TextViewer& _textDrawer, - const ewol::object::Message& _msg); + bool onReceiveMessageViewer(appl::TextViewer& _textDrawer, + const ewol::object::Message& _msg); /** * @brief Called when Cursor move of position. * @param[in] _widget Reference on the widget caller. diff --git a/sources/appl/TextPluginMultiLineTab.cpp b/sources/appl/TextPluginMultiLineTab.cpp index a4f0798..ed1e322 100644 --- a/sources/appl/TextPluginMultiLineTab.cpp +++ b/sources/appl/TextPluginMultiLineTab.cpp @@ -16,6 +16,7 @@ appl::TextPluginMultiLineTab::TextPluginMultiLineTab() { m_activateOnEventEntry = true; + addObjectType("appl::TextPluginMultiLineTab"); } bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, @@ -47,22 +48,22 @@ bool appl::TextPluginMultiLineTab::onEventEntry(appl::TextViewer& _textDrawer, _textDrawer.copy(data, itStart, itStop); // TODO : Change this ... bool m_useTabs = true; - int32_t m_tabDist = 4; + size_t m_tabDist = 4; if (true == _event.getSpecialKey().getShift() ) { // un-indent data.insert(0, 1, u32char::Return); - for (int32_t iii=1; iii bufferManager = NULL; /** * @brief main application function initialisation @@ -84,9 +84,9 @@ bool APP_Init(ewol::Context& _context, size_t _initId, size_t& _nbInitStep) { cCurrentPath[FILENAME_MAX - 1] = '\0'; //APPL_INFO("The current working directory is " << cCurrentPath); - MainWindows* basicWindows = new MainWindows(); + ewol::object::Shared basicWindows = ewol::object::makeShared(new MainWindows()); - if (NULL == basicWindows) { + if (basicWindows == nullptr) { APPL_ERROR("Can not allocate the basic windows"); _context.stop(); return false; @@ -126,24 +126,11 @@ bool APP_Init(ewol::Context& _context, size_t _initId, size_t& _nbInitStep) { */ void APP_UnInit(ewol::Context& _context) { APPL_INFO(" == > Un-Init " PROJECT_NAME " (START)"); - ewol::widget::Windows* tmpWindows = _context.getWindows(); - - _context.setWindows(NULL); - - if (NULL != tmpWindows) { - delete(tmpWindows); - tmpWindows = NULL; - } appl::textPluginManager::unInit(); - APPL_INFO("Stop Hightlight"); appl::highlightManager::unInit(); //Kill all singleton - if (bufferManager != NULL) { - APPL_INFO("Stop BufferManager"); - appl::BufferManager::release(bufferManager); - bufferManager = NULL; - } + bufferManager.reset(); APPL_INFO(" == > Un-Init " PROJECT_NAME " (END)"); } diff --git a/sources/lutin_edn.py b/sources/lutin_edn.py index 3113b6b..33c41ed 100755 --- a/sources/lutin_edn.py +++ b/sources/lutin_edn.py @@ -12,6 +12,7 @@ def create(target): # module name is 'edn' and type binary. myModule = module.Module(__file__, 'edn', 'PACKAGE') + myModule.add_extra_compile_flags() # add the file to compile: myModule.add_src_file([ 'appl/ctags/readtags.cpp']) diff --git a/sources/tag b/sources/tag index 8428158..867e524 100644 --- a/sources/tag +++ b/sources/tag @@ -1 +1 @@ -1.1.2 \ No newline at end of file +1.2.0 \ No newline at end of file