]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmlres.cpp
resolve the DLL linking problems with MSVC due to use of static variables of template...
[wxWidgets.git] / src / xrc / xmlres.cpp
index c063201df538838c5e380163ee5058a5d845c038..bd6c432084c198afc52744fa24cdaf87783fb2ef 100644 (file)
@@ -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)
 {