diff --git a/.pkgmeta b/.pkgmeta index ced7873..efce407 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -2,20 +2,45 @@ package-as: IceHUD externals: libs/AceLibrary: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceLibrary - libs/CallbackHandler-1.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/CallbackHandler-1.0 + libs/CallbackHandler-1.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/CallbackHandler-1.0 + tag: latest libs/AceEvent-2.0: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceEvent-2.0 - libs/AceDB-2.0: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceDB-2.0 + libs/AceDB-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0 + tag: latest + libs/AceDBOptions-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDBOptions-3.0 + tag: latest + libs/AceConfig-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0 + tag: latest + libs/AceGUI-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0 + tag: latest libs/AceOO-2.0: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceOO-2.0 - libs/AceAddon-2.0: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceAddon-2.0 - libs/AceConsole-2.0: svn://svn.wowace.com/wow/ace2/mainline/trunk/AceConsole-2.0 - libs/Deformat-2.0: svn://svn.wowace.com/wow/deformat/mainline/trunk/Deformat-2.0 - libs/Dewdrop-2.0: svn://svn.wowace.com/wow/dewdroplib/mainline/trunk/Dewdrop-2.0 + libs/AceAddon-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0 + tag: latest + libs/AceConsole-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0 + tag: latest + libs/Deformat-2.0: + url: svn://svn.wowace.com/wow/deformat/mainline/trunk/Deformat-2.0 + tag: latest libs/FuBarPlugin-2.0: svn://svn.wowace.com/wow/fubarplugin-2-0/mainline/trunk/FuBarPlugin-2.0 - libs/LibDogTag-Unit-3.0: svn://svn.wowace.com/wow/libdogtag-unit-3-0/mainline/trunk - libs/LibRangeCheck-2.0: svn://svn.wowace.com/wow/librangecheck-2-0/mainline/trunk/LibRangeCheck-2.0 - libs/LibSharedMedia-3.0: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk - libs/LibDogTag-3.0: svn://svn.wowace.com/wow/libdogtag-3-0/mainline/trunk - libs/Waterfall-1.0: svn://svn.wowace.com/wow/waterfall-1-0/mainline/trunk/Waterfall-1.0 + libs/LibRangeCheck-2.0: + url: svn://svn.wowace.com/wow/librangecheck-2-0/mainline/trunk/LibRangeCheck-2.0 + tag: latest + libs/LibSharedMedia-3.0: + url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk + tag: latest + libs/LibDogTag-3.0: + url: svn://svn.wowace.com/wow/libdogtag-3-0/mainline/trunk + tag: latest + libs/LibDogTag-Unit-3.0: + url: svn://svn.wowace.com/wow/libdogtag-unit-3-0/mainline/trunk + tag: latest optional-dependencies: - libdogtag-3-0 diff --git a/IceBarElement.lua b/IceBarElement.lua index a8a27f2..a6859a2 100644 --- a/IceBarElement.lua +++ b/IceBarElement.lua @@ -111,25 +111,25 @@ function IceBarElement.prototype:GetOptions() } opts["side"] = { - type = 'text', + type = 'select', name = '|c' .. self.configColor .. 'Side|r', desc = 'Side of the HUD where the bar appears', - get = function() + get = function(info) if (self.moduleSettings.side == IceCore.Side.Right) then - return "Right" + return 2 else - return "Left" + return 1 end end, - set = function(value) - if (value == "Right") then + set = function(info, value) + if (value == 2) then self.moduleSettings.side = IceCore.Side.Right else self.moduleSettings.side = IceCore.Side.Left end self:Redraw() end, - validate = { "Left", "Right" }, + values = { "Left", "Right" }, disabled = function() return not self.moduleSettings.enabled end, @@ -147,7 +147,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.offset end, - set = function(value) + set = function(info, value) self.moduleSettings.offset = value self:Redraw() end, @@ -169,7 +169,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.scale end, - set = function(value) + set = function(info, value) self.moduleSettings.scale = value self:Redraw() end, @@ -187,7 +187,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.inverse end, - set = function(value) + set = function(info, value) self.moduleSettings.inverse = value self:SetBarFramePoints() self:Redraw() @@ -206,7 +206,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.reverse end, - set = function(value) + set = function(info, value) self.moduleSettings.reverse = value self:SetBarFramePoints() self:Redraw() @@ -229,7 +229,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.barVisible['bar'] end, - set = function(v) + set = function(info, v) self.moduleSettings.barVisible['bar'] = v if v then self.barFrame:Show() @@ -250,7 +250,7 @@ function IceBarElement.prototype:GetOptions() get = function() return self.moduleSettings.barVisible['bg'] end, - set = function(v) + set = function(info, v) self.moduleSettings.barVisible['bg'] = v if v then self.frame.bg:Show() @@ -277,7 +277,7 @@ if not self.moduleSettings.hideAnimationSettings then get = function() return self.moduleSettings.shouldAnimate end, - set = function(value) + set = function(info, value) self.moduleSettings.shouldAnimate = value self:Redraw() end, @@ -298,7 +298,7 @@ if not self.moduleSettings.hideAnimationSettings then get = function() return self.moduleSettings.desiredLerpTime end, - set = function(value) + set = function(info, value) self.moduleSettings.desiredLerpTime = value end, disabled = function() @@ -319,7 +319,7 @@ end get = function() return self.moduleSettings.widthModifier end, - set = function(v) + set = function(info, v) self.moduleSettings.widthModifier = v self:Redraw() end, @@ -340,7 +340,7 @@ end get = function() return self.moduleSettings.barVerticalOffset end, - set = function(v) + set = function(info, v) self.moduleSettings.barVerticalOffset = v self:Redraw() end, @@ -358,9 +358,9 @@ end get = function() return self.moduleSettings.shouldUseOverride end, - set = function(value) + set = function(info, value) self.moduleSettings.shouldUseOverride = value - AceLibrary("Waterfall-1.0"):Refresh("IceHUD") + IceHUD:NotifyOptionsChange() self:Redraw() end, disabled = function() @@ -371,20 +371,20 @@ end opts["barTextureOverride"] = { - type = 'text', + type = 'select', name = 'Bar Texture Override', desc = 'This will override the global bar texture setting for this bar.', - get = function() - return self.moduleSettings.barTextureOverride + get = function(info) + return IceHUD:GetSelectValue(info, self.moduleSettings.barTextureOverride) end, - set = function(value) - self.moduleSettings.barTextureOverride = value + set = function(info, value) + self.moduleSettings.barTextureOverride = info.option.values[value] self:Redraw() end, disabled = function() return not self:IsEnabled() or not self.moduleSettings.shouldUseOverride end, - validate = IceHUD.validBarList, + values = IceHUD.validBarList, order = 36 } @@ -405,7 +405,7 @@ end get = function() return self.moduleSettings.barFontSize end, - set = function(v) + set = function(info, v) self.moduleSettings.barFontSize = v self:Redraw() end, @@ -422,7 +422,7 @@ end get = function() return self.moduleSettings.lockUpperTextAlpha end, - set = function(v) + set = function(info, v) self.moduleSettings.lockUpperTextAlpha = v self:Redraw() end, @@ -436,7 +436,7 @@ end get = function() return self.moduleSettings.lockLowerTextAlpha end, - set = function(v) + set = function(info, v) self.moduleSettings.lockLowerTextAlpha = v self:Redraw() end, @@ -450,7 +450,7 @@ end get = function() return self.moduleSettings.textVisible['upper'] end, - set = function(v) + set = function(info, v) self.moduleSettings.textVisible['upper'] = v self:Redraw() end, @@ -464,7 +464,7 @@ end get = function() return self.moduleSettings.textVisible['lower'] end, - set = function(v) + set = function(info, v) self.moduleSettings.textVisible['lower'] = v self:Redraw() end, @@ -472,7 +472,7 @@ end }, upperTextString = { - type = 'text', + type = 'input', name = 'Upper Text', desc = 'The upper text to display under this bar (accepts LibDogTag formatting)\n\nSee http://www.wowace.com/wiki/LibDogTag-2.0/ or type /dogtag for tag info.\n\nRemember to press ENTER after filling out this box or it will not save.', hidden = function() @@ -481,7 +481,7 @@ end get = function() return self.moduleSettings.upperText end, - set = function(v) + set = function(info, v) if DogTag ~= nil and v ~= '' and v ~= nil then v = DogTag:CleanCode(v) end @@ -490,11 +490,12 @@ end self:RegisterFontStrings() self:Redraw() end, + multiline = true, usage = "" }, lowerTextString = { - type = 'text', + type = 'input', name = 'Lower Text', desc = 'The lower text to display under this bar (accepts LibDogTag formatting)\n\nSee http://www.wowace.com/wiki/LibDogTag-2.0/ or type /dogtag for tag info.\n\nRemember to press ENTER after filling out this box or it will not save.', hidden = function() @@ -503,7 +504,7 @@ end get = function() return self.moduleSettings.lowerText end, - set = function(v) + set = function(info, v) if DogTag ~= nil and v ~= '' and v ~= nil then v = DogTag:CleanCode(v) end @@ -512,21 +513,22 @@ end self:RegisterFontStrings() self:Redraw() end, + multiline = true, usage = "" }, forceJustifyText = { - type = 'text', + type = 'select', name = 'Force Text Justification', desc = 'This sets the alignment for the text on this bar', - get = function() + get = function(info) return self.moduleSettings.forceJustifyText end, - set = function(value) + set = function(info, value) self.moduleSettings.forceJustifyText = value self:Redraw() end, - validate = { NONE = "None", LEFT = "Left", RIGHT = "Right" }, + values = { NONE = "None", LEFT = "Left", RIGHT = "Right" }, disabled = function() return not self.moduleSettings.enabled end, @@ -542,7 +544,7 @@ end get = function() return self.moduleSettings.textVerticalOffset end, - set = function(v) + set = function(info, v) self.moduleSettings.textVerticalOffset = v self:Redraw() end, @@ -561,7 +563,7 @@ end get = function() return self.moduleSettings.textHorizontalOffset end, - set = function(v) + set = function(info, v) self.moduleSettings.textHorizontalOffset = v self:Redraw() end, @@ -571,7 +573,7 @@ end } } } - + return opts end diff --git a/IceCastBar.lua b/IceCastBar.lua index 7fe76cd..84f657a 100644 --- a/IceCastBar.lua +++ b/IceCastBar.lua @@ -84,7 +84,7 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.showCastTime end, - set = function(value) + set = function(info, value) self.moduleSettings.showCastTime = value end, disabled = function() @@ -101,7 +101,7 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.showSpellRank end, - set = function(value) + set = function(info, value) self.moduleSettings.showSpellRank = value end, disabled = function() @@ -123,7 +123,7 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.displayAuraIcon end, - set = function(v) + set = function(info, v) self.moduleSettings.displayAuraIcon = v if self.barFrame.icon then if v then @@ -136,7 +136,6 @@ function IceCastBar.prototype:GetOptions() disabled = function() return not self.moduleSettings.enabled end, - usage = "", order = 51, } @@ -150,14 +149,13 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.auraIconXOffset end, - set = function(v) + set = function(info, v) self.moduleSettings.auraIconXOffset = v self:PositionIcons() end, disabled = function() return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon end, - usage = "", order = 52, } @@ -171,14 +169,13 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.auraIconYOffset end, - set = function(v) + set = function(info, v) self.moduleSettings.auraIconYOffset = v self:PositionIcons() end, disabled = function() return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon end, - usage = "", order = 53, } @@ -192,14 +189,13 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.auraIconScale end, - set = function(v) + set = function(info, v) self.moduleSettings.auraIconScale = v self:PositionIcons() end, disabled = function() return not self.moduleSettings.enabled or not self.moduleSettings.displayAuraIcon end, - usage = "", order = 54, } @@ -210,13 +206,12 @@ function IceCastBar.prototype:GetOptions() get = function() return self.moduleSettings.reverseChannel end, - set = function(v) + set = function(info, v) self.moduleSettings.reverseChannel = v end, disabled = function() return not self.moduleSettings.enabled end, - usage = "", order = 32.5, } diff --git a/IceCore.lua b/IceCore.lua index 8d9bf8c..f9b135e 100644 --- a/IceCore.lua +++ b/IceCore.lua @@ -1,6 +1,6 @@ local AceOO = AceLibrary("AceOO-2.0") -IceCore = AceOO.Class("AceEvent-2.0", "AceDB-2.0") +IceCore = AceOO.Class("AceEvent-2.0") IceCore.Side = { Left = "LEFT", Right = "RIGHT" } @@ -25,8 +25,6 @@ IceCore.prototype.presets = {} IceCore.prototype.settingsHash = nil IceCore.prototype.bConfigMode = false -local waterfall = AceLibrary("Waterfall-1.0") - -- Constructor -- function IceCore.prototype:init() IceCore.super.prototype.init(self) @@ -47,50 +45,52 @@ function IceCore.prototype:SetupDefaults() -- DEFAULT SETTINGS local defaultPreset = "RoundBar" self.defaults = { - gap = 150, - verticalPos = -110, - horizontalPos = 0, - scale = 0.9, - - alphaooc = 0.3, - alphaic = 0.6, - alphaTarget = 0.4, - alphaNotFull = 0.4, + profile = { + gap = 150, + verticalPos = -110, + horizontalPos = 0, + scale = 0.9, + + alphaooc = 0.3, + alphaic = 0.6, + alphaTarget = 0.4, + alphaNotFull = 0.4, - alphaoocbg = 0.2, - alphaicbg = 0.3, - alphaTargetbg = 0.25, - alphaNotFullbg = 0.25, - - backgroundToggle = false, - backgroundColor = {r = 0.5, g = 0.5, b = 0.5}, - barTexture = "Bar", - barPreset = defaultPreset, - fontFamily = "Arial Narrow", - debug = false, + alphaoocbg = 0.2, + alphaicbg = 0.3, + alphaTargetbg = 0.25, + alphaNotFullbg = 0.25, + + backgroundToggle = false, + backgroundColor = {r = 0.5, g = 0.5, b = 0.5}, + barTexture = "Bar", + barPreset = defaultPreset, + fontFamily = "Arial Narrow", + debug = false, - barBlendMode = "BLEND", - barBgBlendMode = "BLEND", + barBlendMode = "BLEND", + barBgBlendMode = "BLEND", - bShouldUseDogTags = true, + bShouldUseDogTags = true, - updatePeriod = 0.1 + updatePeriod = 0.1 + } } self:LoadPresets() for k, v in pairs(self.presets[defaultPreset]) do - self.defaults[k] = v + self.defaults.profile[k] = v end -- get default settings from the modules - self.defaults.modules = {} + self.defaults.profile.modules = {} for i = 1, table.getn(self.elements) do local name = self.elements[i]:GetElementName() - self.defaults.modules[name] = self.elements[i]:GetDefaultSettings() + self.defaults.profile.modules[name] = self.elements[i]:GetDefaultSettings() end if (table.getn(self.elements) > 0) then - self.defaults.colors = self.elements[1].defaultColors + self.defaults.profile.colors = self.elements[1].defaultColors end end @@ -256,6 +256,7 @@ function IceCore.prototype:Disable() end self.IceHUDFrame:Hide() + self:EmptyUpdates() self.enabled = false end @@ -315,7 +316,7 @@ function IceCore.prototype:GetColorOptions() get = function() return IceHUD.IceCore:GetColor(kk) end, - set = function(r, g, b) + set = function(info, r, g, b) local color = k IceHUD.IceCore:SetColor(kk, r, g, b) end @@ -529,7 +530,7 @@ function IceCore.prototype:ChangePreset(value) self:SetBarBlendMode(self.presets[value].barBlendMode) self:SetBarBgBlendMode(self.presets[value].barBgBlendMode) - waterfall:Refresh("IceHUD") + IceHUD:NotifyOptionsChange() end @@ -655,6 +656,12 @@ function IceCore.prototype:IsUpdateSubscribed(frame) return self.updatees[frame] ~= nil end +function IceCore.prototype:EmptyUpdates() + self.IceHUDFrame:SetScript("OnUpdate", nil) + self.updatees = {} + self.updatee_count = 0 +end + ------------------------------------------------------------------------------- -- Presets -- ------------------------------------------------------------------------------- diff --git a/IceElement.lua b/IceElement.lua index ebe4727..b2a1e85 100644 --- a/IceElement.lua +++ b/IceElement.lua @@ -121,7 +121,7 @@ function IceElement.prototype:GetOptions() get = function() return self.moduleSettings.enabled end, - set = function(value) + set = function(info, value) self.moduleSettings.enabled = value if (value) then self:Enable(true) @@ -145,7 +145,7 @@ function IceElement.prototype:GetOptions() get = function() return self.moduleSettings.scale end, - set = function(value) + set = function(info, value) self.moduleSettings.scale = value self:Redraw() end, @@ -163,7 +163,7 @@ function IceElement.prototype:GetOptions() get = function() return self.moduleSettings.alwaysFullAlpha end, - set = function(value) + set = function(info, value) self.moduleSettings.alwaysFullAlpha = value self:Update(self.unit) self:Redraw() diff --git a/IceHUD.lua b/IceHUD.lua index 1f74fdc..c88e337 100644 --- a/IceHUD.lua +++ b/IceHUD.lua @@ -1,7 +1,8 @@ -IceHUD = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceDB-2.0", "FuBarPlugin-2.0") +IceHUD = LibStub("AceAddon-3.0"):NewAddon("IceHUD", "AceConsole-3.0") -local waterfall = AceLibrary("Waterfall-1.0") local SML = AceLibrary("LibSharedMedia-3.0") +local ACR = LibStub("AceConfigRegistry-3.0") +local ConfigDialog = LibStub("AceConfigDialog-3.0") IceHUD.CurrTagVersion = 3 IceHUD.debugging = false @@ -38,7 +39,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetVerticalPos() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetVerticalPos(v) end, min = -700, @@ -54,7 +55,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetHorizontalPos() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetHorizontalPos(v) end, min = -2000, @@ -70,7 +71,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetGap() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetGap(v) end, min = 50, @@ -86,7 +87,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetScale() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetScale(v) end, min = 0.5, @@ -118,7 +119,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlpha("IC") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlpha("IC", v) end, min = 0, @@ -135,7 +136,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlpha("OOC") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlpha("OOC", v) end, min = 0, @@ -152,7 +153,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlpha("Target") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlpha("Target", v) end, min = 0, @@ -169,7 +170,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlpha("NotFull") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlpha("NotFull", v) end, min = 0, @@ -180,8 +181,6 @@ IceHUD.options = }, - - headerAlphaBackgroundBlank = { type = 'header', name = " ", order = 20 }, headerAlphaBackground = { type = 'header', name = "Background Alpha", @@ -195,7 +194,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlphaBG("IC") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlphaBG("IC", v) end, min = 0, @@ -212,7 +211,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlphaBG("OOC") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlphaBG("OOC", v) end, min = 0, @@ -229,7 +228,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlphaBG("Target") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlphaBG("Target", v) end, min = 0, @@ -246,7 +245,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetAlphaBG("NotFull") end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetAlphaBG("NotFull", v) end, min = 0, @@ -257,7 +256,6 @@ IceHUD.options = }, - headerBarAdvancedBlank = { type = 'header', name = " ", order = 30 }, headerBarAdvanced = { type = 'header', name = "Other", @@ -271,7 +269,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBackgroundToggle() end, - set = function(value) + set = function(info, value) IceHUD.IceCore:SetBackgroundToggle(value) end, order = 31 @@ -284,7 +282,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBackgroundColor() end, - set = function(r, g, b) + set = function(info, r, g, b) IceHUD.IceCore:SetBackgroundColor(r, g, b) end, order = 32, @@ -294,17 +292,17 @@ IceHUD.options = textSettings = { - type = 'text', + type = 'select', name = 'Font', desc = 'IceHUD Font', order = 19, - get = function() - return IceHUD.IceCore:GetFontFamily() + get = function(info) + return IceHUD:GetSelectValue(info, IceHUD.IceCore:GetFontFamily()) end, - set = function(value) - IceHUD.IceCore:SetFontFamily(value) + set = function(info, value) + IceHUD.IceCore:SetFontFamily(info.option.values[value]) end, - validate = SML:List('font'), + values = SML:List('font'), }, barSettings = { @@ -314,21 +312,20 @@ IceHUD.options = order = 20, args = { barPresets = { - type = 'text', + type = 'select', name = 'Presets', desc = 'Predefined settings for different bars', - get = function() - return IceHUD.IceCore:GetBarPreset() + get = function(info) + return IceHUD:GetSelectValue(info, IceHUD.IceCore:GetBarPreset()) end, - set = function(value) - IceHUD.IceCore:SetBarPreset(value) + set = function(info, value) + IceHUD.IceCore:SetBarPreset(info.option.values[value]) end, - validate = IceHUD.validBarList, + values = IceHUD.validBarList, order = 9 }, - headerBarAdvancedBlank = { type = 'header', name = " ", order = 10 }, headerBarAdvanced = { type = 'header', name = "Advanced Bar Settings", @@ -336,16 +333,16 @@ IceHUD.options = }, barTexture = { - type = 'text', + type = 'select', name = 'Bar Texture', desc = 'IceHUD Bar Texture', - get = function() - return IceHUD.IceCore:GetBarTexture() + get = function(info) + return IceHUD:GetSelectValue(info, IceHUD.IceCore:GetBarTexture()) end, - set = function(value) - IceHUD.IceCore:SetBarTexture(value) + set = function(info, value) + IceHUD.IceCore:SetBarTexture(IceHUD.validBarList[value]) end, - validate = IceHUD.validBarList, + values = IceHUD.validBarList, order = 11 }, @@ -356,7 +353,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBarWidth() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetBarWidth(v) end, min = 20, @@ -372,7 +369,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBarHeight() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetBarHeight(v) end, min = 100, @@ -388,7 +385,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBarProportion() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetBarProportion(v) end, min = 0.01, @@ -405,7 +402,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetBarSpace() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetBarSpace(v) end, min = -10, @@ -415,30 +412,30 @@ IceHUD.options = }, bgBlendMode = { - type = 'text', + type = 'select', name = 'Bar Background Blend Mode', desc = 'IceHUD Bar Background Blend mode', - get = function() + get = function(info) return IceHUD.IceCore:GetBarBgBlendMode() end, - set = function(value) + set = function(info, value) IceHUD.IceCore:SetBarBgBlendMode(value) end, - validate = { BLEND = "Blend", ADD = "Additive" }, --"Disable", "Alphakey", "Mod" }, + values = { BLEND = "Blend", ADD = "Additive" }, --"Disable", "Alphakey", "Mod" }, order = 16 }, barBlendMode = { - type = 'text', + type = 'select', name = 'Bar Blend Mode', desc = 'IceHUD Bar Blend mode', - get = function() + get = function(info) return IceHUD.IceCore:GetBarBlendMode() end, - set = function(value) + set = function(info, value) IceHUD.IceCore:SetBarBlendMode(value) end, - validate = { BLEND = "Blend", ADD = "Additive" }, --"Disable", "Alphakey", "Mod" }, + values = { BLEND = "Blend", ADD = "Additive" }, --"Disable", "Alphakey", "Mod" }, order = 17 }, } @@ -461,7 +458,6 @@ IceHUD.options = order = 42 }, - headerOtherBlank = { type = 'header', name = ' ', order = 90 }, headerOther = { type = 'header', name = 'Other', @@ -475,7 +471,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:IsEnabled() end, - set = function(value) + set = function(info, value) if (value) then IceHUD.IceCore:Enable() else @@ -492,7 +488,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:GetDebug() end, - set = function(value) + set = function(info, value) IceHUD.IceCore:SetDebug(value) end, order = 92 @@ -507,16 +503,6 @@ IceHUD.options = end, order = 93 }, - - about = { - type = 'execute', - name = 'About', - desc = "Prints info about IceHUD", - func = function() - IceHUD:PrintAddonInfo() - end, - order = 94 - }, customBar = { type = 'execute', @@ -586,7 +572,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:IsInConfigMode() end, - set = function(value) + set = function(info, value) IceHUD.IceCore:ConfigModeToggle(value) end, order = 95 @@ -599,7 +585,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:ShouldUseDogTags() end, - set = function(v) + set = function(info, v) StaticPopupDialogs["ICEHUD_CHANGED_DOGTAG"] = { text = "This option requires the UI to be reloaded. Do you wish to reload it now?", button1 = "Yes", @@ -627,7 +613,7 @@ IceHUD.options = get = function() return IceHUD.IceCore:UpdatePeriod() end, - set = function(v) + set = function(info, v) IceHUD.IceCore:SetUpdatePeriod(v) end, min = 0.01, @@ -639,22 +625,6 @@ IceHUD.options = } -IceHUD.slashMenu = -{ - type = 'execute', - func = function() - if waterfall:IsOpen("IceHUD") then - waterfall:Close("IceHUD") - elseif not (UnitAffectingCombat("player")) then - waterfall:Open("IceHUD") - else - DEFAULT_CHAT_FRAME:AddMessage("|cff8888ffIceHUD|r: Combat lockdown restriction." .. - " Leave combat and try again.") - end - end -} - - StaticPopupDialogs["ICEHUD_RESET"] = { text = "Are you sure you want to reset IceHUD settings?", @@ -731,22 +701,24 @@ function IceHUD:OnInitialize() self:SetDebugging(false) self:Debug("IceHUD:OnInitialize()") - self:RegisterDB("IceCoreDB") - self.IceCore = IceCore:new() - self:RegisterDefaults('profile', self.IceCore.defaults) + self.db = LibStub("AceDB-3.0"):New("IceCoreDB", self.IceCore.defaults, "Default") + self.db.RegisterCallback(self, "OnProfileShutdown", "PreProfileChanged") + self.db.RegisterCallback(self, "OnProfileChanged", "PostProfileChanged") + self.db.RegisterCallback(self, "OnProfileReset", "ProfileReset") + self.db.RegisterCallback(self, "OnProfileCopied", "ProfileCopied") - self.IceCore.settings = self.db.profile - self.IceCore:SetModuleDatabases() + self:NotifyNewDb() self:GenerateModuleOptions(true) self.options.args.colors.args = self.IceCore:GetColorOptions() + self.options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) - waterfall:Register("IceHUD", 'aceOptions', IceHUD.options) + LibStub("AceConfig-3.0"):RegisterOptionsTable("IceHUD", self.options, "/icehudcl") - -- Parnic - added /icehudcl to make rock config pick this up - self:RegisterChatCommand({"/icehudcl"}, IceHUD.options) - self:RegisterChatCommand({ "/icehud" }, IceHUD.slashMenu) + ConfigDialog:SetDefaultSize("IceHUD", 750, 650) + self:RegisterChatCommand("icehud", function() IceHUD:OpenConfig() end) + self:RegisterChatCommand("rl", function() ReloadUI() end) self:SyncSettingsVersions() @@ -754,13 +726,23 @@ function IceHUD:OnInitialize() end +function IceHUD:NotifyNewDb() + self.IceCore.settings = self.db.profile + self.IceCore:SetModuleDatabases() +end + + function IceHUD:GenerateModuleOptions(firstLoad) self.options.args.modules.args = self.IceCore:GetModuleOptions() - if not firstLoad then - waterfall:Refresh("IceHUD") + if not firstLoad and ACR ~= nil then + IceHUD:NotifyOptionsChange() end end +function IceHUD:NotifyOptionsChange() + ACR:NotifyChange("IceHUD") +end + function IceHUD:OnEnable(isFirst) self:Debug("IceHUD:OnEnable()") @@ -773,11 +755,6 @@ function IceHUD:OnEnable(isFirst) end end -function IceHUD:ResetSettings() - self:ResetDB() - ReloadUI() -end - -- add settings changes/updates here so that existing users don't lose their settings function IceHUD:SyncSettingsVersions() if not self.IceCore.settings.updatedOocNotFull then @@ -798,7 +775,7 @@ function IceHUD:InitLDB() icon = "Interface\\Icons\\Spell_Frost_Frost", OnClick = function(_, msg) if not (UnitAffectingCombat("player")) then - waterfall:Open("IceHUD") + IceHUD:OpenConfig() else DEFAULT_CHAT_FRAME:AddMessage("|cff8888ffIceHUD|r: Combat lockdown restriction. Leave combat and try again.") end @@ -813,13 +790,7 @@ IceHUD.hasIcon = "Interface\\Icons\\Spell_Frost_Frost" IceHUD.hideWithoutStandby = true IceHUD.independentProfile = true function IceHUD.OnClick() - if not waterfall then return end - - if waterfall:IsOpen("IceHUD") then - waterfall:Close("IceHUD") - else - waterfall:Open("IceHUD") - end + IceHUD:OpenConfig() end -- blizzard interface options @@ -829,10 +800,15 @@ blizOptionsPanel.button = CreateFrame("BUTTON", "IceHUDOpenConfigButton", blizOp blizOptionsPanel.button:SetText("Open IceHUD configuration") blizOptionsPanel.button:SetWidth(240) blizOptionsPanel.button:SetHeight(30) -blizOptionsPanel.button:SetScript("OnClick", function(self) HideUIPanel(InterfaceOptionsFrame) HideUIPanel(GameMenuFrame) waterfall:Open("IceHUD") end) +blizOptionsPanel.button:SetScript("OnClick", function(self) HideUIPanel(InterfaceOptionsFrame) HideUIPanel(GameMenuFrame) IceHUD:OpenConfig() end) blizOptionsPanel.button:SetPoint('TOPLEFT', blizOptionsPanel, 'TOPLEFT', 20, -20) InterfaceOptions_AddCategory(blizOptionsPanel) +function IceHUD:OpenConfig() + if not ConfigDialog then return end + ConfigDialog:Open("IceHUD") +end + function IceHUD:Debug(msg) if self.debugging then self.debugFrame:AddMessage(msg) @@ -894,16 +870,22 @@ function IceHUD:OnDisable() IceHUD.IceCore:Disable() end -function IceHUD:OnProfileDisable() +function IceHUD:PreProfileChanged(db) self.IceCore:Disable() end -function IceHUD:OnProfileEnable(oldName, oldData) - self.IceCore.settings = self.db.profile - self.IceCore:SetModuleDatabases() +function IceHUD:PostProfileChanged(db, newProfile) + self:NotifyNewDb() self.IceCore:Enable() end +function IceHUD:ProfileReset() + ReloadUI() +end +function IceHUD:ProfileCopied() + ReloadUI() +end + function IceHUD:Clamp(value, min, max) if value < min then value = min @@ -933,3 +915,13 @@ end function IceHUD:xor(val1, val2) return val1 and not val2 or val2 and not val1 end + +function IceHUD:GetSelectValue(info, val) + for k,v in pairs(info.option.values) do + if v == val then + return k + end + end + + return 1 +end diff --git a/IceHUD.toc b/IceHUD.toc index 12dd596..288664e 100644 --- a/IceHUD.toc +++ b/IceHUD.toc @@ -1,11 +1,11 @@ ## Interface: 30300 ## Author: Parnic, originally created by Iceroth ## Name: IceHUD -## Title: IceHUD |cff7fff7f -Ace2-|r +## Title: IceHUD |cff7fff7f -Ace2/3-|r ## Notes: Another HUD addon ## Version: @project-version@ (Revision: @project-revision@) ## SavedVariables: IceCoreDB -## OptionalDeps: Ace2, LibSharedMedia-3.0, Waterfall-1.0, Deformat, DewdropLib, LibDogTag-3.0, LibDogTag-Unit-3.0, FuBarPlugin-2.0, LibDruidMana-1.0, LibRangeCheck-2.0, LibHealComm-4.0 +## OptionalDeps: Ace2, Ace3, LibSharedMedia-3.0, Deformat, LibDogTag-3.0, LibDogTag-Unit-3.0, FuBarPlugin-2.0, LibRangeCheck-2.0, LibHealComm-4.0 ## X-Category: HUDs ## X-Website: http://www.wowace.com/projects/ice-hud/ diff --git a/IceUnitBar.lua b/IceUnitBar.lua index c277f3c..448507d 100644 --- a/IceUnitBar.lua +++ b/IceUnitBar.lua @@ -77,7 +77,7 @@ function IceUnitBar.prototype:GetOptions() get = function() return self.moduleSettings.lowThreshold end, - set = function(value) + set = function(info, value) self.moduleSettings.lowThreshold = value self:Redraw() end, @@ -97,7 +97,7 @@ function IceUnitBar.prototype:GetOptions() get = function() return self.moduleSettings.lowThresholdFlash end, - set = function(v) + set = function(info, v) self.moduleSettings.lowThresholdFlash = v end, disabled = function() @@ -112,7 +112,7 @@ function IceUnitBar.prototype:GetOptions() get = function() return self.moduleSettings.lowThresholdColor end, - set = function(value) + set = function(info, value) self.moduleSettings.lowThresholdColor = value self:Redraw() end, diff --git a/embeds.xml b/embeds.xml index daf5faf..a67e02f 100644 --- a/embeds.xml +++ b/embeds.xml @@ -4,17 +4,16 @@