Mercurial > projects > qtd
comparison generator/typesystem_core-java.java @ 372:a032df77b6ab
Simple debug helper. Unittests. Meta-object for polymorphic non-QObjects
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Thu, 08 Jul 2010 17:19:05 +0300 |
parents | 185df9220ea7 |
children | e67ce7c21758 |
comparison
equal
deleted
inserted
replaced
370:7fd4b69378bf | 372:a032df77b6ab |
---|---|
43 | 43 |
44 import qt.*; | 44 import qt.*; |
45 import qt.core.*; | 45 import qt.core.*; |
46 | 46 |
47 class QObject___ extends QObject { | 47 class QObject___ extends QObject { |
48 | 48 |
49 alias QMetaObject Meta; | 49 alias QMetaObject Meta; |
50 | 50 |
51 /* TODO: test whether the linked list is really a better solution | 51 /* TODO: test whether the linked list is really a better solution |
52 public bool __stackAllocated = false; | 52 public bool __stackAllocated = false; |
53 | 53 |
54 new(size_t size, void* p = null) | 54 new(size_t size, void* p = null) |
55 { | 55 { |
56 if (!p) | 56 if (!p) |
57 { | 57 { |
58 p = malloc(size); | 58 p = malloc(size); |
72 GC.removeRange(p); | 72 GC.removeRange(p); |
73 } | 73 } |
74 } | 74 } |
75 } | 75 } |
76 */ | 76 */ |
77 | 77 |
78 private | 78 /* |
79 { | |
80 static QObject __root; | |
81 QObject __next; | |
82 QObject __prev; | |
83 } | |
84 /* | |
85 override void onSignalHandlerCreated(ref SignalHandler sh) | 79 override void onSignalHandlerCreated(ref SignalHandler sh) |
86 { | 80 { |
87 sh.signalEvent = &onSignalEvent; | 81 sh.signalEvent = &onSignalEvent; |
88 } | 82 } |
89 | 83 |
90 private void onSignalEvent(int signalId, SignalEventId event) | 84 private void onSignalEvent(int signalId, SignalEventId event) |
91 { | 85 { |
92 stringz signature; | 86 stringz signature; |
93 signalSignature(signalId, signature); | 87 signalSignature(signalId, signature); |
94 if (signature) | 88 if (signature) |
95 { | 89 { |
96 switch (event) | 90 switch (event) |
97 { | 91 { |
98 case SignalEventId.firstSlotConnected: | 92 case SignalEventId.firstSlotConnected: |
105 assert (false); | 99 assert (false); |
106 } | 100 } |
107 } | 101 } |
108 } | 102 } |
109 */ | 103 */ |
110 ~this() | 104 |
111 { | |
112 if (__prev) | |
113 __prev.__next = __next; | |
114 else | |
115 __root = __next; | |
116 | |
117 if (__next) | |
118 __next.__prev = __prev; | |
119 } | |
120 | |
121 /** | 105 /** |
122 */ | 106 */ |
123 T findChild(T : QObject = QObject)(string name = null) | 107 T findChild(T : QObject = QObject)(string name = null) |
124 { | 108 { |
125 foreach (obj; children) | 109 foreach (obj; children) |
126 { | 110 { |
127 auto tmp = cast(T)obj; | 111 auto tmp = cast(T)obj; |
128 if (tmp && (!name.length || tmp.objectName == name)) | 112 if (tmp && (!name.length || tmp.objectName == name)) |
129 return tmp; | 113 return tmp; |
130 | 114 |
131 tmp = obj.findChild!(T)(name); | 115 tmp = obj.findChild!(T)(name); |
132 if (tmp) | 116 if (tmp) |
133 return tmp; | 117 return tmp; |
134 } | 118 } |
135 | 119 |
136 return null; | 120 return null; |
137 } | 121 } |
138 | 122 |
139 /** | 123 /** |
140 */ | 124 */ |
141 T[] findChildren(T : QObject = QObject)(string name = null) | 125 T[] findChildren(T : QObject = QObject)(string name = null) |
142 { | 126 { |
143 T[] result; | 127 T[] result; |
144 | 128 |
145 void find(QObject[] objects) | 129 void find(QObject[] objects) |
146 { | 130 { |
147 foreach (obj; objects) | 131 foreach (obj; objects) |
148 { | 132 { |
149 auto tmp = cast(T)obj; | 133 auto tmp = cast(T)obj; |
150 if (tmp && (!name.length || tmp.objectName == name)) | 134 if (tmp && (!name.length || tmp.objectName == name)) |
151 result ~= tmp; | 135 result ~= tmp; |
152 find(obj.children); | 136 find(obj.children); |
153 } | 137 } |
154 } | 138 } |
155 | 139 |
156 find(children); | 140 find(children); |
157 return result; | 141 return result; |
158 } | 142 } |
159 | 143 |
160 static void connect(QObject sender, string signal, QObject receiver, string method, int type = 0) | 144 static void connect(QObject sender, string signal, QObject receiver, string method, int type = 0) |
161 { | 145 { |
162 QMetaObject.connectImpl(sender, signal, receiver, method, type); | 146 QMetaObject.connectImpl(sender, signal, receiver, method, type); |
163 } | 147 } |
164 }// class | 148 }// class |