X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34c6bbeeacd0e6adfc99032f4512a836d5131116..ea0d8ca6e89a677871a214f5e4e8c50422a0cfb8:/contrib/src/xrc/xmlres.cpp diff --git a/contrib/src/xrc/xmlres.cpp b/contrib/src/xrc/xmlres.cpp index 9e1078612e..d795abd509 100644 --- a/contrib/src/xrc/xmlres.cpp +++ b/contrib/src/xrc/xmlres.cpp @@ -107,7 +107,7 @@ bool wxXmlResource::Load(const wxString& filemask) // filename and not URL: if (wxFileName::FileExists(fnd)) { - // Make the name absolute filename, because the app may + // Make the name absolute filename, because the app may // change working directory later: wxFileName fn(fnd); if (fn.IsRelative()) @@ -119,13 +119,12 @@ bool wxXmlResource::Load(const wxString& filemask) fnd = wxFileSystem::FileNameToURL(fnd); #endif } - + #if wxUSE_FILESYSTEM if (fnd.Lower().Matches(wxT("*.zip")) || fnd.Lower().Matches(wxT("*.xrs"))) { - wxString url(wxFileSystem::FileNameToURL(fnd)); - rt = rt && Load(url + wxT("#zip:*.xrc")); + rt = rt && Load(fnd + wxT("#zip:*.xrc")); } else #endif @@ -142,7 +141,7 @@ bool wxXmlResource::Load(const wxString& filemask) } # undef wxXmlFindFirst # undef wxXmlFindNext - return rt; + return rt && UpdateResources(); } @@ -287,14 +286,13 @@ static void ProcessPlatformProperty(wxXmlNode *node) while (tkn.HasMoreTokens()) { s = tkn.GetNextToken(); -#ifdef __WXMSW__ +#ifdef __WINDOWS__ if (s == wxT("win")) isok = true; #endif -#ifdef __UNIX__ - if (s == wxT("unix")) isok = true; -#endif -#ifdef __MAC__ +#if defined(__MAC__) || defined(__APPLE__) if (s == wxT("mac")) isok = true; +#elif defined(__UNIX__) + if (s == wxT("unix")) isok = true; #endif #ifdef __OS2__ if (s == wxT("os2")) isok = true; @@ -322,8 +320,9 @@ static void ProcessPlatformProperty(wxXmlNode *node) -void wxXmlResource::UpdateResources() +bool wxXmlResource::UpdateResources() { + bool rt = true; bool modif; # if wxUSE_FILESYSTEM wxFSFile *file = NULL; @@ -351,7 +350,10 @@ void wxXmlResource::UpdateResources() file = fsys.OpenFile(m_data[i].File); modif = file && file->GetModificationTime() > m_data[i].Time; if (!file) + { wxLogError(_("Cannot open file '%s'."), m_data[i].File.c_str()); + rt = false; + } wxDELETE(file); # else modif = wxDateTime(wxFileModificationTime(m_data[i].File)) > m_data[i].Time; @@ -380,11 +382,13 @@ void wxXmlResource::UpdateResources() wxLogError(_("Cannot load resources from file '%s'."), m_data[i].File.c_str()); wxDELETE(m_data[i].Doc); + rt = false; } else if (m_data[i].Doc->GetRoot()->GetName() != wxT("resource")) { wxLogError(_("Invalid XRC resource '%s': doesn't have root node 'resource'."), m_data[i].File.c_str()); wxDELETE(m_data[i].Doc); + rt = false; } else { @@ -400,7 +404,10 @@ void wxXmlResource::UpdateResources() if (m_version == -1) m_version = version; if (m_version != version) + { wxLogError(_("Resource files must have same version number!")); + rt = false; + } ProcessPlatformProperty(m_data[i].Doc->GetRoot()); m_data[i].Time = file->GetModificationTime(); @@ -413,6 +420,8 @@ void wxXmlResource::UpdateResources() # endif } } + + return rt; } @@ -569,14 +578,14 @@ wxObject *wxXmlResource::CreateResFromNode(wxXmlNode *node, wxObject *parent, wxXmlResourceHandler *handler; if (handlerToUse) - { + { if (handlerToUse->CanHandle(node)) { return handlerToUse->CreateResource(node, parent, instance); } } else if (node->GetName() == wxT("object")) - { + { wxNode *ND = m_handlers.GetFirst(); while (ND) {