# Copyright (c) Benjamin Kietzman (github.com/bkietz) # # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) import dbus import dbus.service from dbus.mainloop.glib import DBusGMainLoop from gobject import MainLoop bus_name = 'com.example.Sample' class Example(dbus.service.Object): def __init__(self, connection, path): dbus.service.Object.__init__(self, connection, path) self._last_input = None @dbus.service.method(bus_name+'.Iface', in_signature='v', out_signature='s') def StringifyVariant(self, var): self.LastInputChanged(var) # emits the signal return str(var) @dbus.service.signal(bus_name+'.Iface', signature='v') def LastInputChanged(self, var): # run just before the signal is actually emitted # just put "pass" if nothing should happen self._last_input = var @dbus.service.method(bus_name+'.Iface', in_signature='', out_signature='v') def GetLastInput(self): return self._last_input bus = dbus.SessionBus(mainloop=DBusGMainLoop()) bus.request_name(bus_name) example = Example(bus, '/path/to/obj') print bus.get_name_owner(bus_name) MainLoop().run()