NSDistributedNotificationCenter'i kasutamine Python Objective-C bridge'ga: Difference between revisions
No edit summary |
|||
Line 28: | Line 28: | ||
<pre> | <pre> | ||
import Foundation | #!/usr/bin/python | ||
from AppKit import * | # -*- coding: utf-8 -*- | ||
from PyObjCTools import AppHelper | |||
import Foundation #Impordime Foundation teegi | |||
from AppKit import * #AppKit teegid ipordime kõik objektid | |||
from PyObjCTools import AppHelper #PyObjCTools teegist impordime AppHelperi klassi | |||
class GetSongs(NSObject): | class GetSongs(NSObject): | ||
Line 47: | Line 50: | ||
AppHelper.runConsoleEventLoop() | AppHelper.runConsoleEventLoop() | ||
</pre> | </pre> | ||
=Näide 2. Oma ''notificationi'' saatmine ja vastu võtmine= | =Näide 2. Oma ''notificationi'' saatmine ja vastu võtmine= | ||
=Allikad= | =Allikad= |
Revision as of 08:35, 3 April 2013
Autor: Raido Aarop, A31
Raarop 20:26, 2 April 2013 (EEST)
Sissejuhatus
See artikkel toob näite kuidas saata ja vastu võtta protsesside vahelisis teated Apple OSX platvormil. Näite eesmärk on teha seda pythoni keeles ilma kasutamatta OSX native Objective-C keelt.
NSDistributedNotificationCenter klass
Klassi kaudu on võimalik Apple OSX operatsioonisüsteemis saata ja vastu võtta teateid(notifications) erinevate taskide vahel. Klass kuulub OSX Foundationi frameworki.
Python
Python on levinud ja lihtne programmeersimiskeel, mis toetab mitmeid operatsioonisüsteeme ja platvorme, kaasaarvatud OSX.
Python Objective-C bridge
PyObjC bridge loob silla Pythoni ja Objective-C programmeerimiskeele vahel. Selles näites kasutame PyObjC teeki et kasutada NSDistributedNotificationCenter klassi Pythonis. PyObjC on testitud ja toetab Pythoni versioone 2.7, 3.2 ja 3.3. Python 2.6 on ka toetatud, kuigi ei ole nii tihedalt testitud. Samuti on tihedalt toetatud ja testitud OSX 10.8 ja toetatud kõik OSX-id alates 10.5-est i386, x86_64 ja ppc arhitektuuriga.
PyObjC installeerimine
Selleks et PyObjC instaleerida on vaja kombilaatorit. Kõige lihtsam on tõmmata tasuta Xcode Mac App Store'st
Mõnel juhul on vaja installeerida Xcode lisa Command Line Tools. Main Menu -> Preferences -> Components
PyObjC on võimalik installeerida kasutades pythoni teegihaldureid easy_install-i või pip-i. On olemas käsitsi variant, selle kohta saab rohkem infot siit.
Selles artiklis kasutame easy_install-i, mis peaks olema kaasas OSX Pythoni vaikimisi versiooniga.
Et teha protsess kiiremaks teeme seda kahe käsuga.
$ sudo easy_install -U pyobjc-core $ sudo easy_install -U pyobjc-framework-Cocoa
Näide 1: iTunes'i notificationi vastu võtmine.
Seletame lahti näite aadressilt http://stackoverflow.com/questions/1933107/how-do-you-listen-to-notifications-from-itunes-on-a-mac-using-the-nsdistributed
#!/usr/bin/python # -*- coding: utf-8 -*- import Foundation #Impordime Foundation teegi from AppKit import * #AppKit teegid ipordime kõik objektid from PyObjCTools import AppHelper #PyObjCTools teegist impordime AppHelperi klassi class GetSongs(NSObject): def getMySongs_(self, song): song_details = {} ui = song.userInfo() for x in ui: song_details[x] = ui.objectForKey_(x) print song_details nc = Foundation.NSDistributedNotificationCenter.defaultCenter() GetSongs = GetSongs.new() nc.addObserver_selector_name_object_(GetSongs, 'getMySongs:', 'com.apple.iTunes.playerInfo',None) NSLog("Listening for new tunes....") AppHelper.runConsoleEventLoop()
Näide 2. Oma notificationi saatmine ja vastu võtmine
Allikad
NSDistributedNotificationCenter Class Reference
Python
Pyobjc
Näide 1