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)