From 2600468c688020f6cfb93e9aca1886c7ff344ce4 Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Fri, 2 Jan 2015 21:17:05 -0600 Subject: [PATCH] 5.4.12 --- Interface/AddOns/SVUI/assets/fonts/Dialog.ttf | Bin 0 -> 100460 bytes Interface/AddOns/SVUI/assets/fonts/Names.ttf | Bin 100460 -> 0 bytes Interface/AddOns/SVUI/data/defaults.lua | 85 +++---- .../AddOns/SVUI/framework/api/api_general.lua | 129 ++++++---- .../AddOns/SVUI/framework/movers/mover_dragger.lua | 2 +- Interface/AddOns/SVUI/packages/bag/SVBag.lua | 33 ++- .../AddOns/SVUI/packages/bar/components/extra.lua | 6 + Interface/AddOns/SVUI/packages/chat/SVChat.lua | 30 +-- Interface/AddOns/SVUI/packages/map/SVMap.lua | 2 +- .../SVUI/packages/override/components/loot.lua | 14 +- Interface/AddOns/SVUI/packages/plate/SVPlate.lua | 4 +- Interface/AddOns/SVUI/packages/quest/SVQuest.lua | 2 +- .../packages/quest/components/achievements.lua | 2 +- .../SVUI/packages/quest/components/active.lua | 2 +- .../SVUI/packages/quest/components/quests.lua | 4 +- Interface/AddOns/SVUI/packages/tip/SVTip.lua | 6 +- .../SVUI/packages/tool/buttons/questwatch.lua | 213 ---------------- Interface/AddOns/SVUI/packages/unit/SVUnit.lua | 10 +- Interface/AddOns/SVUI/setup/installer.lua | 29 ++- Interface/AddOns/SVUI/setup/presets.lua | 31 ++- Interface/AddOns/SVUI/system/core.lua | 10 +- Interface/AddOns/SVUI/system/media.lua | 257 +++++++++----------- .../components/answering_service.lua | 5 +- .../AddOns/SVUI_ConfigOMatic/components/dock.lua | 6 +- .../AddOns/SVUI_ConfigOMatic/components/fonts.lua | 219 +++++++++++++++-- .../SVUI_StyleOMatic/components/addons/Omen.lua | 4 +- .../components/blizzard/character.lua | 139 +++++------ .../components/blizzard/garrison.lua | 12 + .../SVUI_StyleOMatic/components/blizzard/quest.lua | 5 +- 29 files changed, 623 insertions(+), 638 deletions(-) create mode 100644 Interface/AddOns/SVUI/assets/fonts/Dialog.ttf delete mode 100644 Interface/AddOns/SVUI/assets/fonts/Names.ttf delete mode 100644 Interface/AddOns/SVUI/packages/tool/buttons/questwatch.lua diff --git a/Interface/AddOns/SVUI/assets/fonts/Dialog.ttf b/Interface/AddOns/SVUI/assets/fonts/Dialog.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2b8c1efa401e5c625041e3c8a5cdbf73cd0e27b2 GIT binary patch literal 100460 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 ax8@rv0fhYj&ijSxEVB8%_twepvi!f}+G6Yg literal 0 HcmV?d00001 diff --git a/Interface/AddOns/SVUI/assets/fonts/Names.ttf b/Interface/AddOns/SVUI/assets/fonts/Names.ttf deleted file mode 100644 index 2b8c1efa401e5c625041e3c8a5cdbf73cd0e27b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100460 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 ax8@rv0fhYj&ijSxEVB8%_twepvi!f}+G6Yg diff --git a/Interface/AddOns/SVUI/data/defaults.lua b/Interface/AddOns/SVUI/data/defaults.lua index 1575cc5..bbdc2cd 100644 --- a/Interface/AddOns/SVUI/data/defaults.lua +++ b/Interface/AddOns/SVUI/data/defaults.lua @@ -36,7 +36,7 @@ local function safename(id) return n end -local DIALOGUE_FONT = "SVUI Name Font"; +local DIALOGUE_FONT = "SVUI Dialog Font"; if(GetLocale() ~= "enUS") then DIALOGUE_FONT = "SVUI Default Font" end @@ -63,8 +63,6 @@ SV.defaults["general"] = { ["bubbles"] = true, ["comix"] = true, ["bigComix"] = false, - ["questWatch"] = true, - ["questHeaders"] = true, ["woot"] = true, ["gamemenu"] = '1', ["afk"] = true, @@ -90,47 +88,45 @@ SV.defaults["totems"] = { } SV.defaults["font"] = { - ["default"] = {file = "SVUI Default Font", size = 12, outline = "OUTLINE", optionName = "Default", optionDesc = "The most commonly used font."}, - ["chat"] = {file = "SVUI Default Font", size = 12, outline = "OUTLINE", optionName = "Chat", optionDesc = "Font used for chat text."}, - ["chattab"] = {file = "SVUI Caps Font", size = 12, outline = "OUTLINE", optionName = "Chat Tabs", optionDesc = "Font used for chat tab labels."}, - ["dialog"] = {file = DIALOGUE_FONT, size = 10, outline = "OUTLINE", optionName = "Dialog", optionDesc = "Font used in places that story text appears. (ie.. quest text)"}, - ["title"] = {file = DIALOGUE_FONT, size = 16, outline = "OUTLINE", optionName = "Titles", optionDesc = "Font used to display various titles."}, - ["number"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE", optionName = "Numbers (Regular)", optionDesc = "Font used to display most numeric values."}, - ["number_big"] = {file = "SVUI Number Font", size = 18, outline = "OUTLINE", optionName = "Numbers (Large)", optionDesc = "Font used to display larger numeric values."}, - ["combat"] = {file = "SVUI Combat Font", size = 32, outline = "OUTLINE", optionName = "Combat", optionDesc = "Scrolling combat text font."}, - ["alert"] = {file = "SVUI Alert Font", size = 20, outline = "OUTLINE", optionName = "Alerts", optionDesc = "Font used for on-screen message alerts."}, - ["zone"] = {file = "SVUI Zone Font", size = 16, outline = "OUTLINE", optionName = "Zone Text", optionDesc = "Font used for zone names. Shown when changing zones."}, - ["caps"] = {file = "SVUI Caps Font", size = 12, outline = "OUTLINE", optionName = "Caps", optionDesc = "Font typically used for things like tabs and fitted headers."}, - ["aura"] = {file = "SVUI Number Font", size = 10, outline = "OUTLINE", optionName = "Auras", optionDesc = "Aura counts and timers use this font."}, - ["data"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE", optionName = "Docked Stats", optionDesc = "Font used by the bottom and top data docks."}, - ["narrator"] = {file = "SVUI Narrator Font", size = 12, outline = "OUTLINE", optionName = "Narratives", optionDesc = "Font used for things like the 'Meanwhile' tag."}, - ["pixel"] = {file = "SVUI Pixel Font", size = 8, outline = "MONOCHROMEOUTLINE", optionName = "Pixel", optionDesc = "Tiniest fonts."}, - - ["questdialog"] = {file = "SVUI Default Font", size = 11, outline = "OUTLINE", optionName = "Quest Tracker Dialog", optionDesc = "Default font used in the quest tracker"}, - ["questheader"] = {file = "SVUI Narrator Font", size = 16, outline = "OUTLINE", optionName = "Quest Tracker Titles", optionDesc = "Font used in the quest tracker for listing headers."}, - ["questnumber"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE", optionName = "Quest Tracker Numbers", optionDesc = "Font used in the quest tracker to display numeric values."}, - - ["platename"] = {file = "SVUI Caps Font", size = 9, outline = "OUTLINE", optionName = "Nameplate Names", optionDesc = "Used on nameplates for unit names."}, - ["plateaura"] = {file = "SVUI Caps Font", size = 9, outline = "OUTLINE", optionName = "Nameplate Auras", optionDesc = "Used on nameplates for aura texts."}, - - ["unitprimary"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE", optionName = "Unitframe Values", optionDesc = "Used on all primary unit frames for health, power and misc values.\nUnits: player, pet, target, focus, boss and arena"}, - ["unitsecondary"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE", optionName = "Unitframe Values", optionDesc = "Used on all non-primary unit frames for health, power and misc values.\nUnits: pettarget, targettarget, focustarget, party, raid, raidpet, tank and assist."}, - ["unitaurabar"] = {file = "SVUI Alert Font", size = 10, outline = "OUTLINE", optionName = "Unitframe AuraBar", optionDesc = "Used on unit aurabars."}, - ["unitauramedium"] = {file = "SVUI Default Font", size = 10, outline = "OUTLINE", optionName = "Unitframe Aura (Medium)",optionDesc = "Used on unit frames for auras (medium scale)."}, - ["unitauralarge"] = {file = "SVUI Number Font", size = 10, outline = "OUTLINE", optionName = "Unitframe Aura (Large)", optionDesc = "Used on unit frames for auras (large scale)."}, - ["unitaurasmall"] = {file = "SVUI Pixel Font", size = 8, outline = "MONOCHROMEOUTLINE", optionName = "Unitframe Aura (Small)", optionDesc = "Used on unit frames for auras (small scale)."}, + ["default"] = {file = "SVUI Default Font", size = 12, outline = "OUTLINE"}, + ["dialog"] = {file = DIALOGUE_FONT, size = 10, outline = "OUTLINE"}, + ["title"] = {file = DIALOGUE_FONT, size = 16, outline = "OUTLINE"}, + ["number"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["number_big"] = {file = "SVUI Number Font", size = 18, outline = "OUTLINE"}, + ["header"] = {file = "SVUI Number Font", size = 18, outline = "OUTLINE"}, + ["combat"] = {file = "SVUI Combat Font", size = 32, outline = "OUTLINE"}, + ["alert"] = {file = "SVUI Alert Font", size = 20, outline = "OUTLINE"}, + ["zone"] = {file = "SVUI Zone Font", size = 16, outline = "OUTLINE"}, + ["caps"] = {file = "SVUI Caps Font", size = 12, outline = "OUTLINE"}, + ["aura"] = {file = "SVUI Number Font", size = 10, outline = "OUTLINE"}, + ["data"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["narrator"] = {file = "SVUI Narrator Font", size = 12, outline = "OUTLINE"}, + ["pixel"] = {file = "SVUI Pixel Font", size = 8, outline = "MONOCHROMEOUTLINE"}, + ["chatdialog"] = {file = "SVUI Default Font", size = 12, outline = "OUTLINE"}, + ["chattab"] = {file = "SVUI Caps Font", size = 12, outline = "OUTLINE"}, + ["lootdialog"] = {file = "SVUI Default Font", size = 14, outline = "OUTLINE"}, + ["lootnumber"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["rolldialog"] = {file = "SVUI Default Font", size = 14, outline = "OUTLINE"}, + ["rollnumber"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["bagdialog"] = {file = "SVUI Default Font", size = 11, outline = "OUTLINE"}, + ["bagnumber"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["tipdialog"] = {file = "SVUI Default Font", size = 12, outline = "NONE"}, + ["tipheader"] = {file = "SVUI Default Font", size = 14, outline = "NONE"}, + ["questdialog"] = {file = "SVUI Default Font", size = 12, outline = "OUTLINE"}, + ["questheader"] = {file = "SVUI Caps Font", size = 16, outline = "OUTLINE"}, + ["questnumber"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["platename"] = {file = "SVUI Caps Font", size = 9, outline = "OUTLINE"}, + ["platenumber"] = {file = "SVUI Caps Font", size = 9, outline = "OUTLINE"}, + ["plateaura"] = {file = "SVUI Caps Font", size = 9, outline = "OUTLINE"}, + ["unitprimary"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["unitsecondary"] = {file = "SVUI Number Font", size = 11, outline = "OUTLINE"}, + ["unitaurabar"] = {file = "SVUI Alert Font", size = 10, outline = "OUTLINE"}, + ["unitauramedium"] = {file = "SVUI Default Font", size = 10, outline = "OUTLINE"}, + ["unitauralarge"] = {file = "SVUI Number Font", size = 10, outline = "OUTLINE"}, + ["unitaurasmall"] = {file = "SVUI Pixel Font", size = 8, outline = "MONOCHROMEOUTLINE"}, } SV.defaults["media"] = { - ["fonts"] = { - ["default"] = "SVUI Name Font", - ["dialog"] = DIALOGUE_FONT, - ["number"] = "SVUI Number Font", - ["combat"] = "SVUI Number Font", - ["giant"] = "SVUI Name Font", - ["size"] = 10, - ["unicodeSize"] = 12, - }, ["textures"] = { ["pattern"] = "SVUI Backdrop 1", ["comic"] = "SVUI Comic 1", @@ -231,7 +227,7 @@ SV.defaults["Dock"] = { SV.defaults["SVBar"] = { ["enable"] = true, - ["font"] = "SVUI Clean Font", + ["font"] = "SVUI Default Font", ["fontSize"] = 11, ["fontOutline"] = "OUTLINE", ["countFont"] = "SVUI Number Font", @@ -528,7 +524,7 @@ SV.defaults["SVChat"] = { ["tabHeight"] = 20, ["tabWidth"] = 75, ["tabStyled"] = true, - ["font"] = "SVUI Clean Font", + ["font"] = "SVUI Default Font", ["fontOutline"] = "OUTLINE", ["tabFont"] = "SVUI Tab Font", ["tabFontSize"] = 11, @@ -745,7 +741,6 @@ SV.defaults["SVPlate"] = { SV.defaults["SVQuest"] = { ["enable"] = true, - ["rowHeight"] = 20, }; SV.defaults["SVTip"] = { @@ -766,7 +761,7 @@ SV.defaults["SVTip"] = { ["healthBar"] = { ["text"] = true, ["height"] = 10, - ["font"] = "SVUI Clean Font", + ["font"] = "SVUI Default Font", ["fontSize"] = 10, }, }; diff --git a/Interface/AddOns/SVUI/framework/api/api_general.lua b/Interface/AddOns/SVUI/framework/api/api_general.lua index 572d880..f5de5f3 100644 --- a/Interface/AddOns/SVUI/framework/api/api_general.lua +++ b/Interface/AddOns/SVUI/framework/api/api_general.lua @@ -34,7 +34,7 @@ local math = _G.math; local floor, abs, min, max = math.floor, math.abs, math.min, math.max; local parsefloat, ceil = math.parsefloat, math.ceil; --[[ STRING METHODS ]]-- -local lower = string.lower; +local lower, upper = string.lower, string.upper; --[[ TABLE METHODS ]]-- local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump; --[[ @@ -165,72 +165,93 @@ APPENDED FONT TEMPLATING METHODS ########################################################## ]]-- local ManagedFonts = {}; -local RestrictedFonts = {}; -local FontManager = function(self, fontTemplate, fontJustifyH) +local FONT_LIST_DIRTY = false; + +local FontManager = function(self, template, arg, sizeMod, styleOverride, colorR, colorG, colorB) if not self then return end - local STANDARDFONTSIZE = SV.db.font and SV.db.font.default.size or 11 - - fontTemplate = fontTemplate or "default"; - fontJustifyH = fontJustifyH or "CENTER"; - local template = SV.db.font[fontTemplate]; - if(not template) then - --print(fontTemplate) - return + template = template or "default"; + local info = SV.db.font[template]; + if(not info) then return end + + local isSystemFont = false; + if(arg and (arg == 'SYSTEM')) then + isSystemFont = true; end - - self.___template = fontTemplate; - self.___file = LSM:Fetch("font", template.file); - self.___size = template.size; - self.___style = template.outline; - self.___common = (template.size == STANDARDFONTSIZE); - - self:SetFont(self.___file, self.___size, self.___style) - if(template.outline and template.outline ~= "NONE") then - self:SetShadowColor(0, 0, 0, 0) - else - self:SetShadowColor(0, 0, 0, 0.2) - end - self:SetShadowOffset(1, -1) - self:SetJustifyH(fontJustifyH) - self:SetJustifyV("MIDDLE") - if(fontTemplate ~= "number") then - ManagedFonts[self] = true + local file = LSM:Fetch("font", info.file); + local size = info.size; + local outline = info.outline; + + if(styleOverride) then + self.___fontOutline = styleOverride; + outline = styleOverride; end - --RestrictedFonts[fontTemplate] = RestrictedFonts[fontTemplate] or {} - --tinsert(RestrictedFonts[fontTemplate], self) -end ---[[ -########################################################## -UPDATE CALLBACKS -########################################################## -]]-- -local function FontTemplateUpdates() - local defaultSize = SV.db.font.default.size; - --local frameCount = 0; - for frame in pairs(ManagedFonts) do - if frame then - local template = SV.db.font[frame.___template]; - frame.___file = LSM:Fetch("font", template.file); - frame.___size = frame.___common and defaultSize or template.size; - frame.___style = template.outline; - frame:SetFont(frame.___file, frame.___size, frame.___style); + self.___fontSizeMod = sizeMod or 0; + self:SetFont(file, (size + self.___fontSizeMod), outline) - --frameCount = frameCount + 1 + if(not isSystemFont) then + if(info.outline and info.outline ~= "NONE") then + self:SetShadowColor(0, 0, 0, 0) else - ManagedFonts[frame] = nil + self:SetShadowColor(0, 0, 0, 0.2) + end + self:SetShadowOffset(1, -1) + self:SetJustifyH(arg or "CENTER") + self:SetJustifyV("MIDDLE") + end + + if(colorR and colorG and colorB) then + self:SetTextColor(colorR, colorG, colorB); + end + + if(not ManagedFonts[template]) then + ManagedFonts[template] = {} + end + + ManagedFonts[template][self] = true +end + +SV.SetToFontManager = FontManager; + +local function UpdateFontTemplate(template) + template = template or "default"; + local info = SV.db.font[template]; + local file = LSM:Fetch("font", info.file); + local size = info.size; + local line = info.outline; + local list = ManagedFonts[template]; + + for frame in pairs(list) do + if frame then + if(frame.___fontOutline) then + frame:SetFont(file, (size + frame.___fontSizeMod), frame.___fontOutline); + else + frame:SetFont(file, (size + frame.___fontSizeMod), line); + end + else + ManagedFonts[template][frame] = nil; end end +end - -- print("Total FontFrames: " .. frameCount) - -- for fontGroup, list in pairs(RestrictedFonts) do - -- print("Total [" .. fontGroup .."]: " .. #list) - -- end +local function UpdateAllFontTemplates() + for template, _ in pairs(ManagedFonts) do + UpdateFontTemplate(template) + end +end + +local function UpdateFontGroup(...) + for i = 1, select('#', ...) do + local template = select(i, ...) + if not template then break end + UpdateFontTemplate(template) + end end -SV.Events:On("SVUI_FONTS_UPDATED", "FontTemplateUpdates", FontTemplateUpdates); +SV.Events:On("SVUI_ALLFONTS_UPDATED", "UpdateAllFontTemplates", UpdateAllFontTemplates); +SV.Events:On("SVUI_FONTGROUP_UPDATED", "UpdateFontGroup", UpdateFontGroup); --[[ ########################################################## SECURE FADING diff --git a/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua b/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua index a4bd85c..f821c6e 100644 --- a/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua +++ b/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua @@ -354,7 +354,7 @@ function Dragger:Initialize() self.Frames = {} end - if(not SV.db.general.questWatch) then + if(not SV.db.SVQuest.enable) then UIPanels["ObjectiveTrackerFrame"] = { moving = false, snapped = false, canupdate = false, cansetpoint = false, centered = false }; end if(SV.db.SVMap.tinyWorldMap) then diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua index d0541ad..53467f7 100644 --- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua +++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua @@ -78,10 +78,20 @@ local RefProfessionColors = { [0x10000] = {222/255,13/255,65/255}, [0x100000] = {18/255,224/255,180/255} } - local BagFilters = CreateFrame("Frame", "SVUI_BagFilterMenu", UIParent); --[[ ########################################################## +UPVALUES +########################################################## +]]-- +local DIALOG_FONT = [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]]; +local DIALOG_FONTSIZE = 12; +local DIALOG_FONTOUTLINE = "OUTLINE"; +local NUMBER_FONT = [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]]; +local NUMBER_FONTSIZE = 12; +local NUMBER_FONTOUTLINE = "OUTLINE"; +--[[ +########################################################## LOCAL FUNCTIONS ########################################################## ]]-- @@ -1294,7 +1304,7 @@ do frame.holderFrame:SetPointToScale("BOTTOM", frame, "BOTTOM", 0, frame.bottomOffset) frame.Title = frame:CreateFontString() - frame.Title:SetFontObject(NumberFont_Outline_Large) + frame.Title:FontManager("header") frame.Title:SetText(INVENTORY_TOOLTIP) frame.Title:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, -2) frame.Title:SetTextColor(1,0.8,0) @@ -1305,7 +1315,7 @@ do frame.BagMenu:Hide() frame.goldText = frame:CreateFontString(nil, "OVERLAY") - frame.goldText:FontManager("number") + frame.goldText:FontManager("bagnumber") frame.goldText:SetPointToScale("BOTTOMRIGHT", frame.holderFrame, "TOPRIGHT", -2, 4) frame.goldText:SetJustifyH("RIGHT") @@ -1325,7 +1335,7 @@ do frame.editBox:SetScript("OnChar", Search_OnInput) frame.editBox.SearchReset = Search_OnKeyPressed frame.editBox:SetText(SEARCH) - frame.editBox:FontManager("default") + frame.editBox:FontManager("bagdialog") local searchButton = CreateFrame("Button", nil, frame) searchButton:RegisterForClicks("LeftButtonUp", "RightButtonUp") @@ -1334,7 +1344,7 @@ do searchButton:SetStylePanel("Button") searchButton:SetScript("OnClick", Search_OnClick) local searchText = searchButton:CreateFontString(nil, "OVERLAY") - searchText:SetFont(SV.Media.font.default, 12, "NONE") + searchText:FontManager("bagdialog", nil, 0, "NONE") searchText:SetAllPoints(searchButton) searchText:SetJustifyH("CENTER") searchText:SetText("|cff9999ff"..SEARCH.."|r") @@ -1413,7 +1423,7 @@ do frame.currencyButton[h].icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) frame.currencyButton[h].text = frame.currencyButton[h]:CreateFontString(nil, "OVERLAY") frame.currencyButton[h].text:SetPointToScale("LEFT", frame.currencyButton[h], "RIGHT", 2, 0) - frame.currencyButton[h].text:FontManager("number_big") + frame.currencyButton[h].text:FontManager("bagnumber") frame.currencyButton[h]:SetScript("OnEnter", Token_OnEnter) frame.currencyButton[h]:SetScript("OnLeave", Token_OnLeave) frame.currencyButton[h]:SetScript("OnClick", Token_OnClick) @@ -1486,7 +1496,7 @@ do frame.holderFrame:SetPointToScale("BOTTOM", frame, "BOTTOM", 0, frame.bottomOffset) frame.Title = frame:CreateFontString() - frame.Title:SetFontObject(NumberFont_Outline_Large) + frame.Title:FontManager("header") frame.Title:SetText(isReagent and REAGENT_BANK or BANK or "Bank") frame.Title:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, -2) frame.Title:SetTextColor(1,0.8,0) @@ -1790,6 +1800,15 @@ end BUILD FUNCTION / UPDATE ########################################################## ]]-- +function MOD:UpdateLocals() + DIALOG_FONT = LSM:Fetch("font", SV.db.font.bagdialog.file); + DIALOG_FONTSIZE = SV.db.font.bagdialog.size or 11; + DIALOG_FONTOUTLINE = SV.db.font.bagdialog.outline; + NUMBER_FONT = LSM:Fetch("font", SV.db.font.bagnumber.file); + NUMBER_FONTSIZE = SV.db.font.bagnumber.size; + NUMBER_FONTOUTLINE = SV.db.font.bagnumber.outline; +end + function MOD:ReLoad() if not SV.db.SVBag.enable then return end self:RefreshBagFrames() diff --git a/Interface/AddOns/SVUI/packages/bar/components/extra.lua b/Interface/AddOns/SVUI/packages/bar/components/extra.lua index b025066..2455900 100644 --- a/Interface/AddOns/SVUI/packages/bar/components/extra.lua +++ b/Interface/AddOns/SVUI/packages/bar/components/extra.lua @@ -58,6 +58,12 @@ local ExtraButton_OnEvent = function(self, event) self:SetAbility() end else + if(not InCombatLockdown()) then + local action = ExtraActionButton1:GetAttribute('action') + if(action) then + self:SetAbility(action) + end + end self:Update() end end diff --git a/Interface/AddOns/SVUI/packages/chat/SVChat.lua b/Interface/AddOns/SVUI/packages/chat/SVChat.lua index f906e41..eb4150f 100644 --- a/Interface/AddOns/SVUI/packages/chat/SVChat.lua +++ b/Interface/AddOns/SVUI/packages/chat/SVChat.lua @@ -660,15 +660,13 @@ do local chatID = chat:GetID(); local tabName = chatName.."Tab"; local tabText = _G[chatName.."TabText"] - --local _, fontSize = FCF_GetChatWindowInfo(chatID); - --CHAT_FONTSIZE = fontSize - chat:SetFont(CHAT_FONT, CHAT_FONTSIZE, CHAT_FONTOUTLINE) - tabText:SetFont(TAB_FONT, TAB_FONTSIZE, TAB_FONTOUTLINE) + chat:FontManager("chatdialog", "LEFT") + tabText:FontManager("chattab") if(not chat.Panel) then chat:SetStylePanel("Default", "Transparent") chat.Panel:Hide() end - if(CHAT_FONTOUTLINE ~= 'NONE' )then + if(SV.db.font.chatdialog.outline ~= 'NONE' )then chat:SetShadowColor(0, 0, 0, 0) chat:SetShadowOffset(0, 0) else @@ -908,12 +906,11 @@ do chat = FCF_GetCurrentChatFrame(); end if ( not size ) then - size = self.value or CHAT_FONTSIZE; + size = self.value or SV.db.font.chatdialog.size; end - CHAT_FONTSIZE = size; - SV.db.font.chat.size = size; - chat:SetFont(CHAT_FONT, size, CHAT_FONTOUTLINE) - if(CHAT_FONTOUTLINE ~= 'NONE' )then + SV.db.font.chatdialog.size = size; + SV.Events:Trigger("SVUI_FONTGROUP_UPDATED", "chatdialog"); + if(SV.db.font.chatdialog.outline ~= 'NONE' )then chat:SetShadowColor(0, 0, 0, 0) chat:SetShadowOffset(0, 0) else @@ -1059,15 +1056,9 @@ function MOD:UpdateLocals() CHAT_ALLOW_URL = SV.db.SVChat.url; CHAT_HOVER_URL = SV.db.SVChat.hyperlinkHover; CHAT_STICKY = SV.db.SVChat.sticky; - CHAT_FONT = LSM:Fetch("font", SV.db.font.chat.file); - CHAT_FONTSIZE = SV.db.font.chat.size or 11; - CHAT_FONTOUTLINE = SV.db.font.chat.outline; TAB_WIDTH = SV.db.SVChat.tabWidth; TAB_HEIGHT = SV.db.SVChat.tabHeight; TAB_SKINS = SV.db.SVChat.tabStyled; - TAB_FONT = LSM:Fetch("font", SV.db.font.chattab.file); - TAB_FONTSIZE = SV.db.font.chattab.size; - TAB_FONTOUTLINE = SV.db.font.chattab.outline; CHAT_FADING = SV.db.SVChat.fade; CHAT_PSST = LSM:Fetch("sound", SV.db.SVChat.psst); TIME_STAMP_MASK = SV.db.SVChat.timeStampFormat; @@ -1076,13 +1067,6 @@ function MOD:UpdateLocals() end end -local function ForceChatFrameUpdate() - MOD:UpdateLocals() - MOD:RefreshChatFrames(true) -end - -SV.Events:On("SVUI_FONTS_UPDATED", "ForceChatFrameUpdate", ForceChatFrameUpdate); - function MOD:ReLoad() if(not SV.db.SVChat.enable) then return end self:RefreshChatFrames(true) diff --git a/Interface/AddOns/SVUI/packages/map/SVMap.lua b/Interface/AddOns/SVUI/packages/map/SVMap.lua index ec67e8f..6433f8c 100644 --- a/Interface/AddOns/SVUI/packages/map/SVMap.lua +++ b/Interface/AddOns/SVUI/packages/map/SVMap.lua @@ -283,7 +283,7 @@ do end local function UpdateMapCoords() - local xF, yF = "|cffffffffx: |r%.1f", "|cffffffffy: |r%.1f" + local xF, yF = "|cffFFCC00X: |r%.1f", "|cffFFCC00Y: |r%.1f" local skip = IsInInstance() local c, d = GetPlayerMapPosition("player") if((not skip) and (c ~= 0 and d ~= 0)) then diff --git a/Interface/AddOns/SVUI/packages/override/components/loot.lua b/Interface/AddOns/SVUI/packages/override/components/loot.lua index c19b265..ef86996 100644 --- a/Interface/AddOns/SVUI/packages/override/components/loot.lua +++ b/Interface/AddOns/SVUI/packages/override/components/loot.lua @@ -285,7 +285,7 @@ local function MakeSlots(id) slot.count = slot.iconFrame:CreateFontString(nil, "OVERLAY") slot.count:SetJustifyH("RIGHT") slot.count:SetPointToScale("BOTTOMRIGHT", slot.iconFrame, -2, 2) - slot.count:SetFont(LSM:Fetch("font", "SVUI Clean Font"), 12, "OUTLINE") + slot.count:FontManager("lootnumber") slot.count:SetText(1) slot.name = slot:CreateFontString(nil, "OVERLAY") @@ -293,7 +293,7 @@ local function MakeSlots(id) slot.name:SetPoint("LEFT", slot) slot.name:SetPoint("RIGHT", slot.icon, "LEFT") slot.name:SetNonSpaceWrap(true) - slot.name:SetFont(LSM:Fetch("font", "SVUI Clean Font"), 12, "OUTLINE") + slot.name:FontManager("lootdialog") slot.drop = slot:CreateTexture(nil, "ARTWORK") slot.drop:SetTexture("Interface\\QuestFrame\\UI-QuestLogTitleHighlight") @@ -329,7 +329,7 @@ local function CreateRollButton(rollFrame, type, locale, anchor) rollButton:SetScript("OnClick", DoDaRoll) rollButton:SetMotionScriptsWhileDisabled(true) local text = rollButton:CreateFontString(nil, nil) - text:SetFont(LSM:Fetch("font", "SVUI Clean Font"),14,"OUTLINE") + text:FontManager("rolldialog") text:SetPointToScale("CENTER", 0, ((type == 2 and 1) or (type == 0 and -1.2) or 0)) return rollButton, text end @@ -383,16 +383,16 @@ local function CreateRollFrame() rollFrame.need,rollFrame.greed,rollFrame.pass,rollFrame.disenchant = needText,greedText,passText,deText; rollFrame.bindText = rollFrame:CreateFontString() rollFrame.bindText:SetPointToScale("LEFT",passButton,"RIGHT",3,1) - rollFrame.bindText:SetFont(LSM:Fetch("font", "SVUI Number Font"),14,"OUTLINE") + rollFrame.bindText:FontManager("rollnumber") rollFrame.lootText = rollFrame:CreateFontString(nil,"ARTWORK") - rollFrame.lootText:SetFont(LSM:Fetch("font", "SVUI Number Font"),14,"OUTLINE") + rollFrame.lootText:FontManager("rollnumber") rollFrame.lootText:SetPointToScale("LEFT",rollFrame.bindText,"RIGHT",0,0) rollFrame.lootText:SetPointToScale("RIGHT",rollFrame,"RIGHT",-5,0) rollFrame.lootText:SetSizeToScale(200,10) rollFrame.lootText:SetJustifyH("LEFT") rollFrame.yourRoll = rollFrame:CreateFontString(nil,"ARTWORK") - rollFrame.yourRoll:SetFont(LSM:Fetch("font", "SVUI Number Font"),18,"OUTLINE") + rollFrame.yourRoll:FontManager("rollnumber", "CENTER", 4) rollFrame.yourRoll:SetSizeToScale(22,22) rollFrame.yourRoll:SetPointToScale("LEFT",rollFrame,"RIGHT",5,0) rollFrame.yourRoll:SetJustifyH("CENTER") @@ -650,7 +650,7 @@ function MOD:SetLootFrames() SVUI_LootFrame:SetSizeToScale(256, 64); SVUI_LootFrame:SetStylePanel("Fixed", 'Transparent'); - SVUI_LootFrame.title:SetFont(LSM:Fetch("font", "SVUI Number Font"),18,"OUTLINE") + SVUI_LootFrame.title:FontManager("header") SV:AddToDisplayAudit(SVUI_LootFrame); SVUI_LootFrame:Hide(); diff --git a/Interface/AddOns/SVUI/packages/plate/SVPlate.lua b/Interface/AddOns/SVUI/packages/plate/SVPlate.lua index 200b4aa..83eac9e 100644 --- a/Interface/AddOns/SVUI/packages/plate/SVPlate.lua +++ b/Interface/AddOns/SVUI/packages/plate/SVPlate.lua @@ -1090,12 +1090,12 @@ do if(not ProxyThisPlate(plate, true)) then return; end SVUI_PLATE.name:FontManager("platename") SVUI_PLATE.name:SetTextColor(1, 1, 1) - SVUI_PLATE.level:FontManager("platename") + SVUI_PLATE.level:FontManager("platenumber") if not PLATE_ARGS.scaled and not PLATE_ARGS.tiny then SVUI_PLATE.health:SetSize(HBWidth, HBHeight) end SVUI_PLATE.health:SetStatusBarTexture(SV.Media.bar.default) - SVUI_PLATE.health.text:FontManager("plateaura") + SVUI_PLATE.health.text:FontManager("platenumber") SVUI_PLATE.cast:SetSize(HBWidth, CBHeight) SVUI_PLATE.cast:SetStatusBarTexture(SV.Media.bar.gradient) SVUI_PLATE.cast.text:SetFont(SV.Media.font.default, 8, "OUTLINE") diff --git a/Interface/AddOns/SVUI/packages/quest/SVQuest.lua b/Interface/AddOns/SVUI/packages/quest/SVQuest.lua index fb83abd..5c099dc 100644 --- a/Interface/AddOns/SVUI/packages/quest/SVQuest.lua +++ b/Interface/AddOns/SVUI/packages/quest/SVQuest.lua @@ -407,7 +407,7 @@ end function MOD:UpdateLocals() ROW_WIDTH = self.Docklet.ScrollFrame:GetWidth(); - ROW_HEIGHT = SV.db.SVQuest.rowHeight; + ROW_HEIGHT = SV.db.font.questdialog.size / 0.55; INNER_HEIGHT = ROW_HEIGHT - 4; LARGE_ROW_HEIGHT = ROW_HEIGHT * 2; LARGE_INNER_HEIGHT = LARGE_ROW_HEIGHT - 4; diff --git a/Interface/AddOns/SVUI/packages/quest/components/achievements.lua b/Interface/AddOns/SVUI/packages/quest/components/achievements.lua index 77d75ea..daa4c01 100644 --- a/Interface/AddOns/SVUI/packages/quest/components/achievements.lua +++ b/Interface/AddOns/SVUI/packages/quest/components/achievements.lua @@ -69,7 +69,7 @@ SCRIPT HANDLERS ########################################################## ]]-- local RowButton_OnEnter = function(self, ...) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT", 0, ROW_HEIGHT) GameTooltip:ClearLines() GameTooltip:AddLine("View this in the achievements window.") GameTooltip:Show() diff --git a/Interface/AddOns/SVUI/packages/quest/components/active.lua b/Interface/AddOns/SVUI/packages/quest/components/active.lua index e7085d9..cc53584 100644 --- a/Interface/AddOns/SVUI/packages/quest/components/active.lua +++ b/Interface/AddOns/SVUI/packages/quest/components/active.lua @@ -99,7 +99,7 @@ local ObjectiveProgressBar_OnEvent = function(self, event, ...) end local ActiveButton_OnEnter = function(self, ...) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT", 0, ROW_HEIGHT) GameTooltip:ClearLines() GameTooltip:AddDoubleLine("[Left-Click]", "View the log entry for this quest.", 0, 1, 0, 1, 1, 1) GameTooltip:AddLine(" ") diff --git a/Interface/AddOns/SVUI/packages/quest/components/quests.lua b/Interface/AddOns/SVUI/packages/quest/components/quests.lua index ff75471..6334a1e 100644 --- a/Interface/AddOns/SVUI/packages/quest/components/quests.lua +++ b/Interface/AddOns/SVUI/packages/quest/components/quests.lua @@ -254,14 +254,14 @@ SCRIPT HANDLERS ########################################################## ]]-- local BadgeButton_OnEnter = function(self, ...) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT", 0, ROW_HEIGHT) GameTooltip:ClearLines() GameTooltip:AddLine("Click to track this quest.") GameTooltip:Show() end local RowButton_OnEnter = function(self, ...) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT", 0, ROW_HEIGHT) GameTooltip:ClearLines() GameTooltip:AddDoubleLine("[Left-Click]", "View the log entry for this quest.", 0, 1, 0, 1, 1, 1) GameTooltip:AddLine(" ") diff --git a/Interface/AddOns/SVUI/packages/tip/SVTip.lua b/Interface/AddOns/SVUI/packages/tip/SVTip.lua index 0c4b204..8791eb9 100644 --- a/Interface/AddOns/SVUI/packages/tip/SVTip.lua +++ b/Interface/AddOns/SVUI/packages/tip/SVTip.lua @@ -116,8 +116,6 @@ local VISIBILITY_UNITS = "NONE"; local VISIBILITY_COMBAT = false; local BAR_TEXT = true; local BAR_HEIGHT = 10; -local BAR_FONT = "SVUI Clean Font"; -local BAR_FONTSIZE = 10; local VisibilityTest = { NONE = function() return false end, @@ -532,7 +530,7 @@ local _hook_GameTooltip_OnTooltipSetItem = function(self) if(SPELL_IDS and (itemLink ~= nil)) then self:AddLine(" ") - left = "|cFFCA3C3CSpell ID: |r" + local left = "|cFFCA3C3CSpell ID: |r" local itemID = ("|cFFCA3C3C%s|r %s"):format(left, itemLink):match(":(%w+)") self:AddDoubleLine("|cFFCA3C3CSpell ID: |r", itemID) end @@ -898,8 +896,6 @@ function MOD:UpdateLocals() COMIC_TIPS = SV.db.SVTip.comicStyle; VISIBILITY_COMBAT = SV.db.SVTip.visibility.combat; BAR_HEIGHT = SV.db.SVTip.healthBar.height; - BAR_FONT = SV.db.SVTip.healthBar.font; - BAR_FONTSIZE = SV.db.SVTip.healthBar.fontSize; SPELL_IDS = SV.db.SVTip.spellID; ON_CURSOR = SV.db.SVTip.cursorAnchor; BAR_TEXT = SV.db.SVTip.healthBar.text; diff --git a/Interface/AddOns/SVUI/packages/tool/buttons/questwatch.lua b/Interface/AddOns/SVUI/packages/tool/buttons/questwatch.lua deleted file mode 100644 index 65e4668..0000000 --- a/Interface/AddOns/SVUI/packages/tool/buttons/questwatch.lua +++ /dev/null @@ -1,213 +0,0 @@ ---[[ -############################################################################## -_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # - ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # - __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # - ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # - ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # - _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # - __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # - _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# - ___\///////////___________\///___________\/////////_____\///////////_# -############################################################################## -S U P E R - V I L L A I N - U I By: Munglunch # -############################################################################## -########################################################## -LOCALIZED LUA FUNCTIONS -########################################################## -]]-- ---[[ GLOBALS ]]-- -local _G = _G; -local unpack = _G.unpack; -local select = _G.select; -local pairs = _G.pairs; -local ipairs = _G.ipairs; -local type = _G.type; -local error = _G.error; -local pcall = _G.pcall; -local tostring = _G.tostring; -local tonumber = _G.tonumber; -local tinsert = _G.tinsert; -local string = _G.string; -local math = _G.math; -local bit = _G.bit; -local table = _G.table; ---[[ STRING METHODS ]]-- -local lower, upper = string.lower, string.upper; -local find, format, len, split = string.find, string.format, string.len, string.split; -local match, sub, join = string.match, string.sub, string.join; -local gmatch, gsub = string.gmatch, string.gsub; ---[[ MATH METHODS ]]-- -local abs, ceil, floor, round = math.abs, math.ceil, math.floor, math.round; -- Basic -local fmod, modf, sqrt = math.fmod, math.modf, math.sqrt; -- Algebra -local atan2, cos, deg, rad, sin = math.atan2, math.cos, math.deg, math.rad, math.sin; -- Trigonometry -local huge, random = math.huge, math.random; -- Uncommon ---[[ BINARY METHODS ]]-- -local band, bor = bit.band, bit.bor; ---[[ TABLE METHODS ]]-- -local tremove, tcopy, twipe, tsort, tconcat = table.remove, table.copy, table.wipe, table.sort, table.concat; ---[[ -########################################################## -GET ADDON DATA -########################################################## -]]-- -local SV = select(2, ...) -local L = SV.L - -local MOD = SV.SVTools; -local ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame ---[[ -########################################################## -LOCAL VARS -########################################################## -]]-- -local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]]; ---[[ -########################################################## -CORE FUNCTIONS -########################################################## -]]-- -local ShowSubDocklet = function(self) - if(InCombatLockdown()) then return end - if(not ObjectiveTrackerFrame:IsShown()) then ObjectiveTrackerFrame:Show() end -end - -local HideSubDocklet = function(self) - if(InCombatLockdown()) then return end - if(ObjectiveTrackerFrame:IsShown()) then ObjectiveTrackerFrame:Hide() end -end - -local UpdateDocklet = function() - local cur = SVUI_QuestWatchFrameScrollBar:GetValue() - if(not InCombatLockdown()) then - ObjectiveTrackerFrame:ClearAllPoints() - ObjectiveTrackerFrame:SetAllPoints(SVUI_QuestWatchFrameScrollFrame) - end - SVUI_QuestWatchFrameScrollBar:SetValue(0) - SVUI_QuestWatchFrameScrollBar:SetValue(cur) -end - -function MOD:LoadQuestWatch() - if(not ObjectiveTrackerFrame) then return end - if(not SV.db.general.questWatch) then - ObjectiveTrackerFrame:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame:RemoveTextures(true) - ObjectiveTrackerFrame.HeaderMenu:RemoveTextures(true) - ObjectiveTrackerFrame.BlockDropDown:RemoveTextures(true) - - if(SV.db.general.questHeaders) then - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetStylePanel("Default", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetBackdropColor(0, 0, 0, 0.5) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader.Panel:ClearAllPoints() - ObjectiveTrackerFrame.BlocksFrame.QuestHeader.Panel:SetPoint("TOPLEFT", ObjectiveTrackerFrame.BlocksFrame.QuestHeader, "TOPLEFT", -2, -2) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader.Panel:SetPoint("BOTTOMRIGHT", ObjectiveTrackerFrame.BlocksFrame.QuestHeader, "BOTTOMRIGHT", 12, 2) - - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetStylePanel("Default", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetBackdropColor(0, 0, 0, 0.5) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader.Panel:ClearAllPoints() - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader.Panel:SetPoint("TOPLEFT", ObjectiveTrackerFrame.BlocksFrame.AchievementHeader, "TOPLEFT", -2, -2) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader.Panel:SetPoint("BOTTOMRIGHT", ObjectiveTrackerFrame.BlocksFrame.AchievementHeader, "BOTTOMRIGHT", 12, 2) - - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetStylePanel("Default", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetBackdropColor(0, 0, 0, 0.5) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader.Panel:ClearAllPoints() - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader.Panel:SetPoint("TOPLEFT", ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader, "TOPLEFT", -2, -2) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader.Panel:SetPoint("BOTTOMRIGHT", ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader, "BOTTOMRIGHT", 12, 2) - end - else - local bgTex = [[Interface\BUTTONS\WHITE8X8]] - local bdTex = SV.Media.bar.glow - - self.QuestWatch = SV.Dock:NewDocklet("BottomRight", "SVUI_QuestWatchFrame", "Quest Watch", ICON_FILE) - - local WIDTH, HEIGHT = self.QuestWatch:GetSize() - - local listFrame = CreateFrame("ScrollFrame", "SVUI_QuestWatchFrameScrollFrame", self.QuestWatch); - listFrame:SetPoint("TOPLEFT", self.QuestWatch, -62, 0); - listFrame:SetPoint("BOTTOMRIGHT", self.QuestWatch, -31, 21); - listFrame:EnableMouseWheel(true); - - local scrollFrame = CreateFrame("Slider", "SVUI_QuestWatchFrameScrollBar", listFrame); - scrollFrame:SetHeight(listFrame:GetHeight()); - scrollFrame:SetWidth(18); - scrollFrame:SetPoint("TOPRIGHT", self.QuestWatch, "TOPRIGHT", -3, 0); - scrollFrame:SetBackdrop({bgFile = bgTex, edgeFile = bdTex, edgeSize = 4, insets = {left = 3, right = 3, top = 3, bottom = 3}}); - scrollFrame:SetFrameLevel(6) - scrollFrame:SetStylePanel("Fixed", "Transparent", true); - scrollFrame:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob"); - scrollFrame:SetOrientation("VERTICAL"); - scrollFrame:SetValueStep(5); - scrollFrame:SetMinMaxValues(1, 1420); - scrollFrame:SetValue(1); - scrollFrame:SetScript("OnValueChanged", function(self, argValue) - listFrame:SetVerticalScroll(argValue) - end) - - listFrame.slider = scrollFrame; - listFrame:SetScript("OnMouseWheel", function(self, delta) - local scroll = self:GetVerticalScroll(); - local value = (scroll - (20 * delta)); - if value < -1 then - value = 0 - end - if value > 420 then - value = 420 - end - --self:SetVerticalScroll(value) - self.slider:SetValue(value) - end) - - ObjectiveTrackerFrame:ClearAllPoints() - ObjectiveTrackerFrame:SetClampedToScreen(false) - ObjectiveTrackerFrame:SetHeight(1500) - ObjectiveTrackerFrame:SetWidth(WIDTH) - ObjectiveTrackerFrame:SetPoint("TOPRIGHT", listFrame, "TOPRIGHT", -2, 0) - ObjectiveTrackerFrame:SetFrameLevel(listFrame:GetFrameLevel() + 1) - - ObjectiveTrackerFrame:HookScript("OnEvent", UpdateDocklet) - hooksecurefunc(ObjectiveTrackerFrame, "SetPoint", UpdateDocklet) - - -- hooksecurefunc(ObjectiveTrackerFrame, "SetPoint", function(self, a1, p, a2, x, y) - -- if(p ~= SVUI_QuestWatchFrameScrollFrame) then - -- self:SetPoint("TOPRIGHT", SVUI_QuestWatchFrameScrollFrame, "TOPRIGHT", -2, 0) - -- end - -- end) - --ObjectiveTrackerFrame.SetPoint = function() return end; - - ObjectiveTrackerFrame.HeaderMenu.MinimizeButton:Hide() - - ObjectiveTrackerFrame.BlocksFrame:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame:SetPoint("TOPLEFT", ObjectiveTrackerFrame, "TOPLEFT", 87, 0) - ObjectiveTrackerFrame.BlocksFrame:SetPoint("BOTTOMLEFT", ObjectiveTrackerFrame, "BOTTOMLEFT", 87, 0) - ObjectiveTrackerFrame.BlocksFrame:SetWidth(WIDTH) - - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetWidth((WIDTH - 60)) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetWidth((WIDTH - 60)) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetWidth((WIDTH - 60)) - - if(SV.db.general.questHeaders) then - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetStylePanel("Fixed", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetBackdropColor(0, 0, 0, 0.5) - - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetStylePanel("Fixed", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetBackdropColor(0, 0, 0, 0.5) - - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:RemoveTextures(true) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetStylePanel("Fixed", "Headline", true) - ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetBackdropColor(0, 0, 0, 0.5) - end - - self.QuestWatch.DockButton:MakeDefault(); - self.QuestWatch:Show(); - self.QuestWatch:SetScript('OnShow', ShowSubDocklet); - self.QuestWatch:SetScript('OnHide', HideSubDocklet); - - listFrame:SetScrollChild(ObjectiveTrackerFrame) - SV.Timers:ExecuteTimer(UpdateDocklet, 3) - end -end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua index ae8ca19..1959408 100644 --- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua +++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua @@ -643,8 +643,14 @@ function MOD:RefreshUnitLayout(frame, template) POWER_GRIP:ClearAllPoints() POWER_GRIP:SetHeightToScale(POWER_HEIGHT - 2) - POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR1, frame, BOTTOM_ANCHOR1, (PORTRAIT_WIDTH - (1 * BOTTOM_MODIFIER)), 2) - POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR2, frame, BOTTOM_ANCHOR2, (2 * BOTTOM_MODIFIER), 2) + + if(not PORTRAIT_OVERLAY) then + POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR1, frame, BOTTOM_ANCHOR1, PORTRAIT_WIDTH, 1) + POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR2, frame, BOTTOM_ANCHOR2, (1 * BOTTOM_MODIFIER), 1) + else + POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR1, frame, BOTTOM_ANCHOR1, (PORTRAIT_WIDTH - (1 * BOTTOM_MODIFIER)), 2) + POWER_GRIP:SetPointToScale(BOTTOM_ANCHOR2, frame, BOTTOM_ANCHOR2, (2 * BOTTOM_MODIFIER), 2) + end elseif(frame:IsElementEnabled('Power')) then frame:DisableElement('Power') POWER_GRIP:Hide() diff --git a/Interface/AddOns/SVUI/setup/installer.lua b/Interface/AddOns/SVUI/setup/installer.lua index 9cda85d..e19b3b2 100644 --- a/Interface/AddOns/SVUI/setup/installer.lua +++ b/Interface/AddOns/SVUI/setup/installer.lua @@ -161,7 +161,7 @@ local function UFMoveBottomQuadrant(toggle) anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278182" anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278122" --anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0181" - anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0214" + anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0198" anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432" anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495182" elseif toggle == "shift" then @@ -170,9 +170,18 @@ local function UFMoveBottomQuadrant(toggle) anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278210" anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278150" --anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0209" - anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0242" + anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0226" anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432" anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495210" + elseif toggle == "minimal" then + anchors.SVUI_Player_MOVE = "BOTTOMSVUIParentBOTTOM-278182" + anchors.SVUI_PlayerCastbar_MOVE = "BOTTOMSVUIParentBOTTOM-278122" + anchors.SVUI_Target_MOVE = "BOTTOMSVUIParentBOTTOM278182" + anchors.SVUI_TargetCastbar_MOVE = "BOTTOMSVUIParentBOTTOM278122" + --anchors.SVUI_Pet_MOVE = "BOTTOMSVUIParentBOTTOM0181" + anchors.SVUI_TargetTarget_MOVE = "BOTTOMSVUIParentBOTTOM0182" + anchors.SVUI_Focus_MOVE = "BOTTOMSVUIParentBOTTOM310432" + anchors.SVUI_ThreatBar_MOVE = "BOTTOMRIGHTSVUIParentBOTTOMRIGHT-495182" else local c = 136; local d = 135; @@ -655,6 +664,22 @@ function SV.Setup:Minimalist() --SV.db.SVTools.enable = false; SV.db.SVUnit.comicStyle = false; + SV.db.SVUnit.player.height = 22; + SV.db.SVUnit.player.power.height = 6; + + SV.db.SVUnit.target.height = 22; + SV.db.SVUnit.target.power.height = 6; + SV.db.SVUnit.targettarget.height = 22; + SV.db.SVUnit.targettarget.power.height = 6; + SV.db.SVUnit.pet.height = 22; + SV.db.SVUnit.pet.power.height = 6; + SV.db.SVUnit.focus.height = 22; + SV.db.SVUnit.focus.power.height = 6; + SV.db.SVUnit.boss.height = 22; + SV.db.SVUnit.boss.power.height = 6; + + UFMoveBottomQuadrant("minimal") + SVLib:SaveSafeData("install_version", SV.Version) StopMusic() SetCVar("Sound_MusicVolume", user_music_vol or 0) diff --git a/Interface/AddOns/SVUI/setup/presets.lua b/Interface/AddOns/SVUI/setup/presets.lua index 2891ebc..363e81e 100644 --- a/Interface/AddOns/SVUI/setup/presets.lua +++ b/Interface/AddOns/SVUI/setup/presets.lua @@ -670,9 +670,6 @@ local function LoadPresetData() ["layouts"] = { ["link"] = "SVUnit", ["default"] = { - ["grid"] = { - ["enable"] = false, - }, ["party"] = { width = 75, height = 60, @@ -697,6 +694,9 @@ local function LoadPresetData() ["xOffset"] = 0, ["yOffset"] = 0, }, + ["grid"] = { + ["enable"] = false, + }, }, ["raid"] = { width = 50, @@ -721,12 +721,12 @@ local function LoadPresetData() ["xOffset"] = 8, ["yOffset"] = 0, }, + ["grid"] = { + ["enable"] = false, + }, }, }, ["healer"] = { - ["grid"] = { - ["enable"] = false, - }, ["party"] = { width = 75, height = 60, @@ -751,6 +751,9 @@ local function LoadPresetData() ["xOffset"] = 0, ["yOffset"] = 0, }, + ["grid"] = { + ["enable"] = false, + }, }, ["raid"] = { width = 50, @@ -775,12 +778,12 @@ local function LoadPresetData() ["xOffset"] = 8, ["yOffset"] = 0, }, + ["grid"] = { + ["enable"] = false, + }, }, }, ["dps"] = { - ["grid"] = { - ["enable"] = false, - }, ["party"] = { width = 115, height = 25, @@ -803,12 +806,15 @@ local function LoadPresetData() }, }, ["name"] = { - ["font"] = "SVUI Clean Font", + ["font"] = "SVUI Default Font", ["fontOutline"] = "NONE", ["position"] = "CENTER", ["xOffset"] = 0, ["yOffset"] = 1, }, + ["grid"] = { + ["enable"] = false, + }, }, ["raid"] = { ["showBy"] = "UP_RIGHT", @@ -826,13 +832,16 @@ local function LoadPresetData() }, }, ["name"] = { - ["font"] = "SVUI Clean Font", + ["font"] = "SVUI Default Font", ["position"] = "CENTER", ["xOffset"] = 0, ["yOffset"] = 1, }, ["width"] = 80, ["height"] = 20, + ["grid"] = { + ["enable"] = false, + }, }, }, ["grid"] = { diff --git a/Interface/AddOns/SVUI/system/core.lua b/Interface/AddOns/SVUI/system/core.lua index fc2fea4..56bccc1 100644 --- a/Interface/AddOns/SVUI/system/core.lua +++ b/Interface/AddOns/SVUI/system/core.lua @@ -412,7 +412,7 @@ function SVUI:VersionCheck() end function SVUI:RefreshEverything(bypass) - self:RefreshAllSystemMedia(); + self:MediaUpdate(); self.Mentalo:SetPositions(); SVLib:RefreshAll(); if not bypass then @@ -428,7 +428,7 @@ function SVUI:PLAYER_ENTERING_WORLD() end if(not self.MediaInitialized) then self:RefreshAllSystemMedia() - end + end local _,instanceType = IsInInstance() if(instanceType == "pvp") then self.BGTimer = self.Timers:ExecuteLoop(RequestBattlefieldScoreData, 5) @@ -527,14 +527,9 @@ function SVUI:Initialize() SVLib:Initialize(); self:UI_SCALE_CHANGED() - - --self:RefreshSystemFonts(); self:LoadSystemAlerts(); - self.Timers:Initialize(); - self:LoadFramework(); - self.safedata = SVLib:GetSafeData(); SVLib:Launch(); @@ -543,7 +538,6 @@ function SVUI:Initialize() self:PlayerInfoUpdate(); self:VersionCheck() self:RefreshAllSystemMedia(); - hooksecurefunc("StaticPopup_Show", self.StaticPopup_Show) SVLib:RefreshModule("SVMap"); diff --git a/Interface/AddOns/SVUI/system/media.lua b/Interface/AddOns/SVUI/system/media.lua index 22f0c5a..f253a3e 100644 --- a/Interface/AddOns/SVUI/system/media.lua +++ b/Interface/AddOns/SVUI/system/media.lua @@ -58,35 +58,6 @@ local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS local UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT = _G.UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT --[[ ########################################################## -PRE VARS/FUNCTIONS -########################################################## -]]-- -local function SetFont(globalName, font, fontSize, fontOutline, cR, cG, cB) - if not font then return end - local fontObject = _G[globalName] - if not fontObject then return end - fontObject:SetFont(font, fontSize, fontOutline); - if(cR and cG and cB) then - fontObject:SetTextColor(1, 1, 1); - end -end - -local function AlterFont(shadowColor, offsetX, offsetY, fontAlpha) - if not font then return end - local fontObject = _G[globalName] - if not fontObject then print(globalName) return end - if(shadowColor and type(shadowColor) == "table") then - fontObject:SetShadowColor(unpack(shadowColor)) - end - if(offsetX and offsetY) then - fontObject:SetShadowOffset(offsetX,offsetY) - end - if(fontAlpha) then - fontObject:SetAlpha(fontAlpha) - end -end ---[[ -########################################################## DEFINE SOUND EFFECTS ########################################################## ]]-- @@ -168,7 +139,7 @@ LSM:Register("font","SVUI Pixel Font",[[Interface\AddOns\SVUI\assets\fonts\Pixel LSM:Register("font","SVUI Caps Font",[[Interface\AddOns\SVUI\assets\fonts\Caps.ttf]],LSM.LOCALE_BIT_ruRU+LSM.LOCALE_BIT_western) LSM:Register("font","SVUI Classic Font",[[Interface\AddOns\SVUI\assets\fonts\Classic.ttf]]) LSM:Register("font","SVUI Combat Font",[[Interface\AddOns\SVUI\assets\fonts\Combat.ttf]]) -LSM:Register("font","SVUI Name Font",[[Interface\AddOns\SVUI\assets\fonts\Names.ttf]]) +LSM:Register("font","SVUI Dialog Font",[[Interface\AddOns\SVUI\assets\fonts\Dialog.ttf]]) LSM:Register("font","SVUI Number Font",[[Interface\AddOns\SVUI\assets\fonts\Numbers.ttf]]) LSM:Register("font","SVUI Zone Font",[[Interface\AddOns\SVUI\assets\fonts\Zone.ttf]]) LSM:Register("font","SVUI Flash Font",[[Interface\AddOns\SVUI\assets\fonts\Flash.ttf]]) @@ -196,7 +167,7 @@ do if(GetLocale() ~= "enUS") then DIALOGUE_FONT = Shared:Fetch("font", "SVUI Default Font") else - DIALOGUE_FONT = Shared:Fetch("font", "SVUI Name Font") + DIALOGUE_FONT = Shared:Fetch("font", "SVUI Dialog Font") end SV.Media["color"] = { @@ -314,25 +285,6 @@ function SV:HexColor(arg1,arg2,arg3) return hexString end -function SV:MediaUpdate() - self.Media.color.default = self.db.media.colors.default - self.Media.color.special = self.db.media.colors.special - self.Media.color.specialdark = self.db.media.colors.specialdark - self.Media.bg.pattern = LSM:Fetch("background", self.db.media.textures.pattern) - self.Media.bg.comic = LSM:Fetch("background", self.db.media.textures.comic) - self.Media.bg.unitlarge = LSM:Fetch("background", self.db.media.textures.unitlarge) - self.Media.bg.unitsmall = LSM:Fetch("background", self.db.media.textures.unitsmall) - - local cColor1 = self.Media.color.special - local cColor2 = self.Media.color.default - local r1,g1,b1 = cColor1[1], cColor1[2], cColor1[3] - local r2,g2,b2 = cColor2[1], cColor2[2], cColor2[3] - - self.Media.gradient.special = {"VERTICAL",r1,g1,b1,r2,g2,b2} - - self.Events:Trigger("SVUI_COLORS_UPDATED"); -end - local function UpdateChatFontSizes() _G.CHAT_FONT_HEIGHTS[1] = 8 _G.CHAT_FONT_HEIGHTS[2] = 9 @@ -351,108 +303,125 @@ end hooksecurefunc("FCF_ResetChatWindows", UpdateChatFontSizes) -function SV:RefreshSystemFonts() - local fontsize = self.db.font.default.size - local highlight_fontsize = fontsize + 1; - local caps_fontsize = self.db.font.caps.size; - local number_fontsize = self.db.font.number.size; - local dialog_fontsize = self.db.font.dialog.size; - local zone_fontsize = self.db.font.zone.size; - local alert_fontsize = self.db.font.alert.size; - local combat_fontsize = self.db.font.combat.size; - - local NUMBER_TEXT_FONT = LSM:Fetch("font", self.db.font.number.file); - local ALERT_TEXT_FONT = LSM:Fetch("font", self.db.font.alert.file); - local ZONE_TEXT_FONT = LSM:Fetch("font", self.db.font.zone.file); - local DIALOG_FONT = LSM:Fetch("font", self.db.font.dialog.file); +local function SetFont(globalName, template, sizeMod, styleOverride, cR, cG, cB) + if(not template) then return end + if(not _G[globalName]) then return end + styleOverride = styleOverride or "NONE" + SV.SetToFontManager(_G[globalName], template, "SYSTEM", sizeMod, styleOverride, cR, cG, cB); +end + +function SV:SetGlobalFonts() + local fontsize = self.db.font.default.size; STANDARD_TEXT_FONT = LSM:Fetch("font", self.db.font.default.file); UNIT_NAME_FONT = LSM:Fetch("font", self.db.font.caps.file); DAMAGE_TEXT_FONT = LSM:Fetch("font", self.db.font.combat.file); - NAMEPLATE_FONT = STANDARD_TEXT_FONT UpdateChatFontSizes() UIDROPDOWNMENU_DEFAULT_TEXT_HEIGHT = fontsize - - SetFont("Game18Font", NUMBER_TEXT_FONT, 12) - SetFont("Game24Font", NUMBER_TEXT_FONT, 14) - SetFont("Game27Font", NUMBER_TEXT_FONT, 16) - SetFont("Game30Font", NUMBER_TEXT_FONT, 18) - SetFont("Game32Font", NUMBER_TEXT_FONT, 20) - - --SetFont("GameFontNormal", STANDARD_TEXT_FONT, fontsize - 2) - SetFont("GameFontWhite", STANDARD_TEXT_FONT, fontsize, 'OUTLINE', 1, 1, 1) - SetFont("GameFontWhiteSmall", STANDARD_TEXT_FONT, fontsize, 'NONE', 1, 1, 1) - SetFont("GameFontBlack", STANDARD_TEXT_FONT, fontsize, 'NONE', 0, 0, 0) - SetFont("GameFontBlackSmall", STANDARD_TEXT_FONT, fontsize - 1, 'NONE', 0, 0, 0) - SetFont("GameFontNormalMed2", STANDARD_TEXT_FONT, fontsize + 2) - --SetFont("GameFontNormalMed1", STANDARD_TEXT_FONT, fontsize) - SetFont("GameFontNormalLarge", STANDARD_TEXT_FONT, fontsize) - SetFont("GameFontHighlightSmall", STANDARD_TEXT_FONT, fontsize) - SetFont("GameFontHighlight", STANDARD_TEXT_FONT, fontsize+1) - SetFont("GameFontHighlightLeft", STANDARD_TEXT_FONT, fontsize+1) - SetFont("GameFontHighlightRight", STANDARD_TEXT_FONT, fontsize+1) - SetFont("GameFontHighlightLarge2", STANDARD_TEXT_FONT, fontsize+2) - SetFont("SystemFont_Med1", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Med3", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Outline_Small", STANDARD_TEXT_FONT, fontsize, "OUTLINE") - SetFont("FriendsFont_Normal", STANDARD_TEXT_FONT, fontsize) - SetFont("FriendsFont_Small", STANDARD_TEXT_FONT, fontsize) - SetFont("FriendsFont_Large", STANDARD_TEXT_FONT, fontsize + 3) - SetFont("FriendsFont_UserText", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("SystemFont_Small", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("GameTooltipHeader", STANDARD_TEXT_FONT, fontsize) - SetFont("Tooltip_Med", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("Tooltip_Small", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("GameFontNormalSmall", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("NumberFont_Shadow_Med", STANDARD_TEXT_FONT, fontsize - 1, "OUTLINE") - SetFont("NumberFont_Shadow_Small", STANDARD_TEXT_FONT, fontsize - 1, "OUTLINE") - SetFont("SystemFont_Tiny", STANDARD_TEXT_FONT, fontsize - 1) - SetFont("SystemFont_Shadow_Med1", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Shadow_Med1_Outline", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Shadow_Med2", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Shadow_Med3", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Large", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Huge1", STANDARD_TEXT_FONT, fontsize+4) - SetFont("SystemFont_Huge1_Outline", STANDARD_TEXT_FONT, fontsize+4) - SetFont("SystemFont_Shadow_Small", STANDARD_TEXT_FONT, fontsize) - SetFont("SystemFont_Shadow_Large", STANDARD_TEXT_FONT, fontsize+3) - - SetFont("QuestFont", DIALOG_FONT, dialog_fontsize); - SetFont("SpellFont_Small", DIALOG_FONT, dialog_fontsize, "OUTLINE", 1, 1, 1); - SetFont("SystemFont_Shadow_Outline_Huge2", DIALOG_FONT, dialog_fontsize+14, "OUTLINE"); - - SetFont("NumberFont_OutlineThick_Mono_Small", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - SetFont("NumberFont_Outline_Huge", NUMBER_TEXT_FONT, number_fontsize+6, "OUTLINE", 28) - SetFont("NumberFont_Outline_Large", NUMBER_TEXT_FONT, number_fontsize+6, "OUTLINE") - SetFont("NumberFont_Outline_Med", NUMBER_TEXT_FONT, number_fontsize+1, "OUTLINE") - SetFont("NumberFontNormal", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - SetFont("NumberFont_GameNormal", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - SetFont("NumberFontNormalRight", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - SetFont("NumberFontNormalRightRed", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - SetFont("NumberFontNormalRightYellow", NUMBER_TEXT_FONT, number_fontsize, "OUTLINE") - - SetFont("GameFont_Gigantic", ALERT_TEXT_FONT, alert_fontsize, "OUTLINE", 32) - SetFont("SystemFont_Shadow_Huge1", ALERT_TEXT_FONT, alert_fontsize, "OUTLINE") - --SetFont("SystemFont_OutlineThick_Huge2", ALERT_TEXT_FONT, alert_fontsize, "THICKOUTLINE") - - SetFont("SystemFont_Shadow_Huge3", DAMAGE_TEXT_FONT, combat_fontsize, "OUTLINE") - SetFont("CombatTextFont", DAMAGE_TEXT_FONT, combat_fontsize * 3, "OUTLINE") - - SetFont("SystemFont_OutlineThick_Huge4", ZONE_TEXT_FONT, zone_fontsize+6, "OUTLINE"); - SetFont("SystemFont_OutlineThick_WTF", ZONE_TEXT_FONT, zone_fontsize+9, "OUTLINE"); - SetFont("SystemFont_OutlineThick_WTF2", ZONE_TEXT_FONT, zone_fontsize+15, "OUTLINE"); - SetFont("QuestFont_Large", ZONE_TEXT_FONT, zone_fontsize - 3); - SetFont("QuestFont_Huge", ZONE_TEXT_FONT, zone_fontsize - 2); - SetFont("QuestFont_Super_Huge", ZONE_TEXT_FONT, zone_fontsize); - SetFont("SystemFont_OutlineThick_Huge2", ZONE_TEXT_FONT, zone_fontsize+2, "OUTLINE"); - - self.Events:Trigger("SVUI_FONTS_UPDATED"); end +function SV:SetSystemFonts() + --SetFont("GameFontNormal", "default", fontsize - 2) + SetFont("GameFontWhite", "default", 0, 'OUTLINE', 1, 1, 1) + SetFont("GameFontWhiteSmall", "default", 0, 'NONE', 1, 1, 1) + SetFont("GameFontBlack", "default", 0, 'NONE', 0, 0, 0) + SetFont("GameFontBlackSmall", "default", -1, 'NONE', 0, 0, 0) + SetFont("GameFontNormalMed2", "default", 2) + --SetFont("GameFontNormalMed1", "default", 0) + SetFont("GameFontNormalLarge", "default") + SetFont("GameFontHighlightSmall", "default") + SetFont("GameFontHighlight", "default", 1) + SetFont("GameFontHighlightLeft", "default", 1) + SetFont("GameFontHighlightRight", "default", 1) + SetFont("GameFontHighlightLarge2", "default", 2) + SetFont("SystemFont_Med1", "default") + SetFont("SystemFont_Med3", "default") + SetFont("SystemFont_Outline_Small", "default", 0, "OUTLINE") + SetFont("FriendsFont_Normal", "default") + SetFont("FriendsFont_Small", "default") + SetFont("FriendsFont_Large", "default", 3) + SetFont("FriendsFont_UserText", "default", -1) + SetFont("SystemFont_Small", "default", -1) + SetFont("GameFontNormalSmall", "default", -1) + SetFont("NumberFont_Shadow_Med", "default", -1, "OUTLINE") + SetFont("NumberFont_Shadow_Small", "default", -1, "OUTLINE") + SetFont("SystemFont_Tiny", "default", -1) + SetFont("SystemFont_Shadow_Med1", "default") + SetFont("SystemFont_Shadow_Med1_Outline", "default") + SetFont("SystemFont_Shadow_Med2", "default") + SetFont("SystemFont_Shadow_Med3", "default") + SetFont("SystemFont_Large", "default") + SetFont("SystemFont_Huge1", "default", 4) + SetFont("SystemFont_Huge1_Outline", "default", 4) + SetFont("SystemFont_Shadow_Small", "default") + SetFont("SystemFont_Shadow_Large", "default", 3) + + SetFont("QuestFont", "dialog"); + SetFont("QuestFont_Enormous", "zone", 15, "OUTLINE"); + SetFont("SpellFont_Small", "dialog", 0, "OUTLINE", 1, 1, 1); + SetFont("SystemFont_Shadow_Outline_Huge2", "dialog", 14, "OUTLINE"); + + SetFont("GameFont_Gigantic", "alert", 0, "OUTLINE", 32) + SetFont("SystemFont_Shadow_Huge1", "alert", 0, "OUTLINE") + --SetFont("SystemFont_OutlineThick_Huge2", "alert", 0, "THICKOUTLINE") + + SetFont("SystemFont_Shadow_Huge3", "combat", 0, "OUTLINE") + SetFont("CombatTextFont", "combat", 20, "OUTLINE") + + SetFont("SystemFont_OutlineThick_Huge4", "zone", 6, "OUTLINE"); + SetFont("SystemFont_OutlineThick_WTF", "zone", 9, "OUTLINE"); + SetFont("SystemFont_OutlineThick_WTF2", "zone", 15, "OUTLINE"); + SetFont("QuestFont_Large", "zone", -3); + SetFont("QuestFont_Huge", "zone", -2); + SetFont("QuestFont_Super_Huge", "zone"); + SetFont("SystemFont_OutlineThick_Huge2", "zone", 2, "OUTLINE"); + + SetFont("Game18Font", "number", 1) + SetFont("Game24Font", "number", 3) + SetFont("Game27Font", "number", 5) + SetFont("Game30Font", "number_big") + SetFont("Game32Font", "number_big", 1) + + SetFont("NumberFont_OutlineThick_Mono_Small", "number", 0, "OUTLINE") + SetFont("NumberFont_Outline_Huge", "number_big", 0, "OUTLINE") + SetFont("NumberFont_Outline_Large", "number_big", 0, "OUTLINE") + SetFont("NumberFont_Outline_Med", "number", 1, "OUTLINE") + SetFont("NumberFontNormal", "number", 0, "OUTLINE") + SetFont("NumberFont_GameNormal", "number", 0, "OUTLINE") + SetFont("NumberFontNormalRight", "number", 0, "OUTLINE") + SetFont("NumberFontNormalRightRed", "number", 0, "OUTLINE") + SetFont("NumberFontNormalRightYellow", "number", 0, "OUTLINE") + + SetFont("GameTooltipHeader", "tipheader") + SetFont("Tooltip_Med", "tipdialog") + SetFont("Tooltip_Small", "tipdialog", -1) +end + +function SV:MediaUpdate() + self.Media.color.default = self.db.media.colors.default + self.Media.color.special = self.db.media.colors.special + self.Media.color.specialdark = self.db.media.colors.specialdark + self.Media.bg.pattern = LSM:Fetch("background", self.db.media.textures.pattern) + self.Media.bg.comic = LSM:Fetch("background", self.db.media.textures.comic) + self.Media.bg.unitlarge = LSM:Fetch("background", self.db.media.textures.unitlarge) + self.Media.bg.unitsmall = LSM:Fetch("background", self.db.media.textures.unitsmall) + + local cColor1 = self.Media.color.special + local cColor2 = self.Media.color.default + local r1,g1,b1 = cColor1[1], cColor1[2], cColor1[3] + local r2,g2,b2 = cColor2[1], cColor2[2], cColor2[3] + + self.Media.gradient.special = {"VERTICAL",r1,g1,b1,r2,g2,b2} + + self.Events:Trigger("SVUI_COLORS_UPDATED"); +end + function SV:RefreshAllSystemMedia() - self:RefreshSystemFonts() - self:MediaUpdate() - self.MediaInitialized = true + self:SetGlobalFonts(); + self:MediaUpdate(); + self:SetSystemFonts(); + self.Events:Trigger("SVUI_ALLFONTS_UPDATED"); + self.MediaInitialized = true; end --[[ ########################################################## @@ -481,5 +450,5 @@ do local fName, fHeight, fFlags = CombatTextFont:GetFont() - CombatTextFont:SetFont(fontFile, 24, fFlags) + CombatTextFont:SetFont(fontFile, fHeight, fFlags) end \ No newline at end of file diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua index 6829ac0..9a470d8 100644 --- a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua +++ b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua @@ -867,11 +867,10 @@ OTHER HANDLERS ########################################################## ]]-- local AnsweringOnClick = function() - if(not PLUGIN.Docklet) then return end if(PLUGIN.Docklet:IsShown()) then - PLUGIN.Docklet:Hide() + PLUGIN.Docklet.DockButton:Deactivate() else - PLUGIN.Docklet:Show() + PLUGIN.Docklet.DockButton:Activate() end end diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua index 72de82d..2a43c23 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua @@ -265,8 +265,8 @@ SV.Options.args.Dock.args["rightDockGroup"] = { -- order = 1, -- type = "toggle", -- name = L["Enable"], - -- get = function()return SV.db.general.questWatch end, - -- set = function(j, value) SV.db.general.questWatch = value; SV:StaticPopup_Show("RL_CLIENT") end + -- get = function()return SV.db.SVQuest.enable end, + -- set = function(j, value) SV.db.SVQuest.enable = value; SV:StaticPopup_Show("RL_CLIENT") end -- } -- } -- }, @@ -281,7 +281,7 @@ SV.Options.args.Dock.args["rightDockGroup"] = { -- name = L["Enable"], -- get = function()return SV.db.general.questHeaders end, -- set = function(j, value) SV.db.general.questHeaders = value; SV:StaticPopup_Show("RL_CLIENT") end, - -- disabled = function()return (not SV.db.general.questWatch) end, + -- disabled = function()return (not SV.db.SVQuest.enable) end, -- } -- } -- } diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua index c69b54c..a180d91 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/components/fonts.lua @@ -35,33 +35,202 @@ local _, ns = ...; local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists; -local FONT_GROUP_SORT = { - {"Default", 1, {"default"}}, - {"General", 2, {"dialog", "number", "aura", "chat", "chattab"}}, - {"Large", 3, {"combat", "alert", "zone", "title", "number_big"}}, - {"QuestTracker", 4, {"questdialog", "questheader", "questnumber"}}, - {"Misc", 5, {"data", "narrator", "caps"}}, - {"NamePlate", 6, {"platename", "plateaura"}}, - {"UnitFrame", 7, {"unitprimary", "unitsecondary", "unitaurabar", "unitaurasmall", "unitauramedium", "unitauralarge"}}, -}; -local FONT_GROUP_TITLES = { - ["Default"] = "The most commonly used font in SVUI.", - ["General"] = "These fonts are found more often than the rest.", - ["Large"] = "Large versions of the common fonts.", - ["QuestTracker"] = "Fonts used in the SVUI Quest Tracker.", - ["Misc"] = "Fonts used in various places including the docks.", - ["NamePlate"] = "Fonts used in SVUI Name Plates.", - ["UnitFrame"] = "Fonts used in SVUI Unit Frames.", +local FONT_INFO = { + {"System Dialog", 1, "The most commonly used fonts.", + { + ["default"] = { + name = "Default", + desc = "Standard font for the majority of uses." + }, + ["dialog"] = { + name = "Dialog", + desc = "Font used in places that story text appears. (ie.. quest text)" + }, + ["combat"] = { + name = "Combat", + desc = "Scrolling combat text font." + }, + ["alert"] = { + name = "Alerts", + desc = "Font used for on-screen message alerts." + }, + ["zone"] = { + name = "Zone Text", + desc = "Font used for zone names. Shown when changing zones." + }, + ["title"] = { + name = "Titles", + desc = "Font used to display various titles." + }, + ["header"] = { + name = "Frame Headers", + desc = "Font used to large names at the top of some frames." + }, + ["caps"] = { + name = "Caps", + desc = "Font typically used for things like tabs and fitted headers." + }, + }, + }, + {"System Numeric", 2, "These fonts are used for many number values.", + { + ["number"] = { + name = "Numbers (Regular)", + desc = "Font used to display most numeric values." + }, + ["number_big"] = { + name = "Numbers (Large)", + desc = "Font used to display larger numeric values." + }, + ["aura"] = { + name = "Auras", + desc = "Aura counts and timers use this font." + }, + }, + }, + {"Chat", 3, "Fonts used for the chat frame.", + { + ["chatdialog"] = { + name = "Chat", + desc = "Font used for chat text." + }, + ["chattab"] = { + name = "Chat Tabs", + desc = "Font used for chat tab labels." + }, + }, + }, + {"QuestTracker", 4, "Fonts used in the SVUI Quest Tracker.", + { + ["questdialog"] = { + name = "Quest Tracker Dialog", + desc = "Default font used in the quest tracker" + }, + ["questheader"] = { + name = "Quest Tracker Titles", + desc = "Font used in the quest tracker for listing headers." + }, + ["questnumber"] = { + name = "Quest Tracker Numbers", + desc = "Font used in the quest tracker to display numeric values." + }, + }, + }, + {"NamePlate", 5, "Fonts used in name plates.", + { + ["platename"] = { + name = "Nameplate Names", + desc = "Used on nameplates for unit names." + }, + ["platenumber"] = { + name = "Nameplate Numbers", + desc = "Used on nameplates for health and level numbers." + }, + ["plateaura"] = { + name = "Nameplate Auras", + desc = "Used on nameplates for aura texts." + }, + }, + }, + {"UnitFrame", 6, "Fonts used in unit frames.", + { + ["unitaurabar"] = { + name = "Unitframe AuraBar", + desc = "Used on unit aurabars." + }, + ["unitauramedium"] = { + name = "Unitframe Aura (Medium)", + desc = "Used on unit frames for auras (medium scale)." + }, + ["unitauralarge"] = { + name = "Unitframe Aura (Large)", + desc = "Used on unit frames for auras (large scale)." + }, + ["unitaurasmall"] = { + name = "Unitframe Aura (Small)", + desc = "Used on unit frames for auras (small scale)." + }, + ["unitprimary"] = { + name = "Unitframe Values", + desc = "Used on all primary unit frames for health, power and misc values.\nUnits: player, pet, target, focus, boss and arena" + }, + ["unitsecondary"] = { + name = "Unitframe Values", + desc = "Used on all non-primary unit frames for health, power and misc values.\nUnits: pettarget, targettarget, focustarget, party, raid, raidpet, tank and assist." + }, + }, + }, + {"Bags", 7, "Fonts used in bag slots.", + { + ["bagdialog"] = { + name = "Bag Slot Dialog", + desc = "Default font used in bag and bank slots" + }, + ["bagnumber"] = { + name = "Bag Slot Numbers", + desc = "Font used in bag and bank slots to display numeric values." + }, + }, + }, + {"Tooltip", 8, "Fonts used in tooltips.", + { + ["tipdialog"] = { + name = "Tooltip Dialog", + desc = "Default font used in tooltips" + }, + ["tipheader"] = { + name = "Tooltip Headers", + desc = "Font used in tooltips to display large names." + }, + }, + }, + {"Loot", 9, "Fonts used in loot frames.", + { + ["lootdialog"] = { + name = "Loot Frame Dialog", + desc = "Default font used in the loot frame" + }, + ["lootnumber"] = { + name = "Loot Frame Numbers", + desc = "Font used in the loot frame to display numeric values." + }, + ["rolldialog"] = { + name = "Roll Frame Dialog", + desc = "Default font used in the loot-roll frame" + }, + ["rollnumber"] = { + name = "Roll Frame Numbers", + desc = "Font used in the loot-roll frame to display numeric values." + }, + }, + }, + {"Misc", 10, "Fonts used in various places including the docks.", + { + ["data"] = { + name = "Docked Stats", + desc = "Font used by the bottom and top data docks." + }, + ["narrator"] = { + name = "Narratives", + desc = "Font used for things like the 'Meanwhile' tag." + }, + ["pixel"] = { + name = "Pixel", + desc = "Tiniest fonts." + }, + }, + }, }; local function GenerateFontGroup() local fontGroupArgs = {}; - for _, listData in pairs(FONT_GROUP_SORT) do + for _, listData in pairs(FONT_INFO) do local orderCount = 3; local groupName = listData[1]; local groupCount = listData[2]; - local groupList = listData[3]; + local groupOverview = listData[3]; + local groupList = listData[4]; fontGroupArgs[groupName] = { order = groupCount, type = "group", @@ -69,7 +238,7 @@ local function GenerateFontGroup() args = { overview = { order = 1, - name = FONT_GROUP_TITLES[groupName], + name = groupOverview, type = "description", width = "full", }, @@ -81,25 +250,23 @@ local function GenerateFontGroup() }, }, }; - for _, template in pairs(groupList) do - local data = SV.db.font[template] - if(not data) then print(template) return end + for template, info in pairs(groupList) do fontGroupArgs[groupName].args[template] = { order = orderCount, type = "group", guiInline = true, - name = data.optionName, + name = info.name, get = function(key) return SV.db.font[template][key[#key]] end, set = function(key,value) SV.db.font[template][key[#key]] = value; - SV:RefreshSystemFonts(); + SV.Events:Trigger("SVUI_FONTGROUP_UPDATED", template); end, args = { description = { order = 1, - name = data.optionDesc, + name = info.desc, type = "description", width = "full", }, diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua index 0d8e881..356672c 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Omen.lua @@ -45,7 +45,7 @@ local function StyleOmen() Omen.db.profile.Background.Texture = "None" --[[ Bar Settings ]]-- - Omen.db.profile.Bar.Font = "SVUI Clean Font" + Omen.db.profile.Bar.Font = "SVUI Default Font" Omen.db.profile.Bar.FontOutline = "None" Omen.db.profile.Bar.FontSize = 11 Omen.db.profile.Bar.Height = 14 @@ -98,7 +98,7 @@ function PLUGIN:Docklet_Omen(parent) db.profile.Background.Texture = "None" --[[ Bar Settings ]]-- - db.profile.Bar.Font = "SVUI Clean Font"; + db.profile.Bar.Font = "SVUI Default Font"; db.profile.Bar.FontOutline = "None"; db.profile.Bar.FontSize = 11; db.profile.Bar.Height = 14; diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua index c554c50..904f081 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/character.lua @@ -131,33 +131,11 @@ local function StyleCharacterSlots() end end end - end -end - -local function EquipmentFlyout_OnShow() - EquipmentFlyoutFrameButtons:RemoveTextures() - local counter = 1; - local button = _G["EquipmentFlyoutFrameButton"..counter] - while button do - local texture = _G["EquipmentFlyoutFrameButton"..counter.."IconTexture"] - button:SetStylePanel("Button") - texture:SetTexCoord(0.1, 0.9, 0.1, 0.9) - button:GetNormalTexture():SetTexture(0,0,0,0) - texture:SetAllPointsIn() - button:SetFrameLevel(button:GetFrameLevel() + 2) - if not button.Panel then - button:SetStylePanel("Default", "Default") - button.Panel:SetAllPoints() - end - counter = counter + 1; - button = _G["EquipmentFlyoutFrameButton"..counter] - end -end + end -local function PaperDoll_UpdateTabs() for i = 1, #PAPERDOLL_SIDEBARS do local tab = _G["PaperDollSidebarTab"..i] - if tab then + if(tab and not tab.Panel) then tab.Highlight:SetTexture(1, 1, 1, 0.3) tab.Highlight:SetPointToScale("TOPLEFT", 3, -4) tab.Highlight:SetPointToScale("BOTTOMRIGHT", -1, 0) @@ -174,16 +152,37 @@ local function PaperDoll_UpdateTabs() tab:SetStylePanel("Default", "Default", true, 2) tab.Panel:SetPointToScale("TOPLEFT", 2, -3) tab.Panel:SetPointToScale("BOTTOMRIGHT", 0, -2) + if(i == 1) then + tab:ClearAllPoints() + tab:SetPoint("BOTTOM", CharacterFrameInsetRight, "TOP", 0, 4) + else + tab:ClearAllPoints() + tab:SetPoint("LEFT", _G["PaperDollSidebarTab"..i-1], "RIGHT", 4, 0) + end end end - PaperDollSidebarTab1:ClearAllPoints() - PaperDollSidebarTab1:SetPoint("BOTTOM", CharacterFrameInsetRight, "TOP", 0, 4) - PaperDollSidebarTab2:ClearAllPoints() - PaperDollSidebarTab2:SetPoint("LEFT", PaperDollSidebarTab1, "RIGHT", 4, 0) - PaperDollSidebarTab3:ClearAllPoints() - PaperDollSidebarTab3:SetPoint("LEFT", PaperDollSidebarTab2, "RIGHT", 4, 0) end +local function EquipmentFlyout_OnShow() + EquipmentFlyoutFrameButtons:RemoveTextures() + local counter = 1; + local button = _G["EquipmentFlyoutFrameButton"..counter] + while button do + local texture = _G["EquipmentFlyoutFrameButton"..counter.."IconTexture"] + button:SetStylePanel("Button") + texture:SetTexCoord(0.1, 0.9, 0.1, 0.9) + button:GetNormalTexture():SetTexture(0,0,0,0) + texture:SetAllPointsIn() + button:SetFrameLevel(button:GetFrameLevel() + 2) + if not button.Panel then + button:SetStylePanel("Default", "Default") + button.Panel:SetAllPoints() + end + counter = counter + 1; + button = _G["EquipmentFlyoutFrameButton"..counter] + end +end + local function Reputation_OnShow() for i = 1, GetNumFactions()do local bar = _G["ReputationBar"..i.."ReputationBar"] @@ -204,59 +203,55 @@ local function Reputation_OnShow() end local function PaperDollTitlesPane_OnShow() - for _,gName in pairs(PaperDollTitlesPane.buttons) do - local btn = _G[gName] + for i,btn in pairs(PaperDollTitlesPane.buttons) do if(btn) then btn.BgTop:SetTexture(0,0,0,0) btn.BgBottom:SetTexture(0,0,0,0) btn.BgMiddle:SetTexture(0,0,0,0) - btn.Check:SetTexture(0,0,0,0) - btn.text:SetAllPointsIn(btn) - btn.text:SetFont(SV.Media.font.default,10,"NONE","LEFT") end - end + end + PaperDollTitlesPane_Update() end local function PaperDollEquipmentManagerPane_OnShow() - for _,gName in pairs(PaperDollEquipmentManagerPane.buttons) do - local btn = _G[gName] - if(btn) then - btn.BgTop:SetTexture(0,0,0,0) - btn.BgBottom:SetTexture(0,0,0,0) - btn.BgMiddle:SetTexture(0,0,0,0) - btn.icon:SetSizeToScale(36, 36) - btn.Check:SetTexture(0,0,0,0) - btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) - btn.icon:SetPoint("LEFT", btn, "LEFT", 4, 0) - if not btn.icon.bordertop then - SetItemFrame(btn, btn.icon) - end - end + for i,btn in pairs(PaperDollEquipmentManagerPane.buttons) do + if(btn) then + btn.BgTop:SetTexture(0,0,0,0) + btn.BgBottom:SetTexture(0,0,0,0) + btn.BgMiddle:SetTexture(0,0,0,0) + btn.icon:SetSizeToScale(36, 36) + btn.Check:SetTexture(0,0,0,0) + btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) + btn.icon:SetPoint("LEFT", btn, "LEFT", 4, 0) + if not btn.icon.bordertop then + SetItemFrame(btn, btn.icon) + end end + end - GearManagerDialogPopup:RemoveTextures() - GearManagerDialogPopup:SetStylePanel("Default", "Inset", true) - GearManagerDialogPopup:SetPointToScale("LEFT", PaperDollFrame, "RIGHT", 4, 0) - GearManagerDialogPopupScrollFrame:RemoveTextures() - GearManagerDialogPopupEditBox:RemoveTextures() - GearManagerDialogPopupEditBox:SetStylePanel("Default", 'Inset') - GearManagerDialogPopupOkay:SetStylePanel("Button") - GearManagerDialogPopupCancel:SetStylePanel("Button") - - for i = 1, NUM_GEARSET_ICONS_SHOWN do - local btn = _G["GearManagerDialogPopupButton"..i] - if(btn and (not btn.Panel)) then - btn:RemoveTextures() - btn:SetFrameLevel(btn:GetFrameLevel() + 2) - btn:SetStylePanel("Button") - if(btn.icon) then - btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) - btn.icon:SetTexture(0,0,0,0) - btn.icon:SetAllPointsIn() - end + GearManagerDialogPopup:RemoveTextures() + GearManagerDialogPopup:SetStylePanel("Default", "Inset", true) + GearManagerDialogPopup:SetPointToScale("LEFT", PaperDollFrame, "RIGHT", 4, 0) + GearManagerDialogPopupScrollFrame:RemoveTextures() + GearManagerDialogPopupEditBox:RemoveTextures() + GearManagerDialogPopupEditBox:SetStylePanel("Default", 'Inset') + GearManagerDialogPopupOkay:SetStylePanel("Button") + GearManagerDialogPopupCancel:SetStylePanel("Button") + + for i = 1, NUM_GEARSET_ICONS_SHOWN do + local btn = _G["GearManagerDialogPopupButton"..i] + if(btn and (not btn.Panel)) then + btn:RemoveTextures() + btn:SetFrameLevel(btn:GetFrameLevel() + 2) + btn:SetStylePanel("Button") + if(btn.icon) then + btn.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) + btn.icon:SetTexture(0,0,0,0) + btn.icon:SetAllPointsIn() end end end +end --[[ ########################################################## CHARACTERFRAME PLUGINR @@ -336,8 +331,9 @@ local function CharacterFrameStyle() CharacterModelFrame:SetStylePanel("Fixed", "Model") CharacterFrameExpandButton:SetFrameLevel(CharacterModelFrame:GetFrameLevel() + 5) + PaperDollTitlesPane:RemoveTextures() + PaperDollTitlesPaneScrollChild:RemoveTextures() PaperDollTitlesPane:SetStylePanel("Default", 'Inset') - PaperDollTitlesPane:HookScript("OnShow", PaperDollTitlesPane_OnShow) PaperDollEquipmentManagerPane:SetStylePanel("Default", 'Inset') @@ -355,7 +351,6 @@ local function CharacterFrameStyle() PLUGIN:ApplyTabStyle(_G["CharacterFrameTab"..i]) end - hooksecurefunc("PaperDollFrame_UpdateSidebarTabs", PaperDoll_UpdateTabs) ReputationFrame:RemoveTextures(true) ReputationListScrollFrame:RemoveTextures() diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/garrison.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/garrison.lua index 4dc3876..1458c74 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/garrison.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/garrison.lua @@ -291,6 +291,12 @@ local function LoadGarrisonStyle() GarrisonLandingPage.FollowerList:RemoveTextures() GarrisonLandingPage.FollowerList:SetStylePanel("Default", 'Inset', false, 4, 0, 0) + local bgFrameTop = CreateFrame("Frame", nil, GarrisonLandingPage.Report) + bgFrameTop:SetPoint("TOPLEFT", GarrisonLandingPage.Report, "TOPLEFT", 38, -91) + bgFrameTop:SetPoint("BOTTOMRIGHT", GarrisonLandingPage.Report.List, "BOTTOMLEFT", -4, 0) + bgFrameTop:SetStylePanel("Default", "Paper") + bgFrameTop:SetPanelColor("special") + PLUGIN:ApplyTabStyle(GarrisonLandingPageTab1, nil, 10, 4) PLUGIN:ApplyTabStyle(GarrisonLandingPageTab2, nil, 10, 4) @@ -341,6 +347,12 @@ local function LoadGarrisonStyle() GarrisonMissionFrame.MissionTab.MissionPage:SetStylePanel("Default", 'Paper', false, 4, 0, 0) GarrisonMissionFrame.MissionTab.MissionPage:SetPanelColor("special") + local missionChance = GarrisonMissionFrame.MissionTab.MissionPage.RewardsFrame.Chance; + missionChance:FontManager("number_big") + local chanceLabel = GarrisonMissionFrame.MissionTab.MissionPage.RewardsFrame.ChanceLabel + chanceLabel:FontManager("header", nil, -4) + chanceLabel:ClearAllPoints() + chanceLabel:SetPoint("TOP", missionChance, "BOTTOM", 0, -8) GarrisonMissionFrame.MissionTab.MissionPage.Panel:ClearAllPoints() GarrisonMissionFrame.MissionTab.MissionPage.Panel:SetPoint("TOPLEFT", GarrisonMissionFrame.MissionTab.MissionPage, "TOPLEFT", 0, 4) diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua index 849ed6f..1d570a7 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/quest.lua @@ -295,12 +295,13 @@ local function QuestChoiceFrameStyle() bgFrameTop:SetPoint("TOPLEFT", QuestChoiceFrame, "TOPLEFT", 42, -44) bgFrameTop:SetPoint("TOPRIGHT", QuestChoiceFrame, "TOPRIGHT", -42, -44) bgFrameTop:SetHeight(85) - bgFrameTop:SetStylePanel("Default", "Inset") + bgFrameTop:SetStylePanel("Default", "Paper") + bgFrameTop:SetPanelColor("dark") local bgFrameBottom = CreateFrame("Frame", nil, QuestChoiceFrame) bgFrameBottom:SetPoint("TOPLEFT", QuestChoiceFrame, "TOPLEFT", 42, -140) bgFrameBottom:SetPoint("BOTTOMRIGHT", QuestChoiceFrame, "BOTTOMRIGHT", -42, 44) - bgFrameBottom:SetStylePanel("Default", "Inset") + bgFrameBottom:SetStylePanel("Default", "Paper") PLUGIN:ApplyCloseButtonStyle(QuestChoiceFrame.CloseButton) -- 1.7.9.5