[DEV] start rework on shared pointer

This commit is contained in:
Edouard DUPIN 2014-05-20 21:35:41 +02:00
parent 304ac2ba45
commit 08261def10
19 changed files with 86 additions and 148 deletions

View File

@ -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::Buffer> appl::BufferManager::createNewBuffer() {
ewol::object::Shared<appl::Buffer> tmp = ewol::object::makeShared(new appl::Buffer());
if (tmp == NULL) {
APPL_ERROR("Can not allocate the Buffer (empty).");
return NULL;
@ -51,7 +40,7 @@ appl::Buffer* appl::BufferManager::createNewBuffer() {
return tmp;
}
appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) {
ewol::object::Shared<appl::Buffer> 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) {
@ -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<appl::Buffer> tmp = ewol::object::makeShared(new appl::Buffer());
if (tmp == NULL) {
APPL_ERROR("Can not allocate the Buffer class : " << _fileName);
return NULL;
@ -78,12 +67,12 @@ 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<appl::Buffer> _bufferSelected) {
m_bufferSelected = _bufferSelected;
sendMultiCast(appl::MsgSelectChange, "");
}
void appl::BufferManager::onObjectRemove(ewol::Object * _removeObject) {
void appl::BufferManager::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
if (m_bufferSelected == _removeObject) {
setBufferSelected(NULL);
}
@ -123,15 +112,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<appl::BufferManager*>(getManager().localKeep("???BufferManager???"));
ewol::object::Shared<appl::BufferManager> appl::BufferManager::keep() {
ewol::object::Shared<appl::BufferManager> object = ewol::dynamic_pointer_cast<appl::BufferManager>(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 +128,3 @@ appl::BufferManager* appl::BufferManager::keep() {
return object;
}
void appl::BufferManager::release(appl::BufferManager*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@ -18,9 +18,10 @@ namespace appl {
class BufferManager : public ewol::Resource {
protected:
BufferManager();
public:
~BufferManager();
private:
std::vector<appl::Buffer*> m_list; // list of all buffer curently open
std::vector<ewol::object::Owner<appl::Buffer>> m_list; // list of all buffer curently open
public:
/**
* @brief Get a specific buffer with his name (can create a new buffer).
@ -28,7 +29,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<appl::Buffer> 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 +53,32 @@ namespace appl {
* @param[in] _id Number of buffer
* @return pointer on the buffer
*/
appl::Buffer* get(int32_t _id) {
ewol::object::Shared<appl::Buffer> get(int32_t _id) {
return m_list[_id];
}
/**
* @brief Create a new buffer empty.
* @return Created buffer or NULL.
*/
appl::Buffer* createNewBuffer();
ewol::object::Shared<appl::Buffer> createNewBuffer();
private:
appl::Buffer* m_bufferSelected;
ewol::object::Shared<appl::Buffer> 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<appl::Buffer> _bufferSelected);
/**
* @brief Get the current buffer selected
* @return Pointer on the buffer selected
*/
appl::Buffer* getBufferSelected() {
ewol::object::Shared<appl::Buffer> 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<ewol::Object>& _removeObject);
public: // resource manager
/**
* @brief keep the resource pointer.
@ -85,12 +86,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<appl::BufferManager> keep();
};
};

View File

@ -95,15 +95,15 @@ int32_t appl::GlyphPainting::request(const std::string& _name) {
return m_list.size()-1;
}
appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) {
ewol::object::Shared<appl::GlyphPainting> appl::GlyphPainting::keep(const std::string& _filename) {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::GlyphPainting* object = static_cast<appl::GlyphPainting*>(getManager().localKeep(_filename));
ewol::object::Shared<appl::GlyphPainting> object = ewol::dynamic_pointer_cast<appl::GlyphPainting>(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<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@ -20,6 +20,7 @@ namespace appl {
std::vector<appl::GlyphDecoration> 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<appl::GlyphPainting> keep(const std::string& _filename);
};
};

View File

@ -75,9 +75,6 @@ void BufferView::removeAllElement() {
}
}
m_list.clear();
if (m_bufferManager != NULL) {
appl::BufferManager::release(m_bufferManager);
}
}
void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) {
@ -110,7 +107,7 @@ void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _sel
void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::List::onReceiveMessage(_msg);
if (_msg.getMessage() == appl::MsgSelectNewFile) {
appl::Buffer* buffer = m_bufferManager->get(_msg.getData());
ewol::object::Shared<appl::Buffer> buffer = m_bufferManager->get(_msg.getData());
if (buffer == NULL) {
APPL_ERROR("event on element nor exist : " << _msg.getData());
return;
@ -162,7 +159,7 @@ 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<appl::Buffer> tmpBuffer;
if (m_bufferManager != NULL) {
tmpBuffer = m_bufferManager->getBufferSelected();
}
@ -221,7 +218,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
}
}
void BufferView::onObjectRemove(ewol::Object* _removeObject) {
void BufferView::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::widget::List::onObjectRemove(_removeObject);
for (int32_t iii=0; iii<m_list.size(); iii++) {
if (m_list[iii] == NULL) {

View File

@ -21,8 +21,8 @@ namespace appl
{
public:
etk::FSNode m_bufferName;
appl::Buffer* m_buffer;
dataBufferStruct(const std::string& _bufferName, appl::Buffer* _buffer) :
ewol::object::Shared<appl::Buffer> m_buffer;
dataBufferStruct(const std::string& _bufferName, const ewol::object::Shared<appl::Buffer>& _buffer) :
m_bufferName(_bufferName),
m_buffer(_buffer) {
@ -34,9 +34,9 @@ namespace appl
class BufferView : public ewol::widget::List
{
private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager
ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property
ewol::object::Shared<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground1;
int32_t m_colorBackground2;
int32_t m_colorBackgroundSelect;
@ -57,7 +57,7 @@ class BufferView : public ewol::widget::List
~BufferView();
// Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object* _removeObject);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
private:
bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order
protected:

View File

@ -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<ewol::widget::Spacer> 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<br/>";
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
tmpLabel += "</left>";
ewol::widget::Label* myLabel = new ewol::widget::Label(tmpLabel);
ewol::object::Shared<ewol::widget::Label> myLabel = ewol::object::makeShared(new ewol::widget::Label(tmpLabel));
if (NULL == myLabel) {
APPL_ERROR("Can not allocate widget == > display might be in error");
} else {
@ -264,7 +264,7 @@ MainWindows::MainWindows() {
MainWindows::~MainWindows() {
appl::BufferManager::release(m_bufferManager);
}
@ -290,7 +290,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<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != NULL) {
etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->setFolder(tmpFile.getNameFolder());
@ -371,7 +371,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<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) {
setTitle("Edn");
if (m_widgetLabelFileName != NULL) {
@ -421,7 +421,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<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
@ -440,7 +440,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<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
@ -451,7 +451,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<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) {
APPL_ERROR("Error to get the buffer : " << _msg.getData());
return;
@ -462,7 +462,7 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
return;
}
void MainWindows::saveAsPopUp(appl::Buffer* _buffer) {
void MainWindows::saveAsPopUp(const ewol::object::Shared<appl::Buffer>& _buffer) {
if (_buffer == NULL) {
APPL_ERROR("Call With NULL input...");
return;
@ -470,7 +470,7 @@ 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<appl::Buffer>& _buffer) {
if (_buffer == NULL) {
APPL_ERROR("Call With NULL input...");
return;
@ -506,7 +506,7 @@ void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) {
popUpWidgetPush(tmpPopUp);
}
void MainWindows::onObjectRemove(const ewol::object::Shared<ewol::Object> _removeObject) {
void MainWindows::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
ewol::widget::Windows::onObjectRemove(_removeObject);
if (m_widgetLabelFileName == _removeObject) {
m_widgetLabelFileName = NULL;

View File

@ -25,20 +25,20 @@ class MainWindows : public ewol::widget::Windows {
MainWindows();
~MainWindows();
private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager
ewol::object::Shared<appl::BufferManager> 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<appl::Buffer>& _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<appl::Buffer>& _buffer);
public: // Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object> _removeObject);
virtual void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
};

View File

@ -64,7 +64,7 @@ Search::Search() :
}
Search::~Search() {
appl::ViewerManager::release(m_viewerManager);
}
void Search::find() {
@ -165,13 +165,13 @@ void Search::onReceiveMessage(const ewol::object::Message& _msg) {
void Search::onObjectRemove(const ewol::object::Shared<ewol::Object> _removeObject) {
ewol::widget::Composer::onObjectRemove(_removeObject);
if (_removeObject == m_searchEntry) {
m_searchEntry = NULL;
m_searchEntry.reset();
}
if (_removeObject == m_replaceEntry) {
m_replaceEntry = NULL;
m_replaceEntry.reset();
}
if (_removeObject == m_viewerManager) {
m_viewerManager = NULL;
m_viewerManager.reset();
}
}

View File

@ -17,7 +17,7 @@
class Search : public ewol::widget::Composer {
private:
appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager
ewol::object::Shared<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
bool m_forward;
bool m_caseSensitive;
bool m_wrap;

View File

@ -38,7 +38,7 @@ appl::TagFileList::~TagFileList() {
delete(m_list[iii]);
m_list[iii] = NULL;
}
ewol::resource::ColorFile::release(m_colorProperty);
}
etk::Color<> appl::TagFileList::getBasicBG() {

View File

@ -37,7 +37,7 @@ namespace appl {
int32_t m_selectedLine;
std::vector<appl::TagListElement*> m_list;
protected:
ewol::resource::ColorFile* m_colorProperty; //!< theme color property.
ewol::object::Shared<ewol::resource::ColorFile> 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.

View File

@ -35,9 +35,9 @@ appl::TagFileSelection::TagFileSelection() {
addEventId(applEventctagsSelection);
addEventId(applEventctagsCancel);
ewol::widget::Label* myWidgetTitle = NULL;
ewol::object::Shared<ewol::widget::Label> myWidgetTitle;
ewol::widget::Sizer * mySizerVert = NULL;
ewol::object::Shared<ewol::widget::Sizer> 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<ewol::widget::Composer> compose = ewol::object::makeShared(new ewol::widget::Composer(ewol::widget::Composer::String,
"<sizer mode=\"hori\" expand=\"true,false\" lock=\"false,true\">\n"
" <spacer expand=\"true,false\"/>\n"
" <button name=\"PLUGIN-CTAGS-jump\" expand=\"false\" fill=\"true\">"
@ -69,14 +69,14 @@ appl::TagFileSelection::TagFileSelection() {
" <label>Cancel</label>\n"
" </sizer>\n"
" </button>\n"
"</sizer>\n");
"</sizer>\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(const ewol::object::Shared<ewol::Object> _removeObject) {
void appl::TagFileSelection::onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject) {
// First step call parrent :
ewol::widget::PopUp::onObjectRemove(_removeObject);
// second step find if in all the elements ...

View File

@ -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<appl::TagFileList> 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(const ewol::object::Shared<ewol::Object> _removeObject);
void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
};
};

View File

@ -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() {

View File

@ -24,7 +24,7 @@
namespace appl {
class TextViewer : public ewol::widget::WidgetScrolled {
private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property
ewol::object::Shared<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground;
int32_t m_colorSpace;
int32_t m_colorTabulation;
@ -39,19 +39,19 @@ namespace appl {
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<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)
public:
/**
* @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData)
* @return pointer on buffer
*/
appl::Buffer* internalGetBuffer() {
ewol::object::Shared<appl::Buffer> internalGetBuffer() {
return m_buffer;
}
private:
ewol::compositing::Text m_displayText; //!< Text display properties.
ewol::compositing::Drawing m_displayDrawing; //!< Other diaplay requested.
std::vector<std::pair<appl::Buffer*, vec2>> m_drawingRemenber;
std::vector<std::pair<ewol::object::Shared<appl::Buffer>, vec2>> m_drawingRemenber;
public:
void setFontSize(int32_t _size);
void setFontName(const std::string& _fontName);
@ -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);
}
};

View File

@ -26,14 +26,14 @@ appl::ViewerManager::ViewerManager() :
}
appl::ViewerManager::~ViewerManager() {
appl::BufferManager::release(m_bufferManager);
}
bool appl::ViewerManager::isLastSelected(ewol::object::Shared<appl::TextViewer> _viewer) {
bool appl::ViewerManager::isLastSelected(const ewol::object::Shared<appl::TextViewer>& _viewer) {
return m_viewer == _viewer;
}
void appl::ViewerManager::setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, appl::Buffer* _buffer) {
void appl::ViewerManager::setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, const ewol::object::Shared<appl::Buffer>& _buffer) {
if (m_viewer == _viewer) {
return;
}
@ -55,15 +55,15 @@ void appl::ViewerManager::onObjectRemove(const ewol::object::Shared<ewol::Object
}
}
appl::ViewerManager* appl::ViewerManager::keep() {
ewol::object::Shared<appl::ViewerManager> appl::ViewerManager::keep() {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::ViewerManager* object = static_cast<appl::ViewerManager*>(getManager().localKeep("???ViewerManager???"));
ewol::object::Shared<appl::ViewerManager> object = ewol::dynamic_pointer_cast<appl::ViewerManager>(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;
@ -71,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<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@ -20,16 +20,17 @@ namespace appl {
class ViewerManager : public ewol::Resource {
protected:
ViewerManager();
public:
~ViewerManager();
private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager
ewol::object::Shared<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
ewol::object::Shared<appl::TextViewer> m_viewer;
public:
/**
* @brief Set the current buffer selected
* @param[in] _viewer Pointer on the viewer selected
*/
void setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, appl::Buffer* _buffer);
void setViewerSelected(const ewol::object::Shared<appl::TextViewer>& _viewer, const ewol::object::Shared<appl::Buffer>& _buffer);
/**
* @brief Get the current buffer selected
* @return Pointer on the buffer selected
@ -42,7 +43,7 @@ namespace appl {
* @param[in] _viewer element selected.
* @return true if the element is selected
*/
bool isLastSelected(ewol::object::Shared<appl::TextViewer> _viewer);
bool isLastSelected(const ewol::object::Shared<appl::TextViewer>& _viewer);
public: // herited function
void onReceiveMessage(const ewol::object::Message& _msg);
void onObjectRemove(const ewol::object::Shared<ewol::Object>& _removeObject);
@ -53,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<appl::ViewerManager> keep();
};
};

View File

@ -37,7 +37,7 @@ int main(int _argc, const char *_argv[]) {
// only one things to do:
return ewol::run(_argc, _argv);
}
appl::BufferManager* bufferManager = NULL;
ewol::object::Shared<appl::BufferManager> bufferManager = NULL;
/**
* @brief main application function initialisation
@ -84,7 +84,7 @@ 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<MainWindows> basicWindows = ewol::object::makeShared(new MainWindows());
if (NULL == basicWindows) {
APPL_ERROR("Can not allocate the basic windows");
@ -126,7 +126,7 @@ 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();
ewol::object::Shared<ewol::widget::Windows> tmpWindows = _context.getWindows();
_context.setWindows(NULL);
@ -139,11 +139,7 @@ void APP_UnInit(ewol::Context& _context) {
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)");
}