%% options copyright owner = Dirk Krause copyright year = 2011-xxxx license = bsd %% header /** Application to set PATH variable for DK tools. */ class DkWxPathApp : public wxApp { protected: /** Helper object. */ DkWxAppHelper *pHelper; protected: /** Show error message if not sufficient memory available. */ void ShowMemoryErrorMessage(void); public: /** Initialize the application. */ virtual bool OnInit(); /** Clean up after running. */ virtual int OnExit(); }; DECLARE_APP(DkWxPathApp) %% module #include "dkwxpath.h" $!trace-include /** Implementation of application methods. */ IMPLEMENT_APP(DkWxPathApp) /** Default texts used if no localized texts found. */ wxChar const * const dkwxpath_default_texts[] = { $!string-table macro=wxT # # 0: Program name # dkwxpath # # 1: Application group name # dktools # # 2: Software vendor name # Dirk Krause # # 3: Label text: Modifying PATH environment variable. # Modifying PATH environment variable. # # 4: Window title # dktools setup # # 5: Dialog title: Failed to modify PATH variable. # PATH modification failed! # # 6: Start of label text: Failed to modify PATH environment variable! # Failed to modify PATH environment variable! # # 7: Label text contents: Please add # Please add # # 8: Label text contents: to the PATH environment variable # to the PATH environment variable # # 9: Label text contents: Please remove # Please remove # # 10: Label text contents: from the PATH environment variable # from the PATH environment variable # # 11: Label text contents: and reboot the computer as soon as possible. # and reboot the computer as soon as possible. # # 12 # WxBmpp - EPS image # # 13 # WxBmpp - PDF image # # 14 # WxBmpp - PDF object # # 15 # WxBmpp - PDF document # # 16 # WxBmpp - PS document # # 17 # WinPrint - default printer # # 18 # WinPrint - specify printer # # 19 # Open in WxBmpp # # 20 # Open in WxDkct # # 21 # Checksums $!end }; /** Constant texts, not localized. */ wxChar const * const dkwxpath_nl_wx[] = { $!string-table macro=wxT Error Not enough memory (RAM)! $!end }; static dkChar const dkwxpath_groupname[] = { dkT("dktools") }; static dkChar const dkwxpath_string_table[] = { dkT("dkwxpath.str") }; bool DkWxPathApp::OnInit() { bool back = false; DkWxPathFrame *frame = NULL; wxChar const * const *localizedTexts = NULL; dkChar const * const *dkLocalizedTexts = NULL; wxXPMHandler *phXpm = NULL; wxICOHandler *phIco = NULL; $!trace-init c:\\temp\\dkwpath.deb $? " + OnInit" pHelper = new DkWxAppHelper(argv[0], dkwxpath_default_texts[2], dkwxpath_groupname); if (NULL == pHelper) { ShowMemoryErrorMessage(); goto finished; } if (!(pHelper->checkSetup())) { goto finished; } localizedTexts = pHelper->getStringTable(dkwxpath_default_texts, dkwxpath_string_table); dkLocalizedTexts = dk3app_messages( pHelper->getApp(), dkwxpath_string_table, (dkChar const **)dkwxpath_default_texts ); if ((NULL == localizedTexts) || (NULL == dkLocalizedTexts)) { ShowMemoryErrorMessage(); goto finished; } phXpm = new wxXPMHandler(); if (NULL != phXpm) { wxImage::AddHandler(phXpm); } else { ShowMemoryErrorMessage(); goto finished; } phIco = new wxICOHandler(); if (NULL != phIco) { wxImage::AddHandler(phIco); } else { ShowMemoryErrorMessage(); goto finished; } frame = new DkWxPathFrame( dkwxpath_default_texts[4], localizedTexts, dkLocalizedTexts, pHelper, DkWxPath_MainWindow, argc, argv ); if (NULL == frame) { ShowMemoryErrorMessage(); goto finished; } frame->Show(); frame->restorePosition(); back = true; finished: if (!(back)) { if (NULL != pHelper) { delete(pHelper); pHelper = NULL; } } $? "- OnInit %d", (int)back return back; } int DkWxPathApp::OnExit() { int back = 0; $? "+ OnExit" if(pHelper) { delete(pHelper); pHelper = NULL; } $? "- OnExit" $!trace-end return back; } void DkWxPathApp::ShowMemoryErrorMessage(void) { const wxChar *s_title = NULL; const wxChar *s_text = NULL; if (NULL != pHelper) { s_title = pHelper->getBasicString(3); s_text = pHelper->getBasicString(9); } if (NULL == s_title) { s_title = dkwxpath_nl_wx[0]; } if (NULL == s_text) { s_text = dkwxpath_nl_wx[1]; } wxMessageBox(s_text, s_title, (wxOK | wxCENTRE | wxICON_ERROR)); }