#include "wx/string.h"
#include "wx/dynarray.h"
+#include "wx/arrstr.h"
#include "wx/datetime.h"
#include "wx/list.h"
#include "wx/gdicmn.h"
#include "wx/artprov.h"
#include "wx/colour.h"
#include "wx/animate.h"
-#include "wx/dynarray.h"
-#include "wx/arrstr.h"
+#include "wx/vector.h"
#include "wx/xml/xml.h"
-class WXDLLEXPORT wxMenu;
-class WXDLLEXPORT wxMenuBar;
-class WXDLLEXPORT wxDialog;
-class WXDLLEXPORT wxPanel;
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxFrame;
-class WXDLLEXPORT wxToolBar;
-
-class WXDLLIMPEXP_XRC wxXmlResourceHandler;
-class WXDLLIMPEXP_XRC wxXmlSubclassFactory;
-class WXDLLIMPEXP_XRC wxXmlSubclassFactoriesList;
+class WXDLLIMPEXP_FWD_CORE wxMenu;
+class WXDLLIMPEXP_FWD_CORE wxMenuBar;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxPanel;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxToolBar;
+
+class WXDLLIMPEXP_FWD_XRC wxXmlResourceHandler;
+class WXDLLIMPEXP_FWD_XRC wxXmlSubclassFactory;
+class wxXmlSubclassFactories;
class wxXmlResourceModule;
-
+class wxXmlResourceDataRecords;
// These macros indicate current version of XML resources (this information is
// encoded in root node of XRC file as "version" property).
WX_XMLRES_CURRENT_VERSION_RELEASE * 256 + \
WX_XMLRES_CURRENT_VERSION_REVISION)
-class WXDLLIMPEXP_XRC wxXmlResourceDataRecord
-{
-public:
- wxXmlResourceDataRecord() : Doc(NULL) {
-#if wxUSE_DATETIME
- Time = wxDateTime::Now();
-#endif
- }
- ~wxXmlResourceDataRecord() {delete Doc;}
-
- wxString File;
- wxXmlDocument *Doc;
-#if wxUSE_DATETIME
- wxDateTime Time;
-#endif
-};
-
-
-WX_DECLARE_USER_EXPORTED_OBJARRAY(wxXmlResourceDataRecord,
- wxXmlResourceDataRecords,
- WXDLLIMPEXP_XRC);
-
enum wxXmlResourceFlags
{
wxXRC_USE_LOCALE = 1,
// Destructor.
virtual ~wxXmlResource();
- wxXmlNode *GetFirstRoot();
-
// Loads resources from XML files that match given filemask.
// This method understands VFS (see filesys.h).
bool Load(const wxString& filemask);
// with a number. If value_if_not_found == wxID_NONE, the number is obtained via
// wxWindow::NewControlId(). Otherwise value_if_not_found is used.
// Macro XRCID(name) is provided for convenient use in event tables.
- static int GetXRCID(const wxChar *str_id, int value_if_not_found = wxID_NONE);
+ static int GetXRCID(const wxString& str_id, int value_if_not_found = wxID_NONE)
+ { return DoGetXRCID(str_id.mb_str(), value_if_not_found); }
+
+ // version for internal use only
+ static int DoGetXRCID(const char *str_id, int value_if_not_found = wxID_NONE);
+
+
+ // Find the string ID with the given numeric value, returns an empty string
+ // if no such ID is found.
+ //
+ // Notice that unlike GetXRCID(), which is fast, this operation is slow as
+ // it checks all the IDs used in XRC.
+ static wxString FindXRCIDById(int numId);
+
// Returns version information (a.b.c.d = d+ 256*c + 256^2*b + 256^3*a).
long GetVersion() const { return m_version; }
static bool IsArchive(const wxString& filename);
#endif // wxUSE_FILESYSTEM
+private:
+ wxXmlResourceDataRecords& Data() { return *m_data; }
+ const wxXmlResourceDataRecords& Data() const { return *m_data; }
+
private:
long m_version;
int m_flags;
- wxList m_handlers;
- wxXmlResourceDataRecords m_data;
+ wxVector<wxXmlResourceHandler*> m_handlers;
+ wxXmlResourceDataRecords *m_data;
#if wxUSE_FILESYSTEM
wxFileSystem m_curFileSystem;
wxFileSystem& GetCurFileSystem() { return m_curFileSystem; }
friend class wxXmlResourceHandler;
friend class wxXmlResourceModule;
- static wxXmlSubclassFactoriesList *ms_subclassFactories;
+ static wxXmlSubclassFactories *ms_subclassFactories;
// singleton instance:
static wxXmlResource *ms_instance;
// END_EVENT_TABLE()
#define XRCID(str_id) \
- wxXmlResource::GetXRCID(wxT(str_id))
+ wxXmlResource::DoGetXRCID(str_id)
// This macro returns pointer to particular control in dialog
#define XRCCTRL(window, id, type) \
(wxStaticCast((window).FindWindow(XRCID(id)), type))
+// This macro returns pointer to sizer item
+// Example:
+//
+// <object class="spacer" name="area">
+// <size>400, 300</size>
+// </object>
+//
+// wxSizerItem* item = XRCSIZERITEM(*this, "area")
+
+#define XRCSIZERITEM(window, id) \
+ ((window).GetSizer() ? (window).GetSizer()->GetItemById(XRCID(id)) : NULL)
+
// wxXmlResourceHandler is an abstract base class for resource handlers
// capable of creating a control from an XML node.
// Gets a font.
wxFont GetFont(const wxString& param = wxT("font"));
+ // Gets the value of a boolean attribute (only "0" and "1" are valid values)
+ bool GetBoolAttr(const wxString& attr, bool defaultv);
+
+
// Sets common window options.
void SetupWindow(wxWindow *wnd);