[DEV] remove caller in signal emit
This commit is contained in:
parent
12c4a88c88
commit
e3f71e5201
@ -63,7 +63,7 @@ ewol::Object::~Object() {
|
|||||||
|
|
||||||
void ewol::Object::init() {
|
void ewol::Object::init() {
|
||||||
getObjectManager().add(shared_from_this());
|
getObjectManager().add(shared_from_this());
|
||||||
parameterDisplay();
|
//parameterDisplay();
|
||||||
m_objectHasBeenInit = true;
|
m_objectHasBeenInit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,13 +61,13 @@ namespace ewol {
|
|||||||
* @param[in] _func Link on the fuction that might be called (inside a class)
|
* @param[in] _func Link on the fuction that might be called (inside a class)
|
||||||
* @example signalXXXX.connect(shared_from_this(), &ClassName::onCallbackXXX);
|
* @example signalXXXX.connect(shared_from_this(), &ClassName::onCallbackXXX);
|
||||||
*/
|
*/
|
||||||
template<class TYPE> void bind(std::shared_ptr<ewol::Object> _obj, void (TYPE::*_func)(const T&)) {
|
template<class TYPE, typename... Args> void bind(std::shared_ptr<ewol::Object> _obj, void (TYPE::*_func)(const T&), Args... args) {
|
||||||
std::shared_ptr<TYPE> obj2 = std::dynamic_pointer_cast<TYPE>(_obj);
|
std::shared_ptr<TYPE> obj2 = std::dynamic_pointer_cast<TYPE>(_obj);
|
||||||
if (obj2 == nullptr) {
|
if (obj2 == nullptr) {
|
||||||
EWOL_ERROR("Can not bind signal ...");
|
EWOL_ERROR("Can not bind signal ...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_callerList.push_back(std::make_pair(std::weak_ptr<ewol::Object>(_obj), std::bind(_func, obj2.get(), std::placeholders::_1)));
|
m_callerList.push_back(std::make_pair(std::weak_ptr<ewol::Object>(_obj), std::bind(_func, obj2.get(), std::placeholders::_1, args...)));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Advanced binding a callback function to the current signal.
|
* @brief Advanced binding a callback function to the current signal.
|
||||||
@ -180,13 +180,13 @@ namespace ewol {
|
|||||||
* @param[in] _func Link on the fuction that might be called (inside a class)
|
* @param[in] _func Link on the fuction that might be called (inside a class)
|
||||||
* @example signalXXXX.connect(shared_from_this(), &ClassName::onCallbackXXX);
|
* @example signalXXXX.connect(shared_from_this(), &ClassName::onCallbackXXX);
|
||||||
*/
|
*/
|
||||||
template<class TYPE> void bind(std::shared_ptr<ewol::Object> _obj, void (TYPE::*_func)()) {
|
template<class TYPE, typename... Args> void bind(std::shared_ptr<ewol::Object> _obj, void (TYPE::*_func)(), Args... args) {
|
||||||
std::shared_ptr<TYPE> obj2 = std::dynamic_pointer_cast<TYPE>(_obj);
|
std::shared_ptr<TYPE> obj2 = std::dynamic_pointer_cast<TYPE>(_obj);
|
||||||
if (obj2 == nullptr) {
|
if (obj2 == nullptr) {
|
||||||
EWOL_ERROR("Can not bind signal ...");
|
EWOL_ERROR("Can not bind signal ...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_callerList.push_back(std::make_pair(std::weak_ptr<ewol::Object>(_obj), std::bind(_func, obj2.get(), std::placeholders::_1)));
|
m_callerList.push_back(std::make_pair(std::weak_ptr<ewol::Object>(_obj), std::bind(_func, obj2.get(), args...)));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Advanced binding a callback function to the current signal.
|
* @brief Advanced binding a callback function to the current signal.
|
||||||
|
@ -122,13 +122,13 @@ bool ewol::widget::Button::onEventInput(const ewol::event::Input& _event) {
|
|||||||
if (1 == _event.getId()) {
|
if (1 == _event.getId()) {
|
||||||
if(ewol::key::statusDown == _event.getStatus()) {
|
if(ewol::key::statusDown == _event.getStatus()) {
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalDown);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalDown);
|
||||||
signalDown.emit(shared_from_this());
|
signalDown.emit();
|
||||||
m_buttonPressed = true;
|
m_buttonPressed = true;
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
if(ewol::key::statusUp == _event.getStatus()) {
|
if(ewol::key::statusUp == _event.getStatus()) {
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalUp);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalUp);
|
||||||
signalUp.emit(shared_from_this());
|
signalUp.emit();
|
||||||
m_buttonPressed = false;
|
m_buttonPressed = false;
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
@ -143,14 +143,14 @@ bool ewol::widget::Button::onEventInput(const ewol::event::Input& _event) {
|
|||||||
// inverse value :
|
// inverse value :
|
||||||
setValue((m_value.get())?false:true);
|
setValue((m_value.get())?false:true);
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalPressed);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalPressed);
|
||||||
signalPressed.emit(shared_from_this());
|
signalPressed.emit();
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value );
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value );
|
||||||
signalValue.emit(shared_from_this(), m_value.get());
|
signalValue.emit(m_value.get());
|
||||||
if( m_toggleMode.get() == false
|
if( m_toggleMode.get() == false
|
||||||
&& m_value.get() == true) {
|
&& m_value.get() == true) {
|
||||||
setValue(false);
|
setValue(false);
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value);
|
||||||
signalValue.emit(shared_from_this(), m_value.get());
|
signalValue.emit(m_value.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
@ -167,7 +167,7 @@ bool ewol::widget::Button::onEventEntry(const ewol::event::Entry& _event) {
|
|||||||
if( _event.getType() == ewol::key::keyboardChar
|
if( _event.getType() == ewol::key::keyboardChar
|
||||||
&& _event.getStatus() == ewol::key::statusDown
|
&& _event.getStatus() == ewol::key::statusDown
|
||||||
&& _event.getChar() == '\r') {
|
&& _event.getChar() == '\r') {
|
||||||
signalEnter.emit(shared_from_this());
|
signalEnter.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -225,7 +225,7 @@ void ewol::widget::ButtonColor::onReceiveMessage(const ewol::object::Message& _m
|
|||||||
if (_msg.getMessage() == eventColorHasChange) {
|
if (_msg.getMessage() == eventColorHasChange) {
|
||||||
m_textColorFg = _msg.getData();
|
m_textColorFg = _msg.getData();
|
||||||
// TODO : set a proper call
|
// TODO : set a proper call
|
||||||
//signalChange.emit(shared_from_this(), _msg.getData());
|
//signalChange.emit(_msg.getData());
|
||||||
EWOL_TODO("generate signal of change color : " << _msg.getData());
|
EWOL_TODO("generate signal of change color : " << _msg.getData());
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
|
@ -128,13 +128,13 @@ bool ewol::widget::CheckBox::onEventInput(const ewol::event::Input& _event) {
|
|||||||
if (1 == _event.getId()) {
|
if (1 == _event.getId()) {
|
||||||
if(ewol::key::statusDown == _event.getStatus()) {
|
if(ewol::key::statusDown == _event.getStatus()) {
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalDown);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalDown);
|
||||||
signalDown.emit(shared_from_this());
|
signalDown.emit();
|
||||||
m_buttonPressed = true;
|
m_buttonPressed = true;
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
if(ewol::key::statusUp == _event.getStatus()) {
|
if(ewol::key::statusUp == _event.getStatus()) {
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalUp);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalUp);
|
||||||
signalUp.emit(shared_from_this());
|
signalUp.emit();
|
||||||
m_buttonPressed = false;
|
m_buttonPressed = false;
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
@ -142,9 +142,9 @@ bool ewol::widget::CheckBox::onEventInput(const ewol::event::Input& _event) {
|
|||||||
// inverse value :
|
// inverse value :
|
||||||
setValue((m_value)?false:true);
|
setValue((m_value)?false:true);
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalPressed);
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalPressed);
|
||||||
signalPressed.emit(shared_from_this());
|
signalPressed.emit();
|
||||||
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value );
|
EWOL_VERBOSE(getName() << " : Generate event : " << signalValue << " val=" << m_value );
|
||||||
signalValue.emit(shared_from_this(), m_value.get());
|
signalValue.emit(m_value.get());
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,7 +162,7 @@ bool ewol::widget::CheckBox::onEventEntry(const ewol::event::Entry& _event) {
|
|||||||
if( _event.getType() == ewol::key::keyboardChar
|
if( _event.getType() == ewol::key::keyboardChar
|
||||||
&& _event.getStatus() == ewol::key::statusDown
|
&& _event.getStatus() == ewol::key::statusDown
|
||||||
&& _event.getChar() == '\r') {
|
&& _event.getChar() == '\r') {
|
||||||
signalEnter.emit(shared_from_this());
|
signalEnter.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -220,7 +220,7 @@ bool ewol::widget::ColorBar::onEventInput(const ewol::event::Input& _event) {
|
|||||||
}
|
}
|
||||||
if(m_currentColor != estimateColor) {
|
if(m_currentColor != estimateColor) {
|
||||||
m_currentColor = estimateColor;
|
m_currentColor = estimateColor;
|
||||||
signalChange.emit(shared_from_this(), m_currentColor);
|
signalChange.emit(m_currentColor);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -240,7 +240,7 @@ bool ewol::widget::Entry::onEventInput(const ewol::event::Input& _event) {
|
|||||||
if (1 == _event.getId()) {
|
if (1 == _event.getId()) {
|
||||||
if (ewol::key::statusSingle == _event.getStatus()) {
|
if (ewol::key::statusSingle == _event.getStatus()) {
|
||||||
keepFocus();
|
keepFocus();
|
||||||
signalClick.emit(shared_from_this());
|
signalClick.emit();
|
||||||
//nothing to do ...
|
//nothing to do ...
|
||||||
return true;
|
return true;
|
||||||
} else if (ewol::key::statusDouble == _event.getStatus()) {
|
} else if (ewol::key::statusDouble == _event.getStatus()) {
|
||||||
@ -335,7 +335,7 @@ bool ewol::widget::Entry::onEventEntry(const ewol::event::Entry& _event) {
|
|||||||
removeSelected();
|
removeSelected();
|
||||||
if( _event.getChar() == '\n'
|
if( _event.getChar() == '\n'
|
||||||
|| _event.getChar() == '\r') {
|
|| _event.getChar() == '\r') {
|
||||||
signalEnter.emit(shared_from_this(), m_data);
|
signalEnter.emit(m_data);
|
||||||
return true;
|
return true;
|
||||||
} else if (_event.getChar() == 0x7F) {
|
} else if (_event.getChar() == 0x7F) {
|
||||||
// SUPPR :
|
// SUPPR :
|
||||||
@ -365,7 +365,7 @@ bool ewol::widget::Entry::onEventEntry(const ewol::event::Entry& _event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signalModify.emit(shared_from_this(), m_data);
|
signalModify.emit(m_data);
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -437,7 +437,7 @@ void ewol::widget::Entry::onEventClipboard(enum ewol::context::clipBoard::clipbo
|
|||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signalModify.emit(shared_from_this(), m_data);
|
signalModify.emit(m_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ void ewol::widget::Entry::onReceiveMessage(const ewol::object::Message& _msg) {
|
|||||||
} else if(_msg.getMessage() == ewolEventEntryCut) {
|
} else if(_msg.getMessage() == ewolEventEntryCut) {
|
||||||
copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd);
|
copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd);
|
||||||
removeSelected();
|
removeSelected();
|
||||||
signalModify.emit(shared_from_this(), m_data);
|
signalModify.emit(m_data);
|
||||||
} else if(_msg.getMessage() == ewolEventEntryCopy) {
|
} else if(_msg.getMessage() == ewolEventEntryCopy) {
|
||||||
copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd);
|
copySelectionToClipBoard(ewol::context::clipBoard::clipboardStd);
|
||||||
} else if(_msg.getMessage() == ewolEventEntryPaste) {
|
} else if(_msg.getMessage() == ewolEventEntryPaste) {
|
||||||
|
@ -133,7 +133,7 @@ bool ewol::widget::Image::onEventInput(const ewol::event::Input& _event) {
|
|||||||
//EWOL_DEBUG("Event on BT ...");
|
//EWOL_DEBUG("Event on BT ...");
|
||||||
if (1 == _event.getId()) {
|
if (1 == _event.getId()) {
|
||||||
if(ewol::key::statusSingle == _event.getStatus()) {
|
if(ewol::key::statusSingle == _event.getStatus()) {
|
||||||
signalPressed.emit(shared_from_this());
|
signalPressed.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,10 +144,10 @@ bool ewol::widget::Joystick::onEventInput(const ewol::event::Input& _event) {
|
|||||||
}
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
if(ewol::key::statusDown == typeEvent) {
|
if(ewol::key::statusDown == typeEvent) {
|
||||||
signalEnable.emit(shared_from_this());
|
signalEnable.emit();
|
||||||
} else {
|
} else {
|
||||||
std::string tmp = std::string("distance=") + std::string(m_distance) + std::string("angle=") + std::string(m_angle+M_PI/2);
|
std::string tmp = std::string("distance=") + std::string(m_distance) + std::string("angle=") + std::string(m_angle+M_PI/2);
|
||||||
signalMove.emit(shared_from_this(), m_angle+M_PI/2);
|
signalMove.emit(m_angle+M_PI/2);
|
||||||
}
|
}
|
||||||
//teta += M_PI/2;
|
//teta += M_PI/2;
|
||||||
//EWOL_DEBUG("TETA = " << (m_angle*180/M_PI) << " deg distance = " << m_distance);
|
//EWOL_DEBUG("TETA = " << (m_angle*180/M_PI) << " deg distance = " << m_distance);
|
||||||
@ -163,7 +163,7 @@ bool ewol::widget::Joystick::onEventInput(const ewol::event::Input& _event) {
|
|||||||
m_distance = 0;
|
m_distance = 0;
|
||||||
}
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
signalDisable.emit(shared_from_this());
|
signalDisable.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -124,7 +124,7 @@ bool ewol::widget::Label::onEventInput(const ewol::event::Input& _event) {
|
|||||||
if (1 == _event.getId()) {
|
if (1 == _event.getId()) {
|
||||||
if (ewol::key::statusSingle == _event.getStatus()) {
|
if (ewol::key::statusSingle == _event.getStatus()) {
|
||||||
// nothing to do ...
|
// nothing to do ...
|
||||||
signalPressed.emit(shared_from_this());
|
signalPressed.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,21 +185,21 @@ bool ewol::widget::ListFileSystem::onItemEvent(int32_t _IdInput,
|
|||||||
if( m_showFolder == true
|
if( m_showFolder == true
|
||||||
&& m_selectedLine == 0) {
|
&& m_selectedLine == 0) {
|
||||||
// "." folder
|
// "." folder
|
||||||
signalFolderSelect.emit(shared_from_this(), ".");
|
signalFolderSelect.emit(".");
|
||||||
} else if ( m_showFolder == true
|
} else if ( m_showFolder == true
|
||||||
&& m_selectedLine == 1) {
|
&& m_selectedLine == 1) {
|
||||||
// ".." folder
|
// ".." folder
|
||||||
signalFolderSelect.emit(shared_from_this(), "..");
|
signalFolderSelect.emit("..");
|
||||||
} else if( m_selectedLine-offset >= 0
|
} else if( m_selectedLine-offset >= 0
|
||||||
&& m_selectedLine-offset < (int32_t)m_list.size()
|
&& m_selectedLine-offset < (int32_t)m_list.size()
|
||||||
&& nullptr != m_list[m_selectedLine-offset] ) {
|
&& nullptr != m_list[m_selectedLine-offset] ) {
|
||||||
// generate event extern :
|
// generate event extern :
|
||||||
switch(m_list[m_selectedLine-offset]->getNodeType()) {
|
switch(m_list[m_selectedLine-offset]->getNodeType()) {
|
||||||
case etk::FSN_FILE :
|
case etk::FSN_FILE :
|
||||||
signalFileSelect.emit(shared_from_this(), m_list[m_selectedLine-offset]->getNameFile());
|
signalFileSelect.emit(m_list[m_selectedLine-offset]->getNameFile());
|
||||||
break;
|
break;
|
||||||
case etk::FSN_FOLDER :
|
case etk::FSN_FOLDER :
|
||||||
signalFolderSelect.emit(shared_from_this(), m_list[m_selectedLine-offset]->getNameFile());
|
signalFolderSelect.emit(m_list[m_selectedLine-offset]->getNameFile());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
EWOL_ERROR("Can not generate event on an unknow type");
|
EWOL_ERROR("Can not generate event on an unknow type");
|
||||||
@ -210,20 +210,20 @@ bool ewol::widget::ListFileSystem::onItemEvent(int32_t _IdInput,
|
|||||||
if( m_showFolder == true
|
if( m_showFolder == true
|
||||||
&& m_selectedLine == 0) {
|
&& m_selectedLine == 0) {
|
||||||
// "." folder
|
// "." folder
|
||||||
signalFolderValidate.emit(shared_from_this(), ".");
|
signalFolderValidate.emit(".");
|
||||||
} else if ( m_showFolder == true
|
} else if ( m_showFolder == true
|
||||||
&& m_selectedLine == 1) {
|
&& m_selectedLine == 1) {
|
||||||
// ".." folder
|
// ".." folder
|
||||||
signalFolderValidate.emit(shared_from_this(), "..");
|
signalFolderValidate.emit("..");
|
||||||
} else if( m_selectedLine-offset >= 0
|
} else if( m_selectedLine-offset >= 0
|
||||||
&& m_selectedLine-offset < (int32_t)m_list.size()
|
&& m_selectedLine-offset < (int32_t)m_list.size()
|
||||||
&& nullptr != m_list[m_selectedLine-offset] ) {
|
&& nullptr != m_list[m_selectedLine-offset] ) {
|
||||||
switch(m_list[m_selectedLine-offset]->getNodeType()) {
|
switch(m_list[m_selectedLine-offset]->getNodeType()) {
|
||||||
case etk::FSN_FILE :
|
case etk::FSN_FILE :
|
||||||
signalFileValidate.emit(shared_from_this(), m_list[m_selectedLine-offset]->getNameFile());
|
signalFileValidate.emit(m_list[m_selectedLine-offset]->getNameFile());
|
||||||
break;
|
break;
|
||||||
case etk::FSN_FOLDER :
|
case etk::FSN_FOLDER :
|
||||||
signalFolderValidate.emit(shared_from_this(), m_list[m_selectedLine-offset]->getNameFile());
|
signalFolderValidate.emit(m_list[m_selectedLine-offset]->getNameFile());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
EWOL_ERROR("Can not generate event on an unknow type");
|
EWOL_ERROR("Can not generate event on an unknow type");
|
||||||
|
@ -97,7 +97,10 @@ int32_t ewol::widget::Menu::add(int32_t _parent,
|
|||||||
// add it in the widget list
|
// add it in the widget list
|
||||||
ewol::widget::Sizer::subWidgetAdd(myButton);
|
ewol::widget::Sizer::subWidgetAdd(myButton);
|
||||||
// keep the specific event ...
|
// keep the specific event ...
|
||||||
myButton->registerOnEvent(shared_from_this(), "pressed", eventButtonPressed);
|
//myButton->registerOnEvent(shared_from_this(), "pressed", eventButtonPressed);
|
||||||
|
std::weak_ptr<ewol::widget::Button> myButtonWeak(myButton);
|
||||||
|
//myButton->signalPressed.bind(shared_from_this(), &ewol::widget::Menu::onButtonPressed, myButtonWeak);
|
||||||
|
myButton->signalPressed.connect(shared_from_this(), std::bind(&ewol::widget::Menu::onButtonPressed, this, std::weak_ptr<ewol::widget::Button>(myButton)));
|
||||||
tmpObject.m_widgetPointer = myButton;
|
tmpObject.m_widgetPointer = myButton;
|
||||||
}
|
}
|
||||||
m_listElement.push_back(tmpObject);
|
m_listElement.push_back(tmpObject);
|
||||||
@ -108,136 +111,138 @@ void ewol::widget::Menu::addSpacer() {
|
|||||||
EWOL_TODO("NOT now...");
|
EWOL_TODO("NOT now...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::widget::Menu::onButtonPressed(std::weak_ptr<ewol::widget::Button> _button) {
|
||||||
void ewol::widget::Menu::onReceiveMessage(const ewol::object::Message& _msg) {
|
std::shared_ptr<ewol::widget::Button> caller = _button.lock();
|
||||||
/*
|
if (caller == nullptr) {
|
||||||
if (true == ewol::sizer::onReceiveMessage(_msg) {
|
return;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
*/
|
for (auto &it : m_listElement) {
|
||||||
EWOL_ERROR(" receive message : " << _msg);
|
if (caller == it.m_widgetPointer.lock()) {
|
||||||
if (_msg.getMessage() == eventButtonPressed) {
|
// 2 posible case (have a message or have a child ...
|
||||||
for (auto &it : m_listElement) {
|
if (it.m_generateEvent != nullptr) {
|
||||||
if (_msg.getCaller() == it.m_widgetPointer.lock()) {
|
EWOL_DEBUG("Menu == > generate Event");
|
||||||
// 2 posible case (have a message or have a child ...
|
// Send a multicast event ...
|
||||||
if (it.m_generateEvent != nullptr) {
|
sendMultiCast(it.m_generateEvent, it.m_message);
|
||||||
EWOL_DEBUG("Menu == > generate Event");
|
std::shared_ptr<ewol::widget::ContextMenu> tmpContext = m_widgetContextMenu.lock();
|
||||||
// Send a multicast event ...
|
if (tmpContext != nullptr) {
|
||||||
sendMultiCast(it.m_generateEvent, it.m_message);
|
EWOL_DEBUG("Mark the menu to remove ...");
|
||||||
std::shared_ptr<ewol::widget::ContextMenu> tmpContext = m_widgetContextMenu.lock();
|
tmpContext->destroy();
|
||||||
if (tmpContext != nullptr) {
|
|
||||||
EWOL_DEBUG("Mark the menu to remove ...");
|
|
||||||
tmpContext->destroy();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
} else{
|
|
||||||
EWOL_DEBUG("Menu == > load Sub Menu");
|
|
||||||
bool findChild = false;
|
|
||||||
for (auto &it2 : m_listElement) {
|
|
||||||
if (it.m_localId == it2.m_parentId) {
|
|
||||||
findChild = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (false == findChild) {
|
|
||||||
EWOL_WARNING("Event on menu element with no child an no event... label=" << it.m_label);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// create a context menu :
|
|
||||||
std::shared_ptr<ewol::widget::ContextMenu> tmpContext = ewol::widget::ContextMenu::create();
|
|
||||||
m_widgetContextMenu = tmpContext;
|
|
||||||
if (tmpContext == nullptr) {
|
|
||||||
EWOL_ERROR("Allocation Error");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// get the button widget :
|
|
||||||
vec2 newPosition;
|
|
||||||
std::shared_ptr<ewol::Widget> eventFromWidget = std::dynamic_pointer_cast<ewol::Widget>(_msg.getCaller());
|
|
||||||
if (eventFromWidget != nullptr) {
|
|
||||||
vec2 tmpOri = eventFromWidget->getOrigin();
|
|
||||||
vec2 tmpSize = eventFromWidget->getSize();
|
|
||||||
// calculate the correct position
|
|
||||||
newPosition.setValue(tmpOri.x() + tmpSize.x()/2,
|
|
||||||
tmpOri.y() );
|
|
||||||
}
|
|
||||||
tmpContext->setPositionMark(ewol::widget::ContextMenu::markTop, newPosition );
|
|
||||||
|
|
||||||
std::shared_ptr<ewol::widget::Sizer> mySizer;
|
|
||||||
std::shared_ptr<ewol::widget::Button> myButton;
|
|
||||||
|
|
||||||
mySizer = ewol::widget::Sizer::create(widget::Sizer::modeVert);
|
|
||||||
if (nullptr != mySizer) {
|
|
||||||
mySizer->lockExpand(vec2(true,true));
|
|
||||||
// set it in the pop-up-system :
|
|
||||||
tmpContext->setSubWidget(mySizer);
|
|
||||||
|
|
||||||
bool menuHaveImage = false;
|
|
||||||
for (auto &it2 : m_listElement) {
|
|
||||||
if (it.m_localId == it2.m_parentId) {
|
|
||||||
if (it2.m_image.size()!=0) {
|
|
||||||
menuHaveImage = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (auto it2=m_listElement.rbegin(); it2!=m_listElement.rend() ; ++it2) {
|
|
||||||
if (it.m_localId == it2->m_parentId) {
|
|
||||||
myButton = ewol::widget::Button::create();
|
|
||||||
if (myButton == nullptr) {
|
|
||||||
EWOL_ERROR("Allocation Error");
|
|
||||||
} else {
|
|
||||||
if (it2->m_image.size()!=0) {
|
|
||||||
std::string composeString = "<composer expand=\"true,false\" fill=\"true,true\">\n";
|
|
||||||
composeString+= " <sizer mode=\"hori\" expand=\"true,false\" fill=\"true,true\" lock=\"true\">\n";
|
|
||||||
if (etk::end_with(it2->m_image, ".edf") == true) {
|
|
||||||
composeString+=" <image src=\"" + it2->m_image + "\" size=\"8,8mm\" distance-field='true'/>\n";
|
|
||||||
} else {
|
|
||||||
composeString+=" <image src=\"" + it2->m_image + "\" size=\"8,8mm\"/>\n";
|
|
||||||
}
|
|
||||||
composeString+=" <label exand=\"true,true\" fill=\"true,true\">" + it2->m_label + "</label>\n";
|
|
||||||
composeString+=" </sizer>\n";
|
|
||||||
composeString+="</composer>\n";
|
|
||||||
myButton->setSubWidget(ewol::widget::Composer::create(widget::Composer::String, composeString));
|
|
||||||
} else {
|
|
||||||
if (true == menuHaveImage) {
|
|
||||||
myButton->setSubWidget(ewol::widget::Composer::create(widget::Composer::String,
|
|
||||||
std::string("<composer expand=\"true,false\" fill=\"true,true\">\n") +
|
|
||||||
" <sizer mode=\"hori\" expand=\"true,false\" fill=\"true,true\" lock=\"true\">\n"
|
|
||||||
" <spacer min-size=\"8,0mm\"/>\n"
|
|
||||||
" <label exand=\"true,true\" fill=\"true,true\"><![CDATA[" + it2->m_label + "]]></label>\n"
|
|
||||||
" </sizer>\n"
|
|
||||||
"</composer>\n"));
|
|
||||||
} else {
|
|
||||||
std::shared_ptr<ewol::widget::Label> tmpLabel = widget::Label::create(std::string("<left>") + it2->m_label + "</left>\n");
|
|
||||||
if (tmpLabel != nullptr) {
|
|
||||||
tmpLabel->setExpand(bvec2(true,false));
|
|
||||||
tmpLabel->setFill(bvec2(true,true));
|
|
||||||
myButton->setSubWidget(tmpLabel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// set the image if one is present ...
|
|
||||||
myButton->registerOnEvent(shared_from_this(), "pressed", eventButtonPressed);
|
|
||||||
myButton->setExpand(bvec2(true,false));
|
|
||||||
myButton->setFill(bvec2(true,false));
|
|
||||||
// add it in the widget list
|
|
||||||
mySizer->subWidgetAdd(myButton);
|
|
||||||
it2->m_widgetPointer = myButton;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::shared_ptr<ewol::widget::Windows> currentWindows = getWindows();
|
|
||||||
if (currentWindows == nullptr) {
|
|
||||||
EWOL_ERROR("Can not get the curent Windows...");
|
|
||||||
} else {
|
|
||||||
currentWindows->popUpWidgetPush(tmpContext);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
} else{
|
||||||
|
EWOL_DEBUG("Menu == > load Sub Menu");
|
||||||
|
bool findChild = false;
|
||||||
|
for (auto &it2 : m_listElement) {
|
||||||
|
if (it.m_localId == it2.m_parentId) {
|
||||||
|
findChild = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (false == findChild) {
|
||||||
|
EWOL_WARNING("Event on menu element with no child an no event... label=" << it.m_label);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// create a context menu :
|
||||||
|
std::shared_ptr<ewol::widget::ContextMenu> tmpContext = ewol::widget::ContextMenu::create();
|
||||||
|
m_widgetContextMenu = tmpContext;
|
||||||
|
if (tmpContext == nullptr) {
|
||||||
|
EWOL_ERROR("Allocation Error");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// get the button widget :
|
||||||
|
vec2 newPosition;
|
||||||
|
std::shared_ptr<ewol::Widget> eventFromWidget = std::dynamic_pointer_cast<ewol::Widget>(caller);
|
||||||
|
if (eventFromWidget != nullptr) {
|
||||||
|
vec2 tmpOri = eventFromWidget->getOrigin();
|
||||||
|
vec2 tmpSize = eventFromWidget->getSize();
|
||||||
|
// calculate the correct position
|
||||||
|
newPosition.setValue(tmpOri.x() + tmpSize.x()/2,
|
||||||
|
tmpOri.y() );
|
||||||
|
}
|
||||||
|
tmpContext->setPositionMark(ewol::widget::ContextMenu::markTop, newPosition );
|
||||||
|
|
||||||
|
std::shared_ptr<ewol::widget::Sizer> mySizer;
|
||||||
|
std::shared_ptr<ewol::widget::Button> myButton;
|
||||||
|
|
||||||
|
mySizer = ewol::widget::Sizer::create(widget::Sizer::modeVert);
|
||||||
|
if (nullptr != mySizer) {
|
||||||
|
mySizer->lockExpand(vec2(true,true));
|
||||||
|
// set it in the pop-up-system :
|
||||||
|
tmpContext->setSubWidget(mySizer);
|
||||||
|
|
||||||
|
bool menuHaveImage = false;
|
||||||
|
for (auto &it2 : m_listElement) {
|
||||||
|
if (it.m_localId == it2.m_parentId) {
|
||||||
|
if (it2.m_image.size()!=0) {
|
||||||
|
menuHaveImage = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (auto it2=m_listElement.rbegin(); it2!=m_listElement.rend() ; ++it2) {
|
||||||
|
if (it.m_localId == it2->m_parentId) {
|
||||||
|
myButton = ewol::widget::Button::create();
|
||||||
|
if (myButton == nullptr) {
|
||||||
|
EWOL_ERROR("Allocation Error");
|
||||||
|
} else {
|
||||||
|
if (it2->m_image.size()!=0) {
|
||||||
|
std::string composeString = "<composer expand=\"true,false\" fill=\"true,true\">\n";
|
||||||
|
composeString+= " <sizer mode=\"hori\" expand=\"true,false\" fill=\"true,true\" lock=\"true\">\n";
|
||||||
|
if (etk::end_with(it2->m_image, ".edf") == true) {
|
||||||
|
composeString+=" <image src=\"" + it2->m_image + "\" size=\"8,8mm\" distance-field='true'/>\n";
|
||||||
|
} else {
|
||||||
|
composeString+=" <image src=\"" + it2->m_image + "\" size=\"8,8mm\"/>\n";
|
||||||
|
}
|
||||||
|
composeString+=" <label exand=\"true,true\" fill=\"true,true\">" + it2->m_label + "</label>\n";
|
||||||
|
composeString+=" </sizer>\n";
|
||||||
|
composeString+="</composer>\n";
|
||||||
|
myButton->setSubWidget(ewol::widget::Composer::create(widget::Composer::String, composeString));
|
||||||
|
} else {
|
||||||
|
if (true == menuHaveImage) {
|
||||||
|
myButton->setSubWidget(ewol::widget::Composer::create(widget::Composer::String,
|
||||||
|
std::string("<composer expand=\"true,false\" fill=\"true,true\">\n") +
|
||||||
|
" <sizer mode=\"hori\" expand=\"true,false\" fill=\"true,true\" lock=\"true\">\n"
|
||||||
|
" <spacer min-size=\"8,0mm\"/>\n"
|
||||||
|
" <label exand=\"true,true\" fill=\"true,true\"><![CDATA[" + it2->m_label + "]]></label>\n"
|
||||||
|
" </sizer>\n"
|
||||||
|
"</composer>\n"));
|
||||||
|
} else {
|
||||||
|
std::shared_ptr<ewol::widget::Label> tmpLabel = widget::Label::create(std::string("<left>") + it2->m_label + "</left>\n");
|
||||||
|
if (tmpLabel != nullptr) {
|
||||||
|
tmpLabel->setExpand(bvec2(true,false));
|
||||||
|
tmpLabel->setFill(bvec2(true,true));
|
||||||
|
myButton->setSubWidget(tmpLabel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// set the image if one is present ...
|
||||||
|
//myButton->registerOnEvent(shared_from_this(), "pressed", eventButtonPressed);
|
||||||
|
myButton->signalPressed.connect(shared_from_this(), std::bind(&ewol::widget::Menu::onButtonPressed, this, std::weak_ptr<ewol::widget::Button>(myButton)));
|
||||||
|
myButton->setExpand(bvec2(true,false));
|
||||||
|
myButton->setFill(bvec2(true,false));
|
||||||
|
// add it in the widget list
|
||||||
|
mySizer->subWidgetAdd(myButton);
|
||||||
|
it2->m_widgetPointer = myButton;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::shared_ptr<ewol::widget::Windows> currentWindows = getWindows();
|
||||||
|
if (currentWindows == nullptr) {
|
||||||
|
EWOL_ERROR("Can not get the curent Windows...");
|
||||||
|
} else {
|
||||||
|
currentWindows->popUpWidgetPush(tmpContext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ewol::widget::Menu::onReceiveMessage(const ewol::object::Message& _msg) {
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include <etk/types.h>
|
#include <etk/types.h>
|
||||||
#include <ewol/debug.h>
|
#include <ewol/debug.h>
|
||||||
#include <ewol/widget/Widget.h>
|
#include <ewol/widget/Widget.h>
|
||||||
|
#include <ewol/widget/Button.h>
|
||||||
#include <ewol/widget/Sizer.h>
|
#include <ewol/widget/Sizer.h>
|
||||||
#include <ewol/widget/ContextMenu.h>
|
#include <ewol/widget/ContextMenu.h>
|
||||||
|
|
||||||
@ -55,6 +56,8 @@ namespace ewol {
|
|||||||
void addSpacer();
|
void addSpacer();
|
||||||
// Derived function
|
// Derived function
|
||||||
virtual void onReceiveMessage(const ewol::object::Message& _msg);
|
virtual void onReceiveMessage(const ewol::object::Message& _msg);
|
||||||
|
private:
|
||||||
|
void onButtonPressed(std::weak_ptr<ewol::widget::Button> _button);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -107,7 +107,7 @@ bool ewol::widget::Slider::onEventInput(const ewol::event::Input& _event) {
|
|||||||
m_value = std::max(std::min(m_value, m_max), m_min);
|
m_value = std::max(std::min(m_value, m_max), m_min);
|
||||||
if (oldValue != m_value) {
|
if (oldValue != m_value) {
|
||||||
EWOL_DEBUG(" new value : " << m_value << " in [" << m_min << ".." << m_max << "]");
|
EWOL_DEBUG(" new value : " << m_value << " in [" << m_min << ".." << m_max << "]");
|
||||||
signalChange.emit(shared_from_this(), m_value);
|
signalChange.emit(m_value);
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -101,7 +101,7 @@ void ewol::widget::WSlider::subWidgetSelectSetVectorId(int32_t _id) {
|
|||||||
}
|
}
|
||||||
if (_id != m_windowsDestination) {
|
if (_id != m_windowsDestination) {
|
||||||
m_windowsRequested = _id;
|
m_windowsRequested = _id;
|
||||||
signalStartSlide.emit(shared_from_this());
|
signalStartSlide.emit();
|
||||||
periodicCallEnable();
|
periodicCallEnable();
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
}
|
}
|
||||||
@ -185,7 +185,7 @@ void ewol::widget::WSlider::periodicCall(const ewol::event::Time& _event) {
|
|||||||
} else {
|
} else {
|
||||||
// end of periodic :
|
// end of periodic :
|
||||||
periodicCallDisable();
|
periodicCallDisable();
|
||||||
signalStopSlide.emit(shared_from_this());
|
signalStopSlide.emit();
|
||||||
}
|
}
|
||||||
m_windowsRequested = -1;
|
m_windowsRequested = -1;
|
||||||
}
|
}
|
||||||
|
@ -556,7 +556,7 @@ bool ewol::Widget::onEventShortCut(ewol::key::Special& _special,
|
|||||||
sendMultiCast(m_localShortcut[iii]->generateEventId, m_localShortcut[iii]->eventData);
|
sendMultiCast(m_localShortcut[iii]->generateEventId, m_localShortcut[iii]->eventData);
|
||||||
}
|
}
|
||||||
// send message direct to the current widget (in every case, really useful for some generic windows shortcut)
|
// send message direct to the current widget (in every case, really useful for some generic windows shortcut)
|
||||||
ewol::object::Message tmpMsg(shared_from_this(), m_localShortcut[iii]->generateEventId, m_localShortcut[iii]->eventData);
|
ewol::object::Message tmpMsg(m_localShortcut[iii]->generateEventId, m_localShortcut[iii]->eventData);
|
||||||
onReceiveMessage(tmpMsg);
|
onReceiveMessage(tmpMsg);
|
||||||
} // no else
|
} // no else
|
||||||
return true;
|
return true;
|
||||||
|
@ -23,7 +23,6 @@ extern "C" {
|
|||||||
#define __class__ "ColorChooser"
|
#define __class__ "ColorChooser"
|
||||||
|
|
||||||
static const char * const eventColorBarHasChange = "event-color-bar-has-change";
|
static const char * const eventColorBarHasChange = "event-color-bar-has-change";
|
||||||
static const char * const eventColorSpecificHasChange = "event-color-specific-has-change";
|
|
||||||
|
|
||||||
|
|
||||||
ewol::widget::ColorChooser::ColorChooser() :
|
ewol::widget::ColorChooser::ColorChooser() :
|
||||||
@ -43,7 +42,7 @@ void ewol::widget::ColorChooser::init() {
|
|||||||
sliderColor = etk::color::black;
|
sliderColor = etk::color::black;
|
||||||
|
|
||||||
m_widgetRed = ewol::widget::Slider::create();
|
m_widgetRed = ewol::widget::Slider::create();
|
||||||
m_widgetRed->registerOnEvent(shared_from_this(), "change", eventColorSpecificHasChange);
|
m_widgetRed->signalChange.bind(shared_from_this(), &ewol::widget::ColorChooser::onCallbackColorChangeRed);
|
||||||
m_widgetRed->setExpand(bvec2(true,false));
|
m_widgetRed->setExpand(bvec2(true,false));
|
||||||
m_widgetRed->setFill(bvec2(true,false));
|
m_widgetRed->setFill(bvec2(true,false));
|
||||||
m_widgetRed->setMin(0);
|
m_widgetRed->setMin(0);
|
||||||
@ -52,7 +51,7 @@ void ewol::widget::ColorChooser::init() {
|
|||||||
m_widgetRed->setColor(sliderColor);
|
m_widgetRed->setColor(sliderColor);
|
||||||
subWidgetAdd(m_widgetRed);
|
subWidgetAdd(m_widgetRed);
|
||||||
m_widgetGreen = ewol::widget::Slider::create();
|
m_widgetGreen = ewol::widget::Slider::create();
|
||||||
m_widgetGreen->registerOnEvent(shared_from_this(), "change", eventColorSpecificHasChange);
|
m_widgetGreen->signalChange.bind(shared_from_this(), &ewol::widget::ColorChooser::onCallbackColorChangeGreen);
|
||||||
m_widgetGreen->setExpand(bvec2(true,false));
|
m_widgetGreen->setExpand(bvec2(true,false));
|
||||||
m_widgetGreen->setFill(bvec2(true,false));
|
m_widgetGreen->setFill(bvec2(true,false));
|
||||||
m_widgetGreen->setMin(0);
|
m_widgetGreen->setMin(0);
|
||||||
@ -61,7 +60,7 @@ void ewol::widget::ColorChooser::init() {
|
|||||||
m_widgetGreen->setMax(255);
|
m_widgetGreen->setMax(255);
|
||||||
subWidgetAdd(m_widgetGreen);
|
subWidgetAdd(m_widgetGreen);
|
||||||
m_widgetBlue = ewol::widget::Slider::create();
|
m_widgetBlue = ewol::widget::Slider::create();
|
||||||
m_widgetBlue->registerOnEvent(shared_from_this(), "change", eventColorSpecificHasChange);
|
m_widgetBlue->signalChange.bind(shared_from_this(), &ewol::widget::ColorChooser::onCallbackColorChangeBlue);
|
||||||
m_widgetBlue->setExpand(bvec2(true,false));
|
m_widgetBlue->setExpand(bvec2(true,false));
|
||||||
m_widgetBlue->setFill(bvec2(true,false));
|
m_widgetBlue->setFill(bvec2(true,false));
|
||||||
m_widgetBlue->setMin(0);
|
m_widgetBlue->setMin(0);
|
||||||
@ -70,7 +69,7 @@ void ewol::widget::ColorChooser::init() {
|
|||||||
m_widgetBlue->setMax(255);
|
m_widgetBlue->setMax(255);
|
||||||
subWidgetAdd(m_widgetBlue);
|
subWidgetAdd(m_widgetBlue);
|
||||||
m_widgetAlpha = ewol::widget::Slider::create();
|
m_widgetAlpha = ewol::widget::Slider::create();
|
||||||
m_widgetAlpha->registerOnEvent(shared_from_this(), "change", eventColorSpecificHasChange);
|
m_widgetAlpha->signalChange.bind(shared_from_this(), &ewol::widget::ColorChooser::onCallbackColorChangeAlpha);
|
||||||
m_widgetAlpha->setExpand(bvec2(true,false));
|
m_widgetAlpha->setExpand(bvec2(true,false));
|
||||||
m_widgetAlpha->setFill(bvec2(true,false));
|
m_widgetAlpha->setFill(bvec2(true,false));
|
||||||
m_widgetAlpha->setMin(0);
|
m_widgetAlpha->setMin(0);
|
||||||
@ -112,9 +111,6 @@ etk::Color<> ewol::widget::ColorChooser::getColor() {
|
|||||||
|
|
||||||
|
|
||||||
void ewol::widget::ColorChooser::onReceiveMessage(const ewol::object::Message& _msg) {
|
void ewol::widget::ColorChooser::onReceiveMessage(const ewol::object::Message& _msg) {
|
||||||
if (nullptr == _msg.getCaller()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//EWOL_INFO("Receive Extern Event ... : widgetPointer=" << CallerObject << "\"" << eventId << "\" == > data=\"" << data << "\"" );
|
//EWOL_INFO("Receive Extern Event ... : widgetPointer=" << CallerObject << "\"" << eventId << "\" == > data=\"" << data << "\"" );
|
||||||
if (eventColorBarHasChange == _msg.getMessage()) {
|
if (eventColorBarHasChange == _msg.getMessage()) {
|
||||||
// == > colorBar has change ...
|
// == > colorBar has change ...
|
||||||
@ -136,25 +132,35 @@ void ewol::widget::ColorChooser::onReceiveMessage(const ewol::object::Message& _
|
|||||||
if (nullptr != m_widgetAlpha) {
|
if (nullptr != m_widgetAlpha) {
|
||||||
m_widgetAlpha->setValue(m_currentColor.a());
|
m_widgetAlpha->setValue(m_currentColor.a());
|
||||||
}
|
}
|
||||||
signalChange.emit(shared_from_this(), m_currentColor);
|
signalChange.emit(m_currentColor);
|
||||||
} else if (eventColorSpecificHasChange == _msg.getMessage()) {
|
|
||||||
// Slider has changes his color == > get the one change ...
|
|
||||||
if (_msg.getCaller() == m_widgetRed) {
|
|
||||||
m_currentColor.setR(m_widgetRed->getValue());
|
|
||||||
}
|
|
||||||
if (_msg.getCaller() == m_widgetGreen) {
|
|
||||||
m_currentColor.setG(m_widgetGreen->getValue());
|
|
||||||
}
|
|
||||||
if (_msg.getCaller() == m_widgetBlue) {
|
|
||||||
m_currentColor.setB(m_widgetBlue->getValue());
|
|
||||||
}
|
|
||||||
if (_msg.getCaller() == m_widgetAlpha) {
|
|
||||||
m_currentColor.setA(m_widgetAlpha->getValue());
|
|
||||||
}
|
|
||||||
if (nullptr != m_widgetColorBar) {
|
|
||||||
m_widgetColorBar->setCurrentColor(m_currentColor);
|
|
||||||
}
|
|
||||||
signalChange.emit(shared_from_this(), m_currentColor);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void ewol::widget::ColorChooser::onCallbackColorChangeRed(const int32_t& _newColor) {
|
||||||
|
m_currentColor.setR(_newColor);
|
||||||
|
if (nullptr != m_widgetColorBar) {
|
||||||
|
m_widgetColorBar->setCurrentColor(m_currentColor);
|
||||||
|
}
|
||||||
|
signalChange.emit(m_currentColor);
|
||||||
|
}
|
||||||
|
void ewol::widget::ColorChooser::onCallbackColorChangeGreen(const int32_t& _newColor) {
|
||||||
|
m_currentColor.setG(_newColor);
|
||||||
|
if (nullptr != m_widgetColorBar) {
|
||||||
|
m_widgetColorBar->setCurrentColor(m_currentColor);
|
||||||
|
}
|
||||||
|
signalChange.emit(m_currentColor);
|
||||||
|
}
|
||||||
|
void ewol::widget::ColorChooser::onCallbackColorChangeBlue(const int32_t& _newColor) {
|
||||||
|
m_currentColor.setB(_newColor);
|
||||||
|
if (nullptr != m_widgetColorBar) {
|
||||||
|
m_widgetColorBar->setCurrentColor(m_currentColor);
|
||||||
|
}
|
||||||
|
signalChange.emit(m_currentColor);
|
||||||
|
}
|
||||||
|
void ewol::widget::ColorChooser::onCallbackColorChangeAlpha(const int32_t& _newColor) {
|
||||||
|
m_currentColor.setA(_newColor);
|
||||||
|
if (nullptr != m_widgetColorBar) {
|
||||||
|
m_widgetColorBar->setCurrentColor(m_currentColor);
|
||||||
|
}
|
||||||
|
signalChange.emit(m_currentColor);
|
||||||
|
}
|
||||||
|
@ -47,6 +47,10 @@ namespace ewol {
|
|||||||
std::shared_ptr<ewol::widget::Slider> m_widgetBlue;
|
std::shared_ptr<ewol::widget::Slider> m_widgetBlue;
|
||||||
std::shared_ptr<ewol::widget::Slider> m_widgetAlpha;
|
std::shared_ptr<ewol::widget::Slider> m_widgetAlpha;
|
||||||
etk::Color<> m_currentColor;
|
etk::Color<> m_currentColor;
|
||||||
|
void onCallbackColorChangeRed(const int32_t& _newColor);
|
||||||
|
void onCallbackColorChangeGreen(const int32_t& _newColor);
|
||||||
|
void onCallbackColorChangeBlue(const int32_t& _newColor);
|
||||||
|
void onCallbackColorChangeAlpha(const int32_t& _newColor);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -164,7 +164,7 @@ void ewol::widget::FileChooser::onReceiveMessage(const ewol::object::Message& _m
|
|||||||
parameterSetOnWidgetNamed("[" + etk::to_string(getId()) + "]file-shooser:list-files", "select", m_file);
|
parameterSetOnWidgetNamed("[" + etk::to_string(getId()) + "]file-shooser:list-files", "select", m_file);
|
||||||
} else if (ewolEventFileChooserCancel == _msg.getMessage()) {
|
} else if (ewolEventFileChooserCancel == _msg.getMessage()) {
|
||||||
// == > Auto remove ...
|
// == > Auto remove ...
|
||||||
signalCancel.emit(shared_from_this());
|
signalCancel.emit();
|
||||||
autoDestroy();
|
autoDestroy();
|
||||||
} else if (_msg.getMessage() == ewolEventFileChooserHidenFileChange) {
|
} else if (_msg.getMessage() == ewolEventFileChooserHidenFileChange) {
|
||||||
if (_msg.getData() == "true") {
|
if (_msg.getData() == "true") {
|
||||||
@ -195,7 +195,7 @@ void ewol::widget::FileChooser::onReceiveMessage(const ewol::object::Message& _m
|
|||||||
setFileName(_msg.getData());
|
setFileName(_msg.getData());
|
||||||
}
|
}
|
||||||
EWOL_VERBOSE(" generate a fiel opening : \"" << m_folder << "\" / \"" << m_file << "\"");
|
EWOL_VERBOSE(" generate a fiel opening : \"" << m_folder << "\" / \"" << m_file << "\"");
|
||||||
signalValidate.emit(shared_from_this(), getCompleateFileName());
|
signalValidate.emit(getCompleateFileName());
|
||||||
autoDestroy();
|
autoDestroy();
|
||||||
} else if(_msg.getMessage() == ewolEventFileChooserHome) {
|
} else if(_msg.getMessage() == ewolEventFileChooserHome) {
|
||||||
std::string tmpUserFolder = etk::getUserHomeFolder();
|
std::string tmpUserFolder = etk::getUserHomeFolder();
|
||||||
|
@ -200,7 +200,7 @@ void ewol::widget::Parameter::onReceiveMessage(const ewol::object::Message& _msg
|
|||||||
EWOL_DEBUG("event on the parameter : " << _msg);
|
EWOL_DEBUG("event on the parameter : " << _msg);
|
||||||
if (_msg.getMessage() == ewolEventMenuclosed) {
|
if (_msg.getMessage() == ewolEventMenuclosed) {
|
||||||
// inform that the parameter windows is closed
|
// inform that the parameter windows is closed
|
||||||
signalClose.emit(shared_from_this());
|
signalClose.emit();
|
||||||
// close this widget ...
|
// close this widget ...
|
||||||
autoDestroy();
|
autoDestroy();
|
||||||
} else if (_msg.getMessage() == ewolEventParameterSave) {
|
} else if (_msg.getMessage() == ewolEventParameterSave) {
|
||||||
|
@ -190,7 +190,7 @@ bool ewol::widget::ParameterList::onEventInput(const ewol::event::Input& _event)
|
|||||||
if (rawID >= 0 && (size_t)rawID < m_list.size()) {
|
if (rawID >= 0 && (size_t)rawID < m_list.size()) {
|
||||||
if (m_list[rawID]!=nullptr) {
|
if (m_list[rawID]!=nullptr) {
|
||||||
if (m_list[rawID]->m_refId >= 0) {
|
if (m_list[rawID]->m_refId >= 0) {
|
||||||
signalSelect.emit(shared_from_this(), m_list[rawID]->m_refId);
|
signalSelect.emit(m_list[rawID]->m_refId);
|
||||||
m_idSelected = rawID;
|
m_idSelected = rawID;
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user