+ wxString fnd(filename);
+
+ // NB: as Load() and Unload() accept both filenames and URLs (should
+ // probably be changed to filenames only, but embedded resources
+ // currently rely on its ability to handle URLs - FIXME) we need to
+ // determine whether found name is filename and not URL and this is the
+ // fastest/simplest way to do it
+ if (wxFileName::FileExists(fnd))
+ {
+ // Make the name absolute filename, because the app may
+ // change working directory later:
+ wxFileName fn(fnd);
+ if (fn.IsRelative())
+ {
+ fn.MakeAbsolute();
+ fnd = fn.GetFullPath();
+ }
+#if wxUSE_FILESYSTEM
+ fnd = wxFileSystem::FileNameToURL(fnd);
+#endif
+ }
+
+ return fnd;
+}
+
+#if wxUSE_FILESYSTEM
+
+/* static */
+bool wxXmlResource::IsArchive(const wxString& filename)
+{
+ const wxString fnd = filename.Lower();
+
+ return fnd.Matches(wxT("*.zip")) || fnd.Matches(wxT("*.xrs"));
+}
+
+#endif // wxUSE_FILESYSTEM
+
+bool wxXmlResource::LoadFile(const wxFileName& file)
+{
+#if wxUSE_FILESYSTEM
+ return Load(wxFileSystem::FileNameToURL(file));
+#else
+ return Load(file.GetFullPath());
+#endif
+}
+
+bool wxXmlResource::LoadAllFiles(const wxString& dirname)
+{
+ bool ok = true;
+ wxArrayString files;
+
+ wxDir::GetAllFiles(dirname, &files, "*.xrc");
+
+ for ( wxArrayString::const_iterator i = files.begin(); i != files.end(); ++i )
+ {
+ if ( !LoadFile(*i) )
+ ok = false;
+ }
+
+ return ok;
+}
+
+bool wxXmlResource::Load(const wxString& filemask_)
+{
+ wxString filemask = ConvertFileNameToURL(filemask_);