growl.py
65 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
Brian E Granger
|
r1234 | # encoding: utf-8 | ||
Brian Granger
|
r2512 | """ | ||
Utilities using Growl on OS X for notifications. | ||||
""" | ||||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r2512 | #----------------------------------------------------------------------------- | ||
# Copyright (C) 2008-2009 The IPython Development Team | ||||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Code | ||||
#----------------------------------------------------------------------------- | ||||
Brian E Granger
|
r1234 | |||
class IPythonGrowlError(Exception): | ||||
pass | ||||
class Notifier(object): | ||||
def __init__(self, app_name): | ||||
try: | ||||
import Growl | ||||
except ImportError: | ||||
self.g_notifier = None | ||||
else: | ||||
self.g_notifier = Growl.GrowlNotifier(app_name, ['kernel', 'core']) | ||||
self.g_notifier.register() | ||||
def _notify(self, title, msg): | ||||
if self.g_notifier is not None: | ||||
Bernardo B. Marques
|
r4872 | self.g_notifier.notify('core', title, msg) | ||
Brian E Granger
|
r1234 | |||
def notify(self, title, msg): | ||||
self._notify(title, msg) | ||||
def notify_deferred(self, r, msg): | ||||
title = "Deferred Result" | ||||
msg = msg + '\n' + repr(r) | ||||
self._notify(title, msg) | ||||
return r | ||||
_notifier = None | ||||
def notify(title, msg): | ||||
pass | ||||
def notify_deferred(r, msg): | ||||
return r | ||||
def start(app_name): | ||||
global _notifier, notify, notify_deferred | ||||
if _notifier is not None: | ||||
raise IPythonGrowlError("this process is already registered with Growl") | ||||
else: | ||||
_notifier = Notifier(app_name) | ||||
notify = _notifier.notify | ||||
notify_deferred = _notifier.notify_deferred | ||||