-- Print a list of all of the user variables associated with a -- specified control function print_variables(control_name) -- Get the DOM object for the control name passed in local domObject = gredom.get_object(control_name) if(domObject == nil) then print("Can't find name for " .. tostring(control_name)) return end -- Get the variables defined on this DOM object local vars = domObject:get_variables() if(vars == nil or #vars == 0) then print("No variables for " .. control_name) else print("Variables for " .. control_name) for i=1,#vars do print("# " .. tostring(vars[i])) end end end -- Print out all of the screens where this control's container layer is -- being used function print_used_on_screens(control_name) -- Get the DOM object for the control name passed in local domObject = gredom.get_object(control_name) if(domObject == nil) then print("Can't find name for " .. tostring(control_name)) return end -- Build up the full path to this object -- Walk up the tree looking at all parents adding screens we find local screen_list = {} local parent_list = {} table.insert(parent_list, domObject:get_parents()) local i = 1 while i <= #parent_list do local parents = parent_list[i] for p=1,#parents do -- If this was a screen, add it to our collection if parents[p]:get_type() == gredom.SCREEN then screen_list[parents[p]] = true else -- If this has parents of its own, -- then add them to the search list parents = parents[p]:get_parents() if(parents ~= nil and #parents > 0) then table.insert(parent_list, parents) end end end i = i + 1 end -- Print out all of the screens that we have identified print(control_name .. " is used on the following screens:") for screen,v in pairs(screen_list) do print("# " .. screen:get_name()) end end -- Invoke our DOM example functions with the context control function CBDom(mapargs) print_used_on_screens(mapargs.context_control) print_variables(mapargs.context_control) end