在这个问题上,我一直在尝试捕获 AUI 窗格配置,以便在关闭任何窗格时可以恢复它。wxPHP 的文档有些有限,wxWidgets 的文档在上游,所以我在很大程度上是摸索着自己的方式。
我已经意识到这SavePaneInfo
将帮助我捕获窗格的状态 - 它输出一个透视字符串,表示在给定时刻窗格的位置和选项。因此,我需要做的就是捕捉窗格何时发生变化并更新它的内部表示。
为了感兴趣,一个透视图是这样的:
name=auiPane3;caption=Caption 3;state=2099196;dir=3;layer=0;row=0;pos=1;prop=100000;bestw=90;besth=25;minw=-1;minh=-1 ;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1
然而,捕获移动/停靠事件并非易事。我可以看到与 AUI 相关的六个事件:
wxEVT_AUI_FIND_MANAGER
wxEVT_AUI_PANE_BUTTON
wxEVT_AUI_PANE_CLOSE
wxEVT_AUI_PANE_MAXIMISE
wxEVT_AUI_PANE_RESTORE
wxEVT_AUI_PANE_RENDER
我已经能够捕获恢复和关闭事件,而 find_manager 似乎没有做任何事情。我试过wxEVT_ANY
这个窗口,它似乎也没有捕捉到任何东西。我也在单个窗格上尝试过,但无济于事(据我所知,没有任何调用):
$managedWindow->getWindowByIndex(0)->Connect(wxEVT_ANY, array($this, "onAny"));
上游库 wxWidgets 的文档提到了这个事件:
EVT_AUI_PANE_ACTIVATED
然而,这似乎并没有在 wxPHP 中实现——这就是我想要的吗?这听起来不太对,但如果我可以在没有常量的情况下访问它,我当然会尝试它。
我想我可以使用wxAuiManager::SetArtProvider
标准的艺术提供者对象,修改为捕获窗格状态,但这感觉就像是一把大锤来破解坚果。我还可以捕获关闭事件并更改返回的透视字符串,因此未设置“关闭”位,但这也不是特别优雅。
我想做的事情感觉真的很微不足道,并且会与 wxWidgets 的其他部分保持一致,但事实并非如此。有什么建议可以尝试吗?