Linux/Gtk
jokers_i
这个作者很懒,什么都没留下…
展开
-
Chromium主界面框架(Gtk+)
这是Chromium窗口经过函数BrowserWindowGtk::InitWidgets()初始化后的效果,该函数位于:/src/chrome/browser/ui/gtk/browser_window_gtk.cc。至于各个控件的具体功能还有待进一步分析。原创 2013-03-19 14:02:44 · 2444 阅读 · 0 评论 -
Chromium界面分析小结(七)图片资源管理方法
Chromium中所有的图片资源都是png格式的,在linux下这些图片由grit工具打包成pak格式并附有每个资源的ID,Chromium在运行时可以根据ID获取对应的图片。 在文件src/chrome/app/theme/theme_resources.grd中定义了所有的图片文件的ID号,编译时grit工具根据此grd文件生成头文件src/out/Debug/obj/gen原创 2013-04-17 18:40:54 · 7741 阅读 · 1 评论 -
Chromium界面分析小结(八)字符串资源管理方法
Chromium具有多语言自动切换功能,程序启动时会根据系统的语言设置来选择界面语言。英文的字符串和ID号的对应关系在文件src/chrome/app/generated_resources.grd和chromium_strings.grd,该文件也是xml描述的,在文件中还记录了所有其他语言翻译过的字符串资源文件位置:也记录了字符串资源文件输出路径:,编译时grit工具会根据原创 2013-04-17 18:41:47 · 2221 阅读 · 0 评论 -
Chromium界面分析小结(十)界面构造主要类和函数
1. BrowserWindowGtk这是BrowserWindow的一个GTK+实现版本,它创建了整个CR窗口,在类中有许多访问控件的接口LocationBar*GetLocationBar()、TabStripGtk* tabstrip()、BrowserTitlebar* titlebar()、BrowserToolbarGtk*GetToolbar(),通过返回的指针可以原创 2013-04-17 18:43:37 · 1406 阅读 · 0 评论 -
Chromium界面分析小结(二)主界面结构
因为GTK+库中提供了丰富的界面布局控件,使得控件位置控制非常方便,所以Chromium几乎全部使用了GTK+的原生布局控件,主要包括:GtkAlignment、GtkVBox、GtkHBox和GtkFixed。 整个主界面的内容从上到下依次是菜单栏、标题栏、工具栏、书签栏和最重要的网页内容区域。在Ubuntu中所有程序的菜单栏都位于屏幕最上方,而在其他的桌面环境下菜原创 2013-04-17 18:32:58 · 2446 阅读 · 0 评论 -
Chromium界面分析小结(六)工具菜单结构
Chromium的菜单实现考虑到跨平台的要求,使用了一层抽象模型(SimpleMenuModel),所有菜单模型都继承自这个类,各平台实现时需要根据提供的模型构造对应的菜单。这个工具菜单模型是WrenchMenuModel类,也继承自SimpleMenuModel。Chromium在Linux平台使用了GTK+来创建界面,也就由MenuGtk类负责菜单模型的解释和构造。所有的菜单都要经过**Men原创 2013-04-17 18:39:56 · 4614 阅读 · 0 评论 -
Chromium界面分析小结(九)命令执行过程
在chromium中所有命令都是由命令ID表示,ID列表保存在src/chrome/app/chrome_command_ids.h文件中,该文件内包含了所有Chromium可以理解的命令ID。当命令被激活时,Chromium会通过代理一层层传递,直到传递到位于chromium/src/chrome/browser/ui/browser_command_controller.cc中的Browser原创 2013-04-17 18:42:44 · 1514 阅读 · 0 评论 -
Chromium资源文件.pak解包方法(python)
import collectionsimport structimport sysdef ReadFile(filename, encoding): mode = 'rb' if encoding == 0 else 'rU' with open(filename, mode) as f: data = f.read() if encoding not in (0, 1)原创 2013-04-15 09:41:42 · 20916 阅读 · 3 评论 -
chromium tarball编译步骤
下载tarball在Chromium官网的Get the Code页面可以找到tarball下载链接http://chromium-browser-source.commondatastorage.googleapis.com/chromium_tarball.html解压缩使用tar -xzvf chromium.r####.tgz原创 2013-08-07 14:40:57 · 5037 阅读 · 2 评论 -
Chromium界面分析小结(五)地址栏结构
地址栏位于工具栏中间,它是个很复杂的物件,虽然样子看上去很简单,但是功能的确很强大,所以结构就复杂了。在地址栏最左侧是显示页面信息的图标,如果是经过https加密传输的页面,图标显示为绿色锁形,并在右侧显示网站单位信息,如果不是加密页面则显示空白文档图标。点击这个图标后会弹出该页面对应的权限(HTML5新增功能)和详细安全信息(加密算法和认证证书)。紧挨着右边是一个tab_to_search的原创 2013-04-17 18:37:33 · 2224 阅读 · 0 评论 -
Chromium界面分析小结(四)工具栏结构
工具栏左侧是常用的命令按钮,中间是最重要的地址栏,右侧是插件按钮和工具菜单按钮。整个工具栏由一个GtkHBox容器包裹,四个部分中只有地址栏是具有扩展属性,可以跟随窗口大小改变。原创 2013-04-17 18:35:32 · 1604 阅读 · 0 评论 -
Chromium地址栏界面框架分析(GTK+)
chrome地址栏是个很复杂的物件,虽然样子看上去很简单,但是功能的确强大的很,所以结构就复杂了。它的初始化函数位于:src/chrome/browser/ui/gtk/location_bar_view_gtk.cc:void LocationBarViewGtk::Init(),图中各个可见部分都对应了控件元素。但是还有:script_bubble_button_:Gt原创 2013-04-02 17:36:53 · 1459 阅读 · 0 评论 -
Chromium工具栏框架对应图(GTK+)
Chomium工具栏应该是整个界面中最复杂的部分了,它几乎包含了所有的功能按钮和一个强大的地址栏。工具栏初始化操作在函数BrowserToolbarGtk::Init(GtkWindow* top_level_window)中实现,该函数在/src/chrome/browser/ui/gtk/browser_toolbar_gtk.cc文件中定义。工具栏中的actions_toolba原创 2013-03-20 17:00:23 · 1289 阅读 · 0 评论 -
ubuntu12.10下编译chrome时执行/src/build/install-build-deps.sh出错
这是因为脚本中限制了ubuntu的版本,把这一段注释掉就可以了。ubuntu_versions="10\.04|10\.10|11\.04|11\.10|12\.04"ubuntu_codenames="lucid|maverick|natty|oneiric|precise"if ! egrep -q "Ubuntu ($ubuntu_versions|$ubuntu_cod原创 2013-03-22 17:37:01 · 1620 阅读 · 2 评论 -
Ubuntu给菜单截图
因为弹出菜单时PrintScreen键不能按,所以我们必须让它自动截图。>sleep 3;gnome-screenshot;睡眠3秒,然后截图。搞定!原创 2013-04-08 10:44:34 · 821 阅读 · 0 评论 -
Chrome编译出错@不建议使用‘ppd_attr_t* ppdFindAttr声明于 /usr/include/cups/ppd.h:407
编译Chrome时出现如下错误:printing/backend/cups_helper.cc: 在函数‘bool {anonymous}::GetColorModelSettings(ppd_file_t*, int*, int*, bool*)’中:printing/backend/cups_helper.cc:285:22: 错误: 不建议使用‘ppd_attr_t* ppdFind原创 2013-03-22 17:32:04 · 1263 阅读 · 0 评论 -
Chrome GTK菜单构建过程
Chrome在GTK版的界面中使用了自定义的菜单,毕竟基本菜单功能太简单,至少没有ButtonMenuItem这种一个菜单项上多个按钮的功能。Chrome的自定义菜单控件是GtkCustomMenuItem,然后由MenuGtk类进行封装。MenuGtk类在构造函数中接收一个***MenuModel的对象,这些对象大都继承自ui::SimpleMenuModel类,对象对菜单项进行原创 2013-03-28 10:14:09 · 1364 阅读 · 0 评论 -
Chromium界面分析小结(一)界面构造调用层次
在chromium中真正承担浏览器窗口创建的类是BrowserWindowGtk,它的Init成员函数完成了界面创建的大部分任务。在Init函数中,创建主窗口后,添加控件的任务都在InitWidgets函数中完成,主要动作有:创建程序菜单栏、创建标题/标签栏、创建工具/地址栏、创建书签栏。原创 2013-04-17 18:31:01 · 2196 阅读 · 0 评论 -
Chromium界面分析小结(三)标题栏结构
标题栏主要包括所有的标签,最小化、最大化和关闭按钮,因为Ubuntu可以由用户选择这些按钮的位置,所以Chromium添加了两个放置这些按钮的容器以方便改变位置。放置头像的容器也有左右两个,因为隐身模式和普通模式的头像位置不同原创 2013-04-17 18:34:12 · 2255 阅读 · 0 评论 -
创建Chrome WebUI接口(Chrome内部页面)
什么是WebUIWebUI就是Chrome的chrome://about/中列出来的页面。它根本上是一个html页面,但是他的数据可以从浏览器内部的C++代码获取,它可以使用js向浏览器发送消息,还可以接收浏览器发送的消息。为什么要用WebUI因为html+js与平台无关,这些页面本来需要使用平台特定的UI库来实现,而其本身又没有太多的功能要实现,只是一些简单的数据显示和存储,使用html页面就很方便,而且js在WebUI的支持下也能满足所有需求。原创 2013-07-12 10:30:10 · 9232 阅读 · 0 评论