1

これはスタック オーバーフローに関する私の最初の投稿です。私はプロの開発者ではありません。小さな実験で問題が発生した場合、それは常にかなり単純であり、通常は回答された質問の中から解決策を見つけます。今回は私の捜索がうまくいかなかったので、私の無知を公にすることになると思います...

mate-panel 用の Python アプレットの開発に興味があります。ここSOを含め、Web上で多くの例を見つけました。しかし、私が見つけた例のどれにも、コードが何をするかを理解するのに十分なコメントが付いていません。さらに、それらのいくつかを実行しようとしましたが、それらを機能させることができず、メカニズムを知らずにトラブルシューティングするのは困難です. これが私がこれまでに見つけたものです:

  • この質問は、有望に思われるいくつかのドキュメントにリンクしていますが、リンクは現在死んでいるようです。
  • MATE Universityと呼ばれる github リポジトリは、あらゆる能力のプログラマーをターゲットにすることを約束しています - 残念ながら、コメントされていない最小限のコードしか含まれていません。関連する「ドキュメント」へのリンクも無効になっています。全体として、それは放棄されたプロジェクトのように見えます (私の印象は、それがレガシー アーカイブにあるという事実によって確認されます)。
  • MATE wikiが最適な場所のように思えますが、ここでもコメントなしの例しかありません。

また、コードのトラブルシューティングを行っている人々によるフォーラムの質問もいくつか見つけましたが、どれもあまり役に立ちませんでした。

理想的には、誰かが参考になる情報を教えていただければ幸いです。または、誰かが wiki の例に関する私の質問に答えてくれれば、とてもありがたいです。

参考までに、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」と呼ばれる少なくとも 2 つの関数が含まれています。「applet_fill」が Gtk コンテナーのように動作するアプレット オブジェクトを受け取り、アプレットをウィジェットで埋めるコードがここにあることは簡単にわかります。それだけですか、それとも他にもありますか?
  2. 「applet_factory」の役割は?戻り値の意味は何ですか? 「iid」引数とは何ですか? 「データ」は辞書ですか?「data」は、以下の「factory_main」関数の最後の引数である可能性があると思いますが、正しいですか?
  3. そういえば、「factory_main」とは何ですか?その引数は何ですか? アプレットを実行する関数だと思いますが、そうですか?その上で help() を呼び出してみましたが、出力は憂鬱なほど役に立ちませんでした。

python スクリプトのほかに、ウィキは 2 つの追加ファイルも「導入」します。

    [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

ここでの私の質問は、恥ずかしいほど基本的なものです。これらのファイルの機能とその内容は何ですか?

質問があまりにも標準以下ではないことを願っています。どんな助けでも大歓迎です。

4

0 に答える 0