diff --git a/external/etk b/external/etk index bee6e067..ce3243a5 160000 --- a/external/etk +++ b/external/etk @@ -1 +1 @@ -Subproject commit bee6e067208eb236f45b818fde10c99147a930b1 +Subproject commit ce3243a5f438c6dc3158b5f1c786741132a51a6f diff --git a/sources/ewol/event/Input.cpp b/sources/ewol/event/Input.cpp index 702f47a4..39ca0b15 100644 --- a/sources/ewol/event/Input.cpp +++ b/sources/ewol/event/Input.cpp @@ -14,7 +14,7 @@ std::ostream& ewol::event::operator <<(std::ostream& _os, const ewol::event::Input& _obj) { _os << "{type=" << _obj.getType(); _os << " status=" << _obj.getStatus(); - _os << " id=" << _obj.getId(); + _os << " id=" << etk::to_string(_obj.getId()); _os << " pos=" << _obj.getPos(); _os << "}"; return _os; diff --git a/sources/ewol/object/Signal.h b/sources/ewol/object/Signal.h index 3cae33d0..1652848c 100644 --- a/sources/ewol/object/Signal.h +++ b/sources/ewol/object/Signal.h @@ -91,7 +91,14 @@ namespace ewol { EWOL_VERBOSE(" nullptr dest"); continue; } - EWOL_DEBUG("emit signal : '" << m_name << "' to [" << destObject->getId() << "] data='" << etk::to_string(_data) << "'"); + #ifdef DEBUG + ewol::Object* srcObject = dynamic_cast(&m_objectLink); + if (srcObject != nullptr) { + EWOL_DEBUG("emit signal : " << srcObject->getObjectType() << " '" << m_name << "' to [" << destObject->getId() << "]" << destObject->getObjectType() << " data='" << etk::to_string(_data) << "'"); + } else { + EWOL_DEBUG("emit signal : '" << m_name << "' to [" << destObject->getId() << "]" << destObject->getObjectType() << " data='" << etk::to_string(_data) << "'"); + } + #endif it.second(_data); } } @@ -165,7 +172,14 @@ namespace ewol { EWOL_VERBOSE(" nullptr dest"); continue; } - EWOL_DEBUG("emit signal : '" << m_name << "' to [" << destObject->getId() << "] BANG!!!"); + #ifdef DEBUG + ewol::Object* srcObject = dynamic_cast(&m_objectLink); + if (srcObject != nullptr) { + EWOL_DEBUG("emit signal : " << srcObject->getObjectType() << " '" << m_name << "' to [" << destObject->getId() << "]" << destObject->getObjectType() << " BANG!!!"); + } else { + EWOL_DEBUG("emit signal : '" << m_name << "' to [" << destObject->getId() << "]" << destObject->getObjectType() << " BANG!!!"); + } + #endif it.second(); } } diff --git a/sources/ewol/object/SignalList.h b/sources/ewol/object/SignalList.h index af9e0c83..bac84c74 100644 --- a/sources/ewol/object/SignalList.h +++ b/sources/ewol/object/SignalList.h @@ -45,12 +45,6 @@ namespace ewol { * @param[in] _object Object to unlink. */ void unBindAll(const std::shared_ptr& _object); - public: - /** - * @brief Receive a message from an other Object with a specific eventId and data - * @param[in] _msg Message handle - */ - virtual void onReceiveMessage(const ewol::object::Message& _msg) { }; }; }; }; diff --git a/sources/ewol/widget/ButtonColor.cpp b/sources/ewol/widget/ButtonColor.cpp index 0b9c1699..6424deff 100644 --- a/sources/ewol/widget/ButtonColor.cpp +++ b/sources/ewol/widget/ButtonColor.cpp @@ -215,6 +215,7 @@ void ewol::widget::ButtonColor::onCallbackColorChange(const etk::Color<>& _color void ewol::widget::ButtonColor::setValue(const etk::Color<>& _color) { m_textColorFg = _color; + signalChange.emit(m_textColorFg); markToRedraw(); } @@ -222,19 +223,6 @@ etk::Color<> ewol::widget::ButtonColor::getValue() { return m_textColorFg; } - -void ewol::widget::ButtonColor::onReceiveMessage(const ewol::object::Message& _msg) { - EWOL_INFO("Receive MSG : " << _msg.getData()); - if (_msg.getMessage() == eventColorHasChange) { - m_textColorFg = _msg.getData(); - // TODO : set a proper call - //signalChange.emit(_msg.getData()); - EWOL_TODO("generate signal of change color : " << _msg.getData()); - markToRedraw(); - } -} - - void ewol::widget::ButtonColor::changeStatusIn(int32_t _newStatusId) { if (true == m_shaper.changeStatusIn(_newStatusId) ) { periodicCallEnable(); @@ -242,8 +230,6 @@ void ewol::widget::ButtonColor::changeStatusIn(int32_t _newStatusId) { } } - - void ewol::widget::ButtonColor::periodicCall(const ewol::event::Time& _event) { if (false == m_shaper.periodicCall(_event) ) { periodicCallDisable(); diff --git a/sources/ewol/widget/ButtonColor.h b/sources/ewol/widget/ButtonColor.h index 0918f855..2b096c1b 100644 --- a/sources/ewol/widget/ButtonColor.h +++ b/sources/ewol/widget/ButtonColor.h @@ -70,7 +70,6 @@ namespace ewol { virtual void calculateMinMaxSize(); virtual void onRegenerateDisplay(); virtual bool onEventInput(const ewol::event::Input& _event); - virtual void onReceiveMessage(const ewol::object::Message& _msg); private: /** * @brief internal system to change the property of the current status diff --git a/sources/ewol/widget/Entry.cpp b/sources/ewol/widget/Entry.cpp index d73d5700..b3c5262e 100644 --- a/sources/ewol/widget/Entry.cpp +++ b/sources/ewol/widget/Entry.cpp @@ -13,14 +13,6 @@ #include #include - -const char * const ewolEventEntryCut = "ewol-widget-entry-event-internal-cut"; -const char * const ewolEventEntryCopy = "ewol-widget-entry-event-internal-copy"; -const char * const ewolEventEntryPaste = "ewol-widget-entry-event-internal-paste"; -const char * const ewolEventEntryClean = "ewol-widget-entry-event-internal-clean"; -const char * const ewolEventEntrySelect = "ewol-widget-entry-event-internal-select"; - - #undef __class__ #define __class__ "Entry" @@ -52,6 +44,7 @@ void ewol::widget::Entry::init(const std::string& _newData) { m_shaper.setString("THEME:GUI:Entry.json"); setCanHaveFocus(true); m_regExp.setString(".*"); + m_regExp.get().setMaximize(true); markToRedraw(); shortCutAdd("ctrl+w", "clean"); @@ -69,7 +62,21 @@ ewol::widget::Entry::~Entry() { } void ewol::widget::Entry::onCallbackShortCut(const std::string& _value) { - EWOL_WARNING("Event from ShortCut : " << _value); + if (_value == "clean") { + onCallbackEntryClean(); + } else if (_value == "cut") { + onCallbackCut(); + } else if (_value == "copy") { + onCallbackCopy(); + } else if (_value == "paste") { + onCallbackPaste(); + } else if (_value == "select:all") { + onCallbackSelect(true); + } else if (_value == "select:none") { + onCallbackSelect(false); + } else { + EWOL_WARNING("Unknow event from ShortCut : " << _value); + } } void ewol::widget::Entry::calculateMinMaxSize() { @@ -407,7 +414,7 @@ void ewol::widget::Entry::setInternalValue(const std::string& _newData) { std::string previous = m_data; // check the RegExp : if (_newData.size()>0) { - if (false == m_regExp->processOneElement(_newData,0,_newData.size()) ) { + if (false == m_regExp->parse(_newData,0,_newData.size()) ) { EWOL_INFO("the input data does not match with the regExp \"" << _newData << "\" RegExp=\"" << m_regExp->getRegExp() << "\" start=" << m_regExp->start() << " stop=" << m_regExp->stop() ); return; } @@ -445,32 +452,36 @@ void ewol::widget::Entry::onEventClipboard(enum ewol::context::clipBoard::clipbo signalModify.emit(m_data); } +void ewol::widget::Entry::onCallbackEntryClean() { + m_data = ""; + m_displayStartPosition = 0; + m_displayCursorPos = 0; + m_displayCursorPosSelection = m_displayCursorPos; + markToRedraw(); +} -void ewol::widget::Entry::onReceiveMessage(const ewol::object::Message& _msg) { - ewol::Widget::onReceiveMessage(_msg); - if(_msg.getMessage() == ewolEventEntryClean) { - m_data = ""; - m_displayStartPosition = 0; - m_displayCursorPos = 0; +void ewol::widget::Entry::onCallbackCut() { + copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd); + removeSelected(); + signalModify.emit(m_data); +} + +void ewol::widget::Entry::onCallbackCopy() { + copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd); +} + +void ewol::widget::Entry::onCallbackPaste() { + ewol::context::clipBoard::request(ewol::context::clipBoard::clipboardStd); +} + +void ewol::widget::Entry::onCallbackSelect(bool _all) { + if(_all == true) { + m_displayCursorPosSelection = 0; + m_displayCursorPos = m_data->size(); + } else { m_displayCursorPosSelection = m_displayCursorPos; - markToRedraw(); - } else if(_msg.getMessage() == ewolEventEntryCut) { - copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd); - removeSelected(); - signalModify.emit(m_data); - } else if(_msg.getMessage() == ewolEventEntryCopy) { - copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd); - } else if(_msg.getMessage() == ewolEventEntryPaste) { - ewol::context::clipBoard::request(ewol::context::clipBoard::clipboardStd); - } else if(_msg.getMessage() == ewolEventEntrySelect) { - if(_msg.getData() == "ALL") { - m_displayCursorPosSelection = 0; - m_displayCursorPos = m_data->size(); - } else { - m_displayCursorPosSelection = m_displayCursorPos; - } - markToRedraw(); } + markToRedraw(); } void ewol::widget::Entry::markToUpdateTextPosition() { diff --git a/sources/ewol/widget/Entry.h b/sources/ewol/widget/Entry.h index 346f647f..f486d0f9 100644 --- a/sources/ewol/widget/Entry.h +++ b/sources/ewol/widget/Entry.h @@ -166,7 +166,6 @@ namespace ewol { virtual void onRegenerateDisplay(); virtual bool onEventInput(const ewol::event::Input& _event); virtual bool onEventEntry(const ewol::event::Entry& _event); - virtual void onReceiveMessage(const ewol::object::Message& _msg); virtual void onEventClipboard(enum ewol::context::clipBoard::clipboardListe _clipboardID); virtual void calculateMinMaxSize(); protected: // Derived function @@ -178,6 +177,11 @@ namespace ewol { virtual void onParameterChangeValue(const ewol::object::ParameterRef& _paramPointer); private: // callback functions void onCallbackShortCut(const std::string& _value); + void onCallbackEntryClean(); + void onCallbackCut(); + void onCallbackCopy(); + void onCallbackPaste(); + void onCallbackSelect(bool _all); }; }; }; diff --git a/sources/ewol/widget/ListFileSystem.cpp b/sources/ewol/widget/ListFileSystem.cpp index f16ae7b6..61f60a41 100644 --- a/sources/ewol/widget/ListFileSystem.cpp +++ b/sources/ewol/widget/ListFileSystem.cpp @@ -173,7 +173,7 @@ bool ewol::widget::ListFileSystem::onItemEvent(int32_t _IdInput, } } if (_typeEvent == ewol::key::statusSingle) { - EWOL_DEBUG("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); + EWOL_VERBOSE("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); if (1 == _IdInput) { int32_t previousRaw = m_selectedLine; if (_raw > (int32_t)m_list.size()+offset ) { diff --git a/sources/ewol/widget/Menu.cpp b/sources/ewol/widget/Menu.cpp index ccf233f4..bcd712f8 100644 --- a/sources/ewol/widget/Menu.cpp +++ b/sources/ewol/widget/Menu.cpp @@ -235,9 +235,3 @@ void ewol::widget::Menu::onButtonPressed(std::weak_ptr _bu } -void ewol::widget::Menu::onReceiveMessage(const ewol::object::Message& _msg) { - /* - */ -} - - diff --git a/sources/ewol/widget/Menu.h b/sources/ewol/widget/Menu.h index 5c00c137..750e9eb9 100644 --- a/sources/ewol/widget/Menu.h +++ b/sources/ewol/widget/Menu.h @@ -55,8 +55,6 @@ namespace ewol { int32_t addTitle(std::string _label, std::string _image="", const std::string _message = ""); int32_t add(int32_t _parent, std::string _label, std::string _image="", const std::string _message = ""); void addSpacer(); - // Derived function - virtual void onReceiveMessage(const ewol::object::Message& _msg); private: void onButtonPressed(std::weak_ptr _button); }; diff --git a/sources/ewol/widget/meta/ColorChooser.cpp b/sources/ewol/widget/meta/ColorChooser.cpp index 34c872df..f954d59b 100644 --- a/sources/ewol/widget/meta/ColorChooser.cpp +++ b/sources/ewol/widget/meta/ColorChooser.cpp @@ -109,33 +109,6 @@ etk::Color<> ewol::widget::ColorChooser::getColor() { return m_currentColor; } - -void ewol::widget::ColorChooser::onReceiveMessage(const ewol::object::Message& _msg) { - //EWOL_INFO("Receive Extern Event ... : widgetPointer=" << CallerObject << "\"" << eventId << "\" == > data=\"" << data << "\"" ); - if (eventColorBarHasChange == _msg.getMessage()) { - // == > colorBar has change ... - uint8_t tmpAlpha = m_currentColor.a(); - // the colorbar has no notion of the alpha == > keep it ... - if (nullptr != m_widgetColorBar) { - m_currentColor = m_widgetColorBar->getCurrentColor(); - } - m_currentColor.setA(tmpAlpha); - if (nullptr != m_widgetRed) { - m_widgetRed->setValue(m_currentColor.r()); - } - if (nullptr != m_widgetGreen) { - m_widgetGreen->setValue(m_currentColor.g()); - } - if (nullptr != m_widgetBlue) { - m_widgetBlue->setValue(m_currentColor.b()); - } - if (nullptr != m_widgetAlpha) { - m_widgetAlpha->setValue(m_currentColor.a()); - } - signalChange.emit(m_currentColor); - } -}; - void ewol::widget::ColorChooser::onCallbackColorChangeRed(const int32_t& _newColor) { m_currentColor.setR(_newColor); if (nullptr != m_widgetColorBar) { @@ -166,8 +139,21 @@ void ewol::widget::ColorChooser::onCallbackColorChangeAlpha(const int32_t& _newC } void ewol::widget::ColorChooser::onCallbackColorChange(const etk::Color<>& _newColor) { m_currentColor = _newColor; - if (nullptr != m_widgetColorBar) { - m_widgetColorBar->setCurrentColor(m_currentColor); + // == > colorBar has change ... + uint8_t tmpAlpha = m_currentColor.a(); + m_currentColor = _newColor; + m_currentColor.setA(tmpAlpha); + if (nullptr != m_widgetRed) { + m_widgetRed->setValue(m_currentColor.r()); + } + if (nullptr != m_widgetGreen) { + m_widgetGreen->setValue(m_currentColor.g()); + } + if (nullptr != m_widgetBlue) { + m_widgetBlue->setValue(m_currentColor.b()); + } + if (nullptr != m_widgetAlpha) { + m_widgetAlpha->setValue(m_currentColor.a()); } signalChange.emit(m_currentColor); } \ No newline at end of file diff --git a/sources/ewol/widget/meta/ColorChooser.h b/sources/ewol/widget/meta/ColorChooser.h index 74b0ba6a..c3044ece 100644 --- a/sources/ewol/widget/meta/ColorChooser.h +++ b/sources/ewol/widget/meta/ColorChooser.h @@ -35,8 +35,6 @@ namespace ewol { public: DECLARE_WIDGET_FACTORY(ColorChooser, "ColorChooser"); virtual ~ColorChooser(); - public: // Derived function - virtual void onReceiveMessage(const ewol::object::Message& _msg); public: void setColor(etk::Color<> _newColor); etk::Color<> getColor(); diff --git a/sources/ewol/widget/meta/FileChooser.cpp b/sources/ewol/widget/meta/FileChooser.cpp index 057cdbed..9283f09b 100644 --- a/sources/ewol/widget/meta/FileChooser.cpp +++ b/sources/ewol/widget/meta/FileChooser.cpp @@ -183,24 +183,27 @@ void ewol::widget::FileChooser::onCallbackListFolderSelectChange(const std::stri void ewol::widget::FileChooser::onCallbackListFileSelectChange(const std::string& _value) { setFileName(_value); + /* std::string tmpFileCompleatName = m_folder; tmpFileCompleatName += m_file; // TODO : generateEventId(_msg.getMessage(), tmpFileCompleatName); + */ } void ewol::widget::FileChooser::onCallbackListFileValidate(const std::string& _value) { // select the file == > generate a validate setFileName(_value); - EWOL_VERBOSE(" generate a fiel opening : \"" << m_folder << "\" / \"" << m_file << "\""); + EWOL_VERBOSE(" generate a fiel opening : '" << m_folder << "' / '" << m_file << "'"); signalValidate.emit(getCompleateFileName()); autoDestroy(); } void ewol::widget::FileChooser::onCallbackListValidate() { - if (m_file != "" ) { + if (m_file == "" ) { + EWOL_WARNING(" Validate : '" << m_folder << "' / '" << m_file << "' ==> error No name ..."); return; } - EWOL_VERBOSE(" generate a fiel opening : \"" << m_folder << "\" / \"" << m_file << "\""); + EWOL_DEBUG(" generate a file opening : '" << m_folder << "' / '" << m_file << "'"); signalValidate.emit(getCompleateFileName()); autoDestroy(); } diff --git a/sources/ewol/widget/meta/FileChooser.h b/sources/ewol/widget/meta/FileChooser.h index ab47441e..838c6a8c 100644 --- a/sources/ewol/widget/meta/FileChooser.h +++ b/sources/ewol/widget/meta/FileChooser.h @@ -24,21 +24,19 @@ namespace ewol { * Fist global static declaration and inclusion: * [code style=c++] * #include - * static const char* const g_eventOpenFile = "appl-local-event-open-file"; - * static const char* const g_eventClosePopUp = "appl-local-event-close-pop-up"; * [/code] * - * The first step is to create the file chooser pop-up : + * The first step is to create the file chooser pop-up : (never in the constructor!!!) * [code style=c++] - * std::shared_ptr tmpWidget = ewol::object::makeShared(new ewol::Widget::FileChooser()); + * std::shared_ptr tmpWidget = ewol::Widget::FileChooser::create(); * if (tmpWidget == nullptr) { * APPL_ERROR("Can not open File chooser !!! "); * return -1; * } * // register on the Validate event: - * tmpWidget->registerOnEvent(this, "validate", g_eventOpenFile); + * tmpWidget->signalValidate.bind(shared_from_this(), &****::onCallbackOpenFile); * // no need of this event watching ... - * tmpWidget->registerOnEvent(this, "cancel", g_eventClosePopUp); + * tmpWidget->signalCancel.bind(shared_from_this(), &****::onCallbackClosePopUp); * // set the title: * tmpWidget->setTitle("Open files ..."); * // Set the validate Label: @@ -46,7 +44,7 @@ namespace ewol { * // simply set a folder (by default this is the home folder) * //tmpWidget->setFolder("/home/me"); * // add the widget as windows pop-up ... - * ewol::widget::Windows* tmpWindows = getWindows(); + * std::shared_ptr tmpWindows = getWindows(); * if (tmpWindows == nullptr) { * APPL_ERROR("Can not get the current windows !!! "); * return -1; @@ -57,17 +55,11 @@ namespace ewol { * Now we just need to wait the the open event message. * * [code style=c++] - * void ********::onReceiveMessage(const ewol::object::Message& _msg) { - * APPL_DEBUG("Receive Message: " << _msg ); - * if (_msg.getMessage() == g_eventOpenFile) { - * APPL_INFO("Request open file : '" << _msg.getData() << "'"); - * return; - * } - * if (_msg.getMessage() == g_eventClosePopUp) { - * APPL_INFO("The File chooser has been closed"); - * // generaly nothing to do ... - * return; - * } + * void ****::onCallbackOpenFile(const std::string& _value) { + * APPL_INFO("Request open file : '" << _value << "'"); + * } + * void ****::onCallbackClosePopUp() { + * APPL_INFO("The File chooser has been closed"); * } * [/code] * This is the best example of a Meta-widget.