]> git.saurik.com Git - wxWidgets.git/commitdiff
removed debug message ; improved resource loading logic
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 6 Aug 2000 16:51:54 +0000 (16:51 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 6 Aug 2000 16:51:54 +0000 (16:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

contrib/include/wx/xml/xmlres.h
contrib/src/xml/xmlpars.cpp
contrib/src/xml/xmlres.cpp

index 0087a4cf100e4a096154d184774652e90d0d0882..be4f1a69dbe112a5b8359b55f546089e1e17ecb0 100644 (file)
@@ -32,13 +32,6 @@ class WXDLLEXPORT wxXmlResourceHandler;
 
 #include "wx/xml/xml.h"
 
-enum 
-{
-    wxXML_BINARY,
-    wxXML_ARCHIVE
-};
-
-
 
 class WXDLLEXPORT wxXmlResourceDataRecord
 {
@@ -61,20 +54,12 @@ class WXDLLEXPORT wxXmlResource : public wxObject
 {
     public:
         wxXmlResource();
-        wxXmlResource(const wxString& filemask, int type);
+        wxXmlResource(const wxString& filemask);
         ~wxXmlResource();
 
         // Loads resources from XML files that match given filemask.
-        // This method understands VFS (see filesys.h). Type is one of
-        // wxXML_TEXT, wxXML_BINARY, wxXML_ARCHIVE and specifies type of
-        // data to be expected: 
-        //    wxXML_BINARY     - binary version of .xml file, as produced
-        //                       by wxXmlDocument::SaveBinary
-        //    wxXML_ARCHIVE    - ZIP archive that contains arbitrary number
-        //                       of files with .xmb extension
-        //                       (this kind of ZIP archive is produced by
-        //                       XML resources compiler that ships with wxWin)
-        bool Load(const wxString& filemask, int type = wxXML_ARCHIVE);
+        // This method understands VFS (see filesys.h).
+        bool Load(const wxString& filemask);
         
         // Initialize handlers for all supported controls/windows. This will
         // make the executable quite big because it forces linking against
index d35cd3722bbfd33126f6e58d8f4524cbb679fc16..18ae1f0aa1e61fd10177a0b371c3fc1f38dca671 100644 (file)
@@ -77,7 +77,6 @@ static void ReleaseLibxml()
 {
     if (gs_libxmlLoaded)
     {
-        wxLogDebug("Releasing libxml.so.2");
         wxDllLoader::UnloadLibrary(gs_libxmlDLL.Handle);
     }
     gs_libxmlLoaded = FALSE;
@@ -91,7 +90,6 @@ static bool LoadLibxml()
     if (gs_libxmlLoadFailed) return FALSE;
     gs_libxmlLoadFailed = TRUE;
 
-    wxLogDebug("Loading libxml.so.2...");
     {
     wxLogNull lg;
 #ifdef __UNIX__
@@ -145,7 +143,6 @@ static bool LoadLibxml()
 
     gs_libxmlLoadFailed = FALSE;
 
-    wxLogDebug("...succeed");
     return TRUE;
 }
 
index 0318204747cb2bf9c7b40e4652652819f07b5222..b5b0415079ca87421a2336f0029d21db10c2eb15 100644 (file)
@@ -40,10 +40,10 @@ wxXmlResource::wxXmlResource()
     m_Handlers.DeleteContents(TRUE);
 }
     
-wxXmlResource::wxXmlResource(const wxString& filemask, int type)
+wxXmlResource::wxXmlResource(const wxString& filemask)
 {
     m_Handlers.DeleteContents(TRUE);
-    Load(filemask, type);
+    Load(filemask);
 }
 
 wxXmlResource::~wxXmlResource()
@@ -52,10 +52,11 @@ wxXmlResource::~wxXmlResource()
 }
 
 
-bool wxXmlResource::Load(const wxString& filemask, int type)
+bool wxXmlResource::Load(const wxString& filemask)
 {
     wxString fnd;
     wxXmlResourceDataRecord *drec;
+    bool iswild = wxIsWild(filemask);
     
 #if wxUSE_FILESYSTEM
     wxFileSystem fsys;
@@ -64,13 +65,16 @@ bool wxXmlResource::Load(const wxString& filemask, int type)
 #else
 #   define wxXmlFindFirst  wxFindFirstFile(filemask, wxFILE)
 #   define wxXmlFindNext   wxFindNextFile()
-    wxASSERT_MSG(type != wxXML_ARCHIVE, wxT("ZIP archive XML resources supported only with wxUSE_FILESYSTEM set to 1!"));
 #endif
-    fnd = wxXmlFindFirst;
+    if (iswild)
+        fnd = wxXmlFindFirst;
+    else
+        fnd = filemask;
     while (!!fnd)
     {
 #if wxUSE_FILESYSTEM
-        if (type == wxXML_ARCHIVE)
+        if (filemask.Lower().Matches("*.zip") ||
+            filemask.Lower().Matches("*.rsc"))
         {
             wxFileSystem fs2;
             wxString fnd2;
@@ -91,7 +95,11 @@ bool wxXmlResource::Load(const wxString& filemask, int type)
             drec->File = fnd;
             m_Data.Add(drec);
         }
-        fnd = wxXmlFindNext;
+
+        if (iswild)
+            fnd = wxXmlFindNext;
+        else
+            fnd = wxEmptyString;
     }
 #   undef wxXmlFindFirst
 #   undef wxXmlFindNext
@@ -249,12 +257,19 @@ void wxXmlResource::UpdateResources()
                 m_Data[i].Doc = new wxXmlDocument;
             }
             if (!stream || !m_Data[i].Doc->Load(*stream))
+            {
                 wxLogError(_("Cannot load resources from file '%s'."), m_Data[i].File.c_str());
-
-            if (m_Data[i].Doc->GetRoot()->GetName() != _T("resource")) 
+                delete m_Data[i].Doc;
+                m_Data[i].Doc = NULL;
+            }
+            else if (m_Data[i].Doc->GetRoot()->GetName() != _T("resource")) 
+            {
                 wxLogError(_("Invalid XML resource '%s': doesn't have root node 'resource'."), m_Data[i].File.c_str());
-
-            ProcessPlatformProperty(m_Data[i].Doc->GetRoot());
+                delete m_Data[i].Doc;
+                m_Data[i].Doc = NULL;
+            }
+            else
+                ProcessPlatformProperty(m_Data[i].Doc->GetRoot());
 
 #           if wxUSE_FILESYSTEM
             delete file;
@@ -274,6 +289,7 @@ wxXmlNode *wxXmlResource::FindResource(const wxString& name, const wxString& typ
     wxString dummy;   
     for (size_t f = 0; f < m_Data.GetCount(); f++)
     {
+        if (m_Data[f].Doc == NULL || m_Data[f].Doc->GetRoot() == NULL) continue;
         for (wxXmlNode *node = m_Data[f].Doc->GetRoot()->GetChildren(); 
                                       node; node = node->GetNext())
             if (    node->GetType() == wxXML_ELEMENT_NODE &&