Mercurial > projects > dstep
comparison dstep/foundation/NSRunLoop.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 | 7ff919f595d5 |
children | b9de51448c6b |
comparison
equal
deleted
inserted
replaced
15:7ff919f595d5 | 16:19885b43130e |
---|---|
7 module dstep.foundation.NSRunLoop; | 7 module dstep.foundation.NSRunLoop; |
8 | 8 |
9 import dstep.corefoundation.CFRunLoop; | 9 import dstep.corefoundation.CFRunLoop; |
10 import dstep.foundation.NSArray; | 10 import dstep.foundation.NSArray; |
11 import dstep.foundation.NSDate; | 11 import dstep.foundation.NSDate; |
12 import dstep.foundation.NSObjCRuntime; | |
12 import dstep.foundation.NSObject; | 13 import dstep.foundation.NSObject; |
13 import dstep.foundation.NSPort; | 14 import dstep.foundation.NSPort; |
15 import dstep.foundation.NSString; | |
14 import dstep.foundation.NSTimer; | 16 import dstep.foundation.NSTimer; |
15 import dstep.objc.bridge.Bridge; | 17 import dstep.objc.bridge.Bridge; |
16 import dstep.objc.objc : id; | 18 import dstep.objc.objc; |
17 | 19 |
18 import bindings = dstep.foundation.NSRunLoop_bindings; | 20 import bindings = dstep.foundation.NSRunLoop_bindings; |
19 | 21 |
20 const NSString NSDefaultRunLoopMode; | 22 private |
21 const NSString NSRunLoopCommonModes; | 23 { |
22 | 24 NSString NSDefaultRunLoopMode_; |
23 static this () | 25 NSString NSRunLoopCommonModes_; |
24 { | 26 } |
25 NSDefaultRunLoopMode = new NSString(bindings.NSDefaultRunLoopMode); | 27 |
26 NSRunLoopCommonModes = new NSString(bindings.NSRunLoopCommonModes); | 28 NSString NSDefaultRunLoopMode () |
27 } | 29 { |
30 if (NSDefaultRunLoopMode_) | |
31 return NSDefaultRunLoopMode_; | |
32 | |
33 return NSDefaultRunLoopMode_ = new NSString(bindings.NSDefaultRunLoopMode); | |
34 } | |
35 | |
36 NSString NSRunLoopCommonModes () | |
37 { | |
38 if (NSRunLoopCommonModes_) | |
39 return NSRunLoopCommonModes_; | |
40 | |
41 return NSRunLoopCommonModes_ = new NSString(bindings.NSRunLoopCommonModes); | |
42 } | |
43 | |
44 const TNSOrderedPerform = ` | |
45 | |
46 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes) | |
47 { | |
48 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes); | |
49 } | |
50 | |
51 void cancelPerformSelector (SEL aSelector, Object target, Object arg) | |
52 { | |
53 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg); | |
54 } | |
55 | |
56 void cancelPerformSelectorsWithTarget (Object target) | |
57 { | |
58 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target); | |
59 } | |
60 `; | |
61 | |
62 const TNSDelayedPerforming = ` | |
63 | |
64 void performSelector (SEL aSelector, Object anArgument, double delay, NSArray modes) | |
65 { | |
66 return invokeObjcSelf!(void, "performSelector:withObject:afterDelay:inModes:", SEL, Object, double, NSArray)(aSelector, anArgument, delay, modes); | |
67 } | |
68 | |
69 void performSelector (SEL aSelector, Object anArgument, double delay) | |
70 { | |
71 return invokeObjcSelf!(void, "performSelector:withObject:afterDelay:", SEL, Object, double)(aSelector, anArgument, delay); | |
72 } | |
73 | |
74 static void cancelPreviousPerformRequestsWithTarget (Object aTarget, SEL aSelector, Object anArgument) | |
75 { | |
76 return invokeObjcSelfClass!(void, "cancelPreviousPerformRequestsWithTarget:selector:object:", Object, SEL, Object)(aTarget, aSelector, anArgument); | |
77 } | |
78 | |
79 static void cancelPreviousPerformRequestsWithTarget (Object aTarget) | |
80 { | |
81 return invokeObjcSelfClass!(void, "cancelPreviousPerformRequestsWithTarget:", Object)(aTarget); | |
82 } | |
83 | |
84 //mixin ObjcBindMethod!(performSelector, void, "performSelector:withObject:afterDelay:inModes:", SEL, Object, double, NSArray); | |
85 //mixin ObjcBindMethod!(performSelector, void, "performSelector:withObject:afterDelay:", SEL, Object, double); | |
86 //mixin ObjcBindClassMethod!(cancelPreviousPerformRequestsWithTarget, "cancelPreviousPerformRequestsWithTarget:selector:object:"); | |
87 //mixin ObjcBindClassMethod!(cancelPreviousPerformRequestsWithTarget, "cancelPreviousPerformRequestsWithTarget:"); | |
88 `; | |
89 | |
90 const TNSRunLoopConveniences = ` | |
91 | |
92 void run () | |
93 { | |
94 return invokeObjcSelf!(void, "run"); | |
95 } | |
96 | |
97 void runUntilDate (NSDate limitDate) | |
98 { | |
99 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate); | |
100 } | |
101 | |
102 bool runMode (NSString mode, NSDate limitDate) | |
103 { | |
104 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate); | |
105 } | |
106 | |
107 void configureAsServer () | |
108 { | |
109 return invokeObjcSelf!(void, "configureAsServer"); | |
110 } | |
111 `; | |
28 | 112 |
29 class NSRunLoop : NSObject | 113 class NSRunLoop : NSObject |
30 { | 114 { |
31 mixin ObjcWrap; | 115 mixin (ObjcWrap); |
32 mixin TNSOrderedPerform; | 116 |
33 mixin TNSRunLoopConveniences; | 117 this () |
118 { | |
119 super(typeof(this).alloc.init.objcObject); | |
120 } | |
121 | |
122 typeof(this) init () | |
123 { | |
124 return invokeObjcSelf!(typeof(this), "init"); | |
125 } | |
34 | 126 |
35 static NSRunLoop currentRunLoop () | 127 static NSRunLoop currentRunLoop () |
36 { | 128 { |
37 return invokeObjcSelfClass!(NSRunLoop, "currentRunLoop"); | 129 return invokeObjcSuperClass!(NSRunLoop, "currentRunLoop"); |
38 } | 130 } |
39 | 131 |
40 static NSRunLoop mainRunLoop () | 132 static NSRunLoop mainRunLoop () |
41 { | 133 { |
42 return invokeObjcSelfClass!(NSRunLoop, "mainRunLoop"); | 134 return invokeObjcSuperClass!(NSRunLoop, "mainRunLoop"); |
43 } | 135 } |
44 | 136 |
45 NSString currentMode () | 137 NSString currentMode () |
46 { | 138 { |
47 return invokeObjcSelf!(NSString, "currentMode"); | 139 return invokeObjcSelf!(NSString, "currentMode"); |
74 | 166 |
75 void acceptInputForMode (NSString mode, NSDate limitDate) | 167 void acceptInputForMode (NSString mode, NSDate limitDate) |
76 { | 168 { |
77 return invokeObjcSelf!(void, "acceptInputForMode:beforeDate:", NSString, NSDate)(mode, limitDate); | 169 return invokeObjcSelf!(void, "acceptInputForMode:beforeDate:", NSString, NSDate)(mode, limitDate); |
78 } | 170 } |
79 } | 171 |
80 | 172 // TNSOrderedPerform |
81 template TNSOrderedPerform () | |
82 { | |
83 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes) | 173 void performSelector (SEL aSelector, Object target, Object arg, NSUInteger order, NSArray modes) |
84 { | 174 { |
85 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes); | 175 return invokeObjcSelf!(void, "performSelector:target:argument:order:modes:", SEL, Object, Object, NSUInteger, NSArray)(aSelector, target, arg, order, modes); |
86 } | 176 } |
87 | 177 |
88 void cancelPerformSelector (SEL aSelector, Object target, Object arg) | 178 void cancelPerformSelector (SEL aSelector, Object target, Object arg) |
89 { | 179 { |
90 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg); | 180 return invokeObjcSelf!(void, "cancelPerformSelector:target:argument:", SEL, Object, Object)(aSelector, target, arg); |
91 } | 181 } |
92 | 182 |
93 void cancelPerformSelectorsWithTarget (Object target) | 183 void cancelPerformSelectorsWithTarget (Object target) |
94 { | 184 { |
95 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target); | 185 return invokeObjcSelf!(void, "cancelPerformSelectorsWithTarget:", Object)(target); |
96 } | 186 } |
97 } | 187 |
98 | 188 // TNSRunLoopConveniences |
99 template TNSDelayedPerforming () | |
100 { | |
101 void performSelector (SEL aSelector, Object anArgument, double delay, NSArray modes); | |
102 void performSelector (SEL aSelector, Object anArgument, double delay); | |
103 static void cancelPreviousPerformRequestsWithTarget (Object aTarget, SEL aSelector, Object anArgument); | |
104 static void cancelPreviousPerformRequestsWithTarget (Object aTarget); | |
105 } | |
106 | |
107 template TNSRunLoopConveniences () | |
108 { | |
109 void run () | 189 void run () |
110 { | 190 { |
111 return invokeObjcSelf!(void, "run"); | 191 return invokeObjcSelf!(void, "run"); |
112 } | 192 } |
113 | 193 |
114 void runUntilDate (NSDate limitDate) | 194 void runUntilDate (NSDate limitDate) |
115 { | 195 { |
116 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate); | 196 return invokeObjcSelf!(void, "runUntilDate:", NSDate)(limitDate); |
117 } | 197 } |
118 | 198 |
119 bool runMode (NSString mode, NSDate limitDate) | 199 bool runMode (NSString mode, NSDate limitDate) |
120 { | 200 { |
121 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate); | 201 return invokeObjcSelf!(bool, "runMode:beforeDate:", NSString, NSDate)(mode, limitDate); |
122 } | 202 } |
123 | 203 |
124 void configureAsServer () | 204 void configureAsServer () |
125 { | 205 { |
126 return invokeObjcSelf!(void, "configureAsServer"); | 206 return invokeObjcSelf!(void, "configureAsServer"); |
127 } | 207 } |
128 } | 208 } |
129 |