X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04ae32cdab5a96467db7a8d4eedb31c9799f0b56..32e806fe7f0ca4ccee9924f4ded0a8be05de2b89:/include/wx/xrc/xmlres.h?ds=sidebyside diff --git a/include/wx/xrc/xmlres.h b/include/wx/xrc/xmlres.h index 0c80dfc9be..bee65df5a4 100644 --- a/include/wx/xrc/xmlres.h +++ b/include/wx/xrc/xmlres.h @@ -31,6 +31,10 @@ #include "wx/xml/xml.h" +class WXDLLIMPEXP_FWD_BASE wxFileName; + +class WXDLLIMPEXP_FWD_CORE wxIconBundle; +class WXDLLIMPEXP_FWD_CORE wxImageList; class WXDLLIMPEXP_FWD_CORE wxMenu; class WXDLLIMPEXP_FWD_CORE wxMenuBar; class WXDLLIMPEXP_FWD_CORE wxDialog; @@ -61,7 +65,7 @@ class wxXmlResourceDataRecords; #define WX_XMLRES_CURRENT_VERSION_MINOR 5 #define WX_XMLRES_CURRENT_VERSION_RELEASE 3 #define WX_XMLRES_CURRENT_VERSION_REVISION 0 -#define WX_XMLRES_CURRENT_VERSION_STRING _T("2.5.3.0") +#define WX_XMLRES_CURRENT_VERSION_STRING wxT("2.5.3.0") #define WX_XMLRES_CURRENT_VERSION \ (WX_XMLRES_CURRENT_VERSION_MAJOR * 256*256*256 + \ @@ -115,6 +119,9 @@ public: // Loads resources from single XRC file. bool LoadFile(const wxFileName& file); + // Loads all XRC files from a directory. + bool LoadAllFiles(const wxString& dirname); + // Unload resource from the given XML file (wildcards not allowed) bool Unload(const wxString& filename); @@ -181,13 +188,40 @@ public: // Load an object from the resource specifying both the resource name and // the classname. This lets you load nonstandard container windows. wxObject *LoadObject(wxWindow *parent, const wxString& name, - const wxString& classname); + const wxString& classname) + { + return DoLoadObject(parent, name, classname, false /* !recursive */); + } // Load an object from the resource specifying both the resource name and // the classname. This form lets you finish the creation of an existing // instance. - bool LoadObject(wxObject *instance, wxWindow *parent, const wxString& name, - const wxString& classname); + bool LoadObject(wxObject *instance, + wxWindow *parent, + const wxString& name, + const wxString& classname) + { + return DoLoadObject(instance, parent, name, classname, false); + } + + // These versions of LoadObject() look for the object with the given name + // recursively (breadth first) and can be used to instantiate an individual + // control defined anywhere in an XRC file. No check is done that the name + // is unique, it's up to the caller to ensure this. + wxObject *LoadObjectRecursively(wxWindow *parent, + const wxString& name, + const wxString& classname) + { + return DoLoadObject(parent, name, classname, true /* recursive */); + } + + bool LoadObjectRecursively(wxObject *instance, + wxWindow *parent, + const wxString& name, + const wxString& classname) + { + return DoLoadObject(instance, parent, name, classname, true); + } // Loads a bitmap resource from a file. wxBitmap LoadBitmap(const wxString& name); @@ -258,6 +292,13 @@ public: { return GetResourceNodeAndLocation(name, wxString(), true); } protected: + // reports input error at position 'context' + void ReportError(wxXmlNode *context, const wxString& message); + + // override this in derived class to customize errors reporting + virtual void DoReportError(const wxString& xrcFile, wxXmlNode *position, + const wxString& message); + // Scans the resources list for unloaded files and loads them. Also reloads // files that have been modified since last loading. bool UpdateResources(); @@ -295,7 +336,11 @@ protected: // (Uses only 'handlerToUse' if != NULL) wxObject *CreateResFromNode(wxXmlNode *node, wxObject *parent, wxObject *instance = NULL, - wxXmlResourceHandler *handlerToUse = NULL); + wxXmlResourceHandler *handlerToUse = NULL) + { + return node ? DoCreateResFromNode(*node, parent, instance, handlerToUse) + : NULL; + } // Helper of Load() and Unload(): returns the URL corresponding to the // given file if it's indeed a file, otherwise returns the original string @@ -312,6 +357,24 @@ private: wxXmlResourceDataRecords& Data() { return *m_data; } const wxXmlResourceDataRecords& Data() const { return *m_data; } + // the real implementation of CreateResFromNode(): this should be only + // called if node is non-NULL + wxObject *DoCreateResFromNode(wxXmlNode& node, + wxObject *parent, + wxObject *instance, + wxXmlResourceHandler *handlerToUse = NULL); + + // common part of LoadObject() and LoadObjectRecursively() + wxObject *DoLoadObject(wxWindow *parent, + const wxString& name, + const wxString& classname, + bool recursive); + bool DoLoadObject(wxObject *instance, + wxWindow *parent, + const wxString& name, + const wxString& classname, + bool recursive); + private: long m_version; @@ -429,7 +492,7 @@ protected: // wxXML_ENTITY_NODE name="tag", content="" // |-- wxXML_TEXT_NODE or // wxXML_CDATA_SECTION_NODE name="" content="content" - wxString GetNodeContent(wxXmlNode *node); + wxString GetNodeContent(const wxXmlNode *node); // Check to see if a parameter exists. bool HasParam(const wxString& param); @@ -440,6 +503,9 @@ protected: // Finds the parameter value or returns the empty string. wxString GetParamValue(const wxString& param); + // Returns the parameter value from given node. + wxString GetParamValue(const wxXmlNode* node); + // Add a style flag (e.g. wxMB_DOCKABLE) to the list of flags // understood by this handler. void AddStyle(const wxString& name, int value); @@ -491,11 +557,28 @@ protected: const wxArtClient& defaultArtClient = wxART_OTHER, wxSize size = wxDefaultSize); + // Gets a bitmap from an XmlNode. + wxBitmap GetBitmap(const wxXmlNode* node, + const wxArtClient& defaultArtClient = wxART_OTHER, + wxSize size = wxDefaultSize); + // Gets an icon. wxIcon GetIcon(const wxString& param = wxT("icon"), const wxArtClient& defaultArtClient = wxART_OTHER, wxSize size = wxDefaultSize); + // Gets an icon from an XmlNode. + wxIcon GetIcon(const wxXmlNode* node, + const wxArtClient& defaultArtClient = wxART_OTHER, + wxSize size = wxDefaultSize); + + // Gets an icon bundle. + wxIconBundle GetIconBundle(const wxString& param, + const wxArtClient& defaultArtClient = wxART_OTHER); + + // Gets an image list. + wxImageList *GetImageList(const wxString& param = wxT("imagelist")); + #if wxUSE_ANIMATIONCTRL // Gets an animation. wxAnimation GetAnimation(const wxString& param = wxT("animation")); @@ -526,6 +609,13 @@ protected: #if wxUSE_FILESYSTEM wxFileSystem& GetCurFileSystem() { return m_resource->GetCurFileSystem(); } #endif + + // reports input error at position 'context' + void ReportError(wxXmlNode *context, const wxString& message); + // reports input error at m_node + void ReportError(const wxString& message); + // reports input error when parsing parameter with given name + void ReportParamError(const wxString& param, const wxString& message); };