if (not Nurfed_Options) then local framelib = Nurfed_Frames:New(); Nurfed_Options = {}; function Nurfed_Options:New () local object = {}; setmetatable(object, self); self.__index = self; return object; end function Nurfed_Options:GetMenu(addon) if (not UIPanelWindows["Nurfed_OptionsFrame"]) then UIPanelWindows["Nurfed_OptionsFrame"] = { area = "center", pushable = 0, whileDead = 1 }; end if (Nurfed_OptionsFrame:IsShown() and Nurfed_OptionsFrame.shown == addon) then HideUIPanel(Nurfed_OptionsFrame); else local title = string.gsub(addon, "_", " "); local version = getglobal(string.upper(addon).."_VERS"); Nurfed_OptionsFrametitle:SetText(title); Nurfed_OptionsFrameversion:SetText(version); Nurfed_OptionsFrame.shown = addon; Nurfed_OptionsFrame.addon = string.gsub(addon, "Nurfed_", ""); ShowUIPanel(Nurfed_OptionsFrame); UIFrameFadeIn(Nurfed_OptionsFrame, COMBOFRAME_FADE_IN); local menus = { Nurfed_OptionsFrame:GetChildren() }; for _, menu in ipairs(menus) do if (menu:GetName()) then if (string.find(menu:GetName(), "^"..addon)) then menu:Show(); Nurfed_OptionsFrame:SetWidth(menu.width); Nurfed_OptionsFrame:SetHeight(menu.height); Nurfed_OptionsFrameclose:Show(); menu:SetWidth(menu.width - 12); menu:SetHeight(menu.height - 31); if (menu.page) then self:GetMenuPage(menu); end else menu:Hide(); end end end end end function Nurfed_Options:GetMenuPage(menu) local i = 1; local page = getglobal(menu:GetName().."page"..i); while (page) do if (i == menu.page) then UIFrameFadeIn(page, COMBOFRAME_FADE_IN); else page:Hide(); end i = i + 1; page = getglobal(menu:GetName().."page"..i); end end function Nurfed_Options:GetOption(addon, option) addon = string.upper("NURFED_"..addon); local player = UnitName("player").." - "..GetRealmName(); if (not player or not getglobal(addon.."_SAVED")) then return; end local tbl = getglobal(addon.."_SAVED")[player]; if (not tbl[option]) then local value = getglobal(addon.."_DEFAULT")[option]; tbl[option] = value; end return tbl[option]; end function Nurfed_Options:SetOption(addon, option, value, name, id) addon = string.upper("NURFED_"..addon); local player = UnitName("player").." - "..GetRealmName(); local tbl = getglobal(addon.."_SAVED")[player]; if (name and id) then tbl[option][name][id] = value; else tbl[option] = value; end end function Nurfed_Options:SetMultiOption(addon, option, name, value) addon = string.upper("NURFED_"..addon); local player = UnitName("player").." - "..GetRealmName(); local tbl = getglobal(addon.."_SAVED")[player][option]; tbl[name] = value; end -- Display local function optionInit() local text = getglobal(this:GetName().."text"); text:SetText(this.text); if (this.right) then text:ClearAllPoints() text:SetPoint("RIGHT", this:GetName(), "LEFT", -1, 1); end if (this.color) then text:SetTextColor(this.color[1], this.color[2], this.color[3]); end if (this.option) then return Nurfed_Options:GetOption(Nurfed_OptionsFrame.addon, this.option); end end --Generic Button local function buttonOnEnter() this:SetBackdropColor(0, 0.75, 1, 0.75) getglobal(this:GetName().."text"):SetTextColor(1, 1, 1) end local function buttonOnLeave() this:SetBackdropColor(0, 0, 0, 0.75) getglobal(this:GetName().."text"):SetTextColor(0.65, 0.65, 0.65) end local function buttonOnShow() optionInit(); local width = string.len(this.text); this:SetWidth(width*6 + 5); end local function buttonOnMouseDown() this:SetBackdropColor(1, 0, 0, 0.75); end local function buttonOnMouseUp() this:SetBackdropColor(0, 0.75, 1, 0.75); end -- Tabs local function tabOnShow() buttonOnShow(); if (this.page == this:GetParent().page) then this.selected = true; this:SetBackdropColor(0, 0.85, 1, 0.75); getglobal(this:GetName().."text"):SetTextColor(1, 1, 1); else this.selected = nil; this:SetBackdropColor(0, 0, 0, 0.75); getglobal(this:GetName().."text"):SetTextColor(0.65, 0.65, 0.65); end end local function tabOnEnter() if (not this.selected) then this:SetBackdropColor(0, 0.75, 1, 0.75); getglobal(this:GetName().."text"):SetTextColor(1, 1, 1); end end local function tabOnLeave() if (not this.selected) then this:SetBackdropColor(0, 0, 0, 0.75); getglobal(this:GetName().."text"):SetTextColor(0.65, 0.65, 0.65); end end local function tabOnClick() local parent = this:GetParent(); parent.page = this.page; local i = 1; local tab = getglobal(parent:GetName().."tab"..i); while(tab) do if (parent.page ~= tab.page) then tab.selected = nil; tab:SetBackdropColor(0, 0, 0, 0.75); getglobal(tab:GetName().."text"):SetTextColor(0.65, 0.65, 0.65); else tab.selected = true; tab:SetBackdropColor(0, 0.85, 1, 0.75); getglobal(tab:GetName().."text"):SetTextColor(1, 1, 1); Nurfed_Options:GetMenuPage(parent); end i = i + 1; tab = getglobal(parent:GetName().."tab"..i); end end -- Check Boxes local function checkText() if (not this.color) then local text = getglobal(this:GetName().."text"); if (this:GetChecked()) then text:SetTextColor(1, 1, 1); else text:SetTextColor(0.65, 0.65, 0.65); end end end local function checkOnShow() if (this:IsShown()) then local option = optionInit(); if (this.init) then this:SetChecked(this.init); else this:SetChecked(option); end checkText(); end end local function checkOnClick() local value; if (this:GetChecked()) then value = 1; PlaySound("igMainMenuOptionCheckBoxOn"); else value = 0; PlaySound("igMainMenuOptionCheckBoxOff"); end if (this.option) then Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, this.option, value); if (this.func) then this.func(); end elseif (this.id and this:GetParent().selected) then Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, this:GetParent().option, value, this:GetParent().selected, this.id); if (this:GetParent().func) then this:GetParent().func(); end end checkText(); end --Sliders local function sliderOnShow() if (this:IsShown()) then local option = optionInit(); local max = getglobal(this:GetName().."high"); local min = getglobal(this:GetName().."low"); max:SetText(this.max); min:SetText(this.min); this:SetMinMaxValues(this.min, this.max); this:SetValueStep(this.step); if (this.init) then this:SetValue(this.init); elseif (option) then this:SetValue(option); end end end local function sliderOnValueChanged() local value = this:GetValue(); local text = getglobal(this:GetName().."value"); text:ClearAllPoints(); if (value > (this.max / 2)) then text:SetPoint("LEFT", this:GetName(), "LEFT", 1, 1); else text:SetPoint("RIGHT", this:GetName(), "RIGHT", -1, 1); end text:SetText("("..format(this.format, value)..")"); end local function sliderOnMouseUp() local value = this:GetValue(); if (this.option) then Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, this.option, value); if (this.func) then this.func(); end elseif (this.id and this:GetParent().selected) then Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, this:GetParent().option, value, this:GetParent().selected, this.id); if (this:GetParent().func) then this:GetParent().func(); end end end -- Color Swatches local function swatchSetColor(frame) local option = frame.option; local r,g,b = ColorPickerFrame:GetColorRGB(); local a = OpacitySliderFrame:GetValue(); local swatch = getglobal(frame:GetName().."bg"); swatch:SetVertexColor(r, g, b); frame.r = r; frame.g = g; frame.b = b; Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, frame.option, { r, g, b, a }); if (frame.func) then frame.func(); end end local function swatchCancelColor(frame, prev) local option = frame.option; local r = prev.r; local g = prev.g; local b = prev.b; local a = prev.a; local swatch = getglobal(frame:GetName().."bg"); swatch:SetVertexColor(r, g, b); frame.r = r; frame.g = g; frame.b = b; Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, frame.option, { r, g, b, a }); if (frame.func) then frame.func(); end end local function swatchOnShow() if (this:IsShown()) then local option = optionInit(); if (not option) then return; end local frame = this; local swatch = getglobal(this:GetName().."bg"); swatch:SetVertexColor(option[1], option[2], option[3]); this.r = option[1]; this.g = option[2]; this.b = option[3]; this.swatchFunc = function() swatchSetColor(frame) end; this.cancelFunc = function(x) swatchCancelColor(frame, x) end; if (frame.opacity) then this.hasOpacity = frame.opacity; this.opacityFunc = function() swatchSetColor(frame) end; this.opacity = option[4]; end end end local function swatchOpenColorPicker() CloseMenus(); ColorPickerFrame.func = this.swatchFunc; ColorPickerFrame.hasOpacity = this.hasOpacity; ColorPickerFrame.opacityFunc = this.opacityFunc; ColorPickerFrame.opacity = this.opacity; ColorPickerFrame:SetColorRGB(this.r, this.g, this.b); ColorPickerFrame.previousValues = {r = this.r, g = this.g, b = this.b, a = this.opacity}; ColorPickerFrame.cancelFunc = this.cancelFunc; ColorPickerFrame:Show(); end -- Input local function inputOnShow() local option = optionInit(); if (not option) then return; end local inputtext = getglobal(this:GetName().."input"); inputtext:SetText(option); end local function inputOnClick() local inputtext = getglobal(this:GetParent():GetName().."input"); if (not inputtext:GetText() or inputtext:GetText() == "") then return; end Nurfed_Options:SetOption(Nurfed_OptionsFrame.addon, this:GetParent().option, inputtext:GetText()); inputtext:ClearFocus(); end --Input Select local function inputselectSetOptions(opt, frame) if (not frame) then frame = this:GetParent(); end local option = Nurfed_Options:GetOption(Nurfed_OptionsFrame.addon, frame.option); local children = { frame:GetChildren() }; for _, child in ipairs(children) do local objtype, value; if (child.id) then objtype = child:GetObjectType(); if (objtype == "Slider") then child:SetValue(option[opt][child.id]); elseif (objtype == "CheckButton") then child:SetChecked(option[opt][child.id]); end end end end local function inputselectUpdate(frame, pre) local option = Nurfed_Options:GetOption(Nurfed_OptionsFrame.addon, frame.option); local i = 1; local button = getglobal(frame:GetName().."button"..i); local text = getglobal(frame:GetName().."button"..i.."text"); for opt in option do if (text) then if (pre) then text:SetText(pre..opt); button.pre = pre; else text:SetText(opt); end if (button.selected) then inputselectSetOptions(opt, frame); end end i = i + 1; text = getglobal(frame:GetName().."button"..i.."text"); button = getglobal(frame:GetName().."button"..i); end while (i <= 10) do text = getglobal(frame:GetName().."button"..i.."text"); text:SetText(nil); i = i + 1; end end local function inputselectOnShow() local option = optionInit(); if (not option) then return; end inputselectUpdate(this, this.pre); end local function inputselectGetOptions() local tbl = {}; local children = { this:GetParent():GetChildren() }; for _, child in ipairs(children) do local objtype, value; if (child.id) then objtype = child:GetObjectType(); if (objtype == "Slider") then tbl[child.id] = child:GetValue(); elseif (objtype == "CheckButton") then if (child:GetChecked()) then tbl[child.id] = 1; else tbl[child.id] = 0; end end end end return tbl; end local function inputselectOnEnterPressed() if (not this:GetText() or this:GetText() == "") then return; end local value = inputselectGetOptions(); Nurfed_Options:SetMultiOption(Nurfed_OptionsFrame.addon, this:GetParent().option, this:GetText(), value); inputselectUpdate(this:GetParent()); this:SetText(""); if (this:GetParent().func) then this:GetParent().func(); end end local function inputremoveOnClick() for i = 1, 10 do local button = getglobal(this:GetParent():GetName().."button"..i); local highlight = getglobal(button:GetName().."highlight"); local text = getglobal(button:GetName().."text"); local option = text:GetText(); if (option) then if (this:GetParent().pre) then option = string.gsub(option, this:GetParent().pre, ""); option = tonumber(option); end if (button.selected) then Nurfed_Options:SetMultiOption(Nurfed_OptionsFrame.addon, this:GetParent().option, option, nil); button.selected = nil; highlight:Hide(); end end end inputselectUpdate(this:GetParent(), this:GetParent().pre); if (this:GetParent().func) then this:GetParent().func(); end end local function inputupdateOnClick() local value = inputselectGetOptions(); for i = 1, 10 do local button = getglobal(this:GetParent():GetName().."button"..i); local text = getglobal(button:GetName().."text"); local option = text:GetText(); if (option) then if (this:GetParent().pre) then option = string.gsub(option, this:GetParent().pre, ""); option = tonumber(option); end if (button.selected) then Nurfed_Options:SetMultiOption(Nurfed_OptionsFrame.addon, this:GetParent().option, option, value); end end end if (this:GetParent().func) then this:GetParent().func(); end end local function inputaddOnClick() local value = inputselectGetOptions(); local option = Nurfed_Options:GetOption(Nurfed_OptionsFrame.addon, this:GetParent().option); if (option) then local nextopt = table.getn(option) + 1; Nurfed_Options:SetMultiOption(Nurfed_OptionsFrame.addon, this:GetParent().option, nextopt, value); inputselectUpdate(this:GetParent(), this:GetParent().pre); if (this:GetParent().func) then this:GetParent().func(); end end end local function inputselectbuttonOnClick() local text = getglobal(this:GetName().."text"); local option = text:GetText(); if (not option) then return; end for i = 1, 10 do local button = getglobal(this:GetParent():GetName().."button"..i); if (this:GetName() ~= button:GetName()) then local highlight = getglobal(button:GetName().."highlight"); button.selected = nil; highlight:Hide(); end end if (this.pre) then option = string.gsub(option, this.pre, ""); option = tonumber(option); end this:GetParent().selected = nil; if (option) then local highlight = getglobal(this:GetName().."highlight"); if (highlight:IsVisible()) then highlight:Hide(); this.selected = nil; else highlight:Show(); this.selected = true; this:GetParent().selected = option; inputselectSetOptions(option); end end end local tbl = { Nurfed_OptionButton = { type = "Button", size = { 30, 18 }, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 8, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0, 0, 0.75 }, children = { text = { type = "FontString", layer = "ARTWORK", Anchor = "all", Font = { NRF_FONT.."framd.ttf", 9, "OUTLINE" }, JustifyH = "CENTER", TextColor = { 0.65, 0.65, 0.65 }, }, }, OnMouseDown = function() buttonOnMouseDown() end, OnMouseUp = function() buttonOnMouseUp() end, OnEnter = function() buttonOnEnter() end, OnLeave = function() buttonOnLeave() end, OnShow = function() buttonOnShow() end, }, Nurfed_OptionTab = { type = "Button", size = { 75, 18 }, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 8, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0, 0, 0 }, children = { text = { type = "FontString", layer = "ARTWORK", Anchor = "all", Font = { NRF_FONT.."framd.ttf", 9, "OUTLINE" }, JustifyH = "CENTER", TextColor = { 0.5, 0.5, 0.5 }, }, }, OnShow = function() tabOnShow() end, OnMouseDown = function() buttonOnMouseDown() end, OnMouseUp = function() buttonOnMouseUp() end, OnClick = function() tabOnClick() end, OnEnter = function() tabOnEnter() end, OnLeave = function() tabOnLeave() end, }, Nurfed_OptionCheck = { type = "CheckButton", size = { 18, 18 }, NormalTexture = "Interface\\Buttons\\UI-CheckBox-Up", PushedTexture = "Interface\\Buttons\\UI-CheckBox-Down", HighlightTexture = "Interface\\Buttons\\UI-CheckBox-Highlight", CheckedTexture = "Interface\\Buttons\\UI-CheckBox-Check", DisabledCheckedTexture = "Interface\\Buttons\\UI-CheckBox-Check-Disabled", children = { text = { type = "FontString", layer = "ARTWORK", Anchor = { "LEFT", "$parent", "RIGHT", 1, 1 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "LEFT", TextColor = { 0.5, 0.5, 0.5 }, }, }, OnShow = function() checkOnShow() end, OnClick = function() checkOnClick() end, }, Nurfed_OptionSlider = { type = "Slider", size = { 128, 17 }, Backdrop = { bgFile = "Interface\\Buttons\\UI-SliderBar-Background", edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", tile = true, tileSize = 8, edgeSize = 8, insets = { left = 3, right = 3, top = 6, bottom = 6 }, }, ThumbTexture = "Interface\\Buttons\\UI-SliderBar-Button-Horizontal", Orientation = "HORIZONTAL", children = { text = { type = "FontString", layer = "ARTWORK", Anchor = { "BOTTOM", "$parent", "TOP", 0, 1 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "CENTER", TextColor = { 1, 1, 1 }, }, high = { type = "FontString", layer = "ARTWORK", Anchor = { "TOPRIGHT", "$parent", "BOTTOMRIGHT", 0, 1 }, Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, JustifyH = "CENTER", TextColor = { 1, 1, 0 }, }, low = { type = "FontString", layer = "ARTWORK", Anchor = { "TOPLEFT", "$parent", "BOTTOMLEFT", 0, 1 }, Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, JustifyH = "CENTER", TextColor = { 1, 1, 0 }, }, value = { type = "FontString", layer = "ARTWORK", Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, JustifyH = "CENTER", TextColor = { 0, 1, 0 }, }, }, OnShow = function() sliderOnShow() end, OnMouseUp = function() sliderOnMouseUp() end, OnValueChanged = function() sliderOnValueChanged() end, }, Nurfed_OptionColorSwatch= { type = "Button", size = { 16, 16 }, children = { bg = { type = "Texture", Texture = "Interface\\ChatFrame\\ChatFrameColorSwatch", size = { 16, 16 }, layer = "BACKGROUND", Anchor = { "CENTER", "$parent", "CENTER", 0, 0 }, VertexColor = { 1, 1, 1 }, }, text = { type = "FontString", layer = "ARTWORK", Anchor = { "LEFT", "$parent", "RIGHT", 1, 0 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "LEFT", TextColor = { 1, 1, 1 }, }, }, OnShow = function() swatchOnShow() end, OnClick = function() swatchOpenColorPicker() end, }, Nurfed_OptionInput = { type = "Frame", size = { 130, 30 }, children = { text = { type = "FontString", layer = "ARTWORK", Anchor = { "TOPLEFT", "$parent", "TOPLEFT", 3, 0 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "LEFT", TextColor = { 1, 1, 1 }, }, input = { type = "EditBox", size = { 100, 18 }, AutoFocus = false, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 8, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0.2, 0.2, 0.75 }, Anchor = { "BOTTOMLEFT", "$parent", "BOTTOMLEFT", 0, 0 }, Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, TextInsets = { 3, 9, 0, 0 }, OnEnterPressed = function() inputOnClick() end, OnEscapePressed = function() this:ClearFocus() end, }, set = { template = "Nurfed_OptionButton", properties = { Anchor = { "LEFT", "$parentinput", "RIGHT", 1, 0 }, OnClick = function() inputOnClick() end, vars = { text = "Set", }, }, }, }, OnShow = function() inputOnShow() end, }, Nurfed_OptionInputSelectButton = { type = "Button", size = { 80, 10 }, children = { highlight = { type = "Texture", layer = "BACKGROUND", Texture = "Interface\\QuestFrame\\UI-QuestTitleHighlight", BlendMode = "ADD", Anchor = "all", Alpha = 0.75; Hide = true; }, text = { type = "FontString", layer = "ARTWORK", Anchor = "all", Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, JustifyH = "LEFT", TextColor = { 1, 1, 1 }, }, }, OnClick = function() inputselectbuttonOnClick() end, }, Nurfed_OptionNumSelect = { type = "Frame", size = { 106, 158 }, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 12, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0, 0, 0 }, children = { text = { type = "FontString", layer = "ARTWORK", Anchor = { "TOP", "$parent", "TOP", 0, -4 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "CENTER", TextColor = { 1, 1, 1 }, }, button1 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parent", "TOPLEFT", 3, -15 }, }, }, button2 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton1", "BOTTOMLEFT", 0, -1 }, }, }, button3 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton2", "BOTTOMLEFT", 0, -1 }, }, }, button4 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton3", "BOTTOMLEFT", 0, -1 }, }, }, button5 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton4", "BOTTOMLEFT", 0, -1 }, }, }, button6 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton5", "BOTTOMLEFT", 0, -1 }, }, }, button7 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton6", "BOTTOMLEFT", 0, -1 }, }, }, button8 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton7", "BOTTOMLEFT", 0, -1 }, }, }, button9 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton8", "BOTTOMLEFT", 0, -1 }, }, }, button10 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton9", "BOTTOMLEFT", 0, -1 }, }, }, --[[ update = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMLEFT", "$parent", "BOTTOMLEFT", 2, 2 }, vars = { text = "Update", }, OnClick = function() inputupdateOnClick() end, }, }, ]] add = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMLEFT", "$parent", "BOTTOMLEFT", 2, 2 }, --Anchor = { "BOTTOM", "$parent", "BOTTOM", 0, 2 }, vars = { text = "Add", }, OnClick = function() inputaddOnClick() end, }, }, remove = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMRIGHT", "$parent", "BOTTOMRIGHT", -2, 2 }, vars = { text = REMOVE, }, OnClick = function() inputremoveOnClick() end, }, }, }, OnShow = function() inputselectOnShow() end, }, Nurfed_OptionInputSelect = { type = "Frame", size = { 106, 170 }, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 12, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0, 0, 0 }, children = { text = { type = "FontString", layer = "ARTWORK", Anchor = { "TOP", "$parent", "TOP", 0, -4 }, Font = { NRF_FONT.."framd.ttf", 11, "NONE" }, JustifyH = "CENTER", TextColor = { 1, 1, 1 }, }, input = { type = "EditBox", size = { 100, 18 }, AutoFocus = false, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 8, insets = { left = 2, right = 2, top = 2, bottom = 2 }, }, BackdropColor = { 0, 0.2, 0.2, 0.75 }, Anchor = { "TOPLEFT", "$parent", "TOPLEFT", 3, -15 }, Font = { NRF_FONT.."framd.ttf", 10, "NONE" }, TextInsets = { 3, 9, 0, 0 }, OnEnterPressed = function() inputselectOnEnterPressed() end, OnEscapePressed = function() this:ClearFocus() end, }, button1 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentinput", "BOTTOMLEFT", 3, -2 }, }, }, button2 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton1", "BOTTOMLEFT", 0, -1 }, }, }, button3 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton2", "BOTTOMLEFT", 0, -1 }, }, }, button4 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton3", "BOTTOMLEFT", 0, -1 }, }, }, button5 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton4", "BOTTOMLEFT", 0, -1 }, }, }, button6 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton5", "BOTTOMLEFT", 0, -1 }, }, }, button7 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton6", "BOTTOMLEFT", 0, -1 }, }, }, button8 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton7", "BOTTOMLEFT", 0, -1 }, }, }, button9 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton8", "BOTTOMLEFT", 0, -1 }, }, }, button10 = { template = "Nurfed_OptionInputSelectButton", properties = { Anchor = { "TOPLEFT", "$parentbutton9", "BOTTOMLEFT", 0, -1 }, }, }, --[[ update = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMLEFT", "$parent", "BOTTOMLEFT", 2, 2 }, vars = { text = "Update", }, OnClick = function() inputupdateOnClick() end, }, }, ]] remove = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMRIGHT", "$parent", "BOTTOMRIGHT", -2, 2 }, vars = { text = REMOVE, }, OnClick = function() inputremoveOnClick() end, }, }, }, OnShow = function() inputselectOnShow() end, }, }; local menutbl = { type = "Frame", FrameStrata = "LOW", Anchor = { "CENTER", "$parent", "CENTER", 150, 0 }, Backdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 16, insets = { left = 5, right = 5, top = 5, bottom = 5 }, }, BackdropColor = { 0, 0, 0, 0.75 }, children = { titlebg = { type = "Texture", size = { 340, 20 }, layer = "BACKGROUND", Anchor = { "TOPLEFT", "$parent", "TOPLEFT", 5, -5 }, Texture = NRF_IMG.."statusbar6.tga", Gradient = { "HORIZONTAL", 0, 0.75, 1, 0, 0, 0.2 }, }, title = { type = "FontString", size = { 150, 12 }, layer = "ARTWORK", Anchor = { "TOPLEFT", "$parent", "TOPLEFT", 6, -8 }, Font = { NRF_FONT.."framd.ttf", 12, "OUTLINE" }, JustifyH = "LEFT", TextColor = { 1, 1, 1 }, }, version = { type = "FontString", size = { 150, 12 }, layer = "ARTWORK", Anchor = { "TOPRIGHT", "$parent", "TOPRIGHT", -6, -8 }, Font = { NRF_FONT.."framd.ttf", 12, "OUTLINE" }, JustifyH = "RIGHT", TextColor = { 1, 1, 1 }, }, close = { template = "Nurfed_OptionButton", properties = { FrameStrata = "MEDIUM", Anchor = { "BOTTOMRIGHT", "$parent", "BOTTOMRIGHT", -4, 4 }, vars = { text = CLOSE, }, OnClick = function() HideUIPanel(Nurfed_OptionsFrame) end, }, }, }, Hide = true, }; for temp, spec in pairs(tbl) do framelib:CreateTemplate(temp, spec); end framelib:ObjectInit("Nurfed_OptionsFrame", menutbl, UIParent); tbl = nil; menutbl = nil; end