Dbus的Python访问Pidgin数据结构

时间:2012-09-26 12:45:37

标签: python ubuntu plugins dbus pidgin

我终于开始用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字段?

1 个答案:

答案 0 :(得分:0)

我用d-feet检查了我的Pidgin 2.10.0,并且只有一个接口im.pidgin.purple.PurpleInterface。您正在寻找的API似乎是方法(不是信号)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