You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
507 lines
17 KiB
507 lines
17 KiB
|
5 years ago
|
local _, S = ...
|
||
|
|
|
||
|
|
SortedDropdownButtonMixin = {}
|
||
|
|
|
||
|
|
function SortedDropdownButtonMixin:OnLoad()
|
||
|
|
self.backdrop:SetPoint("TOPLEFT", -2, 0)
|
||
|
|
self.backdrop:SetPoint("BOTTOMRIGHT", 2, 0)
|
||
|
|
self:GetHighlightTexture():SetVertexColor(1, 0.9, 0.25, 0.6)
|
||
|
|
self:GetHighlightTexture():SetPoint("TOPLEFT", -2, 0)
|
||
|
|
self:GetHighlightTexture():SetPoint("BOTTOMRIGHT", 2, 0)
|
||
|
|
self:GetNormalTexture():ClearAllPoints()
|
||
|
|
self:GetNormalTexture():SetPoint("RIGHT", 0, -4)
|
||
|
|
self:GetNormalTexture():SetSize(14, 16)
|
||
|
|
self:GetPushedTexture():ClearAllPoints()
|
||
|
|
self:GetPushedTexture():SetPoint("RIGHT", 0, -4)
|
||
|
|
self:GetPushedTexture():SetSize(14, 16)
|
||
|
|
self:RegisterForClicks("LeftButtonDown")
|
||
|
|
|
||
|
|
self.valueText = self:CreateFontString(self:GetName().."ValueText", "ARTWORK", "Sorted11Font")
|
||
|
|
self.valueText:SetJustifyH("LEFT")
|
||
|
|
self.valueText:SetJustifyV("MIDDLE")
|
||
|
|
self.valueText:SetPoint("TOPLEFT", 2, -2)
|
||
|
|
self.valueText:SetPoint("BOTTOMRIGHT", -20, 2)
|
||
|
|
function self:SetValue(text, r, g, b)
|
||
|
|
self.valueText:SetText(text)
|
||
|
|
if r then
|
||
|
|
self.valueText:SetTextColor(r, g, b)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownButtonMixin:OnMouseDown()
|
||
|
|
self:GetHighlightTexture():SetAlpha(1)
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownButtonMixin:OnMouseUp()
|
||
|
|
self:GetHighlightTexture():SetAlpha(0.6)
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownButtonMixin:OnHide()
|
||
|
|
self:SetButtonState("NORMAL", false)
|
||
|
|
self:UnlockHighlight()
|
||
|
|
SortedDropdownMenuParent:ToggleOff(self)
|
||
|
|
SortedDropdownMenuParent:Hide()
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownButtonMixin:OnClick()
|
||
|
|
SortedDropdownMenuParent:Toggle(self)
|
||
|
|
if SortedDropdownMenuParent.toggled then
|
||
|
|
self:SetButtonState("PUSHED", true)
|
||
|
|
self:LockHighlight()
|
||
|
|
else
|
||
|
|
self:SetButtonState("NORMAL", false)
|
||
|
|
self:UnlockHighlight()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
SortedDropdownMenuMixin = {}
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:OnLoad()
|
||
|
|
SortedScrollFrameMixin.OnLoad(self)
|
||
|
|
|
||
|
|
self.backdrop = self:CreateTexture()
|
||
|
|
self.backdrop:SetAllPoints()
|
||
|
|
self.backdrop:SetHorizTile(true)
|
||
|
|
self.backdrop:SetVertTile(true)
|
||
|
|
Sorted.RegisterBackdrop(self.backdrop)
|
||
|
|
self:SetFrameLevel(1)
|
||
|
|
self.shadowFrame:SetFrameLevel(0)
|
||
|
|
|
||
|
|
self.scrollBar = CreateFrame("Slider", self:GetName().."ScrollBar", self, "MinimalScrollBarTemplate")
|
||
|
|
self.scrollBar.trackBG:Hide()
|
||
|
|
self.scrollBar:SetPoint("TOPRIGHT", 1, -18)
|
||
|
|
self.scrollBar:SetPoint("BOTTOM", 0, 16)
|
||
|
|
self.scrollBar:SetMinMaxValues(1, 1)
|
||
|
|
self.scrollBar:SetValueStep(1)
|
||
|
|
self.scrollBar.scrollStep = 16
|
||
|
|
self.scrollBar:SetValue(0)
|
||
|
|
self:SetScrollChild(self.scrollChild)
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:UpdateSize()
|
||
|
|
self.menuWidth = 128
|
||
|
|
for _, items in ipairs(self.scrollChild.listItems) do
|
||
|
|
for i, button in pairs(items) do
|
||
|
|
if i < self.scrollChild.currentIndex and button:IsShown() then
|
||
|
|
local width = button:ItemWidth()
|
||
|
|
if width > self.menuWidth then
|
||
|
|
self.menuWidth = width
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
self.menuWidth = self.menuWidth + 48
|
||
|
|
self.menuHeight = self.scrollChild.currentIndex * 22
|
||
|
|
self.scrollChild:SetSize(self.menuWidth, self.menuHeight)
|
||
|
|
if self.menuHeight > 384 then
|
||
|
|
self.scrollBar:Show()
|
||
|
|
self.scrollBar:SetMinMaxValues(1, self.menuHeight - 384)
|
||
|
|
self:SetSize(self.menuWidth + 24, 384)
|
||
|
|
self.menuHeight = 384
|
||
|
|
else
|
||
|
|
self.scrollBar:Hide()
|
||
|
|
self.scrollBar:SetMinMaxValues(1, 1)
|
||
|
|
self:SetSize(self.menuWidth, self.menuHeight)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:ToggleOn(parent)
|
||
|
|
if not Sorted_IsClassic() then
|
||
|
|
self:RegisterEvent("GLOBAL_MOUSE_DOWN")
|
||
|
|
end
|
||
|
|
SortedDropdownMenuParent:SetParent(parent)
|
||
|
|
self.toggled = true
|
||
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
|
||
|
|
if SortedDropdownMenuParent.animating then
|
||
|
|
SortedDropdownMenuParent:Hide()
|
||
|
|
end
|
||
|
|
SortedDropdownMenuParent:Show()
|
||
|
|
self:Animate("Show")
|
||
|
|
if parent.SetButtonState then
|
||
|
|
parent:SetButtonState("PUSHED", true)
|
||
|
|
parent:LockHighlight()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
function SortedDropdownMenuMixin:ToggleOff(parent)
|
||
|
|
if not Sorted_IsClassic() then
|
||
|
|
self:UnregisterEvent("GLOBAL_MOUSE_DOWN")
|
||
|
|
end
|
||
|
|
SortedDropdownMenuParent:SetParent(parent)
|
||
|
|
self.toggled = false
|
||
|
|
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF)
|
||
|
|
self:Animate("Hide")
|
||
|
|
if parent.SetButtonState then
|
||
|
|
parent:SetButtonState("NORMAL", false)
|
||
|
|
parent:UnlockHighlight()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
function SortedDropdownMenuMixin:Toggle(parent)
|
||
|
|
if parent == SortedDropdownMenuParent:GetParent() then
|
||
|
|
if self.toggled then
|
||
|
|
SortedDropdownMenuParent:ToggleOff(parent)
|
||
|
|
else
|
||
|
|
SortedDropdownMenuParent:ToggleOn(parent)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
SortedDropdownMenuParent:ToggleOn(parent)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:Animate(animation)
|
||
|
|
self.animating = true
|
||
|
|
self.animation = animation
|
||
|
|
self.animElapsed = 0
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:OnUpdate(elapsed)
|
||
|
|
SortedScrollFrameMixin.OnUpdate(self, elapsed)
|
||
|
|
|
||
|
|
if self.animating then
|
||
|
|
self.animElapsed = self.animElapsed + elapsed * 5
|
||
|
|
if self.animElapsed > 1 or Sorted_GetSetting("animations") == 1 then
|
||
|
|
self.animElapsed = 1
|
||
|
|
self.animating = false
|
||
|
|
end
|
||
|
|
|
||
|
|
if self.animation == "Show" then
|
||
|
|
local heightMult = math.sin(self.animElapsed * math.pi / 2) --1 - (1 - self.animElapsed) ^ 2
|
||
|
|
local height = self.menuHeight * heightMult
|
||
|
|
self:SetAlpha(1)
|
||
|
|
self.shadowFrame:Show()
|
||
|
|
self:SetHeight(height)
|
||
|
|
for _, items in pairs(self.scrollChild.listItems) do
|
||
|
|
for k,v in pairs(items) do
|
||
|
|
v:ClearAllPoints()
|
||
|
|
v:SetPoint("LEFT")
|
||
|
|
v:SetPoint("RIGHT")
|
||
|
|
v:SetPoint("TOP", 0, 11 - (self.scrollChild:GetHeight() * heightMult) / self.scrollChild.currentIndex * k)
|
||
|
|
v:SetAlpha(self.animElapsed)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
elseif self.animation == "Hide" then
|
||
|
|
if not self.animating then
|
||
|
|
self:Hide()
|
||
|
|
return
|
||
|
|
end
|
||
|
|
self.shadowFrame:Hide()
|
||
|
|
self:SetAlpha(1 - self.animElapsed)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
function SortedDropdownMenuMixin:OnShow()
|
||
|
|
Sorted_UpdateBackdropTexture()
|
||
|
|
self:ClearAllPoints()
|
||
|
|
self:SetPoint("TOPRIGHT", self:GetParent(), "BOTTOMRIGHT")
|
||
|
|
self:SetFrameLevel(self:GetParent():GetFrameLevel() + 1000)
|
||
|
|
self.scrollChild:Clear()
|
||
|
|
self:GetParent():InitFunc()
|
||
|
|
self:UpdateSize()
|
||
|
|
self.scrollBar:SetValue(1)
|
||
|
|
if Sorted_GetSetting("animations") then
|
||
|
|
self:Animate("Show")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:OnHide()
|
||
|
|
if self:GetParent().SetButtonState then
|
||
|
|
self:GetParent():SetButtonState("NORMAL", false)
|
||
|
|
self:GetParent():UnlockHighlight()
|
||
|
|
end
|
||
|
|
self.animating = false
|
||
|
|
self.animElapsed = 1
|
||
|
|
self.animation = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
function SortedDropdownMenuMixin:OnEvent()
|
||
|
|
if not (self:GetParent():IsMouseOver() or self:IsMouseOver()) then
|
||
|
|
self:ToggleOff(self:GetParent())
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
SortedDropdownMenuContentsMixin = {}
|
||
|
|
local ITEM_BUTTON = 1
|
||
|
|
local ITEM_CENTERED_BUTTON = 2
|
||
|
|
local ITEM_CHECK_BUTTON = 3
|
||
|
|
local ITEM_TEXT = 4
|
||
|
|
function SortedDropdownMenuContentsMixin:OnLoad()
|
||
|
|
self.listItems = {
|
||
|
|
[ITEM_BUTTON] = {},
|
||
|
|
[ITEM_CENTERED_BUTTON] = {},
|
||
|
|
[ITEM_CHECK_BUTTON] = {},
|
||
|
|
[ITEM_TEXT] = {},
|
||
|
|
}
|
||
|
|
self.currentIndex = 1
|
||
|
|
|
||
|
|
function self:Clear()
|
||
|
|
for _, v in pairs(self.listItems) do
|
||
|
|
for _, item in pairs(v) do
|
||
|
|
item:Hide()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
self.currentIndex = 1
|
||
|
|
end
|
||
|
|
|
||
|
|
local function CreateButton()
|
||
|
|
local b = CreateFrame("Button", self:GetName().."Button"..self.currentIndex, self, "SortedDropdownButtonTemplate")
|
||
|
|
b:SetHeight(22)
|
||
|
|
b:SetPoint("LEFT")
|
||
|
|
b:SetPoint("RIGHT")
|
||
|
|
|
||
|
|
b.leftText = b:CreateFontString(b:GetName().."LeftText", "ARTWORK", "Sorted11Font")
|
||
|
|
b.leftText:SetPoint("LEFT", 8, 0)
|
||
|
|
|
||
|
|
b.rightText = b:CreateFontString(b:GetName().."RightText", "ARTWORK", "Sorted11Font")
|
||
|
|
b.rightText:SetPoint("RIGHT", -24, 0)
|
||
|
|
|
||
|
|
b.deleteButton = CreateFrame("Button", b:GetName().."DeleteButton", b, "SortedDeleteButtonTemplate")
|
||
|
|
b.deleteButton:SetPoint("RIGHT", -4, 0)
|
||
|
|
if S.DoSkinning() then
|
||
|
|
S.AS:SkinCloseButton(b.deleteButton)
|
||
|
|
else
|
||
|
|
b.deleteButton:SetScale(0.9)
|
||
|
|
b:HookScript("OnEnter", function(self)
|
||
|
|
self.deleteButton:SetNormalTexture("Interface\\Buttons\\UI-Panel-MinimizeButton-Up")
|
||
|
|
end)
|
||
|
|
b:HookScript("OnLeave", function(self)
|
||
|
|
self.deleteButton:SetNormalTexture("Interface\\Buttons\\UI-Panel-MinimizeButton-Disabled")
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function b:ItemWidth()
|
||
|
|
local width = self.leftText:GetStringWidth() + self.rightText:GetStringWidth()
|
||
|
|
if self.deleteButton:IsShown() then
|
||
|
|
width = width + 16
|
||
|
|
end
|
||
|
|
return width
|
||
|
|
end
|
||
|
|
|
||
|
|
self.listItems[ITEM_BUTTON][self.currentIndex] = b
|
||
|
|
end
|
||
|
|
|
||
|
|
function self:AddSpace()
|
||
|
|
self.currentIndex = self.currentIndex + 1
|
||
|
|
end
|
||
|
|
|
||
|
|
function self:AddButton(onClickFunc, leftText, rightText, hasDeleteButton, onDeleteFunc, leftColor, rightColor, highlightColor)
|
||
|
|
if not self.listItems[ITEM_BUTTON][self.currentIndex] then
|
||
|
|
CreateButton()
|
||
|
|
end
|
||
|
|
|
||
|
|
local b = self.listItems[ITEM_BUTTON][self.currentIndex]
|
||
|
|
b:SetScript("OnClick", onClickFunc)
|
||
|
|
b:HookScript("OnClick", function(self)
|
||
|
|
SortedDropdownMenuParent:GetParent():ValueFunc()
|
||
|
|
SortedDropdownMenuParent:ToggleOff(SortedDropdownMenuParent:GetParent())
|
||
|
|
end)
|
||
|
|
b:SetScript("OnEnter", nil)
|
||
|
|
|
||
|
|
b.leftText:SetText(leftText)
|
||
|
|
b.leftText:SetFontObject(Sorted12Font)
|
||
|
|
b.rightText:SetText(rightText)
|
||
|
|
b.rightText:SetFontObject(Sorted12Font)
|
||
|
|
|
||
|
|
if hasDeleteButton then
|
||
|
|
b.deleteButton:Show()
|
||
|
|
b.deleteButton:SetScript("OnClick", onDeleteFunc)
|
||
|
|
b.rightText:SetPoint("RIGHT", -24, 0)
|
||
|
|
b:SetScript("OnMouseDown", function(self)
|
||
|
|
b.leftText:SetPoint("LEFT", 9, -1)
|
||
|
|
b.rightText:SetPoint("RIGHT", -23, -1)
|
||
|
|
end)
|
||
|
|
b:SetScript("OnMouseUp", function(self)
|
||
|
|
b.leftText:SetPoint("LEFT", 8, 0)
|
||
|
|
b.rightText:SetPoint("RIGHT", -24, 0)
|
||
|
|
end)
|
||
|
|
else
|
||
|
|
b.deleteButton:Hide()
|
||
|
|
b.rightText:SetPoint("RIGHT", -8, 0)
|
||
|
|
b:SetScript("OnMouseDown", function(self)
|
||
|
|
b.leftText:SetPoint("LEFT", 9, -1)
|
||
|
|
b.rightText:SetPoint("RIGHT", -7, -1)
|
||
|
|
end)
|
||
|
|
b:SetScript("OnMouseUp", function(self)
|
||
|
|
b.leftText:SetPoint("LEFT", 8, 0)
|
||
|
|
b.rightText:SetPoint("RIGHT", -8, 0)
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
if leftColor then
|
||
|
|
b.leftText:SetTextColor(unpack(leftColor))
|
||
|
|
else
|
||
|
|
b.leftText:SetTextColor(1, 1, 1)
|
||
|
|
end
|
||
|
|
if rightColor then
|
||
|
|
b.rightText:SetTextColor(unpack(rightColor))
|
||
|
|
else
|
||
|
|
b.rightText:SetTextColor(1, 1, 1)
|
||
|
|
end
|
||
|
|
if highlightColor then
|
||
|
|
b:GetHighlightTexture():SetVertexColor(unpack(highlightColor))
|
||
|
|
else
|
||
|
|
b:GetHighlightTexture():SetVertexColor(1, 0.9, 0.25, 0.6)
|
||
|
|
end
|
||
|
|
b:GetPushedTexture():SetVertexColor(0, 0, 0)
|
||
|
|
|
||
|
|
b:Show()
|
||
|
|
self.currentIndex = self.currentIndex + 1
|
||
|
|
return b
|
||
|
|
end
|
||
|
|
|
||
|
|
local function CreateCenteredButton()
|
||
|
|
local b = CreateFrame("Button", self:GetName().."CenteredButton"..self.currentIndex, self, "SortedDropdownButtonTemplate")
|
||
|
|
b:SetHeight(22)
|
||
|
|
b:SetPoint("LEFT")
|
||
|
|
b:SetPoint("RIGHT")
|
||
|
|
|
||
|
|
b.text = b:CreateFontString(b:GetName().."Text", "ARTWORK", "Sorted11Font")
|
||
|
|
b.text:SetPoint("CENTER")
|
||
|
|
b:SetScript("OnMouseDown", function(self) b.text:SetPoint("CENTER", 0.5, -1) end)
|
||
|
|
b:SetScript("OnMouseUp", function(self) b.text:SetPoint("CENTER") end)
|
||
|
|
|
||
|
|
function b:ItemWidth()
|
||
|
|
return self.text:GetStringWidth()
|
||
|
|
end
|
||
|
|
|
||
|
|
self.listItems[ITEM_CENTERED_BUTTON][self.currentIndex] = b
|
||
|
|
end
|
||
|
|
function self:AddCenteredButton(onClickFunc, text, textColor, highlightColor)
|
||
|
|
if not self.listItems[ITEM_CENTERED_BUTTON][self.currentIndex] then
|
||
|
|
CreateCenteredButton()
|
||
|
|
end
|
||
|
|
|
||
|
|
local b = self.listItems[ITEM_CENTERED_BUTTON][self.currentIndex]
|
||
|
|
b:SetScript("OnClick", onClickFunc)
|
||
|
|
b:HookScript("OnClick", function(self)
|
||
|
|
SortedDropdownMenuParent:GetParent():ValueFunc()
|
||
|
|
SortedDropdownMenuParent:ToggleOff(SortedDropdownMenuParent:GetParent())
|
||
|
|
end)
|
||
|
|
|
||
|
|
b.text:SetText(text)
|
||
|
|
if textColor then
|
||
|
|
b.text:SetTextColor(unpack(textColor))
|
||
|
|
else
|
||
|
|
b.text:SetTextColor(1, 1, 1)
|
||
|
|
end
|
||
|
|
if highlightColor then
|
||
|
|
b:GetHighlightTexture():SetVertexColor(unpack(highlightColor))
|
||
|
|
else
|
||
|
|
b:GetHighlightTexture():SetVertexColor(1, 0.9, 0.25, 0.6)
|
||
|
|
end
|
||
|
|
b:GetPushedTexture():SetVertexColor(0, 0, 0)
|
||
|
|
|
||
|
|
b:Show()
|
||
|
|
self.currentIndex = self.currentIndex + 1
|
||
|
|
return b
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
local function CreateCheckButton()
|
||
|
|
local b = CreateFrame("Button", self:GetName().."CheckButton"..self.currentIndex, self, "SortedDropdownButtonTemplate")
|
||
|
|
b:SetHeight(22)
|
||
|
|
b:SetPoint("LEFT")
|
||
|
|
b:SetPoint("RIGHT")
|
||
|
|
|
||
|
|
b.box = CreateFrame("Frame", b:GetName().."Box", b)
|
||
|
|
b.box:SetPoint("LEFT", 8, 0)
|
||
|
|
b.box:SetSize(16, 16)
|
||
|
|
b.box.bg = b.box:CreateTexture()
|
||
|
|
b.box.bg:SetDrawLayer("ARTWORK")
|
||
|
|
b.box.bg:SetColorTexture(0, 0, 0, 0.5)
|
||
|
|
b.box.bg:SetAllPoints()
|
||
|
|
|
||
|
|
b.check = b.box:CreateTexture()
|
||
|
|
b.check:SetDrawLayer("OVERLAY")
|
||
|
|
b.check:SetPoint("TOPLEFT", -4, 4)
|
||
|
|
b.check:SetPoint("BOTTOMRIGHT", 4, -4)
|
||
|
|
b.check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
|
||
|
|
b.check:Hide()
|
||
|
|
b.checked = false
|
||
|
|
|
||
|
|
b.text = b:CreateFontString(b:GetName().."Text", "ARTWORK", "Sorted11Font")
|
||
|
|
b.text:SetPoint("LEFT", 32, 0)
|
||
|
|
b:SetScript("OnMouseDown", function(self) b.text:SetPoint("CENTER", 0.5, -1) end)
|
||
|
|
b:SetScript("OnMouseUp", function(self) b.text:SetPoint("CENTER") end)
|
||
|
|
|
||
|
|
function b:ItemWidth()
|
||
|
|
return self.text:GetStringWidth() + 24
|
||
|
|
end
|
||
|
|
|
||
|
|
function b:GetChecked()
|
||
|
|
return self.checked
|
||
|
|
end
|
||
|
|
function b:SetChecked(checked)
|
||
|
|
self.checked = checked
|
||
|
|
self.check:SetShown(checked)
|
||
|
|
end
|
||
|
|
function b:Toggle()
|
||
|
|
self:SetChecked(not self.checked)
|
||
|
|
end
|
||
|
|
|
||
|
|
self.listItems[ITEM_CHECK_BUTTON][self.currentIndex] = b
|
||
|
|
end
|
||
|
|
function self:AddCheckButton(onClickFunc, text, textColor, highlightColor)
|
||
|
|
if not self.listItems[ITEM_CHECK_BUTTON][self.currentIndex] then
|
||
|
|
CreateCheckButton()
|
||
|
|
end
|
||
|
|
|
||
|
|
local b = self.listItems[ITEM_CHECK_BUTTON][self.currentIndex]
|
||
|
|
b:SetScript("OnClick", onClickFunc)
|
||
|
|
b:HookScript("OnClick", function(self)
|
||
|
|
SortedDropdownMenuParent:GetParent():ValueFunc()
|
||
|
|
end)
|
||
|
|
|
||
|
|
b.text:SetText(text)
|
||
|
|
if textColor then
|
||
|
|
b.text:SetTextColor(unpack(textColor))
|
||
|
|
else
|
||
|
|
b.text:SetTextColor(1, 1, 1)
|
||
|
|
end
|
||
|
|
if highlightColor then
|
||
|
|
b:GetHighlightTexture():SetVertexColor(unpack(highlightColor))
|
||
|
|
else
|
||
|
|
b:GetHighlightTexture():SetVertexColor(1, 0.9, 0.25, 0.6)
|
||
|
|
end
|
||
|
|
b:GetPushedTexture():SetVertexColor(0, 0, 0)
|
||
|
|
|
||
|
|
b:Show()
|
||
|
|
self.currentIndex = self.currentIndex + 1
|
||
|
|
return b
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
local function CreateText()
|
||
|
|
local item = CreateFrame("Frame", self:GetName().."Text"..self.currentIndex, self)
|
||
|
|
item:SetHeight(22)
|
||
|
|
item:SetPoint("LEFT")
|
||
|
|
item:SetPoint("RIGHT")
|
||
|
|
|
||
|
|
item.text = item:CreateFontString(item:GetName().."Text", "ARTWORK", "Sorted12Font")
|
||
|
|
item.text:SetPoint("LEFT", 4, 0)
|
||
|
|
|
||
|
|
function item:ItemWidth()
|
||
|
|
return self.text:GetStringWidth()
|
||
|
|
end
|
||
|
|
|
||
|
|
self.listItems[ITEM_TEXT][self.currentIndex] = item
|
||
|
|
end
|
||
|
|
function self:AddText(text, textColor)
|
||
|
|
if not self.listItems[ITEM_TEXT][self.currentIndex] then
|
||
|
|
CreateText()
|
||
|
|
end
|
||
|
|
|
||
|
|
local item = self.listItems[ITEM_TEXT][self.currentIndex]
|
||
|
|
item.text:SetText(text)
|
||
|
|
if textColor then
|
||
|
|
item.text:SetTextColor(unpack(textColor))
|
||
|
|
else
|
||
|
|
item.text:SetTextColor(1, 0.82, 0)
|
||
|
|
end
|
||
|
|
|
||
|
|
item:Show()
|
||
|
|
self.currentIndex = self.currentIndex + 1
|
||
|
|
return item
|
||
|
|
end
|
||
|
|
end
|