如何在 wxPHP 中重新打开一个关闭的 wxAuiManager 面板?
How to re-open a closed wxAuiManager pane in wxPHP?
我正在使用 wxPHP 对 wxAuiManager 进行试验,以了解如何将窗格元素排列在围绕中央固定元素的可停靠 window 中。 documentation is rather sparse here 所以我正在尝试使用自动完成!
默认情况下,我的窗格元素有一个关闭图标,单击它可以成功关闭窗格,但我现在有兴趣恢复关闭的窗格。这似乎并不像人们想象的那么微不足道。
似乎默认情况下关闭 window 会破坏它,但我相信这可以通过使用 DestroyOnClose()
来防止。我正在做这样的初始化,在 wxFrame
:
的上下文中
$this->manager = new wxAuiManager($this, wxAUI_MGR_DEFAULT);
$textCtrl = new wxTextCtrl($this, -1, "Pane");
$paneInfo = new wxAuiPaneInfo();
$info->Top(); // Dock in the top direction
$info->PinButton(); // Give the pane a pin (or "undock") icon
$info->DestroyOnClose(false);
$info->Name('auiPane'); // Make this item individually addressable
$this->manager->AddPane($textCtrl, $paneInfo);
关闭窗格后,要恢复我正在这样做,在相同的 wxFrame
上下文中:
$info = $this->manager->GetPane('auiPane');
echo "Is shown: " . ($info->IsShown() ? 'yes' : 'no') . "\n";
// These two are probably unnecessary - grasping at straws here!
$info->Top();
$info->TopDockable();
// Show the pane again
$info->Show();
关闭后文本输出最初显示"no",然后运行这段代码再次产生"yes"。因此 Show()
似乎确实有效果,但它并没有回到 wxAuiManager 排列中——我看不出框架内容有什么不同。
我错过了什么?我是 运行 PHP 5.5.9 Ubuntu 14.04,自定义编译了 wxwidgets
扩展。
我想通了 - 真的很容易。 wxAuiPaneInfo
方法 Show()
是正确的,但是在此之后,管理器需要一个 Update()
来强制它立即重绘:
// Show all available panes
for($i = 0; $i <= 7; $i++)
{
$info = $this->manager->GetPane('auiPane' . $i);
$info->Show();
}
// Redraw the managed window
$this->manager->Update();
我正在使用 wxPHP 对 wxAuiManager 进行试验,以了解如何将窗格元素排列在围绕中央固定元素的可停靠 window 中。 documentation is rather sparse here 所以我正在尝试使用自动完成!
默认情况下,我的窗格元素有一个关闭图标,单击它可以成功关闭窗格,但我现在有兴趣恢复关闭的窗格。这似乎并不像人们想象的那么微不足道。
似乎默认情况下关闭 window 会破坏它,但我相信这可以通过使用 DestroyOnClose()
来防止。我正在做这样的初始化,在 wxFrame
:
$this->manager = new wxAuiManager($this, wxAUI_MGR_DEFAULT);
$textCtrl = new wxTextCtrl($this, -1, "Pane");
$paneInfo = new wxAuiPaneInfo();
$info->Top(); // Dock in the top direction
$info->PinButton(); // Give the pane a pin (or "undock") icon
$info->DestroyOnClose(false);
$info->Name('auiPane'); // Make this item individually addressable
$this->manager->AddPane($textCtrl, $paneInfo);
关闭窗格后,要恢复我正在这样做,在相同的 wxFrame
上下文中:
$info = $this->manager->GetPane('auiPane');
echo "Is shown: " . ($info->IsShown() ? 'yes' : 'no') . "\n";
// These two are probably unnecessary - grasping at straws here!
$info->Top();
$info->TopDockable();
// Show the pane again
$info->Show();
关闭后文本输出最初显示"no",然后运行这段代码再次产生"yes"。因此 Show()
似乎确实有效果,但它并没有回到 wxAuiManager 排列中——我看不出框架内容有什么不同。
我错过了什么?我是 运行 PHP 5.5.9 Ubuntu 14.04,自定义编译了 wxwidgets
扩展。
我想通了 - 真的很容易。 wxAuiPaneInfo
方法 Show()
是正确的,但是在此之后,管理器需要一个 Update()
来强制它立即重绘:
// Show all available panes
for($i = 0; $i <= 7; $i++)
{
$info = $this->manager->GetPane('auiPane' . $i);
$info->Show();
}
// Redraw the managed window
$this->manager->Update();