handler->SetParentResource(this);
}
+void wxXmlResource::InsertHandler(wxXmlResourceHandler *handler)
+{
+ m_handlers.Insert(handler);
+ handler->SetParentResource(this);
+}
+
void wxXmlResource::ClearHandlers()
wxDialog *wxXmlResource::LoadDialog(wxWindow *parent, const wxString& name)
{
- wxDialog *dialog = new wxDialog;
- if (!LoadDialog(dialog, parent, name))
- { delete dialog; return NULL; }
- else return dialog;
+ return (wxDialog*)CreateResFromNode(FindResource(name, wxT("wxDialog")), parent, NULL);
}
bool wxXmlResource::LoadDialog(wxDialog *dlg, wxWindow *parent, const wxString& name)
return CreateResFromNode(FindResource(name, wxT("wxPanel")), parent, panel) != NULL;
}
+wxFrame *wxXmlResource::LoadFrame(wxWindow* parent, const wxString& name)
+{
+ return (wxFrame*)CreateResFromNode(FindResource(name, wxT("wxFrame")), parent, NULL);
+}
+
bool wxXmlResource::LoadFrame(wxFrame* frame, wxWindow *parent, const wxString& name)
{
return CreateResFromNode(FindResource(name, wxT("wxFrame")), parent, frame) != NULL;
return rt;
}
+
+wxObject *wxXmlResource::LoadObject(wxWindow *parent, const wxString& name, const wxString& classname)
+{
+ return CreateResFromNode(FindResource(name, classname), parent, NULL);
+}
+
+bool wxXmlResource::LoadObject(wxObject *instance, wxWindow *parent, const wxString& name, const wxString& classname)
+{
+ return CreateResFromNode(FindResource(name, classname), parent, instance) != NULL;
+}
+
+
bool wxXmlResource::AttachUnknownControl(const wxString& name,
wxWindow *control, wxWindow *parent)
{
}
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 (name.IsEmpty()) return wxNullBitmap;
#if wxUSE_FILESYSTEM
wxFSFile *fsfile = GetCurFileSystem().OpenFile(name);
if (fsfile == NULL)
-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);