There are two features missing from wxAUI that I think are essential.
1. There is no possibility for an external of an wxAUI to be made aware of wxAUI internal changes.
2. It would be useful to have more than one window attached to a wxAUI panel.
It just happens that I needed both of these features for a product currently under development.
First came from the need to upate the menu bar (which is not part of wxAui) if a wxAui panel is hidden for multi selection menus.
And the second comes from a data structure that needs dual viewing in the same panel (with possible interaction/communication inside the panel between the two views).
Currently, I have a simple solution for the first. In manager.h add a new event type
- Code: Select all
DECLARE_EVENT_TYPE(wxEVT_AUI_PANECLOSED, 1)
then declare its event handler:
- Code: Select all
#define EVT_AUI_PANECLOSED(func) \
wx__DECLARE_EVT0(wxEVT_AUI_PANECLOSED, wxFrameManagerEventHandler(func))
and in the OnPaneButton handler add the following code
- Code: Select all
//send the event to the outside world
outEvent.pane = new wxPaneInfo (pane);
if (pane.IsToWindow())
{
pane.window->ProcessEvent((wxEvent&)outEvent);
}
if (pane.IsToFrame())
{
m_frame->ProcessEvent((wxEvent&)outEvent);
}
Now you can define the new handler and observe outside of the wxAui all the panes closing inside, and accordingly update the menus that open those panels in the first place.
When I'll have a working solution of the second problem, I will post it.
Best regards!