-- contains all selection components components = {}; function Selection_Initialize(component, name, callback) components[component:GetName()] = {}; local c = components[component:GetName()]; c["values"] = {}; c["names"] = {}; c["index"] = 1; c["callback"] = callback; Selection_SetName(component, name); end -- sets component name (visible above control) function Selection_SetName(component, name) local c = components[component:GetName()]; c["name"] = name; getglobal(component:GetName().."Name"):SetText(name); end -- updates component selected name to match current index function Selection_UpdateText(component) local c = components[component:GetName()]; getglobal(component:GetName().."Text"):SetText(c.names[c.index]); end function Selection_GetSelectedName(component) local c = components[component:GetName()]; return c.names[c.index]; end function Selection_GetSelectedValue(component) local c = components[component:GetName()]; return c.values[c.index]; end function Selection_AddSelection(component, value, name) local c = components[component:GetName()]; table.insert(c.values, value); table.insert(c.names, name); end function Selection_SetSelectedValue(component, value) local c = components[component:GetName()]; c.index = value; Selection_UpdateText(component); c.callback(c.index); end function Selection_Prev(component) local c = components[component:GetName()]; if (c.index-1 < 1) then return; end c.index = c.index - 1; Selection_UpdateText(component); c.callback(c.index); end function Selection_Next(component) local c = components[component:GetName()]; if (c.index+1 > table.getn(c.values)) then return; end c.index = c.index + 1; Selection_UpdateText(component); c.callback(c.index); end