X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6b1eedc1bb6ed83afb7a9bed4ea6fa204adbd50f..b245cbc587f379bf9cc27122c3f3f50c1d424186:/src/xrc/xmlres.cpp diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index c063201df5..bd6c432084 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -164,10 +164,6 @@ bool wxXmlResource::IsArchive(const wxString& filename) bool wxXmlResource::Load(const wxString& filemask) { - wxString fnd; - bool iswild = wxIsWild(filemask); - bool rt = true; - #if wxUSE_FILESYSTEM wxFileSystem fsys; # define wxXmlFindFirst fsys.FindFirst(filemask, wxFILE) @@ -176,10 +172,13 @@ bool wxXmlResource::Load(const wxString& filemask) # define wxXmlFindFirst wxFindFirstFile(filemask, wxFILE) # define wxXmlFindNext wxFindNextFile() #endif - if (iswild) - fnd = wxXmlFindFirst; - else - fnd = filemask; + wxString fnd = wxXmlFindFirst; + if ( fnd.empty() ) + { + wxLogError(_("Cannot load resources from '%s'."), filemask); + return false; + } + while (!fnd.empty()) { fnd = ConvertFileNameToURL(fnd); @@ -187,7 +186,8 @@ bool wxXmlResource::Load(const wxString& filemask) #if wxUSE_FILESYSTEM if ( IsArchive(fnd) ) { - rt = rt && Load(fnd + wxT("#zip:*.xrc")); + if ( !Load(fnd + wxT("#zip:*.xrc")) ) + return false; } else // a single resource URL #endif // wxUSE_FILESYSTEM @@ -197,14 +197,12 @@ bool wxXmlResource::Load(const wxString& filemask) Data().push_back(drec); } - if (iswild) - fnd = wxXmlFindNext; - else - fnd = wxEmptyString; + fnd = wxXmlFindNext; } # undef wxXmlFindFirst # undef wxXmlFindNext - return rt && UpdateResources(); + + return UpdateResources(); } bool wxXmlResource::Unload(const wxString& filename) @@ -1031,13 +1029,17 @@ wxString wxXmlResourceHandler::GetName() +bool wxXmlResourceHandler::GetBoolAttr(const wxString& attr, bool defaultv) +{ + wxString v; + return m_node->GetAttribute(attr, &v) ? v == '1' : defaultv; +} + bool wxXmlResourceHandler::GetBool(const wxString& param, bool defaultv) { - wxString v = GetParamValue(param); - v.MakeLower(); - if (!v) return defaultv; + const wxString v = GetParamValue(param); - return (v == wxT("1")); + return v.empty() ? defaultv : (v == '1'); } @@ -1170,40 +1172,6 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, return wxBitmap(img); } -#if wxUSE_ANIMATIONCTRL -wxAnimation wxXmlResourceHandler::GetAnimation(const wxString& param) -{ - wxAnimation ani; - - /* load the animation from file: */ - wxString name = GetParamValue(param); - if (name.empty()) return wxNullAnimation; -#if wxUSE_FILESYSTEM - wxFSFile *fsfile = GetCurFileSystem().OpenFile(name, wxFS_READ | wxFS_SEEKABLE); - if (fsfile == NULL) - { - wxLogError(_("XRC resource: Cannot create animation from '%s'."), - name.c_str()); - return wxNullAnimation; - } - ani.Load(*(fsfile->GetStream())); - delete fsfile; -#else - ani.LoadFile(name); -#endif - - if (!ani.IsOk()) - { - wxLogError(_("XRC resource: Cannot create animation from '%s'."), - name.c_str()); - return wxNullAnimation; - } - - return ani; -} -#endif // wxUSE_ANIMATIONCTRL - - wxIcon wxXmlResourceHandler::GetIcon(const wxString& param, const wxArtClient& defaultArtClient, @@ -1657,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) {