Quantcast

local lib, oldminor = LibStub:NewLibrary("tekKonfig-Dropdown", 3)
if not lib then return end
oldminor = oldminor or 0


local GameTooltip = GameTooltip
local function HideTooltip() GameTooltip:Hide() end
local function ShowTooltip(self)
	if self.frame.tiptext then
		GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT")
		GameTooltip:SetText(self.frame.tiptext, nil, nil, nil, nil, true)
	end
end
local function ShowTooltip2(self) ShowTooltip(self.container) end


local function OnClick(self)
	ToggleDropDownMenu(nil, nil, self:GetParent())
	PlaySound("igMainMenuOptionCheckBoxOn")
end

local function OnHide() CloseDropDownMenus() end


-- Create a dropdown.
-- All args optional, parent recommended
function lib.new(parent, label, ...)
	local container = CreateFrame("Button", nil, parent)
	container:SetWidth(149+13) container:SetHeight(32+24)
	container:SetScript("OnEnter", ShowTooltip)
	container:SetScript("OnLeave", HideTooltip)
	if select("#", ...) > 0 then container:SetPoint(...) end

	local name = "tekKonfigDropdown"..GetTime()  -- Sadly, some of these frames must be named
	local f = CreateFrame("Frame", name, parent)
	f:SetWidth(149) f:SetHeight(32)
	f:SetPoint("TOPLEFT", container, -13, -24)
	f:EnableMouse(true)
	f:SetScript("OnHide", OnHide)
	container.frame = f

	local ltex = f:CreateTexture(name.."Left", "ARTWORK")
	ltex:SetWidth(25) ltex:SetHeight(64)
	ltex:SetPoint("TOPLEFT", 0, 17)
	ltex:SetTexture("Interface\\Glues\\CharacterCreate\\CharacterCreate-LabelFrame")
	ltex:SetTexCoord(0, 0.1953125, 0, 1)

	local rtex = f:CreateTexture(nil, "ARTWORK")
	rtex:SetWidth(25) rtex:SetHeight(64)
	rtex:SetPoint("RIGHT")
	rtex:SetTexture("Interface\\Glues\\CharacterCreate\\CharacterCreate-LabelFrame")
	rtex:SetTexCoord(0.8046875, 1, 0, 1)

	local mtex = f:CreateTexture(nil, "ARTWORK")
	mtex:SetWidth(115) mtex:SetHeight(64)
	mtex:SetPoint("LEFT", ltex, "RIGHT")
	mtex:SetPoint("RIGHT", rtex, "LEFT")
	mtex:SetTexture("Interface\\Glues\\CharacterCreate\\CharacterCreate-LabelFrame")
	mtex:SetTexCoord(0.1953125, 0.8046875, 0, 1)

	local text = f:CreateFontString(name.."Text", "ARTWORK", "GameFontHighlightSmall")
	text:SetWidth(0) text:SetHeight(10)
	text:SetPoint("RIGHT", rtex, -43, 2)
	text:SetJustifyH("RIGHT")

	local button = CreateFrame("Button", nil, f)
	button:SetWidth(24) button:SetHeight(24)
	button:SetPoint("TOPRIGHT", rtex, -16, -18)
	button:SetScript("OnClick", OnClick)
	button:SetScript("OnEnter", ShowTooltip2)
	button.container = container

	button:SetNormalTexture("Interface\\ChatFrame\\UI-ChatIcon-ScrollDown-Up")
	button:SetPushedTexture("Interface\\ChatFrame\\UI-ChatIcon-ScrollDown-Down")
	button:SetHighlightTexture("Interface\\Buttons\\UI-Common-MouseHilight")
	button:SetDisabledTexture("Interface\\ChatFrame\\UI-ChatIcon-ScrollDown-Disabled")
	button:GetHighlightTexture():SetBlendMode("ADD")

	local labeltext = f:CreateFontString(nil, "BACKGROUND", "GameFontNormal")--GameFontHighlight
	labeltext:SetPoint("BOTTOMLEFT", container, "TOPLEFT", 16-13, 3-24)
	labeltext:SetText(label)

	return f, text, container, labeltext
end