added XRC handler for wxStdDialogButtonSizer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -56,4 +56,20 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // _WX_XH_BOXSIZER_H_
|
class WXDLLIMPEXP_XRC wxStdDialogButtonSizerXmlHandler
|
||||||
|
: public wxXmlResourceHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxStdDialogButtonSizerXmlHandler();
|
||||||
|
virtual wxObject *DoCreateResource();
|
||||||
|
virtual bool CanHandle(wxXmlNode *node);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_isInside;
|
||||||
|
wxStdDialogButtonSizer *m_parentSizer;
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxStdDialogButtonSizerXmlHandler)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _WX_XH_SIZER_H_
|
||||||
|
@@ -5,7 +5,8 @@
|
|||||||
<object class="wxDialog" name="non_derived_dialog">
|
<object class="wxDialog" name="non_derived_dialog">
|
||||||
<title>Non-Derived Dialog Example</title>
|
<title>Non-Derived Dialog Example</title>
|
||||||
<centered>1</centered>
|
<centered>1</centered>
|
||||||
<object class="wxFlexGridSizer">
|
<object class="wxBoxSizer">
|
||||||
|
<orient>wxVERTICAL</orient>
|
||||||
<cols>1</cols>
|
<cols>1</cols>
|
||||||
<rows>0</rows>
|
<rows>0</rows>
|
||||||
<vgap>0</vgap>
|
<vgap>0</vgap>
|
||||||
@@ -22,20 +23,15 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem">
|
<object class="sizeritem">
|
||||||
<flag>wxALIGN_CENTRE|wxALL</flag>
|
<flag>wxEXPAND|wxALL</flag>
|
||||||
<border>5</border>
|
|
||||||
<object class="wxBoxSizer">
|
|
||||||
<orient>wxHORIZONTAL</orient>
|
|
||||||
<object class="sizeritem">
|
|
||||||
<flag>wxALIGN_CENTRE|wxALL</flag>
|
|
||||||
<border>5</border>
|
<border>5</border>
|
||||||
|
<object class="wxStdDialogButtonSizer">
|
||||||
|
<object class="button">
|
||||||
<object class="wxButton" name="wxID_OK">
|
<object class="wxButton" name="wxID_OK">
|
||||||
<label>OK</label>
|
<label>OK</label>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem">
|
<object class="button">
|
||||||
<flag>wxALIGN_CENTRE|wxALL</flag>
|
|
||||||
<border>5</border>
|
|
||||||
<object class="wxButton" name="wxID_CANCEL">
|
<object class="wxButton" name="wxID_CANCEL">
|
||||||
<label>Cancel</label>
|
<label>Cancel</label>
|
||||||
</object>
|
</object>
|
||||||
|
@@ -31,11 +31,12 @@
|
|||||||
#include "wx/tokenzr.h"
|
#include "wx/tokenzr.h"
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// wxSizerXmlHandler
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxSizerXmlHandler, wxXmlResourceHandler)
|
IMPLEMENT_DYNAMIC_CLASS(wxSizerXmlHandler, wxXmlResourceHandler)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
wxSizerXmlHandler::wxSizerXmlHandler()
|
wxSizerXmlHandler::wxSizerXmlHandler()
|
||||||
: wxXmlResourceHandler(),
|
: wxXmlResourceHandler(),
|
||||||
m_isInside(false),
|
m_isInside(false),
|
||||||
@@ -363,4 +364,71 @@ void wxSizerXmlHandler::AddSizerItem(wxSizerItem* sitem)
|
|||||||
m_parentSizer->Add(sitem);
|
m_parentSizer->Add(sitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// wxStdDialogButtonSizerXmlHandler
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxStdDialogButtonSizerXmlHandler, wxXmlResourceHandler)
|
||||||
|
|
||||||
|
wxStdDialogButtonSizerXmlHandler::wxStdDialogButtonSizerXmlHandler()
|
||||||
|
: m_isInside(false), m_parentSizer(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxObject *wxStdDialogButtonSizerXmlHandler::DoCreateResource()
|
||||||
|
{
|
||||||
|
if (m_class == wxT("wxStdDialogButtonSizer"))
|
||||||
|
{
|
||||||
|
wxASSERT( !m_parentSizer );
|
||||||
|
|
||||||
|
wxSizer *s = m_parentSizer = new wxStdDialogButtonSizer;
|
||||||
|
m_isInside = true;
|
||||||
|
|
||||||
|
CreateChildren(m_parent, true/*only this handler*/);
|
||||||
|
|
||||||
|
m_parentSizer->Realize();
|
||||||
|
|
||||||
|
m_isInside = false;
|
||||||
|
m_parentSizer = NULL;
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
else // m_class == "button"
|
||||||
|
{
|
||||||
|
wxASSERT( m_parentSizer );
|
||||||
|
|
||||||
|
// find the item to be managed by this sizeritem
|
||||||
|
wxXmlNode *n = GetParamNode(wxT("object"));
|
||||||
|
if ( !n )
|
||||||
|
n = GetParamNode(wxT("object_ref"));
|
||||||
|
|
||||||
|
// did we find one?
|
||||||
|
if (n)
|
||||||
|
{
|
||||||
|
wxObject *item = CreateResFromNode(n, m_parent, NULL);
|
||||||
|
wxButton *button = wxDynamicCast(item, wxButton);
|
||||||
|
|
||||||
|
if (button)
|
||||||
|
m_parentSizer->AddButton(button);
|
||||||
|
else
|
||||||
|
wxLogError(wxT("Error in resource - expected button."));
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
else /*n == NULL*/
|
||||||
|
{
|
||||||
|
wxLogError(wxT("Error in resource: no button within wxStdDialogButtonSizer."));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxStdDialogButtonSizerXmlHandler::CanHandle(wxXmlNode *node)
|
||||||
|
{
|
||||||
|
return (!m_isInside && IsOfClass(node, wxT("wxStdDialogButtonSizer"))) ||
|
||||||
|
(m_isInside && IsOfClass(node, wxT("button")));
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_XRC
|
#endif // wxUSE_XRC
|
||||||
|
@@ -34,6 +34,7 @@ void wxXmlResource::InitAllHandlers()
|
|||||||
AddHandler(new wxDialogXmlHandler);
|
AddHandler(new wxDialogXmlHandler);
|
||||||
AddHandler(new wxPanelXmlHandler);
|
AddHandler(new wxPanelXmlHandler);
|
||||||
AddHandler(new wxSizerXmlHandler);
|
AddHandler(new wxSizerXmlHandler);
|
||||||
|
AddHandler(new wxStdDialogButtonSizerXmlHandler);
|
||||||
AddHandler(new wxButtonXmlHandler);
|
AddHandler(new wxButtonXmlHandler);
|
||||||
AddHandler(new wxBitmapButtonXmlHandler);
|
AddHandler(new wxBitmapButtonXmlHandler);
|
||||||
AddHandler(new wxStaticTextXmlHandler);
|
AddHandler(new wxStaticTextXmlHandler);
|
||||||
|
Reference in New Issue
Block a user