57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
#include "pch.h"
|
|
#include "log.h"
|
|
#include "node_message_box.h"
|
|
#include "layout.h"
|
|
|
|
Node* NodeMessageBox::clone_instantiate() const
|
|
{
|
|
return new NodeMessageBox();
|
|
}
|
|
|
|
void NodeMessageBox::init()
|
|
{
|
|
SetPosition(0, 0);
|
|
SetWidthP(100);
|
|
SetHeightP(100);
|
|
SetPositioning(YGPositionTypeAbsolute);
|
|
auto m_template = (*m_manager)[const_hash("message-box")]->m_children[0]->clone();
|
|
add_child(m_template);
|
|
m_title = m_template->find<NodeText>("title");
|
|
m_message = m_template->find<NodeText>("message");
|
|
btn_ok = m_template->find<NodeButton>("btn-ok");
|
|
btn_ok->on_click = [&](Node*) {
|
|
if (on_submit)
|
|
on_submit(this);
|
|
};
|
|
btn_cancel = m_template->find<NodeButton>("btn-cancel");
|
|
on_submit = btn_cancel->on_click = [&](Node*) { destroy(); };
|
|
m_capture_children = false; // don't capture children events on mouse_capture
|
|
}
|
|
|
|
kEventResult NodeMessageBox::handle_event(Event* e)
|
|
{
|
|
Node::handle_event(e);
|
|
auto ke = (KeyEvent*)e;
|
|
switch (e->m_type)
|
|
{
|
|
case kEventType::KeyDown:
|
|
break;
|
|
case kEventType::KeyUp:
|
|
if (ke->m_key == kKey::KeyEnter && on_submit)
|
|
on_submit(this);
|
|
break;
|
|
case kEventType::KeyChar:
|
|
break;
|
|
default:
|
|
return kEventResult::Available;
|
|
break;
|
|
}
|
|
return kEventResult::Consumed;
|
|
}
|
|
|
|
void NodeMessageBox::added(Node* parent)
|
|
{
|
|
Node::added(parent);
|
|
mouse_capture();
|
|
}
|