Inspector介绍
Inspector是GtkSimpleLayout v0.2.x添加的一个新功能,他允许使用GtkSimpleLayout布局的程序在运行的时候探测UI的信息。
(有关GtkSimpleLayout,请看
http://rubynroll.iteye.com/admin/blogs/460727)
对于web开发者来说,firebug之类的工具对于调试UI很重要,因为它可以让你在最终展现的页面中查看每一个UI元素,了解UI的布局,参数等等。因为很多东西在“设计时”是看不到的,所以运行时的探测能力非常重要。
对于桌面程序来说,如果也能有想firebug这样的工具,则对调试UI也有很大帮助。特别是对于布局非常复杂而且动态性很强的UI来说,运行时的探测能力尤其有用。
GtkSimpleLayout Inspector就是为你的程序提供这样的一个能力。下图是例子calculator.rb运行时打开Inspector和未打开Inspector的屏幕截图:
当打开Inspector功能的时候,GtkSimpleLayout自动为每一个UI元素添加一个带颜色的框,当你把鼠标移动到这个框的时候,在tooltips中就把这个UI元素的信息列出来,这些信息包括自顶向下的所有容器,局部参数,类型,以及组名,属性等等。
上面的例图显示,按钮'7‘是一个Gtk::Button,名字为'7',layout参数为[true,true](即:填充空间,自动增长),参数{:set_size_request => [30, 30]}(请求的尺寸为30x30)。其直接父容器是一个Gtk::HBox,往上依次是VBox,HBox,最顶层的容器是VBox。各个容器的layout参数也一并列了出来。
如何打开Inspector
要打开Inspector,你可以在宿主类代码中用inspector_opt来设置.
例如,打开inspector,并告诉inspector加的框的厚度为5像素:
class MyWin < Gtk::Window
include SimpleLayout::Base
inspector_opt :enable => true, :border_width => 5
....
end
或者,你也可以设置环境变量INSPECTOR_ENABLE为1,INSPECTOR_BORDER_WIDTH为5,然后运行程序,效果是一样的。设置环境变量可以让你不用改动目标程序的代码。
export INSPECTOR_ENABLE=1
export INSPECTOR_BORDER_WIDTH=5
ruby calculator.rb
Inspector的实现原理
Inspector的实现原理很简单:当你放置一个UI元件时,GtkSimpleLayout自动为这个UI元件创建一个Gtk::EventBox裹住这个UI元件,然后返回这个EventBox伪装成这个UI元件。由于这个EventBox处于上层容器和UI元件之间,它截获所有通过的参数,属性,并传递给被裹住的UI元件,同时作记录。最后在鼠标移动到这个EventBox的时候在tooltips中展现所记录的UI信息(部分信息需要实时查询)。
这个额外加入的EventBox不影响程序的运行(除了它会增加一个宽度指定的框外),也不改变UI元件的组关系,因此整个程序不用做任何改动,可以象往常一样正常运行。当inspector没有开启的时候,这些EventBox不被创建,自然也不引入任何额外的开销。
得益于GTK的UI对象模型,以及ruby的表达能力,此功能增加不到100行代码。
Enjoy it :-)
分享到:
- 2009-09-06 20:01
- 浏览 1592
- 评论(0)
- 论坛回复 / 浏览 (0 / 1697)
- 查看更多
相关推荐
新版appium1.22与inspector分离,需要单独下载Appium-Inspector
appium最新版本已经去掉了inspector,需要另外安装了,非常麻烦。本版本是官网最新带inspector的版本,非常好用
unity序列化编辑器插件----Odin Inspector and Serializ v3.2.1.0 Odin Inspector and Serializer v3.2.1.0 Odin Inspector and Serializer v3.2.1.0 Odin Inspector and Serializer v3.2.1.0 Odin Inspector and ...
Appium Server GUI新版本 不含Appium Inspector定位工具,需要单独下载安装。官网下载网络极不稳定,特分享该资源Appium-Inspector-windows-2022.5.4.zip
vue-inspector是Vue.js的基本inspector,只专注于移动设备
Appium Inspector,mac版,appium1.22版本后,Appium Inspector需要单独下载安装。官网下载网络不稳定,特再次储存资源,诸位可用
The Advanced Inspector gives you full control over how items are displayed, named, colored or even created, directly from attributes. It streamlines the Inspector, putting right-clickable contextual ...
新版appium1.22与inspector分离,需要单独下载Appium-Inspector
app自动化测试,appium Inspector。在github上下载了几百遍,今天终于下载成功了。太难了!有需要下载的,直接下载,这下方便多了。
Laravel开发-inspector Laravel Inspector,Web工匠的调试和分析工具
在做一些开场动画或者其它指定事件触发 一类功能时,需要...一开始尝试直接使用delegate 来编写,测试发现没有效果,在谷歌搜索到Unity论坛有人提到 delegate 不能被序列化到Inspector 中使用,建议使用 UnityEvent 。
Interface Inspector 是mac上一款macOS界面分析神器, 类似iOS中的Reveal。可以帮助您在运行时查看和了解应用程序的内部结构。让您可以轻松更改界面组件的每个属性,测试不同的组件属性!
unity 开发 Odin - Inspector and Serializer 3.0.6, 最新版
Odin - Inspector and Serializer v3.0.12
使用自定义特性在unity的inspector面板上显示或者隐藏字段
Odin - Inspector and Serializer 1.0.5.3 挺不错的插件,帮助大家提高效率
Odin Inspector 3.0.4
node-inspector,node.js调试工具
• Inspector • Burp's browser • Sending requests between tools • Search • Learn • Target analyzer • Content discovery • Task scheduler • CSRF PoC generator • Compare site maps • ...
DOM Inspector是Mozilla Firefox的一个扩充套件,官方中文版上称之为DOM观察器,在安装Mozilla Firefox时,可以在自订安装中选择是否安装DOM Inspector,如果在安装Mozilla Firefox时没有选择自订安装以安装DOM ...