/* Copyright (C) 2011-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: DkWxTraceApp.cpt */ /** @file DkWxTraceApp.cpp The DkWxTraceApp module. */ #line 51 "DkWxTraceApp.cpt" #include "dk3conf.h" #include "dkwxtrace.h" #line 58 "DkWxTraceApp.cpt" /** Implementation of DkWxTraceApp. */ #if wxCHECK_VERSION(3,0,0) wxIMPLEMENT_APP(DkWxTraceApp); #else IMPLEMENT_APP(DkWxTraceApp) #endif /** Default texts, replace by localized texts if available. */ wxChar const * const defaultTexts[] = { /* 0 */ wxT("wxdkct"), /* 1 */ wxT("dktools"), /* 2 */ wxT("Dirk Krause"), /* 3 */ wxT("&File"), /* 4 */ wxT("&Help"), /* 5 */ wxT("E&xit\tAlt-X"), /* 6 */ wxT("&About...\tAlt-A"), /* 7 */ wxT("Exit the program"), /* 8 */ wxT("Show version information"), /* 9 */ wxT("&Contents\tF1"), /* 10 */ wxT("Show online help contents"), /* 11 */ wxT("Directory:"), /* 12 */ wxT("&Directory\tAlt-D"), /* 13 */ wxT("Choose source directory"), /* 14 */ wxT("&Setup\tAlt-S"), /* 15 */ wxT("Set conversion options"), /* 16 */ wxT("yes, to stdout"), /* 17 */ wxT("Directory"), /* 18 */ wxT("Options"), /* 19 */ wxT("Run"), /* 20 */ wxT("Exit"), /* 21 */ wxT("Choose directory"), /* 22 */ wxT("Set options"), /* 23 */ wxT("Run conversion"), /* 24 */ wxT("Exit the application"), /* 25 */ wxT("."), /* 26 */ wxT("OK"), /* 27 */ wxT("Cancel"), /* 28 */ wxT("Close dialog and apply settings"), /* 29 */ wxT("Close dialog and discard settings"), /* 30 */ wxT("Options"), /* 31 */ wxT("Use make mode"), /* 32 */ wxT("Run conversions only if necessary."), /* 33 */ wxT("General options"), /* 34 */ wxT("Output"), /* 35 */ wxT("Line numbers"), /* 36 */ wxT("Debug"), /* 37 */ wxT("Create debug output"), /* 38 */ wxT("Debug to standard output"), /* 39 */ wxT("Include timestamp"), /* 40 */ wxT("Use \"trace\" keyword"), /* 41 */ wxT("Wide-character support"), /* 42 */ wxT("Create line number directives"), /* 43 */ wxT("Generate code for trace/debug messages"), /* 44 */ wxT("Write trace/debug messages to standard output"), /* 45 */ wxT("Include a timestamp into trace/debug messages"), /* 46 */ wxT("Include the \"trace\" keyword into debug messages"), /* 47 */ wxT("Add support for TRACE_WIDE (debug messages in wide characters)"), /* 48 */ wxT("Conversion progress"), /* 49 */ wxT(""), /* 50 */ wxT("Cancel"), /* 51 */ wxT("Abort conversion after finishing current file"), /* 52 */ wxT("Cancel command scheduled... Wait, please!"), /* 53 */ wxT("Choose directory"), /* 54 */ wxT("Directory: "), /* 55 */ wxT("Destination files up to date."), /* 56 */ wxT("Processing succeeded."), /* 57 */ wxT("Processing failed!"), /* 58 */ wxT("ERROR: Can not handle directory name!"), /* 59 */ wxT("ERROR: Failed to open directory \""), /* 60 */ wxT("\"!"), /* 61 */ wxT("ERROR: File name is not plain ASCII text: \""), /* 62 */ wxT("\"!"), /* 63 */ wxT("ERROR: Not enough memory (RAM/swap space)!"), /* 64 */ wxT("&Run\tAlt-R"), /* 65 */ wxT("Start conversion"), /* 66 */ wxT("About wxdkct"), /* 67 */ wxT(""), /* 68 */ wxT("Processing succeeded"), /* 69 */ wxT("Warnings occured"), /* 70 */ wxT("Errors occured"), /* 71 */ wxT("Automatic run cancelled due to errors!"), /* 72 */ wxT("Processing succeeded, application will exit."), /* 73 */ wxT("\n"), /* 74 */ wxT("This program uses libraries from the following projects:\n"), /* 75 */ wxT("See:\n"), /* 76 */ wxT("@"), /* 77 */ wxT("^"), /* 78 */ wxT("°"), /* 79 */ wxT("!"), /* 80 */ wxT("\""), /* 81 */ wxT("§"), /* 82 */ wxT("$"), /* 83 */ wxT("%"), /* 84 */ wxT("&"), /* 85 */ wxT("?"), /* 86 */ wxT("~"), /* 87 */ wxT("#"), /* 88 */ wxT("|"), /* 89 */ wxT(","), /* 90 */ wxT(";"), /* 91 */ wxT("."), /* 92 */ wxT(":"), /* 93 */ wxT("_"), /* 94 */ wxT("Comments for splint"), /* 95 */ wxT("Write comments for splint"), /* 96 */ wxT("Choose the comment character for splint"), /* 97 */ wxT("Portable debug code"), /* 98 */ wxT("Produce portable code for trace messages"), NULL #line 409 "DkWxTraceApp.cpt" }; /** Constant texts, not localized. */ static wxChar const * const wxdkct_nl_wx[] = { /* 0 */ wxT("Error"), /* 1 */ wxT("Not enough memory (RAM)!"), NULL #line 420 "DkWxTraceApp.cpt" }; /** Application group name. */ static dkChar const dkwxtraceapp_groupname[] = { dkT("dktools") }; /** String table file name. */ static dkChar const dkwxtrace_string_table_name[] = { dkT("wxdkct.str") }; /** Help file for use on Windows systems. */ static wxChar const dkwxtrace_chm_helpfile[] = { wxT("wxdkct.chm") }; /** Help file for use on non-Windows systems. */ static wxChar const dkwxtrace_htb_helpfile[] = { wxT("wxdkct.htb") }; bool DkWxTraceApp::OnInit() { bool back = false; wxChar const * const *localizedTexts = defaultTexts; dkChar const * const *msg = NULL; DkWxTraceFrame *frame = NULL; wxPNGHandler *phPng = NULL; wxXPMHandler *phXpm = NULL; wxICOHandler *phIco = NULL; wxArchiveFSHandler *phArchFs = NULL; /* Initialize elements. */ pHelper = NULL; helpController = NULL; /* Create application helper. */ pHelper = new DkWxAppHelper(argv[0], defaultTexts[2], dkwxtraceapp_groupname); if (NULL == pHelper) { ShowMemoryErrorMessage(); goto finished; } if (!(pHelper->checkSetup())) { goto finished; } /* Get message texts. */ msg = dk3app_messages( pHelper->getApp(), dkct_str_get_string_table_file_name(), (dkChar const **)dkct_str_get_message_texts() ); if (NULL == msg) { ShowMemoryErrorMessage(); goto finished; } localizedTexts = pHelper->getStringTable(defaultTexts, dkwxtrace_string_table_name); if (NULL == localizedTexts) { ShowMemoryErrorMessage(); goto finished; } /* Initialize image handlers and zip fs handler. */ phPng = new wxPNGHandler(); if (NULL != phPng) { wxImage::AddHandler(phPng); } else { ShowMemoryErrorMessage(); goto finished; } /* CLANG STATIC ANALYSIS COMPLAINS ABOUT A POTENTIAL MEMORY LEAK, because phPng is set using the new operator but there is no matching delete. The handler object is deleted from within wxImage destructor, there is no memory leak. */ phXpm = new wxXPMHandler(); if (NULL != phXpm) { wxImage::AddHandler(phXpm); } else { ShowMemoryErrorMessage(); goto finished; } /* CLANG STATIC ANALYSIS COMPLAINS ABOUT A POTENTIAL MEMORY LEAK, because phXpm is set using the new operator but there is no matching delete. The handler object is deleted from within wxImage destructor, there is no memory leak. */ phIco = new wxICOHandler(); if (NULL != phIco) { wxImage::AddHandler(phIco); } else { ShowMemoryErrorMessage(); goto finished; } /* CLANG STATIC ANALYSIS COMPLAINS ABOUT A POTENTIAL MEMORY LEAK, because phIco is set using the new operator but there is no matching delete. The handler object is deleted from within wxImage destructor, there is no memory leak. */ phArchFs = new wxArchiveFSHandler(); if (NULL != phArchFs) { wxFileSystem::AddHandler(phArchFs); } else { ShowMemoryErrorMessage(); goto finished; } /* CLANG STATIC ANALYSIS COMPLAINS ABOUT A POTENTIAL MEMORY LEAK, because phArchFs is set using the new operator but there is no matching delete. The handler object is deleted from within wxFileSystem destructor, there is no memory leak. */ /* Get help controller. */ helpController = new DkWxHelpController(pHelper,dkwxtrace_chm_helpfile,dkwxtrace_htb_helpfile); if (NULL == helpController) { ShowMemoryErrorMessage(); goto finished; } /* Create main frame. */ frame = new DkWxTraceFrame( defaultTexts[0], localizedTexts, msg, pHelper, DkWxTrace_MainWindow, helpController, argc, argv ); if (NULL == frame) { ShowMemoryErrorMessage(); goto finished; } /* Show frame and indicate success. */ frame->restorePosition(); frame->Show(); back = true; /* Clean up on errors. */ finished: if (!(back)) { if (NULL != helpController) { delete(helpController); helpController = NULL; } if (NULL != pHelper) { delete(pHelper); pHelper = NULL; } } return back; } int DkWxTraceApp::OnExit() { int back = 0; /* Release elements. */ if(helpController) { delete(helpController); helpController = NULL; } if(pHelper) { delete(pHelper); pHelper = NULL; } return back; } void DkWxTraceApp::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 = wxdkct_nl_wx[0]; } if (NULL == s_text) { s_text = wxdkct_nl_wx[1]; } wxMessageBox(s_text, s_title, (wxOK | wxCENTRE | wxICON_ERROR)); }