代码之家  ›  专栏  ›  技术社区  ›  Joe Soul-bringer

如何解析C++中的XDG/GNOME/KDE菜单/桌面项目结构?

  •  4
  • Joe Soul-bringer  · 技术社区  · 15 年前

    我想解析GNOME面板(标准GNOME桌面应用程序启动程序)的菜单结构,以及使用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文件(我不想要shell脚本,我不想要安装,我绝对不想从xdg规范创建c库)。我想找到现有的菜单结构)。我看过这里: http://library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.en 关于这些结构的更多说明。这些都没有告诉我如何使用C/C++程序来确定菜单结构。

    实际的GNOME菜单结构似乎是一个毛茸茸的东西-它们似乎没有显示菜单结构,而是给出了XML编码的 所有的变化 菜单自安装以来已经通过。我假设GNOME面板解析了这些文件,所以有一个函数隐藏在某个地方,但在扫描library.gnome.org几天后,我还没有找到该函数的位置。我也扫描过鹦鹉螺的源代码,但面板似乎存在于其他地方,或者埋得很好。

    提前谢谢

    1 回复  |  直到 15 年前
        1
  •  3
  •   Joe Soul-bringer    15 年前

    经过许多痛苦的研究…看起来最稳定的方法是使用gnome菜单解析代码,从tar球中取出并在本地使用它。

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

    这段代码大声宣布它不应该被当作任何类型的api,因此必须像我说的那样,从gnome树中删除它并为自己的应用程序保留一个本地副本(收集而不是动态链接到库)。

    菜单解析代码的kde版本 似乎 好像它可以更方便地使用,但实际上很大程度上依赖于kde的虚拟文件系统。据我所知,gnome代码是独立工作的。测试文件可以作为自己进行解析的模板。