comparison Core.lua @ 30:8177b5bcb883

Added tag ?NYI? to the ?Alert when below minimum? option. Added ?Don't queue when below threshold? option. This isn?t functional yet, just a place holder to indicate it will be implemented at a later time. Added initial functionality for ?virtual? groups (feel free to suggest a better name :P), with these groups you can override the defaults for multiple groups. By default, settings will be retrieved as CURRENT_GROUP -> DEFAULTS, with this it can become CURRENT_GROUP -> VIRTUAL_GROUP -> DEFAULTS. This will come in handy when managing a lot of groups. Full functionality is not yet implemented, it is just a placeholder to indicate it will be added. Reduced the softmax for the restock target option from 1000 to 100 to make the slider actually useful. You can still enter a value of upto 100.000 in the edit box below.
author Zerotorescue
date Fri, 29 Oct 2010 13:43:41 +0200
parents db57cd9273f1
children e732843b16d2
comparison
equal deleted inserted replaced
29:661a59cdcb18 30:8177b5bcb883
3 addon = LibStub("AceAddon-3.0"):NewAddon(addon, "Inventorium", "AceEvent-3.0"); 3 addon = LibStub("AceAddon-3.0"):NewAddon(addon, "Inventorium", "AceEvent-3.0");
4 4
5 local AceGUI = LibStub("AceGUI-3.0"); 5 local AceGUI = LibStub("AceGUI-3.0");
6 6
7 local AceConfigDialog, AceConfigRegistry, AceSerializer; 7 local AceConfigDialog, AceConfigRegistry, AceSerializer;
8 local groupIdToName = {}; 8 local groupIdToName, groupIsVirtual, options = {}, {}, {};
9 local options = {};
10 local includeTradeSkillItems = 500; 9 local includeTradeSkillItems = 500;
11 10
12 -- All modules must be able to retrieve our supported addons database, thus keep it public 11 -- All modules must be able to retrieve our supported addons database, thus keep it public
13 addon.supportedAddons = {}; 12 addon.supportedAddons = {};
14 addon.supportedAddons.auctionPricing = {}; 13 addon.supportedAddons.auctionPricing = {};
627 set = function(i, v) self.db.global.defaults.summaryThresholdShow = v; end, 626 set = function(i, v) self.db.global.defaults.summaryThresholdShow = v; end,
628 }, 627 },
629 alertBelowMinimum = { 628 alertBelowMinimum = {
630 order = 30, 629 order = 30,
631 type = "toggle", 630 type = "toggle",
632 name = "Alert when below minimum", 631 name = "NYI | Alert when below minimum",
633 desc = "Show an alert when this item gets below this threshold.", 632 desc = "Show an alert when this item gets below this threshold.",
634 get = function() return self.db.global.defaults.alertBelowMinimum; end, 633 get = function() return self.db.global.defaults.alertBelowMinimum; end,
635 set = function(i, v) self.db.global.defaults.alertBelowMinimum = v; end, 634 set = function(i, v) self.db.global.defaults.alertBelowMinimum = v; end,
636 }, 635 },
637 trackAtCharacters = { 636 trackAtCharacters = {
678 restockTarget = { 677 restockTarget = {
679 order = 10, 678 order = 10,
680 type = "range", 679 type = "range",
681 min = 0, 680 min = 0,
682 max = 100000, 681 max = 100000,
683 softMax = 1000, 682 softMax = 100,
684 step = 1, 683 step = 1,
685 name = "Restock target", 684 name = "Restock target",
686 desc = "You can manually enter a value between 1.000 and 100.000 in the edit box if the provided range is insufficient.", 685 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
687 get = function() return self.db.global.defaults.restockTarget; end, 686 get = function() return self.db.global.defaults.restockTarget; end,
688 set = function(i, v) self.db.global.defaults.restockTarget = v; end, 687 set = function(i, v) self.db.global.defaults.restockTarget = v; end,
689 }, 688 },
690 minCraftingQueue = { 689 minCraftingQueue = {
691 order = 20, 690 order = 20,
725 type = "toggle", 724 type = "toggle",
726 name = "Hide when below threshold", 725 name = "Hide when below threshold",
727 desc = "Hide items from the summary when their value is below the set price threshold.", 726 desc = "Hide items from the summary when their value is below the set price threshold.",
728 get = function() return self.db.global.defaults.summaryHidePriceThreshold; end, 727 get = function() return self.db.global.defaults.summaryHidePriceThreshold; end,
729 set = function(i, v) self.db.global.defaults.summaryHidePriceThreshold = v; end, 728 set = function(i, v) self.db.global.defaults.summaryHidePriceThreshold = v; end,
729 },
730 queueSkipPriceThreshild = {
731 order = 55,
732 type = "toggle",
733 name = "NYI | Don't queue when below threshold",
734 desc = "Do not queue items when their value is below the set price threshold.",
735 get = function() return self.db.global.defaults.queueSkipPriceThreshild; end,
736 set = function(i, v) self.db.global.defaults.queueSkipPriceThreshild = v; end,
730 }, 737 },
731 alwaysGetAuctionValue = { 738 alwaysGetAuctionValue = {
732 order = 60, 739 order = 60,
733 type = "toggle", 740 type = "toggle",
734 name = "Always show auction value", 741 name = "Always show auction value",
1073 local defaultGroup = { 1080 local defaultGroup = {
1074 order = 0, 1081 order = 0,
1075 type = "group", 1082 type = "group",
1076 childGroups = "tab", 1083 childGroups = "tab",
1077 name = function(info) 1084 name = function(info)
1078 return groupIdToName[info[#info]]; 1085 local groupId = info[#info];
1086 if groupIsVirtual[groupId] then
1087 return ("%s |cfffed000Virtual|r"):format(groupIdToName[groupId]);
1088 else
1089 return groupIdToName[groupId];
1090 end
1091 end,
1092 desc = function(info)
1093 local groupId = info[#info];
1094 if groupIsVirtual[groupId] then
1095 return "This is a virtual group, you can use it to override the defaults for other groups.";
1096 end
1079 end, 1097 end,
1080 args = { 1098 args = {
1081 general = { 1099 general = {
1082 order = 10, 1100 order = 10,
1083 type = "group", 1101 type = "group",
1167 1185
1168 return temp; 1186 return temp;
1169 end, 1187 end,
1170 arg = "overrideCraftingAddon", 1188 arg = "overrideCraftingAddon",
1171 }, 1189 },
1190 virtualGroup = {
1191 order = 40,
1192 type = "select",
1193 name = "Use virtual group settings",
1194 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.",
1195 values = function()
1196 local temp = {};
1197
1198 --TODO: Build list based on virtual groups we have, exclude the currently selected virtual group (allow endless linking, e.g. Normal group -> virtual1 -> virtual2 -> virtual3 -> ... -> defaults, do this by calling the "GetOptionByKey" function whenever a virtual group is enabled)
1199 temp[""] = "";
1200 temp["NYI"] = "Not Yet Implemented";
1201
1202 return temp;
1203 end,
1204 },
1172 }, 1205 },
1173 }, 1206 },
1174 minimumStock = { 1207 minimumStock = {
1175 order = 10, 1208 order = 10,
1176 type = "group", 1209 type = "group",
1235 arg = "alertBelowMinimum", 1268 arg = "alertBelowMinimum",
1236 }, 1269 },
1237 alertBelowMinimum = { 1270 alertBelowMinimum = {
1238 order = 30, 1271 order = 30,
1239 type = "toggle", 1272 type = "toggle",
1240 name = "Alert when below minimum", 1273 name = "NYI | Alert when below minimum",
1241 desc = "Show an alert when an item in this group gets below the minimum stock threshold.", 1274 desc = "Show an alert when an item in this group gets below the minimum stock threshold.",
1242 arg = "overrideAlertBelowMinimum", 1275 arg = "overrideAlertBelowMinimum",
1243 }, 1276 },
1244 overrideTrackAtCharacters = { 1277 overrideTrackAtCharacters = {
1245 order = 39, 1278 order = 39,
1303 restockTarget = { 1336 restockTarget = {
1304 order = 10, 1337 order = 10,
1305 type = "range", 1338 type = "range",
1306 min = 0, 1339 min = 0,
1307 max = 100000, 1340 max = 100000,
1308 softMax = 1000, 1341 softMax = 100,
1309 step = 1, 1342 step = 1,
1310 name = "Restock target", 1343 name = "Restock target",
1311 desc = "You can manually enter a value between 1.000 and 100.000 in the edit box if the provided range is insufficient.", 1344 desc = "You can manually enter a value between 100 and 100.000 in the edit box if the provided range is insufficient.",
1312 arg = "overrideRestockTarget", 1345 arg = "overrideRestockTarget",
1313 }, 1346 },
1314 overrideMinCraftingQueue = { 1347 overrideMinCraftingQueue = {
1315 order = 19, 1348 order = 19,
1316 type = "toggle", 1349 type = "toggle",
1375 order = 50, 1408 order = 50,
1376 type = "toggle", 1409 type = "toggle",
1377 name = "Hide when below threshold", 1410 name = "Hide when below threshold",
1378 desc = "Hide items from the summary when their value is below the set price threshold.", 1411 desc = "Hide items from the summary when their value is below the set price threshold.",
1379 arg = "overrideSummaryHidePriceThreshold", 1412 arg = "overrideSummaryHidePriceThreshold",
1413 },
1414 overrideQueueSkipPriceThreshild = {
1415 order = 54,
1416 type = "toggle",
1417 name = "Override queue skipping",
1418 desc = "Allows you to override if items in this group should be skipped when queueing while their value is below the price threshold.",
1419 arg = "queueSkipPriceThreshild",
1420 },
1421 queueSkipPriceThreshild = {
1422 order = 55,
1423 type = "toggle",
1424 name = "NYI | Don't queue when below threshold",
1425 desc = "Do not queue items when their value is below the set price threshold.",
1426 arg = "overrideQueueSkipPriceThreshild",
1380 }, 1427 },
1381 overrideAlwaysGetAuctionValue = { 1428 overrideAlwaysGetAuctionValue = {
1382 order = 59, 1429 order = 59,
1383 type = "toggle", 1430 type = "toggle",
1384 name = "Override auction value showing", 1431 name = "Override auction value showing",
1502 add = { 1549 add = {
1503 order = 30, 1550 order = 30,
1504 type = "group", 1551 type = "group",
1505 name = "Add items", 1552 name = "Add items",
1506 desc = "Add new items to this group.", 1553 desc = "Add new items to this group.",
1554 disabled = function(info) return groupIsVirtual[info[2]]; end,
1507 args = { 1555 args = {
1508 singleAdd = { 1556 singleAdd = {
1509 order = 10, 1557 order = 10,
1510 type = "group", 1558 type = "group",
1511 inline = true, 1559 inline = true,
1701 remove = { 1749 remove = {
1702 order = 40, 1750 order = 40,
1703 type = "group", 1751 type = "group",
1704 name = "Current items", 1752 name = "Current items",
1705 desc = "View, export or remove items from this group.", 1753 desc = "View, export or remove items from this group.",
1754 disabled = function(info) return groupIsVirtual[info[2]]; end,
1706 args = { 1755 args = {
1707 help = { 1756 help = {
1708 order = 10, 1757 order = 10,
1709 type = "group", 1758 type = "group",
1710 inline = true, 1759 inline = true,
1821 }, 1870 },
1822 }, 1871 },
1823 }, 1872 },
1824 }; 1873 };
1825 1874
1875 local currentGroupType = "Normal";
1826 function addon:MakeGroupOptions() 1876 function addon:MakeGroupOptions()
1827 options.args.groups = { 1877 options.args.groups = {
1828 order = 1100, 1878 order = 1100,
1829 type = "group", 1879 type = "group",
1830 name = "Groups", 1880 name = "Groups",
1842 name = "Group name", 1892 name = "Group name",
1843 desc = "The name of the group. You can also use item links as you wish.", 1893 desc = "The name of the group. You can also use item links as you wish.",
1844 validate = ValidateGroupName, 1894 validate = ValidateGroupName,
1845 set = function(_, value) 1895 set = function(_, value)
1846 self.db.global.groups[value] = {}; 1896 self.db.global.groups[value] = {};
1847 1897 if currentGroupType == "Virtual" then
1898 self.db.global.groups[value].isVirtual = true;
1899 end
1900
1848 addon:FillGroupOptions(); 1901 addon:FillGroupOptions();
1849 end, 1902 end,
1850 get = false, 1903 get = false,
1851 width = "double", 1904 width = "double",
1905 },
1906 type = {
1907 order = 20,
1908 type = "select",
1909 name = "Type (advanced)",
1910 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.",
1911 values = {
1912 ["Normal"] = "Normal",
1913 ["Virtual"] = "Virtual",
1914 },
1915 set = function(_, value) currentGroupType = value; end,
1916 get = function() return currentGroupType; end,
1852 }, 1917 },
1853 }, 1918 },
1854 }, 1919 },
1855 import = { 1920 import = {
1856 order = 20, 1921 order = 20,
1923 for id, name in pairs(groupIdToName) do 1988 for id, name in pairs(groupIdToName) do
1924 if type(name) == "string" and not self.db.global.groups[name] then 1989 if type(name) == "string" and not self.db.global.groups[name] then
1925 options.args.groups.args[id] = nil; 1990 options.args.groups.args[id] = nil;
1926 groupIdToName[id] = nil; 1991 groupIdToName[id] = nil;
1927 groupIdToName[name] = nil; 1992 groupIdToName[name] = nil;
1993 groupIsVirtual[id] = nil;
1928 end 1994 end
1929 end 1995 end
1930 1996
1931 for name, values in pairs(self.db.global.groups) do 1997 for name, values in pairs(self.db.global.groups) do
1932 if not groupIdToName[name] then 1998 if not groupIdToName[name] then
1933 options.args.groups.args[tostring(count)] = defaultGroup; 1999 options.args.groups.args[tostring(count)] = defaultGroup;
1934 2000
1935 groupIdToName[tostring(count)] = name; 2001 groupIdToName[tostring(count)] = name;
1936 groupIdToName[name] = true; 2002 groupIdToName[name] = true;
2003 if values.isVirtual then
2004 groupIsVirtual[tostring(count)] = true;
2005 end
1937 2006
1938 count = ( count + 1 ); 2007 count = ( count + 1 );
1939 end 2008 end
1940 end 2009 end
1941 end 2010 end