]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/xrc/xmlres.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxXmlResource
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
10 Flags which can be used with wxXmlResource::wxXmlResource.
12 enum wxXmlResourceFlags
14 /** Translatable strings will be translated via _(). */
17 /** Subclass property of object nodes will be ignored (useful for previews in XRC editors). */
18 wxXRC_NO_SUBCLASSING
= 2,
20 /** Prevent the XRC files from being reloaded from disk in case they have been modified there
21 since being last loaded (may slightly speed up loading them). */
22 wxXRC_NO_RELOADING
= 4
29 This is the main class for interacting with the XML-based resource system.
31 The class holds XML resources from one or more .xml files, binary files or zip
34 @see @ref overview_xrc, @ref overview_xrcformat
39 class wxXmlResource
: public wxObject
46 The XRC file, archive file, or wildcard specification that will be
47 used to load all resource files inside a zip archive.
49 One or more value of the ::wxXmlResourceFlags enumeration.
51 The name of the gettext catalog to search for translatable strings.
52 By default all loaded catalogs will be searched.
53 This provides a way to allow the strings to only come from a specific catalog.
55 wxXmlResource(const wxString
& filemask
,
56 int flags
= wxXRC_USE_LOCALE
,
57 const wxString
& domain
= wxEmptyString
);
63 One or more value of the ::wxXmlResourceFlags enumeration.
65 The name of the gettext catalog to search for translatable strings.
66 By default all loaded catalogs will be searched.
67 This provides a way to allow the strings to only come from a specific catalog.
69 wxXmlResource(int flags
= wxXRC_USE_LOCALE
,
70 const wxString
& domain
= wxEmptyString
);
75 virtual ~wxXmlResource();
78 Initializes only a specific handler (or custom handler).
79 Convention says that the handler name is equal to the control's name plus
80 'XmlHandler', for example wxTextCtrlXmlHandler, wxHtmlWindowXmlHandler.
82 The XML resource compiler (wxxrc) can create include file that contains
83 initialization code for all controls used within the resource.
84 Note that this handler must be allocated on the heap, since it will be
85 deleted by ClearHandlers() later.
87 void AddHandler(wxXmlResourceHandler
* handler
);
90 Attaches an unknown control to the given panel/window/dialog.
91 Unknown controls are used in conjunction with \<object class="unknown"\>.
93 bool AttachUnknownControl(const wxString
& name
,
95 wxWindow
* parent
= NULL
);
98 Removes all handlers and deletes them (this means that any handlers
99 added using AddHandler() must be allocated on the heap).
101 void ClearHandlers();
104 Compares the XRC version to the argument.
106 Returns -1 if the XRC version is less than the argument,
107 +1 if greater, and 0 if they are equal.
109 int CompareVersion(int major
, int minor
, int release
, int revision
) const;
112 Returns a string ID corresponding to the given numeric ID.
114 The string returned is such that calling GetXRCID() with it as
115 parameter yields @a numId. If there is no string identifier
116 corresponding to the given numeric one, an empty string is returned.
118 Notice that, unlike GetXRCID(), this function is slow as it checks all
119 of the identifiers used in XRC.
123 static wxString
FindXRCIDById(int numId
);
126 Gets the global resources object or creates one if none exists.
128 static wxXmlResource
* Get();
131 Returns the domain (message catalog) that will be used to load
132 translatable strings in the XRC.
134 const wxString
& GetDomain() const;
137 Returns flags, which may be a bitlist of ::wxXmlResourceFlags
140 int GetFlags() const;
143 Returns version information (a.b.c.d = d + 256*c + 2562*b + 2563*a).
145 long GetVersion() const;
148 Returns a numeric ID that is equivalent to the string ID used in an XML resource.
150 If an unknown @a str_id is requested (i.e. other than wxID_XXX or integer),
151 a new record is created which associates the given string with a number.
153 If @a value_if_not_found is @c wxID_NONE, the number is obtained via
154 wxNewId(). Otherwise @a value_if_not_found is used.
155 Macro @c XRCID(name) is provided for convenient use in event tables.
157 static int GetXRCID(const wxString
& str_id
, int value_if_not_found
= wxID_NONE
);
160 Initializes handlers for all supported controls/windows.
162 This will make the executable quite big because it forces linking against
163 most of the wxWidgets library.
165 void InitAllHandlers();
168 Loads resources from XML files that match given filemask.
169 This method understands VFS (see filesys.h).
171 bool Load(const wxString
& filemask
);
174 Loads a bitmap resource from a file.
176 wxBitmap
LoadBitmap(const wxString
& name
);
179 Loads a dialog. @a parent points to parent window (if any).
181 wxDialog
* LoadDialog(wxWindow
* parent
, const wxString
& name
);
184 Loads a dialog. @a parent points to parent window (if any).
186 This form is used to finish creation of an already existing instance (the main
187 reason for this is that you may want to use derived class with a new event table).
192 wxTheXmlResource->LoadDialog(&dlg, mainFrame, "my_dialog");
196 bool LoadDialog(wxDialog
* dlg
, wxWindow
* parent
, const wxString
& name
);
201 bool LoadFrame(wxFrame
* frame
, wxWindow
* parent
,
202 const wxString
& name
);
205 Loads an icon resource from a file.
207 wxIcon
LoadIcon(const wxString
& name
);
210 Loads menu from resource. Returns @NULL on failure.
212 wxMenu
* LoadMenu(const wxString
& name
);
216 Loads a menubar from resource. Returns @NULL on failure.
218 wxMenuBar
* LoadMenuBar(wxWindow
* parent
, const wxString
& name
);
219 wxMenuBar
* LoadMenuBar(const wxString
& name
);
224 Load an object from the resource specifying both the resource name and the
227 The first overload lets you load nonstandard container windows and returns
228 @NULL on failure. The second one lets you finish the creation of an existing
229 instance and returns @false on failure.
231 wxObject
* LoadObject(wxWindow
* parent
, const wxString
& name
,
232 const wxString
& classname
);
233 bool LoadObject(wxObject
* instance
, wxWindow
* parent
,
234 const wxString
& name
,
235 const wxString
& classname
);
239 Loads a panel. @a panel points to parent window (if any).
241 wxPanel
* LoadPanel(wxWindow
* parent
, const wxString
& name
);
244 Loads a panel. @a panel points to parent window (if any).
245 This form is used to finish creation of an already existing instance.
247 bool LoadPanel(wxPanel
* panel
, wxWindow
* parent
, const wxString
& name
);
252 wxToolBar
* LoadToolBar(wxWindow
* parent
, const wxString
& name
);
255 Sets the global resources object and returns a pointer to the previous one
258 static wxXmlResource
* Set(wxXmlResource
* res
);
261 Sets the domain (message catalog) that will be used to load
262 translatable strings in the XRC.
264 void SetDomain(const wxString
& domain
);
267 Sets flags (bitlist of ::wxXmlResourceFlags enumeration values).
269 void SetFlags(int flags
);
272 This function unloads a resource previously loaded by Load().
274 Returns @true if the resource was successfully unloaded and @false if it
275 hasn't been found in the list of loaded resources.
277 bool Unload(const wxString
& filename
);
283 @class wxXmlResourceHandler
285 wxXmlResourceHandler is an abstract base class for resource handlers
286 capable of creating a control from an XML node.
288 See @ref overview_xrc for details.
293 class wxXmlResourceHandler
: public wxObject
299 wxXmlResourceHandler();
304 virtual ~wxXmlResourceHandler();
307 Creates an object (menu, dialog, control, ...) from an XML node.
308 Should check for validity. @a parent is a higher-level object
309 (usually window, dialog or panel) that is often necessary to
312 If @b instance is non-@NULL it should not create a new instance via
313 'new' but should rather use this one, and call its Create method.
315 wxObject
* CreateResource(wxXmlNode
* node
, wxObject
* parent
,
319 Called from CreateResource after variables were filled.
321 virtual wxObject
* DoCreateResource() = 0;
324 Returns @true if it understands this node and can create
325 a resource from it, @false otherwise.
328 You must not call any wxXmlResourceHandler methods except IsOfClass()
329 from this method! The instance is not yet initialized with node data
330 at the time CanHandle() is called and it is only safe to operate on
331 node directly or to call IsOfClass().
333 virtual bool CanHandle(wxXmlNode
* node
) = 0;
336 Sets the parent resource.
338 void SetParentResource(wxXmlResource
* res
);
344 Add a style flag (e.g. @c wxMB_DOCKABLE) to the list of flags
345 understood by this handler.
347 void AddStyle(const wxString
& name
, int value
);
350 Add styles common to all wxWindow-derived classes.
352 void AddWindowStyles();
357 void CreateChildren(wxObject
* parent
, bool this_hnd_only
= false);
362 void CreateChildrenPrivately(wxObject
* parent
,
363 wxXmlNode
* rootnode
= NULL
);
366 Creates a resource from a node.
368 wxObject
* CreateResFromNode(wxXmlNode
* node
, wxObject
* parent
,
369 wxObject
* instance
= NULL
);
372 Creates an animation (see wxAnimation) from the filename specified in @a param.
374 wxAnimation
GetAnimation(const wxString
& param
= wxT("animation"));
379 wxBitmap
GetBitmap(const wxString
& param
= "bitmap",
380 const wxArtClient
& defaultArtClient
= wxART_OTHER
,
381 wxSize size
= wxDefaultSize
);
384 Gets a bool flag (1, t, yes, on, true are @true, everything else is @false).
386 bool GetBool(const wxString
& param
, bool defaultv
= false);
389 Gets colour in HTML syntax (\#RRGGBB).
391 wxColour
GetColour(const wxString
& param
,
392 const wxColour
& defaultColour
= wxNullColour
);
395 Returns the current file system.
397 wxFileSystem
& GetCurFileSystem();
400 Gets a dimension (may be in dialog units).
402 wxCoord
GetDimension(const wxString
& param
, wxCoord defaultv
= 0,
403 wxWindow
* windowToUse
= 0);
408 wxFont
GetFont(const wxString
& param
= "font");
418 wxIcon
GetIcon(const wxString
& param
= "icon",
419 const wxArtClient
& defaultArtClient
= wxART_OTHER
,
420 wxSize size
= wxDefaultSize
);
423 Gets the integer value from the parameter.
425 long GetLong(const wxString
& param
, long defaultv
= 0);
428 Returns the resource name.
433 Gets node content from wxXML_ENTITY_NODE.
435 wxString
GetNodeContent(wxXmlNode
* node
);
438 Finds the node or returns @NULL.
440 wxXmlNode
* GetParamNode(const wxString
& param
);
443 Finds the parameter value or returns the empty string.
445 wxString
GetParamValue(const wxString
& param
);
448 Gets the position (may be in dialog units).
450 wxPoint
GetPosition(const wxString
& param
= wxT("pos"));
453 Gets the size (may be in dialog units).
455 wxSize
GetSize(const wxString
& param
= "size", wxWindow
* windowToUse
= 0);
458 Gets style flags from text in form "flag | flag2| flag3 |..."
459 Only understands flags added with AddStyle().
461 int GetStyle(const wxString
& param
= wxT("style"), int defaults
= 0);
464 Gets text from param and does some conversions:
465 - replaces \\n, \\r, \\t by respective characters (according to C syntax)
466 - replaces @c $ by @c and @c $$ by @c $ (needed for @c _File to @c File
467 translation because of XML syntax)
468 - calls wxGetTranslations (unless disabled in wxXmlResource)
470 wxString
GetText(const wxString
& param
, bool translate
= true);
473 Check to see if a parameter exists.
475 bool HasParam(const wxString
& param
);
478 Convenience function.
479 Returns @true if the node has a property class equal to classname,
480 e.g. object class="wxDialog".
482 bool IsOfClass(wxXmlNode
* node
, const wxString
& classname
);
485 Sets common window options.
487 void SetupWindow(wxWindow
* wnd
);