From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- support/dktools/ScreenSizeApp.cpt | 455 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 455 insertions(+) create mode 100644 support/dktools/ScreenSizeApp.cpt (limited to 'support/dktools/ScreenSizeApp.cpt') diff --git a/support/dktools/ScreenSizeApp.cpt b/support/dktools/ScreenSizeApp.cpt new file mode 100644 index 0000000000..7d40bf76ad --- /dev/null +++ b/support/dktools/ScreenSizeApp.cpt @@ -0,0 +1,455 @@ +%% options + +copyright owner = Dirk Krause +copyright year = 2017 +license = bsd + + + +%% header + +/** @file ScreenSizeApp.h The ScreenSizeApp class. +*/ + + + +/** Application class, derived from wxApp, one instance per program. +*/ +class ScreenSizeApp : public wxApp +{ + protected: + + /** Helper object. + */ + Dk4WxApplicationHelper *pAh; + + /** Controller fr online help. + */ + Dk4WxHelpController *pHc; + + /* __CHANGE__ 009: Add further members here. + */ + + protected: + + /** Show error message if there is not enough 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(ScreenSizeApp) + + + +/* vim: set ai sw=4 ts=4 : */ +%% module + +#include "wxdkscrsz.h" + + + +$!trace-include + + + +/** Localized wxChar texts. +*/ +static wxChar const * wxdkscrsz_texts[] = { +$!string-table macro=wxT +# +# 0: Menu "File" +# +File +# +# 1: Menu item "File/Quit" +# +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. +# +Screen size change: +# +# __CHANGE__ 016: Add further texts as required. +# +# 14 +# +Not yet started +# +# 15 +# +Started +# +# 16 +# +OK +# +# 17 +# +Failed +# +# 18 +# +Error +# +# 19 +# +Failed to retrieve current screen settings! +# +# 20 +# +Failed to change screen size! +# +# 21 +# +Only available on Windows platforms! +# +# 22 23 +# +Not an unsigned integer: " +"! +# +# 24 +# +Missing command line arguments: width, height. +# +# 25 +# +Old screen size +# +# 26 27 +# +Width: +Height: +# +# 28 Empty string +# + +# +# 29 New screen size +# +New screen size +# +# 30 Result +# +Result +$!end +}; + + + +/** Non-localized wxChar texts. +*/ +static wxChar const * wxdkscrsz_nl_wx[] = { +$!string-table macro=wxT +# +# 0: Program name. +# +wxdkscrsz +# +# 1: Program version. __CHANGE__ 005: Correct program version. +# +1.0.0 +# +# 2: Copyright owner name. +# +Dirk Krause +# +# 3: Software vendor name. +# +DKrause +# +# 4: Resource name of Windows icon +# +aaaaa +# +# 5: UNUSED (previously Windows chm help file name) +# + +# +# 6: UNUSED (previously non-Windows htb help file name) +# + +# +# 7: Space +# + +# +# 8: Newline +# +\n +# +# 9 10 11 12 13 14 15: List of libraries used. +# +DK tools, wxWidgets, libpng, libjpeg, libtiff, zlib. +http://dktools.sourceforge.net +http://www.wxwidgets.org +http://www.libpng.org/pub/png/libpng.html +http://www.ijg.org +http://www.remotesensing.org/libtiff +http://www.zlib.net +# +# 16 17 +# +Error +Not enough memory (RAM)! +$!end +}; + + + +/** Non-localized dkChar texts. +*/ +static dkChar const * wxdkscrsz_nl_dk[] = { +$!string-table macro=dkT +# +# 0: Program group name. +# +dktools +# +# 1: String table name. +# +wxdkscrsz.str +# +# 2: CHM help file name +# +wxdkscrsz.chm +# +# 3: HTB help file name +# +wxdkscrsz.htb +$!end +}; + + + +/** Implementation of the wxApp functionality. +*/ +IMPLEMENT_APP(ScreenSizeApp) + + +bool +ScreenSizeApp::OnInit() +{ + ScreenSizeFrame *frame = NULL; + wxChar const * const *localizedTexts = NULL; + wxPNGHandler *phPng = NULL; + wxXPMHandler *phXpm = NULL; + wxICOHandler *phIco = NULL; + wxArchiveFSHandler *phArchiveFS = NULL; + bool back = false; + + /* Initialize members. + */ + pAh = NULL; + pHc = NULL; + + /* __CHANGE__ 009: Initialize further members here. + */ + + /* Set up helper object. + */ + pAh = new Dk4WxApplicationHelper(); + if (NULL == pAh) { + ShowMemoryErrorMessage(); + goto finished; + } + if (!(pAh->Initialize(argv[0], wxdkscrsz_nl_wx[3], wxdkscrsz_nl_dk[0]))) { + goto finished; + } + + /* 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; + } + phArchiveFS = new wxArchiveFSHandler(); + if (NULL != phArchiveFS) { + wxFileSystem::AddHandler(phArchiveFS); + } else { + ShowMemoryErrorMessage(); + goto finished; + } + + /* Set up help controller. + */ + pHc = new Dk4WxHelpController(); + if (NULL == pHc) { + ShowMemoryErrorMessage(); + goto finished; + } + if (!(pHc->Initialize(pAh, wxdkscrsz_nl_dk[2], wxdkscrsz_nl_dk[3]))) { + goto finished; + } + + /* Attempt to obtain localized texts in users preferred language. + */ + localizedTexts = pAh->GetStringTable(wxdkscrsz_nl_dk[1], wxdkscrsz_texts); + if(!(localizedTexts)) { localizedTexts = wxdkscrsz_texts; } + + /* Create and show frame. + */ + frame = new ScreenSizeFrame( + ScreenSizeFrame_MainWindow, + pAh, + pHc, + argc, + argv, + localizedTexts, + wxdkscrsz_nl_wx, + wxdkscrsz_nl_dk + ); + if(!(frame)) { + ShowMemoryErrorMessage(); + goto finished; + } + + /* Show frame, restore position and indicate success. + */ + frame->Show(); + frame->RestorePosition(); + back = true; + + /* Release resources if initialization failed. + */ + finished: + if(!(back)) { + if (NULL != pHc) { + pHc->Cleanup(); delete(pHc); pHc = NULL; + } + if (NULL != pAh) { + pAh->Cleanup(); delete(pAh); pAh = NULL; + } + } + return back; +} + + + +int +ScreenSizeApp::OnExit() +{ + int back = 0; + + /* __CHANGE__ 009: 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 exit status code. + */ + return back; +} + + + +void +ScreenSizeApp::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 = wxdkscrsz_nl_wx[16]; + } + if (NULL == s_text) { + s_text = wxdkscrsz_nl_wx[17]; + } + wxMessageBox(s_text, s_title, (wxOK | wxCENTRE | wxICON_ERROR)); +} + +/* vim: set ai sw=4 ts=4 : */ + -- cgit v1.2.3