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
- 浏览 1653
- 评论(0)
- 论坛回复 / 浏览 (0 / 1741)
- 查看更多
相关推荐
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 ...
新版appium1.22与inspector分离,需要单独下载Appium-Inspector
**ng-inspector for Angular** 是一个专为AngularJS框架设计的Chrome浏览器插件,它为开发者提供了一种直观的方式来检查和调试Angular应用的内部工作原理。这个强大的工具可以帮助开发者深入理解应用的数据绑定、...
Appium Inspector 2023.2.1是一款强大的自动化测试工具,专为移动应用程序而设计,支持Windows、Linux和Mac操作系统。这个版本的更新带来了更先进的功能和优化,以帮助开发者和测试工程师高效地进行Appium自动化测试...
《Angular框架开发中的神器——ng-inspector》 在Angular框架的开发过程中,高效且精确的调试工具至关重要。ng-inspector正是一款专为Angular开发者量身定制的浏览器插件,尤其适用于谷歌浏览器。这款插件的存在,...
"ng-inspector"是针对AngularJS开发的一个非常有用的工具,尤其在调试和理解复杂的AngularJS应用时,它的作用不容忽视。 ng-inspector是一款开源的浏览器插件,适用于Chrome和Safari。通过这个插件,开发者可以在...
appium最新版本已经去掉了inspector,需要另外安装了,非常麻烦。本版本是官网最新带inspector的版本,非常好用
**Laravel开发-inspector** Laravel Inspector 是一款专为 Laravel 开发者设计的强大调试和分析工具,它旨在帮助Web工匠们提升开发效率,优化代码性能,并提供深入的应用洞察。通过集成Inspector,开发者可以更容易...
《Odin - Inspector and Serializer 3.0.6:Unity开发者的高效工具》 在Unity游戏开发中,数据序列化和Inspector视图的定制是提升效率、优化代码管理和增强可维护性的重要环节。Odin - Inspector and Serializer ...
Odin - Inspector and Serializer 2.1.13.unitypackage Odin - Inspector and Serializer 3.0.13.unitypackage Odin Inspector 3.0.1.unitypackage Odin Inspector and Serializer 3.1.10.unitypackage
**Node-inspector:深入探索Node.js的调试利器** 在JavaScript的世界里,Node.js以其高性能、非阻塞I/O以及丰富的生态系统赢得了开发者们的喜爱。然而,任何编程语言在开发过程中都难免遇到bug,这时就需要强大的...
Appium Server GUI新版本 不含Appium Inspector定位工具,需要单独下载安装。官网下载网络极不稳定,特分享该资源Appium-Inspector-windows-2022.5.4.zip
在Unity中,提高开发效率和代码可维护性是至关重要的,这就是插件如Odin Inspector发挥价值的地方。Odin Inspector是一款针对Unity的高级序列化和属性检查器,它能够极大地提升开发者的生产力,使代码的调试、配置和...
Swing-inspector是一款高效工具,专门用于帮助开发者在Java Swing应用程序中快速定位界面元素对应的源代码,从而提高代码查找和调试的效率。在Java开发领域,Swing是用于构建图形用户界面(GUI)的一个重要库,它...
Appium Inspector,mac版,appium1.22版本后,Appium Inspector需要单独下载安装。官网下载网络不稳定,特再次储存资源,诸位可用
appium工具 Appium Inspector使用
WebGL Inspector是一款强大的WebGL图形调试工具,专为前端开发者设计,用于检查和优化WebGL渲染性能。在浏览器环境中,WebGL是一种JavaScript API,它允许在网页上进行硬件加速的3D图形绘制,无需插件。然而,由于其...
【Unity3D Editor类(Inspector)经验总结】 在Unity3D开发中,Editor类用于自定义游戏对象在Inspector视图中的显示方式。以下是一些关键知识点: 1. **使用GUI和GUILayout**: - Editor类中的控件绘制是基于GUI...
《Odin Inspector and Serializer 3.0.2.zip》是一个针对Unity开发者的工具包,它包含了一款名为Odin Inspector的插件以及与其配套的Serializer。这个版本是3.0.2,意在提高开发者在Unity环境中的工作效率,提供更...
新版appium1.22与inspector分离,需要单独下载Appium-Inspector