学习gnome-panel源码,了解linux gtk编程
2008-07-25 16:55
751 查看
1. 通过精读gnome-panel源码包,了解gnome-pane实现的机制。
gnome-panel包括桌面上方菜单,条形面板,状态显示条,快捷图标,还有下方显示最小化窗口,桌面切换几个部分。
菜单的显示是动态产生的,每次gnome-panel的启用都会自动创建菜单项,在panel初始时,会先根据在配置的菜单文件找到需要创建的项目--"/etc/xdg/menus/",如applications.menu中定义了所有的菜单项的信息,如Development、Office等,文件采用的是XML形式。
<!-- Office --> //定义应用程序中的Office办公菜单
<Menu> //每一组<Menu></Menu>定义出一个菜单,通过嵌套可以定义多级目录。
<Name>Office</Name> //菜单在显示时的名称
<Directory>Office.directory</Directory> //该文件定义office菜单的信息
<Include> //该菜单要显示哪些项目
<And>
<Category>Office</Category> //可以定义多个类型,<And>表示同时满足,<Or>满足其一,<Not>等。
</And>
</Include>
</Menu> <!-- End Office -->
使用:
<And> //<And>表示在其定义的Category中的类型同时满足
<Category>Accessibility</Category>
<Not><Category>Settings</Category></Not> //将所有的Categories中包括Accessibility而不包括Settings
</And> //所有元素列为该菜单的元素
Office.directory这是一个文件存放在/usr/share/desktop-directories目录中,
vi /usr/share/desktop-directories/Office.directory
内容如下:
[Desktop Entry]
Name=Office
....根据不同的编码环境显示不同的name,coment
Type=Directory
Icon=applications-office
Encoding=UTF-8
X-Ubuntu-Gettext-Domain=gnome-menus
标识菜单中的信息如菜单类型等,如果对菜单中每一个元素属性,按照desktop文件提供的信息显示出来,里面对菜单各个选项对应出一
个".desktop"类型的文件,”/usr/share/applications/*.desktop“里面存放着所有元素的具体信息,如类型
(Categories),图标,以及执行程序。
Name 默认名字
Name[zh_CN] 中文名字
Comment 默认注释
Comment[zh_CN] 中文注释
名字和注释如果你需要可以添加多项不同语言,这样你就可以在不同语言的环境中使用它
Exec=定义执行文件的路径
Icon=xxxx.png 菜单的图标(默认为/usr/share/pixmaps目录的图表)
Type=Application 表示是菜单项
Categories 所属上级目录,父目录通过至显示出其子项。
Categories=GTK;Graphics;RasterGraphics;Scanning;OCR; //可以有多个,以';'分隔开,从左至右查询自己定义的上级目录。
panel中提供的很强的对XML文件的解析函数,将一个XML文件解析成一棵树型结构的菜单。在显示时,根据XML文件的定义,当鼠标指向任意菜单项,会先将读出其信息,判断是否具有子菜单项,并其根据配置信息创建出来widget,动态显示整个菜单。
其中,还有一部分是applet的应用,即鼠标右键弹出的快捷菜单实现等,这一部分是gtk中的内容,慢慢看看应该能明白。
panel实现非常完整,代码认人感觉就是精练,有很丰富的学习价值,里面涉及的显示菜单的过程,对用户如何手动更改菜单子项的即时更新实现。
panel中提供的很强的对XML文件的解析函数,将一个XML文件解析成一棵树型结构的菜单。在显示时,根据XML文件的定义,当鼠标指向任意菜单项,会先将读出其信息,判断是否具有子菜单项,并其根据配置信息创建出来widget,动态显示整个菜单。
其中,还有一部分是applet的应用,即鼠标右键弹出的快捷菜单实现等,这一部分是gtk中的内容,慢慢看看应该能明白。
panel实现非常完整,代码认人感觉就是精练,有很丰富的学习价值,里面涉及的显示菜单的过程,对用户如何手动更改菜单子项的即时更新实现。
2. 学习gtk编程及glade窗体设计工具的使用。
gtk是基于c语言实现的,具有高效率的显示方式及不同组件之间通信的机制,gtk采用信号与回调的机制,使各个组件与每一个相关信号进行绑定,通过信号触发相应的执行函数。里面提供大量的函数库,在理解的基础上,写出自己的桌面程序。
glade设计界面被保存为XML格式,使用libGlade库可以动态加载这此文件,并可以被多种语言使用。
3. 简单学习python的编程,了解模块的概念,python的对象编程。
gnome-panel包括桌面上方菜单,条形面板,状态显示条,快捷图标,还有下方显示最小化窗口,桌面切换几个部分。
菜单的显示是动态产生的,每次gnome-panel的启用都会自动创建菜单项,在panel初始时,会先根据在配置的菜单文件找到需要创建的项目--"/etc/xdg/menus/",如applications.menu中定义了所有的菜单项的信息,如Development、Office等,文件采用的是XML形式。
<!-- Office --> //定义应用程序中的Office办公菜单
<Menu> //每一组<Menu></Menu>定义出一个菜单,通过嵌套可以定义多级目录。
<Name>Office</Name> //菜单在显示时的名称
<Directory>Office.directory</Directory> //该文件定义office菜单的信息
<Include> //该菜单要显示哪些项目
<And>
<Category>Office</Category> //可以定义多个类型,<And>表示同时满足,<Or>满足其一,<Not>等。
</And>
</Include>
</Menu> <!-- End Office -->
使用:
<And> //<And>表示在其定义的Category中的类型同时满足
<Category>Accessibility</Category>
<Not><Category>Settings</Category></Not> //将所有的Categories中包括Accessibility而不包括Settings
</And> //所有元素列为该菜单的元素
Office.directory这是一个文件存放在/usr/share/desktop-directories目录中,
vi /usr/share/desktop-directories/Office.directory
内容如下:
[Desktop Entry]
Name=Office
....根据不同的编码环境显示不同的name,coment
Type=Directory
Icon=applications-office
Encoding=UTF-8
X-Ubuntu-Gettext-Domain=gnome-menus
标识菜单中的信息如菜单类型等,如果对菜单中每一个元素属性,按照desktop文件提供的信息显示出来,里面对菜单各个选项对应出一
个".desktop"类型的文件,”/usr/share/applications/*.desktop“里面存放着所有元素的具体信息,如类型
(Categories),图标,以及执行程序。
Name 默认名字
Name[zh_CN] 中文名字
Comment 默认注释
Comment[zh_CN] 中文注释
名字和注释如果你需要可以添加多项不同语言,这样你就可以在不同语言的环境中使用它
Exec=定义执行文件的路径
Icon=xxxx.png 菜单的图标(默认为/usr/share/pixmaps目录的图表)
Type=Application 表示是菜单项
Categories 所属上级目录,父目录通过至显示出其子项。
Categories=GTK;Graphics;RasterGraphics;Scanning;OCR; //可以有多个,以';'分隔开,从左至右查询自己定义的上级目录。
panel中提供的很强的对XML文件的解析函数,将一个XML文件解析成一棵树型结构的菜单。在显示时,根据XML文件的定义,当鼠标指向任意菜单项,会先将读出其信息,判断是否具有子菜单项,并其根据配置信息创建出来widget,动态显示整个菜单。
其中,还有一部分是applet的应用,即鼠标右键弹出的快捷菜单实现等,这一部分是gtk中的内容,慢慢看看应该能明白。
panel实现非常完整,代码认人感觉就是精练,有很丰富的学习价值,里面涉及的显示菜单的过程,对用户如何手动更改菜单子项的即时更新实现。
panel中提供的很强的对XML文件的解析函数,将一个XML文件解析成一棵树型结构的菜单。在显示时,根据XML文件的定义,当鼠标指向任意菜单项,会先将读出其信息,判断是否具有子菜单项,并其根据配置信息创建出来widget,动态显示整个菜单。
其中,还有一部分是applet的应用,即鼠标右键弹出的快捷菜单实现等,这一部分是gtk中的内容,慢慢看看应该能明白。
panel实现非常完整,代码认人感觉就是精练,有很丰富的学习价值,里面涉及的显示菜单的过程,对用户如何手动更改菜单子项的即时更新实现。
2. 学习gtk编程及glade窗体设计工具的使用。
gtk是基于c语言实现的,具有高效率的显示方式及不同组件之间通信的机制,gtk采用信号与回调的机制,使各个组件与每一个相关信号进行绑定,通过信号触发相应的执行函数。里面提供大量的函数库,在理解的基础上,写出自己的桌面程序。
glade设计界面被保存为XML格式,使用libGlade库可以动态加载这此文件,并可以被多种语言使用。
3. 简单学习python的编程,了解模块的概念,python的对象编程。
相关文章推荐
- Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南
- 最近了解Socked编程之一,记录第一个学习的例子源码
- 通过看linux环境相关源码学习编程(持续更新)
- Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南
- 嵌入式Linux学习笔记第三天(文件编程)
- Linux程序设计学习笔记----多线程编程基础概念与基本操作
- Linux网络编程学习笔记--socket编程4--7
- linux 0.11 源码学习(二)
- 1.Linux编程学习开篇
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 3.了解linux系统以及搭建学习环境
- [转]linux: 学习linux/unix编程方法的建议
- Linux 基础学习 Gnome 命令及帮助(RHEL)
- 跟大师学习系统编程---linux时间换算
- linux 0.11 源码学习(五)
- linux 0.11 源码学习(六)
- UNIX/LINUX编程学习之信号1
- Connection类之ConnectionIncomingData.cs(NetworkComms 2.3.1源码了解和学习)
- linux学习之文件编程
- linux之C编程学习——getchar()和getch()