comparison dstep/foundation/NSAppleScript.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents 89f3c3ef1fd2
children b9de51448c6b
comparison
equal deleted inserted replaced
15:7ff919f595d5 16:19885b43130e
9 import dstep.foundation.NSAppleEventDescriptor; 9 import dstep.foundation.NSAppleEventDescriptor;
10 import dstep.foundation.NSDictionary; 10 import dstep.foundation.NSDictionary;
11 import dstep.foundation.NSObject; 11 import dstep.foundation.NSObject;
12 import dstep.foundation.NSString; 12 import dstep.foundation.NSString;
13 import dstep.foundation.NSURL; 13 import dstep.foundation.NSURL;
14 import dstep.foundation.NSZone;
14 import dstep.objc.bridge.Bridge; 15 import dstep.objc.bridge.Bridge;
15 import dstep.objc.objc : id; 16 import dstep.objc.objc;
17
18
16 19
17 import bindings = dstep.foundation.NSAppleScript_bindings; 20 import bindings = dstep.foundation.NSAppleScript_bindings;
18 21
19 const NSString NSAppleScriptErrorMessage; 22 private
20 const NSString NSAppleScriptErrorNumber; 23 {
21 const NSString NSAppleScriptErrorAppName; 24 NSString NSAppleScriptErrorMessage_;
22 const NSString NSAppleScriptErrorBriefMessage; 25 NSString NSAppleScriptErrorNumber_;
23 const NSString NSAppleScriptErrorRange; 26 NSString NSAppleScriptErrorAppName_;
27 NSString NSAppleScriptErrorBriefMessage_;
28 NSString NSAppleScriptErrorRange_;
29 }
24 30
25 static this () 31 NSString NSAppleScriptErrorMessage ()
26 { 32 {
27 NSAppleScriptErrorMessage = new NSString(bindings.NSAppleScriptErrorMessage); 33 if (NSAppleScriptErrorMessage_)
28 NSAppleScriptErrorNumber = new NSString(bindings.NSAppleScriptErrorNumber); 34 return NSAppleScriptErrorMessage_;
29 NSAppleScriptErrorAppName = new NSString(bindings.NSAppleScriptErrorAppName); 35
30 NSAppleScriptErrorBriefMessage = new NSString(bindings.NSAppleScriptErrorBriefMessage); 36 return NSAppleScriptErrorMessage_ = new NSString(bindings.NSAppleScriptErrorMessage);
31 NSAppleScriptErrorRange = new NSString(bindings.NSAppleScriptErrorRange); 37 }
38
39 NSString NSAppleScriptErrorNumber ()
40 {
41 if (NSAppleScriptErrorNumber_)
42 return NSAppleScriptErrorNumber_;
43
44 return NSAppleScriptErrorNumber_ = new NSString(bindings.NSAppleScriptErrorNumber);
45 }
46
47 NSString NSAppleScriptErrorAppName ()
48 {
49 if (NSAppleScriptErrorAppName_)
50 return NSAppleScriptErrorAppName_;
51
52 return NSAppleScriptErrorAppName_ = new NSString(bindings.NSAppleScriptErrorAppName);
53 }
54
55 NSString NSAppleScriptErrorBriefMessage ()
56 {
57 if (NSAppleScriptErrorBriefMessage_)
58 return NSAppleScriptErrorBriefMessage_;
59
60 return NSAppleScriptErrorBriefMessage_ = new NSString(bindings.NSAppleScriptErrorBriefMessage);
61 }
62
63 NSString NSAppleScriptErrorRange ()
64 {
65 if (NSAppleScriptErrorRange_)
66 return NSAppleScriptErrorRange_;
67
68 return NSAppleScriptErrorRange_ = new NSString(bindings.NSAppleScriptErrorRange);
32 } 69 }
33 70
34 class NSAppleScript : NSObject, INSCopying 71 class NSAppleScript : NSObject, INSCopying
35 { 72 {
36 mixin ObjcWrap; 73 mixin (ObjcWrap);
37 74
38 Object initWithContentsOfURL (NSURL url, NSDictionary** errorInfo) 75 this ()
39 { 76 {
40 return invokeObjcSelf!(Object, "initWithContentsOfURL:error:", NSURL, NSDictionary**)(url, errorInfo); 77 super(typeof(this).alloc.init.objcObject);
78 }
79
80 typeof(this) init ()
81 {
82 return invokeObjcSelf!(typeof(this), "init");
41 } 83 }
42 84
43 this (NSURL url, NSDictionary** errorInfo) 85 Object initWithContentsOfURL (NSURL url, ref NSDictionary errorInfo)
44 { 86 {
45 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 87 id error;
46 id result = Bridge.invokeObjcMethod!(id, "initWithContentsOfURL:error:", NSURL, NSDictionary**)(objcObject, url, errorInfo); 88
89 if (errorInfo)
90 error = new objc_object;
91
92 Object result = invokeObjcSelf!(Object, "initWithContentsOfURL:error:", NSURL, id*)(url, &error);
93
94 if (error)
95 errorInfo = new NSDictionary(error);
96
97 return result;
98 }
47 99
48 if (result) 100 this (NSURL url, ref NSDictionary errorInfo)
49 objcObject = ret; 101 {
50 102 typeof(this).alloc.initWithContentsOfURL(url, errorInfo);
51 dObject = this;
52 } 103 }
53 104
54 Object initWithSource (NSString source) 105 Object initWithSource (NSString source)
55 { 106 {
56 return invokeObjcSelf!(Object, "initWithSource:", NSString)(source); 107 return invokeObjcSelf!(Object, "initWithSource:", NSString)(source);
57 } 108 }
58 109
59 this (NSString source) 110 this (NSString source)
60 { 111 {
61 objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass); 112 typeof(this).alloc.initWithSource(source);
62 id result = Bridge.invokeObjcMethod!(id, "initWithSource:", NSString)(objcObject, source);
63
64 if (result)
65 objcObject = ret;
66
67 dObject = this;
68 } 113 }
69 114
70 NSString source () 115 NSString source ()
71 { 116 {
72 return invokeObjcSelf!(NSString, "source"); 117 return invokeObjcSelf!(NSString, "source");
75 bool isCompiled () 120 bool isCompiled ()
76 { 121 {
77 return invokeObjcSelf!(bool, "isCompiled"); 122 return invokeObjcSelf!(bool, "isCompiled");
78 } 123 }
79 124
80 bool compileAndReturnError (NSDictionary** errorInfo) 125 bool compileAndReturnError (ref NSDictionary errorInfo)
81 { 126 {
82 return invokeObjcSelf!(bool, "compileAndReturnError:", NSDictionary**)(errorInfo); 127 id error;
128
129 if (errorInfo)
130 error = new objc_object;
131
132 bool result = invokeObjcSelf!(bool, "compileAndReturnError:", id*)(&error);
133
134 if (error)
135 errorInfo = new NSDictionary(error);
136
137 return result;
83 } 138 }
84 139
85 NSAppleEventDescriptor executeAndReturnError (NSDictionary** errorInfo) 140 NSAppleEventDescriptor executeAndReturnError (ref NSDictionary errorInfo)
86 { 141 {
87 return invokeObjcSelf!(NSAppleEventDescriptor, "executeAndReturnError:", NSDictionary**)(errorInfo); 142 id error;
143
144 if (errorInfo)
145 error = new objc_object;
146
147 NSAppleEventDescriptor result = invokeObjcSelf!(NSAppleEventDescriptor, "executeAndReturnError:", id*)(&error);
148
149 if (error)
150 errorInfo = new NSDictionary(error);
151
152 return result;
88 } 153 }
89 154
90 NSAppleEventDescriptor executeAppleEvent (NSAppleEventDescriptor event, NSDictionary** errorInfo) 155 NSAppleEventDescriptor executeAppleEvent (NSAppleEventDescriptor event, ref NSDictionary errorInfo)
91 { 156 {
92 return invokeObjcSelf!(NSAppleEventDescriptor, "executeAppleEvent:error:", NSAppleEventDescriptor, NSDictionary**)(event, errorInfo); 157 id error;
158
159 if (errorInfo)
160 error = new objc_object;
161
162 NSAppleEventDescriptor result = invokeObjcSelf!(NSAppleEventDescriptor, "executeAppleEvent:error:", NSAppleEventDescriptor, id*)(event, &error);
163
164 if (error)
165 errorInfo = new NSDictionary(error);
166
167 return result;
93 } 168 }
94 169
95 Object copyWithZone (NSZone* zone) 170 Object copyWithZone (NSZone* zone)
96 { 171 {
97 return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone); 172 return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);