pfUI:RegisterModule("gui", function () local default_border = tonumber(C.appearance.border.default) pfUI.gui = CreateFrame("Frame",nil,UIParent) pfUI.gui:RegisterEvent("PLAYER_ENTERING_WORLD") pfUI.gui:SetFrameStrata("DIALOG") pfUI.gui:SetWidth(500) pfUI.gui:SetHeight(500) pfUI.gui:Hide() CreateBackdrop(pfUI.gui, nil, nil, .8) pfUI.gui:SetPoint("CENTER",0,0) pfUI.gui:SetMovable(true) pfUI.gui:EnableMouse(true) pfUI.gui:SetScript("OnMouseDown",function() pfUI.gui:StartMoving() end) pfUI.gui:SetScript("OnMouseUp",function() pfUI.gui:StopMovingOrSizing() end) pfUI.gui:SetScript("OnHide",function() if ColorPickerFrame and ColorPickerFrame:IsShown() then ColorPickerFrame:Hide() end end) function pfUI.gui:Reload() CreateQuestionDialog("Some settings need to reload the UI to take effect.\nDo you want to reloadUI now?", function() pfUI.gui.settingChanged = nil ReloadUI() end) end function pfUI.gui:SaveScale(frame, scale) frame:SetScale(scale) if not C.position[frame:GetName()] then C.position[frame:GetName()] = {} end C.position[frame:GetName()]["scale"] = scale frame.drag.text:SetText("Scale: " .. scale) frame.drag.text:SetAlpha(1) frame.drag:SetScript("OnUpdate", function() this.text:SetAlpha(this.text:GetAlpha() -0.05) if this.text:GetAlpha() < 0.1 then this.text:SetText(strsub(this:GetParent():GetName(),3)) this.text:SetAlpha(1) this:SetScript("OnUpdate", function() return end) end end) end function pfUI.gui.HoverBind() pfUI.gui:Hide() if pfUI.hoverbind then pfUI.hoverbind:Show() end end function pfUI.gui:UnlockFrames() if not pfUI.gitter then pfUI.gitter = CreateFrame("Button", nil, UIParent) pfUI.gitter:SetAllPoints(WorldFrame) pfUI.gitter:SetFrameStrata("BACKGROUND") pfUI.gitter:SetScript("OnClick", function() pfUI.gui.UnlockFrames() end) local size = 1 local width = GetScreenWidth() local ratio = width / GetScreenHeight() local height = GetScreenHeight() * ratio local wStep = width / 128 local hStep = height / 128 for i = 0, 128 do local tx = pfUI.gitter:CreateTexture(nil, 'BACKGROUND') if i == 128 / 2 then tx:SetTexture(.1, .5, .4) else tx:SetTexture(0, 0, 0) end tx:SetPoint("TOPLEFT", pfUI.gitter, "TOPLEFT", i*wStep - (size/2), 0) tx:SetPoint('BOTTOMRIGHT', pfUI.gitter, 'BOTTOMLEFT', i*wStep + (size/2), 0) end local height = GetScreenHeight() for i = 0, 128 do local tx = pfUI.gitter:CreateTexture(nil, 'BACKGROUND') tx:SetTexture(.1, .5, .4) tx:SetPoint("TOPLEFT", pfUI.gitter, "TOPLEFT", 0, -(height/2) + (size/2)) tx:SetPoint('BOTTOMRIGHT', pfUI.gitter, 'TOPRIGHT', 0, -(height/2 + size/2)) end for i = 1, floor((height/2)/hStep) do local tx = pfUI.gitter:CreateTexture(nil, 'BACKGROUND') tx:SetTexture(0, 0, 0) tx:SetPoint("TOPLEFT", pfUI.gitter, "TOPLEFT", 0, -(height/2+i*hStep) + (size/2)) tx:SetPoint('BOTTOMRIGHT', pfUI.gitter, 'TOPRIGHT', 0, -(height/2+i*hStep + size/2)) tx = pfUI.gitter:CreateTexture(nil, 'BACKGROUND') tx:SetTexture(0, 0, 0) tx:SetPoint("TOPLEFT", pfUI.gitter, "TOPLEFT", 0, -(height/2-i*hStep) + (size/2)) tx:SetPoint('BOTTOMRIGHT', pfUI.gitter, 'TOPRIGHT', 0, -(height/2-i*hStep + size/2)) end pfUI.gitter:Hide() end pfUI.info:ShowInfoBox("|cff33ffccUnlock Mode|r\n" .. "This mode allows you to move frames by dragging them using the mouse cursor. " .. "Frames can be scaled by scrolling up and down.\nTo scale multiple frames at once (eg. raidframes), " .. "hold down the shift key while scrolling. Click into an empty space to go back to the pfUI menu.", 15, pfUI.gitter) if pfUI.gitter:IsShown() then pfUI.gitter:Hide() pfUI.gui:Show() else pfUI.gitter:Show() pfUI.gui:Hide() end for _,frame in pairs(pfUI.movables) do local frame = _G[frame] if frame then if not frame:IsShown() then frame.hideLater = true end if not frame.drag then frame.drag = CreateFrame("Frame", nil, frame) frame.drag:SetAllPoints(frame) frame.drag:SetFrameStrata("DIALOG") CreateBackdrop(frame.drag, nil, nil, .8) frame.drag.backdrop:SetBackdropBorderColor(.2, 1, .8) frame.drag:EnableMouseWheel(1) frame.drag.text = frame.drag:CreateFontString("Status", "LOW", "GameFontNormal") frame.drag.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") frame.drag.text:ClearAllPoints() frame.drag.text:SetAllPoints(frame.drag) frame.drag.text:SetPoint("CENTER", 0, 0) frame.drag.text:SetFontObject(GameFontWhite) local label = (strsub(frame:GetName(),3)) if frame.drag:GetHeight() > (2 * frame.drag:GetWidth()) then label = strvertical(label) end frame.drag.text:SetText(label) frame.drag:SetAlpha(1) frame.drag:SetScript("OnMouseWheel", function() local scale = round(frame:GetScale() + arg1/10, 1) if IsShiftKeyDown() and strsub(frame:GetName(),0,7) == "pfCombo" then for i=1,5 do local frame = _G["pfCombo" .. i] pfUI.gui:SaveScale(frame, scale) end elseif IsShiftKeyDown() and strsub(frame:GetName(),0,6) == "pfRaid" then for i=1,40 do local frame = _G["pfRaid" .. i] pfUI.gui:SaveScale(frame, scale) end elseif IsShiftKeyDown() and strsub(frame:GetName(),0,7) == "pfGroup" then for i=1,4 do local frame = _G["pfGroup" .. i] pfUI.gui:SaveScale(frame, scale) end elseif IsShiftKeyDown() and strsub(frame:GetName(),0,15) == "pfLootRollFrame" then for i=1,4 do local frame = _G["pfLootRollFrame" .. i] pfUI.gui:SaveScale(frame, scale) end else pfUI.gui:SaveScale(frame, scale) end -- repaint hackfix for panels if pfUI.panel and pfUI.chat then pfUI.panel.left:SetScale(pfUI.chat.left:GetScale()) pfUI.panel.right:SetScale(pfUI.chat.right:GetScale()) end if frame.OnMove then frame:OnMove() end end) end frame.drag:SetScript("OnMouseDown",function() if IsShiftKeyDown() then if strsub(frame:GetName(),0,7) == "pfCombo" then for i=1,5 do local cframe = _G["pfCombo" .. i] cframe:StartMoving() cframe:StopMovingOrSizing() cframe.drag.backdrop:SetBackdropBorderColor(1,1,1,1) end end if strsub(frame:GetName(),0,6) == "pfRaid" then for i=1,40 do local cframe = _G["pfRaid" .. i] cframe:StartMoving() cframe:StopMovingOrSizing() cframe.drag.backdrop:SetBackdropBorderColor(1,1,1,1) end end if strsub(frame:GetName(),0,7) == "pfGroup" then for i=1,4 do local cframe = _G["pfGroup" .. i] cframe:StartMoving() cframe:StopMovingOrSizing() cframe.drag.backdrop:SetBackdropBorderColor(1,1,1,1) end end if strsub(frame:GetName(),0,15) == "pfLootRollFrame" then for i=1,4 do local cframe = _G["pfLootRollFrame" .. i] cframe:StartMoving() cframe:StopMovingOrSizing() cframe.drag.backdrop:SetBackdropBorderColor(1,1,1,1) end end _, _, _, xpos, ypos = frame:GetPoint() frame.oldPos = { xpos, ypos } else frame.oldPos = nil end frame.drag.backdrop:SetBackdropBorderColor(1,1,1,1) frame:StartMoving() if frame.OnMove then frame:OnMove() end end) frame.drag:SetScript("OnMouseUp",function() frame:StopMovingOrSizing() _, _, _, xpos, ypos = frame:GetPoint() frame.drag.backdrop:SetBackdropBorderColor(.2,1,.8,1) if frame.oldPos then local diffxpos = frame.oldPos[1] - xpos local diffypos = frame.oldPos[2] - ypos if strsub(frame:GetName(),0,7) == "pfCombo" then for i=1,5 do local cframe = _G["pfCombo" .. i] cframe.drag.backdrop:SetBackdropBorderColor(.2,1,.8,1) if cframe:GetName() ~= frame:GetName() then local _, _, _, xpos, ypos = cframe:GetPoint() cframe:SetPoint("TOPLEFT", xpos - diffxpos, ypos - diffypos) local _, _, _, xpos, ypos = cframe:GetPoint() if not C.position[cframe:GetName()] then C.position[cframe:GetName()] = {} end C.position[cframe:GetName()]["xpos"] = xpos C.position[cframe:GetName()]["ypos"] = ypos end end elseif strsub(frame:GetName(),0,6) == "pfRaid" then for i=1,40 do local cframe = _G["pfRaid" .. i] cframe.drag.backdrop:SetBackdropBorderColor(.2,1,.8,1) if cframe:GetName() ~= frame:GetName() then local _, _, _, xpos, ypos = cframe:GetPoint() cframe:SetPoint("TOPLEFT", xpos - diffxpos, ypos - diffypos) local _, _, _, xpos, ypos = cframe:GetPoint() if not C.position[cframe:GetName()] then C.position[cframe:GetName()] = {} end C.position[cframe:GetName()]["xpos"] = xpos C.position[cframe:GetName()]["ypos"] = ypos end end elseif strsub(frame:GetName(),0,7) == "pfGroup" then for i=1,4 do local cframe = _G["pfGroup" .. i] cframe.drag.backdrop:SetBackdropBorderColor(.2,1,.8,1) if cframe:GetName() ~= frame:GetName() then local _, _, _, xpos, ypos = cframe:GetPoint() cframe:SetPoint("TOPLEFT", xpos - diffxpos, ypos - diffypos) local _, _, _, xpos, ypos = cframe:GetPoint() if not C.position[cframe:GetName()] then C.position[cframe:GetName()] = {} end C.position[cframe:GetName()]["xpos"] = xpos C.position[cframe:GetName()]["ypos"] = ypos end end elseif strsub(frame:GetName(),0,15) == "pfLootRollFrame" then for i=1,4 do local cframe = _G["pfLootRollFrame" .. i] cframe.drag.backdrop:SetBackdropBorderColor(.2,1,.8,1) if cframe:GetName() ~= frame:GetName() then local _, _, _, xpos, ypos = cframe:GetPoint() cframe:SetPoint("TOPLEFT", xpos - diffxpos, ypos - diffypos) local _, _, _, xpos, ypos = cframe:GetPoint() if not C.position[cframe:GetName()] then C.position[cframe:GetName()] = {} end C.position[cframe:GetName()]["xpos"] = xpos C.position[cframe:GetName()]["ypos"] = ypos end end end end if not C.position[frame:GetName()] then C.position[frame:GetName()] = {} end C.position[frame:GetName()]["xpos"] = xpos C.position[frame:GetName()]["ypos"] = ypos pfUI.gui.settingChanged = true end) if pfUI.gitter:IsShown() then frame:SetMovable(true) frame.drag:EnableMouse(true) frame.drag:Show() frame:Show() else frame:SetMovable(false) frame.drag:EnableMouse(false) frame.drag:Hide() if frame.hideLater == true then frame:Hide() end end end end end function pfUI.gui:SwitchTab(frame) local elements = { pfUI.gui.global, pfUI.gui.appearance, pfUI.gui.modules, pfUI.gui.uf, pfUI.gui.bar, pfUI.gui.panel, pfUI.gui.tooltip, pfUI.gui.castbar, pfUI.gui.thirdparty, pfUI.gui.chat, pfUI.gui.nameplates, } for _, hide in pairs(elements) do hide:Hide() CreateBackdrop(hide.switch, nil, true) end pfUI.gui.scroll:SetScrollChild(frame) pfUI.gui.scroll:UpdateScrollState() pfUI.gui.scroll:SetVerticalScroll(0) CreateBackdrop(frame.switch, nil, true) frame.switch:SetBackdropBorderColor(.2,1,.8) frame:Show() end function pfUI.gui:CreateConfigTab(text, bottom, func) -- automatically place buttons if not bottom then if not pfUI.gui.tabTop then pfUI.gui.tabTop = 0 else pfUI.gui.tabTop = pfUI.gui.tabTop + 1 end else if not pfUI.gui.tabBottom then pfUI.gui.tabBottom = 0 else pfUI.gui.tabBottom = pfUI.gui.tabBottom + 1 end end local frame = CreateFrame("Frame", nil, pfUI.gui) frame:SetWidth(pfUI.gui:GetWidth() - 3*default_border - 100) frame:SetHeight(100) frame.switch = CreateFrame("Button", nil, pfUI.gui) frame.switch:ClearAllPoints() frame.switch:SetWidth(100) frame.switch:SetHeight(22) if bottom then frame.switch:SetPoint("BOTTOMLEFT", default_border, pfUI.gui.tabBottom * (22 + default_border) + default_border) else frame.switch:SetPoint("TOPLEFT", default_border, -pfUI.gui.tabTop* (22 + default_border) -default_border) end CreateBackdrop(frame.switch, nil, true) frame.switch.text = frame.switch:CreateFontString("Status", "LOW", "GameFontNormal") frame.switch.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") frame.switch.text:SetAllPoints(frame.switch) frame.switch.text:SetPoint("CENTER", 0, 0) frame.switch.text:SetFontObject(GameFontWhite) frame.switch.text:SetText(text) -- replace by user defined function if not func then frame.switch:SetScript("OnClick", function() pfUI.gui:SwitchTab(frame) end) else frame.switch:SetScript("OnClick", func) end -- do not show title on bottom buttons if not bottom and not func then frame.title = frame:CreateFontString("Status", "LOW", "GameFontNormal") frame.title:SetFont(pfUI.font_default, C.global.font_size + 2, "OUTLINE") frame.title:SetPoint("TOP", 0, -10) frame.title:SetTextColor(.2,1,.8) frame.title:SetText(text) end return frame end function pfUI.gui:CreateConfig(parent, caption, category, config, widget, values, skip, named) -- parent object placement if parent.objectCount == nil then parent.objectCount = 1 elseif not skip then parent.objectCount = parent.objectCount + 1 parent.lineCount = 1 end if skip then if parent.lineCount == nil then parent.lineCount = 1 end if skip then parent.lineCount = parent.lineCount + 1 end end -- basic frame local frame = CreateFrame("Frame", nil, parent) frame:SetWidth(350) frame:SetHeight(25) frame:SetPoint("TOPLEFT", 25, parent.objectCount * -25) if not widget or (widget and widget ~= "button") then frame:SetBackdrop(pfUI.backdrop_underline) frame:SetBackdropBorderColor(1,1,1,.25) -- caption frame.caption = frame:CreateFontString("Status", "LOW", "GameFontNormal") frame.caption:SetFont(pfUI.font_default, C.global.font_size + 2, "OUTLINE") frame.caption:SetAllPoints(frame) frame.caption:SetFontObject(GameFontWhite) frame.caption:SetJustifyH("LEFT") frame.caption:SetText(caption) end frame.configCategory = category frame.configEntry = config frame.category = category frame.config = config if widget == "color" then -- color picker frame.color = CreateFrame("Button", nil, frame) frame.color:SetWidth(12) frame.color:SetHeight(12) CreateBackdrop(frame.color) frame.color:SetPoint("TOPRIGHT" , 0, -4) frame.color.prev = frame.color.backdrop:CreateTexture("OVERLAY") frame.color.prev:SetAllPoints(frame.color) local cr, cg, cb, ca = strsplit(",", category[config]) if not cr or not cg or not cb or not ca then cr, cg, cb, ca = 1, 1, 1, 1 end frame.color.prev:SetTexture(cr,cg,cb,ca) frame.color:SetScript("OnClick", function() local cr, cg, cb, ca = strsplit(",", category[config]) if not cr or not cg or not cb or not ca then cr, cg, cb, ca = 1, 1, 1, 1 end local preview = this.prev function ColorPickerFrame.func() local r,g,b = ColorPickerFrame:GetColorRGB() local a = 1 - OpacitySliderFrame:GetValue() r = round(r, 1) g = round(g, 1) b = round(b, 1) a = round(a, 1) preview:SetTexture(r,g,b,a) if not this:GetParent():IsShown() then category[config] = r .. "," .. g .. "," .. b .. "," .. a pfUI.gui.settingChanged = true end end function ColorPickerFrame.cancelFunc() preview:SetTexture(cr,cg,cb,ca) end ColorPickerFrame.opacityFunc = ColorPickerFrame.func ColorPickerFrame.element = this ColorPickerFrame.opacity = 1 - ca ColorPickerFrame.hasOpacity = 1 ColorPickerFrame:SetColorRGB(cr,cg,cb) ColorPickerFrame:SetFrameStrata("DIALOG") ShowUIPanel(ColorPickerFrame) end) end if widget == "warning" then CreateBackdrop(frame, nil, true) frame:SetBackdropBorderColor(1,.5,.5) frame:SetHeight(50) frame:SetPoint("TOPLEFT", 25, parent.objectCount * -35) parent.objectCount = parent.objectCount + 2 frame.caption:SetJustifyH("CENTER") frame.caption:SetJustifyV("CENTER") end if widget == "header" then frame:SetBackdrop(nil) frame:SetHeight(40) parent.objectCount = parent.objectCount + 1 frame.caption:SetJustifyH("LEFT") frame.caption:SetJustifyV("BOTTOM") frame.caption:SetTextColor(.2,1,.8,1) frame.caption:SetAllPoints(frame) end -- use text widget (default) if not widget or widget == "text" then -- input field frame.input = CreateFrame("EditBox", nil, frame) frame.input:SetTextColor(.2,1,.8,1) frame.input:SetJustifyH("RIGHT") frame.input:SetWidth(100) frame.input:SetHeight(20) frame.input:SetPoint("TOPRIGHT" , 0, 0) frame.input:SetFontObject(GameFontNormal) frame.input:SetAutoFocus(false) frame.input:SetText(category[config]) frame.input:SetScript("OnEscapePressed", function(self) this:ClearFocus() end) frame.input:SetScript("OnTextChanged", function(self) this:GetParent().category[this:GetParent().config] = this:GetText() end) frame.input:SetScript("OnEditFocusGained", function(self) pfUI.gui.settingChanged = true end) end -- use button widget if widget == "button" then frame.button = CreateFrame("Button", "pfButton", frame, "UIPanelButtonTemplate") CreateBackdrop(frame.button, nil, true) SkinButton(frame.button) frame.button:SetWidth(85) frame.button:SetHeight(20) frame.button:SetPoint("TOPRIGHT", -(parent.lineCount-1) * 90, -5) frame.button:SetText(caption) frame.button:SetTextColor(1,1,1,1) frame.button:SetScript("OnClick", values) end -- use checkbox widget if widget == "checkbox" then -- input field frame.input = CreateFrame("CheckButton", nil, frame, "UICheckButtonTemplate") frame.input:SetNormalTexture("") frame.input:SetPushedTexture("") frame.input:SetHighlightTexture("") CreateBackdrop(frame.input, nil, true) frame.input:SetWidth(14) frame.input:SetHeight(14) frame.input:SetPoint("TOPRIGHT" , 0, -4) frame.input:SetScript("OnClick", function () if this:GetChecked() then this:GetParent().category[this:GetParent().config] = "1" else this:GetParent().category[this:GetParent().config] = "0" end pfUI.gui.settingChanged = true end) if category[config] == "1" then frame.input:SetChecked() end end -- use dropdown widget if widget == "dropdown" and values then if not pfUI.gui.ddc then pfUI.gui.ddc = 1 else pfUI.gui.ddc = pfUI.gui.ddc + 1 end local name = pfUI.gui.ddc if named then name = named end frame.input = CreateFrame("Frame", "pfUIDropDownMenu" .. name, frame, "UIDropDownMenuTemplate") frame.input:ClearAllPoints() frame.input:SetPoint("TOPRIGHT" , 20, 3) frame.input:Show() frame.input.point = "TOPRIGHT" frame.input.relativePoint = "BOTTOMRIGHT" frame.input.values = values frame.input.Refresh = function() local function CreateValues() local info = {} for i, k in pairs(frame.input.values) do info.text = k info.checked = false info.func = function() UIDropDownMenu_SetSelectedID(frame.input, this:GetID(), 0) if category[config] ~= this:GetText() then pfUI.gui.settingChanged = true category[config] = this:GetText() end end UIDropDownMenu_AddButton(info) if category[config] == k then frame.input.current = i end end end UIDropDownMenu_Initialize(frame.input, CreateValues) end frame.input:Refresh() UIDropDownMenu_SetWidth(120, frame.input) UIDropDownMenu_SetButtonWidth(125, frame.input) UIDropDownMenu_JustifyText("RIGHT", frame.input) UIDropDownMenu_SetSelectedID(frame.input, frame.input.current) for i,v in ipairs({frame.input:GetRegions()}) do if v.SetTexture then v:Hide() end if v.SetTextColor then v:SetTextColor(.2,1,.8) end if v.SetBackdrop then CreateBackdrop(v) end end end return frame end -- [[ config section ]] -- pfUI.gui.deco = CreateFrame("Frame", nil, pfUI.gui) pfUI.gui.deco:ClearAllPoints() pfUI.gui.deco:SetPoint("TOPLEFT", pfUI.gui, "TOPLEFT", 4*default_border + 100,-2*default_border) pfUI.gui.deco:SetPoint("BOTTOMRIGHT", pfUI.gui, "BOTTOMRIGHT", -2*default_border,2*default_border) CreateBackdrop(pfUI.gui.deco, nil, nil, .8) pfUI.gui.deco.up = CreateFrame("Frame", nil, pfUI.gui.deco) pfUI.gui.deco.up:SetPoint("TOPLEFT", pfUI.gui.deco, "TOPLEFT", 0,0) pfUI.gui.deco.up:SetPoint("TOPRIGHT", pfUI.gui.deco, "TOPRIGHT", 0,0) pfUI.gui.deco.up:SetHeight(16) pfUI.gui.deco.up:SetAlpha(0) pfUI.gui.deco.up.visible = 0 pfUI.gui.deco.up.texture = pfUI.gui.deco.up:CreateTexture() pfUI.gui.deco.up.texture:SetAllPoints() pfUI.gui.deco.up.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\gradient_up") pfUI.gui.deco.up.texture:SetVertexColor(.2,1,.8) pfUI.gui.deco.up:SetScript("OnUpdate", function() pfUI.gui.scroll:UpdateScrollState() if pfUI.gui.deco.up.visible == 0 and pfUI.gui.deco.up:GetAlpha() > 0 then pfUI.gui.deco.up:SetAlpha(pfUI.gui.deco.up:GetAlpha() - 0.01) elseif pfUI.gui.deco.up.visible == 0 and pfUI.gui.deco.up:GetAlpha() <= 0 then pfUI.gui.deco.up:Hide() end end) pfUI.gui.deco.down = CreateFrame("Frame", nil, pfUI.gui.deco) pfUI.gui.deco.down:SetPoint("BOTTOMLEFT", pfUI.gui.deco, "BOTTOMLEFT", 0,0) pfUI.gui.deco.down:SetPoint("BOTTOMRIGHT", pfUI.gui.deco, "BOTTOMRIGHT", 0,0) pfUI.gui.deco.down:SetHeight(16) pfUI.gui.deco.down:SetAlpha(0) pfUI.gui.deco.down.visible = 0 pfUI.gui.deco.down.texture = pfUI.gui.deco.down:CreateTexture() pfUI.gui.deco.down.texture:SetAllPoints() pfUI.gui.deco.down.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\gradient_down") pfUI.gui.deco.down.texture:SetVertexColor(.2,1,.8) pfUI.gui.deco.down:SetScript("OnUpdate", function() pfUI.gui.scroll:UpdateScrollState() if pfUI.gui.deco.down.visible == 0 and pfUI.gui.deco.down:GetAlpha() > 0 then pfUI.gui.deco.down:SetAlpha(pfUI.gui.deco.down:GetAlpha() - 0.01) elseif pfUI.gui.deco.down.visible == 0 and pfUI.gui.deco.down:GetAlpha() <= 0 then pfUI.gui.deco.down:Hide() end end) pfUI.gui.scroll = CreateFrame("ScrollFrame", nil, pfUI.gui) pfUI.gui.scroll:ClearAllPoints() pfUI.gui.scroll:SetPoint("TOPLEFT", pfUI.gui, "TOPLEFT", 2*default_border + 100,-10) pfUI.gui.scroll:SetPoint("BOTTOMRIGHT", pfUI.gui, "BOTTOMRIGHT", -default_border,10) pfUI.gui.scroll:EnableMouseWheel(1) function pfUI.gui.scroll:UpdateScrollState() local current = ceil(pfUI.gui.scroll:GetVerticalScroll()) local max = ceil(pfUI.gui.scroll:GetVerticalScrollRange() + 10) pfUI.gui.deco.up:Show() pfUI.gui.deco.down:Show() if max > 20 then if current < max then pfUI.gui.deco.down.visible = 1 pfUI.gui.deco.down:Show() pfUI.gui.deco.down:SetAlpha(.2) end if current > 5 then pfUI.gui.deco.up.visible = 1 pfUI.gui.deco.up:Show() pfUI.gui.deco.up:SetAlpha(.2) end if current > max - 5 then pfUI.gui.deco.down.visible = 0 end if current < 5 then pfUI.gui.deco.up.visible = 0 end else pfUI.gui.deco.up.visible = 0 pfUI.gui.deco.down.visible = 0 end end pfUI.gui.scroll:SetScript("OnMouseWheel", function() local current = pfUI.gui.scroll:GetVerticalScroll() local new = current + arg1*-25 local max = pfUI.gui.scroll:GetVerticalScrollRange() + 25 if max > 31 then if new < 0 then pfUI.gui.scroll:SetVerticalScroll(0) pfUI.gui.deco.up:SetAlpha(.3) elseif new > max then pfUI.gui.scroll:SetVerticalScroll(max) pfUI.gui.deco.down:SetAlpha(.3) else pfUI.gui.scroll:SetVerticalScroll(new) end end pfUI.gui.scroll:UpdateScrollState() end) -- General pfUI.gui.global = pfUI.gui:CreateConfigTab("General Settings") local values = { "BigNoodleTitling", "Continuum", "DieDieDie", "Expressway", "Homespun", "Myriad-Pro", "PT-Sans-Narrow-Bold", "PT-Sans-Narrow-Regular" } pfUI.gui:CreateConfig(pfUI.gui.global, "Enable Region Compatible Font", C.global, "force_region", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Text Font", C.global, "font_default", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.global, "Text Font Size", C.global, "font_size") pfUI.gui:CreateConfig(pfUI.gui.global, "Unit Frame Font", C.global, "font_square", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.global, "Unit Frame Size", C.global, "font_square_size") pfUI.gui:CreateConfig(pfUI.gui.global, "Scrolling Combat Text Font", C.global, "font_combat", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.global, "Enable Pixel Perfect (Native Resolution)", C.global, "pixelperfect", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Enable Offscreen Frame Positions", C.global, "offscreen", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Enable Single Line UIErrors", C.global, "errors_limit", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Disable All UIErrors", C.global, "errors_hide", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Disable Minimap Buffs", C.global, "hidebuff", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Disable Minimap Weapon Buffs", C.global, "hidewbuff", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Enable 24h Clock", C.global, "twentyfour", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Auto Sell Grey Items", C.global, "autosell", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Auto Repair Items", C.global, "autorepair", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.global, "Profile", nil, nil, "header") local values = {} for name, config in pairs(pfUI_profiles) do table.insert(values, name) end local function pfUpdateProfiles() local values = {} for name, config in pairs(pfUI_profiles) do table.insert(values, name) end pfUIDropDownMenuProfile.values = values pfUIDropDownMenuProfile.Refresh() end pfUI.gui:CreateConfig(pfUI.gui.global, "Select profile", C.global, "profile", "dropdown", values, false, "Profile") -- load profile pfUI.gui:CreateConfig(pfUI.gui.global, "Load profile", C.global, "profile", "button", function() if C.global.profile and pfUI_profiles[C.global.profile] then CreateQuestionDialog("Load profile '|cff33ffcc" .. C.global.profile .. "|r'?", function() local selp = C.global.profile _G["pfUI_config"] = CopyTable(pfUI_profiles[C.global.profile]) C.global.profile = selp ReloadUI() end) end end) -- delete profile pfUI.gui:CreateConfig(pfUI.gui.global, "Delete profile", C.global, "profile", "button", function() if C.global.profile and pfUI_profiles[C.global.profile] then CreateQuestionDialog("Delete profile '|cff33ffcc" .. C.global.profile .. "|r'?", function() pfUI_profiles[C.global.profile] = nil pfUpdateProfiles() this:GetParent():Hide() end) end end, true) -- save profile pfUI.gui:CreateConfig(pfUI.gui.global, "Save profile", C.global, "profile", "button", function() if C.global.profile and pfUI_profiles[C.global.profile] then CreateQuestionDialog("Save current settings to profile '|cff33ffcc" .. C.global.profile .. "|r'?", function() if pfUI_profiles[C.global.profile] then pfUI_profiles[C.global.profile] = CopyTable(C) end this:GetParent():Hide() end) end end, true) -- create profile pfUI.gui:CreateConfig(pfUI.gui.global, "Create Profile", C.global, "profile", "button", function() CreateQuestionDialog("Please enter a name for the new profile.\nExisting profiles sharing the same name will be overwritten.", function() local profile = this:GetParent().input:GetText() local bad = string.gsub(profile,"([%w%s]+)","") if bad~="" then message('Cannot create profile: \"'..bad..'\"' .. " is not allowed in profile name") else profile = (string.gsub(profile,"^%s*(.-)%s*$", "%1")) if profile and profile ~= "" then pfUI_profiles[profile] = CopyTable(C) pfUpdateProfiles() this:GetParent():Hide() end end end, false, true) end, true) -- appearance pfUI.gui.appearance = pfUI.gui:CreateConfigTab("Appearance") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Background Color", C.appearance.border, "background", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Border Color", C.appearance.border, "color", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Border", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Global Border Size", C.appearance.border, "default") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Action Bar Border Size", C.appearance.border, "actionbars") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Unit Frame Border Size", C.appearance.border, "unitframes") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Panel Border Size", C.appearance.border, "panels") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Chat Border Size", C.appearance.border, "chat") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Bags Border Size", C.appearance.border, "bags") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Color (Less than 3 Sec)", C.appearance.cd, "lowcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Color (Seconds)", C.appearance.cd, "normalcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Color (Minutes)", C.appearance.cd, "minutecolor", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Color (Hours)", C.appearance.cd, "hourcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Color (Days)", C.appearance.cd, "daycolor", "color") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Cooldown Text Threshold", C.appearance.cd, "threshold") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Combat", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Combat Glow Effects On Screen Edges", C.appearance.infight, "screen", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Combat Glow Effects On Unit Frames", C.appearance.infight, "common", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Combat Glow Effects On Group Frames", C.appearance.infight, "group", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Bags & Bank", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Disable Item Quality Color For \"Common\" Items", C.appearance.bags, "borderlimit", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Item Quality Color For Equipment Only", C.appearance.bags, "borderonlygear", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Loot", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Auto-Resize Loot Frame", C.loot, "autoresize", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Disable Loot Confirmation Dialog (Without Group)", C.loot, "autopickup", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Minimap", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.appearance, "Enable Zone Text On Minimap Mouseover", C.appearance.minimap, "mouseoverzone", "checkbox") -- unit frames local txtValues = { "none", "unit", "name", "level", "class", "health", "healthmax", "healthperc", "healthmiss", "healthdyn", "power", "powermax", "powerperc", "powermiss", "powerdyn" } pfUI.gui.uf = pfUI.gui:CreateConfigTab("Unit Frames") pfUI.gui:CreateConfig(pfUI.gui.uf, "Disable pfUI Unit Frames", C.unitframes, "disable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Pastel Colors", C.unitframes, "pastel", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Custom Color Health Bars", C.unitframes, "custom", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Custom Health Bar Color", C.unitframes, "customcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Custom Color Health Bar Background", C.unitframes, "custombg", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Custom Health Bar Background Color", C.unitframes, "custombgcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.uf, "Healthbar Animation Speed", C.unitframes, "animation_speed") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Alpha", C.unitframes, "portraitalpha") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable 2D Portraits As Fallback", C.unitframes, "portraittexture", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Unit Frame Layout", C.unitframes, "layout", "dropdown", { "default", "tukui" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Aggressive 40y-Range Check (Will break stuff)", C.unitframes, "rangecheck", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "40y-Range Check Interval", C.unitframes, "rangechecki") pfUI.gui:CreateConfig(pfUI.gui.uf, "Combopoint Size", C.unitframes, "combosize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Abbreviate Numbers (4200 -> 4.2k)", C.unitframes, "abbrevnum", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff- And Debuff Indicators", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Show Hots as Buff Indicators", C.unitframes, "show_hots", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Show Hots of all Classes", C.unitframes, "all_hots", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Show Procs as Buff Indicators", C.unitframes, "show_procs", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Show Procs of all Classes", C.unitframes, "all_procs", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Only Show Indicators for Dispellable Debuffs", C.unitframes, "debuffs_class", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Clickcast Spells", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Click Action", C.unitframes, "clickcast") pfUI.gui:CreateConfig(pfUI.gui.uf, "Shift-Click Action", C.unitframes, "clickcast_shift") pfUI.gui:CreateConfig(pfUI.gui.uf, "Alt-Click Action", C.unitframes, "clickcast_alt") pfUI.gui:CreateConfig(pfUI.gui.uf, "Ctrl-Click Action", C.unitframes, "clickcast_ctrl") pfUI.gui:CreateConfig(pfUI.gui.uf, "Player", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Player Frame", C.unitframes.player, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.player, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.player, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.player, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.player, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.player, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.player, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.player, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.player, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.player, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.player, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.player, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.player, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.player, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.player, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.player, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.player, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.player, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.player, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.player, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.player, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.player, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable PvP Icon", C.unitframes.player, "showPVP", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Align PvP Icon to Minimap", C.unitframes.player, "showPVPMinimap", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Energy Ticks", C.unitframes.player, "energy", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Target", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Target Frame", C.unitframes.target, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Target Switch Animation", C.unitframes.target, "animation", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.target, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.target, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.target, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.target, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.target, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.target, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.target, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.target, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.target, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.target, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.target, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.target, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.target, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.target, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.target, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.target, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.target, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.target, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.target, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.target, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.target, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Focus", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Player Frame", C.unitframes.focus, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.focus, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.focus, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.focus, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.focus, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.focus, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.focus, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.focus, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.focus, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.focus, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.focus, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.focus, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.focus, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.focus, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.focus, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.focus, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.focus, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.focus, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.focus, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.focus, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.focus, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.focus, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Group", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Group Frames", C.unitframes.group, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.group, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.group, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.group, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.group, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.group, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.group, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.group, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.group, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.group, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.group, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.group, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.group, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.group, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.group, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.group, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.group, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.group, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.group, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.group, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.group, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.group, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Hide Group Frames When In A Raid", C.unitframes.group, "hide_in_raid", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Group Target", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Group Target Frames", C.unitframes.grouptarget, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.grouptarget, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.grouptarget, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.grouptarget, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.grouptarget, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.grouptarget, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.grouptarget, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.grouptarget, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.grouptarget, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.grouptarget, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.grouptarget, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.grouptarget, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.grouptarget, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.grouptarget, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.grouptarget, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.grouptarget, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.grouptarget, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.grouptarget, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.grouptarget, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.grouptarget, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.grouptarget, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.grouptarget, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Group Pet", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Group Pet Frames", C.unitframes.grouppet, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.grouppet, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.grouppet, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.grouppet, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.grouppet, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.grouppet, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.grouppet, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.grouppet, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.grouppet, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.grouppet, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.grouppet, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.grouppet, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.grouppet, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.grouppet, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.grouppet, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.grouppet, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.grouppet, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.grouppet, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.grouppet, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.grouppet, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.grouppet, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.grouppet, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Raid", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Raid Frames", C.unitframes.raid, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.raid, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.raid, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.raid, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.raid, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.raid, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.raid, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.raid, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.raid, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.raid, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.raid, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.raid, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.raid, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.raid, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.raid, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.raid, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.raid, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.raid, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.raid, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.raid, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.raid, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.raid, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Target of Target", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Target of Target Frame", C.unitframes.ttarget, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.ttarget, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.ttarget, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.ttarget, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.ttarget, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.ttarget, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.ttarget, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.ttarget, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.ttarget, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.ttarget, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.ttarget, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.ttarget, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.ttarget, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.ttarget, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.ttarget, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.ttarget, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.ttarget, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.ttarget, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.ttarget, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.ttarget, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.ttarget, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.ttarget, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Pet", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Pet Frame", C.unitframes.player, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.pet, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.pet, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.pet, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.pet, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.pet, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.pet, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.pet, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.pet, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.pet, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.pet, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.pet, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.pet, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.pet, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.pet, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.pet, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.pet, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.pet, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.pet, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.pet, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.pet, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.pet, "txtright", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Custom Units", nil, nil, "header") pfUI.gui:CreateConfig(pfUI.gui.uf, "Display Custom Frames", C.unitframes.fallback, "visible", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Portrait Position", C.unitframes.fallback, "portrait", "dropdown", { "bar", "left", "right", "off" }) pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Width", C.unitframes.fallback, "width") pfUI.gui:CreateConfig(pfUI.gui.uf, "Health Bar Height", C.unitframes.fallback, "height") pfUI.gui:CreateConfig(pfUI.gui.uf, "Power Bar Height", C.unitframes.fallback, "pheight") pfUI.gui:CreateConfig(pfUI.gui.uf, "Spacing", C.unitframes.fallback, "pspace") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Position", C.unitframes.fallback, "buffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Size", C.unitframes.fallback, "buffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buff Limit", C.unitframes.fallback, "bufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Buffs Per Row", C.unitframes.fallback, "buffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Position", C.unitframes.fallback, "debuffs", "dropdown", { "top", "bottom", "off"}) pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Size", C.unitframes.fallback, "debuffsize") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuff Limit", C.unitframes.fallback, "debufflimit") pfUI.gui:CreateConfig(pfUI.gui.uf, "Debuffs Per Row", C.unitframes.fallback, "debuffperrow") pfUI.gui:CreateConfig(pfUI.gui.uf, "Invert Health Bar", C.unitframes.fallback, "invert_healthbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Buff Indicators", C.unitframes.fallback, "buff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Debuff Indicators", C.unitframes.fallback, "debuff_indicator", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Clickcast", C.unitframes.fallback, "clickcast", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Enable Range Fading", C.unitframes.fallback, "faderange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.uf, "Left Text", C.unitframes.fallback, "txtleft", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Center Text", C.unitframes.fallback, "txtcenter", "dropdown", txtValues) pfUI.gui:CreateConfig(pfUI.gui.uf, "Right Text", C.unitframes.fallback, "txtright", "dropdown", txtValues) -- action bar pfUI.gui.bar = pfUI.gui:CreateConfigTab("Action Bar") pfUI.gui:CreateConfig(pfUI.gui.bar, "Icon Size", C.bars, "icon_size") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Action Bar Backgrounds", C.bars, "background", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Range Display On Hotkeys", C.bars, "glowrange", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Range Display Color", C.bars, "rangecolor", "color") pfUI.gui:CreateConfig(pfUI.gui.bar, "Show Macro Text", C.bars, "showmacro", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Show Hotkey Text", C.bars, "showkeybind", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Range Based Auto Paging (Hunter)", C.bars, "hunterbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Seconds Until Action Bars Autohide", C.bars, "hide_time") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarActionMain", C.bars, "hide_actionmain", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarBottomLeft", C.bars, "hide_bottomleft", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarBottomRight", C.bars, "hide_bottomright", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarRight", C.bars, "hide_right", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarTwoRight", C.bars, "hide_tworight", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarShapeShift", C.bars, "hide_shapeshift", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Enable Autohide For BarPet", C.bars, "hide_pet", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.bar, "Action Bar Layouts", nil, nil, "header") local values = BarLayoutOptions(NUM_ACTIONBAR_BUTTONS) pfUI.gui:CreateConfig(pfUI.gui.bar, "Main Actionbar (ActionMain)", C.bars.actionmain, "formfactor", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.bar, "Second Actionbar (BottomLeft)", C.bars.bottomleft, "formfactor", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.bar, "Left Actionbar (BottomRight)", C.bars.bottomright, "formfactor", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.bar, "Right Actionbar (Right)", C.bars.right, "formfactor", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.bar, "Vertical Actionbar (TwoRight)", C.bars.tworight, "formfactor", "dropdown", values) local values = BarLayoutOptions(NUM_SHAPESHIFT_SLOTS) pfUI.gui:CreateConfig(pfUI.gui.bar, "Shapeshift Bar (BarShapeShift)", C.bars.shapeshift, "formfactor", "dropdown", values) local values = BarLayoutOptions(NUM_PET_ACTION_SLOTS) pfUI.gui:CreateConfig(pfUI.gui.bar, "Pet Bar (BarPet)", C.bars.pet, "formfactor", "dropdown", values) -- panels pfUI.gui.panel = pfUI.gui:CreateConfigTab("Panel") local values = { "time", "fps", "exp", "gold", "friends", "guild", "durability", "zone", "combat", "ammo", "soulshard", "none" } pfUI.gui:CreateConfig(pfUI.gui.panel, "Left Panel: Left", C.panel.left, "left", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Left Panel: Center", C.panel.left, "center", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Left Panel: Right", C.panel.left, "right", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Right Panel: Left", C.panel.right, "left", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Right Panel: Center", C.panel.right, "center", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Right Panel: Right", C.panel.right, "right", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Other Panel: Minimap", C.panel.other, "minimap", "dropdown", values) pfUI.gui:CreateConfig(pfUI.gui.panel, "Always Show Experience And Reputation Bar", C.panel.xp, "showalways", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.panel, "Enable Micro Bar", C.panel.micro, "enable", "checkbox") -- tooltip pfUI.gui.tooltip = pfUI.gui:CreateConfigTab("Tooltip") pfUI.gui:CreateConfig(pfUI.gui.tooltip, "Tooltip Position", C.tooltip, "position", "dropdown", { "bottom", "chat", "cursor" }) pfUI.gui:CreateConfig(pfUI.gui.tooltip, "Enable Extended Guild Information", C.tooltip, "extguild", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.tooltip, "Custom Transparency", C.tooltip, "alpha") pfUI.gui:CreateConfig(pfUI.gui.tooltip, "Always Show Item Comparison", C.tooltip.compare, "showalways", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.tooltip, "Always Show Extended Vendor Values", C.tooltip.vendor, "showalways", "checkbox") -- castbar pfUI.gui.castbar = pfUI.gui:CreateConfigTab("Castbar") pfUI.gui:CreateConfig(pfUI.gui.castbar, "Casting Color", C.appearance.castbar, "castbarcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.castbar, "Channeling Color", C.appearance.castbar, "channelcolor", "color") pfUI.gui:CreateConfig(pfUI.gui.castbar, "Disable Blizzard Castbar", C.castbar.player, "hide_blizz", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.castbar, "Disable pfUI Player Castbar", C.castbar.player, "hide_pfui", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.castbar, "Disable pfUI Target Castbar", C.castbar.target, "hide_pfui", "checkbox") -- chat pfUI.gui.chat = pfUI.gui:CreateConfigTab("Chat") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable \"Loot & Spam\" Chat Window", C.chat.right, "enable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Inputbox Width", C.chat.text, "input_width") pfUI.gui:CreateConfig(pfUI.gui.chat, "Inputbox Height", C.chat.text, "input_height") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Timestamps", C.chat.text, "time", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Timestamp Format", C.chat.text, "timeformat") pfUI.gui:CreateConfig(pfUI.gui.chat, "Timestamp Brackets", C.chat.text, "timebracket") pfUI.gui:CreateConfig(pfUI.gui.chat, "Timestamp Color", C.chat.text, "timecolor", "color") pfUI.gui:CreateConfig(pfUI.gui.chat, "Hide Channel Names", C.chat.text, "channelnumonly", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable URL Detection", C.chat.text, "detecturl", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Class Colors", C.chat.text, "classcolor", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Left Chat Width", C.chat.left, "width") pfUI.gui:CreateConfig(pfUI.gui.chat, "Left Chat Height", C.chat.left, "height") pfUI.gui:CreateConfig(pfUI.gui.chat, "Right Chat Width", C.chat.right, "width") pfUI.gui:CreateConfig(pfUI.gui.chat, "Right Chat Height", C.chat.right, "height") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Right Chat Window", C.chat.right, "alwaysshow", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Chat Dock", C.chat.global, "tabdock", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Custom Colors", C.chat.global, "custombg", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Chat Background Color", C.chat.global, "background", "color") pfUI.gui:CreateConfig(pfUI.gui.chat, "Chat Border Color", C.chat.global, "border", "color") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Custom Incoming Whispers Layout", C.chat.global, "whispermod", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Incoming Whispers Color", C.chat.global, "whisper", "color") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Sticky Chat", C.chat.global, "sticky", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Enable Chat Fade", C.chat.global, "fadeout", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.chat, "Seconds Before Chat Fade", C.chat.global, "fadetime") -- nameplates pfUI.gui.nameplates = pfUI.gui:CreateConfigTab("Nameplates") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Castbars", C.nameplates, "showcastbar", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Spellname", C.nameplates, "spellname", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Debuffs", C.nameplates, "showdebuffs", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Clickthrough", C.nameplates, "clickthrough", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Mouselook With Right Click", C.nameplates, "rightclick", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Right Click Auto Attack Threshold", C.nameplates, "clickthreshold") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Class Colors On Enemies", C.nameplates, "enemyclassc", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Enable Class Colors On Friends", C.nameplates, "friendclassc", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Raid Icon Size", C.nameplates, "raidiconsize") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Show Players Only", C.nameplates, "players", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Show Health Points", C.nameplates, "showhp", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Vertical Position", C.nameplates, "vpos") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Nameplate Width", C.nameplates, "width") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Healthbar Height", C.nameplates, "heighthealth") pfUI.gui:CreateConfig(pfUI.gui.nameplates, "Castbar Height", C.nameplates, "heightcast") -- thirdparty pfUI.gui.thirdparty = pfUI.gui:CreateConfigTab("Thirdparty") pfUI.gui:CreateConfig(pfUI.gui.thirdparty, "DPSMate", C.thirdparty.dpsmate, "enable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.thirdparty, "WIM", C.thirdparty.wim, "enable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.thirdparty, "HealComm", C.thirdparty.healcomm, "enable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.thirdparty, "CleanUp", C.thirdparty.cleanup, "enable", "checkbox") pfUI.gui:CreateConfig(pfUI.gui.thirdparty, "KLH Threat Meter", C.thirdparty.ktm, "enable", "checkbox") -- modules pfUI.gui.modules = pfUI.gui:CreateConfigTab("Modules") for i,m in pairs(pfUI.modules) do if m ~= "gui" then -- create disabled entry if not existing and display pfUI:UpdateConfig("disabled", nil, m, "0") pfUI.gui:CreateConfig(pfUI.gui.modules, "Disable " .. m, C.disabled, m, "checkbox") end end -- [[ bottom section ]] -- -- Hide GUI pfUI.gui.hideGUI = pfUI.gui:CreateConfigTab("Close", "bottom", function() if pfUI.gui.settingChanged then pfUI.gui:Reload() end if pfUI.gitter and pfUI.gitter:IsShown() then pfUI.gui:UnlockFrames() end pfUI.gui:Hide() end) -- Unlock Frames pfUI.gui.unlockFrames = pfUI.gui:CreateConfigTab("Unlock", "bottom", function() pfUI.gui.UnlockFrames() end) -- Hoverbind pfUI.gui.hoverBind = pfUI.gui:CreateConfigTab("Hover Keybind", "bottom", function() pfUI.gui.HoverBind() end) -- Reset Cache pfUI.gui.resetCache = pfUI.gui:CreateConfigTab("Reset Cache", "bottom", function() CreateQuestionDialog("Do you really want to reset the Cache?", function() _G["pfUI_playerDB"] = {} this:GetParent():Hide() pfUI.gui:Reload() end) end) -- Reset Frames pfUI.gui.resetFrames = pfUI.gui:CreateConfigTab("Reset Positions", "bottom", function() CreateQuestionDialog("Do you really want to reset the Frame Positions?", function() _G["pfUI_config"]["position"] = {} this:GetParent():Hide() pfUI.gui:Reload() end) end) -- Reset Chat pfUI.gui.resetChat = pfUI.gui:CreateConfigTab("Reset Firstrun", "bottom", function() CreateQuestionDialog("Do you really want to reset the Firstrun Wizard Settings?", function() _G["pfUI_init"] = {} this:GetParent():Hide() pfUI.gui:Reload() end) end) -- Reset Config pfUI.gui.resetConfig = pfUI.gui:CreateConfigTab("Reset Config", "bottom", function() CreateQuestionDialog("Do you really want to reset your configuration?\nThis also includes frame positions", function() _G["pfUI_config"] = {} pfUI:LoadConfig() this:GetParent():Hide() pfUI.gui:Reload() end) end) -- Reset All pfUI.gui.resetAll = pfUI.gui:CreateConfigTab("Reset All", "bottom", function() CreateQuestionDialog("Do you really want to reset |cffffaaaaEVERYTHING|r?\nThis includes configuration, frame positions, firstrun settings,\n player cache, profiles and just EVERYTHING!", function() _G["pfUI_init"] = {} _G["pfUI_config"] = {} _G["pfUI_playerDB"] = {} _G["pfUI_profiles"] = {} pfUI:LoadConfig() this:GetParent():Hide() pfUI.gui:Reload() end) end) -- Switch to default View: global pfUI.gui:SwitchTab(pfUI.gui.global) end)