如何在c ++中解析XDG / gnome / kde菜单/桌面项结构?

时间:2010-05-08 19:19:17

标签: c++ c gnome kde xdgutils

我想解析Gnome Panels(标准的Gnome Desktop应用程序启动器)的菜单结构,并使用c / c ++函数调用它的KDE等价物。也就是说,我想要列出在给定机器中安装基本菜单类别和子菜单的列表。我想使用相当简单的c / c ++函数调用(没有shell out out please )。

我知道这些菜单是标准的xdg格式。 据我所知,这个菜单结构存储在xml文件中,例如:

/home/user/.config/menus/applications.menu

我看过这里:http://www.freedesktop.org/wiki/Specifications/menu-spec?action=show&redirect=Standards%2Fmenu-spec但他们提供的只是标准和一些shell文件来插入项目条目(我不想要shell脚本,我不想安装,我绝对不会想要从XDG规范创建一个c库。我想找到现有的菜单结构)。我看过这里:http://library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.en了解有关这些结构的更多说明。这些都不能让我对如何使用c / c ++程序确定菜单结构有所了解。

实际的gnome菜单结构似乎是一个可怕的毛茸茸的东西 - 它们似乎没有显示菜单结构,而是给出了所有更改的XML编码描述菜单已经消失了通过安装。我假设gnome面板解析这些文件,所以有一个函数埋在某处做这个但我还没有找到该函数在扫描library.gnome.org几天之后的位置。我也扫描了Nautilus的源代码,但Panel似乎存在于别处或者很好。

提前致谢

1 个答案:

答案 0 :(得分:3)

经过多次痛苦的研究......似乎最稳定的方法是使用gnome菜单解析代码,撕掉tar球并在本地使用它。

我使用的版本在这里: http://download.gnome.org/sources/gnome-menus/2.28/gnome-menus-2.28.0.1.tar.gz

这段代码大声宣称它不应该被视为任何类型的API,所以人们不得不这样做,正如我所说的那样撕掉gnome树并为自己的应用程序保留一个本地副本(收集而不是动态链接到一个库) )。

菜单解析代码的KDE版似乎,因为它可以更可移植地使用,但实际上很大程度上取决于KDE的虚拟文件系统。据我所知,代码gnome独立工作。测试文件可以作为进行自己解析的模板。

相关问题