%%	options

# __CHANGE__ 001:	Correct copyright owner if necessary.
copyright owner	=	$copyrightowner$

# __CHANGE__ 003:	Correct copyright year(s) if necessary.
copyright year	=	$year$

# __CHANGE__ 002:	Correct license type if necessary.
#			Use "bsd", "gpl", "lgpl", or "commercial".
license		=	bsd



%%	header


/**	Application class, derived from wxApp, one instance per program.
*/
class $application$ : public wxApp
{
  protected:

    /**	Helper object.
    */
    DkWxAppHelper	*pHelper;

    /**	Controller fr online help.
    */
    DkWxHelpController	*helpController;

    /*	__CHANGE__ 009:	Add further members here.
    */

  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($application$)



%%	module

#include "$program$.h"


$!trace-include



/**	Localized wxChar texts.
*/
static wxChar const *	$program$_texts[] = {
$!string-table	macro=wxT,file=$program$.str
#
#   0:	Menu "File"
#
File
#
#   1:	Menu item "File/Exit"
#
Exit
#
#   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.
#
Dummy text to have at least one label in the frame
#
# __CHANGE__ 016:	Add further texts as required.
#
$!end
};



/**	Non-localized wxChar texts.
*/
static wxChar const *	$program$_nl_wx[] = {
$!string-table	macro=wxT
#
#   0:	Program name.		__CHANGE__ 004:	Correct program name.
#
$program$
#
#   1:	Program version.	__CHANGE__ 005:	Correct program version.
#
1.0.0
#
#   2:	Copyright owner name.	__CHANGE__ 001:	Correct copyright owner name.
#
Copyright owner
#
#   3:	Software vendor name.	__CHANGE__ 007: Correct software vendor name
#						if necessary. Must be one
#						string without spaces.
#
SoftwareVendor
#
#   4:	Resource name of Windows icon
#
aaaaa
#
#   5:	Windows chm help file name
#
$program$.chm
#
#   6:	non-Windows htb help file name
#
$program$.htb
#
#   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
$!end
};



/**	Non-localized dkChar texts.
*/
static dkChar const *	$program$_nl_dk[] = {
$!string-table	macro=dkT
#
#   0:	Program group name.	__CHANGE__ 006:	Correct program group name.
#
$program$-group
#
#   1:	String table name.
#
$program$.str
$!end
};



/**	Implementation of the wxApp functionality.
*/
IMPLEMENT_APP($application$)


bool
$application$::OnInit()
{
  $frame$		*frame	= NULL;
  wxChar const * const	*localizedTexts;
  bool			 back	= false;

  /* Initialize members. */
  pHelper = NULL;
  helpController = NULL;

  /*	__CHANGE__ 009:	Initialize further members here.
  */

  /* Set up helper object. */
  pHelper = new DkWxAppHelper(
    argv[0],
    $program$_nl_wx[3],
    $program$_nl_dk[0]
  );
  if(!(pHelper)) { goto finished; }
  if(!(pHelper->checkSetup())) { goto finished; }

  /* Add image and file system handlers for online help. */
  wxImage::AddHandler(new wxPNGHandler);
  wxImage::AddHandler(new wxXPMHandler);
  wxImage::AddHandler(new wxICOHandler);
  wxFileSystem::AddHandler(new wxZipFSHandler);

  localizedTexts = pHelper->getStringTable($program$_texts, $program$_nl_dk[1]);
  if(!(localizedTexts)) { localizedTexts = $program$_texts; }

  /* Set up online help controller. */
  helpController = new DkWxHelpController(
    pHelper,
    $program$_nl_wx[5],
    $program$_nl_wx[6]
  );
  if(!(helpController)) { goto finished; }

  /* Create and show frame. */
  frame = new $frame$(
    $frame$_MainWindow,
    pHelper,
    helpController,
    argc,
    argv,
    localizedTexts,
    $program$_nl_wx,
    $program$_nl_dk
  );
  if(!(frame)) { goto finished; }
  frame->Show();
  back = true;

  /* Release resources if initialization failed. */
  finished:
  if(!(back)) {
    if(helpController) {
      delete(helpController);
      helpController = NULL;
    }
    if(pHelper) {
      delete(pHelper);
      pHelper = NULL;
    }
  }
  return back;
}



int
$application$::OnExit()
{
  int			 back = 0;

  /*	__CHANGE__ 009:	Release resources allocated by further members.
  */

  /* Release resources. */
  if(helpController) {
    delete(helpController);
    helpController = NULL;
  }
  if(pHelper) {
    delete(pHelper);
    pHelper = NULL;
  }

  /*	__CHANGE__ 010:	Set back to exit status code.
  */
  return back;
}

