comparison Modules/Crafting.lua @ 70:3930518cb8d9

Added a public API so other addon developers can register themselves as a queue destination and added a UI so users can select that destination.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 28 Jul 2010 22:19:38 -0700
parents 2d65db19d3ce
children 8e9beb8a0330
comparison
equal deleted inserted replaced
69:4ae431c98059 70:3930518cb8d9
9 9
10 local realData = {} 10 local realData = {}
11 11
12 12
13 local queueDestinations = {} 13 local queueDestinations = {}
14 14 local displayCraftingDestinations = {}
15 function Crafting.RegisterQueueDestination(name, destination) 15 function Crafting.RegisterQueueDestination(name, destination)
16 queueDestinations[name] = destination 16 queueDestinations[name] = destination
17 displayCraftingDestinations[name] = name
18 end
19
20 function Crafting.UnRegisterQueueDestination(name)
21 queueDestinations[name] = nil
22 displayCraftingDestinations[name] = nil
23 end
24
25 function Crafting.GetQueueDestination()
26 local dest = ItemAuditor.db.profile.queue_destination
27 if dest and queueDestinations[dest] then
28 return queueDestinations[dest], dest
29 end
30 -- If there is none selected or the selected option has
31 -- dissapeared, choose the first one in the list
32 for name, func in pairs(queueDestinations) do
33 if dest then
34 ItemAuditor:Print("%s is no longer available as a queue destination. %s is the new default", dest, name)
35 end
36 ItemAuditor.db.profile.queue_destination = name
37 return func, name
38 end
39
40 error('Unable to determine queue destination.')
17 end 41 end
18 42
19 -- TODO: Convert this to a text field. 43 -- TODO: Convert this to a text field.
20 local craftingThresholds = {5000, 10000, 50000} 44 local craftingThresholds = {5000, 10000, 50000}
21 local craftingThresholdsDisplay = {} 45 local craftingThresholdsDisplay = {}
29 local key = ItemAuditor.db.char.crafting_threshold 53 local key = ItemAuditor.db.char.crafting_threshold
30 return craftingThresholds[key] 54 return craftingThresholds[key]
31 end 55 end
32 56
33 ItemAuditor.Options.args.crafting_options = { 57 ItemAuditor.Options.args.crafting_options = {
34 name = "Crafting with Skillet", 58 name = "Crafting",
35 desc = "/ia queue",
36 type = 'group', 59 type = 'group',
37 disabled = function() return Skillet == nil end,
38 args = { 60 args = {
39 crafting_threshold = { 61 crafting_threshold = {
40 type = "select", 62 type = "select",
41 name = "Crafting Threshold", 63 name = "Crafting Threshold",
42 desc = "Don't create items that will make less than this amount of profit", 64 desc = "Don't create items that will make less than this amount of profit",
43 values = craftingThresholdsDisplay, 65 values = craftingThresholdsDisplay,
44 get = function() return ItemAuditor.db.char.crafting_threshold end, 66 get = function() return ItemAuditor.db.char.crafting_threshold end,
45 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end, 67 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
46 order = 11, 68 order = 11,
47 }, 69 },
70 queue_destination = {
71 type = "select",
72 name = "Queue Destination",
73 desc = "Select the addon who's queue you would like ItemAuditor to post to.",
74 values = displayCraftingDestinations,
75 get = function() return select(2, Crafting.GetQueueDestination()) end,
76 set = function(info, value) ItemAuditor.db.profile.queue_destination = value end,
77 order = 11,
78 },
48 }, 79 },
49 } 80 }
50 81
51 local function displayMoney(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) 82 local function displayMoney(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...)
52 if fShow == true then 83 if fShow == true then
99 130
100 function Crafting.Export(destination) 131 function Crafting.Export(destination)
101 if type(destination) == 'function' then 132 if type(destination) == 'function' then
102 -- do nothing 133 -- do nothing
103 elseif destination == nil then 134 elseif destination == nil then
104 destination = queueDestinations['Skillet'] 135 destination = Crafting.GetQueueDestination()
105 elseif type(destination) == 'string' then 136 elseif type(destination) == 'string' then
106 destination = queueDestinations[destination] 137 destination = queueDestinations[destination]
107 else 138 else
108 error('destination must be a function or a string') 139 error('destination must be a function or a string')
109 end 140 end
186 btnProcess:SetScript("OnLeave", function() 217 btnProcess:SetScript("OnLeave", function()
187 GameTooltip:Hide() 218 GameTooltip:Hide()
188 end) 219 end)
189 220
190 btnSkillet = CreateFrame("Button", nil, craftingContent, "UIPanelButtonTemplate") 221 btnSkillet = CreateFrame("Button", nil, craftingContent, "UIPanelButtonTemplate")
191 btnSkillet:SetText("Queue in Skillet") 222
223
192 btnSkillet:SetSize(125, 25) 224 btnSkillet:SetSize(125, 25)
193 btnSkillet:SetPoint("BOTTOMRIGHT", btnProcess, 'BOTTOMLEFT', 0, 0) 225 btnSkillet:SetPoint("BOTTOMRIGHT", btnProcess, 'BOTTOMLEFT', 0, 0)
194 btnSkillet:RegisterForClicks("LeftButtonUp"); 226 btnSkillet:RegisterForClicks("LeftButtonUp");
195 btnSkillet:SetScript("OnClick", function (self, button, down) 227 btnSkillet:SetScript("OnClick", function (self, button, down)
196 ExportToSkillet() 228 Crafting.Export()
197 end) 229 end)
198 230
199 end 231 end
232 local destination = select(2, Crafting.GetQueueDestination())
233 btnSkillet:SetText("Export to "..destination)
234
200 craftingContent:Show() 235 craftingContent:Show()
201 236
202 if container.parent then 237 if container.parent then
203 local width = 80 238 local width = 80
204 for i, data in pairs(craftingCols) do 239 for i, data in pairs(craftingCols) do