SLASH_RELOAD1 = '/rl' function SlashCmdList.RELOAD(msg, editbox) ReloadUI() end SLASH_PFUI1 = '/pfui' function SlashCmdList.PFUI(msg, editbox) if pfUI.gui:IsShown() then pfUI.gui:Hide() else pfUI.gui:Show() end end SLASH_GM1, SLASH_GM2 = '/gm', '/support' function SlashCmdList.GM(msg, editbox) ToggleHelpFrame(1) end pfUI = CreateFrame("Frame",nil,UIParent) pfUI:RegisterEvent("ADDON_LOADED") -- initialize default variables pfUI.cache = {} pfUI.module = {} pfUI.modules = {} pfUI.environment = {} pfUI.movables = {} pfLocaleClass = {} pfLocaleBagtypes = {} pfLocaleInvtypes = {} pfLocaleShift = {} pfLocaleSpells = {} pfLocaleSpellEvents = {} pfLocaleSpellInterrupts = {} pfLocaleHunterbars = {} pfUI:SetScript("OnEvent", function() -- some addons overwrite color and font settings -- need to enforce pfUI's selection every time pfUI.environment:UpdateFonts() pfUI.environment:UpdateColors() if arg1 == "pfUI" then if not pfUI_init then pfUI_init = {} end if not pfUI_profiles then pfUI_profiles = {} end pfUI:LoadConfig() -- reload environment pfUI.environment:UpdateFonts() pfUI.environment:UpdateColors() -- fill the cache pfUI.cache["locale"] = GetLocale() if pfUI.cache["locale"] ~= "enUS" and pfUI.cache["locale"] ~= "frFR" and pfUI.cache["locale"] ~= "deDE" and pfUI.cache["locale"] ~= "zhCN" and pfUI.cache["locale"] ~= "ruRU" then pfUI.cache["locale"] = "enUS" end for i,m in pairs(this.modules) do -- do not load disabled modules if pfUI_config["disabled"] and pfUI_config["disabled"][m] == "1" then -- message("DEBUG: module " .. m .. " has been disabled") else pfUI.module[m]() end end end end) function pfUI:RegisterModule(n, f) pfUI.module[n] = f table.insert(pfUI.modules, n) end pfUI.backdrop = { bgFile = "Interface\\AddOns\\pfUI\\img\\col", tile = true, tileSize = 8, edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, insets = {left = -1, right = -1, top = -1, bottom = -1}, } pfUI.backdrop_small = { bgFile = "Interface\\AddOns\\pfUI\\img\\col", tile = true, tileSize = 8, insets = {left = -1, right = -1, top = -1, bottom = -1}, } pfUI.backdrop_underline = { edgeFile = "Interface\\AddOns\\pfUI\\img\\underline", edgeSize = 8, insets = {left = 0, right = 0, top = 0, bottom = 0}, } message = function (msg) DEFAULT_CHAT_FRAME:AddMessage("|cffcccc33INFO: |cffffff55"..msg) end ScriptErrors:SetScript("OnShow", function(msg) DEFAULT_CHAT_FRAME:AddMessage("|cffcc3333ERROR: |cffff5555"..ScriptErrors_Message:GetText()) ScriptErrors:Hide() end) pfUI.firstrun = CreateFrame("Frame", "pfFirstRunWizard", UIParent) pfUI.firstrun.steps = {} pfUI.firstrun.next = nil pfUI.firstrun:RegisterEvent("PLAYER_ENTERING_WORLD") pfUI.firstrun:SetScript("OnEvent", function() pfUI.firstrun:NextStep() end) function pfUI.firstrun:AddStep(name, yfunc, nfunc, descr, cmpnt) if not name then return end pfUI.firstrun.steps[name] = {} if yfunc then pfUI.firstrun.steps[name].yfunc = yfunc end if nfunc then pfUI.firstrun.steps[name].nfunc = nfunc end if descr then pfUI.firstrun.steps[name].descr = descr end if cmpnt then pfUI.firstrun.steps[name].cmpnt = cmpnt end end function pfUI.firstrun:NextStep() if pfUI_init and next(pfUI_init) == nil then local yes = function() this:GetParent():Hide() pfUI_init["welcome"] = true pfUI.firstrun:NextStep() end local no = function() this:GetParent():Hide() end pfUI.api:CreateQuestionDialog("Welcome to |cff33ffccpf|cffffffffUI|r!\n\n".. "I'm the first run wizzard that will guide you through some basic configuration.\n".. "You'll now be prompted for several questions. To get a default installation,\n".. "you might want to click \"Okay\" everywhere. A few settings are client settings\n".. "(e.g chat questions) so if you don't want to lose your chat configurations, you\n".. "should be careful with your choices.\n\n".. "Visit |cff33ffcchttp://shagu.org|r to check for the latest version.", yes, no) return end for name, step in pairs(pfUI.firstrun.steps) do if not pfUI_init[name] then local function yes() pfUI_init[name] = true if step.yfunc then step.yfunc() end this:GetParent():Hide() pfUI.firstrun:NextStep() end local function no() pfUI_init[name] = true if step.nfunc then step.nfunc() end this:GetParent():Hide() pfUI.firstrun:NextStep() end if step.cmpnt and step.cmpnt == "edit" then pfUI.api:CreateQuestionDialog(step.descr, yes, no, true) else pfUI.api:CreateQuestionDialog(step.descr, yes, no, false) end return end end end pfUI.info = CreateFrame("Button", "pfInfoBox", UIParent) pfUI.info:Hide() pfUI.info.text = pfUI.info:CreateFontString("Status", "HIGH", "GameFontNormal") pfUI.info.text:ClearAllPoints() pfUI.info.text:SetFontObject(GameFontWhite) pfUI.info.timeout = CreateFrame("StatusBar", nil, pfUI.info) pfUI.info.timeout:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") pfUI.info.timeout:SetStatusBarColor(.3,1,.8,1) function pfUI.info:ShowInfoBox(text, time, parent, height) if not text then return end if not time then time = 5 end if not parent then parent = UIParent end if not height then height = 100 end pfUI.info:SetParent(parent) pfUI.info:ClearAllPoints() pfUI.info.text:SetAllPoints(pfUI.info) pfUI.info.text:SetText(text) pfUI.info.text:SetFont(pfUI.font_default, 14, "OUTLINE") pfUI.info:SetWidth(pfUI.info.text:GetStringWidth() + 50) pfUI.info:SetHeight(height) pfUI.info:SetFrameStrata("DIALOG") pfUI.api:CreateBackdrop(pfUI.info) pfUI.info:SetPoint("TOP", 0, -25) pfUI.info.timeout:ClearAllPoints() pfUI.info.timeout:SetPoint("TOPLEFT", pfUI.info, "TOPLEFT", 3, -3) pfUI.info.timeout:SetPoint("TOPRIGHT", pfUI.info, "TOPRIGHT", -3, 3) pfUI.info.timeout:SetHeight(2) pfUI.info.timeout:SetMinMaxValues(0, time) pfUI.info.timeout:SetValue(time) pfUI.info.duration = time pfUI.info.lastshow = GetTime() pfUI.info:Show() end pfUI.info:SetScript("OnUpdate", function() local time = pfUI.info.lastshow + pfUI.info.duration - GetTime() pfUI.info.timeout:SetValue(time) if GetTime() > pfUI.info.lastshow + pfUI.info.duration then pfUI.info:SetAlpha(pfUI.info:GetAlpha()-0.05) end if pfUI.info:GetAlpha() <= 0.1 then pfUI.info:Hide() pfUI.info:SetAlpha(1) end end) pfUI.info:SetScript("OnClick", function() this:Hide() end)