Что входит в состав апплета панели в Mate?
Это мой первый пост о переполнении стека - я не профессиональный разработчик, и когда у меня возникает проблема в одном из моих небольших экспериментов, это всегда довольно просто, и я обычно нахожу решение среди ответов на вопросы. На этот раз мои поиски не увенчались успехом, поэтому, боюсь, мне придется публично заявить о своем незнании...
Мне интересно научиться разрабатывать апплеты Python для mate-панели. Я нашел несколько примеров в Интернете, в том числе здесь, на SO. Однако ни один из найденных мною примеров не сопровождается достаточным количеством комментариев, чтобы я мог понять, что делает код. Более того, я пытался запустить некоторые из них, но не могу заставить их работать, и трудно устранить неполадки, не зная механики. Вот что я нашел на данный момент:
- В этом вопросе содержится ссылка на документацию, которая казалась многообещающей, однако сейчас ссылка, похоже, мертва.
- Репозиторий на github под названием MATE University обещает быть ориентированным на программистов с любым уровнем подготовки - к сожалению, он содержит лишь минимальный код без комментариев. Ссылка на соответствующую "документацию" тоже мертва. В целом это похоже на заброшенный проект (мое впечатление подтверждается тем, что он находится в устаревшем архиве).
- MATE вики, казалось бы место, чтобы пойти, но опять же есть только раскомментировать пример.
Я также нашел несколько вопросов на форуме от людей, устраняющих неполадки в своем коде, но ни один из них не увел меня далеко.
В идеале я был бы признателен, если бы кто-нибудь мог указать мне полезную ссылку. В качестве альтернативы, я был бы очень признателен, если бы кто-нибудь ответил на мои вопросы по примеру в вики.
Для справки, вот код апплета на Python:
#!/usr/bin/env python
# this code is based on example appet by Vincent Untz for GNOME Panel 3
# https://git.gnome.org/browse/gnome-panel/commit/?id=5ad4d9e
# ensure we are using Gtk 2, not Gtk3
# this will print a warning but everything should work
import gi
gi.require_version("Gtk", "2.0")
from gi.repository import Gtk
from gi.repository import MatePanelApplet
def applet_fill(applet):
# you can use this path with gio/gsettings
settings_path = applet.get_preferences_path()
label = Gtk.Label("My MATE applet in Python")
applet.add(label)
applet.show_all()
def applet_factory(applet, iid, data):
if iid != "TestApplet":
return False
applet_fill(applet)
return True
MatePanelApplet.Applet.factory_main("TestAppletFactory", True,
MatePanelApplet.Applet.__gtype__,
applet_factory, None)
Мои вопросы по этому поводу:
- Все примеры, которые я видел, содержат как минимум две функции, называемые "applet_fill" и "applet_factory". Легко видеть, что "applet_fill" принимает объект апплета, который ведет себя как контейнер Gtk, и что здесь идет код, который заполняет апплет виджетами. Это все или это еще не все?
- Какова роль "applet_factory"? Что означает возвращаемое значение? Что такое аргумент "iid"? Являются ли "данные" словарем? Я подозреваю, что "data" может быть последним аргументом функции "factory_main" ниже, это правильно?
- Кстати, что такое factory_main и каковы его аргументы? Я полагаю, что это функция, которая выполняет апплет, верно? Я попытался вызвать help() на нем, результат был удручающе бесполезным.
Помимо скрипта python, вики также "вводит" два дополнительных файла:
[Applet Factory]
Id=TestAppletFactory
InProcess=false
Location=/home/user/applet/testapplet.py
Name=Test Applet Factory
Description=A MATE Python Applet example factory
[TestApplet]
Name=Test
Description=A MATE Python Applet example
Icon=mate
MateComponentId=OAFIID:MATE_TestApplet;
а также:
[D-BUS Service]
Name=org.mate.panel.applet.TestAppletFactory
Exec=/home/user/applet/testapplet.py
У меня очень простой вопрос: какова функция этих файлов и что в них хранится?
Надеюсь, вопрос не был слишком нестандартным. Любая помощь будет очень признательна.