|
|
|
|
local _, Cell = ...
|
|
|
|
|
local L = Cell.L
|
|
|
|
|
local F = Cell.funcs
|
|
|
|
|
local P = Cell.pixelPerfectFuncs
|
|
|
|
|
|
|
|
|
|
local customNicknamesFrame
|
|
|
|
|
local customCB, list, newItem
|
|
|
|
|
local LoadList
|
|
|
|
|
local customs = {}
|
|
|
|
|
|
|
|
|
|
local function CreateCustomNicknamesFrame()
|
|
|
|
|
customNicknamesFrame = CreateFrame("Frame", "CellOptionsFrame_Nicknames", Cell.frames.generalTab, "BackdropTemplate")
|
|
|
|
|
Cell:StylizeFrame(customNicknamesFrame, nil, Cell:GetAccentColorTable())
|
|
|
|
|
customNicknamesFrame:SetFrameLevel(Cell.frames.generalTab:GetFrameLevel() + 50)
|
|
|
|
|
customNicknamesFrame:Hide()
|
|
|
|
|
|
|
|
|
|
customNicknamesFrame:SetPoint("LEFT", Cell.frames.generalTab.customNicknamesBtn, "RIGHT", 5, 0)
|
|
|
|
|
customNicknamesFrame:SetPoint("BOTTOMRIGHT", -5, 5)
|
|
|
|
|
customNicknamesFrame:SetHeight(425)
|
|
|
|
|
|
|
|
|
|
customNicknamesFrame:SetScript("OnHide", function()
|
|
|
|
|
customNicknamesFrame:Hide()
|
|
|
|
|
Cell.frames.generalTab.mask:Hide()
|
|
|
|
|
Cell.frames.generalTab.customNicknamesBtn:SetFrameLevel(Cell.frames.generalTab:GetFrameLevel() + 1)
|
|
|
|
|
newItem:Hide()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
-- custom
|
|
|
|
|
customCB = Cell:CreateCheckButton(customNicknamesFrame, L["Custom Nicknames"], function(checked, self)
|
|
|
|
|
CellDB["nicknames"]["custom"] = checked
|
|
|
|
|
Cell:Fire("UpdateNicknames", "custom", checked)
|
|
|
|
|
if checked then
|
|
|
|
|
list.mask:Hide()
|
|
|
|
|
else
|
|
|
|
|
list.mask:Show()
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
customCB:SetPoint("TOPLEFT", 10, -10)
|
|
|
|
|
|
|
|
|
|
customCB:HookScript("OnEnter", function()
|
|
|
|
|
CellTooltip:SetOwner(customCB, "ANCHOR_NONE")
|
|
|
|
|
CellTooltip:SetPoint("BOTTOMLEFT", customCB, "TOPLEFT", 0, 1)
|
|
|
|
|
CellTooltip:AddLine(L["Custom Nicknames"])
|
|
|
|
|
CellTooltip:AddLine("|cffffffff"..L["Only visible to me"])
|
|
|
|
|
CellTooltip:AddDoubleLine("|cffffb5c5"..L["Left-Click"]..":", "|cffffffff"..strlower(L["Edit"]))
|
|
|
|
|
CellTooltip:AddDoubleLine("|cffffb5c5Shift+"..L["Left-Click"]..":", "|cffffffff"..strlower(L["Delete"]))
|
|
|
|
|
CellTooltip:Show()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
customCB:HookScript("OnLeave", function()
|
|
|
|
|
CellTooltip:Hide()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
-- list
|
|
|
|
|
list = Cell:CreateFrame(nil, customNicknamesFrame)
|
|
|
|
|
list:SetPoint("TOPLEFT", customCB, "BOTTOMLEFT", 0, -10)
|
|
|
|
|
list:SetPoint("BOTTOMRIGHT", -10, 10)
|
|
|
|
|
list:Show()
|
|
|
|
|
|
|
|
|
|
Cell:CreateMask(list, L["Disabled"])
|
|
|
|
|
list.mask:Hide()
|
|
|
|
|
|
|
|
|
|
-- list new
|
|
|
|
|
newItem = Cell:CreateFrame(nil, list)
|
|
|
|
|
newItem:SetFrameLevel(list:GetFrameLevel() + 10)
|
|
|
|
|
newItem:SetAllPoints(list)
|
|
|
|
|
newItem:SetScript("OnEvent", function()
|
|
|
|
|
local name = F:UnitFullName("target")
|
|
|
|
|
if name then
|
|
|
|
|
newItem.playerName:SetText(name)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
newItem:SetScript("OnShow", function()
|
|
|
|
|
newItem:RegisterEvent("PLAYER_TARGET_CHANGED")
|
|
|
|
|
end)
|
|
|
|
|
newItem:SetScript("OnHide", function()
|
|
|
|
|
newItem:UnregisterEvent("PLAYER_TARGET_CHANGED")
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
newItem.playerName = Cell:CreateEditBox(newItem, 20, 20)
|
|
|
|
|
newItem.playerName:SetPoint("LEFT", 5, 0)
|
|
|
|
|
newItem.playerName:SetPoint("RIGHT", -5, 0)
|
|
|
|
|
newItem.playerName:SetPoint("TOP", 0, -127)
|
|
|
|
|
newItem.playerName.tip = newItem.playerName:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET")
|
|
|
|
|
newItem.playerName.tip:SetTextColor(0.4, 0.4, 0.4, 1)
|
|
|
|
|
newItem.playerName.tip:SetPoint("LEFT", 5, 0)
|
|
|
|
|
newItem.playerName.tip:SetText(L["Name or Name-Server"])
|
|
|
|
|
newItem.playerName:SetScript("OnTextChanged", function(self, userChanged)
|
|
|
|
|
local text = strtrim(newItem.playerName:GetText())
|
|
|
|
|
|
|
|
|
|
if text == "" then
|
|
|
|
|
newItem.playerName.tip:Show()
|
|
|
|
|
newItem.playerName.isValid = false
|
|
|
|
|
newItem.playerName.text = nil
|
|
|
|
|
else
|
|
|
|
|
newItem.playerName.tip:Hide()
|
|
|
|
|
newItem.playerName.isValid = true
|
|
|
|
|
newItem.playerName.text = text
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
newItem.add:SetEnabled(newItem.playerName.isValid and newItem.nickname.isValid)
|
|
|
|
|
end)
|
|
|
|
|
newItem.playerName:SetScript("OnTabPressed", function()
|
|
|
|
|
newItem.nickname:SetFocus()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
newItem.nickname = Cell:CreateEditBox(newItem, 20, 20)
|
|
|
|
|
newItem.nickname:SetPoint("TOPLEFT", newItem.playerName, "BOTTOMLEFT", 0, -5)
|
|
|
|
|
newItem.nickname:SetPoint("TOPRIGHT", newItem.playerName, "BOTTOMRIGHT", 0, -5)
|
|
|
|
|
newItem.nickname.tip = newItem.nickname:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET")
|
|
|
|
|
newItem.nickname.tip:SetTextColor(0.4, 0.4, 0.4, 1)
|
|
|
|
|
newItem.nickname.tip:SetPoint("LEFT", 5, 0)
|
|
|
|
|
newItem.nickname.tip:SetText(L["Nickname"])
|
|
|
|
|
newItem.nickname:SetScript("OnTextChanged", function(self, userChanged)
|
|
|
|
|
local text = strtrim(newItem.nickname:GetText())
|
|
|
|
|
|
|
|
|
|
if text == "" then
|
|
|
|
|
newItem.nickname.tip:Show()
|
|
|
|
|
newItem.nickname.isValid = false
|
|
|
|
|
newItem.nickname.text = nil
|
|
|
|
|
else
|
|
|
|
|
newItem.nickname.tip:Hide()
|
|
|
|
|
newItem.nickname.isValid = true
|
|
|
|
|
newItem.nickname.text = text
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
newItem.add:SetEnabled(newItem.playerName.isValid and newItem.nickname.isValid)
|
|
|
|
|
end)
|
|
|
|
|
newItem.nickname:SetScript("OnTabPressed", function()
|
|
|
|
|
newItem.playerName:SetFocus()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
newItem.add = Cell:CreateButton(newItem, L["Add"], "green", {120, 20})
|
|
|
|
|
newItem.add:SetPoint("TOPLEFT", newItem.nickname, "BOTTOMLEFT", 0, -5)
|
|
|
|
|
newItem.add:SetScript("OnClick", function()
|
|
|
|
|
if newItem.updateIndex then
|
|
|
|
|
CellDB["nicknames"]["list"][newItem.updateIndex] = newItem.playerName.text..":"..newItem.nickname.text
|
|
|
|
|
Cell:Fire("UpdateNicknames", "list-update", newItem.playerName.text, newItem.nickname.text)
|
|
|
|
|
else
|
|
|
|
|
tinsert(CellDB["nicknames"]["list"], newItem.playerName.text..":"..newItem.nickname.text)
|
|
|
|
|
Cell:Fire("UpdateNicknames", "list-add", newItem.playerName.text, newItem.nickname.text)
|
|
|
|
|
end
|
|
|
|
|
newItem:Hide()
|
|
|
|
|
LoadList()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
newItem.cancel = Cell:CreateButton(newItem, L["Cancel"], "red", {120, 20})
|
|
|
|
|
newItem.cancel:SetPoint("TOPRIGHT", newItem.nickname, "BOTTOMRIGHT", 0, -5)
|
|
|
|
|
newItem.cancel:SetScript("OnClick", function()
|
|
|
|
|
newItem:Hide()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
newItem.tip = newItem:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET")
|
|
|
|
|
newItem.tip:SetPoint("LEFT", 5, 0)
|
|
|
|
|
newItem.tip:SetPoint("RIGHT", -5, 0)
|
|
|
|
|
newItem.tip:SetPoint("BOTTOM", newItem.playerName, "TOP", 0, 10)
|
|
|
|
|
newItem.tip:SetText(L["Target a player to autofill the name"])
|
|
|
|
|
newItem.tip:SetTextColor(0.7, 0.7, 0.7, 1)
|
|
|
|
|
|
|
|
|
|
-- list scroll
|
|
|
|
|
Cell:CreateScrollFrame(list)
|
|
|
|
|
list.scrollFrame:SetScrollStep(19)
|
|
|
|
|
|
|
|
|
|
customs[0] = Cell:CreateButton(list.scrollFrame.content, "", "accent-hover", {20, 20})
|
|
|
|
|
customs[0]:SetTexture("Interface\\AddOns\\Cell\\Media\\Icons\\new", {16, 16}, {"RIGHT", -1, 0})
|
|
|
|
|
customs[0]:SetScript("OnClick", function()
|
|
|
|
|
newItem.playerName:SetText("")
|
|
|
|
|
newItem.playerName.tip:Show()
|
|
|
|
|
newItem.playerName.isValid = nil
|
|
|
|
|
newItem.nickname:SetText("")
|
|
|
|
|
newItem.nickname.tip:Show()
|
|
|
|
|
newItem.nickname.isValid = nil
|
|
|
|
|
newItem.add:SetEnabled(false)
|
|
|
|
|
newItem.add:SetText(L["Add"])
|
|
|
|
|
newItem.updateIndex = nil
|
|
|
|
|
newItem:Show()
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------
|
|
|
|
|
-- functions
|
|
|
|
|
-------------------------------------------------
|
|
|
|
|
LoadList = function()
|
|
|
|
|
list.scrollFrame:Reset()
|
|
|
|
|
|
|
|
|
|
customs[0]:SetParent(list.scrollFrame.content)
|
|
|
|
|
customs[0]:Show()
|
|
|
|
|
customs[0]:SetPoint("BOTTOMLEFT")
|
|
|
|
|
customs[0]:SetPoint("RIGHT")
|
|
|
|
|
|
|
|
|
|
for i, v in ipairs(CellDB["nicknames"]["list"]) do
|
|
|
|
|
if not customs[i] then
|
|
|
|
|
customs[i] = Cell:CreateButton(list.scrollFrame.content, "", "accent-hover", {20, 20})
|
|
|
|
|
|
|
|
|
|
-- playerName
|
|
|
|
|
customs[i].playerName = customs[i]:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET")
|
|
|
|
|
customs[i].playerName:SetPoint("LEFT", 5, 0)
|
|
|
|
|
customs[i].playerName:SetPoint("RIGHT", customs[i], "CENTER", -5, 0)
|
|
|
|
|
customs[i].playerName:SetJustifyH("LEFT")
|
|
|
|
|
customs[i].playerName:SetWordWrap(false)
|
|
|
|
|
|
|
|
|
|
-- separator1
|
|
|
|
|
customs[i].separator1 = customs[i]:CreateTexture(nil, "ARTWORK")
|
|
|
|
|
customs[i].separator1:SetPoint("TOP")
|
|
|
|
|
customs[i].separator1:SetPoint("BOTTOM")
|
|
|
|
|
customs[i].separator1:SetColorTexture(0, 0, 0, 1)
|
|
|
|
|
P:Size(customs[i].separator1, 1, 1)
|
|
|
|
|
|
|
|
|
|
-- nickname
|
|
|
|
|
customs[i].nickname = customs[i]:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET")
|
|
|
|
|
customs[i].nickname:SetPoint("LEFT", customs[i], "CENTER", 5, 0)
|
|
|
|
|
customs[i].nickname:SetPoint("RIGHT", -5, 0)
|
|
|
|
|
customs[i].nickname:SetJustifyH("LEFT")
|
|
|
|
|
customs[i].nickname:SetWordWrap(false)
|
|
|
|
|
|
|
|
|
|
-- separator2
|
|
|
|
|
-- customs[i].separator2 = customs[i]:CreateTexture(nil, "ARTWORK")
|
|
|
|
|
-- customs[i].separator2:SetPoint("RIGHT", -17, 0)
|
|
|
|
|
-- customs[i].separator2:SetColorTexture(0, 0, 0, 1)
|
|
|
|
|
-- P:Size(customs[i].separator2, 1, 20)
|
|
|
|
|
|
|
|
|
|
-- del
|
|
|
|
|
-- customs[i].del = Cell:CreateButton(customs[i], "", "none", {18, 20}, true, true)
|
|
|
|
|
-- customs[i].del:SetTexture("Interface\\AddOns\\Cell\\Media\\Icons\\delete", {16, 16}, {"CENTER", 0, 0})
|
|
|
|
|
-- customs[i].del:SetPoint("RIGHT")
|
|
|
|
|
-- customs[i].del.tex:SetVertexColor(0.6, 0.6, 0.6, 1)
|
|
|
|
|
-- customs[i].del:SetScript("OnEnter", function()
|
|
|
|
|
-- customs[i]:GetScript("OnEnter")(customs[i])
|
|
|
|
|
-- customs[i].del.tex:SetVertexColor(1, 1, 1, 1)
|
|
|
|
|
-- end)
|
|
|
|
|
-- customs[i].del:SetScript("OnLeave", function()
|
|
|
|
|
-- customs[i]:GetScript("OnLeave")(customs[i])
|
|
|
|
|
-- customs[i].del.tex:SetVertexColor(0.6, 0.6, 0.6, 1)
|
|
|
|
|
-- end)
|
|
|
|
|
|
|
|
|
|
-- edit
|
|
|
|
|
-- customs[i].edit = Cell:CreateButton(customs[i], "", "none", {18, 20}, true, true)
|
|
|
|
|
-- customs[i].edit:SetPoint("RIGHT", customs[i].del, "LEFT", 1, 0)
|
|
|
|
|
-- customs[i].edit:SetTexture("Interface\\AddOns\\Cell\\Media\\Icons\\info", {16, 16}, {"CENTER", 0, 0})
|
|
|
|
|
-- customs[i].edit.tex:SetVertexColor(0.6, 0.6, 0.6, 1)
|
|
|
|
|
-- customs[i].edit:SetScript("OnEnter", function()
|
|
|
|
|
-- customs[i]:GetScript("OnEnter")(customs[i])
|
|
|
|
|
-- customs[i].edit.tex:SetVertexColor(1, 1, 1, 1)
|
|
|
|
|
-- end)
|
|
|
|
|
-- customs[i].edit:SetScript("OnLeave", function()
|
|
|
|
|
-- customs[i]:GetScript("OnLeave")(customs[i])
|
|
|
|
|
-- customs[i].edit.tex:SetVertexColor(0.6, 0.6, 0.6, 1)
|
|
|
|
|
-- end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local playerName, nickname = strsplit(":", v, 2)
|
|
|
|
|
customs[i].playerName:SetText(playerName)
|
|
|
|
|
customs[i].nickname:SetText(nickname)
|
|
|
|
|
|
|
|
|
|
-- customs[i].del:SetScript("OnClick", function()
|
|
|
|
|
-- tremove(CellDB["nicknames"]["list"], i)
|
|
|
|
|
-- Cell:Fire("UpdateNicknames", "list-delete", playerName)
|
|
|
|
|
-- LoadList()
|
|
|
|
|
-- end)
|
|
|
|
|
|
|
|
|
|
customs[i]:SetScript("OnClick", function(self, button)
|
|
|
|
|
if IsShiftKeyDown() then
|
|
|
|
|
tremove(CellDB["nicknames"]["list"], i)
|
|
|
|
|
Cell:Fire("UpdateNicknames", "list-delete", playerName)
|
|
|
|
|
LoadList()
|
|
|
|
|
else
|
|
|
|
|
newItem.playerName:SetText(playerName)
|
|
|
|
|
newItem.playerName.isValid = true
|
|
|
|
|
newItem.nickname:SetText(nickname)
|
|
|
|
|
newItem.nickname.isValid = true
|
|
|
|
|
newItem.add:SetEnabled(true)
|
|
|
|
|
newItem.add:SetText(L["Update"])
|
|
|
|
|
newItem.updateIndex = i
|
|
|
|
|
newItem:Show()
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
customs[i]:SetParent(list.scrollFrame.content)
|
|
|
|
|
customs[i]:Show()
|
|
|
|
|
|
|
|
|
|
customs[i]:SetPoint("RIGHT")
|
|
|
|
|
if i == 1 then
|
|
|
|
|
customs[i]:SetPoint("TOPLEFT")
|
|
|
|
|
else
|
|
|
|
|
customs[i]:SetPoint("TOPLEFT", customs[i-1], "BOTTOMLEFT", 0, 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
list.scrollFrame:SetContentHeight(20, #CellDB["nicknames"]["list"]+1, -1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function LoadData()
|
|
|
|
|
customCB:SetChecked(CellDB["nicknames"]["custom"])
|
|
|
|
|
if CellDB["nicknames"]["custom"] then
|
|
|
|
|
list.mask:Hide()
|
|
|
|
|
else
|
|
|
|
|
list.mask:Show()
|
|
|
|
|
end
|
|
|
|
|
LoadList()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function F:ShowCustomNicknames()
|
|
|
|
|
if not customNicknamesFrame then
|
|
|
|
|
CreateCustomNicknamesFrame()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if customNicknamesFrame:IsShown() then
|
|
|
|
|
customNicknamesFrame:Hide()
|
|
|
|
|
Cell.frames.generalTab.customNicknamesBtn:SetFrameLevel(Cell.frames.generalTab:GetFrameLevel() + 1)
|
|
|
|
|
else
|
|
|
|
|
customNicknamesFrame:Show()
|
|
|
|
|
Cell.frames.generalTab.customNicknamesBtn:SetFrameLevel(Cell.frames.generalTab:GetFrameLevel() + 50)
|
|
|
|
|
Cell.frames.generalTab.mask:Show()
|
|
|
|
|
LoadData()
|
|
|
|
|
end
|
|
|
|
|
end
|