openSUSE:YaST 开发杂项 YDialogSpy
YDialogSpy:一个交互式 YaST 对话框调试器
YaST UI 引擎现在具有一个交互式对话框调试器:YDialogSpy。这对于非平凡的对话框(例如此对话框)非常有用
(YCP UI 示例)
在 Qt UI 和 Gtk UI 中,按下魔术键组合
Ctrl-Shift-Alt-Y
您将获得一个 YDialogSpy 窗口,如下所示
这显示了原始对话框的控件层次结构,作为一个树。在树中单击,您可以突出显示原始对话框中相应的控件(及其子控件)(先将 YDialogSpy 窗口移到一侧)
这还可以显示您通常看不到的控件,例如 H/VSpacing、H/VStretch 等,以及它显示对齐控件的范围(左、右、上、下)以及布局框(H/VBox)。
控件属性
使用“属性 >>>”按钮,您可以展开 YDialogSpy 对话框以显示树中当前选定控件的控件属性
这显示了该控件的完整属性列表。如果您不记得某个属性的确切名称,这可能会派上用场;在搜索 UI 参考文档而不是直接查找 YDialogSpy 中可能更快。
对于具有简单数据类型的属性,将显示该值(字符串、整数、布尔值)。其他属性显示为“???”;这些属性需要非平凡的数据转换才能显示(选择控件项目、树形控件中的树等)。
一些 YWidget 字段(所有控件的基类)被添加到属性中,主要是因为它们可以很容易地在这里显示。作为副作用,现在可以使用 UI::QueryWidget() 或 UI::ChangeWidget() 分别查询和设置它们。
- VStretch
- HStretch
- VWeight
- HWeight
未来计划
- 编辑属性?至少对于布局权重或间距和边距的大小,这将非常有用。
- 添加一个处理程序来处理“其他”属性,这些属性的值当前显示为“???”;当然,这些属性的处理程序存在,但位于 UI 的不同部分,位于 ycp-ui-bindings (YCPPropertyHandler.cc) 中。也许可以使用函数指针和一个函数,该函数只是使用 YCPValue::toString()(调试输出)。
可用性
大部分代码是用纯 C++ 编写的,位于 libyui 中,这是抽象的 UI 层。具体的 UI(yast2-qt、yast2-ncurses、yast2-gtk)必须提供一个打开它的键组合和一个可以以某种方式突出显示当前选定控件的 highlight() 函数。
当前状态
- Qt UI:是的,按下 Ctrl-Shift-Alt-Y
- Gtk UI:是的,按下 Ctrl-Shift-Alt-Y
- NCurses UI:按下 Ctrl-D Shift-Y(限制:YDialogSpy 窗口无法移动,相应的控件不会突出显示)




