From 53259712cdadb4ec1c711a7771803eda0e3c83e9 Mon Sep 17 00:00:00 2001 From: torhal Date: Mon, 21 Sep 2009 03:57:54 +0000 Subject: [PATCH] In addon:DisplayFrame(): Replaced self:GetRecipeTable() with self.recipe_list Renamed SetRecipeButtonTooltip() and ClearRecipeButtonTooltip() to SetButtonScripts() and ClearButtonScripts(), and put them in a do-block as implementation functions for RecipeList_Update(). Made Button_OnLeave(), Bar_OnEnter(), and Bar_OnLeave() functions for use in SetButtonScripts() so as not to continually create anonymous functions. Added highlighting of the currently moused-over recipe in the list. --- ARLFrame.lua | 301 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 148 insertions(+), 153 deletions(-) diff --git a/ARLFrame.lua b/ARLFrame.lua index 8fb75dd..af1196c 100644 --- a/ARLFrame.lua +++ b/ARLFrame.lua @@ -852,16 +852,6 @@ local function initDisplayStrings() end -local function ClearRecipeButtonTooltip(bIndex) - local pButton = addon.PlusListButton[bIndex] - local rButton = addon.RecipeListButton[bIndex] - - pButton:SetScript("OnEnter", nil) - pButton:SetScript("OnLeave", nil) - rButton:SetScript("OnEnter", nil) - rButton:SetScript("OnLeave", nil) -end - -- Description: Converting from hex to rgb (Thanks Maldivia) local function toRGB(hex) @@ -1334,173 +1324,178 @@ local function GenerateTooltipContent(owner, rIndex, playerFaction, exclude) end end --- Description: This sets the tooltip on the button during a recipelist update - -local function SetRecipeButtonTooltip(bIndex) - - local pButton = addon.PlusListButton[bIndex] - local rButton = addon.RecipeListButton[bIndex] - local dStringIndex = rButton.sI - local rIndex = DisplayStrings[dStringIndex].sID - local playerFaction = playerData.playerFaction - local exclude = addon.db.profile.exclusionlist - - pButton:SetScript("OnEnter", - function (pButton) - GenerateTooltipContent(pButton, rIndex, playerFaction, exclude) - end - ) - - pButton:SetScript("OnLeave", - function() - QTip:Release(arlTooltip) - arlSpellTooltip:Hide() - end - ) - - rButton:SetScript("OnEnter", - function (rButton) - GenerateTooltipContent(rButton, rIndex, playerFaction, exclude) - end - ) - - rButton:SetScript("OnLeave", - function() - QTip:Release(arlTooltip) - arlSpellTooltip:Hide() - end - ) - -end - -- Description: Scrollframe update stuff +local RecipeList_Update +do + local highlight = CreateFrame("Frame", nil, UIParent) + highlight:SetFrameStrata("TOOLTIP") + highlight:Hide() -local function RecipeList_Update() - -- Clear out the current buttons - for i = 1, maxVisibleRecipes do - addon.RecipeListButton[i]:SetText("") - addon.RecipeListButton[i].sI = 0 - addon.PlusListButton[i]:Hide() - ClearRecipeButtonTooltip(i) - end - - local entries = #DisplayStrings + highlight._texture = highlight:CreateTexture(nil, "OVERLAY") + highlight._texture:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + highlight._texture:SetBlendMode("ADD") + highlight._texture:SetAllPoints(highlight) - FauxScrollFrame_Update(ARL_RecipeScrollFrame, entries, maxVisibleRecipes, 16) - -- close all popups - addon:ClosePopups() + local function Button_OnLeave() + QTip:Release(arlTooltip) + arlSpellTooltip:Hide() + end - if (entries > 0) then + local function Bar_OnEnter(self) + highlight:SetParent(self) + highlight:SetAllPoints(self) + highlight:Show() + GenerateTooltipContent(self, DisplayStrings[self.sI].sID, playerData.playerFaction, addon.db.profile.exclusionlist) + end - -- enable expand button - ARL_ExpandButton:SetNormalFontObject("GameFontNormalSmall") - ARL_ExpandButton:Enable() + local function Bar_OnLeave() + highlight:Hide() + highlight:ClearAllPoints() + highlight:SetParent(nil) + QTip:Release(arlTooltip) + arlSpellTooltip:Hide() + end - -- now fill in our buttons - local listOffset = FauxScrollFrame_GetOffset(ARL_RecipeScrollFrame) - local buttonIndex = 1 - local stringsIndex = buttonIndex + listOffset + local function SetButtonScripts(bIndex) + local pButton = addon.PlusListButton[bIndex] + local rButton = addon.RecipeListButton[bIndex] + local dStringIndex = rButton.sI + local rIndex = DisplayStrings[dStringIndex].sID + local playerFaction = playerData.playerFaction + local exclude = addon.db.profile.exclusionlist + + pButton:SetScript("OnEnter", + function (pButton) + GenerateTooltipContent(pButton, rIndex, playerFaction, addon.db.profile.exclusionlist) + end) - local stayInLoop = true + pButton:SetScript("OnLeave", Button_OnLeave) - while (stayInLoop == true) do + rButton:SetScript("OnEnter", Bar_OnEnter) + rButton:SetScript("OnLeave", Bar_OnLeave) + end - if (DisplayStrings[stringsIndex].IsRecipe) then + local function ClearButtonScripts(bIndex) + local pButton = addon.PlusListButton[bIndex] + local rButton = addon.RecipeListButton[bIndex] - -- display the + symbol - addon.PlusListButton[buttonIndex]:Show() + pButton:SetScript("OnEnter", nil) + pButton:SetScript("OnLeave", nil) + rButton:SetScript("OnEnter", nil) + rButton:SetScript("OnLeave", nil) + end - -- Is it expanded or not? - if (DisplayStrings[stringsIndex].IsExpanded) then - addon.PlusListButton[buttonIndex]:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up") - addon.PlusListButton[buttonIndex]:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-Down") - addon.PlusListButton[buttonIndex]:SetHighlightTexture("Interface\\Buttons\\UI-PlusButton-Hilight") - addon.PlusListButton[buttonIndex]:SetDisabledTexture("Interface\\Buttons\\UI-MinusButton-Disabled") + function RecipeList_Update() + -- Clear out the current buttons + for i = 1, maxVisibleRecipes do + addon.RecipeListButton[i]:SetText("") + addon.RecipeListButton[i].sI = 0 + addon.PlusListButton[i]:Hide() + ClearButtonScripts(i) + end + local entries = #DisplayStrings + + FauxScrollFrame_Update(ARL_RecipeScrollFrame, entries, maxVisibleRecipes, 16) + addon:ClosePopups() + + if entries > 0 then + ARL_ExpandButton:SetNormalFontObject("GameFontNormalSmall") + ARL_ExpandButton:Enable() + + -- now fill in our buttons + local listOffset = FauxScrollFrame_GetOffset(ARL_RecipeScrollFrame) + local buttonIndex = 1 + local stringsIndex = buttonIndex + listOffset + local stayInLoop = true + + while stayInLoop do + if DisplayStrings[stringsIndex].IsRecipe then + addon.PlusListButton[buttonIndex]:Show() + + if DisplayStrings[stringsIndex].IsExpanded then + addon.PlusListButton[buttonIndex]:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up") + addon.PlusListButton[buttonIndex]:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-Down") + addon.PlusListButton[buttonIndex]:SetHighlightTexture("Interface\\Buttons\\UI-PlusButton-Hilight") + addon.PlusListButton[buttonIndex]:SetDisabledTexture("Interface\\Buttons\\UI-MinusButton-Disabled") + else + addon.PlusListButton[buttonIndex]:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up") + addon.PlusListButton[buttonIndex]:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-Down") + addon.PlusListButton[buttonIndex]:SetHighlightTexture("Interface\\Buttons\\UI-PlusButton-Hilight") + addon.PlusListButton[buttonIndex]:SetDisabledTexture("Interface\\Buttons\\UI-PlusButton-Disabled") + end else - addon.PlusListButton[buttonIndex]:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up") - addon.PlusListButton[buttonIndex]:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-Down") - addon.PlusListButton[buttonIndex]:SetHighlightTexture("Interface\\Buttons\\UI-PlusButton-Hilight") - addon.PlusListButton[buttonIndex]:SetDisabledTexture("Interface\\Buttons\\UI-PlusButton-Disabled") + addon.PlusListButton[buttonIndex]:Hide() end + addon.RecipeListButton[buttonIndex]:SetText(DisplayStrings[stringsIndex].String) + addon.RecipeListButton[buttonIndex].sI = stringsIndex - else - addon.PlusListButton[buttonIndex]:Hide() - end - - addon.RecipeListButton[buttonIndex]:SetText(DisplayStrings[stringsIndex].String) - addon.RecipeListButton[buttonIndex].sI = stringsIndex + SetButtonScripts(buttonIndex) - -- Set the tooltip on the button - SetRecipeButtonTooltip(buttonIndex) + buttonIndex = buttonIndex + 1 + stringsIndex = stringsIndex + 1 - buttonIndex = buttonIndex + 1 - stringsIndex = stringsIndex + 1 - - if ((buttonIndex > maxVisibleRecipes) or (stringsIndex > entries)) then - stayInLoop = false + if ((buttonIndex > maxVisibleRecipes) or (stringsIndex > entries)) then + stayInLoop = false + end end + -- Entries are 0 here, so we have 0 to display + else + -- disable expand button, it's useless here and would spam the same error again + ARL_ExpandButton:SetNormalFontObject("GameFontDisableSmall") + ARL_ExpandButton:Disable() - end - - -- Entries are 0 here, so we have 0 to display - else - -- disable expand button, it's useless here and would spam the same error again - ARL_ExpandButton:SetNormalFontObject("GameFontDisableSmall") - ARL_ExpandButton:Disable() - - local showpopup = false - - if (addon.db.profile.hidepopup ~= true) then - showpopup = true - end - - -- If we haven't run this before we'll show pop-ups for the first time. - if (addon.db.profile.addonversion ~= addonversion) then - addon.db.profile.addonversion = addonversion - showpopup = true - end + local showpopup = false - -- If the recipe total is at 0, it means we have not scanned the profession yet - if (playerData.recipes_total == 0) then - if (showpopup == true) then - StaticPopup_Show("ARL_NOTSCANNED") - end - -- We know all the recipes - elseif (playerData.recipes_known == playerData.recipes_total) then - if (showpopup == true) then - StaticPopup_Show("ARL_ALLKNOWN") + if not addon.db.profile.hidepopup then + showpopup = true end - -- Our filters are actually filtering something - elseif ((playerData.recipes_total_filtered - playerData.recipes_known_filtered) == 0) then - if (showpopup == true) then - StaticPopup_Show("ARL_ALLFILTERED") + + -- If we haven't run this before we'll show pop-ups for the first time. + if addon.db.profile.addonversion ~= addonversion then + addon.db.profile.addonversion = addonversion + showpopup = true end - -- Our exclusion list is preventing something from being displayed - elseif (playerData.excluded_recipes_unknown ~= 0) then - if (showpopup == true) then - StaticPopup_Show("ARL_ALLEXCLUDED") + + -- If the recipe total is at 0, it means we have not scanned the profession yet + if playerData.recipes_total == 0 then + if showpopup then + StaticPopup_Show("ARL_NOTSCANNED") + end + -- We know all the recipes + elseif playerData.recipes_known == playerData.recipes_total then + if showpopup then + StaticPopup_Show("ARL_ALLKNOWN") + end + -- Our filters are actually filtering something + elseif ((playerData.recipes_total_filtered - playerData.recipes_known_filtered) == 0) then + if showpopup then + StaticPopup_Show("ARL_ALLFILTERED") + end + -- Our exclusion list is preventing something from being displayed + elseif playerData.excluded_recipes_unknown ~= 0 then + if showpopup then + StaticPopup_Show("ARL_ALLEXCLUDED") + end + -- We have some search text that is preventing stuff from being displayed + elseif ARL_SearchText:GetText() ~= "" then + StaticPopup_Show("ARL_SEARCHFILTERED") + else + addon:Print(L["NO_DISPLAY"]) + addon:Print("DEBUG: recipes_total check for 0") + addon:Print("DEBUG: recipes_total: " .. playerData.recipes_total) + addon:Print("DEBUG: recipes_total check for equal to recipes_total") + addon:Print("DEBUG: recipes_known: " .. playerData.recipes_known) + addon:Print("DEBUG: recipes_total: " .. playerData.recipes_total) + addon:Print("DEBUG: recipes_total_filtered - recipes_known_filtered = 0") + addon:Print("DEBUG: recipes_total_filtered: " .. playerData.recipes_total_filtered) + addon:Print("DEBUG: recipes_known_filtered: " .. playerData.recipes_known_filtered) + addon:Print("DEBUG: excluded_recipes_unknown ~= 0") + addon:Print("DEBUG: excluded_recipes_unknown: " .. playerData.excluded_recipes_unknown) end - -- We have some search text that is preventing stuff from being displayed - elseif (ARL_SearchText:GetText() ~= "") then - StaticPopup_Show("ARL_SEARCHFILTERED") - else - addon:Print(L["NO_DISPLAY"]) - addon:Print("DEBUG: recipes_total check for 0") - addon:Print("DEBUG: recipes_total: " .. playerData.recipes_total) - addon:Print("DEBUG: recipes_total check for equal to recipes_total") - addon:Print("DEBUG: recipes_known: " .. playerData.recipes_known) - addon:Print("DEBUG: recipes_total: " .. playerData.recipes_total) - addon:Print("DEBUG: recipes_total_filtered - recipes_known_filtered = 0") - addon:Print("DEBUG: recipes_total_filtered: " .. playerData.recipes_total_filtered) - addon:Print("DEBUG: recipes_known_filtered: " .. playerData.recipes_known_filtered) - addon:Print("DEBUG: excluded_recipes_unknown ~= 0") - addon:Print("DEBUG: excluded_recipes_unknown: " .. playerData.excluded_recipes_unknown) end - end - -end +end -- do -- Description: Updates the progress bar based on the number of known / total recipes @@ -4944,7 +4939,7 @@ function addon:DisplayFrame( SetSwitcherTexture(SortedProfessions[currentProfIndex].texture) -- Set the texture on our switcher button correctly -- Acquire the list, then sort it - recipeDB = self:GetRecipeTable() + recipeDB = self.recipe_list sortedRecipeIndex = SortMissingRecipes(recipeDB) initDisplayStrings() -- Take our sorted list, and fill up DisplayStrings SetProgressBar(cPlayer) -- Update our progressbar -- 1.7.9.5