@@ -5,13 +5,13 @@ return function(name, basalt)
55 local base = basalt .getObject (" VisualObject" )(name , basalt )
66 local objectType = " Container"
77
8- local elements = {}
8+ local children = {}
99
1010 local events = {}
1111
1212 local container = {}
1313
14- local focusedObject
14+ local focusedChild
1515 local sorted = true
1616 local objId , evId = 0 , 0
1717
@@ -30,48 +30,78 @@ return function(name, basalt)
3030 end
3131 end
3232
33- local function getObject (self , name )
34- if (type (name )== " table" )then name = name :getName () end
35- for i , v in ipairs (elements ) do
33+ local function getChildren (self )
34+ self :sortChildren ()
35+ return children
36+ end
37+
38+ local function getChild (self , name )
39+ if (type (name )== " table" ) then
40+ name = name :getName ()
41+ end
42+ for _ , v in ipairs (children ) do
3643 if v .element :getName () == name then
3744 return v .element
3845 end
39- end
46+ end
4047 end
4148
42- local function getDeepObject (self , name )
43- local o = getObject (name )
44- if (o ~= nil )then return o end
45- for _ , value in pairs (objects ) do
46- if (b :getType () == " Container" ) then
47- local oF = b :getDeepObject (name )
48- if (oF ~= nil )then return oF end
49+ local function getDeepChild (self , name )
50+ local maybeChild = getChild (name )
51+ if (maybeChild ~= nil ) then
52+ return maybeChild
53+ end
54+ for _ , child in ipairs (children ) do
55+ if (child :getType () == " Container" ) then
56+ local maybeDeepChild = child :getDeepChild (name )
57+ if (maybeDeepChild ~= nil ) then
58+ return maybeDeepChild
59+ end
4960 end
5061 end
5162 end
5263
53- local function addObject (self , element , el2 )
54- if (getObject (element :getName ()) ~= nil ) then
64+ local function addChild (self , element )
65+ if (getChild (element :getName ()) ~= nil ) then
5566 return
5667 end
5768 objId = objId + 1
5869 local zIndex = element :getZIndex ()
59- table.insert (elements , {element = element , zIndex = zIndex , objId = objId })
70+ table.insert (children , {element = element , zIndex = zIndex , objId = objId })
6071 sorted = false
6172 element :setParent (self , true )
6273 for event , _ in pairs (element :getRegisteredEvents ()) do
6374 self :addEvent (event , element )
6475 end
76+
6577 if (element .init ~= nil )then element :init () end
6678 if (element .load ~= nil )then element :load () end
6779 if (element .draw ~= nil )then element :draw () end
80+
6881 return element
6982 end
7083
84+ local function removeChild (self , element )
85+ if (type (element )== " string" ) then
86+ element = getChild (element :getName ())
87+ end
88+ if (element == nil ) then
89+ return
90+ end
91+ for i , v in ipairs (children ) do
92+ if v .element == element then
93+ table.remove (children , i )
94+ return true
95+ end
96+ end
97+ self :removeEvents (element )
98+ sorted = false
99+ end
100+
71101 local function updateZIndex (self , element , newZ )
72102 objId = objId + 1
73103 evId = evId + 1
74- for _ ,v in pairs (elements )do
104+ for _ ,v in pairs (children )do
75105 if (v .element == element )then
76106 v .zIndex = newZ
77107 v .objId = objId
@@ -90,19 +120,6 @@ return function(name, basalt)
90120 self :updateDraw ()
91121 end
92122
93- local function removeObject (self , element )
94- if (type (element )== " string" )then element = getObject (element :getName ()) end
95- if (element == nil )then return end
96- for i , v in ipairs (elements ) do
97- if v .element == element then
98- table.remove (elements , i )
99- return true
100- end
101- end
102- self :removeEvents (element )
103- sorted = false
104- end
105-
106123 local function removeEvents (self , element )
107124 local parent = self :getParent ()
108125 for a , b in pairs (events ) do
@@ -158,11 +175,6 @@ return function(name, basalt)
158175 sorted = false
159176 end
160177
161- local function getObjects (self )
162- self :sortElementOrder ()
163- return elements
164- end
165-
166178 local function getEvents (self , event )
167179 return event ~= nil and events [event ] or events
168180 end
@@ -192,24 +204,24 @@ return function(name, basalt)
192204 return self
193205 end ,
194206
195- searchObjects = function (self , name )
196- local t = {}
197- for k , v in pairs (elements ) do
198- if (string.find (k :getName (), name ))then
199- table.insert (t , v )
207+ searchChildren = function (self , name )
208+ local results = {}
209+ for _ , child in pairs (children ) do
210+ if (string.find (child . element :getName (), name )) then
211+ table.insert (results , child )
200212 end
201213 end
202- return t
214+ return results
203215 end ,
204216
205- getObjectsByType = function (self , t )
206- local t = {}
207- for k , v in pairs (elements ) do
208- if ( v :isType (t )) then
209- table.insert (t , v )
217+ getChildrenByType = function (self , type )
218+ local results = {}
219+ for _ , child in pairs (children ) do
220+ if ( child . element :isType (type )) then
221+ table.insert (results , child )
210222 end
211223 end
212- return t
224+ return results
213225 end ,
214226
215227 setImportant = function (self , element )
@@ -225,11 +237,11 @@ return function(name, basalt)
225237 end
226238 end
227239 end
228- for i , v in ipairs (elements ) do
240+ for i , v in ipairs (children ) do
229241 if v .element == element then
230242 v .objId = objId
231- table.remove (elements , i )
232- table.insert (elements , v )
243+ table.remove (children , i )
244+ table.insert (children , v )
233245 break
234246 end
235247 end
@@ -239,52 +251,54 @@ return function(name, basalt)
239251 sorted = false
240252 end ,
241253
242- sortElementOrder = function (self )
243- if (sorted )then return end
244- table.sort (elements , objSort )
245- for a , b in pairs (events ) do
246- table.sort (events [a ], evSort )
254+ sortChildren = function (self )
255+ if (sorted ) then
256+ return
257+ end
258+ table.sort (children , objSort )
259+ for event , _ in pairs (events ) do
260+ table.sort (events [event ], evSort )
247261 end
248262 sorted = true
249263 end ,
250264
251- removeFocusedObject = function (self )
252- if (focusedObject ~= nil )then
253- if (getObject (self , focusedObject )~= nil )then
254- focusedObject :loseFocusHandler ()
265+ clearFocusedChild = function (self )
266+ if (focusedChild ~= nil )then
267+ if (getChild (self , focusedChild )~= nil )then
268+ focusedChild :loseFocusHandler ()
255269 end
256270 end
257- focusedObject = nil
271+ focusedChild = nil
258272 return self
259273 end ,
260274
261- setFocusedObject = function (self , obj )
262- if (focusedObject ~= obj )then
263- if (focusedObject ~= nil )then
264- if (getObject (self , focusedObject )~= nil )then
265- focusedObject :loseFocusHandler ()
275+ setFocusedChild = function (self , obj )
276+ if (focusedChild ~= obj )then
277+ if (focusedChild ~= nil )then
278+ if (getChild (self , focusedChild )~= nil )then
279+ focusedChild :loseFocusHandler ()
266280 end
267281 end
268282 if (obj ~= nil )then
269- if (getObject (self , obj )~= nil )then
283+ if (getChild (self , obj )~= nil )then
270284 obj :getFocusHandler ()
271285 end
272286 end
273- focusedObject = obj
287+ focusedChild = obj
274288 return true
275289 end
276290 return false
277291 end ,
278292
279- getFocusedObject = function (self )
280- return focusedObject
293+ getFocused = function (self )
294+ return focusedChild
281295 end ,
282296
283- getObject = getObject ,
284- getObjects = getObjects ,
285- getDeepObject = getDeepObject ,
286- addObject = addObject ,
287- removeObject = removeObject ,
297+ getChild = getChild ,
298+ getChildren = getChildren ,
299+ getDeepChildren = getDeepChild ,
300+ addChild = addChild ,
301+ removeChild = removeChild ,
288302 getEvents = getEvents ,
289303 getEvent = getEvent ,
290304 addEvent = addEvent ,
@@ -300,7 +314,7 @@ return function(name, basalt)
300314
301315 customEventHandler = function (self , ...)
302316 base .customEventHandler (self , ... )
303- for _ , o in pairs (elements ) do
317+ for _ , o in pairs (children ) do
304318 if (o .element .customEventHandler ~= nil ) then
305319 o .element :customEventHandler (... )
306320 end
@@ -309,7 +323,7 @@ return function(name, basalt)
309323
310324 loseFocusHandler = function (self )
311325 base .loseFocusHandler (self )
312- if (focusedObject ~= nil )then focusedObject :loseFocusHandler () focusedObject = nil end
326+ if (focusedChild ~= nil )then focusedChild :loseFocusHandler () focusedChild = nil end
313327 end ,
314328
315329 getBasalt = function (self )
@@ -326,7 +340,7 @@ return function(name, basalt)
326340 if (base .eventHandler ~= nil )then
327341 base .eventHandler (self , ... )
328342 if (events [" other_event" ]~= nil )then
329- self :sortElementOrder ()
343+ self :sortChildren ()
330344 for _ , obj in ipairs (events [" other_event" ]) do
331345 if (obj .element .eventHandler ~= nil ) then
332346 obj .element .eventHandler (obj .element , ... )
@@ -342,7 +356,7 @@ return function(name, basalt)
342356 if (base [v [1 ]]~= nil )then
343357 if (base [v [1 ]](self , btn , x , y , ... ))then
344358 if (events [k ]~= nil )then
345- self :sortElementOrder ()
359+ self :sortChildren ()
346360 for _ , obj in ipairs (events [k ]) do
347361 if (obj .element [v [1 ]] ~= nil ) then
348362 local xO , yO = 0 , 0
@@ -360,7 +374,7 @@ return function(name, basalt)
360374 end
361375 end
362376 if (v [2 ])then
363- self :removeFocusedObject ()
377+ self :clearFocusedChild ()
364378 end
365379 end
366380 return true
@@ -373,8 +387,8 @@ return function(name, basalt)
373387 container [v ] = function (self , ...)
374388 if (base [v ]~= nil )then
375389 if (base [v ](self , ... ))then
376- if (events [k ]~= nil )then
377- self :sortElementOrder ()
390+ if (events [k ]~= nil )then
391+ self :sortChildren ()
378392 for _ , obj in ipairs (events [k ]) do
379393 if (obj .element [v ] ~= nil ) then
380394 if (obj .element [v ](obj .element , ... )) then
@@ -390,7 +404,7 @@ return function(name, basalt)
390404
391405 for objectName , _ in pairs (basalt .getObjects ()) do
392406 container [" add" .. objectName ] = function (self , id )
393- return addObject ( self , basalt :createObject (objectName , id ))
407+ return self : addChild ( basalt :createObject (objectName , id ))
394408 end
395409 end
396410
0 commit comments