local Details = _G.Details local DF = _G.DetailsFramework local _ function Details:InitializeMacrosWindow() local DetailsMacrosPanel = DF:CreateSimplePanel(UIParent, 700, 480, "Details! Useful Macros", "DetailsMacrosPanel") DetailsMacrosPanel.Frame = DetailsMacrosPanel DetailsMacrosPanel.__name = "Macros" DetailsMacrosPanel.real_name = "DETAILS_MACROSWINDOW" DetailsMacrosPanel.__icon = [[Interface\MacroFrame\MacroFrame-Icon]] DetailsMacrosPanel.__iconcoords = {0, 1, 0, 1} DetailsMacrosPanel.__iconcolor = "white" DetailsPluginContainerWindow.EmbedPlugin (DetailsMacrosPanel, DetailsMacrosPanel, true) function DetailsMacrosPanel.RefreshWindow() Details.OpenMacrosWindow() end DetailsMacrosPanel:Hide() end function Details.OpenMacrosWindow() if (not DetailsMacrosPanel or not DetailsMacrosPanel.Initialized) then DetailsMacrosPanel.Initialized = true local f = DetailsMacrosPanel or DF:CreateSimplePanel(UIParent, 700, 480, "Details! Useful Macros", "DetailsMacrosPanel") local scrollbox_line_backdrop_color = {0, 0, 0, 0.2} local scrollbox_line_backdrop_color_onenter = {.3, .3, .3, 0.5} local scrollbox_lines = 7 local scrollbox_line_height = 79.5 local scrollbox_size = {890, 563} f.bg1 = f:CreateTexture(nil, "background") f.bg1:SetTexture([[Interface\AddOns\Details\images\background]], true) f.bg1:SetAlpha(0.8) f.bg1:SetVertexColor(0.27, 0.27, 0.27) f.bg1:SetVertTile(true) f.bg1:SetHorizTile(true) f.bg1:SetSize(790, 454) f.bg1:SetAllPoints() f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true}) f:SetBackdropColor(.5, .5, .5, .7) f:SetBackdropBorderColor(0, 0, 0, 1) local macrosAvailable = Details.MacroList local OnEnterMacroButton = function(self) self:SetBackdropColor(unpack(scrollbox_line_backdrop_color_onenter)) end local onLeaveMacroButton = function(self) self:SetBackdropColor(unpack(scrollbox_line_backdrop_color)) end local updateMacroLine = function(self, index, title, desc, macroText) self.Title:SetText(title) self.Desc:SetText(desc) self.MacroTextEntry:SetText(macroText) end local textEntryOnFocusGained = function(self) self:HighlightText() end local textEntryOnFocusLost = function(self) self:HighlightText (0, 0) end local refreshMacroScrollbox = function(self, data, offset, totalLines) for i = 1, totalLines do local index = i + offset local macro = macrosAvailable [index] if (macro) then local line = self:GetLine (i) line:UpdateLine (index, macro.Name, macro.Desc, macro.MacroText) end end end local macroListCreateLine = function(self, index) --create a new line local line = CreateFrame("button", "$parentLine" .. index, self,"BackdropTemplate") --set its parameters line:SetPoint("topleft", self, "topleft", 0, -((index-1) * (scrollbox_line_height+1))) line:SetSize(scrollbox_size[1], scrollbox_line_height) line:SetScript("OnEnter", OnEnterMacroButton) line:SetScript("OnLeave", onLeaveMacroButton) line:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) line:SetBackdropColor(unpack(scrollbox_line_backdrop_color)) line:SetBackdropBorderColor(0, 0, 0, 0.3) local titleLabel = DF:CreateLabel(line, "", DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE")) titleLabel.textsize = 14 titleLabel.textcolor = "yellow" local descLabel = DF:CreateLabel(line, "", DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE")) descLabel.textsize = 12 local options_dropdown_template = DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE") options_dropdown_template = DF.table.copy({}, options_dropdown_template) options_dropdown_template.backdropcolor = {.51, .51, .51, .3} options_dropdown_template.onenterbordercolor = {.51, .51, .51, .2} local textEntry = DF:CreateTextEntry(line, function()end, scrollbox_size[1] - 10, 40, "MacroTextEntry", _, _, options_dropdown_template) textEntry:SetHook("OnEditFocusGained", textEntryOnFocusGained) textEntry:SetHook("OnEditFocusLost", textEntryOnFocusLost) textEntry:SetJustifyH("left") textEntry:SetTextInsets(8, 8, 0, 0) titleLabel:SetPoint("topleft", line, "topleft", 5, -5) descLabel:SetPoint("topleft", titleLabel, "bottomleft", 0, -2) textEntry:SetPoint("topleft", descLabel, "bottomleft", 0, -4) line.Title = titleLabel line.Desc = descLabel line.MacroTextEntry = textEntry line.UpdateLine = updateMacroLine line:Hide() return line end local macroScrollbox = DF:CreateScrollBox (f, "$parentMacroScrollbox", refreshMacroScrollbox, macrosAvailable, scrollbox_size[1], scrollbox_size[2], scrollbox_lines, scrollbox_line_height) macroScrollbox:SetPoint("topleft", f, "topleft", 5, -30) macroScrollbox:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) macroScrollbox:SetBackdropColor(0, 0, 0, 0) macroScrollbox:SetBackdropBorderColor(0, 0, 0, 1) f.MacroScrollbox = macroScrollbox DF:ReskinSlider(macroScrollbox) macroScrollbox.__background:Hide() --create the scrollbox lines for i = 1, scrollbox_lines do macroScrollbox:CreateLine (macroListCreateLine) end end DetailsPluginContainerWindow.OpenPlugin (DetailsMacrosPanel) DetailsMacrosPanel.MacroScrollbox:Refresh() DetailsMacrosPanel:Show() end