[DEV] rework signal interface (step 1 normalisation)

This commit is contained in:
Edouard DUPIN 2014-08-20 22:34:31 +02:00
parent 7da1beb12d
commit 03fa46bbcd
16 changed files with 93 additions and 95 deletions

View File

@ -17,11 +17,6 @@
#undef __class__
#define __class__ "Buffer"
const char* const appl::Buffer::eventIsModify = "edn-is-modify";
const char* const appl::Buffer::eventIsSave = "edn-is-save";
const char* const appl::Buffer::eventSelectChange = "edn-select-change";
const char* const appl::Buffer::eventChangeName = "edn-buffer-name-change";
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
m_value = u32char::Null;
if (m_current < 0) {
@ -119,8 +114,11 @@ appl::Buffer::Iterator appl::Buffer::selectStop() {
return position( getStopSelectionPos() );
}
appl::Buffer::Buffer() :
signalIsModify(*this, "is-modify"),
signalIsSave(*this, "is-save"),
signalSelectChange(*this, "select-change"),
signalChangeName(*this, "change-name"),
m_hasFileName(false),
m_fileName(""),
m_isModify(false),
@ -133,10 +131,6 @@ appl::Buffer::Buffer() :
static int32_t bufferBaseId = 0;
m_fileName = "No Name " + etk::to_string(bufferBaseId);
bufferBaseId++;
addEventId(eventIsModify);
addEventId(eventIsSave);
addEventId(eventSelectChange);
addEventId(eventChangeName);
}
void appl::Buffer::init() {
@ -176,7 +170,7 @@ void appl::Buffer::setFileName(const std::string& _name) {
}
m_fileName = name;
m_hasFileName = true;
generateEventId(eventChangeName);
signalChangeName.emit(shared_from_this());
setModification(true);
}
@ -195,9 +189,9 @@ void appl::Buffer::setModification(bool _status) {
}
m_isModify = _status;
if (m_isModify == true) {
generateEventId(eventIsModify);
signalIsModify.emit(shared_from_this());
} else {
generateEventId(eventIsSave);
signalIsSave.emit(shared_from_this());
}
}
@ -420,13 +414,13 @@ void appl::Buffer::moveCursor(int64_t _pos) {
if (m_cursorPos == m_cursorSelectPos) {
m_cursorSelectPos = -1;
}
generateEventId(eventSelectChange);
signalSelectChange.emit(shared_from_this());
return;
}
// move mode
m_cursorPos = _pos;
m_cursorSelectPos = -1;
generateEventId(eventSelectChange);
signalSelectChange.emit(shared_from_this());
}
bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
@ -519,12 +513,12 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
void appl::Buffer::setSelectionPos(const appl::Buffer::Iterator& _pos) {
m_cursorSelectPos = _pos;
generateEventId(eventSelectChange);
signalSelectChange.emit(shared_from_this());
}
void appl::Buffer::unSelect() {
m_cursorSelectPos = -1;
generateEventId(eventSelectChange);
signalSelectChange.emit(shared_from_this());
}
static const char *ControlCodeTable[32] = {

View File

@ -17,6 +17,7 @@
#include <ewol/widget/Widget.h>
#include <ewol/compositing/Text.h>
#include <appl/Highlight.h>
#include <ewol/object/Signal.h>
namespace appl {
@ -288,10 +289,10 @@ namespace appl {
friend class Buffer;
};
public:
static const char* const eventIsModify;
static const char* const eventIsSave;
static const char* const eventSelectChange;
static const char* const eventChangeName;
ewol::object::Signal<void> signalIsModify;
ewol::object::Signal<void> signalIsSave;
ewol::object::Signal<void> signalSelectChange;
ewol::object::Signal<void> signalChangeName;
protected:
Buffer();
void init();

View File

@ -104,7 +104,9 @@ void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _sel
}
}
}
static const char* const ednEventIsSave = "edn-buffer-is-saved";
static const char* const ednEventIsModify = "edn-buffer-is-modify";
static const char* const ednEventChangeName = "edn-buffer-change-name";
void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_VERBOSE("message : " << _msg);
@ -115,9 +117,9 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
APPL_ERROR("event on element nor exist : " << _msg.getData());
return;
}
buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsSave);
buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify);
buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventChangeName);
buffer->registerOnEvent(shared_from_this(), "is-save", ednEventIsSave);
buffer->registerOnEvent(shared_from_this(), "is-modify", ednEventIsModify);
buffer->registerOnEvent(shared_from_this(), "change-name", ednEventChangeName);
appl::dataBufferStruct* tmp = new appl::dataBufferStruct(_msg.getData(), buffer);
if (tmp == nullptr) {
APPL_ERROR("Allocation error of the tmp buffer list element");
@ -131,7 +133,7 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventChangeName) {
if (_msg.getMessage() == ednEventChangeName) {
for (size_t iii = 0; iii < m_list.size(); ++iii) {
if (m_list[iii] == nullptr) {
continue;
@ -151,11 +153,11 @@ void BufferView::onReceiveMessage(const ewol::object::Message& _msg) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventIsSave) {
if (_msg.getMessage() == ednEventIsSave) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventIsModify) {
if (_msg.getMessage() == ednEventIsModify) {
markToRedraw();
return;
}

View File

@ -279,9 +279,11 @@ MainWindows::~MainWindows() {
}
const char *const ednEventPopUpFileSelected = "edn-mainWindows-openSelected";
const char *const ednEventPopUpFileSaveAs = "edn-mainWindows-saveAsSelected";
static const char* const ednEventPopUpFileSelected = "edn-mainWindows-openSelected";
static const char* const ednEventPopUpFileSaveAs = "edn-mainWindows-saveAsSelected";
static const char* const ednEventIsSave = "edn-buffer-is-saved";
static const char* const ednEventIsModify = "edn-buffer-is-modify";
static const char* const ednEventChangeName = "edn-buffer-change-name";
void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
ewol::widget::Windows::onReceiveMessage(_msg);
@ -378,9 +380,9 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
return;
}
if ( _msg.getMessage() == appl::MsgSelectNewFile
|| _msg.getMessage() == appl::Buffer::eventIsModify
|| _msg.getMessage() == appl::Buffer::eventIsSave
|| _msg.getMessage() == appl::Buffer::eventChangeName) {
|| _msg.getMessage() == ednEventIsModify
|| _msg.getMessage() == ednEventIsSave
|| _msg.getMessage() == ednEventChangeName) {
// select a new Buffer ==> change title:
std::shared_ptr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == nullptr) {
@ -390,9 +392,9 @@ void MainWindows::onReceiveMessage(const ewol::object::Message& _msg) {
}
} else {
if (_msg.getMessage() == appl::MsgSelectNewFile) {
tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify);
tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventIsSave);
tmpp->registerOnEvent(shared_from_this(), appl::Buffer::eventChangeName);
tmpp->registerOnEvent(shared_from_this(), "is-save", ednEventIsSave);
tmpp->registerOnEvent(shared_from_this(), "is-modify", ednEventIsModify);
tmpp->registerOnEvent(shared_from_this(), "change-name", ednEventChangeName);
}
std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName();
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem);

View File

@ -12,15 +12,12 @@
#undef __class__
#define __class__ "TagFileList"
extern const char * const applEventCtagsListSelect = "appl-event-ctags-list-select";
extern const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-select";
extern const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate";
appl::TagFileList::TagFileList() {
appl::TagFileList::TagFileList() :
signalSelect(*this, "select"),
signalValidate(*this, "validate"),
signalUnSelect(*this, "unselect") {
addObjectType("appl::TagFileList");
m_selectedLine = -1;
addEventId(applEventCtagsListSelect);
addEventId(applEventCtagsListValidate);
setMouseLimit(1);
// Load color properties: (use file list to be generic ...)
m_colorProperty = ewol::resource::ColorFile::create("THEME:COLOR:ListFileSystem.json");
@ -92,16 +89,16 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::key::status _ty
} else {
m_selectedLine = _raw;
}
const char * event = applEventCtagsListValidate;
if (previousRaw != m_selectedLine) {
event = applEventCtagsListSelect;
}
if( m_selectedLine >= 0
&& m_selectedLine < (int64_t)m_list.size()
&& nullptr != m_list[m_selectedLine] ) {
generateEventId(event, etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
if (previousRaw != m_selectedLine) {
signalSelect.emit(shared_from_this(), etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
} else {
generateEventId(applEventCtagsListUnSelect);
signalValidate.emit(shared_from_this(), etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
}
} else {
signalUnSelect.emit(shared_from_this());
}
// need to regenerate the display of the list :
markToRedraw();

View File

@ -13,11 +13,6 @@
#include <ewol/widget/List.h>
#include <ewol/resource/ColorFile.h>
extern const char * const applEventCtagsListSelect;
extern const char * const applEventCtagsListValidate;
extern const char * const applEventCtagsListUnSelect;
namespace appl {
class TagListElement {
public:
@ -33,6 +28,10 @@ namespace appl {
};
};
class TagFileList : public ewol::widget::List {
public:
ewol::object::Signal<std::string> signalSelect;
ewol::object::Signal<std::string> signalValidate;
ewol::object::Signal<void> signalUnSelect;
private:
int32_t m_selectedLine;
std::vector<appl::TagListElement*> m_list;

View File

@ -26,14 +26,18 @@
#define __class__ "TagFileSelection"
extern const char * const applEventctagsSelection = "appl-event-ctags-validate";
extern const char * const applEventctagsCancel = "appl-event-ctags-cancel";
static const char * const applEventctagsSelection = "appl-event-ctags-validate";
static const char * const applEventctagsCancel = "appl-event-ctags-cancel";
static const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate";
static const char * const applEventCtagsListSelect = "appl-event-ctags-list-selected";
static const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-selected";
appl::TagFileSelection::TagFileSelection() {
appl::TagFileSelection::TagFileSelection() :
signalSelect(*this, "select"),
signalCancel(*this, "cancel") {
addObjectType("appl::TagFileSelection");
addEventId(applEventctagsSelection);
addEventId(applEventctagsCancel);
}
void appl::TagFileSelection::init() {
@ -81,9 +85,9 @@ void appl::TagFileSelection::init() {
if (nullptr == m_listTag) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
} else {
m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListValidate);
m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListSelect);
m_listTag->registerOnEvent(shared_from_this(), applEventCtagsListUnSelect);
m_listTag->registerOnEvent(shared_from_this(), "validate", applEventCtagsListValidate);
m_listTag->registerOnEvent(shared_from_this(), "select", applEventCtagsListSelect);
m_listTag->registerOnEvent(shared_from_this(), "unselect", applEventCtagsListUnSelect);
m_listTag->setExpand(bvec2(true,true));
m_listTag->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(m_listTag);
@ -108,21 +112,20 @@ void appl::TagFileSelection::onReceiveMessage(const ewol::object::Message& _msg)
EWOL_INFO("ctags LIST ... : " << _msg );
if (_msg.getMessage() == applEventctagsSelection) {
if (m_eventNamed!="") {
generateEventId(applEventctagsSelection, m_eventNamed);
signalSelect.emit(shared_from_this(), m_eventNamed);
// == > Auto remove ...
autoDestroy();
}
} else if (_msg.getMessage() == applEventCtagsListSelect) {
m_eventNamed = _msg.getData();
} else if (_msg.getMessage() == applEventCtagsListUnSelect) {
m_eventNamed = "";
} else if (_msg.getMessage() == applEventCtagsListValidate) {
generateEventId(applEventctagsSelection, _msg.getData());
signalSelect.emit(shared_from_this(), _msg.getData());
// == > Auto remove ...
autoDestroy();
} else if (_msg.getMessage() == applEventctagsCancel) {
generateEventId(applEventctagsCancel, "");
signalCancel.emit(shared_from_this());
// == > Auto remove ...
autoDestroy();
}

View File

@ -13,11 +13,11 @@
#include <ewol/widget/PopUp.h>
#include <appl/Gui/TagFileList.h>
extern const char * const applEventctagsSelection;
extern const char * const applEventctagsCancel;
namespace appl {
class TagFileSelection : public ewol::widget::PopUp {
public:
ewol::object::Signal<std::string> signalSelect;
ewol::object::Signal<void> signalCancel;
private:
std::shared_ptr<appl::TagFileList> m_listTag;
std::string m_eventNamed;

View File

@ -28,6 +28,10 @@
int64_t processTimeLocal = (endTime - startTime); \
APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms");
static const char* const appl_Buffer_eventIsModify = "buffer-is-modify";
static const char* const appl_Buffer_eventSelectChange = "buffer-select-change";
appl::TextViewer::TextViewer() :
m_insertMode(false) {
addObjectType("appl::TextViewer");
@ -634,11 +638,11 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) {
return;
}
// event needed even if selection of buffer is not done ...
if (_msg.getMessage() == appl::Buffer::eventIsModify) {
if (_msg.getMessage() == appl_Buffer_eventIsModify) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventSelectChange) {
if (_msg.getMessage() == appl_Buffer_eventSelectChange) {
markToRedraw();
return;
}
@ -687,8 +691,8 @@ void appl::TextViewer::onReceiveMessage(const ewol::object::Message& _msg) {
m_buffer = m_bufferManager->get(_msg.getData());
m_bufferManager->setBufferSelected(m_buffer);
if (m_buffer != nullptr) {
m_buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventIsModify);
m_buffer->registerOnEvent(shared_from_this(), appl::Buffer::eventSelectChange);
m_buffer->registerOnEvent(shared_from_this(), "is-modify", appl_Buffer_eventIsModify);
m_buffer->registerOnEvent(shared_from_this(), "select-change", appl_Buffer_eventSelectChange);
for (auto element : m_drawingRemenber) {
if (element.first == m_buffer) {
m_originScrooled = element.second;

View File

@ -54,7 +54,7 @@ void appl::WorkerCloseAllFile::init() {
autoDestroy();
return;
}
m_worker->registerOnEvent(shared_from_this(), appl::WorkerCloseFile::eventCloseDone, s_closeDone);
m_worker->registerOnEvent(shared_from_this(), "close-file-done", s_closeDone);
}
appl::WorkerCloseAllFile::~WorkerCloseAllFile() {
@ -79,7 +79,7 @@ void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::object::Message& _ms
autoDestroy();
return;
}
m_worker->registerOnEvent(shared_from_this(), appl::WorkerCloseFile::eventCloseDone, s_closeDone);
m_worker->registerOnEvent(shared_from_this(), "close-file-done", s_closeDone);
}
}

View File

@ -14,19 +14,17 @@
#undef __class__
#define __class__ "WorkerCloseFile"
const char* appl::WorkerCloseFile::eventCloseDone = "close-file-done";
static const char* s_saveAsValidate = "save-as-validate";
static const char* s_saveValidate = "save-validate";
static const char* s_closeValidate = "close-validate";
static const char* s_saveAsDone = "save-as-done";
appl::WorkerCloseFile::WorkerCloseFile() :
signalCloseDone(*this, "close-file-done"),
m_buffer(nullptr),
m_worker(nullptr),
m_bufferManager(nullptr) {
addObjectType("appl::WorkerCloseFile");
addEventId(eventCloseDone);
// load buffer manager:
m_bufferManager = appl::BufferManager::create();
}
@ -61,7 +59,7 @@ void appl::WorkerCloseFile::init(const std::string& _bufferName) {
return;
}
if (m_buffer->isModify() == false) {
generateEventId(eventCloseDone);
signalCloseDone.emit(shared_from_this());
m_buffer->destroy();
return;
}
@ -112,7 +110,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
if (_msg.getMessage() == s_saveAsValidate) {
m_worker = appl::WorkerSaveFile::create(m_bufferName);
if (m_worker != nullptr) {
m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone);
m_worker->registerOnEvent(shared_from_this(), "save-file-done", s_saveAsDone);
}
} else if (_msg.getMessage() == s_saveValidate) {
if (m_buffer == nullptr) {
@ -127,7 +125,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
}
tmpWindows->displayWarningMessage("We can not save the file : <br/><i>" + m_buffer->getFileName() + "</i>");
} else {
generateEventId(eventCloseDone);
signalCloseDone.emit(shared_from_this());
}
} else if ( _msg.getMessage() == s_closeValidate
|| _msg.getMessage() == s_saveAsDone) {
@ -136,7 +134,7 @@ void appl::WorkerCloseFile::onReceiveMessage(const ewol::object::Message& _msg)
autoDestroy();
return;
}
generateEventId(eventCloseDone);
signalCloseDone.emit(shared_from_this());
m_buffer->destroy();
m_buffer.reset();
}

View File

@ -16,7 +16,7 @@
namespace appl {
class WorkerCloseFile : public ewol::Object {
public:
static const char* eventCloseDone;
ewol::object::Signal<void> signalCloseDone;
protected:
// note : if == "" ==> current ...
WorkerCloseFile();

View File

@ -56,7 +56,7 @@ void appl::WorkerSaveAllFile::init() {
autoDestroy();
return;
}
m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone);
m_worker->registerOnEvent(shared_from_this(), "save-file-done", s_saveAsDone);
}
appl::WorkerSaveAllFile::~WorkerSaveAllFile() {
@ -81,7 +81,7 @@ void appl::WorkerSaveAllFile::onReceiveMessage(const ewol::object::Message& _msg
autoDestroy();
return;
}
m_worker->registerOnEvent(shared_from_this(), appl::WorkerSaveFile::eventSaveDone, s_saveAsDone);
m_worker->registerOnEvent(shared_from_this(), "save-file-done", s_saveAsDone);
}
}

View File

@ -13,13 +13,11 @@
#undef __class__
#define __class__ "WorkerSaveFile"
const char* appl::WorkerSaveFile::eventSaveDone = "save-file-done";
static const char* s_saveAsValidate = "save-as-validate";
appl::WorkerSaveFile::WorkerSaveFile() {
appl::WorkerSaveFile::WorkerSaveFile() :
signalSaveDone(*this, "save-file-done") {
addObjectType("appl::WorkerSaveFile");
addEventId(eventSaveDone);
// load buffer manager:
m_bufferManager = appl::BufferManager::create();
}
@ -56,7 +54,7 @@ void appl::WorkerSaveFile::init(const std::string& _bufferName, bool _forceSaveA
if (_forceSaveAs == false) {
if (tmpBuffer->hasFileName() == true) {
tmpBuffer->storeFile();
generateEventId(eventSaveDone);
signalSaveDone.emit(shared_from_this());
autoDestroy();
return;
}
@ -79,7 +77,7 @@ void appl::WorkerSaveFile::init(const std::string& _bufferName, bool _forceSaveA
return;
}
tmpWindows->popUpWidgetPush(m_chooser);
m_chooser->registerOnEvent(shared_from_this(), ewol::widget::FileChooser::eventValidate, s_saveAsValidate);
m_chooser->registerOnEvent(shared_from_this(), "validate", s_saveAsValidate);
}
appl::WorkerSaveFile::~WorkerSaveFile() {
@ -113,7 +111,7 @@ void appl::WorkerSaveFile::onReceiveMessage(const ewol::object::Message& _msg) {
}
tmpWindows->displayWarningMessage("We can not save the file : <br/><i>" + tmpBuffer->getFileName() + "</i>");
} else {
generateEventId(eventSaveDone);
signalSaveDone.emit(shared_from_this());
}
}
}

View File

@ -15,7 +15,7 @@
namespace appl {
class WorkerSaveFile : public ewol::Object {
public:
static const char* eventSaveDone;
ewol::object::Signal<void> signalSaveDone;
protected:
WorkerSaveFile();
void init(const std::string& _bufferName, bool _forceSaveAs=true);

View File

@ -98,7 +98,7 @@ void appl::TextPluginCtags::jumpTo(const std::string& _name) {
tmpWidget->addCtagsNewItem(myfile.getFileSystemName(), lineID);
} while (tagsFindNext (m_ctagFile, &entry) == TagSuccess);
ewol::getContext().getWindows()->popUpWidgetPush(tmpWidget);
tmpWidget->registerOnEvent(shared_from_this(), applEventctagsSelection, eventOpenCtagsSelectReturn);
tmpWidget->registerOnEvent(shared_from_this(), "select", eventOpenCtagsSelectReturn);
}
} else {
jumpFile(myfile.getName(), lineID - 1);