Mercurial > wow > reagentmaker
comparison utils.lua @ 24:5f3a5b88fb19
First attempt to unfilter, failed badly... I'm not even sure it'll be possible at all.
| author | contrebasse |
|---|---|
| date | Wed, 27 Apr 2011 23:46:20 +0200 |
| parents | 250d01156e21 |
| children | 578b9c9479c9 |
comparison
equal
deleted
inserted
replaced
| 23:8acb6dc1ff9e | 24:5f3a5b88fb19 |
|---|---|
| 56 end -- if | 56 end -- if |
| 57 end -- for | 57 end -- for |
| 58 A.DEBUG("Tradeskill not found for "..itemID) | 58 A.DEBUG("Tradeskill not found for "..itemID) |
| 59 end -- function | 59 end -- function |
| 60 end -- do | 60 end -- do |
| 61 | |
| 62 | |
| 63 -- Taken from Datastore_Crafts | |
| 64 -- *** Scanning functions *** | |
| 65 do | |
| 66 local selectedTradeSkillIndex | |
| 67 local subClasses, subClassID | |
| 68 local invSlots, invSlotID | |
| 69 local haveMats | |
| 70 local headersState = {} | |
| 71 | |
| 72 local function GetSubClassID() | |
| 73 -- The purpose of this function is to get the subClassID in a UI independant way | |
| 74 -- ie: without relying on UIDropDownMenu_GetSelectedID(TradeSkillSubClassDropDown), which uses a hardcoded frame name. | |
| 75 | |
| 76 if GetTradeSkillSubClassFilter(0) then -- if "All Subclasses" is selected, GetTradeSkillSubClassFilter() will return 1 for all indexes, including 0 | |
| 77 return 1 -- thus return 1 as selected id (as would be returned by UIDropDownMenu_GetSelectedID(TradeSkillSubClassDropDown)) | |
| 78 end | |
| 79 | |
| 80 local filter | |
| 81 for i = 1, #subClasses do | |
| 82 filter = GetTradeSkillSubClassFilter(i) | |
| 83 if filter then | |
| 84 return i+1 -- ex: 3rd element of the subClasses array, but 4th in the dropdown due to "All Subclasses", so return i+1 | |
| 85 end | |
| 86 end | |
| 87 end | |
| 88 | |
| 89 local function GetInvSlotID() | |
| 90 -- The purpose of this function is to get the invSlotID in a UI independant way (same as GetSubClassID) | |
| 91 -- ie: without relying on UIDropDownMenu_GetSelectedID(TradeSkillInvSlotDropDown), which uses a hardcoded frame name. | |
| 92 | |
| 93 if GetTradeSkillInvSlotFilter(0) then -- if "All Slots" is selected, GetTradeSkillInvSlotFilter() will return 1 for all indexes, including 0 | |
| 94 return 1 -- thus return 1 as selected id (as would be returned by UIDropDownMenu_GetSelectedID(TradeSkillInvSlotDropDown)) | |
| 95 end | |
| 96 | |
| 97 local filter | |
| 98 for i = 1, #invSlots do | |
| 99 filter = GetTradeSkillInvSlotFilter(i) | |
| 100 if filter then | |
| 101 return i+1 -- ex: 3rd element of the invSlots array, but 4th in the dropdown due to "All Slots", so return i+1 | |
| 102 end | |
| 103 end | |
| 104 end | |
| 105 | |
| 106 function A.SaveActiveFilters() | |
| 107 print("save") | |
| 108 selectedTradeSkillIndex = GetTradeSkillSelectionIndex() | |
| 109 | |
| 110 subClasses = { GetTradeSkillSubClasses() } | |
| 111 invSlots = { GetTradeSkillInvSlots() } | |
| 112 subClassID = GetSubClassID() | |
| 113 invSlotID = GetInvSlotID() | |
| 114 | |
| 115 -- Subclasses | |
| 116 SetTradeSkillSubClassFilter(0, 1, 1) -- this checks "All subclasses" | |
| 117 if TradeSkillSubClassDropDown then | |
| 118 UIDropDownMenu_SetSelectedID(TradeSkillSubClassDropDown, 1) | |
| 119 end | |
| 120 | |
| 121 -- Inventory slots | |
| 122 SetTradeSkillInvSlotFilter(0, 1, 1) -- this checks "All slots" | |
| 123 if TradeSkillInvSlotDropDown then | |
| 124 UIDropDownMenu_SetSelectedID(TradeSkillInvSlotDropDown, 1) | |
| 125 end | |
| 126 | |
| 127 -- Have Materials | |
| 128 if TradeSkillFrameAvailableFilterCheckButton then | |
| 129 haveMats = TradeSkillFrameAvailableFilterCheckButton:GetChecked() -- nil or true | |
| 130 TradeSkillFrameAvailableFilterCheckButton:SetChecked(false) | |
| 131 end | |
| 132 TradeSkillOnlyShowMakeable(false) | |
| 133 | |
| 134 -- Headers | |
| 135 local headerCount = 0 -- use a counter to avoid being bound to header names, which might not be unique. | |
| 136 | |
| 137 for i = GetNumTradeSkills(), 1, -1 do -- 1st pass, expand all categories | |
| 138 local _, skillType, _, isExpanded = GetTradeSkillInfo(i) | |
| 139 if (skillType == "header") then | |
| 140 headerCount = headerCount + 1 | |
| 141 if not isExpanded then | |
| 142 ExpandTradeSkillSubClass(i) | |
| 143 headersState[headerCount] = true | |
| 144 end | |
| 145 end | |
| 146 end | |
| 147 | |
| 148 print("saved") | |
| 149 end | |
| 150 | |
| 151 function A.RestoreActiveFilters() | |
| 152 print("restore") | |
| 153 -- Subclasses | |
| 154 SetTradeSkillSubClassFilter(subClassID-1, 1, 1) -- this checks the previously checked value | |
| 155 | |
| 156 local frame = TradeSkillSubClassDropDown | |
| 157 if frame then -- other addons might nil this frame (delayed load, etc..), so secure DDM calls | |
| 158 local text = (subClassID == 1) and ALL_SUBCLASSES or subClasses[subClassID-1] | |
| 159 UIDropDownMenu_SetSelectedID(frame, subClassID) | |
| 160 UIDropDownMenu_SetText(frame, text); | |
| 161 end | |
| 162 | |
| 163 subClassID = nil | |
| 164 wipe(subClasses) | |
| 165 subClasses = nil | |
| 166 | |
| 167 -- Inventory slots | |
| 168 invSlotID = invSlotID or 1 | |
| 169 SetTradeSkillInvSlotFilter(invSlotID-1, 1, 1) -- this checks the previously checked value | |
| 170 | |
| 171 frame = TradeSkillInvSlotDropDown | |
| 172 if frame then | |
| 173 local text = (invSlotID == 1) and ALL_INVENTORY_SLOTS or invSlots[invSlotID-1] | |
| 174 UIDropDownMenu_SetSelectedID(frame, invSlotID) | |
| 175 UIDropDownMenu_SetText(frame, text); | |
| 176 end | |
| 177 | |
| 178 invSlotID = nil | |
| 179 wipe(invSlots) | |
| 180 invSlots = nil | |
| 181 | |
| 182 -- Have Materials | |
| 183 if TradeSkillFrameAvailableFilterCheckButton then | |
| 184 TradeSkillFrameAvailableFilterCheckButton:SetChecked(haveMats or false) | |
| 185 end | |
| 186 TradeSkillOnlyShowMakeable(haveMats or false) | |
| 187 haveMats = nil | |
| 188 | |
| 189 SelectTradeSkill(selectedTradeSkillIndex) | |
| 190 selectedTradeSkillIndex = nil | |
| 191 | |
| 192 -- Headers | |
| 193 local headerCount = 0 | |
| 194 for i = GetNumTradeSkills(), 1, -1 do | |
| 195 local _, skillType = GetTradeSkillInfo(i) | |
| 196 if (skillType == "header") then | |
| 197 headerCount = headerCount + 1 | |
| 198 if headersState[headerCount] then | |
| 199 CollapseTradeSkillSubClass(i) | |
| 200 end | |
| 201 end | |
| 202 end | |
| 203 wipe(headersState) | |
| 204 end | |
| 205 print("restored") | |
| 206 end |
