1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
'''
Module of MacOS API for plyer.notification.
'''
from plyer.facades import Notification
from pyobjus import (
autoclass, protocol, objc_str, ObjcBOOL
)
from pyobjus.dylib_manager import (
load_framework, INCLUDE
)
load_framework(INCLUDE.AppKit)
load_framework(INCLUDE.Foundation)
NSUserNotification = autoclass('NSUserNotification')
NSUserNotificationCenter = autoclass('NSUserNotificationCenter')
class OSXNotification(Notification):
'''
Implementation of MacOS notification API.
'''
def _notify(self, **kwargs):
title = kwargs.get('title', '')
message = kwargs.get('message', '')
app_name = kwargs.get('app_name', '')
# app_icon, timeout, ticker are not supported (yet)
notification = NSUserNotification.alloc().init()
notification.setTitle_(objc_str(title))
notification.setSubtitle_(objc_str(app_name))
notification.setInformativeText_(objc_str(message))
usrnotifctr = NSUserNotificationCenter.defaultUserNotificationCenter()
usrnotifctr.setDelegate_(self)
usrnotifctr.deliverNotification_(notification)
@protocol('NSUserNotificationCenterDelegate')
def userNotificationCenter_shouldPresentNotification_(
self, center, notification):
return ObjcBOOL(True)
def instance():
'''
Instance for facade proxy.
'''
return OSXNotification()
|