add support for creating drop down toolbar buttons from XRC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57073 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -345,6 +345,7 @@ All (GUI):
|
|||||||
- Added wxWindow::AlwaysShowScrollbars() (Julian Scheid).
|
- Added wxWindow::AlwaysShowScrollbars() (Julian Scheid).
|
||||||
- Added wxMouseEvent::GetClickCount() (Julian Scheid).
|
- Added wxMouseEvent::GetClickCount() (Julian Scheid).
|
||||||
- Added wxBG_STYLE_TRANSPARENT background style (Julian Scheid).
|
- Added wxBG_STYLE_TRANSPARENT background style (Julian Scheid).
|
||||||
|
- Added support for drop-down toolbar buttons to XRC.
|
||||||
- Added XRCSIZERITEM() macro for obtaining sizers from XRC (Brian Vanderburg II).
|
- Added XRCSIZERITEM() macro for obtaining sizers from XRC (Brian Vanderburg II).
|
||||||
- New and improved wxFileCtrl (Diaa Sami and Marcin Wojdyr).
|
- New and improved wxFileCtrl (Diaa Sami and Marcin Wojdyr).
|
||||||
- Added wxEventBlocker class (Francesco Montorsi).
|
- Added wxEventBlocker class (Francesco Montorsi).
|
||||||
|
@@ -1441,6 +1441,8 @@ properties:
|
|||||||
Item's kind is wxITEM_RADIO (default: 0)?}
|
Item's kind is wxITEM_RADIO (default: 0)?}
|
||||||
@row3col{toggle, @ref overview_xrcformat_type_bool,
|
@row3col{toggle, @ref overview_xrcformat_type_bool,
|
||||||
Item's kind is wxITEM_CHECK (default: 0)?}
|
Item's kind is wxITEM_CHECK (default: 0)?}
|
||||||
|
@row3col{dropdown, see below,
|
||||||
|
Item's kind is wxITEM_DROPDOWN (default: 0)? (@since 2.9.0)}
|
||||||
@row3col{tooltip, @ref overview_xrcformat_type_text,
|
@row3col{tooltip, @ref overview_xrcformat_type_text,
|
||||||
Tooltip to use for the tool (default: none).}
|
Tooltip to use for the tool (default: none).}
|
||||||
@row3col{longhelp, @ref overview_xrcformat_type_text,
|
@row3col{longhelp, @ref overview_xrcformat_type_text,
|
||||||
@@ -1449,7 +1451,11 @@ properties:
|
|||||||
Is the tool initially disabled (default: 0)?}
|
Is the tool initially disabled (default: 0)?}
|
||||||
@endTable
|
@endTable
|
||||||
|
|
||||||
@c radio and @c toggle are mutually exclusive.
|
The presence of a @c dropdown property indicates that the tool is of type
|
||||||
|
wxITEM_DROPDOWN. It must be either empty or contain exactly one wxMenu @ref
|
||||||
|
xrc_wxmenu child object defining the drop-down button associated menu.
|
||||||
|
|
||||||
|
Notice that @c radio, @c toggle and @c dropdown are mutually exclusive.
|
||||||
|
|
||||||
Children that are neither @c tool nor @c separator must be instances of classes
|
Children that are neither @c tool nor @c separator must be instances of classes
|
||||||
derived from wxControl and are added to the toolbar using
|
derived from wxControl and are added to the toolbar using
|
||||||
@@ -1467,6 +1473,20 @@ Example:
|
|||||||
<bitmap>bar.png</bitmap>
|
<bitmap>bar.png</bitmap>
|
||||||
<label>Bar</label>
|
<label>Bar</label>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="tool" name="view_auto">
|
||||||
|
<bitmap>view.png</bitmap>
|
||||||
|
<label>View</label>
|
||||||
|
<dropdown>
|
||||||
|
<object class="wxMenu">
|
||||||
|
<object class="wxMenuItem" name="view_as_text">
|
||||||
|
<label>View as text</label>
|
||||||
|
</object>
|
||||||
|
<object class="wxMenuItem" name="view_as_hex">
|
||||||
|
<label>View as binary</label>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</dropdown>
|
||||||
|
</object>
|
||||||
<object class="separator"/>
|
<object class="separator"/>
|
||||||
<object class="wxComboBox">
|
<object class="wxComboBox">
|
||||||
<content>
|
<content>
|
||||||
|
@@ -81,6 +81,25 @@
|
|||||||
<object class="wxToolBar">
|
<object class="wxToolBar">
|
||||||
<style>wxTB_FLAT|wxTB_NODIVIDER</style>
|
<style>wxTB_FLAT|wxTB_NODIVIDER</style>
|
||||||
<margins>2,2</margins>
|
<margins>2,2</margins>
|
||||||
|
<object class="tool" name="New">
|
||||||
|
<bitmap stock_id="wxART_NEW"/>
|
||||||
|
<label>New</label>
|
||||||
|
</object>
|
||||||
|
<object class="tool" name="view_auto">
|
||||||
|
<bitmap stock_id="wxART_FILE_OPEN"/>
|
||||||
|
<label>View</label>
|
||||||
|
<dropdown>
|
||||||
|
<object class="wxMenu">
|
||||||
|
<object class="wxMenuItem" name="view_as_text">
|
||||||
|
<label>View as text</label>
|
||||||
|
</object>
|
||||||
|
<object class="wxMenuItem" name="view_as_hex">
|
||||||
|
<label>View as binary</label>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</dropdown>
|
||||||
|
</object>
|
||||||
|
<object class="separator"/>
|
||||||
<object class="tool" name="home">
|
<object class="tool" name="home">
|
||||||
<toggle>1</toggle>
|
<toggle>1</toggle>
|
||||||
<bitmap stock_id="wxART_GO_HOME"/>
|
<bitmap stock_id="wxART_GO_HOME"/>
|
||||||
@@ -128,6 +147,24 @@
|
|||||||
<style>wxTB_FLAT|wxTB_NODIVIDER</style>
|
<style>wxTB_FLAT|wxTB_NODIVIDER</style>
|
||||||
<bg>#bbbbff</bg>
|
<bg>#bbbbff</bg>
|
||||||
<margins>2,2</margins>
|
<margins>2,2</margins>
|
||||||
|
<object class="tool" name="New">
|
||||||
|
<bitmap stock_id="wxART_NEW"/>
|
||||||
|
<label>New</label>
|
||||||
|
</object>
|
||||||
|
<object class="tool" name="view_auto">
|
||||||
|
<bitmap stock_id="wxART_FILE_OPEN"/>
|
||||||
|
<label>View</label>
|
||||||
|
<dropdown>
|
||||||
|
<object class="wxMenu">
|
||||||
|
<object class="wxMenuItem" name="view_as_text">
|
||||||
|
<label>View as text</label>
|
||||||
|
</object>
|
||||||
|
<object class="wxMenuItem" name="view_as_hex">
|
||||||
|
<label>View as binary</label>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</dropdown>
|
||||||
|
</object>
|
||||||
<object class="tool" name="home">
|
<object class="tool" name="home">
|
||||||
<toggle>1</toggle>
|
<toggle>1</toggle>
|
||||||
<bitmap stock_id="wxART_GO_HOME"/>
|
<bitmap stock_id="wxART_GO_HOME"/>
|
||||||
|
@@ -58,23 +58,58 @@ wxObject *wxToolBarXmlHandler::DoCreateResource()
|
|||||||
wxItemKind kind = wxITEM_NORMAL;
|
wxItemKind kind = wxITEM_NORMAL;
|
||||||
if (GetBool(wxT("radio")))
|
if (GetBool(wxT("radio")))
|
||||||
kind = wxITEM_RADIO;
|
kind = wxITEM_RADIO;
|
||||||
|
|
||||||
if (GetBool(wxT("toggle")))
|
if (GetBool(wxT("toggle")))
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( kind == wxITEM_NORMAL,
|
wxASSERT_MSG( kind == wxITEM_NORMAL,
|
||||||
_T("can't have both toggle and radio button at once") );
|
_T("can't have both toggle and radio button at once") );
|
||||||
kind = wxITEM_CHECK;
|
kind = wxITEM_CHECK;
|
||||||
}
|
}
|
||||||
m_toolbar->AddTool(GetID(),
|
|
||||||
|
// check whether we have dropdown tag inside
|
||||||
|
wxMenu *menu = NULL; // menu for drop down items
|
||||||
|
wxXmlNode * const nodeDropdown = GetParamNode("dropdown");
|
||||||
|
if ( nodeDropdown )
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( kind == wxITEM_NORMAL,
|
||||||
|
"drop down button can't be a check/radio "
|
||||||
|
"button too" );
|
||||||
|
|
||||||
|
kind = wxITEM_DROPDOWN;
|
||||||
|
|
||||||
|
// also check for the menu specified inside dropdown (it is
|
||||||
|
// optional and may be absent for e.g. dynamically-created
|
||||||
|
// menus)
|
||||||
|
wxXmlNode * const nodeMenu = nodeDropdown->GetChildren();
|
||||||
|
if ( nodeMenu )
|
||||||
|
{
|
||||||
|
wxObject *res = CreateResFromNode(nodeMenu, NULL);
|
||||||
|
menu = wxDynamicCast(res, wxMenu);
|
||||||
|
wxASSERT_MSG( menu, "invalid drop down object contents" );
|
||||||
|
|
||||||
|
wxASSERT_MSG( !nodeMenu->GetNext(),
|
||||||
|
"only single menu tag allowed inside dropdown" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wxToolBarToolBase * const
|
||||||
|
tool = m_toolbar->AddTool
|
||||||
|
(
|
||||||
|
GetID(),
|
||||||
GetText(wxT("label")),
|
GetText(wxT("label")),
|
||||||
GetBitmap(wxT("bitmap"), wxART_TOOLBAR),
|
GetBitmap(wxT("bitmap"), wxART_TOOLBAR),
|
||||||
GetBitmap(wxT("bitmap2"), wxART_TOOLBAR),
|
GetBitmap(wxT("bitmap2"), wxART_TOOLBAR),
|
||||||
kind,
|
kind,
|
||||||
GetText(wxT("tooltip")),
|
GetText(wxT("tooltip")),
|
||||||
GetText(wxT("longhelp")));
|
GetText(wxT("longhelp"))
|
||||||
|
);
|
||||||
|
|
||||||
if ( GetBool(wxT("disabled")) )
|
if ( GetBool(wxT("disabled")) )
|
||||||
m_toolbar->EnableTool(GetID(), false);
|
m_toolbar->EnableTool(GetID(), false);
|
||||||
|
|
||||||
|
if ( menu )
|
||||||
|
tool->SetDropdownMenu(menu);
|
||||||
|
|
||||||
return m_toolbar; // must return non-NULL
|
return m_toolbar; // must return non-NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user