Zerotorescue@62
|
1 local addon = select(2, ...);
|
Zerotorescue@62
|
2 local mod = addon:NewModule("Config");
|
Zerotorescue@62
|
3
|
Zerotorescue@62
|
4 local options, groupIdToName, groupIsVirtual, temp, count, includeTradeSkillItems, currentGroupType = {}, {}, {}, {}, 0, 500, "Normal";
|
Zerotorescue@62
|
5 local AceConfigDialog, AceConfigRegistry, AceSerializer;
|
Zerotorescue@62
|
6
|
Zerotorescue@76
|
7 local unknownItemName = "Unknown (#%d)";
|
Zerotorescue@76
|
8
|
Zerotorescue@62
|
9 -- Private functions and tables
|
Zerotorescue@62
|
10
|
Zerotorescue@62
|
11 local function SetOption(info, value, multiSelectEnabled)
|
Zerotorescue@62
|
12 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
13 local optionName = info[#info];
|
Zerotorescue@62
|
14
|
Zerotorescue@62
|
15 -- Special treatment for override toggle boxes
|
Zerotorescue@62
|
16 if optionName:find("override") then
|
Zerotorescue@62
|
17 if not value and info.arg then
|
Zerotorescue@62
|
18 -- If this override was disabled and a saved variable name was provided, set it to nil rather than false
|
Zerotorescue@62
|
19
|
Zerotorescue@62
|
20 value = nil;
|
Zerotorescue@62
|
21
|
Zerotorescue@62
|
22 -- If this is an override toggler then also set the related field to nil
|
Zerotorescue@62
|
23 addon.db.profile.groups[groupName][info.arg] = nil;
|
Zerotorescue@62
|
24 elseif value and info.arg then
|
Zerotorescue@62
|
25 -- If this override is now enabled, we need to copy the default into this field (unless it is not nil (which is supposed to be impossible), in which case we'll use the already selected value)
|
Zerotorescue@62
|
26
|
Zerotorescue@68
|
27 local inheritedValue = addon:GetOptionByKey(groupName, info.arg);
|
Zerotorescue@68
|
28
|
Zerotorescue@75
|
29 addon.db.profile.groups[groupName][info.arg] = (type(inheritedValue) == "table" and CopyTable(inheritedValue)) or inheritedValue; -- copying defaults by reference would let one (unintendedly) change the defaults
|
Zerotorescue@62
|
30 end
|
Zerotorescue@62
|
31 end
|
Zerotorescue@62
|
32
|
Zerotorescue@62
|
33 if multiSelectEnabled ~= nil then
|
Zerotorescue@62
|
34 -- The saved vars for a multiselect will always be an array, it may not yet exist in which case it must be created.
|
Zerotorescue@62
|
35 if not addon.db.profile.groups[groupName][optionName] then
|
Zerotorescue@62
|
36 addon.db.profile.groups[groupName][optionName] = {};
|
Zerotorescue@62
|
37 end
|
Zerotorescue@62
|
38
|
Zerotorescue@62
|
39 addon.db.profile.groups[groupName][optionName][value] = multiSelectEnabled or nil;
|
Zerotorescue@62
|
40 else
|
Zerotorescue@62
|
41 addon.db.profile.groups[groupName][optionName] = value;
|
Zerotorescue@62
|
42 end
|
Zerotorescue@62
|
43 end
|
Zerotorescue@62
|
44
|
Zerotorescue@62
|
45 local function GetOption(info)
|
Zerotorescue@62
|
46 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
47 local optionName = info[#info];
|
Zerotorescue@62
|
48
|
Zerotorescue@62
|
49 local noDefault;
|
Zerotorescue@62
|
50
|
Zerotorescue@62
|
51 if optionName:find("override") then
|
Zerotorescue@62
|
52 noDefault = true;
|
Zerotorescue@62
|
53 end
|
Zerotorescue@62
|
54
|
Zerotorescue@62
|
55 return addon:GetOptionByKey(groupName, optionName, noDefault);
|
Zerotorescue@62
|
56 end
|
Zerotorescue@62
|
57
|
Zerotorescue@62
|
58 local function GetMultiOption(info, value)
|
Zerotorescue@62
|
59 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
60 local optionName = info[#info];
|
Zerotorescue@62
|
61
|
Zerotorescue@68
|
62 local multiSelectValue = addon:GetOptionByKey(groupName, optionName);
|
Zerotorescue@68
|
63
|
Zerotorescue@68
|
64 return multiSelectValue and multiSelectValue[value];
|
Zerotorescue@62
|
65 end
|
Zerotorescue@62
|
66
|
Zerotorescue@62
|
67 local function GetDisabled(info)
|
Zerotorescue@62
|
68 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
69 local optionName = info[#info];
|
Zerotorescue@62
|
70
|
Zerotorescue@62
|
71 if optionName:find("override") or not info.arg then
|
Zerotorescue@62
|
72 return false;
|
Zerotorescue@62
|
73 end
|
Zerotorescue@62
|
74
|
Zerotorescue@62
|
75 return (addon:GetOptionByKey(groupName, info.arg, true) == nil);
|
Zerotorescue@62
|
76 end
|
Zerotorescue@62
|
77
|
Zerotorescue@62
|
78 local function ValidateGroupName(_, value)
|
Zerotorescue@62
|
79 value = string.lower(string.trim(value or ""));
|
Zerotorescue@62
|
80
|
Zerotorescue@62
|
81 for name, _ in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
82 if string.lower(name) == value then
|
Zerotorescue@62
|
83 return ("A group named \"%s\" already exists."):format(name);
|
Zerotorescue@62
|
84 end
|
Zerotorescue@62
|
85 end
|
Zerotorescue@62
|
86
|
Zerotorescue@62
|
87 return true;
|
Zerotorescue@62
|
88 end
|
Zerotorescue@62
|
89
|
Zerotorescue@62
|
90 local tblAddItemTemplate = {
|
Zerotorescue@62
|
91 order = 0,
|
Zerotorescue@62
|
92 type = "input",
|
Zerotorescue@62
|
93 name = function(info)
|
Zerotorescue@62
|
94 local itemName, _, itemRarity = GetItemInfo(info[#info]);
|
Zerotorescue@62
|
95 return tostring( 7 - (itemRarity or 0) ) .. (itemName or "");
|
Zerotorescue@62
|
96 end,
|
Zerotorescue@62
|
97 get = function(info)
|
Zerotorescue@62
|
98 return tostring(info[#info]); -- Ace is going to be anal about this if it's a numeric value, so we transmute it into a string here then back to a number on the other side
|
Zerotorescue@62
|
99 end,
|
Zerotorescue@75
|
100 set = function(groupId, itemData)
|
Zerotorescue@62
|
101 -- This is NOT a real "set", we pass the widget reference to this function which contains similar, but not the same, info.
|
Zerotorescue@62
|
102
|
Zerotorescue@76
|
103 if itemData then
|
Zerotorescue@76
|
104 local groupName = groupIdToName[groupId];
|
Zerotorescue@76
|
105
|
Zerotorescue@76
|
106 if not itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
107 print("|cffff0000Couldn't add the item with itemId (" .. itemData.id .. ") because it is already in a group.|r");
|
Zerotorescue@76
|
108 end
|
Zerotorescue@76
|
109
|
Zerotorescue@76
|
110 if AceConfigRegistry then
|
Zerotorescue@76
|
111 -- Now rebuild the list
|
Zerotorescue@76
|
112 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
113 end
|
Zerotorescue@62
|
114 end
|
Zerotorescue@62
|
115 end,
|
Zerotorescue@62
|
116 width = "double",
|
Zerotorescue@62
|
117 dialogControl = "ConfigItemLinkButton",
|
Zerotorescue@62
|
118 };
|
Zerotorescue@62
|
119
|
Zerotorescue@62
|
120 local tblRemoveItemTemplate = {
|
Zerotorescue@62
|
121 order = 0,
|
Zerotorescue@62
|
122 type = "input",
|
Zerotorescue@62
|
123 name = function(info)
|
Zerotorescue@62
|
124 local itemName, _, itemRarity = GetItemInfo(info[#info]);
|
Zerotorescue@62
|
125 return tostring( 7 - (itemRarity or 0) ) .. (itemName or "");
|
Zerotorescue@62
|
126 end,
|
Zerotorescue@62
|
127 get = function(info)
|
Zerotorescue@62
|
128 return tostring(info[#info]); -- Ace is going to be anal about this if it's a numeric value, so we transmute it into a string here then back to a number on the other side
|
Zerotorescue@62
|
129 end,
|
Zerotorescue@75
|
130 set = function(groupId, itemData)
|
Zerotorescue@62
|
131 -- This is NOT a real "set", we pass the widget reference to this function which contains similar, but not the same, info.
|
Zerotorescue@62
|
132
|
Zerotorescue@76
|
133 if itemData then
|
Zerotorescue@62
|
134 local groupName = groupIdToName[groupId];
|
Zerotorescue@62
|
135
|
Zerotorescue@76
|
136 itemData:RemoveFromGroup(groupName);
|
Zerotorescue@62
|
137
|
Zerotorescue@76
|
138 if AceConfigRegistry then
|
Zerotorescue@76
|
139 -- Now rebuild the list
|
Zerotorescue@76
|
140 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
141 end
|
Zerotorescue@62
|
142 end
|
Zerotorescue@62
|
143 end,
|
Zerotorescue@62
|
144 width = "double",
|
Zerotorescue@62
|
145 dialogControl = "ConfigItemLinkButton",
|
Zerotorescue@62
|
146 };
|
Zerotorescue@62
|
147
|
Zerotorescue@62
|
148 local function UpdateAddItemList(info)
|
Zerotorescue@62
|
149 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
150
|
Zerotorescue@62
|
151 if not addon.db.profile.groups[groupName].items then
|
Zerotorescue@62
|
152 addon.db.profile.groups[groupName].items = {};
|
Zerotorescue@62
|
153 end
|
Zerotorescue@62
|
154
|
Zerotorescue@62
|
155 -- Merge all items from all groups together
|
Zerotorescue@62
|
156 local items = {};
|
Zerotorescue@62
|
157 for groupName, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
158 if values.items then
|
Zerotorescue@62
|
159 for itemId, _ in pairs(values.items) do
|
Zerotorescue@62
|
160 items[itemId] = true;
|
Zerotorescue@62
|
161 end
|
Zerotorescue@62
|
162 end
|
Zerotorescue@62
|
163 end
|
Zerotorescue@62
|
164
|
Zerotorescue@62
|
165 local ref = options.args.groups.args[info[2]].args.add.args.list.args;
|
Zerotorescue@62
|
166
|
Zerotorescue@62
|
167 -- Remaking the list, so out with the old, in with the new
|
Zerotorescue@62
|
168 table.wipe(ref);
|
Zerotorescue@62
|
169
|
Zerotorescue@62
|
170 -- Parse bags and show these
|
Zerotorescue@62
|
171 for bagID = 4, 0, -1 do
|
Zerotorescue@62
|
172 for slot = 1, GetContainerNumSlots(bagID) do
|
Zerotorescue@62
|
173 local itemId = addon:GetItemId(GetContainerItemLink(bagID, slot));
|
Zerotorescue@62
|
174
|
Zerotorescue@62
|
175 if itemId then
|
Zerotorescue@62
|
176 if not items[itemId] then
|
Zerotorescue@62
|
177 -- If this item isn't used in any group yet
|
Zerotorescue@62
|
178 ref[itemId] = tblAddItemTemplate;
|
Zerotorescue@62
|
179 else
|
Zerotorescue@62
|
180 -- It's already used in a group, don't show it
|
Zerotorescue@62
|
181 ref[itemId] = nil;
|
Zerotorescue@62
|
182 end
|
Zerotorescue@62
|
183 end
|
Zerotorescue@62
|
184 end
|
Zerotorescue@62
|
185 end
|
Zerotorescue@62
|
186
|
Zerotorescue@62
|
187 if includeTradeSkillItems ~= 500 then
|
Zerotorescue@62
|
188 -- Include tradeskill items
|
Zerotorescue@62
|
189
|
Zerotorescue@62
|
190 -- Go through all trade skills for the profession
|
Zerotorescue@62
|
191 for i = 1, GetNumTradeSkills() do
|
Zerotorescue@62
|
192 -- Try to retrieve the itemlink, this will be nil if current item is a group instead
|
Zerotorescue@62
|
193 local itemLink = GetTradeSkillItemLink(i);
|
Zerotorescue@62
|
194
|
Zerotorescue@62
|
195 if itemLink then
|
Zerotorescue@62
|
196 local itemId = addon:GetItemId(itemLink);
|
Zerotorescue@62
|
197 if not itemId then
|
Zerotorescue@62
|
198 -- If this isn't an item, it can only be an enchant instead
|
Zerotorescue@62
|
199 itemId = tonumber(itemLink:match("|Henchant:([-0-9]+)|h"));
|
Zerotorescue@62
|
200
|
Zerotorescue@62
|
201 itemId = addon.scrollIds[itemId]; -- change enchantIds into scrollIds
|
Zerotorescue@62
|
202 end
|
Zerotorescue@62
|
203
|
Zerotorescue@62
|
204 if itemId then
|
Zerotorescue@62
|
205 local itemLevel = select(4, GetItemInfo(itemId)) or 0;
|
Zerotorescue@62
|
206
|
Zerotorescue@62
|
207 if includeTradeSkillItems == 0 or itemLevel >= includeTradeSkillItems then
|
Zerotorescue@62
|
208 if not items[itemId] then
|
Zerotorescue@62
|
209 -- If this item isn't used in any group yet
|
Zerotorescue@62
|
210 ref[itemId] = tblAddItemTemplate;
|
Zerotorescue@62
|
211 else
|
Zerotorescue@62
|
212 -- It's already used in a group, don't show it
|
Zerotorescue@62
|
213 ref[itemId] = nil;
|
Zerotorescue@62
|
214 end
|
Zerotorescue@62
|
215 end
|
Zerotorescue@62
|
216 else
|
Zerotorescue@62
|
217 addon:Debug("|cffff0000ERROR|r: Couldn't find proper item id for " .. itemLink);
|
Zerotorescue@62
|
218 end
|
Zerotorescue@62
|
219 end
|
Zerotorescue@62
|
220 end
|
Zerotorescue@62
|
221 end
|
Zerotorescue@62
|
222 end
|
Zerotorescue@62
|
223
|
Zerotorescue@62
|
224 local function UpdateRemoveItemList(info)
|
Zerotorescue@62
|
225 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
226
|
Zerotorescue@62
|
227 if not addon.db.profile.groups[groupName].items then
|
Zerotorescue@62
|
228 addon.db.profile.groups[groupName].items = {};
|
Zerotorescue@62
|
229 end
|
Zerotorescue@62
|
230
|
Zerotorescue@62
|
231 local ref = options.args.groups.args[info[2]].args.remove.args.list.args;
|
Zerotorescue@62
|
232
|
Zerotorescue@62
|
233 -- Unset all
|
Zerotorescue@62
|
234 for itemId, _ in pairs(ref) do
|
Zerotorescue@62
|
235 ref[itemId] = nil;
|
Zerotorescue@62
|
236 end
|
Zerotorescue@62
|
237
|
Zerotorescue@62
|
238 -- Parse items in group and show these
|
Zerotorescue@62
|
239 for itemId, _ in pairs(addon.db.profile.groups[groupName].items) do
|
Zerotorescue@62
|
240 ref[itemId] = tblRemoveItemTemplate;
|
Zerotorescue@62
|
241 end
|
Zerotorescue@62
|
242 end
|
Zerotorescue@62
|
243
|
Zerotorescue@62
|
244 -- Default group
|
Zerotorescue@62
|
245 local defaultGroup = {
|
Zerotorescue@62
|
246 order = 0,
|
Zerotorescue@62
|
247 type = "group",
|
Zerotorescue@62
|
248 childGroups = "tab",
|
Zerotorescue@62
|
249 name = function(info)
|
Zerotorescue@62
|
250 local groupId = info[#info];
|
Zerotorescue@62
|
251 if groupIsVirtual[groupId] then
|
Zerotorescue@62
|
252 return ("%s |cfffed000Virtual|r"):format(groupIdToName[groupId]);
|
Zerotorescue@62
|
253 else
|
Zerotorescue@62
|
254 return groupIdToName[groupId];
|
Zerotorescue@62
|
255 end
|
Zerotorescue@62
|
256 end,
|
Zerotorescue@62
|
257 desc = function(info)
|
Zerotorescue@62
|
258 local groupId = info[#info];
|
Zerotorescue@62
|
259 if groupIsVirtual[groupId] then
|
Zerotorescue@62
|
260 return "This is a virtual group, you can use it to override the defaults for other groups.";
|
Zerotorescue@62
|
261 end
|
Zerotorescue@62
|
262 end,
|
Zerotorescue@62
|
263 args = {
|
Zerotorescue@62
|
264 general = {
|
Zerotorescue@62
|
265 order = 10,
|
Zerotorescue@62
|
266 type = "group",
|
Zerotorescue@62
|
267 name = "General",
|
Zerotorescue@62
|
268 desc = "Change the general settings for just this group.",
|
Zerotorescue@62
|
269 args = {
|
Zerotorescue@62
|
270 general = {
|
Zerotorescue@62
|
271 order = 0,
|
Zerotorescue@62
|
272 type = "group",
|
Zerotorescue@62
|
273 inline = true,
|
Zerotorescue@62
|
274 name = "General",
|
Zerotorescue@62
|
275 set = SetOption,
|
Zerotorescue@62
|
276 get = GetOption,
|
Zerotorescue@62
|
277 disabled = GetDisabled,
|
Zerotorescue@62
|
278 args = {
|
Zerotorescue@62
|
279 description = {
|
Zerotorescue@62
|
280 order = 0,
|
Zerotorescue@62
|
281 type = "description",
|
Zerotorescue@62
|
282 name = function(info)
|
Zerotorescue@62
|
283 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
284
|
Zerotorescue@62
|
285 local t = "Here you can set general settings for the currently selected group. If you do not wish to override a setting, the default setting specified in the general group will be used.\n\n";
|
Zerotorescue@62
|
286
|
Zerotorescue@62
|
287 local currentAddon, selectedAddonName = addon:GetItemCountAddon(groupName);
|
Zerotorescue@62
|
288 local preferedAddon = addon:GetOptionByKey(groupName, "itemCountAddon");
|
Zerotorescue@62
|
289
|
Zerotorescue@62
|
290 if currentAddon then
|
Zerotorescue@62
|
291 --GetCharacterCount
|
Zerotorescue@62
|
292 --addon.supportedAddons.itemCount[selectedExternalAddon]
|
Zerotorescue@62
|
293 t = t .. "Currently using |cfffed000" .. selectedAddonName .. "|r as your item count addon. This addon is " .. ((currentAddon.IsEnabled() and "|cff00ff00enabled|r") or "|cffff0000disabled|r") .. ".";
|
Zerotorescue@62
|
294
|
Zerotorescue@62
|
295 if currentAddon.GetTotalCount and currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
296 t = t .. " This addon supports |cfffed000both total as local|r item counts.";
|
Zerotorescue@62
|
297 elseif currentAddon.GetTotalCount then
|
Zerotorescue@62
|
298 t = t .. " This addon supports |cfffed000only total|r item counts.";
|
Zerotorescue@62
|
299 elseif currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
300 t = t .. " This addon supports |cfffed000only local|r item counts.";
|
Zerotorescue@62
|
301 end
|
Zerotorescue@62
|
302
|
Zerotorescue@62
|
303 if preferedAddon ~= selectedAddonName then
|
Zerotorescue@62
|
304 t = t .. "\n\n|cffff0000You have selected |cfffed000" .. preferedAddon .. "|r|cffff0000 as your item count addon, but this appears to be disabled and thus a random alternative was selected.|r";
|
Zerotorescue@62
|
305 end
|
Zerotorescue@62
|
306 end
|
Zerotorescue@62
|
307
|
Zerotorescue@62
|
308 return t;
|
Zerotorescue@62
|
309 end,
|
Zerotorescue@62
|
310 },
|
Zerotorescue@62
|
311 header = {
|
Zerotorescue@62
|
312 order = 5,
|
Zerotorescue@62
|
313 type = "header",
|
Zerotorescue@62
|
314 name = "",
|
Zerotorescue@62
|
315 },
|
Zerotorescue@62
|
316 overrideAuctionPricingAddon = {
|
Zerotorescue@62
|
317 order = 9,
|
Zerotorescue@62
|
318 type = "toggle",
|
Zerotorescue@62
|
319 name = "Override pricing addon",
|
Zerotorescue@62
|
320 desc = "Allows you to override the pricing addon setting for this group.",
|
Zerotorescue@62
|
321 arg = "auctionPricingAddon",
|
Zerotorescue@62
|
322 },
|
Zerotorescue@62
|
323 auctionPricingAddon = {
|
Zerotorescue@62
|
324 order = 10,
|
Zerotorescue@62
|
325 type = "select",
|
Zerotorescue@62
|
326 name = "Prefered pricing addon",
|
Zerotorescue@62
|
327 desc = "Select the addon you prefer data for this group to be retrieved from. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
328 values = function()
|
Zerotorescue@62
|
329 local temp = {};
|
Zerotorescue@62
|
330 for name, value in pairs(addon.supportedAddons.auctionPricing) do
|
Zerotorescue@62
|
331 temp[name] = name;
|
Zerotorescue@62
|
332 end
|
Zerotorescue@62
|
333
|
Zerotorescue@62
|
334 return temp;
|
Zerotorescue@62
|
335 end,
|
Zerotorescue@62
|
336 set = function(info, value)
|
Zerotorescue@62
|
337 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
338 local optionName = info[#info];
|
Zerotorescue@62
|
339
|
Zerotorescue@62
|
340 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
341
|
Zerotorescue@62
|
342 if addon.supportedAddons.auctionPricing[value].OnSelect then
|
Zerotorescue@62
|
343 addon.supportedAddons.auctionPricing[value].OnSelect();
|
Zerotorescue@62
|
344 end
|
Zerotorescue@62
|
345 end,
|
Zerotorescue@62
|
346 arg = "overrideAuctionPricingAddon",
|
Zerotorescue@62
|
347 },
|
Zerotorescue@62
|
348 overrideItemCountAddon = {
|
Zerotorescue@62
|
349 order = 19,
|
Zerotorescue@62
|
350 type = "toggle",
|
Zerotorescue@62
|
351 name = "Override item count addon",
|
Zerotorescue@62
|
352 desc = "Allows you to override the item count addon setting for this group.",
|
Zerotorescue@62
|
353 arg = "itemCountAddon",
|
Zerotorescue@62
|
354 },
|
Zerotorescue@62
|
355 itemCountAddon = {
|
Zerotorescue@62
|
356 order = 20,
|
Zerotorescue@62
|
357 type = "select",
|
Zerotorescue@62
|
358 name = "Prefered item count addon",
|
Zerotorescue@62
|
359 desc = "Select the addon you prefer data for this group to be retrieved from. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
360 values = function()
|
Zerotorescue@62
|
361 local temp = {};
|
Zerotorescue@62
|
362 for name, value in pairs(addon.supportedAddons.itemCount) do
|
Zerotorescue@62
|
363 temp[name] = name;
|
Zerotorescue@62
|
364 end
|
Zerotorescue@62
|
365
|
Zerotorescue@62
|
366 return temp;
|
Zerotorescue@62
|
367 end,
|
Zerotorescue@62
|
368 set = function(info, value)
|
Zerotorescue@62
|
369 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
370 local optionName = info[#info];
|
Zerotorescue@62
|
371
|
Zerotorescue@62
|
372 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
373
|
Zerotorescue@62
|
374 if addon.supportedAddons.itemCount[value].OnSelect then
|
Zerotorescue@62
|
375 addon.supportedAddons.itemCount[value].OnSelect();
|
Zerotorescue@62
|
376 end
|
Zerotorescue@62
|
377 end,
|
Zerotorescue@62
|
378 arg = "overrideItemCountAddon",
|
Zerotorescue@62
|
379 },
|
Zerotorescue@62
|
380 overrideCraftingAddon = {
|
Zerotorescue@62
|
381 order = 29,
|
Zerotorescue@62
|
382 type = "toggle",
|
Zerotorescue@62
|
383 name = "Override crafting addon",
|
Zerotorescue@62
|
384 desc = "Allows you to override the crafting addon setting for this group.",
|
Zerotorescue@62
|
385 arg = "craftingAddon",
|
Zerotorescue@62
|
386 },
|
Zerotorescue@62
|
387 craftingAddon = {
|
Zerotorescue@62
|
388 order = 30,
|
Zerotorescue@62
|
389 type = "select",
|
Zerotorescue@62
|
390 name = "Prefered crafting addon",
|
Zerotorescue@62
|
391 desc = "Select the addon you prefer data from this group to be queued into. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
392 values = function()
|
Zerotorescue@62
|
393 local temp = {};
|
Zerotorescue@62
|
394 for name, value in pairs(addon.supportedAddons.crafting) do
|
Zerotorescue@62
|
395 temp[name] = name;
|
Zerotorescue@62
|
396 end
|
Zerotorescue@62
|
397
|
Zerotorescue@62
|
398 return temp;
|
Zerotorescue@62
|
399 end,
|
Zerotorescue@62
|
400 set = function(info, value)
|
Zerotorescue@62
|
401 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
402 local optionName = info[#info];
|
Zerotorescue@62
|
403
|
Zerotorescue@62
|
404 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
405
|
Zerotorescue@62
|
406 if addon.supportedAddons.crafting[value].OnSelect then
|
Zerotorescue@62
|
407 addon.supportedAddons.crafting[value].OnSelect();
|
Zerotorescue@62
|
408 end
|
Zerotorescue@62
|
409 end,
|
Zerotorescue@62
|
410 arg = "overrideCraftingAddon",
|
Zerotorescue@62
|
411 },
|
Zerotorescue@62
|
412 overrideLocalItemData = {
|
Zerotorescue@62
|
413 order = 39,
|
Zerotorescue@62
|
414 type = "toggle",
|
Zerotorescue@62
|
415 name = "Override local item data",
|
Zerotorescue@62
|
416 desc = "Allows you to override the local item data setting for this group.",
|
Zerotorescue@62
|
417 arg = "localItemData",
|
Zerotorescue@62
|
418 },
|
Zerotorescue@62
|
419 localItemData = {
|
Zerotorescue@62
|
420 order = 40,
|
Zerotorescue@62
|
421 type = "multiselect",
|
Zerotorescue@62
|
422 name = "Include in local item data",
|
Zerotorescue@62
|
423 desc = "Select which data should be included in the local item data.",
|
Zerotorescue@62
|
424 values = {
|
Zerotorescue@62
|
425 ["Bag"] = "Bag",
|
Zerotorescue@62
|
426 ["Bank"] = "Bank",
|
Zerotorescue@62
|
427 ["Auction House"] = "Auction House",
|
Zerotorescue@62
|
428 ["Mailbox"] = "Mailbox",
|
Zerotorescue@62
|
429 },
|
Zerotorescue@62
|
430 get = GetMultiOption,
|
Zerotorescue@65
|
431 dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead.
|
Zerotorescue@62
|
432 arg = "overrideLocalItemData",
|
Zerotorescue@62
|
433 },
|
Zerotorescue@62
|
434 virtualGroup = {
|
Zerotorescue@62
|
435 order = 50,
|
Zerotorescue@62
|
436 type = "select",
|
Zerotorescue@62
|
437 name = "Use virtual group settings",
|
Zerotorescue@62
|
438 desc = "Use the settings from a virtual group before using the general defaults.\n\n|cffff9933This is an advanced option, you will probably not need it unless you manage a lot of groups.|r\n\n|cfffed000Off|r: Use the overridden options in this group and then the defaults.\n\n|cfffed000On|r: Use the overridden options in this group, then the ones in the selected virtual group and then the defaults.",
|
Zerotorescue@62
|
439 values = function(info)
|
Zerotorescue@62
|
440 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
441
|
Zerotorescue@62
|
442 local temp = {};
|
Zerotorescue@62
|
443
|
Zerotorescue@62
|
444 temp[""] = "";
|
Zerotorescue@62
|
445 for name, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
446 if values.isVirtual and name ~= groupName then
|
Zerotorescue@62
|
447 temp[name] = name;
|
Zerotorescue@62
|
448 end
|
Zerotorescue@62
|
449 end
|
Zerotorescue@62
|
450
|
Zerotorescue@62
|
451 return temp;
|
Zerotorescue@62
|
452 end,
|
Zerotorescue@62
|
453 set = function(info, value)
|
Zerotorescue@62
|
454 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
455 local optionName = info[#info];
|
Zerotorescue@62
|
456
|
Zerotorescue@62
|
457 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
458 end,
|
Zerotorescue@62
|
459 disabled = false,
|
Zerotorescue@62
|
460 },
|
Zerotorescue@62
|
461 },
|
Zerotorescue@62
|
462 },
|
Zerotorescue@62
|
463 minimumStock = {
|
Zerotorescue@62
|
464 order = 10,
|
Zerotorescue@62
|
465 type = "group",
|
Zerotorescue@62
|
466 inline = true,
|
Zerotorescue@62
|
467 name = "Minimum stock",
|
Zerotorescue@62
|
468 set = SetOption,
|
Zerotorescue@62
|
469 get = GetOption,
|
Zerotorescue@62
|
470 disabled = GetDisabled,
|
Zerotorescue@62
|
471 args = {
|
Zerotorescue@62
|
472 description = {
|
Zerotorescue@62
|
473 order = 0,
|
Zerotorescue@62
|
474 type = "description",
|
Zerotorescue@62
|
475 name = "Here you can specify the minimum amount of items you wish to keep in stock and related settings for the currently selected group. Please note the values entered here do not affect the queued quantities, you must set settings for that in the area below.",
|
Zerotorescue@62
|
476 },
|
Zerotorescue@62
|
477 header = {
|
Zerotorescue@62
|
478 order = 5,
|
Zerotorescue@62
|
479 type = "header",
|
Zerotorescue@62
|
480 name = "",
|
Zerotorescue@62
|
481 },
|
Zerotorescue@62
|
482
|
Zerotorescue@62
|
483 overrideMinLocalStock = {
|
Zerotorescue@62
|
484 order = 10,
|
Zerotorescue@62
|
485 type = "toggle",
|
Zerotorescue@62
|
486 name = "Override min local stock",
|
Zerotorescue@62
|
487 desc = "Allows you to override the minimum local stock setting for this group.",
|
Zerotorescue@62
|
488 arg = "minLocalStock",
|
Zerotorescue@62
|
489 },
|
Zerotorescue@62
|
490 minLocalStock = {
|
Zerotorescue@62
|
491 order = 11,
|
Zerotorescue@62
|
492 type = "range",
|
Zerotorescue@62
|
493 min = 0,
|
Zerotorescue@62
|
494 max = 100000,
|
Zerotorescue@62
|
495 softMax = 100,
|
Zerotorescue@62
|
496 step = 1,
|
Zerotorescue@62
|
497 name = "Minimum local stock",
|
Zerotorescue@62
|
498 desc = "You can manually enter a value between 100 and 100.000 in the text box below if the provided range is insufficient.",
|
Zerotorescue@62
|
499 arg = "overrideMinLocalStock",
|
Zerotorescue@62
|
500 },
|
Zerotorescue@62
|
501 overrideAlertBelowLocalMinimum = {
|
Zerotorescue@62
|
502 order = 15,
|
Zerotorescue@62
|
503 type = "toggle",
|
Zerotorescue@62
|
504 name = "Override local minimum alert",
|
Zerotorescue@62
|
505 desc = "Allows you to override wether an alert should be shown when an item in this group gets below the local minimum stock threshold.",
|
Zerotorescue@62
|
506 arg = "alertBelowLocalMinimum",
|
Zerotorescue@62
|
507 },
|
Zerotorescue@62
|
508 alertBelowLocalMinimum = {
|
Zerotorescue@62
|
509 order = 16,
|
Zerotorescue@62
|
510 type = "toggle",
|
Zerotorescue@62
|
511 name = "Alert when below local minimum (NYI)",
|
Zerotorescue@62
|
512 desc = "Show an alert when an item in this group gets below the local minimum stock threshold.",
|
Zerotorescue@62
|
513 arg = "overrideAlertBelowLocalMinimum",
|
Zerotorescue@62
|
514 },
|
Zerotorescue@62
|
515
|
Zerotorescue@62
|
516 overrideMinGlobalStock = {
|
Zerotorescue@62
|
517 order = 20,
|
Zerotorescue@62
|
518 type = "toggle",
|
Zerotorescue@62
|
519 name = "Override min global stock",
|
Zerotorescue@62
|
520 desc = "Allows you to override the minimum global stock setting for this group.",
|
Zerotorescue@62
|
521 arg = "minGlobalStock",
|
Zerotorescue@62
|
522 },
|
Zerotorescue@62
|
523 minGlobalStock = {
|
Zerotorescue@62
|
524 order = 21,
|
Zerotorescue@62
|
525 type = "range",
|
Zerotorescue@62
|
526 min = 0,
|
Zerotorescue@62
|
527 max = 100000,
|
Zerotorescue@62
|
528 softMax = 100,
|
Zerotorescue@62
|
529 step = 1,
|
Zerotorescue@62
|
530 name = "Minimum global stock",
|
Zerotorescue@62
|
531 desc = "You can manually enter a value between 100 and 100.000 in the text box below if the provided range is insufficient.",
|
Zerotorescue@62
|
532 arg = "overrideMinGlobalStock",
|
Zerotorescue@62
|
533 },
|
Zerotorescue@62
|
534 overrideAlertBelowGlobalMinimum = {
|
Zerotorescue@62
|
535 order = 25,
|
Zerotorescue@62
|
536 type = "toggle",
|
Zerotorescue@62
|
537 name = "Override global minimum alert",
|
Zerotorescue@62
|
538 desc = "Allows you to override wether an alert should be shown when an item in this group gets below the global minimum stock threshold.",
|
Zerotorescue@62
|
539 arg = "alertBelowGlobalMinimum",
|
Zerotorescue@62
|
540 },
|
Zerotorescue@62
|
541 alertBelowGlobalMinimum = {
|
Zerotorescue@62
|
542 order = 26,
|
Zerotorescue@62
|
543 type = "toggle",
|
Zerotorescue@62
|
544 name = "Alert when below global minimum (NYI)",
|
Zerotorescue@62
|
545 desc = "Show an alert when an item in this group gets below the global minimum stock threshold.",
|
Zerotorescue@62
|
546 arg = "overrideAlertBelowGlobalMinimum",
|
Zerotorescue@62
|
547 },
|
Zerotorescue@62
|
548
|
Zerotorescue@62
|
549 overrideSummaryThresholdShow = {
|
Zerotorescue@62
|
550 order = 34,
|
Zerotorescue@62
|
551 type = "toggle",
|
Zerotorescue@62
|
552 name = "Override summary showing",
|
Zerotorescue@62
|
553 desc = "Allows you to override when this group should appear in the summary.",
|
Zerotorescue@62
|
554 arg = "summaryThresholdShow",
|
Zerotorescue@62
|
555 },
|
Zerotorescue@62
|
556 summaryThresholdShow = {
|
Zerotorescue@62
|
557 order = 35,
|
Zerotorescue@62
|
558 type = "range",
|
Zerotorescue@62
|
559 min = 0,
|
Zerotorescue@62
|
560 max = 10,
|
Zerotorescue@62
|
561 softMax = 100,
|
Zerotorescue@62
|
562 step = 0.05,
|
Zerotorescue@62
|
563 isPercent = true,
|
Zerotorescue@62
|
564 name = "Show in summary when below",
|
Zerotorescue@62
|
565 desc = "Show items in the summary when below the specified percentage of the minimum stock.\n\nYou can manually enter a value between 1.000% and 10.000% in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
566 arg = "overrideSummaryThresholdShow",
|
Zerotorescue@62
|
567 },
|
Zerotorescue@62
|
568 overrideTrackAtCharacters = {
|
Zerotorescue@62
|
569 order = 39,
|
Zerotorescue@62
|
570 type = "toggle",
|
Zerotorescue@62
|
571 name = "Override track at",
|
Zerotorescue@62
|
572 desc = "Allows you to override at which characters items in this group should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
573 arg = "trackAtCharacters",
|
Zerotorescue@62
|
574 },
|
Zerotorescue@62
|
575 trackAtCharacters = {
|
Zerotorescue@62
|
576 order = 40,
|
Zerotorescue@62
|
577 type = "multiselect",
|
Zerotorescue@62
|
578 name = "Track at",
|
Zerotorescue@62
|
579 desc = "Select at which characters this should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
580 values = function()
|
Zerotorescue@62
|
581 local temp = {};
|
Zerotorescue@62
|
582 for charName in pairs(addon.db.factionrealm.characters) do
|
Zerotorescue@62
|
583 temp[charName] = charName;
|
Zerotorescue@62
|
584 end
|
Zerotorescue@62
|
585
|
Zerotorescue@62
|
586 return temp;
|
Zerotorescue@62
|
587 end,
|
Zerotorescue@62
|
588 get = GetMultiOption,
|
Zerotorescue@65
|
589 dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead.
|
Zerotorescue@62
|
590 arg = "overrideTrackAtCharacters",
|
Zerotorescue@62
|
591 },
|
Zerotorescue@62
|
592 },
|
Zerotorescue@62
|
593 },
|
Zerotorescue@62
|
594 refill = {
|
Zerotorescue@62
|
595 order = 20,
|
Zerotorescue@62
|
596 type = "group",
|
Zerotorescue@62
|
597 inline = true,
|
Zerotorescue@62
|
598 name = "Replenishing stock",
|
Zerotorescue@62
|
599 set = SetOption,
|
Zerotorescue@62
|
600 get = GetOption,
|
Zerotorescue@62
|
601 disabled = GetDisabled,
|
Zerotorescue@62
|
602 args = {
|
Zerotorescue@62
|
603 description = {
|
Zerotorescue@62
|
604 order = 0,
|
Zerotorescue@62
|
605 type = "description",
|
Zerotorescue@62
|
606 name = function(info)
|
Zerotorescue@62
|
607 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
608 local r = "Here you can specify the amount of items to which you wish to restock when you are collecting new items for the currently selected group. This may be higher than the minimum stock.\n\n";
|
Zerotorescue@62
|
609
|
Zerotorescue@62
|
610 r = r .. "When restocking the target amount is |cfffed000" .. addon:GetOptionByKey(groupName, "restockTarget") .. "|r of every item. Not queueing craftable items when only missing |cfffed000" .. floor( addon:GetOptionByKey(groupName, "minCraftingQueue") * addon:GetOptionByKey(groupName, "restockTarget") ) .. "|r (|cfffed000" .. ( addon:GetOptionByKey(groupName, "minCraftingQueue") * 100 ) .. "%|r) of the restock target and making |cfffed000" .. floor( ( addon:GetOptionByKey(groupName, "bonusQueue") * addon:GetOptionByKey(groupName, "restockTarget") ) + .5 ) .. "|r (|cfffed000" .. ( addon:GetOptionByKey(groupName, "bonusQueue") * 100 ) .. "%|r) extra items when you completely ran out. ";
|
Zerotorescue@62
|
611
|
Zerotorescue@62
|
612 if addon:GetOptionByKey(groupName, "priceThreshold") == 0 then
|
Zerotorescue@62
|
613 r = r .. "Queueing items at |cfffed000any|r auction value.";
|
Zerotorescue@62
|
614 else
|
Zerotorescue@62
|
615 r = r .. "Queueing items worth |cfffed000" .. addon:ReadableMoney(addon:GetOptionByKey(groupName, "priceThreshold")) .. "|r or more.";
|
Zerotorescue@62
|
616 end
|
Zerotorescue@62
|
617
|
Zerotorescue@62
|
618 return r;
|
Zerotorescue@62
|
619 end,
|
Zerotorescue@62
|
620 },
|
Zerotorescue@62
|
621 header = {
|
Zerotorescue@62
|
622 order = 5,
|
Zerotorescue@62
|
623 type = "header",
|
Zerotorescue@62
|
624 name = "",
|
Zerotorescue@62
|
625 },
|
Zerotorescue@62
|
626 overrideRestockTarget = {
|
Zerotorescue@62
|
627 order = 9,
|
Zerotorescue@62
|
628 type = "toggle",
|
Zerotorescue@62
|
629 name = "Override restock target",
|
Zerotorescue@62
|
630 desc = "Allows you to override the restock target setting for this group.",
|
Zerotorescue@62
|
631 arg = "restockTarget",
|
Zerotorescue@62
|
632 },
|
Zerotorescue@62
|
633 restockTarget = {
|
Zerotorescue@62
|
634 order = 10,
|
Zerotorescue@62
|
635 type = "range",
|
Zerotorescue@62
|
636 min = 0,
|
Zerotorescue@62
|
637 max = 100000,
|
Zerotorescue@62
|
638 softMax = 100,
|
Zerotorescue@62
|
639 step = 1,
|
Zerotorescue@62
|
640 name = "Restock target",
|
Zerotorescue@62
|
641 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
642 arg = "overrideRestockTarget",
|
Zerotorescue@62
|
643 },
|
Zerotorescue@62
|
644 overrideMinCraftingQueue = {
|
Zerotorescue@62
|
645 order = 19,
|
Zerotorescue@62
|
646 type = "toggle",
|
Zerotorescue@62
|
647 name = "Override min queue",
|
Zerotorescue@62
|
648 desc = "Allows you to override the minimum craftable items queue setting for this group.",
|
Zerotorescue@62
|
649 arg = "minCraftingQueue",
|
Zerotorescue@62
|
650 },
|
Zerotorescue@62
|
651 minCraftingQueue = {
|
Zerotorescue@62
|
652 order = 20,
|
Zerotorescue@62
|
653 type = "range",
|
Zerotorescue@62
|
654 min = 0,
|
Zerotorescue@62
|
655 max = 1,
|
Zerotorescue@62
|
656 step = 0.01,
|
Zerotorescue@62
|
657 isPercent = true,
|
Zerotorescue@62
|
658 name = "Don't queue if I only miss",
|
Zerotorescue@62
|
659 desc = "Don't add a craftable item to the queue if I only miss this much or less of the restock target.\n\nExample: if your restock target is set to 60 and this is set to 5%, an item won't be queued unless you are missing more than 3 of it.",
|
Zerotorescue@62
|
660 arg = "overrideMinCraftingQueue",
|
Zerotorescue@62
|
661 },
|
Zerotorescue@62
|
662 overrideBonusQueue = {
|
Zerotorescue@62
|
663 order = 29,
|
Zerotorescue@62
|
664 type = "toggle",
|
Zerotorescue@62
|
665 name = "Override bonus queue",
|
Zerotorescue@62
|
666 desc = "Allows you to override the bonus craftable items queue setting for this group.",
|
Zerotorescue@62
|
667 arg = "bonusQueue",
|
Zerotorescue@62
|
668 },
|
Zerotorescue@62
|
669 bonusQueue = {
|
Zerotorescue@62
|
670 order = 30,
|
Zerotorescue@62
|
671 type = "range",
|
Zerotorescue@62
|
672 min = 0,
|
Zerotorescue@62
|
673 max = 10, -- 1000%
|
Zerotorescue@62
|
674 step = 0.01, -- 1%
|
Zerotorescue@62
|
675 isPercent = true,
|
Zerotorescue@62
|
676 name = "Bonus queue",
|
Zerotorescue@62
|
677 desc = "Get additional items when there are none left.\n\nExample: if your restock target is set to 60 and this is set to 10%, you will get 66 items instead of just 60 if you end up with none left while queueing.",
|
Zerotorescue@62
|
678 arg = "overrideBonusQueue",
|
Zerotorescue@62
|
679 },
|
Zerotorescue@62
|
680 overridePriceThreshold = {
|
Zerotorescue@62
|
681 order = 39,
|
Zerotorescue@62
|
682 type = "toggle",
|
Zerotorescue@62
|
683 name = "Override price threshold",
|
Zerotorescue@62
|
684 desc = "Allows you to override the price threshold setting for this group.",
|
Zerotorescue@62
|
685 arg = "priceThreshold",
|
Zerotorescue@62
|
686 },
|
Zerotorescue@62
|
687 priceThreshold = {
|
Zerotorescue@62
|
688 order = 40,
|
Zerotorescue@62
|
689 type = "input",
|
Zerotorescue@62
|
690 name = "Price threshold",
|
Zerotorescue@62
|
691 desc = "Only queue craftable items when they are worth at least this much according to your auction house addon.\n\nSet to 0 to ignore auction prices.",
|
Zerotorescue@62
|
692 validate = function(info, value) return addon:ValidateReadableMoney(info, value); end,
|
Zerotorescue@62
|
693 get = function(i) return addon:ReadableMoney(GetOption(i)); end,
|
Zerotorescue@62
|
694 set = function(i, v) SetOption(i, addon:ReadableMoneyToCopper(v)); end,
|
Zerotorescue@62
|
695 arg = "overridePriceThreshold",
|
Zerotorescue@62
|
696 },
|
Zerotorescue@62
|
697 overrideSummaryHidePriceThreshold = {
|
Zerotorescue@62
|
698 order = 49,
|
Zerotorescue@62
|
699 type = "toggle",
|
Zerotorescue@62
|
700 name = "Override summary showing",
|
Zerotorescue@62
|
701 desc = "Allows you to override if items in this group should be hidden from the summary while their value is below the price threshold.",
|
Zerotorescue@62
|
702 arg = "summaryHidePriceThreshold",
|
Zerotorescue@62
|
703 },
|
Zerotorescue@62
|
704 summaryHidePriceThreshold = {
|
Zerotorescue@62
|
705 order = 50,
|
Zerotorescue@62
|
706 type = "toggle",
|
Zerotorescue@62
|
707 name = "Hide when below threshold",
|
Zerotorescue@62
|
708 desc = "Hide items from the summary when their value is below the set price threshold.",
|
Zerotorescue@62
|
709 arg = "overrideSummaryHidePriceThreshold",
|
Zerotorescue@62
|
710 },
|
Zerotorescue@62
|
711 overrideAlwaysGetAuctionValue = {
|
Zerotorescue@62
|
712 order = 59,
|
Zerotorescue@62
|
713 type = "toggle",
|
Zerotorescue@62
|
714 name = "Override auction value showing",
|
Zerotorescue@62
|
715 desc = "Allows you to override if the auction value of items in this group should be cached and displayed even when the price threshold is set to 0|cffeda55fc|r.",
|
Zerotorescue@62
|
716 arg = "alwaysGetAuctionValue",
|
Zerotorescue@62
|
717 },
|
Zerotorescue@62
|
718 alwaysGetAuctionValue = {
|
Zerotorescue@62
|
719 order = 60,
|
Zerotorescue@62
|
720 type = "toggle",
|
Zerotorescue@62
|
721 name = "Always show auction value",
|
Zerotorescue@62
|
722 desc = "Always cache and show the auction value of items in this group, even if the price threshold is set to 0|cffeda55fc|r.",
|
Zerotorescue@62
|
723 arg = "overrideAlwaysGetAuctionValue",
|
Zerotorescue@62
|
724 },
|
Zerotorescue@62
|
725 },
|
Zerotorescue@62
|
726 },
|
Zerotorescue@62
|
727 },
|
Zerotorescue@62
|
728 },
|
Zerotorescue@62
|
729 group = {
|
Zerotorescue@62
|
730 order = 20,
|
Zerotorescue@62
|
731 type = "group",
|
Zerotorescue@62
|
732 name = "Management",
|
Zerotorescue@62
|
733 desc = "Rename, delete, duplicate or export this group.",
|
Zerotorescue@62
|
734 args = {
|
Zerotorescue@62
|
735 actions = {
|
Zerotorescue@62
|
736 order = 10,
|
Zerotorescue@62
|
737 type = "group",
|
Zerotorescue@62
|
738 name = "Actions",
|
Zerotorescue@62
|
739 inline = true,
|
Zerotorescue@62
|
740 args = {
|
Zerotorescue@62
|
741 rename = {
|
Zerotorescue@62
|
742 order = 10,
|
Zerotorescue@62
|
743 type = "input",
|
Zerotorescue@62
|
744 name = "Rename group - New name",
|
Zerotorescue@62
|
745 desc = "Change the name of this group to something else. You can also use item links here as you wish.",
|
Zerotorescue@62
|
746 validate = ValidateGroupName,
|
Zerotorescue@62
|
747 set = function(info, value)
|
Zerotorescue@62
|
748 local oldGroupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
749
|
Zerotorescue@62
|
750 addon.db.profile.groups[value] = CopyTable(addon.db.profile.groups[oldGroupName]);
|
Zerotorescue@62
|
751 addon.db.profile.groups[oldGroupName] = nil;
|
Zerotorescue@62
|
752
|
Zerotorescue@62
|
753 groupIdToName[info[2]] = value;
|
Zerotorescue@62
|
754 groupIdToName[value] = true;
|
Zerotorescue@62
|
755 groupIdToName[oldGroupName] = nil;
|
Zerotorescue@62
|
756
|
Zerotorescue@62
|
757 mod:FillGroupOptions();
|
Zerotorescue@62
|
758 end,
|
Zerotorescue@62
|
759 get = function(info)
|
Zerotorescue@62
|
760 return groupIdToName[info[2]];
|
Zerotorescue@62
|
761 end,
|
Zerotorescue@62
|
762 },
|
Zerotorescue@62
|
763 duplicate = {
|
Zerotorescue@62
|
764 order = 20,
|
Zerotorescue@62
|
765 type = "input",
|
Zerotorescue@62
|
766 name = "Duplicate group - New name",
|
Zerotorescue@62
|
767 desc = "Duplicate this group. You can also use item links here as you wish.\n\nAll item data will be erased.",
|
Zerotorescue@62
|
768 validate = ValidateGroupName,
|
Zerotorescue@62
|
769 set = function(info, value)
|
Zerotorescue@62
|
770 local oldGroupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
771
|
Zerotorescue@62
|
772 addon.db.profile.groups[value] = CopyTable(addon.db.profile.groups[oldGroupName]);
|
Zerotorescue@62
|
773
|
Zerotorescue@62
|
774 -- Reset item data (duplicate items me no want)
|
Zerotorescue@62
|
775 addon.db.profile.groups[value].items = nil;
|
Zerotorescue@62
|
776
|
Zerotorescue@62
|
777 mod:FillGroupOptions();
|
Zerotorescue@62
|
778 end,
|
Zerotorescue@62
|
779 get = false,
|
Zerotorescue@62
|
780 },
|
Zerotorescue@62
|
781 delete = {
|
Zerotorescue@62
|
782 order = 30,
|
Zerotorescue@62
|
783 type = "execute",
|
Zerotorescue@62
|
784 name = "Delete group",
|
Zerotorescue@62
|
785 desc = "Delete the currently selected group.",
|
Zerotorescue@62
|
786 confirm = true,
|
Zerotorescue@62
|
787 confirmText = "Are you sure you wish to |cffff0000DELETE|r this group? This action is not reversable!",
|
Zerotorescue@62
|
788 func = function(info)
|
Zerotorescue@62
|
789 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
790
|
Zerotorescue@62
|
791 addon.db.profile.groups[groupName] = nil;
|
Zerotorescue@62
|
792
|
Zerotorescue@62
|
793 mod:FillGroupOptions();
|
Zerotorescue@62
|
794 end,
|
Zerotorescue@62
|
795 },
|
Zerotorescue@62
|
796 },
|
Zerotorescue@62
|
797 },
|
Zerotorescue@62
|
798 export = {
|
Zerotorescue@62
|
799 order = 40,
|
Zerotorescue@62
|
800 type = "group",
|
Zerotorescue@62
|
801 name = "Export",
|
Zerotorescue@62
|
802 inline = true,
|
Zerotorescue@62
|
803 args = {
|
Zerotorescue@62
|
804 input = {
|
Zerotorescue@62
|
805 order = 10,
|
Zerotorescue@62
|
806 type = "input",
|
Zerotorescue@62
|
807 multiline = true,
|
Zerotorescue@62
|
808 name = "Group data",
|
Zerotorescue@62
|
809 width = "full",
|
Zerotorescue@62
|
810 desc = "Export the group data for the currently selected group. Press CTRL-A to select all and CTRL-C to copy the text.",
|
Zerotorescue@62
|
811 set = false,
|
Zerotorescue@62
|
812 get = function(info)
|
Zerotorescue@62
|
813 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
814
|
Zerotorescue@62
|
815 -- We want to include the group name, so we copy the table then set another value
|
Zerotorescue@62
|
816 local temp = CopyTable(addon.db.profile.groups[groupName]);
|
Zerotorescue@62
|
817 temp.name = groupName;
|
Zerotorescue@62
|
818 temp.trackAtCharacters = nil;
|
Zerotorescue@62
|
819 temp.overrideTrackAtCharacters = nil;
|
Zerotorescue@62
|
820
|
Zerotorescue@62
|
821 if not AceSerializer then
|
Zerotorescue@62
|
822 AceSerializer = LibStub("AceSerializer-3.0");
|
Zerotorescue@62
|
823 end
|
Zerotorescue@62
|
824
|
Zerotorescue@62
|
825 return AceSerializer:Serialize(temp);
|
Zerotorescue@62
|
826 end,
|
Zerotorescue@62
|
827 },
|
Zerotorescue@62
|
828 },
|
Zerotorescue@62
|
829 },
|
Zerotorescue@62
|
830 },
|
Zerotorescue@62
|
831 },
|
Zerotorescue@62
|
832 add = {
|
Zerotorescue@62
|
833 order = 30,
|
Zerotorescue@62
|
834 type = "group",
|
Zerotorescue@62
|
835 name = "Add items",
|
Zerotorescue@62
|
836 desc = "Add new items to this group.",
|
Zerotorescue@62
|
837 hidden = function(info) return groupIsVirtual[info[2]]; end,
|
Zerotorescue@62
|
838 args = {
|
Zerotorescue@62
|
839 singleAdd = {
|
Zerotorescue@62
|
840 order = 10,
|
Zerotorescue@62
|
841 type = "group",
|
Zerotorescue@62
|
842 inline = true,
|
Zerotorescue@62
|
843 name = "Add items",
|
Zerotorescue@62
|
844 args = {
|
Zerotorescue@62
|
845 help = {
|
Zerotorescue@62
|
846 order = 10,
|
Zerotorescue@62
|
847 type = "description",
|
Zerotorescue@62
|
848 name = "You can add a single item to this group at a time by pasting the item-id or an item-link in the field to the left or you can also import multiple items at once by pasting exported item data in the field to the right. Scroll further down to add items based on your inventory contents.",
|
Zerotorescue@62
|
849 },
|
Zerotorescue@62
|
850 itemLink = {
|
Zerotorescue@62
|
851 order = 20,
|
Zerotorescue@62
|
852 type = "input",
|
Zerotorescue@62
|
853 name = "Single item add (item-link or item-id)",
|
Zerotorescue@62
|
854 desc = "Shift-click an item-link or enter an item-id to add the related item to this group. You can only add one item link or item id at a time.",
|
Zerotorescue@62
|
855 validate = function(info, value)
|
Zerotorescue@62
|
856 -- If the value is empty we'll allow passing to clear the carret
|
Zerotorescue@62
|
857 if value == "" then return true; end
|
Zerotorescue@62
|
858
|
Zerotorescue@62
|
859 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
860
|
Zerotorescue@76
|
861 local itemId = (addon:GetItemId(string.trim(value)) or tonumber(string.trim(value)));
|
Zerotorescue@76
|
862
|
Zerotorescue@76
|
863 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
864
|
Zerotorescue@62
|
865 if not itemId then
|
Zerotorescue@76
|
866 return "This is not a valid item link or id.";
|
Zerotorescue@76
|
867 elseif itemData:InGroup() then
|
Zerotorescue@76
|
868 return ("This item is already in the group |cfffed000%s|r."):format(itemData:InGroup());
|
Zerotorescue@62
|
869 end
|
Zerotorescue@62
|
870
|
Zerotorescue@62
|
871 return true;
|
Zerotorescue@62
|
872 end,
|
Zerotorescue@62
|
873 set = function(info, value)
|
Zerotorescue@62
|
874 if value and value ~= "" then
|
Zerotorescue@62
|
875 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
876
|
Zerotorescue@76
|
877 local itemId = (addon:GetItemId(string.trim(value)) or tonumber(string.trim(value)));
|
Zerotorescue@62
|
878
|
Zerotorescue@76
|
879 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
880
|
Zerotorescue@76
|
881 if itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
882 addon.Print(("Added %s to the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Green);
|
Zerotorescue@76
|
883
|
Zerotorescue@76
|
884 if AceConfigRegistry then
|
Zerotorescue@76
|
885 -- Now rebuild the list
|
Zerotorescue@76
|
886 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
887 end
|
Zerotorescue@76
|
888 else
|
Zerotorescue@76
|
889 addon.Print(("%s is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ), addon.Colors.Red);
|
Zerotorescue@76
|
890 end
|
Zerotorescue@62
|
891 end
|
Zerotorescue@62
|
892 end,
|
Zerotorescue@62
|
893 get = false,
|
Zerotorescue@62
|
894 },
|
Zerotorescue@62
|
895 importItemData = {
|
Zerotorescue@62
|
896 order = 30,
|
Zerotorescue@62
|
897 type = "input",
|
Zerotorescue@62
|
898 name = "Import item data",
|
Zerotorescue@62
|
899 desc = "Import item data from an exported item data-string. Any items already grouped will be skipped.",
|
Zerotorescue@62
|
900 set = function(info, value)
|
Zerotorescue@62
|
901 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
902
|
Zerotorescue@62
|
903 local allItemIds = { string.split(";", value or "") };
|
Zerotorescue@62
|
904
|
Zerotorescue@62
|
905 for _, value in pairs(allItemIds) do
|
Zerotorescue@62
|
906 local itemId = tonumber(value);
|
Zerotorescue@62
|
907
|
Zerotorescue@76
|
908 if itemId then
|
Zerotorescue@76
|
909 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
910
|
Zerotorescue@76
|
911 if itemData:InGroup() then
|
Zerotorescue@76
|
912 addon.Print(("Skipping %s (#%d) as it is already in the group |cfffed000%s|r."):format(itemData.link or "Unknown", itemId, itemData:InGroup()), addon.Colors.Red);
|
Zerotorescue@76
|
913 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
914 addon.Print(("Added %s to the group |cfffed000%s|r."):format(itemData.link or unknownItemName:format(itemId), groupName), addon.Colors.Green);
|
Zerotorescue@76
|
915 end
|
Zerotorescue@62
|
916 else
|
Zerotorescue@76
|
917 addon.Print(("\"%s\" is not a number."):format(value), addon.Colors.Red);
|
Zerotorescue@62
|
918 end
|
Zerotorescue@62
|
919 end
|
Zerotorescue@76
|
920
|
Zerotorescue@76
|
921 if AceConfigRegistry then
|
Zerotorescue@76
|
922 -- Now rebuild the list
|
Zerotorescue@76
|
923 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
924 end
|
Zerotorescue@62
|
925 end,
|
Zerotorescue@62
|
926 get = false,
|
Zerotorescue@62
|
927 },
|
Zerotorescue@62
|
928 importPremadeData = {
|
Zerotorescue@62
|
929 order = 40,
|
Zerotorescue@62
|
930 type = "select",
|
Zerotorescue@62
|
931 name = "Import premade data",
|
Zerotorescue@62
|
932 desc = "Import item data from a premade item-group. Any items already grouped will be skipped.",
|
Zerotorescue@62
|
933 values = function()
|
Zerotorescue@62
|
934 local temp = {};
|
Zerotorescue@62
|
935 for key, group in pairs(addon.defaultGroups) do
|
Zerotorescue@62
|
936 temp[key] = key;
|
Zerotorescue@62
|
937 end
|
Zerotorescue@62
|
938
|
Zerotorescue@62
|
939 return temp;
|
Zerotorescue@62
|
940 end,
|
Zerotorescue@62
|
941 set = function(info, value)
|
Zerotorescue@62
|
942 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
943
|
Zerotorescue@62
|
944 print(("Importing items from the premade group \"|cfffed000%s|r\"."):format(value));
|
Zerotorescue@62
|
945
|
Zerotorescue@62
|
946 -- Remember we imported this group and it's version so if it is ever changed, people can be notified
|
Zerotorescue@62
|
947 if not addon.db.profile.groups[groupName].premadeGroups then
|
Zerotorescue@62
|
948 addon.db.profile.groups[groupName].premadeGroups = {};
|
Zerotorescue@62
|
949 end
|
Zerotorescue@62
|
950 addon.db.profile.groups[groupName].premadeGroups[value] = addon.defaultGroups[value].version;
|
Zerotorescue@62
|
951
|
Zerotorescue@62
|
952 for itemId, version in pairs(addon.defaultGroups[value].items) do
|
Zerotorescue@62
|
953 if version > 0 then
|
Zerotorescue@76
|
954 -- Sanity check
|
Zerotorescue@62
|
955 itemId = itemId and tonumber(itemId);
|
Zerotorescue@62
|
956
|
Zerotorescue@76
|
957 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
958
|
Zerotorescue@62
|
959 if not itemId then
|
Zerotorescue@76
|
960 addon.Print(("\"|cfffed000%s|r\" is not a number."):format(value), addon.Colors.Red);
|
Zerotorescue@76
|
961 elseif itemData:InGroup() then
|
Zerotorescue@76
|
962 addon.Print(("Skipping |cfffed000%s|r as it is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ), addon.Colors.Red);
|
Zerotorescue@76
|
963 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
964 addon.Print(("Added %s to the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), groupName ), addon.Colors.Green);
|
Zerotorescue@62
|
965 end
|
Zerotorescue@62
|
966 end
|
Zerotorescue@62
|
967 end
|
Zerotorescue@76
|
968
|
Zerotorescue@76
|
969 if AceConfigRegistry then
|
Zerotorescue@76
|
970 -- Now rebuild the list
|
Zerotorescue@76
|
971 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
972 end
|
Zerotorescue@62
|
973 end,
|
Zerotorescue@62
|
974 get = false,
|
Zerotorescue@62
|
975 },
|
Zerotorescue@62
|
976 },
|
Zerotorescue@62
|
977 },
|
Zerotorescue@62
|
978 massAdd = {
|
Zerotorescue@62
|
979 order = 20,
|
Zerotorescue@62
|
980 type = "group",
|
Zerotorescue@62
|
981 inline = true,
|
Zerotorescue@62
|
982 name = "Mass add",
|
Zerotorescue@62
|
983 args = {
|
Zerotorescue@62
|
984 help = {
|
Zerotorescue@62
|
985 order = 10,
|
Zerotorescue@62
|
986 type = "description",
|
Zerotorescue@62
|
987 name = "Click the items you wish to add to this group or add multiple of these items at once by providing a name filter in the field below.",
|
Zerotorescue@62
|
988 },
|
Zerotorescue@62
|
989 massAdd = {
|
Zerotorescue@62
|
990 order = 20,
|
Zerotorescue@62
|
991 type = "input",
|
Zerotorescue@62
|
992 name = "Add all items matching...",
|
Zerotorescue@62
|
993 desc = "Add every item in your inventory matching the name entered in this field. If you enter \"Glyph\" as a filter, any items in your inventory containing this in their name will be added to this group.",
|
Zerotorescue@62
|
994 set = function(info, value)
|
Zerotorescue@62
|
995 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
996
|
Zerotorescue@62
|
997 if not value then return; end
|
Zerotorescue@62
|
998
|
Zerotorescue@62
|
999 value = value:lower();
|
Zerotorescue@62
|
1000
|
Zerotorescue@62
|
1001 local ref = options.args.groups.args[info[2]].args.add.args.list.args;
|
Zerotorescue@62
|
1002
|
Zerotorescue@62
|
1003 for itemId, test in pairs(ref) do
|
Zerotorescue@62
|
1004 if test then
|
Zerotorescue@76
|
1005 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
1006
|
Zerotorescue@76
|
1007 if itemData.name:lower():find(value) then
|
Zerotorescue@76
|
1008 if itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
1009 addon.Print(("Added %s to the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Green);
|
Zerotorescue@76
|
1010 else
|
Zerotorescue@76
|
1011 addon.Print(("Couldn't add %s because it is already in a group."):format(itemData.link or unknownItemName:format(itemId)), addon.Colors.Red);
|
Zerotorescue@62
|
1012 end
|
Zerotorescue@62
|
1013 end
|
Zerotorescue@62
|
1014 end
|
Zerotorescue@62
|
1015 end
|
Zerotorescue@76
|
1016
|
Zerotorescue@76
|
1017 if AceConfigRegistry then
|
Zerotorescue@76
|
1018 -- Now rebuild the list
|
Zerotorescue@76
|
1019 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
1020 end
|
Zerotorescue@62
|
1021 end,
|
Zerotorescue@62
|
1022 get = false,
|
Zerotorescue@62
|
1023 },
|
Zerotorescue@62
|
1024 minItemLevel = {
|
Zerotorescue@62
|
1025 order = 40,
|
Zerotorescue@62
|
1026 type = "select",
|
Zerotorescue@62
|
1027 values = function()
|
Zerotorescue@62
|
1028 local temp = {};
|
Zerotorescue@62
|
1029
|
Zerotorescue@62
|
1030 temp[0] = "Include everything";
|
Zerotorescue@62
|
1031
|
Zerotorescue@62
|
1032 local itemLevelTemplate = "Itemlevel >= %d";
|
Zerotorescue@62
|
1033
|
Zerotorescue@62
|
1034 for i = 1, 49 do
|
Zerotorescue@62
|
1035 temp[( i * 10 )] = itemLevelTemplate:format(( i * 10 ));
|
Zerotorescue@62
|
1036 end
|
Zerotorescue@62
|
1037
|
Zerotorescue@62
|
1038 temp[500] = "Include nothing";
|
Zerotorescue@62
|
1039
|
Zerotorescue@62
|
1040 return temp;
|
Zerotorescue@62
|
1041 end,
|
Zerotorescue@62
|
1042 name = "Include tradeskill items",
|
Zerotorescue@62
|
1043 desc = "Include all items above this item level from the currently opened tradeskill window in the below item list.\n\nSetting this very low this might considerably slow down this config window.\n\nSet to 500 to disable showing of items completely.",
|
Zerotorescue@62
|
1044 set = function(i, v) includeTradeSkillItems = v; end,
|
Zerotorescue@62
|
1045 get = function() return includeTradeSkillItems; end,
|
Zerotorescue@62
|
1046 disabled = function()
|
Zerotorescue@62
|
1047 if GetTradeSkillLine() == "UNKNOWN" then
|
Zerotorescue@62
|
1048 includeTradeSkillItems = 500;
|
Zerotorescue@62
|
1049 return true; -- disabled
|
Zerotorescue@62
|
1050 else
|
Zerotorescue@62
|
1051 return false;
|
Zerotorescue@62
|
1052 end
|
Zerotorescue@62
|
1053 end,
|
Zerotorescue@62
|
1054 },
|
Zerotorescue@62
|
1055 },
|
Zerotorescue@62
|
1056 },
|
Zerotorescue@62
|
1057 list = {
|
Zerotorescue@62
|
1058 order = 30,
|
Zerotorescue@62
|
1059 type = "group",
|
Zerotorescue@62
|
1060 inline = true,
|
Zerotorescue@62
|
1061 name = "Item list",
|
Zerotorescue@62
|
1062 hidden = UpdateAddItemList,
|
Zerotorescue@62
|
1063 args = {
|
Zerotorescue@62
|
1064
|
Zerotorescue@62
|
1065 },
|
Zerotorescue@62
|
1066 },
|
Zerotorescue@62
|
1067 },
|
Zerotorescue@62
|
1068 },
|
Zerotorescue@62
|
1069 remove = {
|
Zerotorescue@62
|
1070 order = 40,
|
Zerotorescue@62
|
1071 type = "group",
|
Zerotorescue@62
|
1072 name = "Current items",
|
Zerotorescue@62
|
1073 desc = "View, export or remove items from this group.",
|
Zerotorescue@62
|
1074 hidden = function(info) return groupIsVirtual[info[2]]; end,
|
Zerotorescue@62
|
1075 args = {
|
Zerotorescue@62
|
1076 help = {
|
Zerotorescue@62
|
1077 order = 10,
|
Zerotorescue@62
|
1078 type = "group",
|
Zerotorescue@62
|
1079 inline = true,
|
Zerotorescue@62
|
1080 name = "Help",
|
Zerotorescue@62
|
1081 hidden = false,
|
Zerotorescue@62
|
1082 args = {
|
Zerotorescue@62
|
1083 help = {
|
Zerotorescue@62
|
1084 order = 10,
|
Zerotorescue@62
|
1085 type = "description",
|
Zerotorescue@62
|
1086 name = "Click the items you wish to remove from this group.",
|
Zerotorescue@62
|
1087 },
|
Zerotorescue@62
|
1088 massRemove = {
|
Zerotorescue@62
|
1089 order = 20,
|
Zerotorescue@62
|
1090 type = "input",
|
Zerotorescue@62
|
1091 name = "Remove all items matching...",
|
Zerotorescue@62
|
1092 desc = "Remove every item in this group matching the name entered in this field. If you enter \"Glyph\" as a filter, any items in this group containing this in their name will be removed from this group.",
|
Zerotorescue@62
|
1093 set = function(info, value)
|
Zerotorescue@62
|
1094 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1095
|
Zerotorescue@62
|
1096 if not value then return; end
|
Zerotorescue@62
|
1097
|
Zerotorescue@62
|
1098 value = value:lower();
|
Zerotorescue@62
|
1099
|
Zerotorescue@62
|
1100 local ref = options.args.groups.args[info[2]].args.remove.args.list.args;
|
Zerotorescue@62
|
1101
|
Zerotorescue@62
|
1102 for itemId, test in pairs(ref) do
|
Zerotorescue@62
|
1103 if test then
|
Zerotorescue@76
|
1104 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
1105
|
Zerotorescue@76
|
1106 if itemData.name:lower():find(value) then
|
Zerotorescue@76
|
1107 itemData:RemoveFromGroup(groupName);
|
Zerotorescue@76
|
1108
|
Zerotorescue@76
|
1109 addon.Print(("Removed %s from the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Red);
|
Zerotorescue@62
|
1110 end
|
Zerotorescue@62
|
1111 end
|
Zerotorescue@62
|
1112 end
|
Zerotorescue@62
|
1113
|
Zerotorescue@76
|
1114 if AceConfigRegistry then
|
Zerotorescue@76
|
1115 -- Now rebuild the list
|
Zerotorescue@76
|
1116 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
1117 end
|
Zerotorescue@62
|
1118 end,
|
Zerotorescue@62
|
1119 get = false,
|
Zerotorescue@62
|
1120 },
|
Zerotorescue@62
|
1121 premadeGroups = {
|
Zerotorescue@62
|
1122 order = 30,
|
Zerotorescue@62
|
1123 type = "select",
|
Zerotorescue@62
|
1124 name = "Imported premade groups",
|
Zerotorescue@62
|
1125 desc = "This is a list of all premade groups that were imported into this group. You will be notified when any of these premade groups have changed and you will be able to import these changes.\n\nSelect a group to stop reminding you of changes to the premade group (the item list will be unaffected). Doing so will require you to manually update this when new items are added to the game.",
|
Zerotorescue@62
|
1126 values = function(info)
|
Zerotorescue@62
|
1127 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1128
|
Zerotorescue@62
|
1129 local temp = {};
|
Zerotorescue@76
|
1130 temp[""] = "";
|
Zerotorescue@62
|
1131 if addon.db.profile.groups[groupName].premadeGroups then
|
Zerotorescue@62
|
1132 for name, version in pairs(addon.db.profile.groups[groupName].premadeGroups) do
|
Zerotorescue@62
|
1133 temp[name] = name;
|
Zerotorescue@62
|
1134 end
|
Zerotorescue@62
|
1135 end
|
Zerotorescue@62
|
1136
|
Zerotorescue@62
|
1137 return temp;
|
Zerotorescue@62
|
1138 end,
|
Zerotorescue@62
|
1139 set = function(info, value)
|
Zerotorescue@76
|
1140 if value and value ~= "" then
|
Zerotorescue@76
|
1141 -- Remove premade group from this group
|
Zerotorescue@76
|
1142 local groupName = groupIdToName[info[2]];
|
Zerotorescue@76
|
1143
|
Zerotorescue@76
|
1144 addon.db.profile.groups[groupName].premadeGroups[value] = nil;
|
Zerotorescue@76
|
1145
|
Zerotorescue@76
|
1146 print(("No longer notifying you about changes made to the premade group named \"|cfffed000%s|r\"."):format(value));
|
Zerotorescue@76
|
1147 end
|
Zerotorescue@62
|
1148 end,
|
Zerotorescue@62
|
1149 get = false,
|
Zerotorescue@62
|
1150 disabled = function(info)
|
Zerotorescue@62
|
1151 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1152
|
Zerotorescue@62
|
1153 return (not addon.db.profile.groups[groupName].premadeGroups);
|
Zerotorescue@62
|
1154 end,
|
Zerotorescue@62
|
1155 },
|
Zerotorescue@62
|
1156 },
|
Zerotorescue@62
|
1157 },
|
Zerotorescue@62
|
1158 list = {
|
Zerotorescue@62
|
1159 order = 20,
|
Zerotorescue@62
|
1160 type = "group",
|
Zerotorescue@62
|
1161 inline = true,
|
Zerotorescue@62
|
1162 name = "Item list",
|
Zerotorescue@62
|
1163 hidden = UpdateRemoveItemList,
|
Zerotorescue@62
|
1164 args = {
|
Zerotorescue@62
|
1165
|
Zerotorescue@62
|
1166 },
|
Zerotorescue@62
|
1167 },
|
Zerotorescue@62
|
1168 export = {
|
Zerotorescue@62
|
1169 order = 30,
|
Zerotorescue@62
|
1170 type = "group",
|
Zerotorescue@62
|
1171 name = "Export",
|
Zerotorescue@62
|
1172 inline = true,
|
Zerotorescue@62
|
1173 args = {
|
Zerotorescue@62
|
1174 input = {
|
Zerotorescue@62
|
1175 order = 10,
|
Zerotorescue@62
|
1176 type = "input",
|
Zerotorescue@62
|
1177 name = "Item data",
|
Zerotorescue@62
|
1178 width = "full",
|
Zerotorescue@62
|
1179 desc = "Export the item data for the currently selected group. Press CTRL-A to select all and CTRL-C to copy the text.",
|
Zerotorescue@62
|
1180 set = false,
|
Zerotorescue@62
|
1181 get = function(info)
|
Zerotorescue@62
|
1182 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1183
|
Zerotorescue@62
|
1184 local combinedItemIds;
|
Zerotorescue@62
|
1185 -- Parse items in group and show these
|
Zerotorescue@62
|
1186 for itemId, _ in pairs(addon.db.profile.groups[groupName].items) do
|
Zerotorescue@62
|
1187 if not combinedItemIds then
|
Zerotorescue@62
|
1188 combinedItemIds = tostring(itemId);
|
Zerotorescue@62
|
1189 else
|
Zerotorescue@62
|
1190 combinedItemIds = combinedItemIds .. (";%d"):format(itemId);
|
Zerotorescue@62
|
1191 end
|
Zerotorescue@62
|
1192 end
|
Zerotorescue@62
|
1193
|
Zerotorescue@62
|
1194 return combinedItemIds; -- We don't serialize this because we actually DO want people to be able to manually modify it - besides, parsing it isn't going to be hard
|
Zerotorescue@62
|
1195 end,
|
Zerotorescue@62
|
1196 },
|
Zerotorescue@62
|
1197 },
|
Zerotorescue@62
|
1198 },
|
Zerotorescue@62
|
1199 },
|
Zerotorescue@62
|
1200 },
|
Zerotorescue@62
|
1201 },
|
Zerotorescue@62
|
1202 };
|
Zerotorescue@62
|
1203
|
Zerotorescue@62
|
1204
|
Zerotorescue@62
|
1205
|
Zerotorescue@62
|
1206
|
Zerotorescue@62
|
1207
|
Zerotorescue@62
|
1208
|
Zerotorescue@62
|
1209
|
Zerotorescue@62
|
1210
|
Zerotorescue@62
|
1211
|
Zerotorescue@62
|
1212 -- Object functions
|
Zerotorescue@62
|
1213
|
Zerotorescue@62
|
1214 function mod:OnEnable()
|
Zerotorescue@62
|
1215 -- Register our config slash command
|
Zerotorescue@62
|
1216 -- /im config
|
Zerotorescue@62
|
1217 addon:RegisterSlash(function(this)
|
Zerotorescue@62
|
1218 -- We don't want any other windows open at this time.
|
Zerotorescue@62
|
1219 for name, module in this:IterateModules() do
|
Zerotorescue@62
|
1220 if module.CloseFrame then
|
Zerotorescue@62
|
1221 module:CloseFrame();
|
Zerotorescue@62
|
1222 end
|
Zerotorescue@62
|
1223 end
|
Zerotorescue@62
|
1224
|
Zerotorescue@62
|
1225 this:GetModule("Config"):Show();
|
Zerotorescue@62
|
1226 end, { "c", "config", "conf", "option", "options", "opt", "setting", "settings" }, "|Hfunction:InventoriumCommandHandler:config|h|cff00fff7/im config|r|h (or /im c) - Open the config window to change the settings and manage groups.");
|
Zerotorescue@62
|
1227
|
Zerotorescue@62
|
1228 -- Whenever the profile is changed, update the groups | args: (object for the functionName, eventName, functionName)
|
Zerotorescue@62
|
1229 addon.db.RegisterCallback(self, "OnProfileChanged", "RefreshConfig");
|
Zerotorescue@62
|
1230 addon.db.RegisterCallback(self, "OnProfileCopied", "RefreshConfig");
|
Zerotorescue@62
|
1231 addon.db.RegisterCallback(self, "OnProfileReset", "RefreshConfig");
|
Zerotorescue@62
|
1232
|
Zerotorescue@62
|
1233 -- Register our custom widgets
|
Zerotorescue@62
|
1234 local Widgets = addon:GetModule("Widgets");
|
Zerotorescue@62
|
1235 Widgets:ItemLinkButton();
|
Zerotorescue@62
|
1236 Widgets:ConfigItemLinkButton();
|
Zerotorescue@62
|
1237 end
|
Zerotorescue@62
|
1238
|
Zerotorescue@62
|
1239 function mod:RefreshConfig()
|
Zerotorescue@65
|
1240 self:PremadeGroupsCheck();
|
Zerotorescue@65
|
1241
|
Zerotorescue@62
|
1242 self:FillGroupOptions();
|
Zerotorescue@62
|
1243 end
|
Zerotorescue@62
|
1244
|
Zerotorescue@62
|
1245 function mod:Load()
|
Zerotorescue@62
|
1246 if not AceConfigDialog and not AceConfigRegistry then
|
Zerotorescue@65
|
1247 self:PremadeGroupsCheck();
|
Zerotorescue@65
|
1248
|
Zerotorescue@62
|
1249 self:FillOptions();
|
Zerotorescue@62
|
1250
|
Zerotorescue@62
|
1251 -- Build options dialog
|
Zerotorescue@62
|
1252 AceConfigDialog = LibStub("AceConfigDialog-3.0");
|
Zerotorescue@62
|
1253 AceConfigRegistry = LibStub("AceConfigRegistry-3.0");
|
Zerotorescue@62
|
1254 -- Register options table
|
Zerotorescue@62
|
1255 LibStub("AceConfig-3.0"):RegisterOptionsTable("InventoriumOptions", options);
|
Zerotorescue@62
|
1256 -- Set a nice default size (so that 4 normal sized elements fit next to eachother)
|
Zerotorescue@62
|
1257 AceConfigDialog:SetDefaultSize("InventoriumOptions", 975, 600);
|
Zerotorescue@62
|
1258
|
Zerotorescue@62
|
1259 -- In case the addon is loaded from another condition, always call the remove interface options
|
Zerotorescue@62
|
1260 if AddonLoader and AddonLoader.RemoveInterfaceOptions then
|
Zerotorescue@62
|
1261 AddonLoader:RemoveInterfaceOptions("Inventorium");
|
Zerotorescue@62
|
1262 end
|
Zerotorescue@62
|
1263
|
Zerotorescue@62
|
1264 -- Add to the blizzard addons options thing
|
Zerotorescue@62
|
1265 AceConfigDialog:AddToBlizOptions("InventoriumOptions");
|
Zerotorescue@62
|
1266 end
|
Zerotorescue@62
|
1267 end
|
Zerotorescue@62
|
1268
|
Zerotorescue@62
|
1269 function mod:Show()
|
Zerotorescue@62
|
1270 self:Load();
|
Zerotorescue@62
|
1271
|
Zerotorescue@62
|
1272 AceConfigDialog:Open("InventoriumOptions");
|
Zerotorescue@62
|
1273 end
|
Zerotorescue@62
|
1274
|
Zerotorescue@62
|
1275 function mod:FillOptions()
|
Zerotorescue@62
|
1276 options = {
|
Zerotorescue@62
|
1277 type = "group",
|
Zerotorescue@62
|
1278 name = "Inventorium Config",
|
Zerotorescue@62
|
1279 childGroups = "tree",
|
Zerotorescue@62
|
1280 args = {
|
Zerotorescue@62
|
1281 },
|
Zerotorescue@62
|
1282 };
|
Zerotorescue@62
|
1283
|
Zerotorescue@62
|
1284 -- General
|
Zerotorescue@62
|
1285 self:FillGeneralOptions();
|
Zerotorescue@62
|
1286
|
Zerotorescue@62
|
1287 -- Help
|
Zerotorescue@62
|
1288 self:FillHelpOptions();
|
Zerotorescue@62
|
1289
|
Zerotorescue@62
|
1290 -- Profile
|
Zerotorescue@62
|
1291 options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon.db, true);
|
Zerotorescue@62
|
1292 options.args.profiles.order = 200;
|
Zerotorescue@62
|
1293
|
Zerotorescue@62
|
1294 -- Groups
|
Zerotorescue@62
|
1295 self:MakeGroupOptions();
|
Zerotorescue@62
|
1296
|
Zerotorescue@62
|
1297 -- Groups-contents
|
Zerotorescue@62
|
1298 self:FillGroupOptions();
|
Zerotorescue@62
|
1299 end
|
Zerotorescue@62
|
1300
|
Zerotorescue@62
|
1301 function mod:FillGeneralOptions()
|
Zerotorescue@62
|
1302 options.args.general = {
|
Zerotorescue@62
|
1303 order = 100,
|
Zerotorescue@62
|
1304 type = "group",
|
Zerotorescue@62
|
1305 name = "General",
|
Zerotorescue@62
|
1306 desc = "Change general Inventorium settings.",
|
Zerotorescue@62
|
1307 args = {
|
Zerotorescue@62
|
1308 general = {
|
Zerotorescue@62
|
1309 order = 1,
|
Zerotorescue@62
|
1310 type = "group",
|
Zerotorescue@62
|
1311 inline = true,
|
Zerotorescue@62
|
1312 name = "General",
|
Zerotorescue@62
|
1313 args = {
|
Zerotorescue@62
|
1314 description = {
|
Zerotorescue@62
|
1315 order = 0,
|
Zerotorescue@62
|
1316 type = "description",
|
Zerotorescue@62
|
1317 name = function()
|
Zerotorescue@62
|
1318 local t = "Here you can set general settings. The settings entered here will be used when you choose not to override the settings within an individual group.\n\n";
|
Zerotorescue@62
|
1319
|
Zerotorescue@62
|
1320 local currentAddon, selectedAddonName = addon:GetItemCountAddon();
|
Zerotorescue@62
|
1321 local preferedAddon = addon.db.profile.defaults.itemCountAddon;
|
Zerotorescue@62
|
1322
|
Zerotorescue@62
|
1323 if currentAddon then
|
Zerotorescue@62
|
1324 t = t .. "Currently using |cfffed000" .. selectedAddonName .. "|r as your item count addon. This addon is " .. ((currentAddon.IsEnabled() and "|cff00ff00enabled|r") or "|cffff0000disabled|r") .. ".";
|
Zerotorescue@62
|
1325
|
Zerotorescue@62
|
1326 if currentAddon.GetTotalCount and currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
1327 t = t .. " This addon supports |cfffed000both total as local|r item counts.";
|
Zerotorescue@62
|
1328 elseif currentAddon.GetTotalCount then
|
Zerotorescue@62
|
1329 t = t .. " This addon supports |cfffed000only total|r item counts.";
|
Zerotorescue@62
|
1330 elseif currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
1331 t = t .. " This addon supports |cfffed000only local|r item counts.";
|
Zerotorescue@62
|
1332 end
|
Zerotorescue@62
|
1333
|
Zerotorescue@62
|
1334 if preferedAddon ~= selectedAddonName then
|
Zerotorescue@62
|
1335 t = t .. "\n\n|cffff0000You have selected |cfffed000" .. preferedAddon .. "|r|cffff0000 as your item count addon, but this appears to be disabled and thus a random alternative was selected.|r";
|
Zerotorescue@62
|
1336 end
|
Zerotorescue@62
|
1337 end
|
Zerotorescue@62
|
1338
|
Zerotorescue@62
|
1339 return t;
|
Zerotorescue@62
|
1340 end,
|
Zerotorescue@62
|
1341 },
|
Zerotorescue@62
|
1342 header = {
|
Zerotorescue@62
|
1343 order = 5,
|
Zerotorescue@62
|
1344 type = "header",
|
Zerotorescue@62
|
1345 name = "",
|
Zerotorescue@62
|
1346 },
|
Zerotorescue@62
|
1347 auctionPricingAddon = {
|
Zerotorescue@62
|
1348 order = 10,
|
Zerotorescue@62
|
1349 type = "select",
|
Zerotorescue@62
|
1350 name = "Prefered pricing addon",
|
Zerotorescue@62
|
1351 desc = "Select the addon you prefer data to be retrieved from. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
1352 values = function()
|
Zerotorescue@62
|
1353 local temp = {};
|
Zerotorescue@62
|
1354 for name, value in pairs(addon.supportedAddons.auctionPricing) do
|
Zerotorescue@62
|
1355 temp[name] = name;
|
Zerotorescue@62
|
1356 end
|
Zerotorescue@62
|
1357
|
Zerotorescue@62
|
1358 return temp;
|
Zerotorescue@62
|
1359 end,
|
Zerotorescue@62
|
1360 get = function() return addon.db.profile.defaults.auctionPricingAddon; end,
|
Zerotorescue@62
|
1361 set = function(i, v)
|
Zerotorescue@62
|
1362 addon.db.profile.defaults.auctionPricingAddon = v;
|
Zerotorescue@62
|
1363
|
Zerotorescue@62
|
1364 if addon.supportedAddons.auctionPricing[v].OnSelect then
|
Zerotorescue@62
|
1365 addon.supportedAddons.auctionPricing[v].OnSelect();
|
Zerotorescue@62
|
1366 end
|
Zerotorescue@62
|
1367 end,
|
Zerotorescue@62
|
1368 },
|
Zerotorescue@62
|
1369 itemCountAddon = {
|
Zerotorescue@62
|
1370 order = 20,
|
Zerotorescue@62
|
1371 type = "select",
|
Zerotorescue@62
|
1372 name = "Prefered item count addon",
|
Zerotorescue@62
|
1373 desc = "Select the addon you prefer data to be retrieved from. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
1374 values = function()
|
Zerotorescue@62
|
1375 local temp = {};
|
Zerotorescue@62
|
1376 for name, value in pairs(addon.supportedAddons.itemCount) do
|
Zerotorescue@62
|
1377 temp[name] = name;
|
Zerotorescue@62
|
1378 end
|
Zerotorescue@62
|
1379
|
Zerotorescue@62
|
1380 return temp;
|
Zerotorescue@62
|
1381 end,
|
Zerotorescue@62
|
1382 get = function() return addon.db.profile.defaults.itemCountAddon; end,
|
Zerotorescue@62
|
1383 set = function(i, v)
|
Zerotorescue@62
|
1384 addon.db.profile.defaults.itemCountAddon = v;
|
Zerotorescue@62
|
1385
|
Zerotorescue@62
|
1386 if addon.supportedAddons.itemCount[v].OnSelect then
|
Zerotorescue@62
|
1387 addon.supportedAddons.itemCount[v].OnSelect();
|
Zerotorescue@62
|
1388 end
|
Zerotorescue@62
|
1389 end,
|
Zerotorescue@62
|
1390 },
|
Zerotorescue@62
|
1391 craftingAddon = {
|
Zerotorescue@62
|
1392 order = 30,
|
Zerotorescue@62
|
1393 type = "select",
|
Zerotorescue@62
|
1394 name = "Prefered crafting addon",
|
Zerotorescue@62
|
1395 desc = "Select the addon you prefer data to be queued into. A random supported addon will be used if the selected addon can not be found.",
|
Zerotorescue@62
|
1396 values = function()
|
Zerotorescue@62
|
1397 local temp = {};
|
Zerotorescue@62
|
1398 for name, value in pairs(addon.supportedAddons.crafting) do
|
Zerotorescue@62
|
1399 temp[name] = name;
|
Zerotorescue@62
|
1400 end
|
Zerotorescue@62
|
1401
|
Zerotorescue@62
|
1402 return temp;
|
Zerotorescue@62
|
1403 end,
|
Zerotorescue@62
|
1404 get = function() return addon.db.profile.defaults.craftingAddon; end,
|
Zerotorescue@62
|
1405 set = function(i, v)
|
Zerotorescue@62
|
1406 addon.db.profile.defaults.craftingAddon = v;
|
Zerotorescue@62
|
1407
|
Zerotorescue@62
|
1408 if addon.supportedAddons.crafting[v].OnSelect then
|
Zerotorescue@62
|
1409 addon.supportedAddons.crafting[v].OnSelect();
|
Zerotorescue@62
|
1410 end
|
Zerotorescue@62
|
1411 end,
|
Zerotorescue@62
|
1412 },
|
Zerotorescue@62
|
1413 localItemData = {
|
Zerotorescue@62
|
1414 order = 40,
|
Zerotorescue@62
|
1415 type = "multiselect",
|
Zerotorescue@62
|
1416 name = "Include in local item data",
|
Zerotorescue@62
|
1417 desc = "Select which data should be included in the local item data.",
|
Zerotorescue@62
|
1418 values = {
|
Zerotorescue@62
|
1419 ["Bag"] = "Bag",
|
Zerotorescue@62
|
1420 ["Bank"] = "Bank",
|
Zerotorescue@62
|
1421 ["Auction House"] = "Auction House",
|
Zerotorescue@62
|
1422 ["Mailbox"] = "Mailbox",
|
Zerotorescue@62
|
1423 },
|
Zerotorescue@62
|
1424 get = function(i, v) return addon.db.profile.defaults.localItemData and addon.db.profile.defaults.localItemData[v]; end,
|
Zerotorescue@62
|
1425 set = function(i, v, e) addon.db.profile.defaults.localItemData[v] = e or nil; end,
|
Zerotorescue@65
|
1426 dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead.
|
Zerotorescue@62
|
1427 },
|
Zerotorescue@62
|
1428 },
|
Zerotorescue@62
|
1429 },
|
Zerotorescue@62
|
1430 minimumStock = {
|
Zerotorescue@62
|
1431 order = 10,
|
Zerotorescue@62
|
1432 type = "group",
|
Zerotorescue@62
|
1433 inline = true,
|
Zerotorescue@62
|
1434 name = "Minimum stock",
|
Zerotorescue@62
|
1435 args = {
|
Zerotorescue@62
|
1436 description = {
|
Zerotorescue@62
|
1437 order = 0,
|
Zerotorescue@62
|
1438 type = "description",
|
Zerotorescue@62
|
1439 name = "Here you can specify the default minimum amount of items you wish to keep in stock and related settings. The settings entered here will be used when you choose not to override the settings within an individual group.",
|
Zerotorescue@62
|
1440 },
|
Zerotorescue@62
|
1441 header = {
|
Zerotorescue@62
|
1442 order = 5,
|
Zerotorescue@62
|
1443 type = "header",
|
Zerotorescue@62
|
1444 name = "",
|
Zerotorescue@62
|
1445 },
|
Zerotorescue@62
|
1446 minLocalStock = {
|
Zerotorescue@62
|
1447 order = 10,
|
Zerotorescue@62
|
1448 type = "range",
|
Zerotorescue@62
|
1449 min = 0,
|
Zerotorescue@62
|
1450 max = 100000,
|
Zerotorescue@62
|
1451 softMax = 100,
|
Zerotorescue@62
|
1452 step = 1,
|
Zerotorescue@62
|
1453 name = "Minimum local stock",
|
Zerotorescue@62
|
1454 desc = "You can manually enter a value between 100 and 100.000 in the text box below if the provided range is insufficient.",
|
Zerotorescue@62
|
1455 get = function() return addon.db.profile.defaults.minLocalStock; end,
|
Zerotorescue@62
|
1456 set = function(i, v) addon.db.profile.defaults.minLocalStock = v; end,
|
Zerotorescue@62
|
1457 },
|
Zerotorescue@62
|
1458 alertBelowLocalMinimum = {
|
Zerotorescue@62
|
1459 order = 11,
|
Zerotorescue@62
|
1460 type = "toggle",
|
Zerotorescue@62
|
1461 name = "Alert when below local minimum (NYI)",
|
Zerotorescue@62
|
1462 desc = "Show an alert when this item gets below this threshold.",
|
Zerotorescue@62
|
1463 get = function() return addon.db.profile.defaults.alertBelowLocalMinimum; end,
|
Zerotorescue@62
|
1464 set = function(i, v) addon.db.profile.defaults.alertBelowLocalMinimum = v; end,
|
Zerotorescue@62
|
1465 },
|
Zerotorescue@62
|
1466 minGlobalStock = {
|
Zerotorescue@62
|
1467 order = 20,
|
Zerotorescue@62
|
1468 type = "range",
|
Zerotorescue@62
|
1469 min = 0,
|
Zerotorescue@62
|
1470 max = 100000,
|
Zerotorescue@62
|
1471 softMax = 100,
|
Zerotorescue@62
|
1472 step = 1,
|
Zerotorescue@62
|
1473 name = "Minimum global stock",
|
Zerotorescue@62
|
1474 desc = "You can manually enter a value between 100 and 100.000 in the text box below if the provided range is insufficient.",
|
Zerotorescue@62
|
1475 get = function() return addon.db.profile.defaults.minGlobalStock; end,
|
Zerotorescue@62
|
1476 set = function(i, v) addon.db.profile.defaults.minGlobalStock = v; end,
|
Zerotorescue@62
|
1477 },
|
Zerotorescue@62
|
1478 alertBelowGlobalMinimum = {
|
Zerotorescue@62
|
1479 order = 21,
|
Zerotorescue@62
|
1480 type = "toggle",
|
Zerotorescue@62
|
1481 name = "Alert when below global minimum (NYI)",
|
Zerotorescue@62
|
1482 desc = "Show an alert when this item gets below this threshold.",
|
Zerotorescue@62
|
1483 get = function() return addon.db.profile.defaults.alertBelowGlobalMinimum; end,
|
Zerotorescue@62
|
1484 set = function(i, v) addon.db.profile.defaults.alertBelowGlobalMinimum = v; end,
|
Zerotorescue@62
|
1485 },
|
Zerotorescue@62
|
1486 summaryThresholdShow = {
|
Zerotorescue@62
|
1487 order = 30,
|
Zerotorescue@62
|
1488 type = "range",
|
Zerotorescue@62
|
1489 min = 0,
|
Zerotorescue@62
|
1490 max = 10,
|
Zerotorescue@62
|
1491 softMax = 100,
|
Zerotorescue@62
|
1492 step = 0.05,
|
Zerotorescue@62
|
1493 isPercent = true,
|
Zerotorescue@62
|
1494 name = "Show in summary when below",
|
Zerotorescue@62
|
1495 desc = "Show items in the summary when below this percentage of the minimum stock. This can be either below the minimum or the global stock.\n\nYou can manually enter a value between 1.000% and 10.000% in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
1496 get = function() return addon.db.profile.defaults.summaryThresholdShow; end,
|
Zerotorescue@62
|
1497 set = function(i, v) addon.db.profile.defaults.summaryThresholdShow = v; end,
|
Zerotorescue@62
|
1498 },
|
Zerotorescue@62
|
1499 trackAtCharacters = {
|
Zerotorescue@62
|
1500 order = 40,
|
Zerotorescue@62
|
1501 type = "multiselect",
|
Zerotorescue@62
|
1502 name = "Track at",
|
Zerotorescue@62
|
1503 desc = "Select at which characters this should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
1504 values = function()
|
Zerotorescue@62
|
1505 local temp = {};
|
Zerotorescue@62
|
1506 for charName in pairs(addon.db.factionrealm.characters) do
|
Zerotorescue@62
|
1507 temp[charName] = charName;
|
Zerotorescue@62
|
1508 end
|
Zerotorescue@62
|
1509
|
Zerotorescue@62
|
1510 return temp;
|
Zerotorescue@62
|
1511 end,
|
Zerotorescue@68
|
1512 get = function(i, v)
|
Zerotorescue@68
|
1513 return addon.db.profile.defaults.trackAtCharacters[v];
|
Zerotorescue@68
|
1514 end,
|
Zerotorescue@68
|
1515 set = function(i, v, e)
|
Zerotorescue@68
|
1516 addon.db.profile.defaults.trackAtCharacters[v] = e or nil;
|
Zerotorescue@68
|
1517 end,
|
Zerotorescue@65
|
1518 dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead.
|
Zerotorescue@62
|
1519 },
|
Zerotorescue@62
|
1520 },
|
Zerotorescue@62
|
1521 },
|
Zerotorescue@62
|
1522 refill = {
|
Zerotorescue@62
|
1523 order = 20,
|
Zerotorescue@62
|
1524 type = "group",
|
Zerotorescue@62
|
1525 inline = true,
|
Zerotorescue@62
|
1526 name = "Replenishing stock",
|
Zerotorescue@62
|
1527 args = {
|
Zerotorescue@62
|
1528 description = {
|
Zerotorescue@62
|
1529 order = 0,
|
Zerotorescue@62
|
1530 type = "description",
|
Zerotorescue@62
|
1531 name = function()
|
Zerotorescue@62
|
1532 local r = "Here you can specify the default amount of items to which you wish to restock when you are collecting new items. This may be higher than the minimum stock. The settings entered here will be used when you choose not to override the settings within an individual group.\n\n";
|
Zerotorescue@62
|
1533
|
Zerotorescue@62
|
1534 r = r .. "When restocking the target amount is |cfffed000" .. addon.db.profile.defaults.restockTarget .. "|r of every item. Not queueing craftable items when only missing |cfffed000" .. floor( addon.db.profile.defaults.minCraftingQueue * addon.db.profile.defaults.restockTarget ) .. "|r (|cfffed000" .. ( addon.db.profile.defaults.minCraftingQueue * 100 ) .. "%|r) of the restock target.";
|
Zerotorescue@62
|
1535
|
Zerotorescue@62
|
1536 return r;
|
Zerotorescue@62
|
1537 end,
|
Zerotorescue@62
|
1538 },
|
Zerotorescue@62
|
1539 header = {
|
Zerotorescue@62
|
1540 order = 5,
|
Zerotorescue@62
|
1541 type = "header",
|
Zerotorescue@62
|
1542 name = "",
|
Zerotorescue@62
|
1543 },
|
Zerotorescue@62
|
1544 restockTarget = {
|
Zerotorescue@62
|
1545 order = 10,
|
Zerotorescue@62
|
1546 type = "range",
|
Zerotorescue@62
|
1547 min = 0,
|
Zerotorescue@62
|
1548 max = 100000,
|
Zerotorescue@62
|
1549 softMax = 100,
|
Zerotorescue@62
|
1550 step = 1,
|
Zerotorescue@62
|
1551 name = "Restock target",
|
Zerotorescue@62
|
1552 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
1553 get = function() return addon.db.profile.defaults.restockTarget; end,
|
Zerotorescue@62
|
1554 set = function(i, v) addon.db.profile.defaults.restockTarget = v; end,
|
Zerotorescue@62
|
1555 },
|
Zerotorescue@62
|
1556 minCraftingQueue = {
|
Zerotorescue@62
|
1557 order = 20,
|
Zerotorescue@62
|
1558 type = "range",
|
Zerotorescue@62
|
1559 min = 0,
|
Zerotorescue@62
|
1560 max = 1,
|
Zerotorescue@62
|
1561 step = 0.01, -- 1%
|
Zerotorescue@62
|
1562 isPercent = true,
|
Zerotorescue@62
|
1563 name = "Don't queue if I only miss",
|
Zerotorescue@62
|
1564 desc = "Don't add a craftable item to the queue if I only miss this much or less of the restock target.\n\nExample: if your restock target is set to 60 and this is set to 5%, an item won't be queued unless you are missing more than 3 of it.",
|
Zerotorescue@62
|
1565 get = function() return addon.db.profile.defaults.minCraftingQueue; end,
|
Zerotorescue@62
|
1566 set = function(i, v) addon.db.profile.defaults.minCraftingQueue = v; end,
|
Zerotorescue@62
|
1567 },
|
Zerotorescue@62
|
1568 bonusQueue = {
|
Zerotorescue@62
|
1569 order = 30,
|
Zerotorescue@62
|
1570 type = "range",
|
Zerotorescue@62
|
1571 min = 0,
|
Zerotorescue@62
|
1572 max = 10, -- 1000%
|
Zerotorescue@62
|
1573 step = 0.01, -- 1%
|
Zerotorescue@62
|
1574 isPercent = true,
|
Zerotorescue@62
|
1575 name = "Bonus queue",
|
Zerotorescue@62
|
1576 desc = "Get additional items when there are none left.\n\nExample: if your restock target is set to 60 and this is set to 10%, you will get 66 items instead of just 60 if you end up with none left while queueing.",
|
Zerotorescue@62
|
1577 get = function() return addon.db.profile.defaults.bonusQueue; end,
|
Zerotorescue@62
|
1578 set = function(i, v) addon.db.profile.defaults.bonusQueue = v; end,
|
Zerotorescue@62
|
1579 },
|
Zerotorescue@62
|
1580 priceThreshold = {
|
Zerotorescue@62
|
1581 order = 40,
|
Zerotorescue@62
|
1582 type = "input",
|
Zerotorescue@62
|
1583 name = "Price threshold",
|
Zerotorescue@62
|
1584 desc = "Only queue craftable items when they are worth at least this much according to your auction house addon.\n\nSet to 0 to ignore auction prices.",
|
Zerotorescue@62
|
1585 validate = function(info, value) return addon:ValidateReadableMoney(info, value); end,
|
Zerotorescue@62
|
1586 get = function() return addon:ReadableMoney(addon.db.profile.defaults.priceThreshold); end,
|
Zerotorescue@62
|
1587 set = function(i, v) addon.db.profile.defaults.priceThreshold = addon:ReadableMoneyToCopper(v); end,
|
Zerotorescue@62
|
1588 },
|
Zerotorescue@62
|
1589 summaryHidePriceThreshold = {
|
Zerotorescue@62
|
1590 order = 50,
|
Zerotorescue@62
|
1591 type = "toggle",
|
Zerotorescue@62
|
1592 name = "Hide when below threshold",
|
Zerotorescue@62
|
1593 desc = "Hide items from the summary when their value is below the set price threshold.",
|
Zerotorescue@62
|
1594 get = function() return addon.db.profile.defaults.summaryHidePriceThreshold; end,
|
Zerotorescue@62
|
1595 set = function(i, v) addon.db.profile.defaults.summaryHidePriceThreshold = v; end,
|
Zerotorescue@62
|
1596 },
|
Zerotorescue@62
|
1597 alwaysGetAuctionValue = {
|
Zerotorescue@62
|
1598 order = 60,
|
Zerotorescue@62
|
1599 type = "toggle",
|
Zerotorescue@62
|
1600 name = "Always show auction value",
|
Zerotorescue@62
|
1601 desc = "Always cache and show the auction value of items, even if the price threshold is set to 0|cffeda55fc|r.",
|
Zerotorescue@62
|
1602 get = function() return addon.db.profile.defaults.alwaysGetAuctionValue; end,
|
Zerotorescue@62
|
1603 set = function(i, v) addon.db.profile.defaults.alwaysGetAuctionValue = v; end,
|
Zerotorescue@62
|
1604 },
|
Zerotorescue@62
|
1605 },
|
Zerotorescue@62
|
1606 },
|
Zerotorescue@62
|
1607 colorCodes = {
|
Zerotorescue@62
|
1608 order = 30,
|
Zerotorescue@62
|
1609 type = "group",
|
Zerotorescue@62
|
1610 inline = true,
|
Zerotorescue@62
|
1611 name = "Color codes",
|
Zerotorescue@62
|
1612 args = {
|
Zerotorescue@62
|
1613 description = {
|
Zerotorescue@62
|
1614 order = 0,
|
Zerotorescue@62
|
1615 type = "description",
|
Zerotorescue@62
|
1616 name = "Change the color code thresholds based on the current stock remaining of the required minimum stock.",
|
Zerotorescue@62
|
1617 },
|
Zerotorescue@62
|
1618 header = {
|
Zerotorescue@62
|
1619 order = 5,
|
Zerotorescue@62
|
1620 type = "header",
|
Zerotorescue@62
|
1621 name = "",
|
Zerotorescue@62
|
1622 },
|
Zerotorescue@62
|
1623 green = {
|
Zerotorescue@62
|
1624 order = 10,
|
Zerotorescue@62
|
1625 type = "range",
|
Zerotorescue@62
|
1626 min = 0,
|
Zerotorescue@62
|
1627 max = 1,
|
Zerotorescue@62
|
1628 step = 0.01,
|
Zerotorescue@62
|
1629 isPercent = true,
|
Zerotorescue@62
|
1630 name = "|cff00ff00Green|r",
|
Zerotorescue@62
|
1631 desc = "Show quantity in green when at least this much of the minimum stock is available.",
|
Zerotorescue@62
|
1632 get = function() return addon.db.profile.defaults.colors.green; end,
|
Zerotorescue@62
|
1633 set = function(i, v) addon.db.profile.defaults.colors.green = v; end,
|
Zerotorescue@62
|
1634 },
|
Zerotorescue@62
|
1635 yellow = {
|
Zerotorescue@62
|
1636 order = 20,
|
Zerotorescue@62
|
1637 type = "range",
|
Zerotorescue@62
|
1638 min = 0,
|
Zerotorescue@62
|
1639 max = 1,
|
Zerotorescue@62
|
1640 step = 0.01,
|
Zerotorescue@62
|
1641 isPercent = true,
|
Zerotorescue@62
|
1642 name = "|cffffff00Yellow|r",
|
Zerotorescue@62
|
1643 desc = "Show quantity in yellow when at least this much of the minimum stock is available.",
|
Zerotorescue@62
|
1644 get = function() return addon.db.profile.defaults.colors.yellow; end,
|
Zerotorescue@62
|
1645 set = function(i, v) addon.db.profile.defaults.colors.yellow = v; end,
|
Zerotorescue@62
|
1646 },
|
Zerotorescue@62
|
1647 orange = {
|
Zerotorescue@62
|
1648 order = 30,
|
Zerotorescue@62
|
1649 type = "range",
|
Zerotorescue@62
|
1650 min = 0,
|
Zerotorescue@62
|
1651 max = 1,
|
Zerotorescue@62
|
1652 step = 0.01,
|
Zerotorescue@62
|
1653 isPercent = true,
|
Zerotorescue@62
|
1654 name = "|cffff9933Orange|r",
|
Zerotorescue@62
|
1655 desc = "Show quantity in orange when at least this much of the minimum stock is available.",
|
Zerotorescue@62
|
1656 get = function() return addon.db.profile.defaults.colors.orange; end,
|
Zerotorescue@62
|
1657 set = function(i, v) addon.db.profile.defaults.colors.orange = v; end,
|
Zerotorescue@62
|
1658 },
|
Zerotorescue@62
|
1659 red = {
|
Zerotorescue@62
|
1660 order = 40,
|
Zerotorescue@62
|
1661 type = "range",
|
Zerotorescue@62
|
1662 min = 0,
|
Zerotorescue@62
|
1663 max = 1,
|
Zerotorescue@62
|
1664 step = 0.01,
|
Zerotorescue@62
|
1665 isPercent = true,
|
Zerotorescue@62
|
1666 name = "|cffff0000Red|r",
|
Zerotorescue@62
|
1667 desc = "Show quantity in red when at least this much of the minimum stock is available.",
|
Zerotorescue@62
|
1668 get = function() return addon.db.profile.defaults.colors.red; end,
|
Zerotorescue@62
|
1669 set = function(i, v) addon.db.profile.defaults.colors.red = v; end,
|
Zerotorescue@62
|
1670 },
|
Zerotorescue@62
|
1671 },
|
Zerotorescue@62
|
1672 },
|
Zerotorescue@76
|
1673 extra = {
|
Zerotorescue@76
|
1674 order = 40,
|
Zerotorescue@76
|
1675 type = "group",
|
Zerotorescue@76
|
1676 inline = true,
|
Zerotorescue@76
|
1677 name = "Extra",
|
Zerotorescue@76
|
1678 args = {
|
Zerotorescue@76
|
1679 description = {
|
Zerotorescue@76
|
1680 order = 0,
|
Zerotorescue@76
|
1681 type = "description",
|
Zerotorescue@76
|
1682 name = "Additional optional settings.",
|
Zerotorescue@76
|
1683 },
|
Zerotorescue@76
|
1684 header = {
|
Zerotorescue@76
|
1685 order = 5,
|
Zerotorescue@76
|
1686 type = "header",
|
Zerotorescue@76
|
1687 name = "",
|
Zerotorescue@76
|
1688 },
|
Zerotorescue@76
|
1689 removeCharacter = {
|
Zerotorescue@76
|
1690 order = 40,
|
Zerotorescue@76
|
1691 type = "select",
|
Zerotorescue@76
|
1692 name = "Forget character",
|
Zerotorescue@76
|
1693 desc = "Select a character to remove all traces of it from Inventorium's memory.\n\nYour current character can not be removed, you must login to a different character to do so.",
|
Zerotorescue@76
|
1694 values = function()
|
Zerotorescue@76
|
1695 local temp = {};
|
Zerotorescue@76
|
1696
|
Zerotorescue@76
|
1697 temp[""] = "";
|
Zerotorescue@76
|
1698
|
Zerotorescue@76
|
1699 local playerName = UnitName("player");
|
Zerotorescue@76
|
1700 for charName in pairs(addon.db.factionrealm.characters) do
|
Zerotorescue@76
|
1701 if playerName ~= charName then
|
Zerotorescue@76
|
1702 temp[charName] = charName;
|
Zerotorescue@76
|
1703 end
|
Zerotorescue@76
|
1704 end
|
Zerotorescue@76
|
1705
|
Zerotorescue@76
|
1706 return temp;
|
Zerotorescue@76
|
1707 end,
|
Zerotorescue@76
|
1708 set = function(i, value)
|
Zerotorescue@76
|
1709 if value and value ~= "" then
|
Zerotorescue@76
|
1710 addon.db.factionrealm.characters[value] = nil;
|
Zerotorescue@76
|
1711 addon.db.profile.defaults.trackAtCharacters[value] = nil;
|
Zerotorescue@76
|
1712 for name, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@76
|
1713 if values.trackAtCharacters then
|
Zerotorescue@76
|
1714 values.trackAtCharacters[name] = nil;
|
Zerotorescue@76
|
1715 end
|
Zerotorescue@76
|
1716 end
|
Zerotorescue@76
|
1717 end
|
Zerotorescue@76
|
1718 end,
|
Zerotorescue@76
|
1719 },
|
Zerotorescue@76
|
1720 },
|
Zerotorescue@76
|
1721 },
|
Zerotorescue@62
|
1722 },
|
Zerotorescue@62
|
1723 };
|
Zerotorescue@62
|
1724 end
|
Zerotorescue@62
|
1725
|
Zerotorescue@62
|
1726 function mod:FillHelpOptions()
|
Zerotorescue@62
|
1727 options.args.help = {
|
Zerotorescue@62
|
1728 order = 150,
|
Zerotorescue@62
|
1729 type = "group",
|
Zerotorescue@62
|
1730 childGroups = "tab",
|
Zerotorescue@62
|
1731 name = "Help",
|
Zerotorescue@62
|
1732 desc = "Useful information for if you're unfamiliar with a part of the addon.",
|
Zerotorescue@62
|
1733 args = {
|
Zerotorescue@62
|
1734 general = {
|
Zerotorescue@62
|
1735 order = 1,
|
Zerotorescue@62
|
1736 type = "group",
|
Zerotorescue@62
|
1737 name = "General",
|
Zerotorescue@62
|
1738 args = {
|
Zerotorescue@62
|
1739 description = {
|
Zerotorescue@62
|
1740 order = 0,
|
Zerotorescue@62
|
1741 type = "description",
|
Zerotorescue@62
|
1742 name = "Please note that all multi-select |cfffed000dropdown|r boxes were turned into multi-select |cfffed000toggle|r boxes. I do not intend to keep it this way, however it can not yet be reverted due to a major bug in one of the libraries used by Inventorium. The layout of this config may look terribly organized in it's current state.\n\n" ..
|
Zerotorescue@62
|
1743 "Since this is a beta some functionality might not be implemented yet while the options are available (usually - but not always - tagged as \"NYI\"). These options are used to indicate a feature is on the way and will be implemented before Inventorium is tagged as a release.\n\n" ..
|
Zerotorescue@62
|
1744 "Please request things you want and report anything that's clunky, weird, vague or otherwise buggy at |cfffed000the Inventorium development addon page|r. You can find this by searching for \"|cfffed000Inventorium|r\" at |cfffed000CurseForge.com|r.\n\n" ..
|
Zerotorescue@62
|
1745 "Tutorials for Inventorium will be created after the first stable release. If you require any help before that you can always contact me in the |cfffed000#JMTC|r IRC channel at |cfffed000QuakeNet.org|r. You may also report issues and request things there if you wish.\n\n" ..
|
Zerotorescue@62
|
1746 "You might notice the summary window currently gets very slow when refreshed once you get over 100-200 items in the list, this is a known issue and will be fixed in |cfffed000version 1.1|r or a little later (which is after the initial release).",
|
Zerotorescue@62
|
1747 },
|
Zerotorescue@62
|
1748 },
|
Zerotorescue@62
|
1749 },
|
Zerotorescue@62
|
1750 manual = {
|
Zerotorescue@62
|
1751 order = 2,
|
Zerotorescue@62
|
1752 type = "group",
|
Zerotorescue@62
|
1753 name = "Manual",
|
Zerotorescue@62
|
1754 args = {
|
Zerotorescue@62
|
1755 intro = {
|
Zerotorescue@62
|
1756 order = 1,
|
Zerotorescue@62
|
1757 type = "group",
|
Zerotorescue@62
|
1758 inline = true,
|
Zerotorescue@62
|
1759 name = "Intro",
|
Zerotorescue@62
|
1760 args = {
|
Zerotorescue@62
|
1761 description = {
|
Zerotorescue@62
|
1762 order = 0,
|
Zerotorescue@62
|
1763 type = "description",
|
Zerotorescue@62
|
1764 name = "|cfffed000Inventorium|r is an inventory tracking and restocking addon aimed towards making it extremely easy to keep enough stock of specific items at your characters. It provides a quick overview where you can see your current stock compared to the required stock and the current item value at the auction house whenever you find this relevant. From this overview you can queue craftable items into your favorite crafting profession addon and even restock from a vendor.",
|
Zerotorescue@62
|
1765 },
|
Zerotorescue@62
|
1766 },
|
Zerotorescue@62
|
1767 },
|
Zerotorescue@62
|
1768 Overview = {
|
Zerotorescue@62
|
1769 order = 2,
|
Zerotorescue@62
|
1770 type = "group",
|
Zerotorescue@62
|
1771 inline = true,
|
Zerotorescue@62
|
1772 name = "Overview",
|
Zerotorescue@62
|
1773 args = {
|
Zerotorescue@62
|
1774 description = {
|
Zerotorescue@62
|
1775 order = 0,
|
Zerotorescue@62
|
1776 type = "description",
|
Zerotorescue@62
|
1777 name = "In the stock overview, which is called the summary, you can view a list with all items relevant to your current character with their updated stock and auction house values. You can sort this list on item quality, current stock, percentage of stock missing, and item values and this way easily manually find the items you wish to process. If you prefer to automate the process, you can also configure the groups exactly as you wish and hit the queue button to process everything in that group.\n\n" ..
|
Zerotorescue@62
|
1778
|
Zerotorescue@62
|
1779 "The item count data can be retrieved from most popular item count addons. This includes |cfffed000ItemCount|r and |cfffed000DataStore|r, but also |cfffed000Altoholic|r (even though this is not really a proper item count addon).\n" ..
|
Zerotorescue@62
|
1780 "The auction house values data can also be retrieved from most popular auction house addons. This includes |cfffed000Auctionator|r, |cfffed000Auctioneer|r, |cfffed000AuctionLite|r, |cfffed000AuctionMaster|r and any other addon implementing the standard for retrieving item values. Item values from the summary windows of |cfffed000AuctionProfitMaster|r and |cfffed000ZeroAuctions|r are also supported, but not recommended.",
|
Zerotorescue@62
|
1781 },
|
Zerotorescue@62
|
1782 },
|
Zerotorescue@62
|
1783 },
|
Zerotorescue@62
|
1784 Groups = {
|
Zerotorescue@62
|
1785 order = 3,
|
Zerotorescue@62
|
1786 type = "group",
|
Zerotorescue@62
|
1787 inline = true,
|
Zerotorescue@62
|
1788 name = "Groups",
|
Zerotorescue@62
|
1789 args = {
|
Zerotorescue@62
|
1790 description = {
|
Zerotorescue@62
|
1791 order = 0,
|
Zerotorescue@62
|
1792 type = "description",
|
Zerotorescue@62
|
1793 name = "All items can be distributed over multiple groups to configure them exactly as you want. You can put all your glyphs in one group, gems in another and scrolls in a third with every single one of them having it's own set of unique settings. Per group you can set a price threshold, required item count, relevant characters and much more. The setup will feel very familiar to anyone that has used Quick Auctions to some extend as it uses a similar standard (though with many enhancements).",
|
Zerotorescue@62
|
1794 },
|
Zerotorescue@62
|
1795 },
|
Zerotorescue@62
|
1796 },
|
Zerotorescue@62
|
1797 Queueing = {
|
Zerotorescue@62
|
1798 order = 4,
|
Zerotorescue@62
|
1799 type = "group",
|
Zerotorescue@62
|
1800 inline = true,
|
Zerotorescue@62
|
1801 name = "Queueing",
|
Zerotorescue@62
|
1802 args = {
|
Zerotorescue@62
|
1803 description = {
|
Zerotorescue@62
|
1804 order = 0,
|
Zerotorescue@62
|
1805 type = "description",
|
Zerotorescue@62
|
1806 name = "Queueing items into your crafting profession addon can be done per group or for all visible groups at once. This requires the relevant profession window to be open. All queueing is done based on the filters set in the config for the related group, any items falling outside will be ignored.\n\n" ..
|
Zerotorescue@62
|
1807
|
Zerotorescue@62
|
1808 "The queueing can be done into most popular crafting profession window replacing addons. This includes |cfffed000AdvancedTradeSkillWindow|r, |cfffed000GnomeWorks|r and |cfffed000Skillet|r.",
|
Zerotorescue@62
|
1809 },
|
Zerotorescue@62
|
1810 },
|
Zerotorescue@62
|
1811 },
|
Zerotorescue@62
|
1812 Configuring = {
|
Zerotorescue@62
|
1813 order = 5,
|
Zerotorescue@62
|
1814 type = "group",
|
Zerotorescue@62
|
1815 inline = true,
|
Zerotorescue@62
|
1816 name = "Configuring",
|
Zerotorescue@62
|
1817 args = {
|
Zerotorescue@62
|
1818 description = {
|
Zerotorescue@62
|
1819 order = 0,
|
Zerotorescue@62
|
1820 type = "description",
|
Zerotorescue@62
|
1821 name = "The system resources used by this addon while it is stand-by are at a minimum, so you can just leave it enabled for all your characters unless you wish otherwise.\n\n" ..
|
Zerotorescue@62
|
1822
|
Zerotorescue@62
|
1823 "To start using Inventorium write |cfffed000/im|r in your chat. This will show a list of all available commands; |cfffed000/im config|r, |cfffed000summary|r and some others. Tip: Most of these commands have short alternatives, such as |cfffed000c|r for |cfffed000config|r and |cfffed000s|r for |cfffed000summary|r.\n\n" ..
|
Zerotorescue@62
|
1824
|
Zerotorescue@62
|
1825 "Write |cfffed000/im c|r to open the config window to start configuring your groups. The first tab you will find opened is the |cfffed000General|r config. Go ahead and select your prefered item count, crafting and pricing addons. Scroll down and quickly take note of all other options there, you won't really need everything (yet) but knowing it is available will save you from searching later on.\n\n" ..
|
Zerotorescue@62
|
1826
|
Zerotorescue@62
|
1827 "Click on the |cfffed000Groups|r tab. Here you will see a view handy options, in the future you might be able to find complete groups to import at popular blogs or forums making Inventorium very easy to import and initially setup, but for now we will have to make one manually. Quickly think about an easy-to-use and handy naming pattern and enter a name for your new group (e.g. |cfffed000Glyphs (Hunter)|r) and hit enter (leave the group type to the default). This group will be created and added to the list under the groups tab. Open the config for this group by clicking the group name.\n\n" ..
|
Zerotorescue@62
|
1828
|
Zerotorescue@62
|
1829 "You are now seeing a copy of the general config with override boxes next to everything. Configure this as you wish, for example override the |cfffed000minimum global stock|r to 20, |cfffed000track at|r to your banker and crafter (ensure your current char is also included) and the |cfffed000price threshold|r to 5g or so. Once done go to the \"add items\" tab to add items to this group so this group manages them. Again observice the available functionality so you know what you can do. Based on our previous example of Hunter glyphs we have three possibilities: one is to get all Hunter glyphs in our bags and add these, the second is to open the profession window and include everything above or equal to an item level of 0 and the third and in this case best possibility is to add items from a premade group. Select |cfffed000Glyphs (Hunter)|r from the |cfffed000premade groups|r select box to import all Hunter glyphs into this group. After doing so you can close the config window to check the results. Write |cfffed000/im s|r to view the summary window.\n\n" ..
|
Zerotorescue@62
|
1830
|
Zerotorescue@62
|
1831 "You can now copy this group and repeat the same steps to add all other groups you require. Think of things like one group per class for glyphs, one group per color for gems, one group per type of scroll (e.g. Heirloom, Twinks and Popular), one group for craftable epics, one group for flasks, one group for inks, one for parchments, etc.",
|
Zerotorescue@62
|
1832 },
|
Zerotorescue@62
|
1833 },
|
Zerotorescue@62
|
1834 },
|
Zerotorescue@62
|
1835 VirtualGroups = {
|
Zerotorescue@62
|
1836 order = 6,
|
Zerotorescue@62
|
1837 type = "group",
|
Zerotorescue@62
|
1838 inline = true,
|
Zerotorescue@62
|
1839 name = "Virtual groups",
|
Zerotorescue@62
|
1840 args = {
|
Zerotorescue@62
|
1841 description = {
|
Zerotorescue@62
|
1842 order = 0,
|
Zerotorescue@62
|
1843 type = "description",
|
Zerotorescue@62
|
1844 name = "|cffccccccThis is advanced optional functionality. I recommend skipping this paragraph if you are new to Inventorium.|r\n\n" ..
|
Zerotorescue@62
|
1845
|
Zerotorescue@62
|
1846 "To allow changing the settings of multiple groups at once you can make virtual groups. These groups are basically like the general tab as their values are used when you aren't overriding a setting in a more specific group. After making a virtual group you still have to select it in all the \"child\"-groups so these groups know where to look for their settings when they are empty. Going back to our |cfffed000Glyphs (Hunter)|r group, we could make a virtual group called |cfffed000Glyphs|r which contained info like a default price threshold of 5g and a minimum crafting queue for all glyph groups. In each specific group you can then further specify that you would - for example - want 20 Hunter glyphs but 40 Druid glyphs as these might just sell a lot more often.",
|
Zerotorescue@62
|
1847 },
|
Zerotorescue@62
|
1848 },
|
Zerotorescue@62
|
1849 },
|
Zerotorescue@62
|
1850 },
|
Zerotorescue@62
|
1851 },
|
Zerotorescue@62
|
1852 FAQ = {
|
Zerotorescue@62
|
1853 order = 3,
|
Zerotorescue@62
|
1854 type = "group",
|
Zerotorescue@62
|
1855 name = "FAQ",
|
Zerotorescue@62
|
1856 args = {
|
Zerotorescue@62
|
1857 description = {
|
Zerotorescue@62
|
1858 order = 0,
|
Zerotorescue@62
|
1859 type = "description",
|
Zerotorescue@62
|
1860 name = "|cfffed000My groups don't appear in the summary window.|r\nPlease ensure your current character is toggled on at the \"track at\" option beneath the \"minimum stock\" category within a group or the defaults.\n\n" ..
|
Zerotorescue@62
|
1861 "|cfffed000The auction value collumn always shows a \"-\".|r\nThe auction value will not be cached when you set the \"price threshold\" beneath the \"replenishing stock\" category to |cfffed0000c|r. You can change this behavior by adjusting this value or toggling the \"Always show auction value\" option on.\n\n" ..
|
Zerotorescue@62
|
1862 "|cfffed000What relation does Inventorium have to ZeroAuctions or AuctionProfitMaster?|r\nNone. ZA/APM and IM are two completely seperate addons and do not interfere with eachother. At best you can use the auction pricing data displayed at the ZA/APM summary window as pricing source by selecting either addon as pricing addon, but neither IM nor ZA/APM will adjust any settings nor execute any other actions at one another. ZA/APM is an auction house addon. IM is a stock management addon. We are not related. We do not work together. We probably never will.\n\n" ..
|
Zerotorescue@62
|
1863 "|cfffed000What use do profiles have?|r\nBecause there is already the \"track at\" option, profiles may not be useful to anyone. Nevertheless someone might find a use for it in some way and thus it is left available. You can use it to test certain things for example without the risk of your main groups being destroyed (although this should never be an excuse not to back up your settings from time to time).\n\n" ..
|
Zerotorescue@62
|
1864 "|cfffed000Can you provide me with a sample scenario for virtual groups?|r\nNot really. If you are just getting to know Inventorium then I suggest leaving this functionality for the moment. It only makes things more complicated.\n\nAnyway, the simplest (and possibly most popular) setup to imagine are glyphs. There are over 300 glyphs available distributed over 10 classes. Glyphs for certain classes (such as the tribrids; Druids & Paladins) might sell a lot more often than those for others (such as pure DPS; Hunters, etc.).\n\nTo get an easily adjustable setup you can make one virtual group, called \"Glyphs\" and override all your prefered settings in there. After you are done, make a glyph-group for each class (such as \"Glyphs (Death Knight)\" etc.) and select \"Glyphs\" as virtual group for every one of them (you can easily insert item data to these class specific groups by selecting premade data).\n\nNow, to change the settings for all glyph groups you can just change the settings within the virtual \"Glyph\" group. To change the settings for one class in particular, such as Paladins because they sell more often than others, you can click this group and override the appropriate settings for just that group. There are many more possibilities for you to find out.\n\n" ..
|
Zerotorescue@62
|
1865 "",
|
Zerotorescue@62
|
1866 },
|
Zerotorescue@62
|
1867 },
|
Zerotorescue@62
|
1868 },
|
Zerotorescue@62
|
1869 },
|
Zerotorescue@62
|
1870 };
|
Zerotorescue@62
|
1871 end
|
Zerotorescue@62
|
1872
|
Zerotorescue@62
|
1873 function mod:MakeGroupOptions()
|
Zerotorescue@62
|
1874 options.args.groups = {
|
Zerotorescue@62
|
1875 order = 1100,
|
Zerotorescue@62
|
1876 type = "group",
|
Zerotorescue@62
|
1877 name = "Groups",
|
Zerotorescue@62
|
1878 desc = "Change a group.",
|
Zerotorescue@62
|
1879 args = {
|
Zerotorescue@62
|
1880 create = {
|
Zerotorescue@62
|
1881 order = 10,
|
Zerotorescue@62
|
1882 type = "group",
|
Zerotorescue@62
|
1883 inline = true,
|
Zerotorescue@62
|
1884 name = "Create a brand new group",
|
Zerotorescue@62
|
1885 args = {
|
Zerotorescue@62
|
1886 name = {
|
Zerotorescue@62
|
1887 order = 10,
|
Zerotorescue@62
|
1888 type = "input",
|
Zerotorescue@62
|
1889 name = "Group name",
|
Zerotorescue@62
|
1890 desc = "The name of the group. You can also use item links as you wish.",
|
Zerotorescue@62
|
1891 validate = ValidateGroupName,
|
Zerotorescue@62
|
1892 set = function(_, value)
|
Zerotorescue@62
|
1893 addon.db.profile.groups[value] = {};
|
Zerotorescue@62
|
1894 if currentGroupType == "Virtual" then
|
Zerotorescue@62
|
1895 addon.db.profile.groups[value].isVirtual = true;
|
Zerotorescue@62
|
1896 end
|
Zerotorescue@62
|
1897
|
Zerotorescue@62
|
1898 mod:FillGroupOptions();
|
Zerotorescue@62
|
1899 end,
|
Zerotorescue@62
|
1900 get = false,
|
Zerotorescue@62
|
1901 width = "double",
|
Zerotorescue@62
|
1902 },
|
Zerotorescue@62
|
1903 type = {
|
Zerotorescue@62
|
1904 order = 20,
|
Zerotorescue@62
|
1905 type = "select",
|
Zerotorescue@62
|
1906 name = "Type (advanced)",
|
Zerotorescue@62
|
1907 desc = "The type of the new group. This can not be changed at a later time.\n\n|cffff9933This is an advanced option, you will probably not need it unless you manage a lot of groups.|r\n\n|cfffed000Normal|r: A normal group with complete functionality.\n\n|cfffed000Virtual|r: A virtual group which you can use to override the defaults for a set of groups. You can not add items to virtual groups.",
|
Zerotorescue@62
|
1908 values = {
|
Zerotorescue@62
|
1909 ["Normal"] = "Normal",
|
Zerotorescue@62
|
1910 ["Virtual"] = "Virtual",
|
Zerotorescue@62
|
1911 },
|
Zerotorescue@62
|
1912 set = function(_, value) currentGroupType = value; end,
|
Zerotorescue@62
|
1913 get = function() return currentGroupType; end,
|
Zerotorescue@62
|
1914 },
|
Zerotorescue@62
|
1915 },
|
Zerotorescue@62
|
1916 },
|
Zerotorescue@62
|
1917 import = {
|
Zerotorescue@62
|
1918 order = 20,
|
Zerotorescue@62
|
1919 type = "group",
|
Zerotorescue@62
|
1920 inline = true,
|
Zerotorescue@62
|
1921 name = "Import a group",
|
Zerotorescue@62
|
1922 args = {
|
Zerotorescue@62
|
1923 input = {
|
Zerotorescue@62
|
1924 order = 10,
|
Zerotorescue@62
|
1925 type = "input",
|
Zerotorescue@62
|
1926 multiline = true,
|
Zerotorescue@62
|
1927 name = "Group data",
|
Zerotorescue@62
|
1928 desc = "Paste the group data as provided by a group export. If you are trying to import multiple groups at the same time, make sure to use newlines to seperate them.",
|
Zerotorescue@62
|
1929 set = function(info, value)
|
Zerotorescue@62
|
1930 local data = { string.split("\n", value or "") };
|
Zerotorescue@62
|
1931
|
Zerotorescue@62
|
1932 for _, current in pairs(data) do
|
Zerotorescue@62
|
1933 if not AceSerializer then
|
Zerotorescue@62
|
1934 AceSerializer = LibStub("AceSerializer-3.0");
|
Zerotorescue@62
|
1935 end
|
Zerotorescue@62
|
1936
|
Zerotorescue@62
|
1937 local result, temp = AceSerializer:Deserialize(current);
|
Zerotorescue@62
|
1938
|
Zerotorescue@62
|
1939 if not temp.name then
|
Zerotorescue@62
|
1940 print("|cffff0000The provided data is not supported.|r");
|
Zerotorescue@62
|
1941 elseif ValidateGroupName(nil, temp.name) ~= true then
|
Zerotorescue@62
|
1942 print(("|cffff0000Aborting: A group named \"%s\" already exists.|r"):format(temp.name));
|
Zerotorescue@62
|
1943 else
|
Zerotorescue@62
|
1944 local name = temp.name;
|
Zerotorescue@62
|
1945 temp.name = nil;
|
Zerotorescue@62
|
1946 print(("Importing %s..."):format(name));
|
Zerotorescue@62
|
1947
|
Zerotorescue@62
|
1948 if temp.items then
|
Zerotorescue@62
|
1949 -- Remove items that are already in another group
|
Zerotorescue@62
|
1950 for value, _ in pairs(temp.items) do
|
Zerotorescue@62
|
1951 local itemId = tonumber(value);
|
Zerotorescue@62
|
1952
|
Zerotorescue@76
|
1953 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
1954
|
Zerotorescue@62
|
1955 if not itemId then
|
Zerotorescue@62
|
1956 print(("\"%s\" is not a number."):format(value));
|
Zerotorescue@62
|
1957 temp.items[value] = nil;
|
Zerotorescue@76
|
1958 elseif itemData:InGroup() then
|
Zerotorescue@76
|
1959 print(("Skipping %s as it is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@62
|
1960 temp.items[value] = nil;
|
Zerotorescue@62
|
1961 else
|
Zerotorescue@62
|
1962 -- Ensure the keys are numeric
|
Zerotorescue@62
|
1963 temp.items[value] = nil;
|
Zerotorescue@62
|
1964 temp.items[itemId] = true;
|
Zerotorescue@62
|
1965 end
|
Zerotorescue@62
|
1966 end
|
Zerotorescue@62
|
1967 end
|
Zerotorescue@62
|
1968
|
Zerotorescue@62
|
1969 -- Ensure this data isn't received (this would be silly/buggy as exports from other accounts - with different characters - won't know what to do with this)
|
Zerotorescue@62
|
1970 temp.trackAtCharacters = nil;
|
Zerotorescue@62
|
1971 temp.overrideTrackAtCharacters = nil;
|
Zerotorescue@62
|
1972
|
Zerotorescue@62
|
1973 addon.db.profile.groups[name] = temp;
|
Zerotorescue@62
|
1974 end
|
Zerotorescue@62
|
1975 end
|
Zerotorescue@62
|
1976
|
Zerotorescue@62
|
1977 self:FillGroupOptions();
|
Zerotorescue@62
|
1978 end,
|
Zerotorescue@62
|
1979 get = false,
|
Zerotorescue@62
|
1980 width = "full",
|
Zerotorescue@62
|
1981 },
|
Zerotorescue@62
|
1982 },
|
Zerotorescue@62
|
1983 },
|
Zerotorescue@62
|
1984 },
|
Zerotorescue@62
|
1985 };
|
Zerotorescue@62
|
1986 end
|
Zerotorescue@62
|
1987
|
Zerotorescue@62
|
1988 function mod:FillGroupOptions()
|
Zerotorescue@62
|
1989 for id, name in pairs(groupIdToName) do
|
Zerotorescue@62
|
1990 if type(name) == "string" and not addon.db.profile.groups[name] then
|
Zerotorescue@62
|
1991 options.args.groups.args[id] = nil;
|
Zerotorescue@62
|
1992 groupIdToName[id] = nil;
|
Zerotorescue@62
|
1993 groupIdToName[name] = nil;
|
Zerotorescue@62
|
1994 groupIsVirtual[id] = nil;
|
Zerotorescue@62
|
1995 end
|
Zerotorescue@62
|
1996 end
|
Zerotorescue@62
|
1997
|
Zerotorescue@62
|
1998 for name, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
1999 if not groupIdToName[name] then
|
Zerotorescue@62
|
2000 options.args.groups.args[tostring(count)] = defaultGroup;
|
Zerotorescue@62
|
2001
|
Zerotorescue@62
|
2002 groupIdToName[tostring(count)] = name;
|
Zerotorescue@62
|
2003 groupIdToName[name] = true;
|
Zerotorescue@62
|
2004 if values.isVirtual then
|
Zerotorescue@62
|
2005 groupIsVirtual[tostring(count)] = true;
|
Zerotorescue@62
|
2006 end
|
Zerotorescue@62
|
2007
|
Zerotorescue@62
|
2008 count = ( count + 1 );
|
Zerotorescue@62
|
2009 end
|
Zerotorescue@62
|
2010 end
|
Zerotorescue@62
|
2011 end
|
Zerotorescue@65
|
2012
|
Zerotorescue@65
|
2013
|
Zerotorescue@65
|
2014
|
Zerotorescue@65
|
2015
|
Zerotorescue@65
|
2016
|
Zerotorescue@65
|
2017
|
Zerotorescue@65
|
2018 -- Verify premade groups
|
Zerotorescue@65
|
2019
|
Zerotorescue@65
|
2020 function mod:PremadeGroupsCheck(updateGroupName, updateKey, accept)
|
Zerotorescue@65
|
2021 -- Compare the current premade groups with those used, notify about changes
|
Zerotorescue@65
|
2022 if addon.defaultGroups then
|
Zerotorescue@65
|
2023 for premadeGroupName, groupInfo in pairs(addon.defaultGroups) do
|
Zerotorescue@65
|
2024 -- Go through all default groups
|
Zerotorescue@65
|
2025
|
Zerotorescue@65
|
2026 for groupName, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@65
|
2027 -- Go through all groups to find those with this premade group
|
Zerotorescue@65
|
2028
|
Zerotorescue@65
|
2029 if values.premadeGroups and values.premadeGroups[premadeGroupName] and values.premadeGroups[premadeGroupName] < groupInfo.version then
|
Zerotorescue@65
|
2030 -- Outdated group
|
Zerotorescue@65
|
2031
|
Zerotorescue@65
|
2032 if updateGroupName and updateKey then
|
Zerotorescue@65
|
2033 -- This function was called after pressing yes or no in a confirm box
|
Zerotorescue@65
|
2034
|
Zerotorescue@65
|
2035 if accept then
|
Zerotorescue@65
|
2036 -- Yes was clicked
|
Zerotorescue@65
|
2037
|
Zerotorescue@65
|
2038 for itemId, version in pairs(groupInfo.items) do
|
Zerotorescue@65
|
2039 -- Go through all items in this premade group
|
Zerotorescue@65
|
2040
|
Zerotorescue@76
|
2041 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
2042
|
Zerotorescue@65
|
2043 if version > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@65
|
2044 -- This item was added in a more recent version than this group: Add item
|
Zerotorescue@65
|
2045
|
Zerotorescue@76
|
2046 if itemData:InGroup() then
|
Zerotorescue@76
|
2047 print(("Skipping %s as it is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@76
|
2048 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@76
|
2049 addon.Print(("Added %s found in the premade group |cfffed000%s|r to the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), premadeGroupName, itemData:InGroup() ), addon.Colors.Green);
|
Zerotorescue@65
|
2050 end
|
Zerotorescue@65
|
2051 elseif ( version * -1 ) > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@76
|
2052 if itemData:InGroup() == groupName then
|
Zerotorescue@76
|
2053 itemData:RemoveFromGroup(groupName);
|
Zerotorescue@76
|
2054
|
Zerotorescue@76
|
2055 addon.Print(("Removed %s from the group |cfffed000%s|r as it was removed from the premade group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup(), premadeGroupName ), addon.Colors.Red);
|
Zerotorescue@65
|
2056 else
|
Zerotorescue@76
|
2057 print(("Skipping the removal of %s as it isn't in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@65
|
2058 end
|
Zerotorescue@65
|
2059 end
|
Zerotorescue@65
|
2060 end
|
Zerotorescue@65
|
2061
|
Zerotorescue@76
|
2062 if AceConfigRegistry then
|
Zerotorescue@76
|
2063 -- Now rebuild the list
|
Zerotorescue@76
|
2064 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
2065 end
|
Zerotorescue@76
|
2066
|
Zerotorescue@65
|
2067 -- Remember the new version
|
Zerotorescue@65
|
2068 values.premadeGroups[premadeGroupName] = groupInfo.version;
|
Zerotorescue@65
|
2069 else
|
Zerotorescue@65
|
2070 -- No was clicked
|
Zerotorescue@65
|
2071
|
Zerotorescue@65
|
2072 -- Let user know what was not added
|
Zerotorescue@65
|
2073 for itemId, version in pairs(groupInfo.items) do
|
Zerotorescue@65
|
2074 -- Go through all items in this premade group
|
Zerotorescue@65
|
2075
|
Zerotorescue@76
|
2076 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
2077
|
Zerotorescue@65
|
2078 if version > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@65
|
2079 -- This item was added in a more recent version than this group: don't add (since we clicked no), but announce it
|
Zerotorescue@65
|
2080
|
Zerotorescue@76
|
2081 print(("Skipping %s found in the premade group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@65
|
2082 end
|
Zerotorescue@65
|
2083 end
|
Zerotorescue@65
|
2084
|
Zerotorescue@65
|
2085 -- Remember the new version
|
Zerotorescue@65
|
2086 values.premadeGroups[premadeGroupName] = groupInfo.version;
|
Zerotorescue@65
|
2087 end
|
Zerotorescue@65
|
2088 else
|
Zerotorescue@65
|
2089 StaticPopupDialogs["InventoriumConfirmUpdatePremadeGroup"] = {
|
Zerotorescue@65
|
2090 text = "The premade group |cfffed000%s|r used in the group |cfffed000%s|r has been changed. Do you wish to copy these changes?",
|
Zerotorescue@65
|
2091 button1 = YES,
|
Zerotorescue@65
|
2092 button2 = NO,
|
Zerotorescue@65
|
2093 OnAccept = function()
|
Zerotorescue@65
|
2094 addon:PremadeGroupsCheck(groupName, premadeGroupName, true);
|
Zerotorescue@65
|
2095 end,
|
Zerotorescue@65
|
2096 OnCancel = function(_, _, reason)
|
Zerotorescue@65
|
2097 if reason == "clicked" then
|
Zerotorescue@65
|
2098 addon:PremadeGroupsCheck(groupName, premadeGroupName, false);
|
Zerotorescue@65
|
2099 end
|
Zerotorescue@65
|
2100 end,
|
Zerotorescue@65
|
2101 timeout = 0,
|
Zerotorescue@65
|
2102 whileDead = 1,
|
Zerotorescue@65
|
2103 hideOnEscape = 1,
|
Zerotorescue@65
|
2104 };
|
Zerotorescue@65
|
2105 StaticPopup_Show("InventoriumConfirmUpdatePremadeGroup", premadeGroupName, groupName);
|
Zerotorescue@65
|
2106
|
Zerotorescue@65
|
2107 return;
|
Zerotorescue@65
|
2108 end
|
Zerotorescue@65
|
2109 end
|
Zerotorescue@65
|
2110 end
|
Zerotorescue@65
|
2111 end
|
Zerotorescue@65
|
2112 end
|
Zerotorescue@65
|
2113 end
|