Mercurial > wow > reagentmaker
comparison SecureMenu.lua @ 40:5a6091dddf69
Disable actions on buttons with not enough reagents (external frame), and warn the user
| author | contrebasse | 
|---|---|
| date | Fri, 29 Apr 2011 23:58:43 +0200 | 
| parents | 71e8b39f056e | 
| children | 4e6492b19f4c | 
   comparison
  equal
  deleted
  inserted
  replaced
| 39:71e8b39f056e | 40:5a6091dddf69 | 
|---|---|
| 187 | 187 | 
| 188 local function menuCraftItem() | 188 local function menuCraftItem() | 
| 189 action(itemID,reagentIndex,IsShiftKeyDown()) | 189 action(itemID,reagentIndex,IsShiftKeyDown()) | 
| 190 end | 190 end | 
| 191 | 191 | 
| 192 local function WarnNotMakable(btn) | |
| 193 A.Error("You do not have enough ["..btn.itemNameString.."] to craft ["..TitleText:GetText().."]") | |
| 194 end | |
| 195 | |
| 196 -- Update counts and button actions | |
| 192 function MenuFrame.updateCounts() | 197 function MenuFrame.updateCounts() | 
| 193 local anyMakable | 198 local anyMakable | 
| 194 for i=1,numActiveEntries do | 199 for i=1,numActiveEntries do | 
| 195 btn = menuEntries[i] | 200 btn = menuEntries[i] | 
| 196 local itemCount = GetItemCount(btn.reagentID) | 201 local itemCount = GetItemCount(btn.reagentID) | 
| 197 | 202 | 
| 198 local numMakable = math.floor(itemCount/(btn.reagentsForOneRecipe or 1)) | 203 local numMakable = math.floor(itemCount/(btn.reagentsForOneRecipe or 1)) | 
| 199 btn.countDetail:SetText(itemCount.."/"..(btn.reagentsForOneRecipe or 1)) | 204 btn.countDetail:SetText(itemCount.."/"..(btn.reagentsForOneRecipe or 1)) | 
| 200 | 205 | 
| 201 if numMakable>0 then | 206 if numMakable>0 then | 
| 207 -- Set action | |
| 208 if type(action)=="function" then | |
| 209 btn:SetScript("PreClick",btn.action) | |
| 210 btn:SetAttribute("type", nil) | |
| 211 btn:SetAttribute("macrotext", nil) | |
| 212 else --if type(action)=="string" then | |
| 213 btn:SetScript("PreClick",nil) | |
| 214 btn:SetAttribute("type", "macro") | |
| 215 btn:SetAttribute("macrotext", btn.action..btn.itemNameString) | |
| 216 end -- if | |
| 217 | |
| 202 anyMakable = true | 218 anyMakable = true | 
| 203 btn.countDetail:SetTextColor(1, 1, 1, 1) | 219 btn.countDetail:SetTextColor(1, 1, 1, 1) | 
| 204 btn.icon:SetVertexColor(1,1,1); | 220 btn.icon:SetVertexColor(1,1,1); | 
| 205 btn.itemName:SetTextColor(1,1,1,1) | 221 btn.itemName:SetTextColor(1,1,1,1) | 
| 206 else | 222 else | 
| 207 -- Do not disable the button, to be able to show the tooltip | 223 -- Do not disable the button, to be able to show the tooltip | 
| 224 -- Disable only the effects | |
| 225 btn:SetScript("PreClick",WarnNotMakable) | |
| 226 btn:SetAttribute("type", nil) | |
| 227 btn:SetAttribute("macrotext", nil) | |
| 228 | |
| 208 btn.countDetail:SetTextColor(1, 0.1, 0.1, 1) | 229 btn.countDetail:SetTextColor(1, 0.1, 0.1, 1) | 
| 209 btn.icon:SetVertexColor(0.5, 0.5, 0.5) | 230 btn.icon:SetVertexColor(0.5, 0.5, 0.5) | 
| 210 btn.itemName:SetTextColor(1,1,1,0.5) | 231 btn.itemName:SetTextColor(1,1,1,0.5) | 
| 211 end | 232 end | 
| 212 | 233 | 
| 263 btn.itemID = itemID | 284 btn.itemID = itemID | 
| 264 btn.reagentID = reagent[1] | 285 btn.reagentID = reagent[1] | 
| 265 btn.reagentLink = link | 286 btn.reagentLink = link | 
| 266 btn.reagentsForOneRecipe = reagent[2] | 287 btn.reagentsForOneRecipe = reagent[2] | 
| 267 btn.spellLink = spellLink | 288 btn.spellLink = spellLink | 
| 268 | 289 btn.action = action | 
| 269 -- Set action | 290 btn.itemNameString = name | 
| 270 if type(action)=="function" then | |
| 271 btn:SetScript("PreClick",action) | |
| 272 btn:SetAttribute("type", nil) | |
| 273 btn:SetAttribute("macrotext", nil) | |
| 274 else --if type(action)=="string" then | |
| 275 btn:SetScript("PreClick",nil) | |
| 276 btn:SetAttribute("type", "macro") | |
| 277 btn:SetAttribute("macrotext", action..name) | |
| 278 end -- if | |
| 279 | 291 | 
| 280 btn:Show() | 292 btn:Show() | 
| 281 | 293 | 
| 282 -- Increase the entry number | 294 -- Increase the entry number | 
| 283 numActiveEntries = numActiveEntries + 1 | 295 numActiveEntries = numActiveEntries + 1 | 
| 338 MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2)) | 350 MenuFrame:SetHeight(89 + numActiveEntries*(MENU_ENTRY_HEIGHT+2)) | 
| 339 | 351 | 
| 340 MenuFrame:ClearAllPoints() | 352 MenuFrame:ClearAllPoints() | 
| 341 MenuFrame:SetPoint("TOPLEFT",TradeSkillFrame,"TOPRIGHT",-2,14) | 353 MenuFrame:SetPoint("TOPLEFT",TradeSkillFrame,"TOPRIGHT",-2,14) | 
| 342 | 354 | 
| 355 -- Update counts and set actions | |
| 343 MenuFrame.updateCounts() | 356 MenuFrame.updateCounts() | 
| 344 | 357 | 
| 345 MenuFrame:Show() | 358 MenuFrame:Show() | 
| 346 | 359 | 
| 347 if not MenuFrame.state then | 360 if not MenuFrame.state then | 
