campo-sirio/xvaga/xvapp.cpp

62 lines
1.3 KiB
C++
Raw Normal View History

#include "../xvaga/wxinc.h"
#include "xvt.h"
#include <wx/filename.h>
#include <wx/snglinst.h>
extern int xvt_main(int argc, char** argv);
class TMainApp : public wxApp
{
wxSingleInstanceChecker* m_sic;
protected:
virtual bool OnInit();
virtual int OnExit();
void OnTimer(wxTimerEvent& evt);
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(TMainApp);
};
IMPLEMENT_DYNAMIC_CLASS(TMainApp, wxApp)
IMPLEMENT_APP(TMainApp)
#define TIMER_ID 883
BEGIN_EVENT_TABLE(TMainApp, wxApp)
EVT_TIMER(TIMER_ID, TMainApp::OnTimer)
END_EVENT_TABLE()
void TMainApp::OnTimer(wxTimerEvent& evt)
{
xvt_app_pre_create();
xvt_main(argc, argv);
}
bool TMainApp::OnInit()
{
wxFileName strWrk = argv[0];
//const wxString strApp = strWrk.GetName().Lower();
strWrk.MakeAbsolute();
wxString strApp = strWrk.GetFullPath().Lower();
strApp.Replace("\\", "_"); strApp.Replace("/", "_"); strApp.Replace(":", "_");
m_sic = new wxSingleInstanceChecker(strApp);
xvt_vobj_set_attr(NULL_WIN, ATTR_APPL_ALREADY_RUNNING, m_sic->IsAnotherRunning());
// Non eseguo direttamente xvt_main per dar modo al main event loop di partire
wxTimerEvent evt(TIMER_ID);
AddPendingEvent(evt);
return true;
}
int TMainApp::OnExit()
{
delete m_sic;
m_sic = NULL;
return wxApp::OnExit();
}