Skip to content

Commit

Permalink
Add script-specific CUIDialogWndEx::AddCallback overload.
Browse files Browse the repository at this point in the history
  • Loading branch information
nitrocaster committed Nov 24, 2015
1 parent 2f5ae7c commit 596e2b9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 24 deletions.
50 changes: 27 additions & 23 deletions src/xrGame/ui/UIScriptWnd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,60 +8,64 @@ CUIDialogWndEx::CUIDialogWndEx()

CUIDialogWndEx::~CUIDialogWndEx()
{
delete_data(m_callbacks);
delete_data(m_callbacks);
}

void CUIDialogWndEx::Register (CUIWindow* pChild)
void CUIDialogWndEx::Register (CUIWindow* pChild)
{
pChild->SetMessageTarget(this);
pChild->SetMessageTarget(this);
}

void CUIDialogWndEx::Register(CUIWindow* pChild, LPCSTR name)
{
pChild->SetWindowName(name);
pChild->SetMessageTarget(this);
pChild->SetWindowName(name);
pChild->SetMessageTarget(this);
}

void CUIDialogWndEx::SendMessage(CUIWindow* pWnd, s16 msg, void* pData)
{
event_comparer ec(pWnd,msg);
event_comparer ec(pWnd,msg);

CALLBACK_IT it = std::find_if(m_callbacks.begin(),m_callbacks.end(),ec);
if(it==m_callbacks.end())
return inherited::SendMessage(pWnd, msg, pData);
CALLBACK_IT it = std::find_if(m_callbacks.begin(),m_callbacks.end(),ec);
if(it==m_callbacks.end())
return inherited::SendMessage(pWnd, msg, pData);

((*it)->m_callback)();
((*it)->m_callback)();

// if ( (*it)->m_cpp_callback )
// (*it)->m_cpp_callback(pData);
// if ( (*it)->m_cpp_callback )
// (*it)->m_cpp_callback(pData);
}

bool CUIDialogWndEx::Load(LPCSTR xml_name)
{
return true;
return true;
}

SCallbackInfo* CUIDialogWndEx::NewCallback ()
SCallbackInfo* CUIDialogWndEx::NewCallback ()
{
m_callbacks.push_back( xr_new<SCallbackInfo>() );
return m_callbacks.back();
m_callbacks.push_back( xr_new<SCallbackInfo>() );
return m_callbacks.back();
}

void CUIDialogWndEx::AddCallback (LPCSTR control_id, s16 evt, const luabind::functor<void> &functor, const luabind::object &object)
void CUIDialogWndEx::AddCallback(LPCSTR control_id, s16 evt, const luabind::functor<void> &functor, const luabind::object &object)
{ AddCallback(control_id, evt, functor, object); }

void CUIDialogWndEx::AddCallback(LPCSTR control_id, s16 evt,
const luabind::object &functor, const luabind::object &object)
{
SCallbackInfo* c = NewCallback ();
c->m_callback.set (functor,object);
c->m_control_name = control_id;
c->m_event = evt;
SCallbackInfo* c = NewCallback ();
c->m_callback.set (functor,object);
c->m_control_name = control_id;
c->m_event = evt;
}



bool CUIDialogWndEx::OnKeyboardAction(int dik, EUIMessages keyboard_action)
{
return inherited::OnKeyboardAction(dik,keyboard_action);
return inherited::OnKeyboardAction(dik,keyboard_action);
}
void CUIDialogWndEx::Update()
{
inherited::Update();
inherited::Update();
}
2 changes: 2 additions & 0 deletions src/xrGame/ui/UIScriptWnd.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ typedef CALLBACKS::iterator CALLBACK_IT;
void Register (CUIWindow* pChild, LPCSTR name);
CUIDialogWndEx ();
virtual ~CUIDialogWndEx ();
// XXX: declaration without implementation
void AddCallback (LPCSTR control_id, s16 event, const luabind::functor<void> &lua_function);
void AddCallback (LPCSTR control_id, s16 event, const luabind::functor<void> &functor, const luabind::object &object);
void AddCallback(const char *controlId, s16 event, const luabind::object &functor, const luabind::object &object);
virtual void Update ();
virtual bool OnKeyboardAction (int dik, EUIMessages keyboard_action);
virtual bool Dispatch (int cmd, int param) {return true;}
Expand Down
2 changes: 1 addition & 1 deletion src/xrGame/ui/UIScriptWnd_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export_class &script_register_ui_window1(export_class &instance)
{
instance
.def( constructor<>())
.def("AddCallback", (void(BaseType::*)(LPCSTR, s16, const luabind::functor<void>&, const luabind::object&))&BaseType::AddCallback)
.def("AddCallback", (void(BaseType::*)(LPCSTR, s16, const luabind::object&, const luabind::object&))&BaseType::AddCallback)
.def("Register", (void (BaseType::*)(CUIWindow*,LPCSTR))&BaseType::Register);
return (instance);
}

0 comments on commit 596e2b9

Please sign in to comment.