#!/usr/bin/env
"""
This is a simple tool that exercises the some callback functions in the
SystemConfiguration framework.
In an ideal world this would be a nice GUI.
Usage:
python callbacks.py
"""
from Cocoa import *
from SystemConfiguration import *
import signal
def sigint(*args):
print "SIGINT: bailing out"
loop = CFRunLoopGetCurrent()
CFRunLoopStop(loop)
def dynamicStoreChanged(store, changedKeys, info):
print "Dynamic Store: keys changed", changedKeys
def prefsChanged(prefs, notificationType, info):
print "Prefs changed, type:", notificationType
def main():
# Setup a dynamic store controller that monitors all keys:
store = SCDynamicStoreCreate(None, "demo.controller",
dynamicStoreChanged, None)
SCDynamicStoreSetNotificationKeys(store, None, [ '.*' ])
source = SCDynamicStoreCreateRunLoopSource(None, store, 0)
# Setup a preferences controller
prefs = SCPreferencesCreate(None, "demo.prefs", None)
SCPreferencesSetCallback(prefs, prefsChanged, None)
# Set up a run loop and add all controllers to that.
loop = CFRunLoopGetCurrent()
CFRunLoopAddSource(loop, source, kCFRunLoopCommonModes)
SCPreferencesScheduleWithRunLoop(prefs, loop, kCFRunLoopCommonModes)
signal.signal(signal.SIGINT, sigint)
CFRunLoopRun()
if __name__ == "__main__":
main()
|