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 |
