1import objc 2from Foundation import * 3from AppKit import * 4import objc 5 6def serviceSelector(fn): 7 # this is the signature of service selectors 8 return objc.selector(fn, signature="v@:@@o^@") 9 10def ERROR(s): 11 #NSLog(u"ERROR: %s", s) 12 return s 13 14class ServiceTest(NSObject): 15 16 @serviceSelector 17 def doOpenFileService_userData_error_(self, pboard, data, error): 18 #NSLog(u"doOpenFileService_userData_error_(%s, %s)", pboard, data) 19 try: 20 types = pboard.types() 21 pboardString = None 22 if NSStringPboardType in types: 23 pboardString = pboard.stringForType_(NSStringPboardType) 24 if pboardString is None: 25 return ERROR(NSLocalizedString( 26 "Error: Pasteboard doesn't contain a string.", 27 "Pasteboard couldn't give string." 28 )) 29 30 if not NSWorkspace.sharedWorkspace().openFile_(pboardString): 31 return ERROR(NSLocalizedString( 32 "Error: Couldn't open file %s.", 33 "Couldn't perform service operation for file %s." 34 ) % pboardString) 35 36 return ERROR(None) 37 except: 38 import traceback 39 traceback.print_exc() 40 return ERROR(u'Exception, see traceback') 41 42 43 @serviceSelector 44 def doCapitalizeService_userData_error_(self, pboard, data, err): 45 #NSLog(u"doCapitalizeService_userData_error_(%s, %s)", pboard, data) 46 try: 47 types = pboard.types() 48 pboardString = None 49 if NSStringPboardType in types: 50 pboardString = pboard.stringForType_(NSStringPboardType) 51 if pboardString is None: 52 return ERROR(NSLocalizedString( 53 "Error: Pasteboard doesn't contain a string.", 54 "Pasteboard couldn't give string." 55 )) 56 57 newString = NSString.capitalizedString(pboardString) 58 59 if not newString: 60 return ERROR(NSLocalizedString( 61 "Error: Couldn't capitalize string %s.", 62 "Couldn't perform service operation for string %s." 63 ) % pboardString) 64 65 types = [NSStringPboardType] 66 pboard.declareTypes_owner_([NSStringPboardType], None) 67 pboard.setString_forType_(newString, NSStringPboardType) 68 return ERROR(None) 69 except: 70 import traceback 71 traceback.print_exc() 72 return ERROR(u'Exception, see traceback') 73