• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /macosx-10.10.1/pyobjc-45/2.6/pyobjc/pyobjc-framework-Cocoa/Examples/AppKit/SimpleService/
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