簡體   English   中英

如何在c ++中解析XDG / gnome / kde菜單/桌面項結構?

[英]How do you parse the XDG/gnome/kde menu/desktop item structure in c++?

我想解析Gnome Panels(標准的Gnome Desktop應用程序啟動器)的菜單結構,並使用c / c ++函數調用它的KDE等價物。 也就是說,我想要列出在給定機器中安裝基本菜單類別和子菜單的列表。 我想使用相當簡單的c / c ++函數調用( 不要炮轟)。

我知道這些菜單是標准的xdg格式。 據我所知,這個菜單結構存儲在xml文件中,例如:

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

我看過這里: http : //www.freedesktop.org/wiki/Specifications/menu-spec? action=show&redirect = Standards% 2Fmenu-spec但他們提供的只是標准和一些shell文件來插入項目條目(I不想要shell腳本,我不想安裝,我絕對不想從XDG規范創建一個c庫。我想找到現有的菜單結構)。 我看過這里: http//library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.en ,了解有關這些結構的更多說明。 這些都不能讓我很好地了解如何使用ac / c ++程序確定菜單結構。

實際的gnome菜單結構似乎是一種可怕的毛茸茸的東西 - 它們似乎沒有顯示菜單結構,而是給出了自安裝以來菜單所經歷的所有更改的XML編碼描述。 我假設gnome面板解析這些文件,所以有一個函數埋在某處做這個但我還沒有找到該函數在掃描library.gnome.org幾天之后的位置。 我也掃描了Nautilus的源代碼,但Panel似乎存在於別處或者很好。

提前致謝

經過大量痛苦的研究......似乎最穩定的方法是使用gnome菜單解析代碼,撕掉tar球並在本地使用它。

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

這段代碼大聲宣稱它不應該被視為任何類型的API,所以人們不得不這樣做,正如我所說的那樣,將它扯掉gnome樹並為自己的應用程序保留一個本地副本(聚集而不是動態鏈接到庫)。

菜單解析代碼的KDE版本似乎可以更可移植地使用,但實際上很大程度上取決於KDE的虛擬文件系統。 據我所知,代碼gnome獨立工作。 測試文件可以作為進行自己解析的模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM