Что входит в состав апплета панели в 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)

Мои вопросы по этому поводу:

  1. Все примеры, которые я видел, содержат как минимум две функции, называемые "applet_fill" и "applet_factory". Легко видеть, что "applet_fill" принимает объект апплета, который ведет себя как контейнер Gtk, и что здесь идет код, который заполняет апплет виджетами. Это все или это еще не все?
  2. Какова роль "applet_factory"? Что означает возвращаемое значение? Что такое аргумент "iid"? Являются ли "данные" словарем? Я подозреваю, что "data" может быть последним аргументом функции "factory_main" ниже, это правильно?
  3. Кстати, что такое 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

У меня очень простой вопрос: какова функция этих файлов и что в них хранится?

Надеюсь, вопрос не был слишком нестандартным. Любая помощь будет очень признательна.

0 ответов

Другие вопросы по тегам