2010-05-08 22 views
4

我想解析Gnome Panels(標準Gnome桌面應用程序啓動器)的菜單結構,並且它是使用c/C++函數調用的KDE等價物。也就是說,我想要列出在給定機器中安裝基本菜單類別和子菜單的內容。我想要使​​用相當簡單的c/C++函數調用(沒有脫殼)。如何解析C++中的XDG/gnome/kde菜單/桌面項目結構?

我知道這些菜單是標準的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-library,我想找到現有的菜單結構)。我在這裏看過:http://library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.en瞭解關於這些結構的更多註釋。這些都不能讓我明白如何使用c/C++程序確定菜單結構。

實際GNOME菜單結構似乎是一種極其可怕的事情毛茸茸 - 他們似乎沒有顯示菜單結構,而是給的所有更改的XML編碼描述,自從安裝菜單曾經走過的。我假設gnome面板解析這些文件,所以有一個函數被埋在某處,但是我在掃描library.gnome.org幾天後還沒有找到該函數的位置。我也掃描了鸚鵡螺源代碼,但面板似乎存在於其他地方或埋在其中。

在此先感謝

回答

3

太多痛苦的研究後...看來最穩定的做法是採取gnome的菜單解析代碼,翻錄焦油球,並在本地使用它。

我所用的版本是在這裏: http://download.gnome.org/sources/gnome-menus/2.28/gnome-menus-2.28.0.1.tar.gz

此代碼大聲宣告,它不應該被視爲任何種類的API,這樣一個被迫的,正如我所說撕gnome的樹和保持本地副本爲自己的應用程序(收集比動態鏈接到一個庫)。

KDE版本的菜單分析代碼似乎就像它可以使用更多的可移動性,但實際上很大程度上依賴於KDE的虛擬文件系統。據我所知,代碼gnome是獨立工作的。測試文件可以作爲您自己解析的模板。