From db59a97cdad9867499280fe10f751135964cbb5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Tue, 20 Aug 2002 22:28:15 +0000 Subject: [PATCH] 1. minor rewrite of XRC's stock_id/stock_client handling, now guesses client id from context 2. fixed 'platform' property handling git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- contrib/src/xrc/xh_menu.cpp | 2 +- contrib/src/xrc/xh_stbmp.cpp | 2 +- contrib/src/xrc/xh_toolb.cpp | 4 +- contrib/src/xrc/xmlres.cpp | 94 +++++++++--------------------------- src/xrc/xh_menu.cpp | 2 +- src/xrc/xh_stbmp.cpp | 2 +- src/xrc/xh_toolb.cpp | 4 +- src/xrc/xmlres.cpp | 94 +++++++++--------------------------- 8 files changed, 54 insertions(+), 150 deletions(-) diff --git a/contrib/src/xrc/xh_menu.cpp b/contrib/src/xrc/xh_menu.cpp index 4ff9112e1d..08d5dc4d21 100644 --- a/contrib/src/xrc/xh_menu.cpp +++ b/contrib/src/xrc/xh_menu.cpp @@ -87,7 +87,7 @@ wxObject *wxMenuXmlHandler::DoCreateResource() #if wxCHECK_VERSION(2,3,0) || defined(__WXMSW__) if (HasParam(wxT("bitmap"))) - mitem->SetBitmap(GetBitmap(wxT("bitmap"))); + mitem->SetBitmap(GetBitmap(wxT("bitmap"), wxART_MENU)); #endif p_menu->Append(mitem); mitem->Enable(GetBool(wxT("enabled"), TRUE)); diff --git a/contrib/src/xrc/xh_stbmp.cpp b/contrib/src/xrc/xh_stbmp.cpp index 95edf50853..b1ccad90f5 100644 --- a/contrib/src/xrc/xh_stbmp.cpp +++ b/contrib/src/xrc/xh_stbmp.cpp @@ -34,7 +34,7 @@ wxObject *wxStaticBitmapXmlHandler::DoCreateResource() bmp->Create(m_parentAsWindow, GetID(), - GetBitmap(wxT("bitmap"), GetSize()), + GetBitmap(wxT("bitmap"), wxART_OTHER, GetSize()), GetPosition(), GetSize(), GetStyle(), GetName()); diff --git a/contrib/src/xrc/xh_toolb.cpp b/contrib/src/xrc/xh_toolb.cpp index 31513e75b1..6fe844c348 100644 --- a/contrib/src/xrc/xh_toolb.cpp +++ b/contrib/src/xrc/xh_toolb.cpp @@ -40,8 +40,8 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() { wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: tool not within a toolbar!")); m_toolbar->AddTool(GetID(), - GetBitmap(wxT("bitmap")), - GetBitmap(wxT("bitmap2")), + GetBitmap(wxT("bitmap"), wxART_TOOLBAR), + GetBitmap(wxT("bitmap2"), wxART_TOOLBAR), GetBool(wxT("toggle")), GetPosition().x, GetPosition().y, diff --git a/contrib/src/xrc/xmlres.cpp b/contrib/src/xrc/xmlres.cpp index 2106d04ff7..b0376ee851 100644 --- a/contrib/src/xrc/xmlres.cpp +++ b/contrib/src/xrc/xmlres.cpp @@ -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); diff --git a/src/xrc/xh_menu.cpp b/src/xrc/xh_menu.cpp index 4ff9112e1d..08d5dc4d21 100644 --- a/src/xrc/xh_menu.cpp +++ b/src/xrc/xh_menu.cpp @@ -87,7 +87,7 @@ wxObject *wxMenuXmlHandler::DoCreateResource() #if wxCHECK_VERSION(2,3,0) || defined(__WXMSW__) if (HasParam(wxT("bitmap"))) - mitem->SetBitmap(GetBitmap(wxT("bitmap"))); + mitem->SetBitmap(GetBitmap(wxT("bitmap"), wxART_MENU)); #endif p_menu->Append(mitem); mitem->Enable(GetBool(wxT("enabled"), TRUE)); diff --git a/src/xrc/xh_stbmp.cpp b/src/xrc/xh_stbmp.cpp index 95edf50853..b1ccad90f5 100644 --- a/src/xrc/xh_stbmp.cpp +++ b/src/xrc/xh_stbmp.cpp @@ -34,7 +34,7 @@ wxObject *wxStaticBitmapXmlHandler::DoCreateResource() bmp->Create(m_parentAsWindow, GetID(), - GetBitmap(wxT("bitmap"), GetSize()), + GetBitmap(wxT("bitmap"), wxART_OTHER, GetSize()), GetPosition(), GetSize(), GetStyle(), GetName()); diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp index 31513e75b1..6fe844c348 100644 --- a/src/xrc/xh_toolb.cpp +++ b/src/xrc/xh_toolb.cpp @@ -40,8 +40,8 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() { wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: tool not within a toolbar!")); m_toolbar->AddTool(GetID(), - GetBitmap(wxT("bitmap")), - GetBitmap(wxT("bitmap2")), + GetBitmap(wxT("bitmap"), wxART_TOOLBAR), + GetBitmap(wxT("bitmap2"), wxART_TOOLBAR), GetBool(wxT("toggle")), GetPosition().x, GetPosition().y, diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index 2106d04ff7..b0376ee851 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -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); -- 2.47.2