- 16
- Feb
最近要为Ubuntu Tweak加一个功能,需要用到文件的图标,即取得某个文件的类型图标。
怎么实现它呢?一点头绪也没有。翻了翻GTK+的引用手册,虽然有相关组件跟ICON操作有关,可是都非常底层,没有跟“取得文件类型的图标”有关。
只好下载来Nautilus的源码开始研究和分析。Nautilus的代码很多很复杂,不过没办法,暂时还没想到什么轻量级的软件跟类型图标显示有关。
研究了半天,终于有结果了。
-----
Nautilus不愧是代码规模超十万行的软件,源代码分得非常清楚和细致,有一个大中型软件所具备的结构。
看源码时就有这么感觉,即使没有找到我要的东西,但把源码分析清楚了,也有很大的收获了。
这里就对Nautilus的进行一点简单的分析:
Nautilus的大多数代码在libnautilus-private这里,这里定义了非常多的Nautilus的各种操作和界面显示,基本上都定义为类了。比如nautilus-icon-factory,即图标工厂,取得一个文件的图标,就是靠它了。
那么Nautilus是用什么来表示文件呢?直接对文件操作?不,Nautilus专门定义了一个nautilus-file的类型,用它来具体封装文件的类型,文件的URI,文件的尺寸,文件是否可执行,文件是否在垃圾筒中(这个都有:))……通过操作nautilus-file,来构成整个Nautilus。
其他的就不多说了,Nautillus定义了近100个类型呢!我想以后等水平高了,自己为Nautilus写扩展。哈哈~一直很喜欢Dolphin的分割视图和Column视图,如果Nautilus有就爽了!具体请看:http://linuxdesktop.cn/2007/11/23/kde4-rc-dolphin-widget
关于Nautilus的分析就不多作了,还没讲正文呢。
在GNOME环境下,取得文件类型的图标,实际上要用到libgnomeui的库! 使用gnome_icon_lookup ()就可以了,参数共有8个,可以实现非常丰富的图标查找功能,不过最少只需要一个GtkIconTheme的类和文件名即可。
下面是一段最简洁的Python实现的代码:
icontheme = gtk.icon_theme_get_default()
icon = ui.icon_lookup(icontheme,None,filename)
pixbuf = icontheme.load_icon(icon[0], 48, 0)
pixbuf即图标在内存的表示形式:Gdk.Pixbuf
嗯,就这样了。明天继续Coding。
等着你出完。。希望有python实现的源码。。
准备开始python。。
为什么我安装好tweak后确运行不了?
提示Permission denied
如果sudo的话又找不到此命令?
在菜单里同样执行不了也是Permission denied
请问这是怎么回事?望解答,谢谢!
@kran:
Permission denied?怎么会出现这个。
请问你是怎么安装的?哪个版本?你的Ubuntu是什么版本?
谢谢!
先python setup.py build
然后sudo python setup.py install
我是linux新手
ubuntu是7.10版,tweak是0.2.6版
原来你是用这个方法安装的,这个引起的问题我很难判断,你提供的信息也有限。建议你用deb包安装吧。这样也方便删除。
好的!非常感谢!
[...] I’m TualatriXâ