local Saved = MyCollection.Internals.Saved local Data = MyCollection.Internals.Data local Constants = MyCollection.Internals.Constants local Dependencies = MyCollection.Internals.Dependencies local Logger = MyCollection.Internals.Dependencies.Logger local EventManager = MyCollection.Internals.Dependencies.Officials.EventManager local UI = MyCollection.UI local Controls = MyCollection.UI.Controls Controls.AddSet = {} Controls.AddSet.__index = Controls.AddSet local AddSet = Controls.AddSet -- Constructor function AddSet.New(element) local instance = {} setmetatable(instance, AddSet) instance:Initialize(element) return instance end -- UI containers AddSet.Element = nil -- Sub Elements AddSet.Label = nil AddSet.OrderNumber = nil -- Selectors AddSet.ArmorSelector = nil AddSet.SetSelector = nil -- Functions function AddSet:Initialize(element) self.Element = element -- Set Selector self.SetSelector = ZO_ComboBox_ObjectFromContainer(self.Element:GetNamedChild("Selector")) self.SetSelector:SetSortsItems(true) self.SetSelector:ClearItems() for key, _ in pairs(Dependencies.LibSets.GetAllSetIds()) do local name = Dependencies.LibSets.GetSetName(key) local entry = ZO_ComboBox:CreateItemEntry(name, function () end) entry.id = key self.SetSelector:AddItem(entry, ZO_COMBOBOX_SUPRESS_UPDATE) end self.SetSelector:SetSortOrder(ZO_SORT_ORDER_UP, ZO_SORT_BY_NAME) self.SetSelector:SetHeight(500) self.SetSelector:SelectFirstItem() -- Armor Type selector local armorTypeSelectorElement = self.Element:GetNamedChild("ArmorType") self.ArmorSelector = ZO_RadioButtonGroup:New() local lightButton = self.Element:GetNamedChild("Light") lightButton.armorType = Constants.ArmorTypes.Light self.ArmorSelector:Add(lightButton) local mediumButton = self.Element:GetNamedChild("Medium") mediumButton.armorType = Constants.ArmorTypes.Medium self.ArmorSelector:Add(mediumButton) local heavyButton = self.Element:GetNamedChild("Heavy") heavyButton.armorType = Constants.ArmorTypes.Heavy self.ArmorSelector:Add(heavyButton) self.ArmorSelector:SetClickedButton(lightButton) -- Order Number self.OrderNumber = self.Element:GetNamedChild("OrderNumber"):GetNamedChild("Box") self.OrderNumber:SetTextType(TEXT_TYPE_NUMERIC_UNSIGNED_INT) self.OrderNumber:SetMaxInputChars(4) self.OrderNumber:SetText(0) -- Add Button local addButton = self.Element:GetNamedChild("Add") addButton:SetHandler("OnMouseUp", AddSet.OnMouseUpItem) end function AddSet.OnMouseUpItem(control, button, upInside) local addSetMenu = UI.Frame.AddSet if (upInside) then if (button == MOUSE_BUTTON_INDEX_LEFT) then local setId = addSetMenu.SetSelector:GetSelectedItemData().id local armorType = addSetMenu.ArmorSelector:GetClickedButton().armorType local orderNumber = tonumber(addSetMenu.OrderNumber:GetText()) Data.Collection:AddSet(setId, armorType, orderNumber) UI.Frame.MenuBar:DefaultPage() end end end -- https://esoapi.uesp.net/100031/src/libraries/zo_combobox/zo_combobox.lua.html -- https://esodata.uesp.net/100031/src/libraries/utility/zo_radiobuttongroup.lua.html