Как вы анализируете структуру элементов XDG / gnome / kde menu / desktop в c ++?

Я хотел бы проанализировать структуру меню для панелей Gnome (стандартная программа запуска приложений Gnome Desktop) и ее эквивалента KDE с использованием вызовов функций c / c ++. То есть мне нужен список категорий и подменю базового меню, установленных на данном компьютере. Я хотел бы использовать довольно простые вызовы функций c / c ++ (без оболочек пожалуйста).

Я так понимаю, что это меню в стандартном формате xdg. Я понимаю, что эта структура меню хранится в файлах xml, таких как:

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

Я посмотрел здесь: http://www.freedesktop.org/wiki/Specifications/menu-spec?action=show&redirect=Standards%2Fmenu-spec, но все, что они предлагают, это стандартный и некоторые файлы оболочки для вставки записей элементов (я не хочу, чтобы сценарии оболочки , Я не хочу установки, я определенно не хочу создавать c-библиотеку из спецификации XDG. Я хочу найти существующую структуру меню). Я посмотрел здесь: http://library.gnome.org/admin/system-admin-guide/stable/menustructure-13.html.en для получения дополнительных сведений об этих структурах. Ничто из этого не дает мне хорошего представления о том, как определять структуры меню с помощью программы c / c ++.

Фактические структуры меню gnome кажутся ужасно сложными - они, кажется, не показывают структуру меню, но дают описание в кодировке XML всех изменений, которые меню претерпели с момента установки . Я предполагаю, что панели gnome анализируют этот файл, поэтому для этого есть скрытая функция, но я еще не нашел, где эта функция после сканирования library.gnome.org в течение нескольких дней. Я также просмотрел исходный код Nautilus, но кажется, что панели существуют где-то еще или хорошо похоронены.

заранее спасибо


person Joe Soul-bringer    schedule 08.05.2010    source источник


Ответы (1)


После долгих мучительных исследований ... кажется, что наиболее стабильный подход - это взять код синтаксического анализа меню gnome, извлечь его из тар-шара и использовать его локально.

Версия, которую я использовал, находится здесь: http://download.gnome.org/sources/gnome-menus/2.28/gnome-menus-2.28.0.1.tar.gz

Этот код громко заявляет, что он не должен рассматриваться как какой-либо API, поэтому мы вынуждены, как я сказал, вырезать его из дерева гномов и сохранить локальную копию для своего собственного приложения (собрать, чем динамически связываться с библиотекой).

Версия кода синтаксического анализа меню для KDE кажется более удобной для использования, но на самом деле сильно зависит от виртуальной файловой системы KDE. Насколько я могу судить, code gnome работает автономно. Тестовый файл может служить шаблоном для вашего собственного разбора.

person Joe Soul-bringer    schedule 20.05.2010