ACEGUI_GENERIC = 0 ACEGUI_FRAME = 1 ACEGUI_BORDER_FRAME = 2 ACEGUI_BASIC_DIALOG = 3 ACEGUI_DIALOG = 4 ACEGUI_OPTIONSBOX = 5 ACEGUI_BUTTON = 6 ACEGUI_CHECK_BUTTON = 7 ACEGUI_DROPDOWN = 8 ACEGUI_LISTBOX = 9 ACEGUI_EDITBOX = 10 ACEGUI_INPUTBOX = 11 ACEGUI_CHECKBOX = 12 ACEGUI_SCROLL_EDITBOX = 13 ACEGUI_SCROLL_FRAME = 14 ACEGUI_SCROLLBAR = 15 ACEGUI_SCROLL_CHILD = 16 ACEGUI_SLIDER = 17 ACEGUI_FONTSTRING = 18 ACEGUI_TEXTURE = 19 ACEGUI_BACKDROP = 20 ACEGUI_DRIVER_MAP = { [ACEGUI_GENERIC] = AceGUIElement, [ACEGUI_FRAME] = AceGUIFrame, [ACEGUI_BORDER_FRAME] = AceGUIBorderFrame, [ACEGUI_BASIC_DIALOG] = AceGUIBasicDialog, [ACEGUI_DIALOG] = AceGUIDialog, [ACEGUI_OPTIONSBOX] = AceGUIOptionsBox, [ACEGUI_BUTTON] = AceGUIButton, [ACEGUI_CHECK_BUTTON] = AceGUICheckButton, [ACEGUI_DROPDOWN] = AceGUIDropDown, [ACEGUI_LISTBOX] = AceGUIListBox, [ACEGUI_EDITBOX] = AceGUIEditBox, [ACEGUI_INPUTBOX] = AceGUIInputBox, [ACEGUI_CHECKBOX] = AceGUICheckBox, [ACEGUI_SCROLL_EDITBOX] = AceGUIScrollEditBox, [ACEGUI_SCROLL_FRAME] = AceGUIScrollFrame, [ACEGUI_SCROLLBAR] = AceGUIElement, [ACEGUI_SCROLL_CHILD] = AceGUIElement, [ACEGUI_SLIDER] = AceGUIElement, [ACEGUI_FONTSTRING] = AceGUIElement, [ACEGUI_TEXTURE] = AceGUIElement, [ACEGUI_BACKDROP] = AceGUIElement } ACEGUI_REGISTRY = {dropDowns={}} --[[-------------------------------------------------------------------------------- Definition -----------------------------------------------------------------------------------]] AceGUI = AceModuleClass:new() --[[-------------------------------------------------------------------------------- Initialization -----------------------------------------------------------------------------------]] function AceGUI:Initialize(app, def) if( self.initialized ) then return end self.app = app if( def.type ) then self.topUnit = ACEGUI_DRIVER_MAP[def.type]:Initialize(nil, def.name, def, nil, self) else self.topUnit = AceGUIContainer:Initialize(def, self) end self._lookup = getmetatable(self) if( self._lookup and self.topUnit ) then setmetatable(self, {__index = function(self, key) return self._lookup[key] or (type(self.topUnit[key]) == "function") and function(self, ...) self.topUnit[key](self.topUnit, unpack(arg)) end or self.topUnit[key] end }) end if( def.OnLoad ) then self:CallHandler("OnLoad") end self.initialized = TRUE end