From: Vadim Zeitlin Date: Tue, 14 Oct 2008 11:44:10 +0000 (+0000) Subject: added wxXmlResource::FindXRCIDById() (#10026) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/cc378c2d7521e58e6f067470b798e9c81dd08c61 added wxXmlResource::FindXRCIDById() (#10026) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/xrc/xmlres.h b/include/wx/xrc/xmlres.h index 8bffb9f548..7d29dd260d 100644 --- a/include/wx/xrc/xmlres.h +++ b/include/wx/xrc/xmlres.h @@ -209,6 +209,15 @@ public: // 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; } diff --git a/interface/wx/xrc/xmlres.h b/interface/wx/xrc/xmlres.h index 6849341886..92bfc64eab 100644 --- a/interface/wx/xrc/xmlres.h +++ b/interface/wx/xrc/xmlres.h @@ -108,6 +108,20 @@ public: */ int CompareVersion(int major, int minor, int release, int revision) const; + /** + Returns a string ID corresponding to the given numeric ID. + + The string returned is such that calling GetXRCID() with it as + parameter yields @a numId. If there is no string identifier + corresponding to the given numeric one, an empty string is returned. + + Notice that, unlike GetXRCID(), this function is slow as it checks all + of the identifiers used in XRC. + + @since 2.9.0 + */ + static wxString wxXmlResource::FindXRCIDById(int numId); + /** Gets the global resources object or creates one if none exists. */ diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index efee9e17e5..bd6c432084 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -1625,6 +1625,20 @@ int wxXmlResource::DoGetXRCID(const char *str_id, int value_if_not_found) return XRCID_Lookup(str_id, value_if_not_found); } +/* static */ +wxString wxXmlResource::FindXRCIDById(int numId) +{ + for ( int i = 0; i < XRCID_TABLE_SIZE; i++ ) + { + for ( XRCID_record *rec = XRCID_Records[i]; rec; rec = rec->next ) + { + if ( rec->id == numId ) + return wxString(rec->key); + } + } + + return wxString(); +} static void CleanXRCID_Record(XRCID_record *rec) {