%% options copyright owner = Dirk Krause copyright year = 2015-xxxx license = bsd %% header /** @file Dk4FcsApp.h The Dk4FcsApp class. */ /** Application class, derived from wxApp, one instance per program. */ class Dk4FcsApp : public wxApp { protected: /** Helper object. */ Dk4WxApplicationHelper *pAh; /** Controller fr online help. */ Dk4WxHelpController *pHc; protected: /** Show error message if not sufficient memory available. */ void ShowMemoryErrorMessage(void); public: /** Application initialization. @return true on success, false on error. */ virtual bool OnInit(); /** Application shutdown. @return 0 on success, any other value indicates an error. */ virtual int OnExit(); }; /** Declaration as the wxApp object. */ DECLARE_APP(Dk4FcsApp) %% module #include "wxdkfcs.h" $!trace-include /** Localized wxChar texts. */ static wxChar const * wxdkfcs_texts[] = { $!string-table macro=wxT # # 0: Menu "File" # File # # 1: Menu item "File/Exit" # Quit # # 2: Tool tip text for menu item "File/Exit" # Exit the application # # 3: Menu "Help" # Help # # 4: Menu item "Help/About" # About # # 5: Tooltip text for menu item "Help/About" # Show version information # # 6: Menu item "Help/Contents" # Contents # # 7: Tooltip text for menu item "Help/Contents" # Open table of contents # # 8: Initial status text # Ready # # 9: Copyright notice. # Copyright (c) # # 10: Dialog box title "About ..." # About # # 11: This program uses the following libraries # This program uses the following libraries: # # 12: See # See: # # 13: __CHANGE__ 015: Text for dummy label, can be reused if lDummy removed. # File: # # 14 ... 20: Label MD5 # MD5 RIPEMD-160 SHA-1 SHA-224 SHA-256 SHA-384 SHA-512 # # 21: Column head # Checksum # # 22: wxFileDialog header line # Choose a file # # 23 24: Menu item File/Open # Open Open a file $!end }; /** Non-localized wxChar texts. */ static wxChar const * wxdkfcs_nl_wx[] = { $!string-table macro=wxT # # 0: Program name. # wxdkfcs # # 1: Program version. # 4.0.0 # # 2: Copyright owner name. # Dirk Krause # # 3: Software vendor name. # DKrause # # 4: Resource name of Windows icon # aaaaa # # 5: Empty string to reset table cells # # # 6: UNUSED (previously non-Windows htb help file name) # # # 7: Space # # # 8: Newline # \n # # 9 10 11 12 13 14 15 16: List of libraries used. # DK tools, wxWidgets, OpenSSL, libpng, libjpeg, libtiff, zlib. http://dktools.sourceforge.net http://www.wxwidgets.org http://www.openssl.org http://www.libpng.org/pub/png/libpng.html http://www.ijg.org http://www.remotesensing.org/libtiff http://www.zlib.net # # 17 Default string for values. # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # 18 - 22 OpenSSL license text. # This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com). # # 23 24 # Error Not enough memory (RAM)! $!end }; /** Non-localized dkChar texts. */ static dkChar const * wxdkfcs_nl_dk[] = { $!string-table macro=dkT # # 0: Program group name. # dktools # # 1: String table name. # wxdkfcs.str # # 2: CHM help file name # wxdkfcs.chm # # 3: HTB help file name # wxdkfcs.htb $!end }; /** Implementation of the wxApp functionality. */ IMPLEMENT_APP(Dk4FcsApp) bool Dk4FcsApp::OnInit() { Dk4FcsFrame *frame = NULL; wxChar const * const *localizedTexts = NULL; wxPNGHandler *phPng = NULL; wxXPMHandler *phXpm = NULL; wxICOHandler *phIco = NULL; wxArchiveFSHandler *phArchiveFs = NULL; bool back = false; $? "+ OnInit" /* Initialize members. */ pAh = NULL; pHc = NULL; /* Initialize further members here. */ /* Set up helper object. */ pAh = new Dk4WxApplicationHelper(); if (NULL == pAh) { ShowMemoryErrorMessage(); goto finished; } if (!(pAh->Initialize(argv[0], wxdkfcs_nl_wx[3], wxdkfcs_nl_dk[0]))) { goto finished; } $? ". app helper ok" /* Add image and file system handlers for online help. */ phPng = new wxPNGHandler(); if (NULL != phPng) { wxImage::AddHandler(phPng); } else { 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; } $? ". image handlers ok" phArchiveFs = new wxArchiveFSHandler(); if (NULL != phArchiveFs) { wxFileSystem::AddHandler(phArchiveFs); } else { ShowMemoryErrorMessage(); goto finished; } pHc = new Dk4WxHelpController(); if (NULL == pHc) { ShowMemoryErrorMessage(); goto finished; } if (!(pHc->Initialize(pAh, wxdkfcs_nl_dk[2], wxdkfcs_nl_dk[3]))) { goto finished; } $? ". help controller ok" localizedTexts = pAh->GetStringTable(wxdkfcs_nl_dk[1], wxdkfcs_texts); if(!(localizedTexts)) { localizedTexts = wxdkfcs_texts; } $? ". localized texts ok" /* Create and show frame. */ frame = new Dk4FcsFrame( Dk4FcsFrame_MainWindow, pAh, pHc, argc, argv, localizedTexts, wxdkfcs_nl_wx, wxdkfcs_nl_dk ); if(!(frame)) { ShowMemoryErrorMessage(); goto finished; } $? ". frame created" frame->Show(); frame->RestorePosition(); $? ". frame shown" back = true; /* Release resources if initialization failed. */ finished: if(!(back)) { $? "! errors, clean up" if (NULL != pHc) { pHc->Cleanup(); delete(pHc); pHc = NULL; } if (NULL != pAh) { pAh->Cleanup(); delete(pAh); pAh = NULL; } } $? "- OnInit %d", (int)back return back; } int Dk4FcsApp::OnExit() { int back = 0; /* Release resources allocated by further members. */ /* Release resources. */ if (NULL != pHc) { pHc->Cleanup(); delete(pHc); pHc = NULL; } if (NULL != pAh) { pAh->Cleanup(); delete(pAh); pAh = NULL; } /* Set back to exit status code. */ return back; } void Dk4FcsApp::ShowMemoryErrorMessage(void) { const wxChar *s_title = NULL; const wxChar *s_text = NULL; if (NULL != pAh) { s_title = pAh->GetBasicString(6); s_text = pAh->GetBasicString(7); } if (NULL == s_title) { s_title = wxdkfcs_nl_wx[23]; } if (NULL == s_text) { s_text = wxdkfcs_nl_wx[24]; } wxMessageBox(s_text, s_title, (wxOK | wxCENTRE | wxICON_ERROR)); }