#!/usr/bin/python # -*- coding: utf-8 -*- import subprocess import dbus import dbus.service from dbus import glib from dbus.mainloop.glib import DBusGMainLoop import gobject skip = False; def ussd_released (message, str): global skip if not skip: subprocess.Popen(["qussd", message]) skip = False return True def ussd_request (message, str): global skip if not skip: subprocess.Popen(["qussd", message, "lock"]) skip = False return True class DBusListener(dbus.service.Object): def __init__(self): bus_name = dbus.service.BusName('su.kibergus.ussdd', bus=dbus.SystemBus()) dbus.service.Object.__init__(self, bus_name, '/su/kibergus/ussdd') @dbus.service.method(dbus_interface='su.kibergus.ussdd') def skip_next (self): global skip skip = True return True @dbus.service.method(dbus_interface='su.kibergus.ussdd') def show_next (self): global skip skip = False return True gobject.threads_init() glib.init_threads() bus = dbus.SystemBus() signal = bus.add_signal_receiver(ussd_released, path='/com/nokia/csd/ss', dbus_interface='com.nokia.csd.SS.USSD', signal_name='Released') signal = bus.add_signal_receiver(ussd_request, path='/com/nokia/csd/ss', dbus_interface='com.nokia.csd.SS.USSD', signal_name='Request') listener = DBusListener() loop = gobject.MainLoop() loop.run()