]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmlres.cpp
mention the key code changes
[wxWidgets.git] / src / xrc / xmlres.cpp
index 2106d04ff7220635293bf413fd7866a23f7ce8b3..b0376ee8516233bb371cf7037653673071254ee7 100644 (file)
@@ -269,8 +269,8 @@ static void ProcessPlatformProperty(wxXmlNode *node)
         }
         else
         {
-            node->RemoveChild(c);
             wxXmlNode *c2 = c->GetNext();
+            node->RemoveChild(c);
             delete c;
             c = c2;
         }
@@ -719,67 +719,6 @@ int wxXmlResourceHandler::GetID()
 
 
 
-wxArtID wxXmlResourceHandler::GetStockID(const wxString& param)
-{
-    wxXmlNode *stockIDNode = GetParamNode(param);
-    if (stockIDNode == NULL)    
-        return wxEmptyString;
-    
-    wxXmlNode *oldnode = m_node;
-    m_node = stockIDNode;
-    
-    wxArtID sid = m_node->GetPropVal(wxT("stock_id"), wxT(""));      
-   
-    m_node = oldnode;
-
-    if (sid.IsEmpty()) return wxEmptyString;
-#define stdID(id) else if (sid == wxT(#id)) return id
-    stdID(wxART_ADD_BOOKMARK); stdID(wxART_DEL_BOOKMARK);
-    stdID(wxART_HELP_SIDE_PANEL); stdID(wxART_HELP_SETTINGS);
-    stdID(wxART_HELP_BOOK); stdID(wxART_HELP_FOLDER);
-    stdID(wxART_HELP_PAGE); stdID(wxART_GO_BACK);
-    stdID(wxART_GO_FORWARD); stdID(wxART_GO_UP);
-    stdID(wxART_GO_DOWN); stdID(wxART_GO_TO_PARENT);
-    stdID(wxART_GO_HOME); stdID(wxART_FILE_OPEN);
-    stdID(wxART_PRINT); stdID(wxART_HELP); stdID(wxART_TIP);
-    stdID(wxART_REPORT_VIEW); stdID(wxART_LIST_VIEW);
-    stdID(wxART_NEW_DIR); stdID(wxART_FOLDER); 
-    stdID(wxART_GO_DIR_UP); stdID(wxART_EXECUTABLE_FILE);
-    stdID(wxART_NORMAL_FILE); stdID(wxART_TICK_MARK);
-    stdID(wxART_CROSS_MARK); stdID(wxART_ERROR);
-    stdID(wxART_QUESTION);   stdID(wxART_WARNING);
-    stdID(wxART_INFORMATION);
-#undef stdID
-    else return sid;
-}
-
-
-
-wxArtClient wxXmlResourceHandler::GetStockClient(const wxString& param)
-{
-    wxXmlNode *stockClientNode = GetParamNode(param);
-    if (stockClientNode == NULL)
-        return wxEmptyString;
-    
-    wxXmlNode *oldnode = m_node;
-    m_node = stockClientNode;
-
-    wxArtClient sid = m_node->GetPropVal(wxT("stock_client"), wxT("wxART_OTHER"));
-
-    m_node = oldnode;
-
-    if (sid.IsEmpty()) return wxEmptyString;
-#define stdID(id) else if (sid == wxT(#id)) return id
-    stdID(wxART_TOOLBAR); stdID(wxART_MENU);
-    stdID(wxART_FRAME_ICON); stdID(wxART_CMN_DIALOG); 
-    stdID(wxART_HELP_BROWSER); stdID(wxART_MESSAGE_BOX);
-    stdID(wxART_OTHER); 
-#undef stdID
-    else return sid;
-}
-
-
-
 wxString wxXmlResourceHandler::GetName()
 {
     return m_node->GetPropVal(wxT("name"), wxT("-1"));
@@ -817,17 +756,28 @@ wxColour wxXmlResourceHandler::GetColour(const wxString& param)
 
 
 
-wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, wxSize size)
+wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, 
+                                         const wxArtClient& defaultArtClient,
+                                         wxSize size)
 {
-    wxString stk = param;
-    if (!GetStockID(stk).IsEmpty())
+    /* If the bitmap is specified as stock item, query wxArtProvider for it: */
+    wxXmlNode *bmpNode = GetParamNode(param);
+    if ( bmpNode )
     {
-        wxBitmap stockArt = wxArtProvider::GetBitmap(GetStockID(stk),
-                                                     GetStockClient(stk), size);
-        if (stockArt != wxNullBitmap)
-            return stockArt;
+        wxString sid = bmpNode->GetPropVal(wxT("stock_id"), wxEmptyString);
+        if ( !sid.empty() )
+        {
+            wxString scl = bmpNode->GetPropVal(wxT("stock_client"), defaultArtClient);
+            wxBitmap stockArt = 
+                wxArtProvider::GetBitmap(wxART_MAKE_ART_ID_FROM_STR(sid),
+                                         wxART_MAKE_CLIENT_ID_FROM_STR(scl),
+                                         size);
+            if ( stockArt.Ok() )
+                return stockArt;
+        }
     }
 
+    /* ...or load the bitmap from file: */  
     wxString name = GetParamValue(param);
     if (name.IsEmpty()) return wxNullBitmap;        
 #if wxUSE_FILESYSTEM
@@ -855,11 +805,13 @@ wxBitmap wxXmlResourceHandler::GetBitmap(const wxString& param, wxSize size)
 
 
 
-wxIcon wxXmlResourceHandler::GetIcon(const wxString& param, wxSize size)
+wxIcon wxXmlResourceHandler::GetIcon(const wxString& param, 
+                                     const wxArtClient& defaultArtClient,
+                                     wxSize size)
 {
 #if wxCHECK_VERSION(2,3,0) || defined(__WXMSW__)
     wxIcon icon;
-    icon.CopyFromBitmap(GetBitmap(param, size));
+    icon.CopyFromBitmap(GetBitmap(param, defaultArtClient, size));
 #else
     wxIcon *iconpt;
     wxBitmap bmppt = GetBitmap(param, size);