Mercurial > projects > qtd
comparison qt/d2/qt/Signal.d @ 322:7c2cf27391c4 signals
A slight change of the connect syntax. More sofisticated signals/slots lookup. Some fixes in examples.
author | eldar_ins@eldar-laptop |
---|---|
date | Sun, 27 Dec 2009 21:13:38 +0500 |
parents | d458ed66e871 |
children | 7a3c43424dca |
comparison
equal
deleted
inserted
replaced
321:d458ed66e871 | 322:7c2cf27391c4 |
---|---|
184 BindQtSignal, | 184 BindQtSignal, |
185 NewSignal, | 185 NewSignal, |
186 NewSlot | 186 NewSlot |
187 } | 187 } |
188 | 188 |
189 string signature_impl(T...)(string name) | 189 string signature(T...)(string name) |
190 { | 190 { |
191 string res = name ~ "("; | 191 string res = name ~ "("; |
192 foreach(i, _; T) | 192 foreach(i, _; T) |
193 { | 193 { |
194 if(i > 0) | 194 if(i > 0) |
198 else | 198 else |
199 res ~= T[i].stringof; | 199 res ~= T[i].stringof; |
200 } | 200 } |
201 res ~= ")"; | 201 res ~= ")"; |
202 return res; | 202 return res; |
203 } | |
204 | |
205 template signature(string name, T...) | |
206 { | |
207 enum signature = signature_impl!(T)(name); | |
208 } | |
209 | |
210 template lastSignalIndex(T) | |
211 { | |
212 static if (T.stringof == "QObject") | |
213 enum lastSignalIndex = lastSignalIndexImpl!(T, 0); | |
214 else | |
215 mixin ("enum lastSignalIndex = lastSignalIndexImpl!(T, " ~ "T.lastSignalIndex_" ~ (BaseClassesTuple!(T)[0]).stringof ~ ");"); | |
216 } | |
217 | |
218 template lastSignalIndexImpl(T, int index) | |
219 { | |
220 static if (is(typeof(mixin("T." ~ signalPrefix ~ toStringNow!(index))))) | |
221 enum lastSignalIndexImpl = lastSignalIndexImpl!(T, index + 1); | |
222 else | |
223 enum lastSignalIndexImpl = index - 1; | |
224 } | 203 } |
225 | 204 |
226 // ------------------------------------------------------------------ | 205 // ------------------------------------------------------------------ |
227 | 206 |
228 string[] getSymbols(C)(string prefix) | 207 string[] getSymbols(C)(string prefix) |