diff --git a/init/modules.xml b/init/modules.xml index 5e7cb1e5..0be5b56b 100644 --- a/init/modules.xml +++ b/init/modules.xml @@ -33,6 +33,8 @@ + + diff --git a/modules/thirdparty-tbc.lua b/modules/thirdparty-tbc.lua new file mode 100644 index 00000000..db3a66c5 --- /dev/null +++ b/modules/thirdparty-tbc.lua @@ -0,0 +1,5 @@ +pfUI:RegisterModule("thirdparty-tbc", "tbc", function () + -- abort when thirdparty core module is not loaded + if not pfUI.thirdparty then return end + local rawborder, default_border = GetBorderSize() +end) diff --git a/modules/thirdparty-vanilla.lua b/modules/thirdparty-vanilla.lua new file mode 100644 index 00000000..460ab22b --- /dev/null +++ b/modules/thirdparty-vanilla.lua @@ -0,0 +1,1264 @@ +pfUI:RegisterModule("thirdparty-vanilla", "vanilla", function() + -- abort when thirdparty core module is not loaded + if not pfUI.thirdparty then return end + local rawborder, default_border = GetBorderSize() + + HookAddonOrVariable("KLHThreatMeter", function() + local ktm_scale = 1 + local function GetKtmWidthDiff(view, match_size) + local default_width = 0 + for column, header in view.head do + if (header.vis()) then + default_width = default_width + header.width + else + default_width = default_width + 0.1 + end + end + return match_size / (default_width + 12) + end + + local function SetKtmWidth(view, diff_width) + for column, header in view.head do + header.width = round(round(header.width * diff_width) / ktm_scale) + end + end + + local function RefreshKtmWidth(width) + local width = width or pfUI.chat.right:GetWidth() + if (pfUI.thirdparty.meters.damage and pfUI.thirdparty.meters.threat) then + width = width / 2 + end + SetKtmWidth(KLHTM_Gui.raid, GetKtmWidthDiff(KLHTM_Gui.raid, width)) + SetKtmWidth(KLHTM_Gui.self, GetKtmWidthDiff(KLHTM_Gui.self, width)) + KLHTM_Redraw(true) + KLHTM_UpdateRaidFrame() + KLHTM_UpdateSelfFrame() + KLHTM_UpdateFrame() + end + + local docktable = { "ktm", "TODO", "KLHTM_Frame", + function() -- single + RefreshKtmWidth() + KLHTM_Frame:ClearAllPoints() + KLHTM_Frame:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 0, 0) + KLHTM_Frame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) + KLHTM_Frame.backdrop:SetPoint("BOTTOMRIGHT", KLHTM_Frame, "BOTTOMRIGHT", 0, -(KLHTM_Frame:GetBottom() - pfUI.chat.right:GetBottom())-default_border) + end, + function() -- dual + RefreshKtmWidth() + KLHTM_Frame:ClearAllPoints() + KLHTM_Frame:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 0, 0) + KLHTM_Frame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOM", -default_border, pfUI.panel.right:GetHeight()) + KLHTM_Frame.backdrop:SetPoint("BOTTOMRIGHT", KLHTM_Frame, "BOTTOMRIGHT", 0, -(KLHTM_Frame:GetBottom() - pfUI.chat.right:GetBottom())-default_border) + end, + function() -- show + KLHTM_SetVisible(true) + KLHTM_Frame:Show() + end, + function() -- hide + KLHTM_SetVisible(false) + KLHTM_Frame:Hide() + end, + function() -- once + if KLHTM_Gui.frame then + KLHTM_SetGuiScale(ktm_scale) + end + end + } + + pfUI.thirdparty.meters:RegisterMeter("threat", docktable) + + if C.thirdparty.ktm.skin == "1" then + -- remove titlebar + if KLHTM_Gui then + if KLHTM_Gui.title then + KLHTM_Gui.title.back:Hide() + end + if KLHTM_Gui.raid then + -- skin rows (raid) + for i in pairs(KLHTM_Gui.raid.rows) do + KLHTM_Gui.raid.rows[i].bar:SetTexture(pfUI.media["img:bar"]) + KLHTM_Gui.raid.rows[i].bar:SetAlpha(.75) + + if _G["KLHTM_RaidFrameRow" .. i .. "NameText"] then + _G["KLHTM_RaidFrameRow" .. i .. "NameText"]:SetFont(pfUI.font_default, 13, "OUTLINE") + _G["KLHTM_RaidFrameRow" .. i .. "ThreatText"]:SetFont(pfUI.font_default, 13, "OUTLINE") + _G["KLHTM_RaidFrameRow" .. i .. "PercentThreatText"]:SetFont(pfUI.font_default, 13, "OUTLINE") + end + end + end + if KLHTM_Gui.self then + -- skin rows (self) + for i in pairs(KLHTM_Gui.self.rows) do + KLHTM_Gui.self.rows[i].bar:SetTexture(pfUI.media["img:bar"]) + KLHTM_Gui.self.rows[i].bar:SetAlpha(.75) + end + end + end + + CreateBackdrop(KLHTM_Frame, nil, nil, (C.thirdparty.chatbg == "1" and .8)) + CreateBackdropShadow(KLHTM_Frame) + + if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then + local r, g, b, a = strsplit(",", C.chat.global.background) + KLHTM_Frame.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + + local r, g, b, a = strsplit(",", C.chat.global.border) + KLHTM_Frame.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + end + + -- theme buttons + local buttons = { "KLHTM_TitleFrameClose", "KLHTM_TitleFrameMinimise", + "KLHTM_TitleFrameMaximise", "KLHTM_TitleFrameOptions", "KLHTM_TitleFramePin", + "KLHTM_TitleFrameUnpin", "KLHTM_TitleFrameSelfView", "KLHTM_TitleFrameRaidView", + "KLHTM_TitleFrameMasterTarget", "KLHTM_SelfFrameBottomReset" } + + for i, button in pairs(buttons) do + local b = _G[button] + if not b then return end + SkinButton(b) + b:SetScale(.8) + + -- remove red background on some buttons + for i,v in ipairs({b:GetRegions()}) do + if v.SetTexture and i == 1 then + v:SetTexture(0,0,0,0) + end + end + + local p,rt,rp,xo,yo = b:GetPoint() + if not b.pfSet and i > 1 then + b:SetPoint(p,rt,rp,xo - 3,yo) + b.pfSet = true + end + end + + -- name buttons + KLHTM_TitleFrameClose:SetText("x") + KLHTM_TitleFrameMinimise:SetText("_") + KLHTM_TitleFrameMaximise:SetText("_") + KLHTM_TitleFrameOptions:SetText("O") + KLHTM_TitleFramePin:SetText("P") + KLHTM_TitleFrameUnpin:SetText("U") + KLHTM_TitleFrameSelfView:SetText("S") + KLHTM_TitleFrameRaidView:SetText("R") + KLHTM_TitleFrameMasterTarget:SetText("T") + + KLHTM_RaidFrameHeaderNameText:SetFont(pfUI.font_default, 12, "OUTLINE") + KLHTM_RaidFrameHeaderThreatText:SetFont(pfUI.font_default, 12, "OUTLINE") + KLHTM_RaidFrameHeaderPercentThreatText:SetFont(pfUI.font_default, 12, "OUTLINE") + KLHTM_RaidFrameBottomThreatDefecitText:SetFont(pfUI.font_default, 12, "OUTLINE") + KLHTM_RaidFrameBottomMasterTargetText:SetFont(pfUI.font_default, 12, "OUTLINE") + KLHTM_RaidFrameHeaderName:SetHeight(12) + + -- remove seperators + if KLHTM_RaidFrameLine then KLHTM_RaidFrameLine:Hide() end + if KLHTM_RaidFrameBottomLine then KLHTM_RaidFrameBottomLine:Hide() end + if KLHTM_SelfFrameLine then KLHTM_SelfFrameLine:Hide() end + if KLHTM_SelfFrameBottomLine then KLHTM_SelfFrameBottomLine:Hide() end + end + end) + + HookAddonOrVariable("DPSMate", function() + local docktable = { "dpsmate", "DPSMate", "DPSMate_DPSMate", + function() -- single + DPSMate_DPSMate:ClearAllPoints() + DPSMate_DPSMate:SetAllPoints(pfUI.chat.right) + DPSMate_DPSMate:SetWidth(pfUI.chat.right:GetWidth()) + DPSMate_DPSMate_ScrollFrame:ClearAllPoints() + DPSMate_DPSMate_ScrollFrame:SetWidth(pfUI.chat.right:GetWidth()) + DPSMate_DPSMate_ScrollFrame:SetPoint("TOPLEFT", DPSMate_DPSMate_Head, "BOTTOMLEFT", 0, 0) + DPSMate_DPSMate_ScrollFrame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) + DPSMate_DPSMate_ScrollFrame_Child:SetWidth(pfUI.chat.right:GetWidth()) + DPSMate_DPSMate_Resize:Hide() + end, + function() -- dual + DPSMate_DPSMate:ClearAllPoints() + DPSMate_DPSMate:SetPoint("TOPLEFT", pfUI.chat.right, "TOP", 0, 0) + DPSMate_DPSMate:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, 0) + DPSMate_DPSMate:SetWidth(pfUI.chat.right:GetWidth() / 2) + DPSMate_DPSMate_ScrollFrame:ClearAllPoints() + DPSMate_DPSMate_ScrollFrame:SetWidth(pfUI.chat.right:GetWidth() / 2) + DPSMate_DPSMate_ScrollFrame:SetPoint("TOPLEFT", DPSMate_DPSMate_Head, "BOTTOMLEFT", 0, 0) + DPSMate_DPSMate_ScrollFrame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) + DPSMate_DPSMate_ScrollFrame_Child:SetWidth(pfUI.chat.right:GetWidth() / 2) + DPSMate_DPSMate_Resize:Hide() + end, + function() -- show + DPSMate_DPSMate:Show() + end, + function() -- hide + DPSMate_DPSMate:Hide() + end + } + + pfUI.thirdparty.meters:RegisterMeter("damage", docktable) + + if C.thirdparty.dpsmate.skin == "1" then + if DPSMateSettings then + -- set DPSMate appearance to match pfUI + for w in pairs(DPSMateSettings["windows"]) do + DPSMateSettings["windows"][w]["titlebarheight"] = 20 + DPSMateSettings["windows"][w]["titlebarfontsize"] = 12 + DPSMateSettings["windows"][w]["titlebarfont"] = "Accidental Presidency" + DPSMateSettings["windows"][w]["titlebaropacity"] = 0 + + DPSMateSettings["windows"][w]["titlebarfontcolor"][1] = 1 + DPSMateSettings["windows"][w]["titlebarfontcolor"][2] = 1 + DPSMateSettings["windows"][w]["titlebarfontcolor"][3] = 1 + + DPSMateSettings["windows"][w]["barheight"] = 11 + DPSMateSettings["windows"][w]["barfontsize"] = 13 + DPSMateSettings["windows"][w]["bartexture"] = "normTex" + DPSMateSettings["windows"][w]["barfont"] = "Accidental Presidency" + + DPSMateSettings["windows"][w]["opacity"] = 1 + DPSMateSettings["windows"][w]["contentbgtexture"] = "Solid Background" + DPSMateSettings["windows"][w]["bgopacity"] = 0 + DPSMateSettings["windows"][w]["borderopacity"] = 0 + end + + if DPSMate.UpdatePointer then + DPSMate:UpdatePointer() + end + DPSMate:InitializeFrames() + + for k, val in pairs(DPSMateSettings["windows"]) do + local frame = _G["DPSMate_"..val["name"]] + CreateBackdrop(frame, nil, nil, (C.thirdparty.chatbg == "1" and .8)) + CreateBackdropShadow(frame) + + if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then + local r, g, b, a = strsplit(",", C.chat.global.background) + frame.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + + local r, g, b, a = strsplit(",", C.chat.global.border) + frame.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + end + end + end + end + end) + + HookAddonOrVariable("SW_Stats", function() + local docktable = { "swstats", "TODO", "SW_BarFrame1", + function() -- single + SW_BarFrame1:SetWidth(pfUI.chat.right:GetWidth()) + SW_BarFrame1:ClearAllPoints() + SW_BarFrame1:SetAllPoints(pfUI.chat.right) + SW_BarFrame1_Resizer:Hide() + SW_BarsLayout("SW_BarFrame1", true) + end, + function() -- dual + SW_BarFrame1:SetWidth(pfUI.chat.right:GetWidth() / 2) + SW_BarFrame1:ClearAllPoints() + SW_BarFrame1:SetPoint("TOPLEFT", pfUI.chat.right, "TOP", 0, 0) + SW_BarFrame1:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0 ,0) + SW_BarFrame1_Resizer:Hide() + SW_BarsLayout("SW_BarFrame1", true) + end, + function() -- show + SW_BarFrame1:Show() + SW_OptKey(1) + end, + function() -- hide + SW_BarFrame1:Hide() + end, + function() -- once + SW_Settings["SHOWMAIN"] = nil + SW_BarFrame1:Hide() + + SW_OptChk_Running:ClearAllPoints() + SW_OptChk_Running:SetParent(SW_BarFrame1_Title) + SW_OptChk_Running:SetPoint("RIGHT", SW_BarFrame1_Title_TimeLine, "LEFT", -2, 0) + -- hide bottom panels + SW_BarFrame1_Selector:Hide() + + -- let user select mode by clicking the title + HookScript(SW_BarFrame1_Title, "OnMouseUp", function() + local page = SW_Settings and SW_Settings.BarFrames and SW_Settings.BarFrames.SW_BarFrame1 and SW_Settings.BarFrames.SW_BarFrame1.Selected + if page then + local target = (arg1 == "LeftButton") and (page + 1) or (arg1 == "RightButton") and (page - 1) + SW_OptKey((target > SW_OPT_COUNT) and 1 or (target < 1) and SW_OPT_COUNT or target) + end + end) + end + } + + pfUI.thirdparty.meters:RegisterMeter("damage", docktable) + + if C.thirdparty.swstats.skin == "1" then + SW_Settings["OPT_ShowMainWinDPS"] = 1 + SW_Settings["Colors"] = SW_Settings["Colors"] or {} + SW_Settings["Colors"]["TitleBarsFont"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } + SW_Settings["Colors"]["TitleBars"] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, } + SW_Settings["Colors"]["Backdrops"] = { [1] = .3, [2] = 1, [3] = .8, [4] = 1, } + + SW_Settings["InfoSettings"] = SW_Settings["InfoSettings"] or {} + SW_Settings["InfoSettings"][1] = SW_Settings["InfoSettings"][1] or {} + SW_Settings["InfoSettings"][1]["SF"] = "SW_Filter_EverGroup" + SW_Settings["InfoSettings"][1]["ShowPercent"] = 1 + SW_Settings["InfoSettings"][1]["ShowRank"] = 1 + SW_Settings["InfoSettings"][1]["ShowNumber"] = 1 + SW_Settings["InfoSettings"][1]["BT"] = 13 + SW_Settings["InfoSettings"][1]["BH"] = 10 + SW_Settings["InfoSettings"][1]["BFS"] = 11 + SW_Settings["InfoSettings"][1]["BC"] = { [1] = .5, [2] = .5, [3] = .5, [4] = .5, } + SW_Settings["InfoSettings"][1]["BFC"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } + SW_Settings["InfoSettings"][1]["OC"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } + SW_Settings["InfoSettings"][1]["OTF"] = ( SW_Settings["InfoSettings"][1]["OTF"] == "1" and "SWStats" ) or SW_Settings["InfoSettings"][1]["OTF"] + SW_Settings["InfoSettings"][1]["UCC"] = 1 + + local SkinSW_RoundButton = function(n, s) + local s = s or 14 + local btn, normal, highlight = _G[n], _G[string.format("%s_Normal",n)], _G[string.format("%s_Highlight",n)] + StripTextures(normal) + StripTextures(highlight) + CreateBackdrop(btn) + btn:SetHeight(s) + btn:SetWidth(s) + SetHighlight(btn) + end + + SW_BarFrame1_Title:SetPoint("TOPLEFT", 3, 0) + SW_BarFrame1_Title_Sync:SetScale(.84) + SW_BarFrame1_Title_Report:SetScale(.84) + SW_BarFrame1_Title_Settings:SetScale(.84) + SW_BarFrame1_Title_Close:SetScale(.84) + SW_BarFrame1_Title_Console:SetScale(.84) + SW_BarFrame1_Title_TimeLine:SetScale(.84) + + -- bar padding + SW_BarFrame1.swoBarY = -22 + _G.SW_BARSEPY = 1 + + CreateBackdrop(SW_BarFrame1, nil, nil, (C.thirdparty.chatbg == "1" and .8)) + CreateBackdropShadow(SW_BarFrame1) + + if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then + local r, g, b, a = strsplit(",", C.chat.global.background) + SW_BarFrame1.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + + local r, g, b, a = strsplit(",", C.chat.global.border) + SW_BarFrame1.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) + end + + SkinCheckbox(SW_OptChk_Running, 20) + for i=1, SW_OPT_COUNT do + SkinSW_RoundButton(string.format("SW_BarFrame1_Selector_Opt%d",i)) + if i == 1 then + _G[string.format("SW_BarFrame1_Selector_Opt%d",i)]:SetPoint("TOPLEFT", SW_OptChk_Running, "TOPRIGHT", 3, -3) + end + end + SW_BarFrame1_Selector:SetPoint("TOPLEFT", SW_BarFrame1.backdrop, "BOTTOMLEFT", 10, 0) + + -- mode settings + CreateBackdrop(SW_BarSettingsFrameV2, nil, nil, .8) + CreateBackdrop(SW_BarSettingsFrameV2_Title, 0) + CreateBackdrop(SW_BarSettingsFrameV2_Tab1, 0) + SW_BarSettingsFrameV2_Tab1:SetHeight(24) + SW_BarSettingsFrameV2_Tab1_Text:SetParent(SW_BarSettingsFrameV2_Tab1.backdrop) + CreateBackdrop(SW_BarSettingsFrameV2_Tab2, 0) + SW_BarSettingsFrameV2_Tab2:SetHeight(24) + SW_BarSettingsFrameV2_Tab2_Text:SetParent(SW_BarSettingsFrameV2_Tab2.backdrop) + CreateBackdrop(SW_BarSettingsFrameV2_Tab3, 0) + SW_BarSettingsFrameV2_Tab3:SetHeight(24) + SW_BarSettingsFrameV2_Tab3_Text:SetParent(SW_BarSettingsFrameV2_Tab3.backdrop) + SkinCheckbox(SW_OptChk_Rank, 18) + SkinCheckbox(SW_OptChk_Num, 18) + SkinCheckbox(SW_OptChk_Percent, 18) + SkinCheckbox(SW_Filter_None, 18) + SkinCheckbox(SW_Filter_PC, 18) + SkinCheckbox(SW_Filter_NPC, 18) + SkinCheckbox(SW_Filter_Group, 18) + SkinCheckbox(SW_Filter_EverGroup, 18) + SkinCheckbox(SW_HealOpt_Eff, 18) + SkinCheckbox(SW_HealOpt_OH, 18) + SkinCheckbox(SW_HealOpt_IF, 18) + SkinDropDown(SW_InfoTypeDropDown) + SkinDropDown(SW_ClassFilterDropDown) + SkinDropDown(SW_SchoolDropDown) + if SW_SchoolDropDown:GetWidth() < 100 then + UIDropDownMenu_SetWidth(100, SW_SchoolDropDown) -- SW_Stats is missing this in init + end + SkinButton(SW_SetInfoVarTxtFrame_Button) + SkinButton(SW_SetInfoVarFromTarget) + CreateBackdrop(SW_CS_BarC_Button) + SetAllPointsOffset(SW_CS_BarC_Button.backdrop,SW_CS_BarC_Button,2) + SetHighlight(SW_CS_BarC_Button) + CreateBackdrop(SW_CS_FontC_Button) + SetAllPointsOffset(SW_CS_FontC_Button.backdrop,SW_CS_FontC_Button,2) + SetHighlight(SW_CS_FontC_Button) + CreateBackdrop(SW_CS_OptC_Button) + SetAllPointsOffset(SW_CS_OptC_Button.backdrop,SW_CS_OptC_Button,2) + SetHighlight(SW_CS_OptC_Button) + SkinSlider(SW_BarHeightSlider) + SW_BarHeightSliderLow:ClearAllPoints() + SW_BarHeightSliderLow:SetPoint("TOPRIGHT", SW_BarHeightSlider, "TOPLEFT", -2, -2) + SW_BarHeightSliderHigh:ClearAllPoints() + SW_BarHeightSliderHigh:SetPoint("BOTTOMRIGHT", SW_BarHeightSlider, "BOTTOMLEFT", -2, 2) + SkinSlider(SW_ColCountSlider) + SkinSlider(SW_TextureSlider) + SkinSlider(SW_FontSizeSlider) + SkinButton(SW_SetFrameTxtFrame_Button) + SkinButton(SW_SetOptTxtFrame_Button) + SkinCheckbox(SW_ColorsOptUseClass) + SW_BarSettings_Visuals:SetPoint("TOPLEFT", 5, -50) + SW_BarSettings_Visuals:SetPoint("BOTTOMRIGHT", 2, 10) + SkinCheckbox(SW_PF_Inactive,18) + SkinCheckbox(SW_PF_Active,18) + SkinCheckbox(SW_PF_Current,18) + SkinCheckbox(SW_PF_VPP,18) + SkinCheckbox(SW_PF_VPR,18) + SkinCheckbox(SW_PF_MM,18) + SkinCheckbox(SW_PF_MR,18) + SkinCheckbox(SW_PF_MB,18) + SkinCheckbox(SW_PF_Ignore,18) + + -- general settings + CreateBackdrop(SW_GeneralSettings, nil, nil, .8) + CreateBackdrop(SW_GeneralSettings_Title, 0) + SkinCheckbox(SW_Chk_ShowTLB,18) + SkinCheckbox(SW_Chk_ShowSyncB,18) + SkinCheckbox(SW_Chk_ShowConsoleB,18) + SkinCheckbox(SW_Chk_ShowDPS,18) + CreateBackdrop(SW_CS_Damage_Button) + SetAllPointsOffset(SW_CS_Damage_Button.backdrop, SW_CS_Damage_Button, 2) + SetHighlight(SW_CS_Damage_Button) + CreateBackdrop(SW_CS_Heal_Button) + SetAllPointsOffset(SW_CS_Heal_Button.backdrop, SW_CS_Heal_Button, 2) + SetHighlight(SW_CS_Heal_Button) + CreateBackdrop(SW_CS_TitleBar_Button) + SetAllPointsOffset(SW_CS_TitleBar_Button.backdrop, SW_CS_TitleBar_Button, 2) + SetHighlight(SW_CS_TitleBar_Button) + CreateBackdrop(SW_CS_TitleFont_Button) + SetAllPointsOffset(SW_CS_TitleFont_Button.backdrop, SW_CS_TitleFont_Button, 2) + SetHighlight(SW_CS_TitleFont_Button) + CreateBackdrop(SW_CS_Backdrops_Button) + SetAllPointsOffset(SW_CS_Backdrops_Button.backdrop, SW_CS_Backdrops_Button, 2) + SetHighlight(SW_CS_Backdrops_Button) + CreateBackdrop(SW_CS_MainWinBack_Button) + SetAllPointsOffset(SW_CS_MainWinBack_Button.backdrop, SW_CS_MainWinBack_Button, 2) + SetHighlight(SW_CS_MainWinBack_Button) + CreateBackdrop(SW_CS_ClassCAlpha_Button) + SetAllPointsOffset(SW_CS_ClassCAlpha_Button.backdrop, SW_CS_ClassCAlpha_Button, 2) + SetHighlight(SW_CS_ClassCAlpha_Button) + SkinSlider(SW_OptCountSlider) + SkinSlider(SW_GeneralSettingsIconSlider) + SkinSlider(SW_GeneralSettingsIconRadiusSlider) + + -- announce + CreateBackdrop(SW_BarReportFrame, nil, nil, .8) + CreateBackdrop(SW_BarReportFrame_Title, 0) + SkinCheckbox(SW_RepTo_Say,18) + SkinCheckbox(SW_RepTo_Group,18) + SkinCheckbox(SW_RepTo_Raid,18) + SkinCheckbox(SW_RepTo_Guild,18) + SkinCheckbox(SW_RepTo_Channel,18) + SkinCheckbox(SW_RepTo_Whisper,18) + SkinCheckbox(SW_RepTo_Officer,18) + SkinCheckbox(SW_RepTo_Clipboard,18) + SkinCheckbox(SW_Chk_RepMulti,18) + SkinSlider(SW_BarReportFrameRepAmountSlider) + SkinButton(SW_BarReportFrame_SendReport) + SkinButton(SW_BarReportFrame_VarText_SetTextFromTarget) + StripTextures(SW_BarReportFrame_VarText_EditBox, "BACKGROUND") + CreateBackdrop(SW_BarReportFrame_VarText_EditBox) + + -- copy + CreateBackdrop(SW_TextWindow, nil, nil, .75) + CreateBackdrop(SW_TextWindow_Title, 0) + SkinSlider(SW_TextWindowExportSlider) + StripTextures(SW_TextWindow_EditBox, "BACKGROUND") + CreateBackdrop(SW_TextWindow_EditBox) + + -- sync + CreateBackdrop(SW_BarSyncFrame, nil, nil, .8) + CreateBackdrop(SW_BarSyncFrame_Title, 0) + SkinCheckbox(SW_AutoVoteYes,18) + SkinCheckbox(SW_AutoVoteNo,18) + SkinScrollbar(SW_SyncListScrollBar) + + -- timeline + CreateBackdrop(SW_TimeLine, nil, nil, .8) + CreateBackdrop(SW_TimeLine_Title, 0) + SkinCheckbox(SW_Chk_TL_SafeMode,18) + SkinCheckbox(SW_Chk_TL_SingleSelect,18) + SkinCheckbox(SW_Chk_TL_AutoZone,18) + SkinCheckbox(SW_Chk_TL_AutoDelete,18) + SkinButton(SW_TL_Nuke) + SkinButton(SW_TL_ReloadUI) + SkinButton(SW_TL_Select) + SkinButton(SW_TL_Merge) + for i=1,10 do + SkinSW_RoundButton(string.format("SW_TimeLine_Item%d_Delete",i),12) + SkinSW_RoundButton(string.format("SW_TimeLine_Item%d_Rename",i),12) + end + SkinScrollbar(SW_TL_SelectorScrollBar) + + -- console + CreateBackdrop(SW_FrameConsole, nil, nil, .75) + CreateBackdrop(SW_FrameConsole_Title, 0) + SW_FrameConsole_Title:SetHeight(24) + SkinArrowButton(SW_FrameConsole_Text1_MsgUp, "up", 13) + SkinArrowButton(SW_FrameConsole_Text1_MsgDown, "down", 13) + SkinArrowButton(SW_FrameConsole_Text1_MsgBottom, "down", 13) + SW_FrameConsole_Text1_MsgUp:SetPoint("BOTTOMRIGHT", -5, 45) + SW_FrameConsole_Text1_MsgDown:SetPoint("BOTTOMRIGHT", -5, 30) + SW_FrameConsole_Text1_MsgBottom:SetPoint("BOTTOMRIGHT", -5, 12) + CreateBackdrop(SW_FrameConsole_Tab1, 0) + SW_FrameConsole_Tab1:SetHeight(24) + SW_FrameConsole_Tab1_Text:SetParent(SW_FrameConsole_Tab1.backdrop) + CreateBackdrop(SW_FrameConsole_Tab2, 0) + SW_FrameConsole_Tab2:SetHeight(24) + SW_FrameConsole_Tab2_Text:SetParent(SW_FrameConsole_Tab2.backdrop) + SkinCheckbox(SW_Chk_ShowEvent,18) + SkinCheckbox(SW_Chk_ShowOrigStr,18) + SkinCheckbox(SW_Chk_ShowRegEx,18) + SkinCheckbox(SW_Chk_ShowMatch,18) + SkinCheckbox(SW_Chk_ShowSyncInfo,18) + SkinArrowButton(SW_FrameConsole_Text2_MsgUp,"up",13) + SkinArrowButton(SW_FrameConsole_Text2_MsgDown,"down",13) + SkinArrowButton(SW_FrameConsole_Text2_MsgBottom,"down",13) + SW_FrameConsole_Text2_MsgUp:SetPoint("BOTTOMRIGHT", -5, 45) + SW_FrameConsole_Text2_MsgDown:SetPoint("BOTTOMRIGHT", -5, 30) + SW_FrameConsole_Text2_MsgBottom:SetPoint("BOTTOMRIGHT", -5, 12) + end + end) + + HookAddonOrVariable("WIM", function() + if C.thirdparty.wim.enable == "0" then return end + + _G.WIM_isLinkURL = function() return false end + _G.WIM_ConvertURLtoLinks = function(text) -- use pfUI link handler (it is more correct) + return pfUI.chat:HandleLink(text) + end + + -- replace wim class colors with pfUI ones + hooksecurefunc("WIM_InitClassProps", function() + for class in pairs(RAID_CLASS_COLORS) do + local wimclass = _G[format("WIM_LOCALIZED_%s",class)] + local colorstr = gsub(RAID_CLASS_COLORS[class].colorStr, "^ff", "") + _G.WIM_ClassColors[wimclass] = colorstr + end + end, true) + + -- convo menu + CreateBackdrop(WIM_Icon_ToolTip, 0, nil, tonumber(C.tooltip.alpha)) + CreateBackdrop(WIM_ConversationMenu, 0, nil, .75) + for i=1, _G.WIM_MaxMenuCount do + local btn, btnClose = _G["WIM_ConversationMenuTellButton"..i], _G["WIM_ConversationMenuTellButton"..i.."Close"] + SkinCloseButton(btnClose, btn, -4, -1) + btnClose:SetWidth(13) + btnClose:SetHeight(13) + end + hooksecurefunc("WIM_Icon_DropDown_Update", function() + for i=1,_G.WIM_MaxMenuCount do + local btn = _G["WIM_ConversationMenuTellButton"..i] + if i==1 and btn:IsEnabled() == 0 then return end + if not btn:IsShown() then return end + local btn_txt = btn:GetText() + local user = btn.theUser + local userclr = _G.WIM_PlayerCache[user] and _G.WIM_PlayerCache[user].class and _G.WIM_UserWithClassColor(user) + if userclr and user ~= userclr then + btn_txt = gsub(btn_txt, user, format("|r%s",userclr)) + btn:SetText(btn_txt) + end + end + end, true) + + do -- history frame + CreateBackdrop(WIM_HistoryFrame, nil, nil, .8) + CreateBackdropShadow(WIM_HistoryFrame) + WIM_HistoryFrame.backdrop:SetPoint("TOPLEFT", 10, -10) + WIM_HistoryFrame.backdrop:SetPoint("BOTTOMRIGHT", -10, 10) + WIM_HistoryFrame:SetHitRectInsets(10,10,10,10) + StripTextures(WIM_HistoryFrameTitle) + + SkinCloseButton(WIM_HistoryFrameTitleExitButton, WIM_HistoryFrame.backdrop, -6, -6) + + SkinArrowButton(WIM_HistoryFrameMessageListScrollUp, 'up', 18) + WIM_HistoryFrameMessageListScrollUp:SetPoint("TOPLEFT", WIM_HistoryFrameMessageListScrollingMessageFrame, "TOPRIGHT", 10, -6) + SkinArrowButton(WIM_HistoryFrameMessageListScrollDown, 'down', 18) + WIM_HistoryFrameMessageListScrollDown:SetPoint("BOTTOMLEFT", WIM_HistoryFrameMessageListScrollingMessageFrame, "BOTTOMRIGHT", 10, 0) + end + do -- options frame + CreateBackdrop(WIM_Options, nil, nil, .8) + CreateBackdropShadow(WIM_Options) + WIM_Options.backdrop:SetPoint("TOPLEFT", 12, -10) + WIM_Options.backdrop:SetPoint("BOTTOMRIGHT", -12, 0) + WIM_Options:SetHitRectInsets(12,12,10,0) + + WIM_OptionsTitleBorder:SetTexture(nil) + WIM_OptionsTitleString:SetPoint("TOP", WIM_Options.backdrop, "TOP", 0, -4) + + SkinCloseButton(WIM_OptionsExitButton, WIM_Options.backdrop, -6, -6) + WIM_OptionsHelpButton:ClearAllPoints() + WIM_OptionsHelpButton:SetPoint("RIGHT", WIM_OptionsExitButton, "LEFT", -10, 0) + WIM_OptionsHelpButton:SetHighlightTexture(nil) + + SkinCheckbox(WIM_OptionsEnableWIM) + + do -- display + StripTextures(WIM_OptionsDisplayCaption) + SkinCheckbox(WIM_OptionsDisplayShowShortcutBar) + SkinCheckbox(WIM_OptionsDisplayShowTimeStamps) + SkinCheckbox(WIM_OptionsDisplayShowCharacterInfo) + SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoClassIcon) + SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoClassColor) + SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoDetails) + if WIM_OptionsDisplayShowCharacterInfoZone then SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoZone) end + + SkinSlider(WIM_OptionsDisplayFontSize) + SkinSlider(WIM_OptionsDisplayWindowSize) + SkinSlider(WIM_OptionsDisplayWindowAlpha) + end + do -- minimap + StripTextures(WIM_OptionsMiniMapCaption) + SkinCheckbox(WIM_OptionsMiniMapEnabled) + SkinCheckbox(WIM_OptionsMiniMapFreeMoving) + + SkinSlider(WIM_OptionsMiniMapIconPosition) + end + -- alignment for WIM_OptionsTabbedFrame: + WIM_OptionsOptionTab1:SetPoint("TOPLEFT", WIM_OptionsMiniMap, "BOTTOMLEFT", 10, -4) -- move the upper bound WIM_OptionsTabbedFrame + WIM_OptionsDisplay:SetHeight(540) -- move the lower bound WIM_OptionsTabbedFrame + WIM_Options_GeneralScroll:SetPoint("BOTTOMRIGHT", WIM_OptionsTabbedFrame, "BOTTOMRIGHT", -30, 10) + ------------------------------------------------- + + -- wrap SkinCheckbox to fix issues with scrollframe breaking layers + local SkinScrollchildCheckbox = function(f, s) + SkinCheckbox(f, s) + f.backdrop:SetParent(f:GetParent()) + f:SetParent(f.backdrop) + end + do -- general tab + SkinTab(WIM_OptionsOptionTab1) + SkinScrollbar(WIM_Options_GeneralScrollScrollBar) + + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralAutoFocus) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralKeepFocus) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralKeepFocusRested) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralShowToolTips) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopOnSend) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopNew) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopUpdate) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopCombat) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralSupress) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPlaySoundWisp) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralSortOrderAlpha) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralShowAFK) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralUseEscape) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralInterceptSlashWisp) + SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralBlockLowLevel) + end + do -- windows tab + SkinTab(WIM_OptionsOptionTab2) + + SkinCheckbox(WIM_OptionsTabbedFrameWindowWindowCascade) + SkinButton(WIM_OptionsTabbedFrameWindowWindowAnchor) + SkinDropDown(WIM_OptionsTabbedFrameWindowCascadeDirection) + SkinSlider(WIM_OptionsTabbedFrameWindowWindowWidth) + SkinSlider(WIM_OptionsTabbedFrameWindowWindowHeight) + WIM_OptionsTabbedFrameWindowWindowHeight:SetPoint("TOPLEFT", WIM_OptionsTabbedFrameWindowWindowWidth, "BOTTOMLEFT", 0, -40) + WIM_OptionsTabbedFrameWindowWindowHeight:SetMinMaxValues(240, 600) -- fix min value. WIM.lua:643. + end + do -- filters tab + SkinTab(WIM_OptionsOptionTab3) + + SkinCheckbox(WIM_OptionsTabbedFrameFilterAliasShowAsComment) + for _,v in pairs({"Alias", "Filtering"}) do + SkinCheckbox(_G["WIM_OptionsTabbedFrameFilter"..v.."Enabled"]) + SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."ColumnHeader1"]) + SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."ColumnHeader2"]) + SkinScrollbar(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelScrollBarScrollBar"]) + SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelAdd"]) + SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelRemove"]) + SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelEdit"]) + end + + CreateBackdrop(WIM_Options_AliasWindow, nil, nil, .8) + WIM_Options_AliasWindowTitleBorder:SetTexture(nil) + CreateBackdrop(WIM_Options_AliasWindowPanel1, nil, nil) + WIM_Options_AliasWindowPanel1.backdrop:SetPoint("TOPLEFT", 0, -4) + WIM_Options_AliasWindowPanel1.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) + CreateBackdrop(WIM_Options_AliasWindowPanel2, nil, nil) + WIM_Options_AliasWindowPanel2.backdrop:SetPoint("TOPLEFT", 0, -4) + WIM_Options_AliasWindowPanel2.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) + SkinButton(WIM_Options_AliasWindowOK) + SkinButton(WIM_Options_AliasWindowCancel) + + CreateBackdrop(WIM_Options_FilterWindow, nil, nil, .8) + WIM_Options_FilterWindowTitleBorder:SetTexture(nil) + CreateBackdrop(WIM_Options_FilterWindowPanel1, nil, nil) + WIM_Options_FilterWindowPanel1.backdrop:SetPoint("TOPLEFT", 0, -4) + WIM_Options_FilterWindowPanel1.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) + SkinCheckbox(WIM_Options_FilterWindow_ActionIgnore) + SkinCheckbox(WIM_Options_FilterWindow_ActionBlock) + SkinButton(WIM_Options_FilterWindowOK) + SkinButton(WIM_Options_FilterWindowCancel) + end + do -- history tab + SkinTab(WIM_OptionsOptionTab4) + + SkinCheckbox(WIM_OptionsTabbedFrameHistoryEnabled) + SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordEveryone) + SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordFriends) + SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordGuild) + SkinCheckbox(WIM_OptionsTabbedFrameHistoryShowInMessage) + SkinCheckbox(WIM_OptionsTabbedFrameHistorySetMaxToStore) + SkinCheckbox(WIM_OptionsTabbedFrameHistorySetAutoDelete) + SkinDropDown(WIM_OptionsTabbedFrameHistoryMessageCount) + SkinDropDown(WIM_OptionsTabbedFrameHistoryMaxCount) + SkinDropDown(WIM_OptionsTabbedFrameHistoryAutoDeleteTime) + SkinButton(WIM_OptionsTabbedFrameHistoryColumnHeader1) + SkinButton(WIM_OptionsTabbedFrameHistoryColumnHeader2) + SkinScrollbar(WIM_OptionsTabbedFrameHistoryPanelScrollBarScrollBar) + SkinButton(WIM_OptionsTabbedFrameHistoryPanelDeleteUser) + SkinButton(WIM_OptionsTabbedFrameHistoryPanelViewHistory) + end + end + do -- help frame + CreateBackdrop(WIM_Help, nil, nil, .8) + WIM_HelpTitleBorder:SetTexture(nil) + SkinCloseButton(WIM_HelpExitButton, WIM_Help.backdrop, -6, -6) + SkinTab(WIM_HelpTab1) + SkinTab(WIM_HelpTab2) + SkinTab(WIM_HelpTab3) + SkinTab(WIM_HelpTabCredits) + SkinScrollbar(WIM_HelpScrollFrameScrollBar) + end + + hooksecurefunc("WIM_WindowOnShow", function() + if this.backdrop then return end -- already skinned + + local windowname = this:GetName() + CreateBackdrop(this, nil, nil, .8) + CreateBackdropShadow(this) + local from = _G[windowname.."From"] + from:ClearAllPoints() + from:SetPoint("TOP", 0, -10) + local exit = _G[windowname.."ExitButton"] + SkinCloseButton(exit, this.backdrop, -6, -6) + local history = _G[windowname.."HistoryButton"] + history:ClearAllPoints() + history:SetPoint("TOPRIGHT", exit, "TOPLEFT", -2, 2) + + this.avatar = CreateFrame("Frame", nil, this) + this.avatar:SetAllPoints(this) + + local classicon = _G[windowname .. "ClassIcon"] + classicon:SetTexCoord(.3, .7, .3, .7) + classicon:SetParent(this.avatar) + classicon:ClearAllPoints() + classicon:SetPoint("TOPLEFT", 10 , -10) + classicon:SetWidth(26) + classicon:SetHeight(26) + + local msgframe = _G[windowname .. "ScrollingMessageFrame"] + msgframe:SetPoint("TOPLEFT", this, "TOPLEFT", 10, -45) + msgframe:SetPoint("BOTTOMRIGHT", this, "BOTTOMRIGHT", -32, 32) + msgframe:SetFont(pfUI.font_default, C.global.font_size) + + local msgbox = _G[windowname .. "MsgBox"] + CreateBackdrop(msgbox) + msgbox:ClearAllPoints() + msgbox:SetPoint("TOPLEFT", msgframe, "BOTTOMLEFT", 0, -5) + msgbox:SetPoint("TOPRIGHT", msgframe, "BOTTOMRIGHT", 0, -5) + msgbox:SetTextInsets(5, 5, 5, 5) + msgbox:SetHeight(20) + + for i = 1, 5 do + local btn = _G[windowname .. "ShortcutFrameButton"..i] + local icon = _G[windowname .. "ShortcutFrameButton"..i.."Icon"] + local prev_btn = _G[windowname .. "ShortcutFrameButton"..(i-1)] + StripTextures(btn, nil, "ARTWORK") + icon:SetDrawLayer("ARTWORK") + SkinButton(btn, nil, nil, nil, icon) + btn:ClearAllPoints() + if not prev_btn then + btn:SetPoint("TOP", exit, "BOTTOM", 0, -20) + else + btn:SetPoint("TOP", prev_btn, "BOTTOM", 0, -4) + end + end + local scrollup, scrolldown = _G[windowname .. "ScrollUp"], _G[windowname .. "ScrollDown"] + SkinArrowButton(scrollup, "up", 18) + SkinArrowButton(scrolldown, "down", 18) + scrolldown:ClearAllPoints() + scrolldown:SetPoint("BOTTOMRIGHT", -4, 30) + scrollup:ClearAllPoints() + scrollup:SetPoint("BOTTOMLEFT", scrolldown, "TOPLEFT", 0, 2) + + StripTextures(_G[windowname .. "IgnoreConfirm"]) + SkinButton(_G[windowname .. "IgnoreConfirmYes"]) + SkinButton(_G[windowname .. "IgnoreConfirmNo"]) + end) + end) + + HookAddonOrVariable("SortBags", function() + if C.thirdparty.sortbags.enable == "0" then return end + + if not pfUI.thirdparty.bagsort then pfUI.thirdparty.bagsort = "sortbags" end + pfUI.thirdparty.sortbags = CreateFrame("Frame", nil) + pfUI.thirdparty.sortbags:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.thirdparty.sortbags:SetScript("OnEvent", function() + pfUI.thirdparty.sortbags:UnregisterAllEvents() + + -- don't do anything if another bagsorter was found + if pfUI.thirdparty.bagsort ~= "sortbags" then return end + + -- make sure the bag module is enabled + if not pfUI.bag or not pfUI.bag.right then return end + + local rawborder, default_border = GetBorderSize("bags") + + -- draw the button + if not pfUI.bag.right.sort then + pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) + pfUI.bag.right.sort:SetParent(pfUI.bag.right) + pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) + + CreateBackdrop(pfUI.bag.right.sort, default_border) + pfUI.bag.right.sort:SetHeight(12) + pfUI.bag.right.sort:SetWidth(12) + pfUI.bag.right.sort:SetTextColor(1,1,.25,1) + pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") + pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) + pfUI.bag.right.sort.texture:ClearAllPoints() + pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) + pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) + pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) + + pfUI.bag.right.sort:SetScript("OnEnter", function () + pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) + pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) + GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) + GameTooltip:Show() + end) + + pfUI.bag.right.sort:SetScript("OnLeave", function () + CreateBackdrop(pfUI.bag.right.sort) + pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) + if GameTooltip:IsOwned(this) then + GameTooltip:Hide() + end + end) + + pfUI.bag.right.sort:SetScript("OnClick", function() + SortBags() + end) + + pfUI.bag.right.search:ClearAllPoints() + pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) + pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) + end + + -- draw the button + if not pfUI.bag.left.sort then + pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) + pfUI.bag.left.sort:SetParent(pfUI.bag.left) + pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) + + CreateBackdrop(pfUI.bag.left.sort, default_border) + pfUI.bag.left.sort:SetHeight(12) + pfUI.bag.left.sort:SetWidth(12) + pfUI.bag.left.sort:SetTextColor(1,1,.25,1) + pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") + pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) + pfUI.bag.left.sort.texture:ClearAllPoints() + pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) + pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) + pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) + + pfUI.bag.left.sort:SetScript("OnEnter", function () + pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) + pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) + GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) + GameTooltip:Show() + end) + + pfUI.bag.left.sort:SetScript("OnLeave", function () + CreateBackdrop(pfUI.bag.left.sort) + pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) + if GameTooltip:IsOwned(this) then + GameTooltip:Hide() + end + end) + + pfUI.bag.left.sort:SetScript("OnClick", function() + SortBankBags() + end) + end + end) + end) + + HookAddonOrVariable("MrPlow", function() + if C.thirdparty.mrplow.enable == "0" then return end + + local MrPlowL = AceLibrary and AceLibrary("AceLocale-2.2"):new("MrPlow") + if not (MrPlowL and MrPlowL["Bank"]) then return end + pfUI.thirdparty.bagsort = "mrplow" -- dont't check for sortbags, use mrplow as default + + pfUI.thirdparty.mrplow = CreateFrame("Frame", nil) + pfUI.thirdparty.mrplow:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.thirdparty.mrplow:SetScript("OnEvent", function() + pfUI.thirdparty.mrplow:UnregisterAllEvents() + + -- don't do anything if another bagsorter was found + if pfUI.thirdparty.bagsort ~= "mrplow" then return end + + -- make sure the bag module is enabled + if not pfUI.bag or not pfUI.bag.right then return end + + local rawborder, default_border = GetBorderSize("bags") + + -- draw the button + if not pfUI.bag.right.sort then + pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) + pfUI.bag.right.sort:SetParent(pfUI.bag.right) + pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) + + CreateBackdrop(pfUI.bag.right.sort, default_border) + pfUI.bag.right.sort:SetHeight(12) + pfUI.bag.right.sort:SetWidth(12) + pfUI.bag.right.sort:SetTextColor(1,1,.25,1) + pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") + pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) + pfUI.bag.right.sort.texture:ClearAllPoints() + pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) + pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) + pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) + + pfUI.bag.right.sort:SetScript("OnEnter", function () + pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) + pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(MrPlowL["Mr Plow"]) + GameTooltip:AddLine(MrPlowL["The Works"],1,1,1) + GameTooltip:Show() + end) + + pfUI.bag.right.sort:SetScript("OnLeave", function () + CreateBackdrop(pfUI.bag.right.sort) + pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) + if GameTooltip:IsOwned(this) then + GameTooltip:Hide() + end + end) + + pfUI.bag.right.sort:SetScript("OnClick", function() + MrPlow:Works() + end) + + pfUI.bag.right.search:ClearAllPoints() + pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) + pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) + end + + -- draw the button + if not pfUI.bag.left.sort then + pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) + pfUI.bag.left.sort:SetParent(pfUI.bag.left) + pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) + + CreateBackdrop(pfUI.bag.left.sort, default_border) + pfUI.bag.left.sort:SetHeight(12) + pfUI.bag.left.sort:SetWidth(12) + pfUI.bag.left.sort:SetTextColor(1,1,.25,1) + pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") + pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") + pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) + pfUI.bag.left.sort.texture:ClearAllPoints() + pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) + pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) + pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) + + pfUI.bag.left.sort:SetScript("OnEnter", function () + pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) + pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(MrPlowL["Mr Plow"]) + GameTooltip:AddLine(MrPlowL["Bank"],1,1,1) + GameTooltip:Show() + end) + + pfUI.bag.left.sort:SetScript("OnLeave", function () + CreateBackdrop(pfUI.bag.left.sort) + pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) + if GameTooltip:IsOwned(this) then + GameTooltip:Hide() + end + end) + + pfUI.bag.left.sort:SetScript("OnClick", function() + MrPlow:Works(MrPlowL["Bank"]) + end) + end + end) + end) + + HookAddonOrVariable("FlightMap", function() + if C.thirdparty.flightmap.enable == "0" then return end + + FlightMapTimesBorder:Hide() + FlightMapTimesFlash:Hide() + + FlightMapTimesFrame:SetStatusBarTexture(pfUI.media["img:bar"]) + FlightMapTimesFrame:SetHeight(18) + CreateBackdrop(FlightMapTimesFrame) + CreateBackdropShadow(FlightMapTimesFrame) + + FlightMapTimesText:ClearAllPoints() + FlightMapTimesText:SetPoint("CENTER", FlightMapTimesFrame, "CENTER", 0, 0) + FlightMapTimesText:SetFont(pfUI.font_default, 12, "OUTLINE") + end) + + HookAddonOrVariable("TheoryCraft_SetUpButton", function() + if C.thirdparty.theorycraft.enable == "0" then return end + + -- set pfUI bar font + if TheoryCraft_Settings then + TheoryCraft_Settings["FontPath"] = pfUI.media[C.bars.font] + end + + if not pfUI.bars then return end + + -- make theorycraft aware of pfUI bars + for i=1,10 do + for j=1,10 do + TheoryCraft_SetUpButton(pfUI.bars[i][j]:GetName(), "Normal") + end + end + end) + + HookAddonOrVariable("SM_GetActionSpell", function() + if C.thirdparty.supermacro.enable == "0" then return end + if not pfUI.bars then return end + + -- hook events to include SuperMacro refreshs + local ButtonFullUpdate = pfUI.bars.ButtonFullUpdate + pfUI.bars.ButtonFullUpdate = function(button) + -- run the old function + ButtonFullUpdate(button) + + -- update with SuperMacro textures + if not button then return end + local text = GetActionText(button:GetID()) + + if text then + if _G.SM_ACTION_SPELL and _G.SM_ACTION_SPELL["regular"] and _G.SM_ACTION_SPELL["regular"][text] then + button.icon:SetTexture(_G.SM_ACTION_SPELL["regular"][text].texture) + end + end + end + + -- hook events to include SuperMacro refreshs + local ButtonEnter = pfUI.bars[1][1]:GetScript("OnEnter") + local function NewButtonEnter() + ButtonEnter() + SM_ActionButton_SetTooltip() + end + + -- reassign the new event handler + for i=1,10 do + for j=1,12 do + pfUI.bars[i][j]:SetScript("OnEvent", NewButtonEvent) + pfUI.bars[i][j]:SetScript("OnEnter", NewButtonEnter) + end + end + + -- trigger the event whenever SuperMacro got an update + hooksecurefunc("SM_UpdateActionSpell", function() + for slot=1,120 do pfUI.bars.update[slot] = true end + end) + end) + + HookAddonOrVariable("AtlasLoot", function() + if C.thirdparty.atlasloot.enable == "0" then return end + + CreateBackdrop(AtlasLootTooltip) + CreateBackdropShadow(AtlasLootTooltip) + + if pfUI.eqcompare then + HookScript(AtlasLootTooltip, "OnShow", pfUI.eqcompare.GameTooltipShow) + HookScript(AtlasLootTooltip, "OnHide", function() + ShoppingTooltip1:Hide() + ShoppingTooltip2:Hide() + end) + end + end) + + HookAddonOrVariable("MyRolePlay", function() + if C.thirdparty.myroleplay.enable == "0" then return end + + if pfUI.uf.target then + -- set mrp icon to target frame + mrpButtonIconFrame:SetParent(pfUI.uf.target) + mrpButtonIconFrame:SetFrameStrata("DIALOG") + mrpButtonIconFrame:SetWidth(20) + mrpButtonIconFrame:SetHeight(20) + mrpButtonIconFrame:SetPoint("TOPRIGHT", pfUI.uf.target, "TOPRIGHT", 10, 10) + function _G.mrpMoveIcon() + mrpButtonIconFrame:SetPoint("TOPRIGHT", pfUI.uf.target, "TOPRIGHT", 10, 10) + end + end + + if pfUI.uf.player then + -- set tooltip function for player frame + local oldfunc = pfUI.uf.player:GetScript("OnEnter") + pfUI.uf.player:SetScript("OnEnter", function() + oldfunc() + mrpDisplayTooltip("player", "PLAYER") + end) + end + end) + + HookAddonOrVariable("DruidManaBarBackground", function() + if C.thirdparty.druidmana.enable == "0" then return end + DruidManaBar:SetParent(UIParent) + DruidManaBar.bd:Hide() + + local p = ManaBarColor[0] + local pr, pg, pb = 0, 0, 0 + if p then pr, pg, pb = p.r + .5, p.g +.5, p.b +.5 end + DruidManaBar:SetStatusBarColor(pr, pg, pb) + DruidManaBar:SetStatusBarTexture(pfUI.media["img:bar"]) + + local f = pfUI.uf.player + DruidManaBar:SetWidth((f.config.pwidth ~= "-1" and f.config.pwidth or f.config.width)) + DruidManaBar:SetHeight(f.config.pheight) + DruidManaBar.text:SetFont(pfUI.font_unit, C.global.font_unit_size, "OUTLINE") + DruidManaBar.text:SetFontObject(GameFontWhite) + + CreateBackdrop(DruidManaBar) + CreateBackdropShadow(DruidManaBar) + + DruidManaBar:SetScript("OnMouseUp", function(button) + f:Click(button) + end) + + DruidManaBar:ClearAllPoints() + DruidManaBar:SetPoint("CENTER", 0, 0) + UpdateMovable(DruidManaBar) + end) + + HookAddonOrVariable("NoteIt", function() + if C.thirdparty.noteit.enable == "0" then return end + + -- Main window + pfUI.api.StripTextures(NoteInputFrame, true) + CreateBackdrop(NoteInputFrame, nil, nil, .75) + CreateBackdropShadow(NoteInputFrame) + + NoteInputFrame.backdrop:SetPoint("TOPLEFT", 10, -12) + NoteInputFrame.backdrop:SetPoint("BOTTOMRIGHT", -32, 30) + + -- close button + pfUI.api.SkinCloseButton(NoteInputFrameCloseButton, NoteInputFrame, -37, -17) + + -- Options button + pfUI.api.SkinButton(NoteInputOptionsButton) + NoteInputOptionsButton:ClearAllPoints() + NoteInputOptionsButton:SetPoint("TOPLEFT", NoteInputTextBackground, "BOTTOMLEFT", 0, -15) + NoteInputOptionsButton:SetWidth(145) + + -- Delete button + pfUI.api.SkinButton(NoteInputDeleteButton) + NoteInputDeleteButton:ClearAllPoints() + NoteInputDeleteButton:SetPoint("TOPLEFT", NoteInputOptionsButton, "BOTTOMLEFT", 0, -4) + NoteInputDeleteButton:SetWidth(145) + + -- Save button + pfUI.api.SkinButton(NoteInputFrameSaveButton) + NoteInputFrameSaveButton:ClearAllPoints() + NoteInputFrameSaveButton:SetPoint("TOPRIGHT", NoteInputTextBackground, "BOTTOMRIGHT", 0, -15) + NoteInputFrameSaveButton:SetWidth(145) + + -- Cancel button + pfUI.api.SkinButton(NoteInputFrameExitButton) + NoteInputFrameExitButton:ClearAllPoints() + NoteInputFrameExitButton:SetPoint("TOPLEFT", NoteInputFrameSaveButton, "BOTTOMLEFT", 0, -4) + NoteInputFrameExitButton:SetWidth(145) + + -- Window title + NoteInputTitleText:SetTextColor(1,1,.25,1) + + -- Scrollbars + pfUI.api.SkinScrollbar(NoteInputNameChooseFrameScrollBar) + pfUI.api.SkinScrollbar(NoteInputNoteFrameScrollBar) + + -- Search/Input label frame + NoteInputNameLabel:ClearAllPoints() + NoteInputNameLabel:SetPoint("TOPLEFT", NoteInputTitleText, "BOTTOMLEFT", -10, 0) + + -- Search/Input input frame + pfUI.api.StripTextures(NoteInputNameEditBox) + CreateBackdrop(NoteInputNameEditBox) + NoteInputNameEditBox:SetTextInsets(5,5,5,5) + NoteInputNameEditBox:ClearAllPoints() + NoteInputNameEditBox:SetPoint("TOPLEFT", NoteInputNameLabel, "BOTTOMLEFT", 0, 0) + NoteInputNameEditBox:SetPoint("TOPRIGHT", NoteInputNameLabel, "BOTTOMRIGHT", 0, 0) + NoteInputNameEditBox:SetHeight(20) + + -- Frame holding the list (i think) + pfUI.api.StripTextures(NoteInputNameChooseFrame) + CreateBackdrop(NoteInputNameChooseFrame) + NoteInputNameChooseFrame:ClearAllPoints() + NoteInputNameChooseFrame:SetPoint("TOPLEFT", NoteInputNameEditBox, "BOTTOMLEFT", 0, -10) + NoteInputNameChooseFrame:SetPoint("TOPRIGHT", NoteInputNameEditBox, "BOTTOMRIGHT", -20, 0) + NoteInputNameChooseFrame:SetHeight(100) + + -- Note label frame + NoteInputNoteLabel:ClearAllPoints() + NoteInputNoteLabel:SetPoint("TOPLEFT", NoteInputNameChooseFrame, "BOTTOMLEFT", 0, 0) + NoteInputNoteLabel:SetPoint("TOPRIGHT", NoteInputNameChooseFrame, "BOTTOMRIGHT", 0, 0) + + -- Note input frame + pfUI.api.StripTextures(NoteInputNoteFrame) + CreateBackdrop(NoteInputNoteFrame) + NoteInputNoteEditBox:SetTextInsets(5,5,5,5) + NoteInputNoteFrame:ClearAllPoints() + NoteInputNoteFrame:SetPoint("TOPLEFT", NoteInputNoteLabel, "BOTTOMLEFT", 0, 0) + NoteInputNoteFrame:SetPoint("TOPRIGHT", NoteInputNoteLabel, "BOTTOMRIGHT", 0, 0) + NoteInputNoteFrame:SetHeight(140) + + -- Weird frames + NoteInputNameChooseBackground:Hide() + NoteInputTextBackground:Hide() + + NoteInputTextBackground:ClearAllPoints() + NoteInputTextBackground:SetPoint("TOPLEFT", NoteInputNameChooseFrame, "BOTTOMLEFT", -2, -38) + NoteInputTextBackground:SetPoint("TOPRIGHT", NoteInputNameChooseFrame, "BOTTOMRIGHT", 22, -38) + end) + + local EnableHealComm = function() + -- hook healcomm's addon message to parse single-player events + if AceLibrary and AceLibrary:HasInstance("HealComm-1.0") and pfUI.prediction then + local HealComm = AceLibrary("HealComm-1.0") + + -- use pfUI frames to draw healComm predictions + local pfHookHealCommSendAddonMessage = HealComm.SendAddonMessage + function HealComm.SendAddonMessage(this, msg) + if not UnitInRaid("player") and GetNumPartyMembers() < 1 then + pfUI.prediction:ParseChatMessage(UnitName("player"), msg) + end + pfHookHealCommSendAddonMessage(this, msg) + end + + -- disable pfUI predictions + pfUI.prediction.sender:UnregisterAllEvents() + pfUI.prediction.sender.enabled = nil + end + end + HookAddonOrVariable("HealComm", EnableHealComm) + HookAddonOrVariable("LunaUnitFrames", EnableHealComm) + HookAddonOrVariable("NotGrid", EnableHealComm) +end) diff --git a/modules/thirdparty.lua b/modules/thirdparty.lua index 1df2bc8f..cc773c69 100644 --- a/modules/thirdparty.lua +++ b/modules/thirdparty.lua @@ -1,1351 +1,99 @@ -pfUI:RegisterModule("thirdparty", "vanilla", function() - local rawborder, default_border = GetBorderSize() +pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() + -- This module includes the core logic of thirdparty modules. + -- Right now, in particular the functions to register addons to the + -- dockframe of the chat panel aswell as the thirdparty root-table. + -- This module is supposed to be loaded on all expansions, so only + -- addons that can share the same glue code across expansions will go here. + -- For expansion related code, see: thirdparty-vanilla and thirdparty-tbc. pfUI.thirdparty = {} pfUI.thirdparty.bagsort = nil - pfUI.thirdparty.meters = CreateFrame("Frame") - pfUI.thirdparty.meters:SetScript("OnEvent", function() + do -- addon dockframe + pfUI.thirdparty.meters = CreateFrame("Frame") + pfUI.thirdparty.meters:SetScript("OnEvent", function() + pfUI.thirdparty.meters.state = nil + pfUI.thirdparty.meters:Toggle() + this:UnregisterAllEvents() + end) + + pfUI.thirdparty.meters.damage = nil + pfUI.thirdparty.meters.threat = nil pfUI.thirdparty.meters.state = nil - pfUI.thirdparty.meters:Toggle() - this:UnregisterAllEvents() - end) - pfUI.thirdparty.meters.damage = nil - pfUI.thirdparty.meters.threat = nil - pfUI.thirdparty.meters.state = nil + function pfUI.thirdparty.meters:RegisterMeter(side, data) + -- abort when one addon is already register on the side + if pfUI.thirdparty.meters[side] then return end - function pfUI.thirdparty.meters:RegisterMeter(side, data) - -- abort when one addon is already register on the side - if pfUI.thirdparty.meters[side] then return end + -- load addon table + local config, addon, frame, single, dual, show, hide, once = unpack(data) - -- load addon table - local config, addon, frame, single, dual, show, hide, once = unpack(data) + -- put addon into dockmode when enabled + if C.thirdparty[config] and C.thirdparty[config].dock == "1" then + pfUI.thirdparty.meters[side] = data - -- put addon into dockmode when enabled - if C.thirdparty[config] and C.thirdparty[config].dock == "1" then - pfUI.thirdparty.meters[side] = data + -- initialize and hide the frame in the beginning + if once then once() end + if hide then hide() end - -- initialize and hide the frame in the beginning - if once then once() end - if hide then hide() end + -- enable toggle event on the panel button + if pfUI.panel then + pfUI.panel.right.hide:SetScript("OnClick", function() + pfUI.thirdparty.meters:Toggle() + end) + end - -- enable toggle event on the panel button - if pfUI.panel then - pfUI.panel.right.hide:SetScript("OnClick", function() - pfUI.thirdparty.meters:Toggle() - end) + -- toggle meter by default if configured + if C.thirdparty.showmeter == "1" then + self:RegisterEvent("PLAYER_ENTERING_WORLD") + end + end + end + + function pfUI.thirdparty.meters:Resize() + if not pfUI.chat or not pfUI.panel then return end + + if self.damage then -- resize damage meter + local config, addon, frame, single, dual, show, hide = unpack(self.damage) + if frame and C.thirdparty[config].dock == "1" then + if not self.threat then single() else dual() end + end end - -- toggle meter by default if configured - if C.thirdparty.showmeter == "1" then - self:RegisterEvent("PLAYER_ENTERING_WORLD") + if self.threat then -- resize threat meter + local config, addon, frame, single, dual, show, hide = unpack(self.threat) + if frame and C.thirdparty[config].dock == "1" then + if not self.damage then single() else dual() end + end + end + end + + function pfUI.thirdparty.meters:Toggle() + self:Resize() + + -- show/hide right chatframe + if pfUI.chat and C.chat.right.enable == "1" then + pfUI.chat.right:SetAlpha(self.state and 1 or 0) + end + + -- show/hide damage meters + if self.damage then + local config, addon, frame, single, dual, show, hide = unpack(self.damage) + if not self.state then show() else hide() end + end + + -- show/hide threat meters + if self.threat then + local config, addon, frame, single, dual, show, hide = unpack(self.threat) + if not self.state then show() else hide() end + end + + -- show meters + if not self.state then + self.state = true + else + self.state = nil end end end - - function pfUI.thirdparty.meters:Resize() - if not pfUI.chat or not pfUI.panel then return end - - if self.damage then -- resize damage meter - local config, addon, frame, single, dual, show, hide = unpack(self.damage) - if frame and C.thirdparty[config].dock == "1" then - if not self.threat then single() else dual() end - end - end - - if self.threat then -- resize threat meter - local config, addon, frame, single, dual, show, hide = unpack(self.threat) - if frame and C.thirdparty[config].dock == "1" then - if not self.damage then single() else dual() end - end - end - end - - function pfUI.thirdparty.meters:Toggle() - self:Resize() - - -- show/hide right chatframe - if pfUI.chat and C.chat.right.enable == "1" then - pfUI.chat.right:SetAlpha(self.state and 1 or 0) - end - - -- show/hide damage meters - if self.damage then - local config, addon, frame, single, dual, show, hide = unpack(self.damage) - if not self.state then show() else hide() end - end - - -- show/hide threat meters - if self.threat then - local config, addon, frame, single, dual, show, hide = unpack(self.threat) - if not self.state then show() else hide() end - end - - -- show meters - if not self.state then - self.state = true - else - self.state = nil - end - end - - HookAddonOrVariable("KLHThreatMeter", function() - local ktm_scale = 1 - local function GetKtmWidthDiff(view, match_size) - local default_width = 0 - for column, header in view.head do - if (header.vis()) then - default_width = default_width + header.width - else - default_width = default_width + 0.1 - end - end - return match_size / (default_width + 12) - end - - local function SetKtmWidth(view, diff_width) - for column, header in view.head do - header.width = round(round(header.width * diff_width) / ktm_scale) - end - end - - local function RefreshKtmWidth(width) - local width = width or pfUI.chat.right:GetWidth() - if (pfUI.thirdparty.meters.damage and pfUI.thirdparty.meters.threat) then - width = width / 2 - end - SetKtmWidth(KLHTM_Gui.raid, GetKtmWidthDiff(KLHTM_Gui.raid, width)) - SetKtmWidth(KLHTM_Gui.self, GetKtmWidthDiff(KLHTM_Gui.self, width)) - KLHTM_Redraw(true) - KLHTM_UpdateRaidFrame() - KLHTM_UpdateSelfFrame() - KLHTM_UpdateFrame() - end - - local docktable = { "ktm", "TODO", "KLHTM_Frame", - function() -- single - RefreshKtmWidth() - KLHTM_Frame:ClearAllPoints() - KLHTM_Frame:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 0, 0) - KLHTM_Frame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) - KLHTM_Frame.backdrop:SetPoint("BOTTOMRIGHT", KLHTM_Frame, "BOTTOMRIGHT", 0, -(KLHTM_Frame:GetBottom() - pfUI.chat.right:GetBottom())-default_border) - end, - function() -- dual - RefreshKtmWidth() - KLHTM_Frame:ClearAllPoints() - KLHTM_Frame:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 0, 0) - KLHTM_Frame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOM", -default_border, pfUI.panel.right:GetHeight()) - KLHTM_Frame.backdrop:SetPoint("BOTTOMRIGHT", KLHTM_Frame, "BOTTOMRIGHT", 0, -(KLHTM_Frame:GetBottom() - pfUI.chat.right:GetBottom())-default_border) - end, - function() -- show - KLHTM_SetVisible(true) - KLHTM_Frame:Show() - end, - function() -- hide - KLHTM_SetVisible(false) - KLHTM_Frame:Hide() - end, - function() -- once - if KLHTM_Gui.frame then - KLHTM_SetGuiScale(ktm_scale) - end - end - } - - pfUI.thirdparty.meters:RegisterMeter("threat", docktable) - - if C.thirdparty.ktm.skin == "1" then - -- remove titlebar - if KLHTM_Gui then - if KLHTM_Gui.title then - KLHTM_Gui.title.back:Hide() - end - if KLHTM_Gui.raid then - -- skin rows (raid) - for i in pairs(KLHTM_Gui.raid.rows) do - KLHTM_Gui.raid.rows[i].bar:SetTexture(pfUI.media["img:bar"]) - KLHTM_Gui.raid.rows[i].bar:SetAlpha(.75) - - if _G["KLHTM_RaidFrameRow" .. i .. "NameText"] then - _G["KLHTM_RaidFrameRow" .. i .. "NameText"]:SetFont(pfUI.font_default, 13, "OUTLINE") - _G["KLHTM_RaidFrameRow" .. i .. "ThreatText"]:SetFont(pfUI.font_default, 13, "OUTLINE") - _G["KLHTM_RaidFrameRow" .. i .. "PercentThreatText"]:SetFont(pfUI.font_default, 13, "OUTLINE") - end - end - end - if KLHTM_Gui.self then - -- skin rows (self) - for i in pairs(KLHTM_Gui.self.rows) do - KLHTM_Gui.self.rows[i].bar:SetTexture(pfUI.media["img:bar"]) - KLHTM_Gui.self.rows[i].bar:SetAlpha(.75) - end - end - end - - CreateBackdrop(KLHTM_Frame, nil, nil, (C.thirdparty.chatbg == "1" and .8)) - CreateBackdropShadow(KLHTM_Frame) - - if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then - local r, g, b, a = strsplit(",", C.chat.global.background) - KLHTM_Frame.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - - local r, g, b, a = strsplit(",", C.chat.global.border) - KLHTM_Frame.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - end - - -- theme buttons - local buttons = { "KLHTM_TitleFrameClose", "KLHTM_TitleFrameMinimise", - "KLHTM_TitleFrameMaximise", "KLHTM_TitleFrameOptions", "KLHTM_TitleFramePin", - "KLHTM_TitleFrameUnpin", "KLHTM_TitleFrameSelfView", "KLHTM_TitleFrameRaidView", - "KLHTM_TitleFrameMasterTarget", "KLHTM_SelfFrameBottomReset" } - - for i, button in pairs(buttons) do - local b = _G[button] - if not b then return end - SkinButton(b) - b:SetScale(.8) - - -- remove red background on some buttons - for i,v in ipairs({b:GetRegions()}) do - if v.SetTexture and i == 1 then - v:SetTexture(0,0,0,0) - end - end - - local p,rt,rp,xo,yo = b:GetPoint() - if not b.pfSet and i > 1 then - b:SetPoint(p,rt,rp,xo - 3,yo) - b.pfSet = true - end - end - - -- name buttons - KLHTM_TitleFrameClose:SetText("x") - KLHTM_TitleFrameMinimise:SetText("_") - KLHTM_TitleFrameMaximise:SetText("_") - KLHTM_TitleFrameOptions:SetText("O") - KLHTM_TitleFramePin:SetText("P") - KLHTM_TitleFrameUnpin:SetText("U") - KLHTM_TitleFrameSelfView:SetText("S") - KLHTM_TitleFrameRaidView:SetText("R") - KLHTM_TitleFrameMasterTarget:SetText("T") - - KLHTM_RaidFrameHeaderNameText:SetFont(pfUI.font_default, 12, "OUTLINE") - KLHTM_RaidFrameHeaderThreatText:SetFont(pfUI.font_default, 12, "OUTLINE") - KLHTM_RaidFrameHeaderPercentThreatText:SetFont(pfUI.font_default, 12, "OUTLINE") - KLHTM_RaidFrameBottomThreatDefecitText:SetFont(pfUI.font_default, 12, "OUTLINE") - KLHTM_RaidFrameBottomMasterTargetText:SetFont(pfUI.font_default, 12, "OUTLINE") - KLHTM_RaidFrameHeaderName:SetHeight(12) - - -- remove seperators - if KLHTM_RaidFrameLine then KLHTM_RaidFrameLine:Hide() end - if KLHTM_RaidFrameBottomLine then KLHTM_RaidFrameBottomLine:Hide() end - if KLHTM_SelfFrameLine then KLHTM_SelfFrameLine:Hide() end - if KLHTM_SelfFrameBottomLine then KLHTM_SelfFrameBottomLine:Hide() end - end - end) - - HookAddonOrVariable("DPSMate", function() - local docktable = { "dpsmate", "DPSMate", "DPSMate_DPSMate", - function() -- single - DPSMate_DPSMate:ClearAllPoints() - DPSMate_DPSMate:SetAllPoints(pfUI.chat.right) - DPSMate_DPSMate:SetWidth(pfUI.chat.right:GetWidth()) - DPSMate_DPSMate_ScrollFrame:ClearAllPoints() - DPSMate_DPSMate_ScrollFrame:SetWidth(pfUI.chat.right:GetWidth()) - DPSMate_DPSMate_ScrollFrame:SetPoint("TOPLEFT", DPSMate_DPSMate_Head, "BOTTOMLEFT", 0, 0) - DPSMate_DPSMate_ScrollFrame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) - DPSMate_DPSMate_ScrollFrame_Child:SetWidth(pfUI.chat.right:GetWidth()) - DPSMate_DPSMate_Resize:Hide() - end, - function() -- dual - DPSMate_DPSMate:ClearAllPoints() - DPSMate_DPSMate:SetPoint("TOPLEFT", pfUI.chat.right, "TOP", 0, 0) - DPSMate_DPSMate:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, 0) - DPSMate_DPSMate:SetWidth(pfUI.chat.right:GetWidth() / 2) - DPSMate_DPSMate_ScrollFrame:ClearAllPoints() - DPSMate_DPSMate_ScrollFrame:SetWidth(pfUI.chat.right:GetWidth() / 2) - DPSMate_DPSMate_ScrollFrame:SetPoint("TOPLEFT", DPSMate_DPSMate_Head, "BOTTOMLEFT", 0, 0) - DPSMate_DPSMate_ScrollFrame:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, pfUI.panel.right:GetHeight()) - DPSMate_DPSMate_ScrollFrame_Child:SetWidth(pfUI.chat.right:GetWidth() / 2) - DPSMate_DPSMate_Resize:Hide() - end, - function() -- show - DPSMate_DPSMate:Show() - end, - function() -- hide - DPSMate_DPSMate:Hide() - end - } - - pfUI.thirdparty.meters:RegisterMeter("damage", docktable) - - if C.thirdparty.dpsmate.skin == "1" then - if DPSMateSettings then - -- set DPSMate appearance to match pfUI - for w in pairs(DPSMateSettings["windows"]) do - DPSMateSettings["windows"][w]["titlebarheight"] = 20 - DPSMateSettings["windows"][w]["titlebarfontsize"] = 12 - DPSMateSettings["windows"][w]["titlebarfont"] = "Accidental Presidency" - DPSMateSettings["windows"][w]["titlebaropacity"] = 0 - - DPSMateSettings["windows"][w]["titlebarfontcolor"][1] = 1 - DPSMateSettings["windows"][w]["titlebarfontcolor"][2] = 1 - DPSMateSettings["windows"][w]["titlebarfontcolor"][3] = 1 - - DPSMateSettings["windows"][w]["barheight"] = 11 - DPSMateSettings["windows"][w]["barfontsize"] = 13 - DPSMateSettings["windows"][w]["bartexture"] = "normTex" - DPSMateSettings["windows"][w]["barfont"] = "Accidental Presidency" - - DPSMateSettings["windows"][w]["opacity"] = 1 - DPSMateSettings["windows"][w]["contentbgtexture"] = "Solid Background" - DPSMateSettings["windows"][w]["bgopacity"] = 0 - DPSMateSettings["windows"][w]["borderopacity"] = 0 - end - - if DPSMate.UpdatePointer then - DPSMate:UpdatePointer() - end - DPSMate:InitializeFrames() - - for k, val in pairs(DPSMateSettings["windows"]) do - local frame = _G["DPSMate_"..val["name"]] - CreateBackdrop(frame, nil, nil, (C.thirdparty.chatbg == "1" and .8)) - CreateBackdropShadow(frame) - - if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then - local r, g, b, a = strsplit(",", C.chat.global.background) - frame.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - - local r, g, b, a = strsplit(",", C.chat.global.border) - frame.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - end - end - end - end - end) - - HookAddonOrVariable("SW_Stats", function() - local docktable = { "swstats", "TODO", "SW_BarFrame1", - function() -- single - SW_BarFrame1:SetWidth(pfUI.chat.right:GetWidth()) - SW_BarFrame1:ClearAllPoints() - SW_BarFrame1:SetAllPoints(pfUI.chat.right) - SW_BarFrame1_Resizer:Hide() - SW_BarsLayout("SW_BarFrame1", true) - end, - function() -- dual - SW_BarFrame1:SetWidth(pfUI.chat.right:GetWidth() / 2) - SW_BarFrame1:ClearAllPoints() - SW_BarFrame1:SetPoint("TOPLEFT", pfUI.chat.right, "TOP", 0, 0) - SW_BarFrame1:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0 ,0) - SW_BarFrame1_Resizer:Hide() - SW_BarsLayout("SW_BarFrame1", true) - end, - function() -- show - SW_BarFrame1:Show() - SW_OptKey(1) - end, - function() -- hide - SW_BarFrame1:Hide() - end, - function() -- once - SW_Settings["SHOWMAIN"] = nil - SW_BarFrame1:Hide() - - SW_OptChk_Running:ClearAllPoints() - SW_OptChk_Running:SetParent(SW_BarFrame1_Title) - SW_OptChk_Running:SetPoint("RIGHT", SW_BarFrame1_Title_TimeLine, "LEFT", -2, 0) - -- hide bottom panels - SW_BarFrame1_Selector:Hide() - - -- let user select mode by clicking the title - HookScript(SW_BarFrame1_Title, "OnMouseUp", function() - local page = SW_Settings and SW_Settings.BarFrames and SW_Settings.BarFrames.SW_BarFrame1 and SW_Settings.BarFrames.SW_BarFrame1.Selected - if page then - local target = (arg1 == "LeftButton") and (page + 1) or (arg1 == "RightButton") and (page - 1) - SW_OptKey((target > SW_OPT_COUNT) and 1 or (target < 1) and SW_OPT_COUNT or target) - end - end) - end - } - - pfUI.thirdparty.meters:RegisterMeter("damage", docktable) - - if C.thirdparty.swstats.skin == "1" then - SW_Settings["OPT_ShowMainWinDPS"] = 1 - SW_Settings["Colors"] = SW_Settings["Colors"] or {} - SW_Settings["Colors"]["TitleBarsFont"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } - SW_Settings["Colors"]["TitleBars"] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, } - SW_Settings["Colors"]["Backdrops"] = { [1] = .3, [2] = 1, [3] = .8, [4] = 1, } - - SW_Settings["InfoSettings"] = SW_Settings["InfoSettings"] or {} - SW_Settings["InfoSettings"][1] = SW_Settings["InfoSettings"][1] or {} - SW_Settings["InfoSettings"][1]["SF"] = "SW_Filter_EverGroup" - SW_Settings["InfoSettings"][1]["ShowPercent"] = 1 - SW_Settings["InfoSettings"][1]["ShowRank"] = 1 - SW_Settings["InfoSettings"][1]["ShowNumber"] = 1 - SW_Settings["InfoSettings"][1]["BT"] = 13 - SW_Settings["InfoSettings"][1]["BH"] = 10 - SW_Settings["InfoSettings"][1]["BFS"] = 11 - SW_Settings["InfoSettings"][1]["BC"] = { [1] = .5, [2] = .5, [3] = .5, [4] = .5, } - SW_Settings["InfoSettings"][1]["BFC"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } - SW_Settings["InfoSettings"][1]["OC"] = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, } - SW_Settings["InfoSettings"][1]["OTF"] = ( SW_Settings["InfoSettings"][1]["OTF"] == "1" and "SWStats" ) or SW_Settings["InfoSettings"][1]["OTF"] - SW_Settings["InfoSettings"][1]["UCC"] = 1 - - local SkinSW_RoundButton = function(n, s) - local s = s or 14 - local btn, normal, highlight = _G[n], _G[string.format("%s_Normal",n)], _G[string.format("%s_Highlight",n)] - StripTextures(normal) - StripTextures(highlight) - CreateBackdrop(btn) - btn:SetHeight(s) - btn:SetWidth(s) - SetHighlight(btn) - end - - SW_BarFrame1_Title:SetPoint("TOPLEFT", 3, 0) - SW_BarFrame1_Title_Sync:SetScale(.84) - SW_BarFrame1_Title_Report:SetScale(.84) - SW_BarFrame1_Title_Settings:SetScale(.84) - SW_BarFrame1_Title_Close:SetScale(.84) - SW_BarFrame1_Title_Console:SetScale(.84) - SW_BarFrame1_Title_TimeLine:SetScale(.84) - - -- bar padding - SW_BarFrame1.swoBarY = -22 - _G.SW_BARSEPY = 1 - - CreateBackdrop(SW_BarFrame1, nil, nil, (C.thirdparty.chatbg == "1" and .8)) - CreateBackdropShadow(SW_BarFrame1) - - if C.thirdparty.chatbg == "1" and C.chat.global.custombg == "1" then - local r, g, b, a = strsplit(",", C.chat.global.background) - SW_BarFrame1.backdrop:SetBackdropColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - - local r, g, b, a = strsplit(",", C.chat.global.border) - SW_BarFrame1.backdrop:SetBackdropBorderColor(tonumber(r), tonumber(g), tonumber(b), tonumber(a)) - end - - SkinCheckbox(SW_OptChk_Running, 20) - for i=1, SW_OPT_COUNT do - SkinSW_RoundButton(string.format("SW_BarFrame1_Selector_Opt%d",i)) - if i == 1 then - _G[string.format("SW_BarFrame1_Selector_Opt%d",i)]:SetPoint("TOPLEFT", SW_OptChk_Running, "TOPRIGHT", 3, -3) - end - end - SW_BarFrame1_Selector:SetPoint("TOPLEFT", SW_BarFrame1.backdrop, "BOTTOMLEFT", 10, 0) - - -- mode settings - CreateBackdrop(SW_BarSettingsFrameV2, nil, nil, .8) - CreateBackdrop(SW_BarSettingsFrameV2_Title, 0) - CreateBackdrop(SW_BarSettingsFrameV2_Tab1, 0) - SW_BarSettingsFrameV2_Tab1:SetHeight(24) - SW_BarSettingsFrameV2_Tab1_Text:SetParent(SW_BarSettingsFrameV2_Tab1.backdrop) - CreateBackdrop(SW_BarSettingsFrameV2_Tab2, 0) - SW_BarSettingsFrameV2_Tab2:SetHeight(24) - SW_BarSettingsFrameV2_Tab2_Text:SetParent(SW_BarSettingsFrameV2_Tab2.backdrop) - CreateBackdrop(SW_BarSettingsFrameV2_Tab3, 0) - SW_BarSettingsFrameV2_Tab3:SetHeight(24) - SW_BarSettingsFrameV2_Tab3_Text:SetParent(SW_BarSettingsFrameV2_Tab3.backdrop) - SkinCheckbox(SW_OptChk_Rank, 18) - SkinCheckbox(SW_OptChk_Num, 18) - SkinCheckbox(SW_OptChk_Percent, 18) - SkinCheckbox(SW_Filter_None, 18) - SkinCheckbox(SW_Filter_PC, 18) - SkinCheckbox(SW_Filter_NPC, 18) - SkinCheckbox(SW_Filter_Group, 18) - SkinCheckbox(SW_Filter_EverGroup, 18) - SkinCheckbox(SW_HealOpt_Eff, 18) - SkinCheckbox(SW_HealOpt_OH, 18) - SkinCheckbox(SW_HealOpt_IF, 18) - SkinDropDown(SW_InfoTypeDropDown) - SkinDropDown(SW_ClassFilterDropDown) - SkinDropDown(SW_SchoolDropDown) - if SW_SchoolDropDown:GetWidth() < 100 then - UIDropDownMenu_SetWidth(100, SW_SchoolDropDown) -- SW_Stats is missing this in init - end - SkinButton(SW_SetInfoVarTxtFrame_Button) - SkinButton(SW_SetInfoVarFromTarget) - CreateBackdrop(SW_CS_BarC_Button) - SetAllPointsOffset(SW_CS_BarC_Button.backdrop,SW_CS_BarC_Button,2) - SetHighlight(SW_CS_BarC_Button) - CreateBackdrop(SW_CS_FontC_Button) - SetAllPointsOffset(SW_CS_FontC_Button.backdrop,SW_CS_FontC_Button,2) - SetHighlight(SW_CS_FontC_Button) - CreateBackdrop(SW_CS_OptC_Button) - SetAllPointsOffset(SW_CS_OptC_Button.backdrop,SW_CS_OptC_Button,2) - SetHighlight(SW_CS_OptC_Button) - SkinSlider(SW_BarHeightSlider) - SW_BarHeightSliderLow:ClearAllPoints() - SW_BarHeightSliderLow:SetPoint("TOPRIGHT", SW_BarHeightSlider, "TOPLEFT", -2, -2) - SW_BarHeightSliderHigh:ClearAllPoints() - SW_BarHeightSliderHigh:SetPoint("BOTTOMRIGHT", SW_BarHeightSlider, "BOTTOMLEFT", -2, 2) - SkinSlider(SW_ColCountSlider) - SkinSlider(SW_TextureSlider) - SkinSlider(SW_FontSizeSlider) - SkinButton(SW_SetFrameTxtFrame_Button) - SkinButton(SW_SetOptTxtFrame_Button) - SkinCheckbox(SW_ColorsOptUseClass) - SW_BarSettings_Visuals:SetPoint("TOPLEFT", 5, -50) - SW_BarSettings_Visuals:SetPoint("BOTTOMRIGHT", 2, 10) - SkinCheckbox(SW_PF_Inactive,18) - SkinCheckbox(SW_PF_Active,18) - SkinCheckbox(SW_PF_Current,18) - SkinCheckbox(SW_PF_VPP,18) - SkinCheckbox(SW_PF_VPR,18) - SkinCheckbox(SW_PF_MM,18) - SkinCheckbox(SW_PF_MR,18) - SkinCheckbox(SW_PF_MB,18) - SkinCheckbox(SW_PF_Ignore,18) - - -- general settings - CreateBackdrop(SW_GeneralSettings, nil, nil, .8) - CreateBackdrop(SW_GeneralSettings_Title, 0) - SkinCheckbox(SW_Chk_ShowTLB,18) - SkinCheckbox(SW_Chk_ShowSyncB,18) - SkinCheckbox(SW_Chk_ShowConsoleB,18) - SkinCheckbox(SW_Chk_ShowDPS,18) - CreateBackdrop(SW_CS_Damage_Button) - SetAllPointsOffset(SW_CS_Damage_Button.backdrop, SW_CS_Damage_Button, 2) - SetHighlight(SW_CS_Damage_Button) - CreateBackdrop(SW_CS_Heal_Button) - SetAllPointsOffset(SW_CS_Heal_Button.backdrop, SW_CS_Heal_Button, 2) - SetHighlight(SW_CS_Heal_Button) - CreateBackdrop(SW_CS_TitleBar_Button) - SetAllPointsOffset(SW_CS_TitleBar_Button.backdrop, SW_CS_TitleBar_Button, 2) - SetHighlight(SW_CS_TitleBar_Button) - CreateBackdrop(SW_CS_TitleFont_Button) - SetAllPointsOffset(SW_CS_TitleFont_Button.backdrop, SW_CS_TitleFont_Button, 2) - SetHighlight(SW_CS_TitleFont_Button) - CreateBackdrop(SW_CS_Backdrops_Button) - SetAllPointsOffset(SW_CS_Backdrops_Button.backdrop, SW_CS_Backdrops_Button, 2) - SetHighlight(SW_CS_Backdrops_Button) - CreateBackdrop(SW_CS_MainWinBack_Button) - SetAllPointsOffset(SW_CS_MainWinBack_Button.backdrop, SW_CS_MainWinBack_Button, 2) - SetHighlight(SW_CS_MainWinBack_Button) - CreateBackdrop(SW_CS_ClassCAlpha_Button) - SetAllPointsOffset(SW_CS_ClassCAlpha_Button.backdrop, SW_CS_ClassCAlpha_Button, 2) - SetHighlight(SW_CS_ClassCAlpha_Button) - SkinSlider(SW_OptCountSlider) - SkinSlider(SW_GeneralSettingsIconSlider) - SkinSlider(SW_GeneralSettingsIconRadiusSlider) - - -- announce - CreateBackdrop(SW_BarReportFrame, nil, nil, .8) - CreateBackdrop(SW_BarReportFrame_Title, 0) - SkinCheckbox(SW_RepTo_Say,18) - SkinCheckbox(SW_RepTo_Group,18) - SkinCheckbox(SW_RepTo_Raid,18) - SkinCheckbox(SW_RepTo_Guild,18) - SkinCheckbox(SW_RepTo_Channel,18) - SkinCheckbox(SW_RepTo_Whisper,18) - SkinCheckbox(SW_RepTo_Officer,18) - SkinCheckbox(SW_RepTo_Clipboard,18) - SkinCheckbox(SW_Chk_RepMulti,18) - SkinSlider(SW_BarReportFrameRepAmountSlider) - SkinButton(SW_BarReportFrame_SendReport) - SkinButton(SW_BarReportFrame_VarText_SetTextFromTarget) - StripTextures(SW_BarReportFrame_VarText_EditBox, "BACKGROUND") - CreateBackdrop(SW_BarReportFrame_VarText_EditBox) - - -- copy - CreateBackdrop(SW_TextWindow, nil, nil, .75) - CreateBackdrop(SW_TextWindow_Title, 0) - SkinSlider(SW_TextWindowExportSlider) - StripTextures(SW_TextWindow_EditBox, "BACKGROUND") - CreateBackdrop(SW_TextWindow_EditBox) - - -- sync - CreateBackdrop(SW_BarSyncFrame, nil, nil, .8) - CreateBackdrop(SW_BarSyncFrame_Title, 0) - SkinCheckbox(SW_AutoVoteYes,18) - SkinCheckbox(SW_AutoVoteNo,18) - SkinScrollbar(SW_SyncListScrollBar) - - -- timeline - CreateBackdrop(SW_TimeLine, nil, nil, .8) - CreateBackdrop(SW_TimeLine_Title, 0) - SkinCheckbox(SW_Chk_TL_SafeMode,18) - SkinCheckbox(SW_Chk_TL_SingleSelect,18) - SkinCheckbox(SW_Chk_TL_AutoZone,18) - SkinCheckbox(SW_Chk_TL_AutoDelete,18) - SkinButton(SW_TL_Nuke) - SkinButton(SW_TL_ReloadUI) - SkinButton(SW_TL_Select) - SkinButton(SW_TL_Merge) - for i=1,10 do - SkinSW_RoundButton(string.format("SW_TimeLine_Item%d_Delete",i),12) - SkinSW_RoundButton(string.format("SW_TimeLine_Item%d_Rename",i),12) - end - SkinScrollbar(SW_TL_SelectorScrollBar) - - -- console - CreateBackdrop(SW_FrameConsole, nil, nil, .75) - CreateBackdrop(SW_FrameConsole_Title, 0) - SW_FrameConsole_Title:SetHeight(24) - SkinArrowButton(SW_FrameConsole_Text1_MsgUp, "up", 13) - SkinArrowButton(SW_FrameConsole_Text1_MsgDown, "down", 13) - SkinArrowButton(SW_FrameConsole_Text1_MsgBottom, "down", 13) - SW_FrameConsole_Text1_MsgUp:SetPoint("BOTTOMRIGHT", -5, 45) - SW_FrameConsole_Text1_MsgDown:SetPoint("BOTTOMRIGHT", -5, 30) - SW_FrameConsole_Text1_MsgBottom:SetPoint("BOTTOMRIGHT", -5, 12) - CreateBackdrop(SW_FrameConsole_Tab1, 0) - SW_FrameConsole_Tab1:SetHeight(24) - SW_FrameConsole_Tab1_Text:SetParent(SW_FrameConsole_Tab1.backdrop) - CreateBackdrop(SW_FrameConsole_Tab2, 0) - SW_FrameConsole_Tab2:SetHeight(24) - SW_FrameConsole_Tab2_Text:SetParent(SW_FrameConsole_Tab2.backdrop) - SkinCheckbox(SW_Chk_ShowEvent,18) - SkinCheckbox(SW_Chk_ShowOrigStr,18) - SkinCheckbox(SW_Chk_ShowRegEx,18) - SkinCheckbox(SW_Chk_ShowMatch,18) - SkinCheckbox(SW_Chk_ShowSyncInfo,18) - SkinArrowButton(SW_FrameConsole_Text2_MsgUp,"up",13) - SkinArrowButton(SW_FrameConsole_Text2_MsgDown,"down",13) - SkinArrowButton(SW_FrameConsole_Text2_MsgBottom,"down",13) - SW_FrameConsole_Text2_MsgUp:SetPoint("BOTTOMRIGHT", -5, 45) - SW_FrameConsole_Text2_MsgDown:SetPoint("BOTTOMRIGHT", -5, 30) - SW_FrameConsole_Text2_MsgBottom:SetPoint("BOTTOMRIGHT", -5, 12) - end - end) - - HookAddonOrVariable("WIM", function() - if C.thirdparty.wim.enable == "0" then return end - - _G.WIM_isLinkURL = function() return false end - _G.WIM_ConvertURLtoLinks = function(text) -- use pfUI link handler (it is more correct) - return pfUI.chat:HandleLink(text) - end - - -- replace wim class colors with pfUI ones - hooksecurefunc("WIM_InitClassProps", function() - for class in pairs(RAID_CLASS_COLORS) do - local wimclass = _G[format("WIM_LOCALIZED_%s",class)] - local colorstr = gsub(RAID_CLASS_COLORS[class].colorStr, "^ff", "") - _G.WIM_ClassColors[wimclass] = colorstr - end - end, true) - - -- convo menu - CreateBackdrop(WIM_Icon_ToolTip, 0, nil, tonumber(C.tooltip.alpha)) - CreateBackdrop(WIM_ConversationMenu, 0, nil, .75) - for i=1, _G.WIM_MaxMenuCount do - local btn, btnClose = _G["WIM_ConversationMenuTellButton"..i], _G["WIM_ConversationMenuTellButton"..i.."Close"] - SkinCloseButton(btnClose, btn, -4, -1) - btnClose:SetWidth(13) - btnClose:SetHeight(13) - end - hooksecurefunc("WIM_Icon_DropDown_Update", function() - for i=1,_G.WIM_MaxMenuCount do - local btn = _G["WIM_ConversationMenuTellButton"..i] - if i==1 and btn:IsEnabled() == 0 then return end - if not btn:IsShown() then return end - local btn_txt = btn:GetText() - local user = btn.theUser - local userclr = _G.WIM_PlayerCache[user] and _G.WIM_PlayerCache[user].class and _G.WIM_UserWithClassColor(user) - if userclr and user ~= userclr then - btn_txt = gsub(btn_txt, user, format("|r%s",userclr)) - btn:SetText(btn_txt) - end - end - end, true) - - do -- history frame - CreateBackdrop(WIM_HistoryFrame, nil, nil, .8) - CreateBackdropShadow(WIM_HistoryFrame) - WIM_HistoryFrame.backdrop:SetPoint("TOPLEFT", 10, -10) - WIM_HistoryFrame.backdrop:SetPoint("BOTTOMRIGHT", -10, 10) - WIM_HistoryFrame:SetHitRectInsets(10,10,10,10) - StripTextures(WIM_HistoryFrameTitle) - - SkinCloseButton(WIM_HistoryFrameTitleExitButton, WIM_HistoryFrame.backdrop, -6, -6) - - SkinArrowButton(WIM_HistoryFrameMessageListScrollUp, 'up', 18) - WIM_HistoryFrameMessageListScrollUp:SetPoint("TOPLEFT", WIM_HistoryFrameMessageListScrollingMessageFrame, "TOPRIGHT", 10, -6) - SkinArrowButton(WIM_HistoryFrameMessageListScrollDown, 'down', 18) - WIM_HistoryFrameMessageListScrollDown:SetPoint("BOTTOMLEFT", WIM_HistoryFrameMessageListScrollingMessageFrame, "BOTTOMRIGHT", 10, 0) - end - do -- options frame - CreateBackdrop(WIM_Options, nil, nil, .8) - CreateBackdropShadow(WIM_Options) - WIM_Options.backdrop:SetPoint("TOPLEFT", 12, -10) - WIM_Options.backdrop:SetPoint("BOTTOMRIGHT", -12, 0) - WIM_Options:SetHitRectInsets(12,12,10,0) - - WIM_OptionsTitleBorder:SetTexture(nil) - WIM_OptionsTitleString:SetPoint("TOP", WIM_Options.backdrop, "TOP", 0, -4) - - SkinCloseButton(WIM_OptionsExitButton, WIM_Options.backdrop, -6, -6) - WIM_OptionsHelpButton:ClearAllPoints() - WIM_OptionsHelpButton:SetPoint("RIGHT", WIM_OptionsExitButton, "LEFT", -10, 0) - WIM_OptionsHelpButton:SetHighlightTexture(nil) - - SkinCheckbox(WIM_OptionsEnableWIM) - - do -- display - StripTextures(WIM_OptionsDisplayCaption) - SkinCheckbox(WIM_OptionsDisplayShowShortcutBar) - SkinCheckbox(WIM_OptionsDisplayShowTimeStamps) - SkinCheckbox(WIM_OptionsDisplayShowCharacterInfo) - SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoClassIcon) - SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoClassColor) - SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoDetails) - if WIM_OptionsDisplayShowCharacterInfoZone then SkinCheckbox(WIM_OptionsDisplayShowCharacterInfoZone) end - - SkinSlider(WIM_OptionsDisplayFontSize) - SkinSlider(WIM_OptionsDisplayWindowSize) - SkinSlider(WIM_OptionsDisplayWindowAlpha) - end - do -- minimap - StripTextures(WIM_OptionsMiniMapCaption) - SkinCheckbox(WIM_OptionsMiniMapEnabled) - SkinCheckbox(WIM_OptionsMiniMapFreeMoving) - - SkinSlider(WIM_OptionsMiniMapIconPosition) - end - -- alignment for WIM_OptionsTabbedFrame: - WIM_OptionsOptionTab1:SetPoint("TOPLEFT", WIM_OptionsMiniMap, "BOTTOMLEFT", 10, -4) -- move the upper bound WIM_OptionsTabbedFrame - WIM_OptionsDisplay:SetHeight(540) -- move the lower bound WIM_OptionsTabbedFrame - WIM_Options_GeneralScroll:SetPoint("BOTTOMRIGHT", WIM_OptionsTabbedFrame, "BOTTOMRIGHT", -30, 10) - ------------------------------------------------- - - -- wrap SkinCheckbox to fix issues with scrollframe breaking layers - local SkinScrollchildCheckbox = function(f, s) - SkinCheckbox(f, s) - f.backdrop:SetParent(f:GetParent()) - f:SetParent(f.backdrop) - end - do -- general tab - SkinTab(WIM_OptionsOptionTab1) - SkinScrollbar(WIM_Options_GeneralScrollScrollBar) - - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralAutoFocus) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralKeepFocus) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralKeepFocusRested) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralShowToolTips) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopOnSend) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopNew) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopUpdate) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPopCombat) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralSupress) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralPlaySoundWisp) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralSortOrderAlpha) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralShowAFK) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralUseEscape) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralInterceptSlashWisp) - SkinScrollchildCheckbox(WIM_OptionsTabbedFrameGeneralBlockLowLevel) - end - do -- windows tab - SkinTab(WIM_OptionsOptionTab2) - - SkinCheckbox(WIM_OptionsTabbedFrameWindowWindowCascade) - SkinButton(WIM_OptionsTabbedFrameWindowWindowAnchor) - SkinDropDown(WIM_OptionsTabbedFrameWindowCascadeDirection) - SkinSlider(WIM_OptionsTabbedFrameWindowWindowWidth) - SkinSlider(WIM_OptionsTabbedFrameWindowWindowHeight) - WIM_OptionsTabbedFrameWindowWindowHeight:SetPoint("TOPLEFT", WIM_OptionsTabbedFrameWindowWindowWidth, "BOTTOMLEFT", 0, -40) - WIM_OptionsTabbedFrameWindowWindowHeight:SetMinMaxValues(240, 600) -- fix min value. WIM.lua:643. - end - do -- filters tab - SkinTab(WIM_OptionsOptionTab3) - - SkinCheckbox(WIM_OptionsTabbedFrameFilterAliasShowAsComment) - for _,v in pairs({"Alias", "Filtering"}) do - SkinCheckbox(_G["WIM_OptionsTabbedFrameFilter"..v.."Enabled"]) - SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."ColumnHeader1"]) - SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."ColumnHeader2"]) - SkinScrollbar(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelScrollBarScrollBar"]) - SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelAdd"]) - SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelRemove"]) - SkinButton(_G["WIM_OptionsTabbedFrameFilter"..v.."PanelEdit"]) - end - - CreateBackdrop(WIM_Options_AliasWindow, nil, nil, .8) - WIM_Options_AliasWindowTitleBorder:SetTexture(nil) - CreateBackdrop(WIM_Options_AliasWindowPanel1, nil, nil) - WIM_Options_AliasWindowPanel1.backdrop:SetPoint("TOPLEFT", 0, -4) - WIM_Options_AliasWindowPanel1.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) - CreateBackdrop(WIM_Options_AliasWindowPanel2, nil, nil) - WIM_Options_AliasWindowPanel2.backdrop:SetPoint("TOPLEFT", 0, -4) - WIM_Options_AliasWindowPanel2.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) - SkinButton(WIM_Options_AliasWindowOK) - SkinButton(WIM_Options_AliasWindowCancel) - - CreateBackdrop(WIM_Options_FilterWindow, nil, nil, .8) - WIM_Options_FilterWindowTitleBorder:SetTexture(nil) - CreateBackdrop(WIM_Options_FilterWindowPanel1, nil, nil) - WIM_Options_FilterWindowPanel1.backdrop:SetPoint("TOPLEFT", 0, -4) - WIM_Options_FilterWindowPanel1.backdrop:SetPoint("BOTTOMRIGHT", 0, 8) - SkinCheckbox(WIM_Options_FilterWindow_ActionIgnore) - SkinCheckbox(WIM_Options_FilterWindow_ActionBlock) - SkinButton(WIM_Options_FilterWindowOK) - SkinButton(WIM_Options_FilterWindowCancel) - end - do -- history tab - SkinTab(WIM_OptionsOptionTab4) - - SkinCheckbox(WIM_OptionsTabbedFrameHistoryEnabled) - SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordEveryone) - SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordFriends) - SkinCheckbox(WIM_OptionsTabbedFrameHistoryRecordGuild) - SkinCheckbox(WIM_OptionsTabbedFrameHistoryShowInMessage) - SkinCheckbox(WIM_OptionsTabbedFrameHistorySetMaxToStore) - SkinCheckbox(WIM_OptionsTabbedFrameHistorySetAutoDelete) - SkinDropDown(WIM_OptionsTabbedFrameHistoryMessageCount) - SkinDropDown(WIM_OptionsTabbedFrameHistoryMaxCount) - SkinDropDown(WIM_OptionsTabbedFrameHistoryAutoDeleteTime) - SkinButton(WIM_OptionsTabbedFrameHistoryColumnHeader1) - SkinButton(WIM_OptionsTabbedFrameHistoryColumnHeader2) - SkinScrollbar(WIM_OptionsTabbedFrameHistoryPanelScrollBarScrollBar) - SkinButton(WIM_OptionsTabbedFrameHistoryPanelDeleteUser) - SkinButton(WIM_OptionsTabbedFrameHistoryPanelViewHistory) - end - end - do -- help frame - CreateBackdrop(WIM_Help, nil, nil, .8) - WIM_HelpTitleBorder:SetTexture(nil) - SkinCloseButton(WIM_HelpExitButton, WIM_Help.backdrop, -6, -6) - SkinTab(WIM_HelpTab1) - SkinTab(WIM_HelpTab2) - SkinTab(WIM_HelpTab3) - SkinTab(WIM_HelpTabCredits) - SkinScrollbar(WIM_HelpScrollFrameScrollBar) - end - - hooksecurefunc("WIM_WindowOnShow", function() - if this.backdrop then return end -- already skinned - - local windowname = this:GetName() - CreateBackdrop(this, nil, nil, .8) - CreateBackdropShadow(this) - local from = _G[windowname.."From"] - from:ClearAllPoints() - from:SetPoint("TOP", 0, -10) - local exit = _G[windowname.."ExitButton"] - SkinCloseButton(exit, this.backdrop, -6, -6) - local history = _G[windowname.."HistoryButton"] - history:ClearAllPoints() - history:SetPoint("TOPRIGHT", exit, "TOPLEFT", -2, 2) - - this.avatar = CreateFrame("Frame", nil, this) - this.avatar:SetAllPoints(this) - - local classicon = _G[windowname .. "ClassIcon"] - classicon:SetTexCoord(.3, .7, .3, .7) - classicon:SetParent(this.avatar) - classicon:ClearAllPoints() - classicon:SetPoint("TOPLEFT", 10 , -10) - classicon:SetWidth(26) - classicon:SetHeight(26) - - local msgframe = _G[windowname .. "ScrollingMessageFrame"] - msgframe:SetPoint("TOPLEFT", this, "TOPLEFT", 10, -45) - msgframe:SetPoint("BOTTOMRIGHT", this, "BOTTOMRIGHT", -32, 32) - msgframe:SetFont(pfUI.font_default, C.global.font_size) - - local msgbox = _G[windowname .. "MsgBox"] - CreateBackdrop(msgbox) - msgbox:ClearAllPoints() - msgbox:SetPoint("TOPLEFT", msgframe, "BOTTOMLEFT", 0, -5) - msgbox:SetPoint("TOPRIGHT", msgframe, "BOTTOMRIGHT", 0, -5) - msgbox:SetTextInsets(5, 5, 5, 5) - msgbox:SetHeight(20) - - for i = 1, 5 do - local btn = _G[windowname .. "ShortcutFrameButton"..i] - local icon = _G[windowname .. "ShortcutFrameButton"..i.."Icon"] - local prev_btn = _G[windowname .. "ShortcutFrameButton"..(i-1)] - StripTextures(btn, nil, "ARTWORK") - icon:SetDrawLayer("ARTWORK") - SkinButton(btn, nil, nil, nil, icon) - btn:ClearAllPoints() - if not prev_btn then - btn:SetPoint("TOP", exit, "BOTTOM", 0, -20) - else - btn:SetPoint("TOP", prev_btn, "BOTTOM", 0, -4) - end - end - local scrollup, scrolldown = _G[windowname .. "ScrollUp"], _G[windowname .. "ScrollDown"] - SkinArrowButton(scrollup, "up", 18) - SkinArrowButton(scrolldown, "down", 18) - scrolldown:ClearAllPoints() - scrolldown:SetPoint("BOTTOMRIGHT", -4, 30) - scrollup:ClearAllPoints() - scrollup:SetPoint("BOTTOMLEFT", scrolldown, "TOPLEFT", 0, 2) - - StripTextures(_G[windowname .. "IgnoreConfirm"]) - SkinButton(_G[windowname .. "IgnoreConfirmYes"]) - SkinButton(_G[windowname .. "IgnoreConfirmNo"]) - end) - end) - - HookAddonOrVariable("SortBags", function() - if C.thirdparty.sortbags.enable == "0" then return end - - if not pfUI.thirdparty.bagsort then pfUI.thirdparty.bagsort = "sortbags" end - pfUI.thirdparty.sortbags = CreateFrame("Frame", nil) - pfUI.thirdparty.sortbags:RegisterEvent("PLAYER_ENTERING_WORLD") - pfUI.thirdparty.sortbags:SetScript("OnEvent", function() - pfUI.thirdparty.sortbags:UnregisterAllEvents() - - -- don't do anything if another bagsorter was found - if pfUI.thirdparty.bagsort ~= "sortbags" then return end - - -- make sure the bag module is enabled - if not pfUI.bag or not pfUI.bag.right then return end - - local rawborder, default_border = GetBorderSize("bags") - - -- draw the button - if not pfUI.bag.right.sort then - pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) - pfUI.bag.right.sort:SetParent(pfUI.bag.right) - pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.right.sort, default_border) - pfUI.bag.right.sort:SetHeight(12) - pfUI.bag.right.sort:SetWidth(12) - pfUI.bag.right.sort:SetTextColor(1,1,.25,1) - pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.right.sort.texture:ClearAllPoints() - pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) - pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.right.sort:SetScript("OnEnter", function () - pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) - GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.right.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.right.sort) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.right.sort:SetScript("OnClick", function() - SortBags() - end) - - pfUI.bag.right.search:ClearAllPoints() - pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) - pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) - end - - -- draw the button - if not pfUI.bag.left.sort then - pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) - pfUI.bag.left.sort:SetParent(pfUI.bag.left) - pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.left.sort, default_border) - pfUI.bag.left.sort:SetHeight(12) - pfUI.bag.left.sort:SetWidth(12) - pfUI.bag.left.sort:SetTextColor(1,1,.25,1) - pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.left.sort.texture:ClearAllPoints() - pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) - pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.left.sort:SetScript("OnEnter", function () - pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) - GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.left.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.left.sort) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.left.sort:SetScript("OnClick", function() - SortBankBags() - end) - end - end) - end) - - HookAddonOrVariable("MrPlow", function() - if C.thirdparty.mrplow.enable == "0" then return end - - local MrPlowL = AceLibrary and AceLibrary("AceLocale-2.2"):new("MrPlow") - if not (MrPlowL and MrPlowL["Bank"]) then return end - pfUI.thirdparty.bagsort = "mrplow" -- dont't check for sortbags, use mrplow as default - - pfUI.thirdparty.mrplow = CreateFrame("Frame", nil) - pfUI.thirdparty.mrplow:RegisterEvent("PLAYER_ENTERING_WORLD") - pfUI.thirdparty.mrplow:SetScript("OnEvent", function() - pfUI.thirdparty.mrplow:UnregisterAllEvents() - - -- don't do anything if another bagsorter was found - if pfUI.thirdparty.bagsort ~= "mrplow" then return end - - -- make sure the bag module is enabled - if not pfUI.bag or not pfUI.bag.right then return end - - local rawborder, default_border = GetBorderSize("bags") - - -- draw the button - if not pfUI.bag.right.sort then - pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) - pfUI.bag.right.sort:SetParent(pfUI.bag.right) - pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.right.sort, default_border) - pfUI.bag.right.sort:SetHeight(12) - pfUI.bag.right.sort:SetWidth(12) - pfUI.bag.right.sort:SetTextColor(1,1,.25,1) - pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.right.sort.texture:ClearAllPoints() - pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) - pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.right.sort:SetScript("OnEnter", function () - pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(MrPlowL["Mr Plow"]) - GameTooltip:AddLine(MrPlowL["The Works"],1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.right.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.right.sort) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.right.sort:SetScript("OnClick", function() - MrPlow:Works() - end) - - pfUI.bag.right.search:ClearAllPoints() - pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) - pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) - end - - -- draw the button - if not pfUI.bag.left.sort then - pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) - pfUI.bag.left.sort:SetParent(pfUI.bag.left) - pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.left.sort, default_border) - pfUI.bag.left.sort:SetHeight(12) - pfUI.bag.left.sort:SetWidth(12) - pfUI.bag.left.sort:SetTextColor(1,1,.25,1) - pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.left.sort.texture:ClearAllPoints() - pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) - pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.left.sort:SetScript("OnEnter", function () - pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(MrPlowL["Mr Plow"]) - GameTooltip:AddLine(MrPlowL["Bank"],1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.left.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.left.sort) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.left.sort:SetScript("OnClick", function() - MrPlow:Works(MrPlowL["Bank"]) - end) - end - end) - end) - - HookAddonOrVariable("FlightMap", function() - if C.thirdparty.flightmap.enable == "0" then return end - - FlightMapTimesBorder:Hide() - FlightMapTimesFlash:Hide() - - FlightMapTimesFrame:SetStatusBarTexture(pfUI.media["img:bar"]) - FlightMapTimesFrame:SetHeight(18) - CreateBackdrop(FlightMapTimesFrame) - CreateBackdropShadow(FlightMapTimesFrame) - - FlightMapTimesText:ClearAllPoints() - FlightMapTimesText:SetPoint("CENTER", FlightMapTimesFrame, "CENTER", 0, 0) - FlightMapTimesText:SetFont(pfUI.font_default, 12, "OUTLINE") - end) - - HookAddonOrVariable("TheoryCraft_SetUpButton", function() - if C.thirdparty.theorycraft.enable == "0" then return end - - -- set pfUI bar font - if TheoryCraft_Settings then - TheoryCraft_Settings["FontPath"] = pfUI.media[C.bars.font] - end - - if not pfUI.bars then return end - - -- make theorycraft aware of pfUI bars - for i=1,10 do - for j=1,10 do - TheoryCraft_SetUpButton(pfUI.bars[i][j]:GetName(), "Normal") - end - end - end) - - HookAddonOrVariable("SM_GetActionSpell", function() - if C.thirdparty.supermacro.enable == "0" then return end - if not pfUI.bars then return end - - -- hook events to include SuperMacro refreshs - local ButtonFullUpdate = pfUI.bars.ButtonFullUpdate - pfUI.bars.ButtonFullUpdate = function(button) - -- run the old function - ButtonFullUpdate(button) - - -- update with SuperMacro textures - if not button then return end - local text = GetActionText(button:GetID()) - - if text then - if _G.SM_ACTION_SPELL and _G.SM_ACTION_SPELL["regular"] and _G.SM_ACTION_SPELL["regular"][text] then - button.icon:SetTexture(_G.SM_ACTION_SPELL["regular"][text].texture) - end - end - end - - -- hook events to include SuperMacro refreshs - local ButtonEnter = pfUI.bars[1][1]:GetScript("OnEnter") - local function NewButtonEnter() - ButtonEnter() - SM_ActionButton_SetTooltip() - end - - -- reassign the new event handler - for i=1,10 do - for j=1,12 do - pfUI.bars[i][j]:SetScript("OnEvent", NewButtonEvent) - pfUI.bars[i][j]:SetScript("OnEnter", NewButtonEnter) - end - end - - -- trigger the event whenever SuperMacro got an update - hooksecurefunc("SM_UpdateActionSpell", function() - for slot=1,120 do pfUI.bars.update[slot] = true end - end) - end) - - HookAddonOrVariable("AtlasLoot", function() - if C.thirdparty.atlasloot.enable == "0" then return end - - CreateBackdrop(AtlasLootTooltip) - CreateBackdropShadow(AtlasLootTooltip) - - if pfUI.eqcompare then - HookScript(AtlasLootTooltip, "OnShow", pfUI.eqcompare.GameTooltipShow) - HookScript(AtlasLootTooltip, "OnHide", function() - ShoppingTooltip1:Hide() - ShoppingTooltip2:Hide() - end) - end - end) - - HookAddonOrVariable("MyRolePlay", function() - if C.thirdparty.myroleplay.enable == "0" then return end - - if pfUI.uf.target then - -- set mrp icon to target frame - mrpButtonIconFrame:SetParent(pfUI.uf.target) - mrpButtonIconFrame:SetFrameStrata("DIALOG") - mrpButtonIconFrame:SetWidth(20) - mrpButtonIconFrame:SetHeight(20) - mrpButtonIconFrame:SetPoint("TOPRIGHT", pfUI.uf.target, "TOPRIGHT", 10, 10) - function _G.mrpMoveIcon() - mrpButtonIconFrame:SetPoint("TOPRIGHT", pfUI.uf.target, "TOPRIGHT", 10, 10) - end - end - - if pfUI.uf.player then - -- set tooltip function for player frame - local oldfunc = pfUI.uf.player:GetScript("OnEnter") - pfUI.uf.player:SetScript("OnEnter", function() - oldfunc() - mrpDisplayTooltip("player", "PLAYER") - end) - end - end) - - HookAddonOrVariable("DruidManaBarBackground", function() - if C.thirdparty.druidmana.enable == "0" then return end - DruidManaBar:SetParent(UIParent) - DruidManaBar.bd:Hide() - - local p = ManaBarColor[0] - local pr, pg, pb = 0, 0, 0 - if p then pr, pg, pb = p.r + .5, p.g +.5, p.b +.5 end - DruidManaBar:SetStatusBarColor(pr, pg, pb) - DruidManaBar:SetStatusBarTexture(pfUI.media["img:bar"]) - - local f = pfUI.uf.player - DruidManaBar:SetWidth((f.config.pwidth ~= "-1" and f.config.pwidth or f.config.width)) - DruidManaBar:SetHeight(f.config.pheight) - DruidManaBar.text:SetFont(pfUI.font_unit, C.global.font_unit_size, "OUTLINE") - DruidManaBar.text:SetFontObject(GameFontWhite) - - CreateBackdrop(DruidManaBar) - CreateBackdropShadow(DruidManaBar) - - DruidManaBar:SetScript("OnMouseUp", function(button) - f:Click(button) - end) - - DruidManaBar:ClearAllPoints() - DruidManaBar:SetPoint("CENTER", 0, 0) - UpdateMovable(DruidManaBar) - end) - - HookAddonOrVariable("NoteIt", function() - if C.thirdparty.noteit.enable == "0" then return end - - -- Main window - pfUI.api.StripTextures(NoteInputFrame, true) - CreateBackdrop(NoteInputFrame, nil, nil, .75) - CreateBackdropShadow(NoteInputFrame) - - NoteInputFrame.backdrop:SetPoint("TOPLEFT", 10, -12) - NoteInputFrame.backdrop:SetPoint("BOTTOMRIGHT", -32, 30) - - -- close button - pfUI.api.SkinCloseButton(NoteInputFrameCloseButton, NoteInputFrame, -37, -17) - - -- Options button - pfUI.api.SkinButton(NoteInputOptionsButton) - NoteInputOptionsButton:ClearAllPoints() - NoteInputOptionsButton:SetPoint("TOPLEFT", NoteInputTextBackground, "BOTTOMLEFT", 0, -15) - NoteInputOptionsButton:SetWidth(145) - - -- Delete button - pfUI.api.SkinButton(NoteInputDeleteButton) - NoteInputDeleteButton:ClearAllPoints() - NoteInputDeleteButton:SetPoint("TOPLEFT", NoteInputOptionsButton, "BOTTOMLEFT", 0, -4) - NoteInputDeleteButton:SetWidth(145) - - -- Save button - pfUI.api.SkinButton(NoteInputFrameSaveButton) - NoteInputFrameSaveButton:ClearAllPoints() - NoteInputFrameSaveButton:SetPoint("TOPRIGHT", NoteInputTextBackground, "BOTTOMRIGHT", 0, -15) - NoteInputFrameSaveButton:SetWidth(145) - - -- Cancel button - pfUI.api.SkinButton(NoteInputFrameExitButton) - NoteInputFrameExitButton:ClearAllPoints() - NoteInputFrameExitButton:SetPoint("TOPLEFT", NoteInputFrameSaveButton, "BOTTOMLEFT", 0, -4) - NoteInputFrameExitButton:SetWidth(145) - - -- Window title - NoteInputTitleText:SetTextColor(1,1,.25,1) - - -- Scrollbars - pfUI.api.SkinScrollbar(NoteInputNameChooseFrameScrollBar) - pfUI.api.SkinScrollbar(NoteInputNoteFrameScrollBar) - - -- Search/Input label frame - NoteInputNameLabel:ClearAllPoints() - NoteInputNameLabel:SetPoint("TOPLEFT", NoteInputTitleText, "BOTTOMLEFT", -10, 0) - - -- Search/Input input frame - pfUI.api.StripTextures(NoteInputNameEditBox) - CreateBackdrop(NoteInputNameEditBox) - NoteInputNameEditBox:SetTextInsets(5,5,5,5) - NoteInputNameEditBox:ClearAllPoints() - NoteInputNameEditBox:SetPoint("TOPLEFT", NoteInputNameLabel, "BOTTOMLEFT", 0, 0) - NoteInputNameEditBox:SetPoint("TOPRIGHT", NoteInputNameLabel, "BOTTOMRIGHT", 0, 0) - NoteInputNameEditBox:SetHeight(20) - - -- Frame holding the list (i think) - pfUI.api.StripTextures(NoteInputNameChooseFrame) - CreateBackdrop(NoteInputNameChooseFrame) - NoteInputNameChooseFrame:ClearAllPoints() - NoteInputNameChooseFrame:SetPoint("TOPLEFT", NoteInputNameEditBox, "BOTTOMLEFT", 0, -10) - NoteInputNameChooseFrame:SetPoint("TOPRIGHT", NoteInputNameEditBox, "BOTTOMRIGHT", -20, 0) - NoteInputNameChooseFrame:SetHeight(100) - - -- Note label frame - NoteInputNoteLabel:ClearAllPoints() - NoteInputNoteLabel:SetPoint("TOPLEFT", NoteInputNameChooseFrame, "BOTTOMLEFT", 0, 0) - NoteInputNoteLabel:SetPoint("TOPRIGHT", NoteInputNameChooseFrame, "BOTTOMRIGHT", 0, 0) - - -- Note input frame - pfUI.api.StripTextures(NoteInputNoteFrame) - CreateBackdrop(NoteInputNoteFrame) - NoteInputNoteEditBox:SetTextInsets(5,5,5,5) - NoteInputNoteFrame:ClearAllPoints() - NoteInputNoteFrame:SetPoint("TOPLEFT", NoteInputNoteLabel, "BOTTOMLEFT", 0, 0) - NoteInputNoteFrame:SetPoint("TOPRIGHT", NoteInputNoteLabel, "BOTTOMRIGHT", 0, 0) - NoteInputNoteFrame:SetHeight(140) - - -- Weird frames - NoteInputNameChooseBackground:Hide() - NoteInputTextBackground:Hide() - - NoteInputTextBackground:ClearAllPoints() - NoteInputTextBackground:SetPoint("TOPLEFT", NoteInputNameChooseFrame, "BOTTOMLEFT", -2, -38) - NoteInputTextBackground:SetPoint("TOPRIGHT", NoteInputNameChooseFrame, "BOTTOMRIGHT", 22, -38) - end) - - local EnableHealComm = function() - -- hook healcomm's addon message to parse single-player events - if AceLibrary and AceLibrary:HasInstance("HealComm-1.0") and pfUI.prediction then - local HealComm = AceLibrary("HealComm-1.0") - - -- use pfUI frames to draw healComm predictions - local pfHookHealCommSendAddonMessage = HealComm.SendAddonMessage - function HealComm.SendAddonMessage(this, msg) - if not UnitInRaid("player") and GetNumPartyMembers() < 1 then - pfUI.prediction:ParseChatMessage(UnitName("player"), msg) - end - pfHookHealCommSendAddonMessage(this, msg) - end - - -- disable pfUI predictions - pfUI.prediction.sender:UnregisterAllEvents() - pfUI.prediction.sender.enabled = nil - end - end - HookAddonOrVariable("HealComm", EnableHealComm) - HookAddonOrVariable("LunaUnitFrames", EnableHealComm) - HookAddonOrVariable("NotGrid", EnableHealComm) end)