}
else
{
- node->RemoveChild(c);
wxXmlNode *c2 = c->GetNext();
+ node->RemoveChild(c);
delete c;
c = c2;
}
-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"));
-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
-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);