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