From f9363b96c4869fc760857feb9fe3872a17d7ee07 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Sat, 27 Jul 2002 18:14:36 +0000 Subject: [PATCH] 1. clarified relation between XRC .xrs files and ZIPs 2. some minor additions to XRC docs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/txrc.tex | 50 +++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/docs/latex/wx/txrc.tex b/docs/latex/wx/txrc.tex index 7aab0c05e1..7cbcd7a532 100644 --- a/docs/latex/wx/txrc.tex +++ b/docs/latex/wx/txrc.tex @@ -9,8 +9,8 @@ try to use it, you will get link errors. The XML-based resource system, known as XRC, allows user interface elements such as dialogs, menu bars and toolbars, to be stored in text files and loaded into the application at run-time. XRC files can also be compiled into binary XRS files or C++ -code, so an XML parser does not need to be linked with the application and load times -are faster. +code (the former makes it possible to store all resources in since file and the latter +is useful when you want to embed the resources into the executable). There are several advantages to using XRC resources. @@ -69,6 +69,8 @@ These are the typical steps for using XRC files in your application. \begin{itemize}\itemsep=0pt \item Include the appropriate headers: normally "wx/xrc/xmlres.h" will suffice; +\item If you are going to use \helpref{XRS files}{binaryresourcefiles}, install +wxFileSystem ZIP handler first with {\tt wxFileSystem::AddHandler(new wxZipFSHandler);} \item call {\tt wxXmlResource::Get()->InitAllHandlers()} from your wxApp::OnInit function, and then call {\tt wxXmlResource::Get()->Load("myfile.xrc")} to load the resource file; \item to create a dialog from a resource, create it using the default constructor, and then @@ -94,20 +96,19 @@ It is highly recommended that you use a tool such as wxDesigner, since it's fidd XRC files by hand. You can use \helpref{wxXmlResource::Load}{wxxmlresourceload} in a number of ways. -You can pass an XRC file (XML-based text resource file), an XMB file (compiled binary file) -or a zip-compressed file (extension ZIP or RSC) containing other XRC or XMB files. +You can pass an XRC file (XML-based text resource file) +or a \helpref{zip-compressed file}{binaryresourcefiles} (extension ZIP or XRS) containing other XRC. -TODO: is the compiled binary format XMB or XRS? How do you handle a C++ resource file? +You can also use \helpref{embedded C++ resources}{embeddedresource} \subsection{Using binary resource files}\label{binaryresourcefiles} -To compile binary resource files, use the command-line wxrc utility. It takes a single file parameter (the -input XRC file) and the following switches and options. - +To compile binary resource files, use the command-line wxrc utility. It takes one or more file parameters +(the input XRC files) and the following switches and options: \begin{itemize}\itemsep=0pt \item -h (--help): show a help message \item -v (--verbose): show verbose logging information -\item -c (--cpp-code): write C++ source rather than a RSC file +\item -c (--cpp-code): write C++ source rather than a XRS file \item -u (--uncompressed): do not compress XML files (C++ only) \item -g (--gettext): output .po catalog (to stdout, or a file if -o is used) \item -n (--function) : specify C++ function name (use with -c) @@ -116,13 +117,42 @@ input XRC file) and the following switches and options. \end{itemize} For example: - \begin{verbatim} % wxrc resource.wrc % wxrc resource.wrc -o resource.wrs % wxrc resource.wrc -v -c -o resource.cpp \end{verbatim} +\wxheading{Note} + +XRS file is esentially a renamed ZIP archive which means that you can manipulate +it with standard ZIP tools. Note that if you are using XRS files, you have +to initialize \helpref{wxFileSystem}{wxfilesystem} ZIP handler first! It is a simple +thing to do: +\begin{verbatim} + #include + #include + ... + wxFileSystem::AddHandler(new wxZipFSHandler); +\end{verbatim} + +\subsection{Using embedded resources}\label{embeddedresource} + +It is sometimes useful to embed resources in the executable itself instead +of loading external file (e.g. when your app is small and consists only of one +exe file). XRC provides means to convert resources into regular C++ file that +can be compiled and included in the executable. + +Use the {\tt -c} switch to +{\tt wxrc} utility to produce C++ file with embedded resources. This file will +contain a function called {\it InitXmlResource} (unless you override this with +a command line switch). Use it to load the resource: +\begin{verbatim} + wxXmlResource::Get()->InitAllHandlers(); + InitXmlResource(); + ... +\end{verbatim} + \subsection{XRC C++ sample}\label{xrccppsample} This is the C++ source file (xrcdemo.cpp) for the XRC sample. -- 2.47.2