blob: be8a04b9f0a52e76197bca95151deca28f60cfba [file] [log] [blame]
# 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()