summaryrefslogtreecommitdiff
path: root/support/dktools/DkWxAppHelper.cpt
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/DkWxAppHelper.cpt')
-rw-r--r--support/dktools/DkWxAppHelper.cpt1463
1 files changed, 0 insertions, 1463 deletions
diff --git a/support/dktools/DkWxAppHelper.cpt b/support/dktools/DkWxAppHelper.cpt
deleted file mode 100644
index 9f568e9c1a..0000000000
--- a/support/dktools/DkWxAppHelper.cpt
+++ /dev/null
@@ -1,1463 +0,0 @@
-%% options
-
-copyright owner = Dirk Krause
-copyright year = 2011-xxxx
-SPDX-License-Identifier: BSD-3-Clause
-
-
-
-%% header
-
-#if 0
-#include <dk3all.h>
-#else
-#include <dk3conf.h>
-#include <dk3types.h>
-#include <dk3const.h>
-#endif
-
-
-
-#include <wx/wxprec.h>
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-#include <wx/config.h>
-#include <wx/filename.h>
-
-/** Application helper class, provides file search, internationalization
- and some functions for GUI development using the wxWidgets libraries.
-*/
-class DkWxAppHelper
-{
- protected:
-
- /** Error codes.
- */
- enum {
- /** No error occured.
- */
- ERROR_NONE = 0,
- /** Failed to encode arg0 to dkChar.
- */
- ERROR_ENCODE_ARG0 ,
- };
-
- /** Application structure.
- */
- dk3_app_t *app;
-
- /** Storage for string tables.
- */
- dk3_sto_t *sStringTables;
-
- /** Iterator through string tables storage.
- */
- dk3_sto_it_t *iStringTables;
-
- /** Basic strings used by wxWidgets applications.
- */
- wxChar const * const *basicStrings;
-
- /** First command line argument.
- */
- wxChar const *cmdName;
-
- /** Application name.
- */
- wxChar const *appName;
-
- /** Software vendor name.
- */
- wxChar const *vendorName;
-
- /** Number of entries in the basicStrings array.
- */
- size_t nBasicStrings;
-
- /** Encoding for dkChar.
- */
- int dkEncoding;
-
- /** Encoding for wxChar.
- */
- int wxEncoding;
-
- /** Code for errors from constructor.
- */
- int errorCode;
-
- protected:
-
- /** Report problems within the constructor, if any.
- */
- void
- reportProblemsIfAny(void);
-
- /** Show an error message.
- @param i_title Index of dialog title in basic strings.
- @param i_text Index of message text in basic strings.
- */
- void
- showErrorMessage(size_t i_title, size_t i_text);
-
- public:
-
- /** Constructor.
- @param arg0 First command line argument.
- @param vName Software vendor name.
- @param groupName Application group name.
- */
- DkWxAppHelper(
- wxChar const *arg0,
- wxChar const *vName,
- dkChar const *groupName
- );
-
- /** Destructor.
- */
- ~DkWxAppHelper();
-
- /** Check whether application helper object is set up correctly
- and is ready to use.
- @return 1 on success, 0 on error.
- */
- int
- checkSetup() const;
-
- /** Retrieve array of localized texts.
- @param dt Default texts, used if problems occur.
- @param tn Table name.
- @return Pointer to localized messages array or dt.
- */
- wxChar const * const *
- getStringTable(
- wxChar const * const *dt,
- dkChar const *tn
- );
-
- /** Find data file name. Provide a short file name like "x.y",
- on success the program writes a full path like
- "/usr/share/myapp/en/x.y" to the result buffer.
- @param fn Short file name.
- @param fnb Buffer for full path name.
- @param szfnb Size of @arg fnb (number of wxChar).
- @return 1 on success, 0 on error.
- */
- int
- findDataFile(wxChar const *fn, wxChar *fnb, size_t szfnb);
-
- /** Retrieve multiple int settings at once.
- @param names Pointer to names array, must be terminated
- by a NULL pointer.
- @param values Pointer to destination value array.
- @return Number of items read successfully.
- */
- size_t
- retrieveMultipleInts(
- wxChar const * const *names,
- int *values
- ) const;
-
- /** Retrieve multiple long settings at once.
- @param names Pointer to names array, must be terminated
- by a NULL pointer.
- @param values Pointer to destination value array.
- @return Number of items read successfully.
- */
- size_t
- retrieveMultipleLongs(
- wxChar const * const *names,
- long *values
- ) const;
-
- /** Save multiple int settings at once.
- @param names Pointer to names array, must be terminated by
- a NULL pointer.
- @param values Pointer to values array.
- @return Number of items successfully written.
- */
- size_t
- saveMultipleInts(
- wxChar const * const *names,
- int *values
- ) const;
-
- /** Save multiple long settings at once.
- @param names Pointer to names array, must be terminated by
- a NULL pointer.
- @param values Pointer to values array.
- @return Number of items successfully written.
- */
- size_t
- saveMultipleLongs(
- wxChar const * const *names,
- long *values
- ) const;
-
- /** Retrieve multiple double settings at once.
- @param names Pointer to names array, must be terminated by
- a NULL pointer.
- @param values Pointer to values array.
- @return Number of items successfully read.
- */
- size_t
- retrieveMultipleDoubles(
- wxChar const * const *names,
- double *values
- ) const;
-
- /** Save multiple doubles at once.
- @param names Pointer to names array, must be terminated by
- a NULL pointer.
- @param values Pointer to values array.
- @return Number of items successfully written.
- */
- size_t
- saveMultipleDoubles(
- wxChar const * const *names,
- double *values
- ) const;
-
- /** Retrieve a string preference.
- @param name Preference name.
- @return Pointer to new string on success, NULL on error.
- */
- wxChar const *
- retrieveString(
- wxChar const *name
- ) const;
-
- /** Save a string entry.
- @param name Entry name.
- @param value Entry value.
- @return 1 on success, 0 on error.
- */
- int
- saveString(
- wxChar const *name,
- wxChar const *value
- ) const;
-
- /** Retrieve encoding for wxChar.
- @return Encoding used for wxChar.
- */
- int
- getWxEncoding() const;
-
- /** Retrieve encoding for dkChar.
- @return Encoding used for dkChar.
- */
- int
- getDkEncoding() const;
-
- /** Retrieve encoding to use for 8 bit characters.
- @return Encoding to use for 8 bit character strings.
- */
- int
- getC8Encoding() const;
-
- /** Retrieve application structure.
- @return Application structure on success, NULL on error.
- */
- dk3_app_t *
- getApp() const;
-
- /** Get one of the basic application strings.
- @param i Index of string in array.
- @return String pointer on success or NULL on error.
- */
- wxChar const *
- getBasicString(size_t i) const;
-
- /** Get basic strings array.
- @return Array pointer to basic strings.
- */
- wxChar const * const *
- getBasicStrings() const;
-
- /** Find number of basic strings stored in the \a basicStrings array.
- @return Number of strings in the array.
- */
- size_t
- getBasicStringNumbers() const;
-
- /** Convert wxChar string to dkChar string.
- @param bu Destination buffer.
- @param sz Destination buffer size (number of dkChar).
- @param src Source buffer.
- @return true on success, false on error.
- */
- bool
- wxToDk(dkChar *bu, size_t sz, wxChar const *src) const;
-
- /** Convert wxChar string to 8-bit char string.
- @param bu Destination buffer.
- @param sz Destination buffer size.
- @param src Source buffer.
- @return true on success, false on error.
- */
- bool
- wxToC8(char *bu, size_t sz, wxChar const *src) const;
-
- /** Convert wxChar string to 8-bit char string.
- @param bu Destination buffer.
- @param sz Destination buffer size.
- @param str Source string.
- @return true on success, false on error.
- */
- bool
- wxToC8(char *bu, size_t sz, wxString & str) const;
-
- /** Convert dkChar string to wxChar string.
- @param bu Destination buffer.
- @param sz Destination buffer size (number of wxChar).
- @param src Source buffer.
- @return true on success, false on error.
- */
- bool
- dkToWx(wxChar *bu, size_t sz, dkChar const *src) const;
-
- /** Set related position (child over parent), the child
- is either placed on a known previous position or placed
- centered on top of the parent.
- @param parent Parent top level window (frame).
- @param child Child top level window (dialog).
- @param pcx Pointer to previous child x position.
- @param pcy Pointer to previous child y position.
- */
- void
- setRelatedPosition(
- wxWindow *parent,
- wxWindow *child,
- int *pcx = NULL,
- int *pcy = NULL
- ) const;
-
-};
-
-
-
-%% module
-
-
-#include <dk3all.h>
-#include "DkWxAppHelper.h"
-
-
-#include "dk3wxs.h"
-
-
-
-$!trace-include
-
-
-
-/** Storage entry for wxChar string table.
-*/
-typedef struct {
- wxChar const **array; /**< String table contents. */
- dkChar const *name; /**< String table name. */
- size_t nelem; /**< Number of elements. */
-} DkAppHelperWxStringTable;
-
-
-
-/** Pointer to constant wxChar string.
-*/
-typedef wxChar const *wxConstPtr;
-
-
-/** Basic texts issued by wxWidgets applications.
-*/
-static wxChar const * const dkwxapphelper_defwxappstr[] = {
-$!string-table macro=wxT
-#
-# 0: Log level: Worse than panic
-#
-Error worse than Panic
-#
-# 1: Log level: Panic
-#
-Panic
-#
-# 2: Log level: Fatal error
-#
-Fatal error
-#
-# 3: Log level: Error
-#
-Error
-#
-# 4: Log level: Warning
-#
-Warning
-#
-# 5: Log level: Information
-#
-Information
-#
-# 6: Log level: Progress message
-#
-Progress
-#
-# 7: Log level: Debug message
-#
-Debug
-#
-# 8: Log level: Ignore message
-#
-Ignore
-#
-# 9: Error: Not enough memory!
-#
-Not enough memory!
-#
-# 10: Error: Help file not found!
-#
-Help file not found!
-#
-# 11: Error: Failed to initialize application structure!
-#
-Failed to initialize application structure!
-#
-# 12: Error: Failed to recode command line!
-#
-Failed to recode command line!
-$!end
-};
-
-
-
-/** String table file containing localized versions of the
- texts in \a dkwxapphelper_defwxappstr.
-*/
-static dkChar const dkwxapphelper_sttname[] = { dkT("dkwx.str") };
-
-
-
-/** Compare two string table entries.
- @param l Left entry.
- @param r Right entry.
- @param cr Comparison criteria (0=entry/entry, 1=entr/name).
- @return Comparison result.
-*/
-static
-int
-dkwxah_string_table_compare(void const *l, void const *r, int cr)
-{
- int back = 0;
- DkAppHelperWxStringTable const *pl;
- DkAppHelperWxStringTable const *pr;
- if(l) {
- if(r) {
- pl = (DkAppHelperWxStringTable const *)l;
- pr = (DkAppHelperWxStringTable const *)r;
- switch(cr) {
- case 1: {
- if(pl->name) {
- back = dk3str_cmp(pl->name, (dkChar const *)r);
- } else { back = -1; }
- } break;
- default: {
- if(pl->name) {
- if(pr->name) {
- back = dk3str_cmp(pl->name, pr->name);
- } else { back = 1;}
- } else {
- if(pr->name) { back = -1; }
- }
- } break;
- }
- } else { back = 1; }
- } else {
- if(r) { back = -1; }
- }
- if(back < -1) { back = -1; }
- if(back > 1) { back = 1; }
- return back;
-}
-
-
-
-/** Close string table.
- @param p String table to close.
-*/
-static
-void
-dkwxah_string_table_close(DkAppHelperWxStringTable *p)
-{
- wxChar const **ptr;
- size_t i;
- $? "+ dkwxah_string_table_close PTR=%d", TR_IPTR(p)
- if(p) {
- if(p->array) {
- if(p->nelem) { $? ". %lu elements", (unsigned long)(p->nelem)
- ptr = p->array;
- for(i = 0; i < p->nelem; i++) {
- if(*ptr) { $? ". delete element %lu", (unsigned long)i
- }
- dk3_release(*ptr);
- ptr++;
- }
- }
- dk3_delete(p->array);
- }
- dk3_release(p->name);
- dk3_delete(p);
- } $? "- dkwxah_string_table_close"
-}
-
-
-
-
-#if DK3_ON_WINDOWS || DK3_HAVE_BACKSLASH
-/** Separator character for file names.
-*/
-#define SEP wxT('\\')
-#else
-/** Separator character for file names.
-*/
-#define SEP wxT('/')
-#endif
-
-
-
-/** Non-localized keywords, 8-bit characters.
-*/
-static char const * const dkwxapphelper_c8_kw[] = {
-/* 0 */ "UTF-8",
-/* 1 */ "utf8",
-NULL
-};
-
-
-
-DkWxAppHelper::DkWxAppHelper(
- wxChar const *arg0,
- wxChar const *vName,
- dkChar const *groupName
-)
-{
- dkChar dkcb[DK3_MAX_PATH];
- dkChar *newargv[2];
- wxChar *ptr;
- wxChar const *cptr;
- wxChar const * const *ptrGetNumBasicStrings;
- $? "+ DkWxAppHelper::DkWxAppHelper"
- newargv[0] = NULL;
- app = NULL;
- sStringTables = NULL;
- iStringTables = NULL;
- basicStrings = NULL;
- nBasicStrings = 0;
- cmdName = NULL;
- appName = NULL;
- vendorName = NULL;
- errorCode = ERROR_NONE;
- dkEncoding = DK3_ENCODING_PLAIN;
- wxEncoding = DK3_ENCODING_PLAIN;
- if(DK3_CHAR_SIZE > 1) {
- if(DK3_CHAR_SIZE > 2) {
- dkEncoding = DK3_ENCODING_UNICODE;
- } else {
- dkEncoding = DK3_ENCODING_UTF16;
- }
- } else {
- /* dkChar is 1 byte. */
-#if DK3_ON_WINDOWS
-#else
- char *ptr;
- ptr = getenv("LANG");
- if(ptr) {
- ptr = dk3str_c8_chr(ptr, '.');
- if(ptr) {
- ptr++;
- if(dk3str_c8_casecmp(dkwxapphelper_c8_kw[0], ptr) == 0) {
- dkEncoding = DK3_ENCODING_UTF8;
- } else {
- if(dk3str_c8_casecmp(dkwxapphelper_c8_kw[1], ptr) == 0) {
- dkEncoding = DK3_ENCODING_UTF8;
- }
- }
- }
- }
-#endif
- }
- if(sizeof(wxChar) > 1) {
- if(sizeof(wxChar) > 2) {
- wxEncoding = DK3_ENCODING_UNICODE;
- } else {
- wxEncoding = DK3_ENCODING_UTF16;
- }
- } else {
-#if DK3_ON_WINDOWS
-#else
- char *ptr;
- ptr = getenv("LANG");
- if(ptr) {
- ptr = dk3str_c8_chr(ptr, '.');
- if(ptr) {
- ptr++;
- if(dk3str_c8_casecmp(dkwxapphelper_c8_kw[0], ptr) == 0) {
- wxEncoding = DK3_ENCODING_UTF8;
- } else {
- if(dk3str_c8_casecmp(dkwxapphelper_c8_kw[1], ptr) == 0) {
- wxEncoding = DK3_ENCODING_UTF8;
- }
- }
- }
- }
-#endif
- }
- if(dk3wxs_to_dkstr(dkcb,DK3_SIZEOF(dkcb,dkChar),dkEncoding,arg0,wxEncoding))
- {
- newargv[0] = dkcb,
- newargv[1] = 0;
- app = dk3app_open_gui(1, newargv, groupName);
- if(app) {
- sStringTables = dk3sto_open_app(app);
- if(sStringTables) {
- dk3sto_set_comp(sStringTables, dkwxah_string_table_compare, 0);
- iStringTables = dk3sto_it_open(sStringTables);
- if(iStringTables) {
- }
- }
- }
- }
- else
- {
- errorCode = ERROR_ENCODE_ARG0;
- }
- cmdName = dk3wxs_dup_app(arg0, app);
- if(cmdName) {
- cptr = dk3wxs_rchr(cmdName, SEP);
- if(cptr) {
- cptr++;
- } else {
- cptr = cmdName;
- }
- appName = dk3wxs_dup_app(cptr, app);
- if(appName) {
- ptr = dk3wxs_rchr(appName, '.');
- if(ptr) { *ptr = wxT('\0'); }
- }
- }
- vendorName = dk3wxs_dup_app(vName, app);
- /*
- Finally retrieve the basic application strings.
- */
- ptrGetNumBasicStrings = dkwxapphelper_defwxappstr;
- while(*(ptrGetNumBasicStrings++)) { nBasicStrings++; }
- basicStrings = getStringTable(
- dkwxapphelper_defwxappstr,
- dkwxapphelper_sttname
- );
- reportProblemsIfAny();
- $? "- DkWxAppHelper::DkWxAppHelper"
-}
-
-
-
-DkWxAppHelper::~DkWxAppHelper()
-{
- $? "+ DkWxAppHelper::~DkWxAppHelper"
- DkAppHelperWxStringTable *e;
- basicStrings = NULL;
- if(sStringTables) {
- if(iStringTables) {
- dk3sto_it_reset(iStringTables);
- do {
- e = (DkAppHelperWxStringTable *)dk3sto_it_next(iStringTables);
- if(e) {
- dkwxah_string_table_close(e);
- }
- } while(e != NULL);
- dk3sto_it_close(iStringTables);
- }
- dk3sto_close(sStringTables);
- } sStringTables = NULL; iStringTables = NULL;
- if(app) {
- dk3app_close(app); app = NULL;
- }
- dk3_release(cmdName);
- dk3_release(appName);
- dk3_release(vendorName);
- $? "- DkWxAppHelper::~DkWxAppHelper"
-}
-
-
-
-int
-DkWxAppHelper::checkSetup() const
-{
- int back = 0;
- $? "+ DkWxAppHelper::checkSetup"
- if(app) { $? ". app ok"
- if(sStringTables) { $? ". string table storage ok"
- if(iStringTables) { $? ". string table iterator ok"
- if(cmdName) { $? ". cmdName ok"
- if(appName) { $? ". appName ok"
- if(vendorName) { $? ". vendorName ok"
- back = 1;
- } else { $? "! vendorName"
- }
- } else { $? "! appName"
- }
- } else { $? "! cmdName"
- }
- } else { $? "! string table iterator"
- }
- } else { $? "! string table storage"
- }
- } else { $? "! app"
- } $? "- DkWxAppHelper::checkSetup %d", back
- return back;
-}
-
-
-
-wxChar const * const *
-DkWxAppHelper::getStringTable(
- wxChar const * const *dt,
- dkChar const *tn
-)
-{
-#if 0
- wxChar const * const *back = NULL;
- wxChar const * *wxptr;
- DkAppHelperWxStringTable *tp = NULL;
- FILE *fipo = NULL;
- dkChar const *oldsource = NULL;
-#if 0
- dkChar dkb[4096];
-#endif
- dkChar fnb[DK3_MAX_PATH];
- wxChar wxb[4096];
- char il[4096];
- unsigned long lineno = 0UL;
- unsigned long oldline = 0UL;
- size_t nelem = 0;
- size_t i = 0;
- int cc = 1;
- int ok = 0;
-
- $? "+ DkWxAppHelper::getStringTable \"%!ds\"", TR_STR(tn)
- if((dt) && (tn)) { $? ". args ok"
- if(checkSetup()) { $? ". setup ok"
- tp = (DkAppHelperWxStringTable *)dk3sto_it_find_like(
- iStringTables, (void *)tn, 1
- );
- if(!(tp)) { $? ". must read from file"
- if(dk3app_find_data_file(app, tn, fnb, DK3_SIZEOF(fnb,dkChar))) { $? ". find"
- fipo = dk3sf_fopen_app(fnb, dk3app_not_localized(22), app);
- if(fipo) { $? ". fopen ok"
- wxptr = (wxChar const **)dt; nelem = 0;
- while(*(wxptr++)) { nelem++; }
- if(nelem) { $? ". have %lu elements", (unsigned long)nelem
- tp = dk3_new_app(DkAppHelperWxStringTable,1,app);
- if(tp) { $? ". allocation ok"
- ok = 0;
- tp->array = NULL;
- tp->nelem = nelem;
- tp->name = dk3str_dup_app(tn, app);
- if(tp->name) { $? ". dup ok for name"
- tp->array = dk3_new_app(wxConstPtr,nelem,app);
- if(tp->array) { $? ". array allocation ok"
- wxptr = tp->array;
- tp->nelem = nelem;
- for(i = 0; i < nelem; i++) { *(wxptr++) = NULL; }
- if(dk3sto_add(sStringTables, (void *)tp)) { $? ". add ok"
- ok = 1;
- oldsource = dk3app_get_source_file(app);
- oldline = dk3app_get_source_line(app);
- dk3app_set_source_file(app, fnb);
- dk3app_set_source_line(app, 0UL);
- lineno = 0UL;
- wxptr = tp->array; nelem = 0;
- do { $? ". loop start"
- cc = 0;
- if(fgets(il, sizeof(il), fipo)) { $? ". line ok"
- dk3app_set_source_line(app, ++lineno);
- cc = 1;
- if(il[0] != '#') { $? ". no comment"
- dk3app_squeeze_line(il);
- if(dk3wxs_from_utf8(wxb,DK3_SIZEOF(wxb,wxChar),il))
- {
- *wxptr = dk3wxs_dup_app(wxb, app);
- if(!(*wxptr)) { $? "! dup failed"
- ok = 0;
- }
- wxptr++;
- }
- else
- {
- ok = 0; $? "! conversion failed"
- }
- } else { $? ". comment line"
- }
- if(nelem >= tp->nelem) { cc = 0; }
- } else { $? "! no more lines"
- }
- } while((cc) && (ok));
- if(nelem < tp->nelem) {
- ok = 0;
- }
- dk3app_set_source_file(app, oldsource);
- dk3app_set_source_line(app, oldline);
- } else { $? "! add failed"
- }
- } else { $? "! array allocation failed"
- }
- } else { $? "! dup failed for name"
- }
- if(ok) {
- back = (wxChar const * const *)(tp->array);
- } else {
- dkwxah_string_table_close(tp);
- }
- } else { $? "! allocation failed"
- }
- } else { $? "! defaults array empty"
- }
- fclose(fipo);
- } else { $? "! fopen"
- }
- } else { $? "! not found"
- }
- } else { $? ". found in storage"
- }
- if(tp) { $? ". have entry"
- back = (wxChar const * const *)(tp->array);
- }
- } else { $? "! setup"
- }
- } else { $? "! args"
- }
- if(!(back)) {
- back = dt;
- } $? "- DkWxAppHelper::getStringTable PTR=%d", TR_IPTR(back)
-#else
- dkChar fnb[DK3_MAX_PATH]; /* Full file name. */
- char il[4096]; /* Input line */
- wxChar wxb[sizeof(il)];
- wxChar const * const *back = NULL;
- DkAppHelperWxStringTable *tp; /* String table if exists. */
- wxChar const * *wxptr; /* Traverse dt array. */
- FILE *fipo; /* Read input file. */
-#if VERSION_BEFORE_20150821
- unsigned long lineno; /* Current line. */
-#endif
- size_t nelem; /* Number of elements in dt. */
- size_t i; /* Current string to process. */
- int res; /* Search result. */
- int cc; /* Flag: Can continue. */
- int ok; /* Flag: All strings read succes. */
- $? "+ getStringTable %!ds", TR_STR(tn)
- if((dt) && (tn)) { $? ". args ok"
- if(checkSetup()) { $? ". controller setup ok"
- tp = (DkAppHelperWxStringTable *)dk3sto_it_find_like(
- iStringTables, (void *)tn, 1
- );
- if(!(tp)) { $? ". table not yet found, must read"
- res = dk3app_find_data_file(app,tn,fnb,DK3_SIZEOF(fnb,dkChar));
- $? ". res = %d", res
- if(res) { $? ". file found"
- fipo = dk3sf_fopen_app(fnb, dk3app_not_localized(22), app);
- if(fipo) { $? ". file opened"
- wxptr = (wxChar const **)dt; nelem = 0;
- while(*(wxptr++)) { nelem++; }
- if(nelem) {
- tp = dk3_new_app(DkAppHelperWxStringTable,1,app);
- if(tp) {
- tp->array = NULL;
- tp->nelem = nelem;
- tp->name = NULL;
- tp->name = dk3str_dup_app(tn, app);
- if(tp->name) {
- tp->array = dk3_new_app(wxConstPtr,nelem,app);
- if(tp->array) {
- wxptr = tp->array;
- tp->nelem = nelem;
- for(i = 0; i < nelem; i++) { *(wxptr++) = NULL; }
- wxptr = tp->array; nelem = 0;
-#if VERSION_BEFORE_20150821
- lineno = 0UL;
-#endif
-#if VERSION_BEFORE_20150821
- cc = 1;
-#endif
- ok = 1;
- do {
- cc = 0;
- if(fgets(il, sizeof(il), fipo)) {
- cc = 1; $? ". line \"%!8s\"", il
- if(il[0] != '#') { $? ". no comment"
- dk3app_squeeze_line(il);
- if(dk3wxs_from_utf8(wxb,DK3_SIZEOF(wxb,wxChar),il)) {
- *wxptr = dk3wxs_dup_app(wxb, app);
- if(*wxptr) {
- nelem++;
- if(nelem >= tp->nelem) {
- cc = 0;
- }
- } else {
- ok = 0; cc = 0;
- }
- wxptr++;
- } else { $? "! conversion failed"
- ok = 0; cc = 0;
- }
- } else { $? ". comment"
- }
- }
- } while(cc);
- if(nelem < tp->nelem) {
- ok = 0; $? "! too few elements"
- $? ". expected %u, found %u", (unsigned)(tp->nelem), (unsigned)nelem
- }
- if(ok) { $? ". success so far"
- if(!dk3sto_add(sStringTables, (void *)tp)) {
- dkwxah_string_table_close(tp); $? "! memory"
- tp = NULL;
- }
- } else { $? "! anything wrong"
- dkwxah_string_table_close(tp);
- tp = NULL;
- }
- } else {
- dkwxah_string_table_close(tp);
- tp = NULL;
- }
- } else {
- dkwxah_string_table_close(tp);
- tp = NULL;
- }
- } else { $? "! memory"
- }
- }
- fclose(fipo);
- } else { $? "! failed to open file"
- }
- } else { $? "! file not found"
- }
- }
- if(tp) { $? ". table found"
- back = (wxChar const * const *)(tp->array);
- }
- } else { $? "! controller setup not ok"
- }
- } else { $? "! invalid args"
- }
- if(!(back)) { $? "! no result, using default texts"
- back = dt;
- } $? "- getStringTable PTR=%d", TR_IPTR(back)
-#endif
- return back;
-}
-
-
-size_t
-DkWxAppHelper::retrieveMultipleInts(
- wxChar const * const *names,
- int *values
-) const
-{
- size_t back = 0;
- wxChar const * const *nptr;
- int *vptr;
- long l;
- $? "+ DkWxAppHelper::retrieveMultipleInts"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- nptr = names; vptr = values;
- while(*nptr) {
- l = 0L;
- if(conf->Read(*nptr, &l)) {
- *vptr = (int)l;
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- } $? "- DkWxAppHelper::retrieveMultipleInts %lu", (unsigned long)back
- return back;
-}
-
-
-
-size_t
-DkWxAppHelper::retrieveMultipleLongs(
- wxChar const * const *names,
- long *values
-) const
-{
- size_t back = 0;
- wxChar const * const *nptr;
- long *vptr;
- long l;
- $? "+ DkWxAppHelper::retrieveMultipleLongs"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- nptr = names; vptr = values;
- while(*nptr) {
- l = 0L;
- if(conf->Read(*nptr, &l)) {
- *vptr = l;
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- }
- $? "- DkWxAppHelper::retrieveMultipleLongs %u", (unsigned)back
- return back;
-}
-
-
-size_t
-DkWxAppHelper::retrieveMultipleDoubles(
- wxChar const * const *names,
- double *values
-) const
-{
- size_t back = 0;
- double d;
- wxChar const * const *nptr;
- double *vptr;
- $? "+ DkWxAppHelper::retrieveMultipleDoubles"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- nptr = names; vptr = values;
- while(*nptr) {
- d = 0.0;
- if(conf->Read(*nptr, &d)) {
- *vptr = d;
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- } $? "- DkWxAppHelper::retrieveMultipleDoubles %u", (unsigned)back
- return back;
-}
-
-
-size_t
-DkWxAppHelper::saveMultipleInts(
- wxChar const * const *names,
- int *values
-) const
-{
- size_t back = 0;
- wxChar const * const *nptr;
- int *vptr;
- long l;
- $? "+ DkWxAppHelper::saveMultipleInts"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) { $? ". conf ok"
- nptr = names; vptr = values;
- while(*nptr) { $? ". write entry"
- l = (long)(*vptr);
- if(conf->Write(*nptr, l)) {
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- } $? "- DkWxAppHelper::saveMultipleInts %lu", (unsigned long)back
- return back;
-}
-
-
-
-size_t
-DkWxAppHelper::saveMultipleLongs(
- wxChar const * const *names,
- long *values
-) const
-{
- size_t back = 0;
- wxChar const * const *nptr;
- long *vptr;
- long l;
- $? "+ DkWxAppHelper::saveMultipleLongs"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- nptr = names; vptr = values;
- while(*nptr) {
- l = *vptr;
- if(conf->Write(*nptr, l)) {
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- }
- $? "- DkWxAppHelper::saveMultipleLongs %u", (unsigned)back
- return back;
-}
-
-
-
-size_t
-DkWxAppHelper::saveMultipleDoubles(
- wxChar const * const *names,
- double *values
-) const
-{
- size_t back = 0;
- double d;
- wxChar const * const *nptr;
- double *vptr;
- $? "+ DkWxAppHelper::saveMultipleDoubles"
- if((appName) && (vendorName) && (names) && (values)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- nptr = names; vptr = values;
- while(*nptr) {
- d = *vptr;
- if(conf->Write(*nptr, d)) {
- back++;
- }
- nptr++; vptr++;
- }
- delete(conf);
- }
- } $? "- DkWxAppHelper::saveMultipleDoubles %u", (unsigned)back
- return back;
-}
-
-
-
-wxChar const *
-DkWxAppHelper::retrieveString(
- wxChar const *name
-) const
-{
- wxChar const *back = NULL;
- wxChar const *ptr;
- $? "+ DkWxAppHelper::retrieveString"
- if((name) && (appName) && (vendorName)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- wxString str;
- if(conf->Read(name, &str)) {
- wxCStrData strdata = str.c_str();
- ptr = (wxChar const *)strdata;
- if(ptr) {
- back = dk3wxs_dup_app(ptr, app);
- }
- }
- delete(conf);
- }
- } $? "- DkWxAppHelper::retrieveString PTR=%d", TR_IPTR(back)
- return back;
-}
-
-
-
-int
-DkWxAppHelper::saveString(
- wxChar const *name,
- wxChar const *value
-) const
-{
- int back = 0;
- $? "+ DkWxAppHelper::saveString"
- if((name) && (value) && (appName) && (vendorName)) {
- wxConfig *conf = new wxConfig(appName, vendorName);
- if(conf) {
- conf->Write(name, value);
- delete(conf);
- }
- } $? "- DkWxAppHelper::saveString %d", back
- return back;
-}
-
-
-
-int
-DkWxAppHelper::getWxEncoding() const
-{
- $? "= getWxEncoding %d", wxEncoding
- return wxEncoding;
-}
-
-
-
-int
-DkWxAppHelper::getDkEncoding() const
-{
- $? "= getDkEncoding %d", dkEncoding
- return dkEncoding;
-}
-
-
-
-int
-DkWxAppHelper::getC8Encoding() const
-{
- int back;
- $? "+ DkWxAppHelper::getC8Encoding"
- back = dkEncoding;
- if(DK3_ENCODING_UTF8 != back) {
- back = DK3_ENCODING_PLAIN;
- } $? "- DkWxAppHelper::getC8Encoding %d", back
- return back;
-}
-
-
-
-dk3_app_t *
-DkWxAppHelper::getApp() const
-{
- $? "= DkWxAppHelper::getApp PTR=%d", TR_IPTR(app)
- return app;
-}
-
-
-
-int
-DkWxAppHelper::findDataFile(wxChar const *fn, wxChar *fnb, size_t szfnb)
-{
- dkChar shnDk[DK3_MAX_PATH];
- dkChar ffnDk[DK3_MAX_PATH];
- int back = 0;
- $? "+ findDataFile %!ws", TR_WXSTR(fn)
- if((fn) && (fnb) && (szfnb)) { $? ". args ok"
- if(checkSetup()) { $? ". setup ok"
- if(dk3wxs_to_dkstr(
- shnDk, DK3_SIZEOF(shnDk,dkChar), dkEncoding, fn, wxEncoding
- )
- )
- {
- if(app) { $? ". app available"
- if(dk3app_find_data_file(app,shnDk,ffnDk,DK3_SIZEOF(ffnDk,dkChar))) {
- if(dk3wxs_from_dkstr(fnb, szfnb, wxEncoding, ffnDk, dkEncoding)) {
- back = 1; $? ". found"
- } else { $? "! conversion failed"
- }
- } else { $? "! not found"
- }
- } else { $? "! no app"
- }
- } else { $? "! conversion failed"
- }
- }
- } $? "- findDataFile %d", back
- return back;
-}
-
-
-
-wxChar const *
-DkWxAppHelper::getBasicString(size_t i) const
-{
- wxChar const *back = NULL;
- $? "+ DkWxAppHelper::getBasicString"
- if(basicStrings) {
- if(i < nBasicStrings) {
- back = basicStrings[i];
- }
- } $? "- DkWxAppHelper::getBasicString PTR=%d", TR_IPTR(back)
- return back;
-}
-
-
-
-wxChar const * const *
-DkWxAppHelper::getBasicStrings() const
-{
- $? "= DkWxAppHelper::getBasicStrings PTR=%d", TR_IPTR(basicStrings)
- return basicStrings;
-}
-
-
-
-size_t
-DkWxAppHelper::getBasicStringNumbers() const
-{
- $? "= DkWxAppHelper::getBasicStringNumbers %u", (unsigned)nBasicStrings
- return nBasicStrings;
-}
-
-
-
-bool
-DkWxAppHelper::wxToDk(dkChar *bu, size_t sz, wxChar const *src) const
-{
- bool back = false;
- $? "+ DkWxAppHelper::wxToDk"
- if((bu) && (sz) && (src)) {
- if(dk3wxs_to_dkstr(bu, sz, dkEncoding, src, wxEncoding)) {
- back = true;
- }
- } $? "- DkWxAppHelper::wxToDk %d", ((back) ? 1 : 0)
- return back;
-}
-
-
-
-bool
-DkWxAppHelper::wxToC8(char *bu, size_t sz, wxChar const *src) const
-{
- bool back = false;
- $? "+ DkWxAppHelper::wxToC8"
- if((bu) && (sz) && (src)) {
- if(dk3wxs_to_c8(bu, sz, getC8Encoding(), src, wxEncoding)) {
- back = true;
- }
- } $? "- DkWxAppHelper::wxToC8 %d", (back ? 1 : 0)
- return back;
-}
-
-
-
-bool
-DkWxAppHelper::wxToC8(char *bu, size_t sz, wxString & str) const
-{
- bool back = false;
- wxChar const *ptr;
- $? "+ DkWxAppHelper::wxToC8"
- if((bu) && (sz)) {
- wxCStrData strdata = str.c_str();
- ptr = (wxChar const *)strdata;
- if(ptr) {
- back = wxToC8(bu, sz, ptr);
- }
- } $? "- DkWxAppHelper::wxToC8 %d", ((back) ? 1 : 0)
- return back;
-}
-
-
-
-bool
-DkWxAppHelper::dkToWx(wxChar *bu, size_t sz, dkChar const *src) const
-{
- bool back = false;
- $? "+ DkWxAppHelper::dkToWx"
- if((bu) && (sz) && (src)) {
- if(dk3wxs_from_dkstr(bu, sz, wxEncoding, src, dkEncoding)) {
- back = true;
- }
- } $? "- DkWxAppHelper::dkToWx %d", ((back) ? 1 : 0)
- return back;
-}
-
-
-void
-DkWxAppHelper::setRelatedPosition(
- wxWindow *parent,
- wxWindow *child,
- int *pcx,
- int *pcy
-) const
-{
- int px = 0; /* Parent x position. */
- int py = 0; /* Parent y position. */
- int pw = 0; /* Parent width. */
- int ph = 0; /* Parent height. */
- int cx = 0; /* Child x position. */
- int cy = 0; /* Child y position. */
- int cw = 0; /* Child width. */
- int ch = 0; /* Child height. */
- wxSize scsz; /* Screen size. */
-
- scsz = wxGetDisplaySize();
- parent->GetPosition(&px, &py);
- parent->GetSize(&pw, &ph);
- child->GetSize(&cw, &ch);
- cx = px + (pw - cw) / 2;
- cy = py + (ph - ch) / 2;
- if((cx + cw) > scsz.x) {
- cx = scsz.x - cw;
- }
- if((cy + ch) > scsz.y) {
- cy = scsz.y - ch;
- }
- if(cx < 0) {
- cx = 0;
- }
- if(cy < 0) {
- cy = 0;
- }
- if((pcx) && (pcy)) {
- if(((*pcx) >= 0) && ((*pcy) >= 0)) {
- cx = *pcx;
- cy = *pcy;
- }
- }
- child->SetSize(cx, cy, cw, ch);
-}
-
-
-void
-DkWxAppHelper::reportProblemsIfAny(void)
-{
- bool didReport = false;
-
- if (!didReport) {
- if (NULL == app) {
- didReport = true;
- switch (errorCode) {
- case ERROR_ENCODE_ARG0 : {
- /* ERROR: Failed to encode arg0 to dkChar */
- showErrorMessage(3, 12);
- } break;
- default : {
- /* ERROR: Failed to initialize application structure */
- showErrorMessage(3, 11);
- } break;
- }
- }
- }
- if (!didReport) {
- if (NULL != app) {
- if ((NULL == sStringTables) || (NULL == iStringTables)) {
- didReport = true;
- /* ERROR: Memory */
- showErrorMessage(3, 9);
- }
- }
- }
- if (!didReport) {
- if ((NULL == cmdName) || (NULL == appName) || (NULL == vendorName)) {
- /* ERROR: Memory */
- showErrorMessage(3, 9);
- }
- }
-}
-
-
-
-void
-DkWxAppHelper::showErrorMessage(size_t i_title, size_t i_text)
-{
- const wxChar *str_title = NULL;
- const wxChar *str_text = NULL;
- if (NULL != basicStrings) {
- str_title = basicStrings[i_title];
- str_text = basicStrings[i_text];
- } else {
- str_title = dkwxapphelper_defwxappstr[i_title];
- str_text = dkwxapphelper_defwxappstr[i_text];
- }
- wxMessageBox(str_text, str_title, (wxOK | wxCENTRE | wxICON_ERROR));
-}
-
-
-