1//----------------------------------------------------------------------------- 2// Name: xrcdemo.cpp 3// Purpose: XML resources sample: Main application file 4// Author: Robert O'Connor (rob@medicalmnemonics.com), Vaclav Slavik 5// RCS-ID: $Id: xrcdemo.cpp 43619 2006-11-24 00:00:37Z VZ $ 6// Copyright: (c) Robert O'Connor and Vaclav Slavik 7// Licence: wxWindows licence 8//----------------------------------------------------------------------------- 9 10//----------------------------------------------------------------------------- 11// Standard wxWidgets headers 12//----------------------------------------------------------------------------- 13 14// For compilers that support precompilation, includes "wx/wx.h". 15#include "wx/wxprec.h" 16 17#ifdef __BORLANDC__ 18 #pragma hdrstop 19#endif 20 21// For all others, include the necessary headers (this file is usually all you 22// need because it includes almost all "standard" wxWidgets headers) 23#ifndef WX_PRECOMP 24 #include "wx/wx.h" 25#endif 26 27//----------------------------------------------------------------------------- 28// Header of this .cpp file 29//----------------------------------------------------------------------------- 30 31#include "xrcdemo.h" 32 33//----------------------------------------------------------------------------- 34// Remaining headers: Needed wx headers, then wx/contrib headers, then app one 35//----------------------------------------------------------------------------- 36 37#include "wx/image.h" // wxImage 38 39#include "wx/xrc/xmlres.h" // XRC XML resources 40 41#include "wx/cshelp.h" // wxSimpleHelpProvider for helptext 42 43#include "myframe.h" 44 45//----------------------------------------------------------------------------- 46// wxWidgets macro: Declare the application. 47//----------------------------------------------------------------------------- 48 49// Create a new application object: this macro will allow wxWidgets to create 50// the application object during program execution (it's better than using a 51// static object for many reasons) and also declares the accessor function 52// wxGetApp() which will return the reference of the right type (i.e. the_app and 53// not wxApp). 54IMPLEMENT_APP(MyApp) 55 56//----------------------------------------------------------------------------- 57// Public methods 58//----------------------------------------------------------------------------- 59 60// 'Main program' equivalent: the program execution "starts" here 61bool MyApp::OnInit() 62{ 63 // If there is any of a certain format of image in the xrcs, then first 64 // load a handler for that image type. This example uses XPMs, but if 65 // you want PNGs, then add a PNG handler, etc. See wxImage::AddHandler() 66 // documentation for the types of image handlers available. 67 wxImage::AddHandler(new wxXPMHandler); 68 69 // Initialize all the XRC handlers. Always required (unless you feel like 70 // going through and initializing a handler of each control type you will 71 // be using (ie initialize the spinctrl handler, initialize the textctrl 72 // handler). However, if you are only using a few control types, it will 73 // save some space to only initialize the ones you will be using. See 74 // wxXRC docs for details. 75 wxXmlResource::Get()->InitAllHandlers(); 76 77 // Load all of the XRC files that will be used. You can put everything 78 // into one giant XRC file if you wanted, but then they become more 79 // diffcult to manage, and harder to reuse in later projects. 80 // The menubar 81 if (!wxXmlResource::Get()->Load(wxT("rc/menu.xrc"))) 82 return false; 83 84 // The toolbar 85 if (!wxXmlResource::Get()->Load(wxT("rc/toolbar.xrc"))) 86 return false; 87 88 // Non-derived dialog example 89 if (!wxXmlResource::Get()->Load(wxT("rc/basicdlg.xrc"))) 90 return false; 91 92 // Derived dialog example 93 if (!wxXmlResource::Get()->Load(wxT("rc/derivdlg.xrc"))) 94 return false; 95 96 // Controls property example 97 if (!wxXmlResource::Get()->Load(wxT("rc/controls.xrc"))) 98 return false; 99 100 // Frame example 101 if (!wxXmlResource::Get()->Load(wxT("rc/frame.xrc"))) 102 return false; 103 104 // Uncentered example 105 if (!wxXmlResource::Get()->Load(wxT("rc/uncenter.xrc"))) 106 return false; 107 108 // Custom class example 109 if (!wxXmlResource::Get()->Load(wxT("rc/custclas.xrc"))) 110 return false; 111 112 // wxArtProvider example 113 if (!wxXmlResource::Get()->Load(wxT("rc/artprov.xrc"))) 114 return false; 115 116 // Platform property example 117 if (!wxXmlResource::Get()->Load(wxT("rc/platform.xrc"))) 118 return false; 119 120 // Variable expansion example 121 if (!wxXmlResource::Get()->Load(wxT("rc/variable.xrc"))) 122 return false; 123 124 125#if wxUSE_HELP 126 // Use the simple help provider to show the context-sensitive help 127 wxHelpProvider::Set( new wxSimpleHelpProvider ); 128#endif // wxUSE_HELP 129 130 // Make an instance of your derived frame. Passing NULL (the default value 131 // of MyFrame's constructor is NULL) as the frame doesn't have a parent 132 // since it is the main application window. 133 MyFrame *frame = new MyFrame(); 134 135 // Show the frame as it's created initially hidden. 136 frame->Show(true); 137 138 // Return true to tell program to continue (false would terminate). 139 return true; 140} 141 142