0

私は最近Pythonでプログラミングを開始し、Pidginのスクリプト/プラグインを作成しました。PurpleConversationUiOpsにアクセスし、 has_focusフィールドを使用する 必要があります。これは、Pidginのドキュメントのいくつかの例に基づいています。

    #!/usr/bin/env python
    import dbus, gobject
    from dbus.mainloop.glib import DBusGMainLoop

    def view(conv):
     if conv == 1: #if has focus
       print "Has Focus"

    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
    bus = dbus.SessionBus()
    bus.add_signal_receiver(view,
                    dbus_interface="im.pidgin.purple.PurpleConversationUiOps",
                    signal_name="HasFocus")
    loop = gobject.MainLoop()
    loop.run()

彼はエラーを出しませんが、私は信号を受信しません。それで、has_focusフィールドにアクセスするにはどうすればよいですか?

4

1 に答える 1

0

d-feet を使用して Pidgin 2.10.0 を調べたところ、インターフェイスは 1 つしかありません im.pidgin.purple.PurpleInterface。お探しの API は method (not signal) のようPurpleConversationHasFocus(int32 conv) -> int32です。

会話を取得するにはPurpleGetConversations -> Array of int32、または信号がありConversationCreated(int32)ます。

$ dbus-send --print-reply --dest=im.pidgin.purple.PurpleService  /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.PurpleGetConversations
method return sender=:1.165 -> dest=:1.172 reply_serial=2
   array [
      int32 22042
   ]
$ dbus-send --print-reply --dest=im.pidgin.purple.PurpleService  /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.PurpleConversationHasFocus int32:22042
method return sender=:1.165 -> dest=:1.174 reply_serial=2
   int32 0
于 2012-10-12T16:05:50.457 に答える