summaryrefslogtreecommitdiff
path: root/support/dktools/ScreenSizeApp.cpt
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/ScreenSizeApp.cpt
Initial commit
Diffstat (limited to 'support/dktools/ScreenSizeApp.cpt')
-rw-r--r--support/dktools/ScreenSizeApp.cpt455
1 files changed, 455 insertions, 0 deletions
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 : */
+