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@98
|
107 addon:Print("Couldn't add the item with itemId (" .. itemData.id .. ") because it is already in a group.", addon.Colors.Red);
|
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@89
|
217 addon:Debug("|cffff0000ERROR|r: Couldn't find proper item id for %s", 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@106
|
285 local t = "";
|
Zerotorescue@106
|
286 if not addon.db.profile.defaults.hideHelp then
|
Zerotorescue@106
|
287 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@106
|
288 end
|
Zerotorescue@62
|
289
|
Zerotorescue@62
|
290 local currentAddon, selectedAddonName = addon:GetItemCountAddon(groupName);
|
Zerotorescue@62
|
291 local preferedAddon = addon:GetOptionByKey(groupName, "itemCountAddon");
|
Zerotorescue@62
|
292
|
Zerotorescue@62
|
293 if currentAddon then
|
Zerotorescue@62
|
294 --GetCharacterCount
|
Zerotorescue@62
|
295 --addon.supportedAddons.itemCount[selectedExternalAddon]
|
Zerotorescue@62
|
296 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
|
297
|
Zerotorescue@62
|
298 if currentAddon.GetTotalCount and currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
299 t = t .. " This addon supports |cfffed000both total as local|r item counts.";
|
Zerotorescue@62
|
300 elseif currentAddon.GetTotalCount then
|
Zerotorescue@62
|
301 t = t .. " This addon supports |cfffed000only total|r item counts.";
|
Zerotorescue@62
|
302 elseif currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
303 t = t .. " This addon supports |cfffed000only local|r item counts.";
|
Zerotorescue@62
|
304 end
|
Zerotorescue@62
|
305
|
Zerotorescue@62
|
306 if preferedAddon ~= selectedAddonName then
|
Zerotorescue@62
|
307 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
|
308 end
|
Zerotorescue@62
|
309 end
|
Zerotorescue@62
|
310
|
Zerotorescue@62
|
311 return t;
|
Zerotorescue@62
|
312 end,
|
Zerotorescue@62
|
313 },
|
Zerotorescue@62
|
314 header = {
|
Zerotorescue@62
|
315 order = 5,
|
Zerotorescue@62
|
316 type = "header",
|
Zerotorescue@62
|
317 name = "",
|
Zerotorescue@106
|
318 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
319 },
|
Zerotorescue@62
|
320 overrideAuctionPricingAddon = {
|
Zerotorescue@62
|
321 order = 9,
|
Zerotorescue@62
|
322 type = "toggle",
|
Zerotorescue@62
|
323 name = "Override pricing addon",
|
Zerotorescue@62
|
324 desc = "Allows you to override the pricing addon setting for this group.",
|
Zerotorescue@62
|
325 arg = "auctionPricingAddon",
|
Zerotorescue@62
|
326 },
|
Zerotorescue@62
|
327 auctionPricingAddon = {
|
Zerotorescue@62
|
328 order = 10,
|
Zerotorescue@62
|
329 type = "select",
|
Zerotorescue@62
|
330 name = "Prefered pricing addon",
|
Zerotorescue@62
|
331 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
|
332 values = function()
|
Zerotorescue@62
|
333 local temp = {};
|
Zerotorescue@62
|
334 for name, value in pairs(addon.supportedAddons.auctionPricing) do
|
Zerotorescue@62
|
335 temp[name] = name;
|
Zerotorescue@62
|
336 end
|
Zerotorescue@62
|
337
|
Zerotorescue@62
|
338 return temp;
|
Zerotorescue@62
|
339 end,
|
Zerotorescue@62
|
340 set = function(info, value)
|
Zerotorescue@62
|
341 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
342 local optionName = info[#info];
|
Zerotorescue@62
|
343
|
Zerotorescue@62
|
344 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
345
|
Zerotorescue@62
|
346 if addon.supportedAddons.auctionPricing[value].OnSelect then
|
Zerotorescue@62
|
347 addon.supportedAddons.auctionPricing[value].OnSelect();
|
Zerotorescue@62
|
348 end
|
Zerotorescue@62
|
349 end,
|
Zerotorescue@62
|
350 arg = "overrideAuctionPricingAddon",
|
Zerotorescue@62
|
351 },
|
Zerotorescue@62
|
352 overrideItemCountAddon = {
|
Zerotorescue@62
|
353 order = 19,
|
Zerotorescue@62
|
354 type = "toggle",
|
Zerotorescue@62
|
355 name = "Override item count addon",
|
Zerotorescue@62
|
356 desc = "Allows you to override the item count addon setting for this group.",
|
Zerotorescue@62
|
357 arg = "itemCountAddon",
|
Zerotorescue@62
|
358 },
|
Zerotorescue@62
|
359 itemCountAddon = {
|
Zerotorescue@62
|
360 order = 20,
|
Zerotorescue@62
|
361 type = "select",
|
Zerotorescue@62
|
362 name = "Prefered item count addon",
|
Zerotorescue@62
|
363 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
|
364 values = function()
|
Zerotorescue@62
|
365 local temp = {};
|
Zerotorescue@62
|
366 for name, value in pairs(addon.supportedAddons.itemCount) do
|
Zerotorescue@62
|
367 temp[name] = name;
|
Zerotorescue@62
|
368 end
|
Zerotorescue@62
|
369
|
Zerotorescue@62
|
370 return temp;
|
Zerotorescue@62
|
371 end,
|
Zerotorescue@62
|
372 set = function(info, value)
|
Zerotorescue@62
|
373 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
374 local optionName = info[#info];
|
Zerotorescue@62
|
375
|
Zerotorescue@62
|
376 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
377
|
Zerotorescue@62
|
378 if addon.supportedAddons.itemCount[value].OnSelect then
|
Zerotorescue@62
|
379 addon.supportedAddons.itemCount[value].OnSelect();
|
Zerotorescue@62
|
380 end
|
Zerotorescue@62
|
381 end,
|
Zerotorescue@62
|
382 arg = "overrideItemCountAddon",
|
Zerotorescue@62
|
383 },
|
Zerotorescue@62
|
384 overrideCraftingAddon = {
|
Zerotorescue@62
|
385 order = 29,
|
Zerotorescue@62
|
386 type = "toggle",
|
Zerotorescue@62
|
387 name = "Override crafting addon",
|
Zerotorescue@62
|
388 desc = "Allows you to override the crafting addon setting for this group.",
|
Zerotorescue@62
|
389 arg = "craftingAddon",
|
Zerotorescue@62
|
390 },
|
Zerotorescue@62
|
391 craftingAddon = {
|
Zerotorescue@62
|
392 order = 30,
|
Zerotorescue@62
|
393 type = "select",
|
Zerotorescue@62
|
394 name = "Prefered crafting addon",
|
Zerotorescue@62
|
395 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
|
396 values = function()
|
Zerotorescue@62
|
397 local temp = {};
|
Zerotorescue@62
|
398 for name, value in pairs(addon.supportedAddons.crafting) do
|
Zerotorescue@62
|
399 temp[name] = name;
|
Zerotorescue@62
|
400 end
|
Zerotorescue@62
|
401
|
Zerotorescue@62
|
402 return temp;
|
Zerotorescue@62
|
403 end,
|
Zerotorescue@62
|
404 set = function(info, value)
|
Zerotorescue@62
|
405 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
406 local optionName = info[#info];
|
Zerotorescue@62
|
407
|
Zerotorescue@62
|
408 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
409
|
Zerotorescue@62
|
410 if addon.supportedAddons.crafting[value].OnSelect then
|
Zerotorescue@62
|
411 addon.supportedAddons.crafting[value].OnSelect();
|
Zerotorescue@62
|
412 end
|
Zerotorescue@62
|
413 end,
|
Zerotorescue@62
|
414 arg = "overrideCraftingAddon",
|
Zerotorescue@62
|
415 },
|
Zerotorescue@62
|
416 overrideLocalItemData = {
|
Zerotorescue@62
|
417 order = 39,
|
Zerotorescue@62
|
418 type = "toggle",
|
Zerotorescue@62
|
419 name = "Override local item data",
|
Zerotorescue@62
|
420 desc = "Allows you to override the local item data setting for this group.",
|
Zerotorescue@62
|
421 arg = "localItemData",
|
Zerotorescue@62
|
422 },
|
Zerotorescue@62
|
423 localItemData = {
|
Zerotorescue@62
|
424 order = 40,
|
Zerotorescue@62
|
425 type = "multiselect",
|
Zerotorescue@62
|
426 name = "Include in local item data",
|
Zerotorescue@62
|
427 desc = "Select which data should be included in the local item data.",
|
Zerotorescue@62
|
428 values = {
|
Zerotorescue@62
|
429 ["Bag"] = "Bag",
|
Zerotorescue@62
|
430 ["Bank"] = "Bank",
|
Zerotorescue@62
|
431 ["Auction House"] = "Auction House",
|
Zerotorescue@62
|
432 ["Mailbox"] = "Mailbox",
|
Zerotorescue@62
|
433 },
|
Zerotorescue@62
|
434 get = GetMultiOption,
|
Zerotorescue@65
|
435 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
|
436 arg = "overrideLocalItemData",
|
Zerotorescue@62
|
437 },
|
Zerotorescue@62
|
438 virtualGroup = {
|
Zerotorescue@62
|
439 order = 50,
|
Zerotorescue@62
|
440 type = "select",
|
Zerotorescue@62
|
441 name = "Use virtual group settings",
|
Zerotorescue@62
|
442 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
|
443 values = function(info)
|
Zerotorescue@62
|
444 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
445
|
Zerotorescue@62
|
446 local temp = {};
|
Zerotorescue@62
|
447
|
Zerotorescue@62
|
448 temp[""] = "";
|
Zerotorescue@62
|
449 for name, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
450 if values.isVirtual and name ~= groupName then
|
Zerotorescue@62
|
451 temp[name] = name;
|
Zerotorescue@62
|
452 end
|
Zerotorescue@62
|
453 end
|
Zerotorescue@62
|
454
|
Zerotorescue@62
|
455 return temp;
|
Zerotorescue@62
|
456 end,
|
Zerotorescue@62
|
457 set = function(info, value)
|
Zerotorescue@62
|
458 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
459 local optionName = info[#info];
|
Zerotorescue@62
|
460
|
Zerotorescue@62
|
461 addon.db.profile.groups[groupName][optionName] = value ~= "" and value;
|
Zerotorescue@62
|
462 end,
|
Zerotorescue@62
|
463 disabled = false,
|
Zerotorescue@62
|
464 },
|
Zerotorescue@62
|
465 },
|
Zerotorescue@62
|
466 },
|
Zerotorescue@62
|
467 minimumStock = {
|
Zerotorescue@62
|
468 order = 10,
|
Zerotorescue@62
|
469 type = "group",
|
Zerotorescue@62
|
470 inline = true,
|
Zerotorescue@62
|
471 name = "Minimum stock",
|
Zerotorescue@62
|
472 set = SetOption,
|
Zerotorescue@62
|
473 get = GetOption,
|
Zerotorescue@62
|
474 disabled = GetDisabled,
|
Zerotorescue@62
|
475 args = {
|
Zerotorescue@62
|
476 description = {
|
Zerotorescue@62
|
477 order = 0,
|
Zerotorescue@62
|
478 type = "description",
|
Zerotorescue@62
|
479 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@106
|
480 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
481 },
|
Zerotorescue@62
|
482 header = {
|
Zerotorescue@62
|
483 order = 5,
|
Zerotorescue@62
|
484 type = "header",
|
Zerotorescue@62
|
485 name = "",
|
Zerotorescue@106
|
486 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
487 },
|
Zerotorescue@62
|
488
|
Zerotorescue@62
|
489 overrideMinLocalStock = {
|
Zerotorescue@62
|
490 order = 10,
|
Zerotorescue@62
|
491 type = "toggle",
|
Zerotorescue@62
|
492 name = "Override min local stock",
|
Zerotorescue@62
|
493 desc = "Allows you to override the minimum local stock setting for this group.",
|
Zerotorescue@62
|
494 arg = "minLocalStock",
|
Zerotorescue@62
|
495 },
|
Zerotorescue@62
|
496 minLocalStock = {
|
Zerotorescue@62
|
497 order = 11,
|
Zerotorescue@62
|
498 type = "range",
|
Zerotorescue@62
|
499 min = 0,
|
Zerotorescue@62
|
500 max = 100000,
|
Zerotorescue@62
|
501 softMax = 100,
|
Zerotorescue@62
|
502 step = 1,
|
Zerotorescue@62
|
503 name = "Minimum local stock",
|
Zerotorescue@62
|
504 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
|
505 arg = "overrideMinLocalStock",
|
Zerotorescue@62
|
506 },
|
Zerotorescue@62
|
507 overrideAlertBelowLocalMinimum = {
|
Zerotorescue@62
|
508 order = 15,
|
Zerotorescue@62
|
509 type = "toggle",
|
Zerotorescue@62
|
510 name = "Override local minimum alert",
|
Zerotorescue@62
|
511 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
|
512 arg = "alertBelowLocalMinimum",
|
Zerotorescue@62
|
513 },
|
Zerotorescue@62
|
514 alertBelowLocalMinimum = {
|
Zerotorescue@62
|
515 order = 16,
|
Zerotorescue@62
|
516 type = "toggle",
|
Zerotorescue@62
|
517 name = "Alert when below local minimum (NYI)",
|
Zerotorescue@62
|
518 desc = "Show an alert when an item in this group gets below the local minimum stock threshold.",
|
Zerotorescue@62
|
519 arg = "overrideAlertBelowLocalMinimum",
|
Zerotorescue@62
|
520 },
|
Zerotorescue@82
|
521 overrideAutoRefill = {
|
Zerotorescue@82
|
522 order = 17,
|
Zerotorescue@82
|
523 type = "toggle",
|
Zerotorescue@82
|
524 name = "Override auto refill",
|
Zerotorescue@82
|
525 desc = "Allows you to override wether you want to automatically refill items when below the minimum local stock.",
|
Zerotorescue@82
|
526 arg = "autoRefill",
|
Zerotorescue@82
|
527 },
|
Zerotorescue@82
|
528 autoRefill = {
|
Zerotorescue@82
|
529 order = 18,
|
Zerotorescue@82
|
530 type = "toggle",
|
Zerotorescue@82
|
531 name = "Auto refill from (guild) bank",
|
Zerotorescue@82
|
532 desc = "Automatically refill items from the bank (unless this is included in the local count) or guild bank when below the minimum local stock.",
|
Zerotorescue@82
|
533 arg = "overrideAutoRefill",
|
Zerotorescue@82
|
534 },
|
Zerotorescue@62
|
535
|
Zerotorescue@62
|
536 overrideMinGlobalStock = {
|
Zerotorescue@62
|
537 order = 20,
|
Zerotorescue@62
|
538 type = "toggle",
|
Zerotorescue@62
|
539 name = "Override min global stock",
|
Zerotorescue@62
|
540 desc = "Allows you to override the minimum global stock setting for this group.",
|
Zerotorescue@62
|
541 arg = "minGlobalStock",
|
Zerotorescue@62
|
542 },
|
Zerotorescue@62
|
543 minGlobalStock = {
|
Zerotorescue@62
|
544 order = 21,
|
Zerotorescue@62
|
545 type = "range",
|
Zerotorescue@62
|
546 min = 0,
|
Zerotorescue@62
|
547 max = 100000,
|
Zerotorescue@62
|
548 softMax = 100,
|
Zerotorescue@62
|
549 step = 1,
|
Zerotorescue@62
|
550 name = "Minimum global stock",
|
Zerotorescue@62
|
551 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
|
552 arg = "overrideMinGlobalStock",
|
Zerotorescue@62
|
553 },
|
Zerotorescue@62
|
554 overrideAlertBelowGlobalMinimum = {
|
Zerotorescue@62
|
555 order = 25,
|
Zerotorescue@62
|
556 type = "toggle",
|
Zerotorescue@62
|
557 name = "Override global minimum alert",
|
Zerotorescue@62
|
558 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
|
559 arg = "alertBelowGlobalMinimum",
|
Zerotorescue@62
|
560 },
|
Zerotorescue@62
|
561 alertBelowGlobalMinimum = {
|
Zerotorescue@62
|
562 order = 26,
|
Zerotorescue@62
|
563 type = "toggle",
|
Zerotorescue@62
|
564 name = "Alert when below global minimum (NYI)",
|
Zerotorescue@62
|
565 desc = "Show an alert when an item in this group gets below the global minimum stock threshold.",
|
Zerotorescue@62
|
566 arg = "overrideAlertBelowGlobalMinimum",
|
Zerotorescue@62
|
567 },
|
Zerotorescue@62
|
568
|
Zerotorescue@62
|
569 overrideSummaryThresholdShow = {
|
Zerotorescue@62
|
570 order = 34,
|
Zerotorescue@62
|
571 type = "toggle",
|
Zerotorescue@62
|
572 name = "Override summary showing",
|
Zerotorescue@62
|
573 desc = "Allows you to override when this group should appear in the summary.",
|
Zerotorescue@62
|
574 arg = "summaryThresholdShow",
|
Zerotorescue@62
|
575 },
|
Zerotorescue@62
|
576 summaryThresholdShow = {
|
Zerotorescue@62
|
577 order = 35,
|
Zerotorescue@62
|
578 type = "range",
|
Zerotorescue@62
|
579 min = 0,
|
Zerotorescue@62
|
580 max = 10,
|
Zerotorescue@62
|
581 softMax = 100,
|
Zerotorescue@62
|
582 step = 0.05,
|
Zerotorescue@62
|
583 isPercent = true,
|
Zerotorescue@62
|
584 name = "Show in summary when below",
|
Zerotorescue@62
|
585 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
|
586 arg = "overrideSummaryThresholdShow",
|
Zerotorescue@62
|
587 },
|
Zerotorescue@62
|
588 overrideTrackAtCharacters = {
|
Zerotorescue@62
|
589 order = 39,
|
Zerotorescue@62
|
590 type = "toggle",
|
Zerotorescue@62
|
591 name = "Override track at",
|
Zerotorescue@62
|
592 desc = "Allows you to override at which characters items in this group should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
593 arg = "trackAtCharacters",
|
Zerotorescue@62
|
594 },
|
Zerotorescue@62
|
595 trackAtCharacters = {
|
Zerotorescue@62
|
596 order = 40,
|
Zerotorescue@62
|
597 type = "multiselect",
|
Zerotorescue@62
|
598 name = "Track at",
|
Zerotorescue@62
|
599 desc = "Select at which characters this should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
600 values = function()
|
Zerotorescue@62
|
601 local temp = {};
|
Zerotorescue@62
|
602 for charName in pairs(addon.db.factionrealm.characters) do
|
Zerotorescue@62
|
603 temp[charName] = charName;
|
Zerotorescue@62
|
604 end
|
Zerotorescue@62
|
605
|
Zerotorescue@62
|
606 return temp;
|
Zerotorescue@62
|
607 end,
|
Zerotorescue@62
|
608 get = GetMultiOption,
|
Zerotorescue@65
|
609 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
|
610 arg = "overrideTrackAtCharacters",
|
Zerotorescue@62
|
611 },
|
Zerotorescue@62
|
612 },
|
Zerotorescue@62
|
613 },
|
Zerotorescue@62
|
614 refill = {
|
Zerotorescue@62
|
615 order = 20,
|
Zerotorescue@62
|
616 type = "group",
|
Zerotorescue@62
|
617 inline = true,
|
Zerotorescue@62
|
618 name = "Replenishing stock",
|
Zerotorescue@62
|
619 set = SetOption,
|
Zerotorescue@62
|
620 get = GetOption,
|
Zerotorescue@62
|
621 disabled = GetDisabled,
|
Zerotorescue@62
|
622 args = {
|
Zerotorescue@62
|
623 description = {
|
Zerotorescue@62
|
624 order = 0,
|
Zerotorescue@62
|
625 type = "description",
|
Zerotorescue@62
|
626 name = function(info)
|
Zerotorescue@62
|
627 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
628 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
|
629
|
Zerotorescue@62
|
630 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
|
631
|
Zerotorescue@62
|
632 if addon:GetOptionByKey(groupName, "priceThreshold") == 0 then
|
Zerotorescue@62
|
633 r = r .. "Queueing items at |cfffed000any|r auction value.";
|
Zerotorescue@62
|
634 else
|
Zerotorescue@62
|
635 r = r .. "Queueing items worth |cfffed000" .. addon:ReadableMoney(addon:GetOptionByKey(groupName, "priceThreshold")) .. "|r or more.";
|
Zerotorescue@62
|
636 end
|
Zerotorescue@62
|
637
|
Zerotorescue@62
|
638 return r;
|
Zerotorescue@62
|
639 end,
|
Zerotorescue@106
|
640 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
641 },
|
Zerotorescue@62
|
642 header = {
|
Zerotorescue@62
|
643 order = 5,
|
Zerotorescue@62
|
644 type = "header",
|
Zerotorescue@62
|
645 name = "",
|
Zerotorescue@106
|
646 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
647 },
|
Zerotorescue@62
|
648 overrideRestockTarget = {
|
Zerotorescue@62
|
649 order = 9,
|
Zerotorescue@62
|
650 type = "toggle",
|
Zerotorescue@62
|
651 name = "Override restock target",
|
Zerotorescue@62
|
652 desc = "Allows you to override the restock target setting for this group.",
|
Zerotorescue@62
|
653 arg = "restockTarget",
|
Zerotorescue@62
|
654 },
|
Zerotorescue@62
|
655 restockTarget = {
|
Zerotorescue@62
|
656 order = 10,
|
Zerotorescue@62
|
657 type = "range",
|
Zerotorescue@62
|
658 min = 0,
|
Zerotorescue@62
|
659 max = 100000,
|
Zerotorescue@62
|
660 softMax = 100,
|
Zerotorescue@62
|
661 step = 1,
|
Zerotorescue@62
|
662 name = "Restock target",
|
Zerotorescue@62
|
663 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
664 arg = "overrideRestockTarget",
|
Zerotorescue@62
|
665 },
|
Zerotorescue@62
|
666 overrideMinCraftingQueue = {
|
Zerotorescue@62
|
667 order = 19,
|
Zerotorescue@62
|
668 type = "toggle",
|
Zerotorescue@62
|
669 name = "Override min queue",
|
Zerotorescue@62
|
670 desc = "Allows you to override the minimum craftable items queue setting for this group.",
|
Zerotorescue@62
|
671 arg = "minCraftingQueue",
|
Zerotorescue@62
|
672 },
|
Zerotorescue@62
|
673 minCraftingQueue = {
|
Zerotorescue@62
|
674 order = 20,
|
Zerotorescue@62
|
675 type = "range",
|
Zerotorescue@62
|
676 min = 0,
|
Zerotorescue@62
|
677 max = 1,
|
Zerotorescue@62
|
678 step = 0.01,
|
Zerotorescue@62
|
679 isPercent = true,
|
Zerotorescue@62
|
680 name = "Don't queue if I only miss",
|
Zerotorescue@62
|
681 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
|
682 arg = "overrideMinCraftingQueue",
|
Zerotorescue@62
|
683 },
|
Zerotorescue@62
|
684 overrideBonusQueue = {
|
Zerotorescue@62
|
685 order = 29,
|
Zerotorescue@62
|
686 type = "toggle",
|
Zerotorescue@62
|
687 name = "Override bonus queue",
|
Zerotorescue@62
|
688 desc = "Allows you to override the bonus craftable items queue setting for this group.",
|
Zerotorescue@62
|
689 arg = "bonusQueue",
|
Zerotorescue@62
|
690 },
|
Zerotorescue@62
|
691 bonusQueue = {
|
Zerotorescue@62
|
692 order = 30,
|
Zerotorescue@62
|
693 type = "range",
|
Zerotorescue@62
|
694 min = 0,
|
Zerotorescue@62
|
695 max = 10, -- 1000%
|
Zerotorescue@62
|
696 step = 0.01, -- 1%
|
Zerotorescue@62
|
697 isPercent = true,
|
Zerotorescue@62
|
698 name = "Bonus queue",
|
Zerotorescue@62
|
699 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
|
700 arg = "overrideBonusQueue",
|
Zerotorescue@62
|
701 },
|
Zerotorescue@62
|
702 overridePriceThreshold = {
|
Zerotorescue@62
|
703 order = 39,
|
Zerotorescue@62
|
704 type = "toggle",
|
Zerotorescue@62
|
705 name = "Override price threshold",
|
Zerotorescue@62
|
706 desc = "Allows you to override the price threshold setting for this group.",
|
Zerotorescue@62
|
707 arg = "priceThreshold",
|
Zerotorescue@62
|
708 },
|
Zerotorescue@62
|
709 priceThreshold = {
|
Zerotorescue@62
|
710 order = 40,
|
Zerotorescue@62
|
711 type = "input",
|
Zerotorescue@62
|
712 name = "Price threshold",
|
Zerotorescue@62
|
713 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
|
714 validate = function(info, value) return addon:ValidateReadableMoney(info, value); end,
|
Zerotorescue@62
|
715 get = function(i) return addon:ReadableMoney(GetOption(i)); end,
|
Zerotorescue@62
|
716 set = function(i, v) SetOption(i, addon:ReadableMoneyToCopper(v)); end,
|
Zerotorescue@62
|
717 arg = "overridePriceThreshold",
|
Zerotorescue@62
|
718 },
|
Zerotorescue@62
|
719 overrideSummaryHidePriceThreshold = {
|
Zerotorescue@62
|
720 order = 49,
|
Zerotorescue@62
|
721 type = "toggle",
|
Zerotorescue@62
|
722 name = "Override summary showing",
|
Zerotorescue@62
|
723 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
|
724 arg = "summaryHidePriceThreshold",
|
Zerotorescue@62
|
725 },
|
Zerotorescue@62
|
726 summaryHidePriceThreshold = {
|
Zerotorescue@62
|
727 order = 50,
|
Zerotorescue@62
|
728 type = "toggle",
|
Zerotorescue@62
|
729 name = "Hide when below threshold",
|
Zerotorescue@62
|
730 desc = "Hide items from the summary when their value is below the set price threshold.",
|
Zerotorescue@62
|
731 arg = "overrideSummaryHidePriceThreshold",
|
Zerotorescue@62
|
732 },
|
Zerotorescue@62
|
733 overrideAlwaysGetAuctionValue = {
|
Zerotorescue@62
|
734 order = 59,
|
Zerotorescue@62
|
735 type = "toggle",
|
Zerotorescue@62
|
736 name = "Override auction value showing",
|
Zerotorescue@62
|
737 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
|
738 arg = "alwaysGetAuctionValue",
|
Zerotorescue@62
|
739 },
|
Zerotorescue@62
|
740 alwaysGetAuctionValue = {
|
Zerotorescue@62
|
741 order = 60,
|
Zerotorescue@62
|
742 type = "toggle",
|
Zerotorescue@62
|
743 name = "Always show auction value",
|
Zerotorescue@62
|
744 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
|
745 arg = "overrideAlwaysGetAuctionValue",
|
Zerotorescue@62
|
746 },
|
Zerotorescue@62
|
747 },
|
Zerotorescue@62
|
748 },
|
Zerotorescue@62
|
749 },
|
Zerotorescue@62
|
750 },
|
Zerotorescue@62
|
751 group = {
|
Zerotorescue@62
|
752 order = 20,
|
Zerotorescue@62
|
753 type = "group",
|
Zerotorescue@62
|
754 name = "Management",
|
Zerotorescue@62
|
755 desc = "Rename, delete, duplicate or export this group.",
|
Zerotorescue@62
|
756 args = {
|
Zerotorescue@62
|
757 actions = {
|
Zerotorescue@62
|
758 order = 10,
|
Zerotorescue@62
|
759 type = "group",
|
Zerotorescue@62
|
760 name = "Actions",
|
Zerotorescue@62
|
761 inline = true,
|
Zerotorescue@62
|
762 args = {
|
Zerotorescue@62
|
763 rename = {
|
Zerotorescue@62
|
764 order = 10,
|
Zerotorescue@62
|
765 type = "input",
|
Zerotorescue@62
|
766 name = "Rename group - New name",
|
Zerotorescue@62
|
767 desc = "Change the name of this group to something else. You can also use item links here as you wish.",
|
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 addon.db.profile.groups[oldGroupName] = nil;
|
Zerotorescue@62
|
774
|
Zerotorescue@62
|
775 groupIdToName[info[2]] = value;
|
Zerotorescue@62
|
776 groupIdToName[value] = true;
|
Zerotorescue@62
|
777 groupIdToName[oldGroupName] = nil;
|
Zerotorescue@62
|
778
|
Zerotorescue@62
|
779 mod:FillGroupOptions();
|
Zerotorescue@62
|
780 end,
|
Zerotorescue@62
|
781 get = function(info)
|
Zerotorescue@62
|
782 return groupIdToName[info[2]];
|
Zerotorescue@62
|
783 end,
|
Zerotorescue@62
|
784 },
|
Zerotorescue@62
|
785 duplicate = {
|
Zerotorescue@62
|
786 order = 20,
|
Zerotorescue@62
|
787 type = "input",
|
Zerotorescue@62
|
788 name = "Duplicate group - New name",
|
Zerotorescue@62
|
789 desc = "Duplicate this group. You can also use item links here as you wish.\n\nAll item data will be erased.",
|
Zerotorescue@62
|
790 validate = ValidateGroupName,
|
Zerotorescue@62
|
791 set = function(info, value)
|
Zerotorescue@62
|
792 local oldGroupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
793
|
Zerotorescue@62
|
794 addon.db.profile.groups[value] = CopyTable(addon.db.profile.groups[oldGroupName]);
|
Zerotorescue@62
|
795
|
Zerotorescue@62
|
796 -- Reset item data (duplicate items me no want)
|
Zerotorescue@62
|
797 addon.db.profile.groups[value].items = nil;
|
Zerotorescue@62
|
798
|
Zerotorescue@62
|
799 mod:FillGroupOptions();
|
Zerotorescue@62
|
800 end,
|
Zerotorescue@62
|
801 get = false,
|
Zerotorescue@62
|
802 },
|
Zerotorescue@62
|
803 delete = {
|
Zerotorescue@62
|
804 order = 30,
|
Zerotorescue@62
|
805 type = "execute",
|
Zerotorescue@62
|
806 name = "Delete group",
|
Zerotorescue@62
|
807 desc = "Delete the currently selected group.",
|
Zerotorescue@62
|
808 confirm = true,
|
Zerotorescue@62
|
809 confirmText = "Are you sure you wish to |cffff0000DELETE|r this group? This action is not reversable!",
|
Zerotorescue@62
|
810 func = function(info)
|
Zerotorescue@62
|
811 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
812
|
Zerotorescue@62
|
813 addon.db.profile.groups[groupName] = nil;
|
Zerotorescue@62
|
814
|
Zerotorescue@62
|
815 mod:FillGroupOptions();
|
Zerotorescue@62
|
816 end,
|
Zerotorescue@62
|
817 },
|
Zerotorescue@62
|
818 },
|
Zerotorescue@62
|
819 },
|
Zerotorescue@62
|
820 export = {
|
Zerotorescue@62
|
821 order = 40,
|
Zerotorescue@62
|
822 type = "group",
|
Zerotorescue@62
|
823 name = "Export",
|
Zerotorescue@62
|
824 inline = true,
|
Zerotorescue@62
|
825 args = {
|
Zerotorescue@62
|
826 input = {
|
Zerotorescue@62
|
827 order = 10,
|
Zerotorescue@62
|
828 type = "input",
|
Zerotorescue@62
|
829 multiline = true,
|
Zerotorescue@62
|
830 name = "Group data",
|
Zerotorescue@62
|
831 width = "full",
|
Zerotorescue@62
|
832 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
|
833 set = false,
|
Zerotorescue@62
|
834 get = function(info)
|
Zerotorescue@62
|
835 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
836
|
Zerotorescue@62
|
837 -- We want to include the group name, so we copy the table then set another value
|
Zerotorescue@62
|
838 local temp = CopyTable(addon.db.profile.groups[groupName]);
|
Zerotorescue@62
|
839 temp.name = groupName;
|
Zerotorescue@62
|
840 temp.trackAtCharacters = nil;
|
Zerotorescue@62
|
841 temp.overrideTrackAtCharacters = nil;
|
Zerotorescue@62
|
842
|
Zerotorescue@62
|
843 if not AceSerializer then
|
Zerotorescue@62
|
844 AceSerializer = LibStub("AceSerializer-3.0");
|
Zerotorescue@62
|
845 end
|
Zerotorescue@62
|
846
|
Zerotorescue@62
|
847 return AceSerializer:Serialize(temp);
|
Zerotorescue@62
|
848 end,
|
Zerotorescue@62
|
849 },
|
Zerotorescue@62
|
850 },
|
Zerotorescue@62
|
851 },
|
Zerotorescue@62
|
852 },
|
Zerotorescue@62
|
853 },
|
Zerotorescue@62
|
854 add = {
|
Zerotorescue@62
|
855 order = 30,
|
Zerotorescue@62
|
856 type = "group",
|
Zerotorescue@62
|
857 name = "Add items",
|
Zerotorescue@62
|
858 desc = "Add new items to this group.",
|
Zerotorescue@62
|
859 hidden = function(info) return groupIsVirtual[info[2]]; end,
|
Zerotorescue@62
|
860 args = {
|
Zerotorescue@62
|
861 singleAdd = {
|
Zerotorescue@62
|
862 order = 10,
|
Zerotorescue@62
|
863 type = "group",
|
Zerotorescue@62
|
864 inline = true,
|
Zerotorescue@62
|
865 name = "Add items",
|
Zerotorescue@62
|
866 args = {
|
Zerotorescue@62
|
867 help = {
|
Zerotorescue@62
|
868 order = 10,
|
Zerotorescue@62
|
869 type = "description",
|
Zerotorescue@62
|
870 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@106
|
871 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
872 },
|
Zerotorescue@62
|
873 itemLink = {
|
Zerotorescue@62
|
874 order = 20,
|
Zerotorescue@62
|
875 type = "input",
|
Zerotorescue@62
|
876 name = "Single item add (item-link or item-id)",
|
Zerotorescue@62
|
877 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
|
878 validate = function(info, value)
|
Zerotorescue@62
|
879 -- If the value is empty we'll allow passing to clear the carret
|
Zerotorescue@62
|
880 if value == "" then return true; end
|
Zerotorescue@62
|
881
|
Zerotorescue@62
|
882 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
883
|
Zerotorescue@76
|
884 local itemId = (addon:GetItemId(string.trim(value)) or tonumber(string.trim(value)));
|
Zerotorescue@76
|
885
|
Zerotorescue@76
|
886 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
887
|
Zerotorescue@62
|
888 if not itemId then
|
Zerotorescue@76
|
889 return "This is not a valid item link or id.";
|
Zerotorescue@76
|
890 elseif itemData:InGroup() then
|
Zerotorescue@76
|
891 return ("This item is already in the group |cfffed000%s|r."):format(itemData:InGroup());
|
Zerotorescue@62
|
892 end
|
Zerotorescue@62
|
893
|
Zerotorescue@62
|
894 return true;
|
Zerotorescue@62
|
895 end,
|
Zerotorescue@62
|
896 set = function(info, value)
|
Zerotorescue@62
|
897 if value and value ~= "" then
|
Zerotorescue@62
|
898 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
899
|
Zerotorescue@76
|
900 local itemId = (addon:GetItemId(string.trim(value)) or tonumber(string.trim(value)));
|
Zerotorescue@62
|
901
|
Zerotorescue@76
|
902 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
903
|
Zerotorescue@76
|
904 if itemData:AddToGroup(groupName) then
|
Zerotorescue@98
|
905 addon:Print(("Added %s to the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Green);
|
Zerotorescue@76
|
906
|
Zerotorescue@76
|
907 if AceConfigRegistry then
|
Zerotorescue@76
|
908 -- Now rebuild the list
|
Zerotorescue@76
|
909 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
910 end
|
Zerotorescue@76
|
911 else
|
Zerotorescue@98
|
912 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
|
913 end
|
Zerotorescue@62
|
914 end
|
Zerotorescue@62
|
915 end,
|
Zerotorescue@62
|
916 get = false,
|
Zerotorescue@62
|
917 },
|
Zerotorescue@62
|
918 importItemData = {
|
Zerotorescue@62
|
919 order = 30,
|
Zerotorescue@62
|
920 type = "input",
|
Zerotorescue@62
|
921 name = "Import item data",
|
Zerotorescue@62
|
922 desc = "Import item data from an exported item data-string. Any items already grouped will be skipped.",
|
Zerotorescue@62
|
923 set = function(info, value)
|
Zerotorescue@62
|
924 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
925
|
Zerotorescue@62
|
926 local allItemIds = { string.split(";", value or "") };
|
Zerotorescue@62
|
927
|
Zerotorescue@62
|
928 for _, value in pairs(allItemIds) do
|
Zerotorescue@62
|
929 local itemId = tonumber(value);
|
Zerotorescue@62
|
930
|
Zerotorescue@76
|
931 if itemId then
|
Zerotorescue@76
|
932 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
933
|
Zerotorescue@76
|
934 if itemData:InGroup() then
|
Zerotorescue@98
|
935 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@98
|
936 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
|
937 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@98
|
938 addon:Print(("Added %s to the group |cfffed000%s|r."):format(itemData.link or unknownItemName:format(itemId), groupName), addon.Colors.Green);
|
Zerotorescue@76
|
939 end
|
Zerotorescue@62
|
940 else
|
Zerotorescue@98
|
941 addon:Print(("\"%s\" is not a number."):format(value), addon.Colors.Red);
|
Zerotorescue@62
|
942 end
|
Zerotorescue@62
|
943 end
|
Zerotorescue@76
|
944
|
Zerotorescue@76
|
945 if AceConfigRegistry then
|
Zerotorescue@76
|
946 -- Now rebuild the list
|
Zerotorescue@76
|
947 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
948 end
|
Zerotorescue@62
|
949 end,
|
Zerotorescue@62
|
950 get = false,
|
Zerotorescue@62
|
951 },
|
Zerotorescue@62
|
952 importPremadeData = {
|
Zerotorescue@62
|
953 order = 40,
|
Zerotorescue@62
|
954 type = "select",
|
Zerotorescue@106
|
955 width = "double",
|
Zerotorescue@62
|
956 name = "Import premade data",
|
Zerotorescue@62
|
957 desc = "Import item data from a premade item-group. Any items already grouped will be skipped.",
|
Zerotorescue@62
|
958 values = function()
|
Zerotorescue@62
|
959 local temp = {};
|
Zerotorescue@62
|
960 for key, group in pairs(addon.defaultGroups) do
|
Zerotorescue@62
|
961 temp[key] = key;
|
Zerotorescue@62
|
962 end
|
Zerotorescue@62
|
963
|
Zerotorescue@62
|
964 return temp;
|
Zerotorescue@62
|
965 end,
|
Zerotorescue@62
|
966 set = function(info, value)
|
Zerotorescue@62
|
967 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
968
|
Zerotorescue@98
|
969 addon:Print(("Importing items from the premade group \"|cfffed000%s|r\"."):format(value));
|
Zerotorescue@62
|
970
|
Zerotorescue@62
|
971 -- Remember we imported this group and it's version so if it is ever changed, people can be notified
|
Zerotorescue@62
|
972 if not addon.db.profile.groups[groupName].premadeGroups then
|
Zerotorescue@62
|
973 addon.db.profile.groups[groupName].premadeGroups = {};
|
Zerotorescue@62
|
974 end
|
Zerotorescue@62
|
975 addon.db.profile.groups[groupName].premadeGroups[value] = addon.defaultGroups[value].version;
|
Zerotorescue@62
|
976
|
Zerotorescue@62
|
977 for itemId, version in pairs(addon.defaultGroups[value].items) do
|
Zerotorescue@62
|
978 if version > 0 then
|
Zerotorescue@76
|
979 -- Sanity check
|
Zerotorescue@62
|
980 itemId = itemId and tonumber(itemId);
|
Zerotorescue@62
|
981
|
Zerotorescue@76
|
982 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
983
|
Zerotorescue@62
|
984 if not itemId then
|
Zerotorescue@98
|
985 addon:Print(("\"|cfffed000%s|r\" is not a number."):format(value), addon.Colors.Red);
|
Zerotorescue@76
|
986 elseif itemData:InGroup() then
|
Zerotorescue@98
|
987 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
|
988 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@98
|
989 addon:Print(("Added %s to the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), groupName ), addon.Colors.Green);
|
Zerotorescue@62
|
990 end
|
Zerotorescue@62
|
991 end
|
Zerotorescue@62
|
992 end
|
Zerotorescue@76
|
993
|
Zerotorescue@76
|
994 if AceConfigRegistry then
|
Zerotorescue@76
|
995 -- Now rebuild the list
|
Zerotorescue@76
|
996 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
997 end
|
Zerotorescue@62
|
998 end,
|
Zerotorescue@62
|
999 get = false,
|
Zerotorescue@62
|
1000 },
|
Zerotorescue@62
|
1001 },
|
Zerotorescue@62
|
1002 },
|
Zerotorescue@62
|
1003 massAdd = {
|
Zerotorescue@62
|
1004 order = 20,
|
Zerotorescue@62
|
1005 type = "group",
|
Zerotorescue@62
|
1006 inline = true,
|
Zerotorescue@62
|
1007 name = "Mass add",
|
Zerotorescue@62
|
1008 args = {
|
Zerotorescue@62
|
1009 help = {
|
Zerotorescue@62
|
1010 order = 10,
|
Zerotorescue@62
|
1011 type = "description",
|
Zerotorescue@62
|
1012 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@106
|
1013 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1014 },
|
Zerotorescue@62
|
1015 massAdd = {
|
Zerotorescue@62
|
1016 order = 20,
|
Zerotorescue@62
|
1017 type = "input",
|
Zerotorescue@62
|
1018 name = "Add all items matching...",
|
Zerotorescue@62
|
1019 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
|
1020 set = function(info, value)
|
Zerotorescue@62
|
1021 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1022
|
Zerotorescue@62
|
1023 if not value then return; end
|
Zerotorescue@62
|
1024
|
Zerotorescue@62
|
1025 value = value:lower();
|
Zerotorescue@62
|
1026
|
Zerotorescue@62
|
1027 local ref = options.args.groups.args[info[2]].args.add.args.list.args;
|
Zerotorescue@62
|
1028
|
Zerotorescue@62
|
1029 for itemId, test in pairs(ref) do
|
Zerotorescue@62
|
1030 if test then
|
Zerotorescue@76
|
1031 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
1032
|
Zerotorescue@76
|
1033 if itemData.name:lower():find(value) then
|
Zerotorescue@76
|
1034 if itemData:AddToGroup(groupName) then
|
Zerotorescue@98
|
1035 addon:Print(("Added %s to the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Green);
|
Zerotorescue@76
|
1036 else
|
Zerotorescue@98
|
1037 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
|
1038 end
|
Zerotorescue@62
|
1039 end
|
Zerotorescue@62
|
1040 end
|
Zerotorescue@62
|
1041 end
|
Zerotorescue@76
|
1042
|
Zerotorescue@76
|
1043 if AceConfigRegistry then
|
Zerotorescue@76
|
1044 -- Now rebuild the list
|
Zerotorescue@76
|
1045 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
1046 end
|
Zerotorescue@62
|
1047 end,
|
Zerotorescue@62
|
1048 get = false,
|
Zerotorescue@62
|
1049 },
|
Zerotorescue@62
|
1050 minItemLevel = {
|
Zerotorescue@62
|
1051 order = 40,
|
Zerotorescue@62
|
1052 type = "select",
|
Zerotorescue@62
|
1053 values = function()
|
Zerotorescue@62
|
1054 local temp = {};
|
Zerotorescue@62
|
1055
|
Zerotorescue@62
|
1056 temp[0] = "Include everything";
|
Zerotorescue@62
|
1057
|
Zerotorescue@62
|
1058 local itemLevelTemplate = "Itemlevel >= %d";
|
Zerotorescue@62
|
1059
|
Zerotorescue@62
|
1060 for i = 1, 49 do
|
Zerotorescue@62
|
1061 temp[( i * 10 )] = itemLevelTemplate:format(( i * 10 ));
|
Zerotorescue@62
|
1062 end
|
Zerotorescue@62
|
1063
|
Zerotorescue@62
|
1064 temp[500] = "Include nothing";
|
Zerotorescue@62
|
1065
|
Zerotorescue@62
|
1066 return temp;
|
Zerotorescue@62
|
1067 end,
|
Zerotorescue@62
|
1068 name = "Include tradeskill items",
|
Zerotorescue@62
|
1069 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
|
1070 set = function(i, v) includeTradeSkillItems = v; end,
|
Zerotorescue@62
|
1071 get = function() return includeTradeSkillItems; end,
|
Zerotorescue@62
|
1072 disabled = function()
|
Zerotorescue@62
|
1073 if GetTradeSkillLine() == "UNKNOWN" then
|
Zerotorescue@62
|
1074 includeTradeSkillItems = 500;
|
Zerotorescue@62
|
1075 return true; -- disabled
|
Zerotorescue@62
|
1076 else
|
Zerotorescue@62
|
1077 return false;
|
Zerotorescue@62
|
1078 end
|
Zerotorescue@62
|
1079 end,
|
Zerotorescue@62
|
1080 },
|
Zerotorescue@62
|
1081 },
|
Zerotorescue@62
|
1082 },
|
Zerotorescue@62
|
1083 list = {
|
Zerotorescue@62
|
1084 order = 30,
|
Zerotorescue@62
|
1085 type = "group",
|
Zerotorescue@62
|
1086 inline = true,
|
Zerotorescue@62
|
1087 name = "Item list",
|
Zerotorescue@62
|
1088 hidden = UpdateAddItemList,
|
Zerotorescue@62
|
1089 args = {
|
Zerotorescue@62
|
1090
|
Zerotorescue@62
|
1091 },
|
Zerotorescue@62
|
1092 },
|
Zerotorescue@62
|
1093 },
|
Zerotorescue@62
|
1094 },
|
Zerotorescue@62
|
1095 remove = {
|
Zerotorescue@62
|
1096 order = 40,
|
Zerotorescue@62
|
1097 type = "group",
|
Zerotorescue@62
|
1098 name = "Current items",
|
Zerotorescue@62
|
1099 desc = "View, export or remove items from this group.",
|
Zerotorescue@62
|
1100 hidden = function(info) return groupIsVirtual[info[2]]; end,
|
Zerotorescue@62
|
1101 args = {
|
Zerotorescue@62
|
1102 help = {
|
Zerotorescue@62
|
1103 order = 10,
|
Zerotorescue@62
|
1104 type = "group",
|
Zerotorescue@62
|
1105 inline = true,
|
Zerotorescue@106
|
1106 name = "Remove items",
|
Zerotorescue@62
|
1107 hidden = false,
|
Zerotorescue@62
|
1108 args = {
|
Zerotorescue@62
|
1109 help = {
|
Zerotorescue@62
|
1110 order = 10,
|
Zerotorescue@62
|
1111 type = "description",
|
Zerotorescue@62
|
1112 name = "Click the items you wish to remove from this group.",
|
Zerotorescue@106
|
1113 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1114 },
|
Zerotorescue@62
|
1115 massRemove = {
|
Zerotorescue@62
|
1116 order = 20,
|
Zerotorescue@62
|
1117 type = "input",
|
Zerotorescue@62
|
1118 name = "Remove all items matching...",
|
Zerotorescue@62
|
1119 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
|
1120 set = function(info, value)
|
Zerotorescue@62
|
1121 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1122
|
Zerotorescue@62
|
1123 if not value then return; end
|
Zerotorescue@62
|
1124
|
Zerotorescue@62
|
1125 value = value:lower();
|
Zerotorescue@62
|
1126
|
Zerotorescue@62
|
1127 local ref = options.args.groups.args[info[2]].args.remove.args.list.args;
|
Zerotorescue@62
|
1128
|
Zerotorescue@62
|
1129 for itemId, test in pairs(ref) do
|
Zerotorescue@62
|
1130 if test then
|
Zerotorescue@76
|
1131 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@62
|
1132
|
Zerotorescue@76
|
1133 if itemData.name:lower():find(value) then
|
Zerotorescue@76
|
1134 itemData:RemoveFromGroup(groupName);
|
Zerotorescue@76
|
1135
|
Zerotorescue@98
|
1136 addon:Print(("Removed %s from the selected group."):format( (itemData.link or unknownItemName:format(itemId)) ), addon.Colors.Red);
|
Zerotorescue@62
|
1137 end
|
Zerotorescue@62
|
1138 end
|
Zerotorescue@62
|
1139 end
|
Zerotorescue@62
|
1140
|
Zerotorescue@76
|
1141 if AceConfigRegistry then
|
Zerotorescue@76
|
1142 -- Now rebuild the list
|
Zerotorescue@76
|
1143 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
1144 end
|
Zerotorescue@62
|
1145 end,
|
Zerotorescue@62
|
1146 get = false,
|
Zerotorescue@62
|
1147 },
|
Zerotorescue@62
|
1148 premadeGroups = {
|
Zerotorescue@62
|
1149 order = 30,
|
Zerotorescue@62
|
1150 type = "select",
|
Zerotorescue@106
|
1151 width = "double",
|
Zerotorescue@62
|
1152 name = "Imported premade groups",
|
Zerotorescue@62
|
1153 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
|
1154 values = function(info)
|
Zerotorescue@62
|
1155 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1156
|
Zerotorescue@62
|
1157 local temp = {};
|
Zerotorescue@76
|
1158 temp[""] = "";
|
Zerotorescue@62
|
1159 if addon.db.profile.groups[groupName].premadeGroups then
|
Zerotorescue@62
|
1160 for name, version in pairs(addon.db.profile.groups[groupName].premadeGroups) do
|
Zerotorescue@62
|
1161 temp[name] = name;
|
Zerotorescue@62
|
1162 end
|
Zerotorescue@62
|
1163 end
|
Zerotorescue@62
|
1164
|
Zerotorescue@62
|
1165 return temp;
|
Zerotorescue@62
|
1166 end,
|
Zerotorescue@62
|
1167 set = function(info, value)
|
Zerotorescue@76
|
1168 if value and value ~= "" then
|
Zerotorescue@76
|
1169 -- Remove premade group from this group
|
Zerotorescue@76
|
1170 local groupName = groupIdToName[info[2]];
|
Zerotorescue@76
|
1171
|
Zerotorescue@76
|
1172 addon.db.profile.groups[groupName].premadeGroups[value] = nil;
|
Zerotorescue@76
|
1173
|
Zerotorescue@98
|
1174 addon:Print(("No longer notifying you about changes made to the premade group named \"|cfffed000%s|r\"."):format(value));
|
Zerotorescue@76
|
1175 end
|
Zerotorescue@62
|
1176 end,
|
Zerotorescue@62
|
1177 get = false,
|
Zerotorescue@62
|
1178 disabled = function(info)
|
Zerotorescue@62
|
1179 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1180
|
Zerotorescue@62
|
1181 return (not addon.db.profile.groups[groupName].premadeGroups);
|
Zerotorescue@62
|
1182 end,
|
Zerotorescue@62
|
1183 },
|
Zerotorescue@62
|
1184 },
|
Zerotorescue@62
|
1185 },
|
Zerotorescue@62
|
1186 list = {
|
Zerotorescue@62
|
1187 order = 20,
|
Zerotorescue@62
|
1188 type = "group",
|
Zerotorescue@62
|
1189 inline = true,
|
Zerotorescue@62
|
1190 name = "Item list",
|
Zerotorescue@62
|
1191 hidden = UpdateRemoveItemList,
|
Zerotorescue@62
|
1192 args = {
|
Zerotorescue@62
|
1193
|
Zerotorescue@62
|
1194 },
|
Zerotorescue@62
|
1195 },
|
Zerotorescue@62
|
1196 export = {
|
Zerotorescue@62
|
1197 order = 30,
|
Zerotorescue@62
|
1198 type = "group",
|
Zerotorescue@62
|
1199 name = "Export",
|
Zerotorescue@62
|
1200 inline = true,
|
Zerotorescue@62
|
1201 args = {
|
Zerotorescue@62
|
1202 input = {
|
Zerotorescue@62
|
1203 order = 10,
|
Zerotorescue@62
|
1204 type = "input",
|
Zerotorescue@62
|
1205 name = "Item data",
|
Zerotorescue@62
|
1206 width = "full",
|
Zerotorescue@62
|
1207 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
|
1208 set = false,
|
Zerotorescue@62
|
1209 get = function(info)
|
Zerotorescue@62
|
1210 local groupName = groupIdToName[info[2]];
|
Zerotorescue@62
|
1211
|
Zerotorescue@62
|
1212 local combinedItemIds;
|
Zerotorescue@62
|
1213 -- Parse items in group and show these
|
Zerotorescue@62
|
1214 for itemId, _ in pairs(addon.db.profile.groups[groupName].items) do
|
Zerotorescue@62
|
1215 if not combinedItemIds then
|
Zerotorescue@62
|
1216 combinedItemIds = tostring(itemId);
|
Zerotorescue@62
|
1217 else
|
Zerotorescue@62
|
1218 combinedItemIds = combinedItemIds .. (";%d"):format(itemId);
|
Zerotorescue@62
|
1219 end
|
Zerotorescue@62
|
1220 end
|
Zerotorescue@62
|
1221
|
Zerotorescue@62
|
1222 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
|
1223 end,
|
Zerotorescue@62
|
1224 },
|
Zerotorescue@62
|
1225 },
|
Zerotorescue@62
|
1226 },
|
Zerotorescue@62
|
1227 },
|
Zerotorescue@62
|
1228 },
|
Zerotorescue@62
|
1229 },
|
Zerotorescue@62
|
1230 };
|
Zerotorescue@62
|
1231
|
Zerotorescue@62
|
1232
|
Zerotorescue@62
|
1233
|
Zerotorescue@62
|
1234
|
Zerotorescue@62
|
1235
|
Zerotorescue@62
|
1236
|
Zerotorescue@62
|
1237
|
Zerotorescue@62
|
1238
|
Zerotorescue@62
|
1239
|
Zerotorescue@62
|
1240 -- Object functions
|
Zerotorescue@62
|
1241
|
Zerotorescue@62
|
1242 function mod:OnEnable()
|
Zerotorescue@62
|
1243 -- Register our config slash command
|
Zerotorescue@62
|
1244 -- /im config
|
Zerotorescue@62
|
1245 addon:RegisterSlash(function(this)
|
Zerotorescue@62
|
1246 -- We don't want any other windows open at this time.
|
Zerotorescue@62
|
1247 for name, module in this:IterateModules() do
|
Zerotorescue@62
|
1248 if module.CloseFrame then
|
Zerotorescue@62
|
1249 module:CloseFrame();
|
Zerotorescue@62
|
1250 end
|
Zerotorescue@62
|
1251 end
|
Zerotorescue@62
|
1252
|
Zerotorescue@62
|
1253 this:GetModule("Config"):Show();
|
Zerotorescue@62
|
1254 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
|
1255
|
Zerotorescue@62
|
1256 -- Whenever the profile is changed, update the groups | args: (object for the functionName, eventName, functionName)
|
Zerotorescue@62
|
1257 addon.db.RegisterCallback(self, "OnProfileChanged", "RefreshConfig");
|
Zerotorescue@62
|
1258 addon.db.RegisterCallback(self, "OnProfileCopied", "RefreshConfig");
|
Zerotorescue@62
|
1259 addon.db.RegisterCallback(self, "OnProfileReset", "RefreshConfig");
|
Zerotorescue@62
|
1260
|
Zerotorescue@62
|
1261 -- Register our custom widgets
|
Zerotorescue@62
|
1262 local Widgets = addon:GetModule("Widgets");
|
Zerotorescue@62
|
1263 Widgets:ItemLinkButton();
|
Zerotorescue@62
|
1264 Widgets:ConfigItemLinkButton();
|
Zerotorescue@62
|
1265 end
|
Zerotorescue@62
|
1266
|
Zerotorescue@62
|
1267 function mod:RefreshConfig()
|
Zerotorescue@65
|
1268 self:PremadeGroupsCheck();
|
Zerotorescue@65
|
1269
|
Zerotorescue@62
|
1270 self:FillGroupOptions();
|
Zerotorescue@62
|
1271 end
|
Zerotorescue@62
|
1272
|
Zerotorescue@62
|
1273 function mod:Load()
|
Zerotorescue@62
|
1274 if not AceConfigDialog and not AceConfigRegistry then
|
Zerotorescue@65
|
1275 self:PremadeGroupsCheck();
|
Zerotorescue@65
|
1276
|
Zerotorescue@62
|
1277 self:FillOptions();
|
Zerotorescue@62
|
1278
|
Zerotorescue@62
|
1279 -- Build options dialog
|
Zerotorescue@62
|
1280 AceConfigDialog = LibStub("AceConfigDialog-3.0");
|
Zerotorescue@62
|
1281 AceConfigRegistry = LibStub("AceConfigRegistry-3.0");
|
Zerotorescue@62
|
1282 -- Register options table
|
Zerotorescue@62
|
1283 LibStub("AceConfig-3.0"):RegisterOptionsTable("InventoriumOptions", options);
|
Zerotorescue@62
|
1284 -- Set a nice default size (so that 4 normal sized elements fit next to eachother)
|
Zerotorescue@62
|
1285 AceConfigDialog:SetDefaultSize("InventoriumOptions", 975, 600);
|
Zerotorescue@62
|
1286
|
Zerotorescue@62
|
1287 -- In case the addon is loaded from another condition, always call the remove interface options
|
Zerotorescue@62
|
1288 if AddonLoader and AddonLoader.RemoveInterfaceOptions then
|
Zerotorescue@62
|
1289 AddonLoader:RemoveInterfaceOptions("Inventorium");
|
Zerotorescue@62
|
1290 end
|
Zerotorescue@62
|
1291
|
Zerotorescue@62
|
1292 -- Add to the blizzard addons options thing
|
Zerotorescue@62
|
1293 AceConfigDialog:AddToBlizOptions("InventoriumOptions");
|
Zerotorescue@62
|
1294 end
|
Zerotorescue@62
|
1295 end
|
Zerotorescue@62
|
1296
|
Zerotorescue@62
|
1297 function mod:Show()
|
Zerotorescue@62
|
1298 self:Load();
|
Zerotorescue@62
|
1299
|
Zerotorescue@62
|
1300 AceConfigDialog:Open("InventoriumOptions");
|
Zerotorescue@62
|
1301 end
|
Zerotorescue@62
|
1302
|
Zerotorescue@62
|
1303 function mod:FillOptions()
|
Zerotorescue@62
|
1304 options = {
|
Zerotorescue@62
|
1305 type = "group",
|
Zerotorescue@62
|
1306 name = "Inventorium Config",
|
Zerotorescue@62
|
1307 childGroups = "tree",
|
Zerotorescue@62
|
1308 args = {
|
Zerotorescue@62
|
1309 },
|
Zerotorescue@62
|
1310 };
|
Zerotorescue@62
|
1311
|
Zerotorescue@62
|
1312 -- General
|
Zerotorescue@62
|
1313 self:FillGeneralOptions();
|
Zerotorescue@62
|
1314
|
Zerotorescue@62
|
1315 -- Help
|
Zerotorescue@62
|
1316 self:FillHelpOptions();
|
Zerotorescue@62
|
1317
|
Zerotorescue@62
|
1318 -- Profile
|
Zerotorescue@62
|
1319 options.args.profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon.db, true);
|
Zerotorescue@62
|
1320 options.args.profiles.order = 200;
|
Zerotorescue@62
|
1321
|
Zerotorescue@106
|
1322 -- Extra
|
Zerotorescue@106
|
1323 self:FillExtraOptions();
|
Zerotorescue@106
|
1324
|
Zerotorescue@62
|
1325 -- Groups
|
Zerotorescue@62
|
1326 self:MakeGroupOptions();
|
Zerotorescue@62
|
1327
|
Zerotorescue@62
|
1328 -- Groups-contents
|
Zerotorescue@62
|
1329 self:FillGroupOptions();
|
Zerotorescue@62
|
1330 end
|
Zerotorescue@62
|
1331
|
Zerotorescue@62
|
1332 function mod:FillGeneralOptions()
|
Zerotorescue@62
|
1333 options.args.general = {
|
Zerotorescue@62
|
1334 order = 100,
|
Zerotorescue@62
|
1335 type = "group",
|
Zerotorescue@62
|
1336 name = "General",
|
Zerotorescue@62
|
1337 desc = "Change general Inventorium settings.",
|
Zerotorescue@62
|
1338 args = {
|
Zerotorescue@62
|
1339 general = {
|
Zerotorescue@62
|
1340 order = 1,
|
Zerotorescue@62
|
1341 type = "group",
|
Zerotorescue@62
|
1342 inline = true,
|
Zerotorescue@62
|
1343 name = "General",
|
Zerotorescue@62
|
1344 args = {
|
Zerotorescue@62
|
1345 description = {
|
Zerotorescue@62
|
1346 order = 0,
|
Zerotorescue@62
|
1347 type = "description",
|
Zerotorescue@62
|
1348 name = function()
|
Zerotorescue@106
|
1349 local t = "";
|
Zerotorescue@106
|
1350 if not addon.db.profile.defaults.hideHelp then
|
Zerotorescue@106
|
1351 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@106
|
1352 end
|
Zerotorescue@62
|
1353
|
Zerotorescue@62
|
1354 local currentAddon, selectedAddonName = addon:GetItemCountAddon();
|
Zerotorescue@62
|
1355 local preferedAddon = addon.db.profile.defaults.itemCountAddon;
|
Zerotorescue@62
|
1356
|
Zerotorescue@62
|
1357 if currentAddon then
|
Zerotorescue@62
|
1358 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
|
1359
|
Zerotorescue@62
|
1360 if currentAddon.GetTotalCount and currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
1361 t = t .. " This addon supports |cfffed000both total as local|r item counts.";
|
Zerotorescue@62
|
1362 elseif currentAddon.GetTotalCount then
|
Zerotorescue@62
|
1363 t = t .. " This addon supports |cfffed000only total|r item counts.";
|
Zerotorescue@62
|
1364 elseif currentAddon.GetCharacterCount then
|
Zerotorescue@62
|
1365 t = t .. " This addon supports |cfffed000only local|r item counts.";
|
Zerotorescue@62
|
1366 end
|
Zerotorescue@62
|
1367
|
Zerotorescue@62
|
1368 if preferedAddon ~= selectedAddonName then
|
Zerotorescue@62
|
1369 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
|
1370 end
|
Zerotorescue@62
|
1371 end
|
Zerotorescue@62
|
1372
|
Zerotorescue@62
|
1373 return t;
|
Zerotorescue@62
|
1374 end,
|
Zerotorescue@62
|
1375 },
|
Zerotorescue@62
|
1376 header = {
|
Zerotorescue@62
|
1377 order = 5,
|
Zerotorescue@62
|
1378 type = "header",
|
Zerotorescue@62
|
1379 name = "",
|
Zerotorescue@62
|
1380 },
|
Zerotorescue@62
|
1381 auctionPricingAddon = {
|
Zerotorescue@62
|
1382 order = 10,
|
Zerotorescue@62
|
1383 type = "select",
|
Zerotorescue@62
|
1384 name = "Prefered pricing addon",
|
Zerotorescue@62
|
1385 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
|
1386 values = function()
|
Zerotorescue@62
|
1387 local temp = {};
|
Zerotorescue@62
|
1388 for name, value in pairs(addon.supportedAddons.auctionPricing) do
|
Zerotorescue@62
|
1389 temp[name] = name;
|
Zerotorescue@62
|
1390 end
|
Zerotorescue@62
|
1391
|
Zerotorescue@62
|
1392 return temp;
|
Zerotorescue@62
|
1393 end,
|
Zerotorescue@62
|
1394 get = function() return addon.db.profile.defaults.auctionPricingAddon; end,
|
Zerotorescue@62
|
1395 set = function(i, v)
|
Zerotorescue@62
|
1396 addon.db.profile.defaults.auctionPricingAddon = v;
|
Zerotorescue@62
|
1397
|
Zerotorescue@62
|
1398 if addon.supportedAddons.auctionPricing[v].OnSelect then
|
Zerotorescue@62
|
1399 addon.supportedAddons.auctionPricing[v].OnSelect();
|
Zerotorescue@62
|
1400 end
|
Zerotorescue@62
|
1401 end,
|
Zerotorescue@62
|
1402 },
|
Zerotorescue@62
|
1403 itemCountAddon = {
|
Zerotorescue@62
|
1404 order = 20,
|
Zerotorescue@62
|
1405 type = "select",
|
Zerotorescue@62
|
1406 name = "Prefered item count addon",
|
Zerotorescue@62
|
1407 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
|
1408 values = function()
|
Zerotorescue@62
|
1409 local temp = {};
|
Zerotorescue@62
|
1410 for name, value in pairs(addon.supportedAddons.itemCount) do
|
Zerotorescue@62
|
1411 temp[name] = name;
|
Zerotorescue@62
|
1412 end
|
Zerotorescue@62
|
1413
|
Zerotorescue@62
|
1414 return temp;
|
Zerotorescue@62
|
1415 end,
|
Zerotorescue@62
|
1416 get = function() return addon.db.profile.defaults.itemCountAddon; end,
|
Zerotorescue@62
|
1417 set = function(i, v)
|
Zerotorescue@62
|
1418 addon.db.profile.defaults.itemCountAddon = v;
|
Zerotorescue@62
|
1419
|
Zerotorescue@62
|
1420 if addon.supportedAddons.itemCount[v].OnSelect then
|
Zerotorescue@62
|
1421 addon.supportedAddons.itemCount[v].OnSelect();
|
Zerotorescue@62
|
1422 end
|
Zerotorescue@62
|
1423 end,
|
Zerotorescue@62
|
1424 },
|
Zerotorescue@62
|
1425 craftingAddon = {
|
Zerotorescue@62
|
1426 order = 30,
|
Zerotorescue@62
|
1427 type = "select",
|
Zerotorescue@62
|
1428 name = "Prefered crafting addon",
|
Zerotorescue@62
|
1429 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
|
1430 values = function()
|
Zerotorescue@62
|
1431 local temp = {};
|
Zerotorescue@62
|
1432 for name, value in pairs(addon.supportedAddons.crafting) do
|
Zerotorescue@62
|
1433 temp[name] = name;
|
Zerotorescue@62
|
1434 end
|
Zerotorescue@62
|
1435
|
Zerotorescue@62
|
1436 return temp;
|
Zerotorescue@62
|
1437 end,
|
Zerotorescue@62
|
1438 get = function() return addon.db.profile.defaults.craftingAddon; end,
|
Zerotorescue@62
|
1439 set = function(i, v)
|
Zerotorescue@62
|
1440 addon.db.profile.defaults.craftingAddon = v;
|
Zerotorescue@62
|
1441
|
Zerotorescue@62
|
1442 if addon.supportedAddons.crafting[v].OnSelect then
|
Zerotorescue@62
|
1443 addon.supportedAddons.crafting[v].OnSelect();
|
Zerotorescue@62
|
1444 end
|
Zerotorescue@62
|
1445 end,
|
Zerotorescue@62
|
1446 },
|
Zerotorescue@62
|
1447 localItemData = {
|
Zerotorescue@62
|
1448 order = 40,
|
Zerotorescue@62
|
1449 type = "multiselect",
|
Zerotorescue@62
|
1450 name = "Include in local item data",
|
Zerotorescue@62
|
1451 desc = "Select which data should be included in the local item data.",
|
Zerotorescue@62
|
1452 values = {
|
Zerotorescue@62
|
1453 ["Bag"] = "Bag",
|
Zerotorescue@62
|
1454 ["Bank"] = "Bank",
|
Zerotorescue@62
|
1455 ["Auction House"] = "Auction House",
|
Zerotorescue@62
|
1456 ["Mailbox"] = "Mailbox",
|
Zerotorescue@62
|
1457 },
|
Zerotorescue@62
|
1458 get = function(i, v) return addon.db.profile.defaults.localItemData and addon.db.profile.defaults.localItemData[v]; end,
|
Zerotorescue@84
|
1459 set = function(i, v, e) addon.db.profile.defaults.localItemData[v] = e; end, -- can't be nil or the defaults will be used
|
Zerotorescue@65
|
1460 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
|
1461 },
|
Zerotorescue@62
|
1462 },
|
Zerotorescue@62
|
1463 },
|
Zerotorescue@62
|
1464 minimumStock = {
|
Zerotorescue@62
|
1465 order = 10,
|
Zerotorescue@62
|
1466 type = "group",
|
Zerotorescue@62
|
1467 inline = true,
|
Zerotorescue@62
|
1468 name = "Minimum stock",
|
Zerotorescue@62
|
1469 args = {
|
Zerotorescue@62
|
1470 description = {
|
Zerotorescue@62
|
1471 order = 0,
|
Zerotorescue@62
|
1472 type = "description",
|
Zerotorescue@62
|
1473 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@106
|
1474 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1475 },
|
Zerotorescue@62
|
1476 header = {
|
Zerotorescue@62
|
1477 order = 5,
|
Zerotorescue@62
|
1478 type = "header",
|
Zerotorescue@62
|
1479 name = "",
|
Zerotorescue@106
|
1480 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1481 },
|
Zerotorescue@62
|
1482 minLocalStock = {
|
Zerotorescue@62
|
1483 order = 10,
|
Zerotorescue@62
|
1484 type = "range",
|
Zerotorescue@62
|
1485 min = 0,
|
Zerotorescue@62
|
1486 max = 100000,
|
Zerotorescue@62
|
1487 softMax = 100,
|
Zerotorescue@62
|
1488 step = 1,
|
Zerotorescue@62
|
1489 name = "Minimum local stock",
|
Zerotorescue@62
|
1490 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
|
1491 get = function() return addon.db.profile.defaults.minLocalStock; end,
|
Zerotorescue@62
|
1492 set = function(i, v) addon.db.profile.defaults.minLocalStock = v; end,
|
Zerotorescue@62
|
1493 },
|
Zerotorescue@62
|
1494 alertBelowLocalMinimum = {
|
Zerotorescue@62
|
1495 order = 11,
|
Zerotorescue@62
|
1496 type = "toggle",
|
Zerotorescue@62
|
1497 name = "Alert when below local minimum (NYI)",
|
Zerotorescue@62
|
1498 desc = "Show an alert when this item gets below this threshold.",
|
Zerotorescue@62
|
1499 get = function() return addon.db.profile.defaults.alertBelowLocalMinimum; end,
|
Zerotorescue@62
|
1500 set = function(i, v) addon.db.profile.defaults.alertBelowLocalMinimum = v; end,
|
Zerotorescue@62
|
1501 },
|
Zerotorescue@82
|
1502 autoRefill = {
|
Zerotorescue@82
|
1503 order = 12,
|
Zerotorescue@82
|
1504 type = "toggle",
|
Zerotorescue@82
|
1505 name = "Auto refill from (guild) bank",
|
Zerotorescue@82
|
1506 desc = "Automatically refill items from the bank (unless this is included in the local count) or guild bank when below the minimum local stock.",
|
Zerotorescue@82
|
1507 get = function() return addon.db.profile.defaults.autoRefill; end,
|
Zerotorescue@82
|
1508 set = function(i, v) addon.db.profile.defaults.autoRefill = v; end,
|
Zerotorescue@82
|
1509 },
|
Zerotorescue@62
|
1510 minGlobalStock = {
|
Zerotorescue@62
|
1511 order = 20,
|
Zerotorescue@62
|
1512 type = "range",
|
Zerotorescue@62
|
1513 min = 0,
|
Zerotorescue@62
|
1514 max = 100000,
|
Zerotorescue@62
|
1515 softMax = 100,
|
Zerotorescue@62
|
1516 step = 1,
|
Zerotorescue@62
|
1517 name = "Minimum global stock",
|
Zerotorescue@62
|
1518 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
|
1519 get = function() return addon.db.profile.defaults.minGlobalStock; end,
|
Zerotorescue@62
|
1520 set = function(i, v) addon.db.profile.defaults.minGlobalStock = v; end,
|
Zerotorescue@62
|
1521 },
|
Zerotorescue@62
|
1522 alertBelowGlobalMinimum = {
|
Zerotorescue@62
|
1523 order = 21,
|
Zerotorescue@62
|
1524 type = "toggle",
|
Zerotorescue@62
|
1525 name = "Alert when below global minimum (NYI)",
|
Zerotorescue@62
|
1526 desc = "Show an alert when this item gets below this threshold.",
|
Zerotorescue@62
|
1527 get = function() return addon.db.profile.defaults.alertBelowGlobalMinimum; end,
|
Zerotorescue@62
|
1528 set = function(i, v) addon.db.profile.defaults.alertBelowGlobalMinimum = v; end,
|
Zerotorescue@62
|
1529 },
|
Zerotorescue@62
|
1530 summaryThresholdShow = {
|
Zerotorescue@62
|
1531 order = 30,
|
Zerotorescue@62
|
1532 type = "range",
|
Zerotorescue@62
|
1533 min = 0,
|
Zerotorescue@101
|
1534 max = 100,
|
Zerotorescue@62
|
1535 softMax = 100,
|
Zerotorescue@62
|
1536 step = 0.05,
|
Zerotorescue@62
|
1537 isPercent = true,
|
Zerotorescue@62
|
1538 name = "Show in summary when below",
|
Zerotorescue@101
|
1539 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.",
|
Zerotorescue@62
|
1540 get = function() return addon.db.profile.defaults.summaryThresholdShow; end,
|
Zerotorescue@62
|
1541 set = function(i, v) addon.db.profile.defaults.summaryThresholdShow = v; end,
|
Zerotorescue@62
|
1542 },
|
Zerotorescue@62
|
1543 trackAtCharacters = {
|
Zerotorescue@62
|
1544 order = 40,
|
Zerotorescue@62
|
1545 type = "multiselect",
|
Zerotorescue@62
|
1546 name = "Track at",
|
Zerotorescue@62
|
1547 desc = "Select at which characters this should appear in the summary and generate alerts.",
|
Zerotorescue@62
|
1548 values = function()
|
Zerotorescue@62
|
1549 local temp = {};
|
Zerotorescue@62
|
1550 for charName in pairs(addon.db.factionrealm.characters) do
|
Zerotorescue@62
|
1551 temp[charName] = charName;
|
Zerotorescue@62
|
1552 end
|
Zerotorescue@62
|
1553
|
Zerotorescue@62
|
1554 return temp;
|
Zerotorescue@62
|
1555 end,
|
Zerotorescue@68
|
1556 get = function(i, v)
|
Zerotorescue@68
|
1557 return addon.db.profile.defaults.trackAtCharacters[v];
|
Zerotorescue@68
|
1558 end,
|
Zerotorescue@68
|
1559 set = function(i, v, e)
|
Zerotorescue@68
|
1560 addon.db.profile.defaults.trackAtCharacters[v] = e or nil;
|
Zerotorescue@68
|
1561 end,
|
Zerotorescue@65
|
1562 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
|
1563 },
|
Zerotorescue@62
|
1564 },
|
Zerotorescue@62
|
1565 },
|
Zerotorescue@62
|
1566 refill = {
|
Zerotorescue@62
|
1567 order = 20,
|
Zerotorescue@62
|
1568 type = "group",
|
Zerotorescue@62
|
1569 inline = true,
|
Zerotorescue@62
|
1570 name = "Replenishing stock",
|
Zerotorescue@62
|
1571 args = {
|
Zerotorescue@62
|
1572 description = {
|
Zerotorescue@62
|
1573 order = 0,
|
Zerotorescue@62
|
1574 type = "description",
|
Zerotorescue@62
|
1575 name = function()
|
Zerotorescue@62
|
1576 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
|
1577
|
Zerotorescue@62
|
1578 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
|
1579
|
Zerotorescue@62
|
1580 return r;
|
Zerotorescue@62
|
1581 end,
|
Zerotorescue@106
|
1582 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1583 },
|
Zerotorescue@62
|
1584 header = {
|
Zerotorescue@62
|
1585 order = 5,
|
Zerotorescue@62
|
1586 type = "header",
|
Zerotorescue@62
|
1587 name = "",
|
Zerotorescue@106
|
1588 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1589 },
|
Zerotorescue@62
|
1590 restockTarget = {
|
Zerotorescue@62
|
1591 order = 10,
|
Zerotorescue@62
|
1592 type = "range",
|
Zerotorescue@62
|
1593 min = 0,
|
Zerotorescue@62
|
1594 max = 100000,
|
Zerotorescue@62
|
1595 softMax = 100,
|
Zerotorescue@62
|
1596 step = 1,
|
Zerotorescue@62
|
1597 name = "Restock target",
|
Zerotorescue@62
|
1598 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
|
Zerotorescue@62
|
1599 get = function() return addon.db.profile.defaults.restockTarget; end,
|
Zerotorescue@62
|
1600 set = function(i, v) addon.db.profile.defaults.restockTarget = v; end,
|
Zerotorescue@62
|
1601 },
|
Zerotorescue@62
|
1602 minCraftingQueue = {
|
Zerotorescue@62
|
1603 order = 20,
|
Zerotorescue@62
|
1604 type = "range",
|
Zerotorescue@62
|
1605 min = 0,
|
Zerotorescue@62
|
1606 max = 1,
|
Zerotorescue@62
|
1607 step = 0.01, -- 1%
|
Zerotorescue@62
|
1608 isPercent = true,
|
Zerotorescue@62
|
1609 name = "Don't queue if I only miss",
|
Zerotorescue@62
|
1610 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
|
1611 get = function() return addon.db.profile.defaults.minCraftingQueue; end,
|
Zerotorescue@62
|
1612 set = function(i, v) addon.db.profile.defaults.minCraftingQueue = v; end,
|
Zerotorescue@62
|
1613 },
|
Zerotorescue@62
|
1614 bonusQueue = {
|
Zerotorescue@62
|
1615 order = 30,
|
Zerotorescue@62
|
1616 type = "range",
|
Zerotorescue@62
|
1617 min = 0,
|
Zerotorescue@62
|
1618 max = 10, -- 1000%
|
Zerotorescue@62
|
1619 step = 0.01, -- 1%
|
Zerotorescue@62
|
1620 isPercent = true,
|
Zerotorescue@62
|
1621 name = "Bonus queue",
|
Zerotorescue@62
|
1622 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
|
1623 get = function() return addon.db.profile.defaults.bonusQueue; end,
|
Zerotorescue@62
|
1624 set = function(i, v) addon.db.profile.defaults.bonusQueue = v; end,
|
Zerotorescue@62
|
1625 },
|
Zerotorescue@62
|
1626 priceThreshold = {
|
Zerotorescue@62
|
1627 order = 40,
|
Zerotorescue@62
|
1628 type = "input",
|
Zerotorescue@62
|
1629 name = "Price threshold",
|
Zerotorescue@62
|
1630 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
|
1631 validate = function(info, value) return addon:ValidateReadableMoney(info, value); end,
|
Zerotorescue@62
|
1632 get = function() return addon:ReadableMoney(addon.db.profile.defaults.priceThreshold); end,
|
Zerotorescue@62
|
1633 set = function(i, v) addon.db.profile.defaults.priceThreshold = addon:ReadableMoneyToCopper(v); end,
|
Zerotorescue@62
|
1634 },
|
Zerotorescue@62
|
1635 summaryHidePriceThreshold = {
|
Zerotorescue@62
|
1636 order = 50,
|
Zerotorescue@62
|
1637 type = "toggle",
|
Zerotorescue@62
|
1638 name = "Hide when below threshold",
|
Zerotorescue@62
|
1639 desc = "Hide items from the summary when their value is below the set price threshold.",
|
Zerotorescue@62
|
1640 get = function() return addon.db.profile.defaults.summaryHidePriceThreshold; end,
|
Zerotorescue@62
|
1641 set = function(i, v) addon.db.profile.defaults.summaryHidePriceThreshold = v; end,
|
Zerotorescue@62
|
1642 },
|
Zerotorescue@62
|
1643 alwaysGetAuctionValue = {
|
Zerotorescue@62
|
1644 order = 60,
|
Zerotorescue@62
|
1645 type = "toggle",
|
Zerotorescue@62
|
1646 name = "Always show auction value",
|
Zerotorescue@62
|
1647 desc = "Always cache and show the auction value of items, even if the price threshold is set to 0|cffeda55fc|r.",
|
Zerotorescue@62
|
1648 get = function() return addon.db.profile.defaults.alwaysGetAuctionValue; end,
|
Zerotorescue@62
|
1649 set = function(i, v) addon.db.profile.defaults.alwaysGetAuctionValue = v; end,
|
Zerotorescue@62
|
1650 },
|
Zerotorescue@62
|
1651 },
|
Zerotorescue@62
|
1652 },
|
Zerotorescue@106
|
1653 },
|
Zerotorescue@106
|
1654 };
|
Zerotorescue@106
|
1655 end
|
Zerotorescue@106
|
1656
|
Zerotorescue@106
|
1657 function mod:FillExtraOptions()
|
Zerotorescue@106
|
1658 options.args.extra = {
|
Zerotorescue@106
|
1659 order = 300,
|
Zerotorescue@106
|
1660 type = "group",
|
Zerotorescue@106
|
1661 name = "Extra",
|
Zerotorescue@106
|
1662 desc = "Change additional (but completely optional) settings.",
|
Zerotorescue@106
|
1663 args = {
|
Zerotorescue@106
|
1664 misc = {
|
Zerotorescue@106
|
1665 order = 10,
|
Zerotorescue@62
|
1666 type = "group",
|
Zerotorescue@62
|
1667 inline = true,
|
Zerotorescue@106
|
1668 name = "Miscellaneous",
|
Zerotorescue@62
|
1669 args = {
|
Zerotorescue@106
|
1670 hideHelp = {
|
Zerotorescue@106
|
1671 order = 10,
|
Zerotorescue@106
|
1672 type = "toggle",
|
Zerotorescue@106
|
1673 width = "full",
|
Zerotorescue@106
|
1674 name = "Hide any help tooltips, descriptions and the help config category",
|
Zerotorescue@106
|
1675 desc = "Hide any optional help tooltips, descriptions and the help config category.\n\nPlease note some tooltips may not disappear until next login.",
|
Zerotorescue@106
|
1676 get = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@106
|
1677 set = function(i, v) addon.db.profile.defaults.hideHelp = v; end,
|
Zerotorescue@62
|
1678 },
|
Zerotorescue@106
|
1679 autoRefillSkipConfirm = {
|
Zerotorescue@62
|
1680 order = 20,
|
Zerotorescue@106
|
1681 type = "toggle",
|
Zerotorescue@106
|
1682 width = "full",
|
Zerotorescue@106
|
1683 name = "Skip the confirmation window for (guild) bank refilling",
|
Zerotorescue@106
|
1684 desc = "Automatically start moving items from the (guild) bank without showing the confirmation window.",
|
Zerotorescue@106
|
1685 get = function() return addon.db.profile.defaults.autoRefillSkipConfirm; end,
|
Zerotorescue@106
|
1686 set = function(i, v) addon.db.profile.defaults.autoRefillSkipConfirm = v; end,
|
Zerotorescue@76
|
1687 },
|
Zerotorescue@76
|
1688 removeCharacter = {
|
Zerotorescue@106
|
1689 order = 30,
|
Zerotorescue@76
|
1690 type = "select",
|
Zerotorescue@106
|
1691 width = "double",
|
Zerotorescue@106
|
1692 name = "Remove a character from Inventorium's memory",
|
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@106
|
1722 colorCodes = {
|
Zerotorescue@106
|
1723 order = 30,
|
Zerotorescue@106
|
1724 type = "group",
|
Zerotorescue@106
|
1725 inline = true,
|
Zerotorescue@106
|
1726 name = "Color codes",
|
Zerotorescue@106
|
1727 args = {
|
Zerotorescue@106
|
1728 description = {
|
Zerotorescue@106
|
1729 order = 0,
|
Zerotorescue@106
|
1730 type = "description",
|
Zerotorescue@106
|
1731 name = "Change the color code thresholds based on the current stock remaining of the required minimum stock.",
|
Zerotorescue@106
|
1732 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@106
|
1733 },
|
Zerotorescue@106
|
1734 header = {
|
Zerotorescue@106
|
1735 order = 5,
|
Zerotorescue@106
|
1736 type = "header",
|
Zerotorescue@106
|
1737 name = "",
|
Zerotorescue@106
|
1738 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@106
|
1739 },
|
Zerotorescue@106
|
1740 green = {
|
Zerotorescue@106
|
1741 order = 10,
|
Zerotorescue@106
|
1742 type = "range",
|
Zerotorescue@106
|
1743 min = 0,
|
Zerotorescue@106
|
1744 max = 1,
|
Zerotorescue@106
|
1745 step = 0.01,
|
Zerotorescue@106
|
1746 isPercent = true,
|
Zerotorescue@106
|
1747 name = "|cff00ff00Green|r",
|
Zerotorescue@106
|
1748 desc = "Show quantity in green when at least this much of the minimum stock is available.",
|
Zerotorescue@106
|
1749 get = function() return addon.db.profile.defaults.colors.green; end,
|
Zerotorescue@106
|
1750 set = function(i, v) addon.db.profile.defaults.colors.green = v; end,
|
Zerotorescue@106
|
1751 },
|
Zerotorescue@106
|
1752 yellow = {
|
Zerotorescue@106
|
1753 order = 20,
|
Zerotorescue@106
|
1754 type = "range",
|
Zerotorescue@106
|
1755 min = 0,
|
Zerotorescue@106
|
1756 max = 1,
|
Zerotorescue@106
|
1757 step = 0.01,
|
Zerotorescue@106
|
1758 isPercent = true,
|
Zerotorescue@106
|
1759 name = "|cffffff00Yellow|r",
|
Zerotorescue@106
|
1760 desc = "Show quantity in yellow when at least this much of the minimum stock is available.",
|
Zerotorescue@106
|
1761 get = function() return addon.db.profile.defaults.colors.yellow; end,
|
Zerotorescue@106
|
1762 set = function(i, v) addon.db.profile.defaults.colors.yellow = v; end,
|
Zerotorescue@106
|
1763 },
|
Zerotorescue@106
|
1764 orange = {
|
Zerotorescue@106
|
1765 order = 30,
|
Zerotorescue@106
|
1766 type = "range",
|
Zerotorescue@106
|
1767 min = 0,
|
Zerotorescue@106
|
1768 max = 1,
|
Zerotorescue@106
|
1769 step = 0.01,
|
Zerotorescue@106
|
1770 isPercent = true,
|
Zerotorescue@106
|
1771 name = "|cffff9933Orange|r",
|
Zerotorescue@106
|
1772 desc = "Show quantity in orange when at least this much of the minimum stock is available.",
|
Zerotorescue@106
|
1773 get = function() return addon.db.profile.defaults.colors.orange; end,
|
Zerotorescue@106
|
1774 set = function(i, v) addon.db.profile.defaults.colors.orange = v; end,
|
Zerotorescue@106
|
1775 },
|
Zerotorescue@106
|
1776 red = {
|
Zerotorescue@106
|
1777 order = 40,
|
Zerotorescue@106
|
1778 type = "range",
|
Zerotorescue@106
|
1779 min = 0,
|
Zerotorescue@106
|
1780 max = 1,
|
Zerotorescue@106
|
1781 step = 0.01,
|
Zerotorescue@106
|
1782 isPercent = true,
|
Zerotorescue@106
|
1783 name = "|cffff0000Red|r",
|
Zerotorescue@106
|
1784 desc = "Show quantity in red when at least this much of the minimum stock is available.",
|
Zerotorescue@106
|
1785 get = function() return addon.db.profile.defaults.colors.red; end,
|
Zerotorescue@106
|
1786 set = function(i, v) addon.db.profile.defaults.colors.red = v; end,
|
Zerotorescue@106
|
1787 },
|
Zerotorescue@106
|
1788 },
|
Zerotorescue@106
|
1789 },
|
Zerotorescue@62
|
1790 },
|
Zerotorescue@62
|
1791 };
|
Zerotorescue@62
|
1792 end
|
Zerotorescue@62
|
1793
|
Zerotorescue@62
|
1794 function mod:FillHelpOptions()
|
Zerotorescue@62
|
1795 options.args.help = {
|
Zerotorescue@62
|
1796 order = 150,
|
Zerotorescue@62
|
1797 type = "group",
|
Zerotorescue@106
|
1798 hidden = function() return addon.db.profile.defaults.hideHelp; end,
|
Zerotorescue@62
|
1799 childGroups = "tab",
|
Zerotorescue@62
|
1800 name = "Help",
|
Zerotorescue@62
|
1801 desc = "Useful information for if you're unfamiliar with a part of the addon.",
|
Zerotorescue@62
|
1802 args = {
|
Zerotorescue@62
|
1803 general = {
|
Zerotorescue@62
|
1804 order = 1,
|
Zerotorescue@62
|
1805 type = "group",
|
Zerotorescue@62
|
1806 name = "General",
|
Zerotorescue@62
|
1807 args = {
|
Zerotorescue@62
|
1808 description = {
|
Zerotorescue@62
|
1809 order = 0,
|
Zerotorescue@62
|
1810 type = "description",
|
Zerotorescue@62
|
1811 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
|
1812 "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
|
1813 "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
|
1814 "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
|
1815 "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
|
1816 },
|
Zerotorescue@62
|
1817 },
|
Zerotorescue@62
|
1818 },
|
Zerotorescue@62
|
1819 manual = {
|
Zerotorescue@62
|
1820 order = 2,
|
Zerotorescue@62
|
1821 type = "group",
|
Zerotorescue@62
|
1822 name = "Manual",
|
Zerotorescue@62
|
1823 args = {
|
Zerotorescue@62
|
1824 intro = {
|
Zerotorescue@62
|
1825 order = 1,
|
Zerotorescue@62
|
1826 type = "group",
|
Zerotorescue@62
|
1827 inline = true,
|
Zerotorescue@62
|
1828 name = "Intro",
|
Zerotorescue@62
|
1829 args = {
|
Zerotorescue@62
|
1830 description = {
|
Zerotorescue@62
|
1831 order = 0,
|
Zerotorescue@62
|
1832 type = "description",
|
Zerotorescue@62
|
1833 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
|
1834 },
|
Zerotorescue@62
|
1835 },
|
Zerotorescue@62
|
1836 },
|
Zerotorescue@62
|
1837 Overview = {
|
Zerotorescue@62
|
1838 order = 2,
|
Zerotorescue@62
|
1839 type = "group",
|
Zerotorescue@62
|
1840 inline = true,
|
Zerotorescue@62
|
1841 name = "Overview",
|
Zerotorescue@62
|
1842 args = {
|
Zerotorescue@62
|
1843 description = {
|
Zerotorescue@62
|
1844 order = 0,
|
Zerotorescue@62
|
1845 type = "description",
|
Zerotorescue@62
|
1846 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
|
1847
|
Zerotorescue@62
|
1848 "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
|
1849 "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
|
1850 },
|
Zerotorescue@62
|
1851 },
|
Zerotorescue@62
|
1852 },
|
Zerotorescue@62
|
1853 Groups = {
|
Zerotorescue@62
|
1854 order = 3,
|
Zerotorescue@62
|
1855 type = "group",
|
Zerotorescue@62
|
1856 inline = true,
|
Zerotorescue@62
|
1857 name = "Groups",
|
Zerotorescue@62
|
1858 args = {
|
Zerotorescue@62
|
1859 description = {
|
Zerotorescue@62
|
1860 order = 0,
|
Zerotorescue@62
|
1861 type = "description",
|
Zerotorescue@62
|
1862 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
|
1863 },
|
Zerotorescue@62
|
1864 },
|
Zerotorescue@62
|
1865 },
|
Zerotorescue@62
|
1866 Queueing = {
|
Zerotorescue@62
|
1867 order = 4,
|
Zerotorescue@62
|
1868 type = "group",
|
Zerotorescue@62
|
1869 inline = true,
|
Zerotorescue@62
|
1870 name = "Queueing",
|
Zerotorescue@62
|
1871 args = {
|
Zerotorescue@62
|
1872 description = {
|
Zerotorescue@62
|
1873 order = 0,
|
Zerotorescue@62
|
1874 type = "description",
|
Zerotorescue@62
|
1875 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
|
1876
|
Zerotorescue@62
|
1877 "The queueing can be done into most popular crafting profession window replacing addons. This includes |cfffed000AdvancedTradeSkillWindow|r, |cfffed000GnomeWorks|r and |cfffed000Skillet|r.",
|
Zerotorescue@62
|
1878 },
|
Zerotorescue@62
|
1879 },
|
Zerotorescue@62
|
1880 },
|
Zerotorescue@62
|
1881 Configuring = {
|
Zerotorescue@62
|
1882 order = 5,
|
Zerotorescue@62
|
1883 type = "group",
|
Zerotorescue@62
|
1884 inline = true,
|
Zerotorescue@62
|
1885 name = "Configuring",
|
Zerotorescue@62
|
1886 args = {
|
Zerotorescue@62
|
1887 description = {
|
Zerotorescue@62
|
1888 order = 0,
|
Zerotorescue@62
|
1889 type = "description",
|
Zerotorescue@62
|
1890 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
|
1891
|
Zerotorescue@62
|
1892 "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
|
1893
|
Zerotorescue@62
|
1894 "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
|
1895
|
Zerotorescue@62
|
1896 "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
|
1897
|
Zerotorescue@62
|
1898 "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
|
1899
|
Zerotorescue@62
|
1900 "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
|
1901 },
|
Zerotorescue@62
|
1902 },
|
Zerotorescue@62
|
1903 },
|
Zerotorescue@62
|
1904 VirtualGroups = {
|
Zerotorescue@62
|
1905 order = 6,
|
Zerotorescue@62
|
1906 type = "group",
|
Zerotorescue@62
|
1907 inline = true,
|
Zerotorescue@62
|
1908 name = "Virtual groups",
|
Zerotorescue@62
|
1909 args = {
|
Zerotorescue@62
|
1910 description = {
|
Zerotorescue@62
|
1911 order = 0,
|
Zerotorescue@62
|
1912 type = "description",
|
Zerotorescue@62
|
1913 name = "|cffccccccThis is advanced optional functionality. I recommend skipping this paragraph if you are new to Inventorium.|r\n\n" ..
|
Zerotorescue@62
|
1914
|
Zerotorescue@62
|
1915 "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
|
1916 },
|
Zerotorescue@62
|
1917 },
|
Zerotorescue@62
|
1918 },
|
Zerotorescue@62
|
1919 },
|
Zerotorescue@62
|
1920 },
|
Zerotorescue@62
|
1921 FAQ = {
|
Zerotorescue@62
|
1922 order = 3,
|
Zerotorescue@62
|
1923 type = "group",
|
Zerotorescue@62
|
1924 name = "FAQ",
|
Zerotorescue@62
|
1925 args = {
|
Zerotorescue@62
|
1926 description = {
|
Zerotorescue@62
|
1927 order = 0,
|
Zerotorescue@62
|
1928 type = "description",
|
Zerotorescue@62
|
1929 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
|
1930 "|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
|
1931 "|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
|
1932 "|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
|
1933 "|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
|
1934 "",
|
Zerotorescue@62
|
1935 },
|
Zerotorescue@62
|
1936 },
|
Zerotorescue@62
|
1937 },
|
Zerotorescue@62
|
1938 },
|
Zerotorescue@62
|
1939 };
|
Zerotorescue@62
|
1940 end
|
Zerotorescue@62
|
1941
|
Zerotorescue@62
|
1942 function mod:MakeGroupOptions()
|
Zerotorescue@62
|
1943 options.args.groups = {
|
Zerotorescue@62
|
1944 order = 1100,
|
Zerotorescue@62
|
1945 type = "group",
|
Zerotorescue@62
|
1946 name = "Groups",
|
Zerotorescue@62
|
1947 desc = "Change a group.",
|
Zerotorescue@62
|
1948 args = {
|
Zerotorescue@62
|
1949 create = {
|
Zerotorescue@62
|
1950 order = 10,
|
Zerotorescue@62
|
1951 type = "group",
|
Zerotorescue@62
|
1952 inline = true,
|
Zerotorescue@62
|
1953 name = "Create a brand new group",
|
Zerotorescue@62
|
1954 args = {
|
Zerotorescue@62
|
1955 name = {
|
Zerotorescue@62
|
1956 order = 10,
|
Zerotorescue@62
|
1957 type = "input",
|
Zerotorescue@62
|
1958 name = "Group name",
|
Zerotorescue@62
|
1959 desc = "The name of the group. You can also use item links as you wish.",
|
Zerotorescue@62
|
1960 validate = ValidateGroupName,
|
Zerotorescue@62
|
1961 set = function(_, value)
|
Zerotorescue@62
|
1962 addon.db.profile.groups[value] = {};
|
Zerotorescue@62
|
1963 if currentGroupType == "Virtual" then
|
Zerotorescue@62
|
1964 addon.db.profile.groups[value].isVirtual = true;
|
Zerotorescue@62
|
1965 end
|
Zerotorescue@62
|
1966
|
Zerotorescue@62
|
1967 mod:FillGroupOptions();
|
Zerotorescue@62
|
1968 end,
|
Zerotorescue@62
|
1969 get = false,
|
Zerotorescue@62
|
1970 width = "double",
|
Zerotorescue@62
|
1971 },
|
Zerotorescue@62
|
1972 type = {
|
Zerotorescue@62
|
1973 order = 20,
|
Zerotorescue@62
|
1974 type = "select",
|
Zerotorescue@62
|
1975 name = "Type (advanced)",
|
Zerotorescue@62
|
1976 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
|
1977 values = {
|
Zerotorescue@62
|
1978 ["Normal"] = "Normal",
|
Zerotorescue@62
|
1979 ["Virtual"] = "Virtual",
|
Zerotorescue@62
|
1980 },
|
Zerotorescue@62
|
1981 set = function(_, value) currentGroupType = value; end,
|
Zerotorescue@62
|
1982 get = function() return currentGroupType; end,
|
Zerotorescue@62
|
1983 },
|
Zerotorescue@62
|
1984 },
|
Zerotorescue@62
|
1985 },
|
Zerotorescue@62
|
1986 import = {
|
Zerotorescue@62
|
1987 order = 20,
|
Zerotorescue@62
|
1988 type = "group",
|
Zerotorescue@62
|
1989 inline = true,
|
Zerotorescue@62
|
1990 name = "Import a group",
|
Zerotorescue@62
|
1991 args = {
|
Zerotorescue@62
|
1992 input = {
|
Zerotorescue@62
|
1993 order = 10,
|
Zerotorescue@62
|
1994 type = "input",
|
Zerotorescue@62
|
1995 multiline = true,
|
Zerotorescue@62
|
1996 name = "Group data",
|
Zerotorescue@62
|
1997 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
|
1998 set = function(info, value)
|
Zerotorescue@62
|
1999 local data = { string.split("\n", value or "") };
|
Zerotorescue@62
|
2000
|
Zerotorescue@62
|
2001 for _, current in pairs(data) do
|
Zerotorescue@62
|
2002 if not AceSerializer then
|
Zerotorescue@62
|
2003 AceSerializer = LibStub("AceSerializer-3.0");
|
Zerotorescue@62
|
2004 end
|
Zerotorescue@62
|
2005
|
Zerotorescue@62
|
2006 local result, temp = AceSerializer:Deserialize(current);
|
Zerotorescue@62
|
2007
|
Zerotorescue@62
|
2008 if not temp.name then
|
Zerotorescue@98
|
2009 addon:Print("The provided data is not supported.", addon.Colors.Red);
|
Zerotorescue@62
|
2010 elseif ValidateGroupName(nil, temp.name) ~= true then
|
Zerotorescue@98
|
2011 addon:Print(("Aborting: A group named \"%s\" already exists."):format(temp.name), addon.Colors.Red);
|
Zerotorescue@62
|
2012 else
|
Zerotorescue@62
|
2013 local name = temp.name;
|
Zerotorescue@62
|
2014 temp.name = nil;
|
Zerotorescue@98
|
2015 addon:Print(("Importing %s..."):format(name));
|
Zerotorescue@62
|
2016
|
Zerotorescue@62
|
2017 if temp.items then
|
Zerotorescue@62
|
2018 -- Remove items that are already in another group
|
Zerotorescue@62
|
2019 for value, _ in pairs(temp.items) do
|
Zerotorescue@62
|
2020 local itemId = tonumber(value);
|
Zerotorescue@62
|
2021
|
Zerotorescue@76
|
2022 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
2023
|
Zerotorescue@62
|
2024 if not itemId then
|
Zerotorescue@98
|
2025 addon:Print(("\"%s\" is not a number."):format(value), addon.Colors.Red);
|
Zerotorescue@62
|
2026 temp.items[value] = nil;
|
Zerotorescue@76
|
2027 elseif itemData:InGroup() then
|
Zerotorescue@98
|
2028 addon:Print(("Skipping %s as it is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ), addon.Colors.Red);
|
Zerotorescue@62
|
2029 temp.items[value] = nil;
|
Zerotorescue@62
|
2030 else
|
Zerotorescue@62
|
2031 -- Ensure the keys are numeric
|
Zerotorescue@62
|
2032 temp.items[value] = nil;
|
Zerotorescue@62
|
2033 temp.items[itemId] = true;
|
Zerotorescue@62
|
2034 end
|
Zerotorescue@62
|
2035 end
|
Zerotorescue@62
|
2036 end
|
Zerotorescue@62
|
2037
|
Zerotorescue@62
|
2038 -- 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
|
2039 temp.trackAtCharacters = nil;
|
Zerotorescue@62
|
2040 temp.overrideTrackAtCharacters = nil;
|
Zerotorescue@62
|
2041
|
Zerotorescue@62
|
2042 addon.db.profile.groups[name] = temp;
|
Zerotorescue@62
|
2043 end
|
Zerotorescue@62
|
2044 end
|
Zerotorescue@62
|
2045
|
Zerotorescue@62
|
2046 self:FillGroupOptions();
|
Zerotorescue@62
|
2047 end,
|
Zerotorescue@62
|
2048 get = false,
|
Zerotorescue@62
|
2049 width = "full",
|
Zerotorescue@62
|
2050 },
|
Zerotorescue@62
|
2051 },
|
Zerotorescue@62
|
2052 },
|
Zerotorescue@62
|
2053 },
|
Zerotorescue@62
|
2054 };
|
Zerotorescue@62
|
2055 end
|
Zerotorescue@62
|
2056
|
Zerotorescue@62
|
2057 function mod:FillGroupOptions()
|
Zerotorescue@62
|
2058 for id, name in pairs(groupIdToName) do
|
Zerotorescue@62
|
2059 if type(name) == "string" and not addon.db.profile.groups[name] then
|
Zerotorescue@62
|
2060 options.args.groups.args[id] = nil;
|
Zerotorescue@62
|
2061 groupIdToName[id] = nil;
|
Zerotorescue@62
|
2062 groupIdToName[name] = nil;
|
Zerotorescue@62
|
2063 groupIsVirtual[id] = nil;
|
Zerotorescue@62
|
2064 end
|
Zerotorescue@62
|
2065 end
|
Zerotorescue@62
|
2066
|
Zerotorescue@62
|
2067 for name, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@62
|
2068 if not groupIdToName[name] then
|
Zerotorescue@62
|
2069 options.args.groups.args[tostring(count)] = defaultGroup;
|
Zerotorescue@62
|
2070
|
Zerotorescue@62
|
2071 groupIdToName[tostring(count)] = name;
|
Zerotorescue@62
|
2072 groupIdToName[name] = true;
|
Zerotorescue@62
|
2073 if values.isVirtual then
|
Zerotorescue@62
|
2074 groupIsVirtual[tostring(count)] = true;
|
Zerotorescue@62
|
2075 end
|
Zerotorescue@62
|
2076
|
Zerotorescue@62
|
2077 count = ( count + 1 );
|
Zerotorescue@62
|
2078 end
|
Zerotorescue@62
|
2079 end
|
Zerotorescue@62
|
2080 end
|
Zerotorescue@65
|
2081
|
Zerotorescue@65
|
2082
|
Zerotorescue@65
|
2083
|
Zerotorescue@65
|
2084
|
Zerotorescue@65
|
2085
|
Zerotorescue@65
|
2086
|
Zerotorescue@65
|
2087 -- Verify premade groups
|
Zerotorescue@65
|
2088
|
Zerotorescue@65
|
2089 function mod:PremadeGroupsCheck(updateGroupName, updateKey, accept)
|
Zerotorescue@65
|
2090 -- Compare the current premade groups with those used, notify about changes
|
Zerotorescue@65
|
2091 if addon.defaultGroups then
|
Zerotorescue@65
|
2092 for premadeGroupName, groupInfo in pairs(addon.defaultGroups) do
|
Zerotorescue@65
|
2093 -- Go through all default groups
|
Zerotorescue@65
|
2094
|
Zerotorescue@65
|
2095 for groupName, values in pairs(addon.db.profile.groups) do
|
Zerotorescue@65
|
2096 -- Go through all groups to find those with this premade group
|
Zerotorescue@65
|
2097
|
Zerotorescue@65
|
2098 if values.premadeGroups and values.premadeGroups[premadeGroupName] and values.premadeGroups[premadeGroupName] < groupInfo.version then
|
Zerotorescue@65
|
2099 -- Outdated group
|
Zerotorescue@65
|
2100
|
Zerotorescue@65
|
2101 if updateGroupName and updateKey then
|
Zerotorescue@65
|
2102 -- This function was called after pressing yes or no in a confirm box
|
Zerotorescue@65
|
2103
|
Zerotorescue@65
|
2104 if accept then
|
Zerotorescue@65
|
2105 -- Yes was clicked
|
Zerotorescue@65
|
2106
|
Zerotorescue@65
|
2107 for itemId, version in pairs(groupInfo.items) do
|
Zerotorescue@65
|
2108 -- Go through all items in this premade group
|
Zerotorescue@65
|
2109
|
Zerotorescue@76
|
2110 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
2111
|
Zerotorescue@65
|
2112 if version > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@65
|
2113 -- This item was added in a more recent version than this group: Add item
|
Zerotorescue@65
|
2114
|
Zerotorescue@76
|
2115 if itemData:InGroup() then
|
Zerotorescue@98
|
2116 addon:Print(("Skipping %s as it is already in the group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@76
|
2117 elseif itemData:AddToGroup(groupName) then
|
Zerotorescue@98
|
2118 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
|
2119 end
|
Zerotorescue@65
|
2120 elseif ( version * -1 ) > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@76
|
2121 if itemData:InGroup() == groupName then
|
Zerotorescue@76
|
2122 itemData:RemoveFromGroup(groupName);
|
Zerotorescue@76
|
2123
|
Zerotorescue@98
|
2124 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
|
2125 else
|
Zerotorescue@98
|
2126 addon: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
|
2127 end
|
Zerotorescue@65
|
2128 end
|
Zerotorescue@65
|
2129 end
|
Zerotorescue@65
|
2130
|
Zerotorescue@76
|
2131 if AceConfigRegistry then
|
Zerotorescue@76
|
2132 -- Now rebuild the list
|
Zerotorescue@76
|
2133 AceConfigRegistry:NotifyChange("InventoriumOptions");
|
Zerotorescue@76
|
2134 end
|
Zerotorescue@76
|
2135
|
Zerotorescue@65
|
2136 -- Remember the new version
|
Zerotorescue@65
|
2137 values.premadeGroups[premadeGroupName] = groupInfo.version;
|
Zerotorescue@65
|
2138 else
|
Zerotorescue@65
|
2139 -- No was clicked
|
Zerotorescue@65
|
2140
|
Zerotorescue@65
|
2141 -- Let user know what was not added
|
Zerotorescue@65
|
2142 for itemId, version in pairs(groupInfo.items) do
|
Zerotorescue@65
|
2143 -- Go through all items in this premade group
|
Zerotorescue@65
|
2144
|
Zerotorescue@76
|
2145 local itemData = addon.ItemData:New(itemId);
|
Zerotorescue@76
|
2146
|
Zerotorescue@65
|
2147 if version > values.premadeGroups[premadeGroupName] then
|
Zerotorescue@65
|
2148 -- This item was added in a more recent version than this group: don't add (since we clicked no), but announce it
|
Zerotorescue@65
|
2149
|
Zerotorescue@98
|
2150 addon:Print(("Skipping %s found in the premade group |cfffed000%s|r."):format( (itemData.link or unknownItemName:format(itemId)), itemData:InGroup() ));
|
Zerotorescue@65
|
2151 end
|
Zerotorescue@65
|
2152 end
|
Zerotorescue@65
|
2153
|
Zerotorescue@65
|
2154 -- Remember the new version
|
Zerotorescue@65
|
2155 values.premadeGroups[premadeGroupName] = groupInfo.version;
|
Zerotorescue@65
|
2156 end
|
Zerotorescue@65
|
2157 else
|
Zerotorescue@65
|
2158 StaticPopupDialogs["InventoriumConfirmUpdatePremadeGroup"] = {
|
Zerotorescue@65
|
2159 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
|
2160 button1 = YES,
|
Zerotorescue@65
|
2161 button2 = NO,
|
Zerotorescue@65
|
2162 OnAccept = function()
|
Zerotorescue@65
|
2163 addon:PremadeGroupsCheck(groupName, premadeGroupName, true);
|
Zerotorescue@65
|
2164 end,
|
Zerotorescue@65
|
2165 OnCancel = function(_, _, reason)
|
Zerotorescue@65
|
2166 if reason == "clicked" then
|
Zerotorescue@65
|
2167 addon:PremadeGroupsCheck(groupName, premadeGroupName, false);
|
Zerotorescue@65
|
2168 end
|
Zerotorescue@65
|
2169 end,
|
Zerotorescue@65
|
2170 timeout = 0,
|
Zerotorescue@65
|
2171 whileDead = 1,
|
Zerotorescue@65
|
2172 hideOnEscape = 1,
|
Zerotorescue@65
|
2173 };
|
Zerotorescue@65
|
2174 StaticPopup_Show("InventoriumConfirmUpdatePremadeGroup", premadeGroupName, groupName);
|
Zerotorescue@65
|
2175
|
Zerotorescue@65
|
2176 return;
|
Zerotorescue@65
|
2177 end
|
Zerotorescue@65
|
2178 end
|
Zerotorescue@65
|
2179 end
|
Zerotorescue@65
|
2180 end
|
Zerotorescue@65
|
2181 end
|
Zerotorescue@65
|
2182 end
|