From f4a5bae0c010e3c20d6420c9de2bb74182b26b6e Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Thu, 17 Mar 2011 23:58:19 +0200 Subject: events are working ) --- plugins/example/main.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) (limited to 'plugins/example/main.cpp') diff --git a/plugins/example/main.cpp b/plugins/example/main.cpp index c556d47..00fde1e 100644 --- a/plugins/example/main.cpp +++ b/plugins/example/main.cpp @@ -18,19 +18,62 @@ extern PLUGININFO pluginInfo; IMPLEMENT_APP_NO_MAIN(wxPluginForEvilCore) //main() does not needed, we will create instance by hand later +const int EVENT_TEST = 666; + +EVENT_HANDLER our_handler(void* data) //this is event handler fuction +{ + return (void*(*)(void*))data; //just return data which we obtaned +} + bool wxPluginForEvilCore::OnInit() { wxMessageBox(_T("I am a plugin example") ,_T("Info"), wxOK | wxICON_INFORMATION); int *core_version = (int*)CallService("EC/GetVersionInt", NULL); //using service implemented somewhere (in core, in plugins, in other place), NULL is data required for service if(core_version) { - wxChar msg[32]; - wxSnprintf(msg, 31, _T("Core version is %d."), core_version); + wxChar msg[64]; + wxSnprintf(msg, 63, _T("Core version is %d."), core_version); wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); } { - wxChar msg [32]; - wxSnprintf(msg, 31, _T("I have obtained special id %d from core"), pluginInfo.pluginid); //we must obtain special plugin id for calling services like raise event or so. + wxChar msg [64]; + wxSnprintf(msg, 63, _T("I have obtained special id %d from core"), pluginInfo.pluginid); //we must obtain special plugin id for calling services like raise event or so. + wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); + } + { //trying to register event type + if(!pluginLink->RegisterEventType(EVENT_TEST, pluginInfo.pluginid)) + { + wxChar msg[64]; + wxSnprintf(msg, 63, _T("we have succesfuly registered event %d"), EVENT_TEST); + wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); + } + else + { + wxChar msg[64]; + wxSnprintf(msg, 63, _T("we have failed to register event %d"), EVENT_TEST); + wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); + } + } + {//here we trying to handle our event type + if(!pluginLink->RegisterEventHandler(EVENT_TEST, (void* (*)(void*))our_handler)) + { + wxChar msg[64]; + wxSnprintf(msg, 63, _T("we have succesfuly registered event handler")); + wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); + } + else + { + wxChar msg[64]; + wxSnprintf(msg, 63, _T("we have failed to register event handler")); + wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); + } + } + { // raising our event + char* string = (char*)pluginLink->ExecuteEvent(EVENT_TEST, pluginInfo.pluginid, (void*)"this is custom data for test"); + wxChar msg[128]; + wchar_t* str = (wchar_t*)CallService("EC/toUtf16", (void*)string); //and amother example of core service usage + wxSnprintf(msg, 127, _T("we have obtained string \"%s\" in custom data"), str); + free(str); //should be freed wxMessageBox(msg, _T("Info"), wxOK | wxICON_INFORMATION); } return true; -- cgit v1.2.3