Создание апплета GNOME


Регистрация апплета в панели GNOME


Если выше был обычный Python-код, с некоторой PyGTK-спецификой, то сейчас будет сплошная магия ;) Это, кстати, одна из слабых сторон GNOME-Python - отсутствие систематической документации (для gnomeapplet вообще никакой документации нет, за исключением пары примеров и вышеупомянутой "методички"). К примеру, при регистрации апплета вызывается функция applet_bonobo_factory, однако нигде не упоминается, какие параметры в нее передаются. Чтобы узнать это, нужно лезть в исходные тексты. Я, конечно, понимаю, что "Use code, Luke!", но все же качество документации по PyGTK в целом хромает (например, сплошь и рядом в документации рекомендуются методы, которые уже пару версий назад как уже объявлены устаревшими).

Общая идеология регистрации апплета такова:

  • описываем мета-информацию в специальном .server файле

  • в апплете вызываем специальный интерфейс

Вначале закончу дело с кодом апплета:

def run_in_panel(): gnomeapplet.bonobo_factory("OAFIID:GNOME_AppletSkeleton_Factory", GnomeAppletSkeleton.__gtype__, "Applet skeleton", "0", applet_factory)

это и есть вызов "специального интерфейса". Параметры такие: IID (уникальный идентификатор сервиса в GNOME), тип (это остатки C-природы GTK, тип GObject), имя, версия, callback-функция.

Теперь, что касается "описания мета-информации". Пишем следующий XML (он для всех апплетов будет идентичным, специфичные для моего апплета данные я выделил полужирным):

<oaf_info>

<oaf_server iid="OAFIID:GNOME_AppletSkeleton_Factory" type="exe" location="/usr/local/lib/pygnomeapplet/applet_skeleton.py">

<oaf_attribute name="repo_ids" type="stringv"> <item value="IDL:Bonobo/GenericFactory:1.0" /> <item value="IDL:Bonobo/Unknown:1.0" />

</oaf_attribute> <oaf_attribute name="name" type="string" value="Applet skeleton factory" /> <oaf_attribute name="name-ru" type="string" value="Фабрика скелета апплета" />




- Начало -  - Назад -  - Вперед -