annotate Config.lua @ 4:3fe17b1a54e3 Release

Updated the ToC for 5.3
author only1yzerman
date Mon, 20 May 2013 16:18:09 -0400
parents ff01eb61abab
children 75ca29b399e8
rev   line source
only1yzerman@0 1 -------- YOU'RE ON YOUR OWN HERE, THIS IS A FRIKKIN MESS - Osmium
only1yzerman@0 2 -------- Challenge Accepted - Whyzerman
only1yzerman@0 3
only1yzerman@0 4 local element;
only1yzerman@0 5 local frame;
only1yzerman@0 6
only1yzerman@0 7 Settings = {};
only1yzerman@0 8 Settings.MultiZoneMode = 0;
only1yzerman@0 9 Settings.HerbFilter = {};
only1yzerman@0 10 Settings.OreFilter = {};
only1yzerman@0 11 Settings.ZoneFilter = {{}, {}, {}, {}, {}};
only1yzerman@0 12 Settings.InspectionRadius = 60;
only1yzerman@0 13 local function Title(text)
only1yzerman@0 14 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 15 str:SetPoint("TOPLEFT", element, "TOPLEFT", 16, -16);
only1yzerman@0 16 str:SetJustifyH("LEFT");
only1yzerman@0 17 str:SetJustifyV("TOP");
only1yzerman@0 18 str:SetText(text);
only1yzerman@0 19 element = str;
only1yzerman@0 20 end
only1yzerman@0 21
only1yzerman@0 22 local function Column2(offset)
only1yzerman@0 23 local str = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge");
only1yzerman@0 24 str:SetPoint("TOPLEFT", element, "TOPRIGHT", -offset, -16);
only1yzerman@0 25 str:SetText(" ");
only1yzerman@0 26 element = str;
only1yzerman@0 27 end
only1yzerman@0 28
only1yzerman@0 29 local function Heading(text)
only1yzerman@0 30 local str = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
only1yzerman@0 31 str:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 32 str:SetText(text);
only1yzerman@0 33 element = str;
only1yzerman@0 34 end
only1yzerman@0 35
only1yzerman@0 36 local ddCount = 0;
only1yzerman@0 37
only1yzerman@0 38 local function DropDown(settings, key, width, init)
only1yzerman@0 39 ddCount = ddCount + 1;
only1yzerman@0 40 local dd = CreateFrame("Frame", "dropDown"..ddCount, frame, "UIDropDownMenuTemplate");
only1yzerman@0 41 dd:EnableMouse(true);
only1yzerman@0 42 dd:SetPoint("TOPLEFT", element, "BOTTOMLEFT", 0, -8);
only1yzerman@0 43 dd.State = {};
only1yzerman@0 44 UIDropDownMenu_Initialize(dd, init);
only1yzerman@0 45 UIDropDownMenu_SetWidth(dd, width);
only1yzerman@0 46 UIDropDownMenu_JustifyText(dd, "LEFT");
only1yzerman@0 47 UIDropDownMenu_SetSelectedValue(dd, settings[key]);
only1yzerman@0 48 element = dd;
only1yzerman@0 49 end
only1yzerman@0 50
only1yzerman@0 51 function AddButton(settings, key, menu, label, value)
only1yzerman@0 52 local info = UIDropDownMenu_CreateInfo();
only1yzerman@0 53 info.text = label;
only1yzerman@0 54 info.value = value;
only1yzerman@0 55 info.owner = menu;
only1yzerman@0 56 info.func = function()
only1yzerman@0 57 UIDropDownMenu_SetSelectedValue(menu, value);
only1yzerman@0 58 settings[key] = value;
only1yzerman@0 59 Bloodhound2.UpdateMinimap();
only1yzerman@0 60 end;
only1yzerman@0 61 UIDropDownMenu_AddButton(info);
only1yzerman@0 62 end
only1yzerman@0 63
only1yzerman@0 64 local cbCount = 0;
only1yzerman@0 65
only1yzerman@0 66 function CheckBox(label, value, relative, anchor, dx, dy, state)
only1yzerman@0 67 cbCount = cbCount + 1;
only1yzerman@0 68 local cb = CreateFrame("CheckButton", "checkBox"..cbCount, frame, "UICheckButtonTemplate");
only1yzerman@0 69 cb:SetWidth(16);
only1yzerman@0 70 cb:SetHeight(16);
only1yzerman@0 71 cb:SetPoint("TOPLEFT", relative, anchor, dx, dy);
only1yzerman@0 72 local text = getglobal(cb:GetName() .. "Text");
only1yzerman@0 73 text:SetText(label);
only1yzerman@0 74 cb:SetChecked(not state[value]);
only1yzerman@0 75 cb:SetScript("OnClick", function(self)
only1yzerman@0 76 if (self:GetChecked()) then
only1yzerman@0 77 state[value] = nil;
only1yzerman@0 78 else
only1yzerman@0 79 state[value] = 1;
only1yzerman@0 80 end
only1yzerman@0 81 Bloodhound2.UpdateMinimap();
only1yzerman@0 82 end);
only1yzerman@0 83 element = cb;
only1yzerman@0 84 return text:GetWidth();
only1yzerman@0 85 end
only1yzerman@0 86
only1yzerman@0 87 function ContinentName()
only1yzerman@0 88 return select(GetCurrentMapContinent(), GetMapContinents());
only1yzerman@0 89 end
only1yzerman@0 90
only1yzerman@0 91 function CheckBoxes(table, state)
only1yzerman@0 92 local relative;
only1yzerman@0 93 local bottom;
only1yzerman@0 94 local height = 1;
only1yzerman@0 95 local maxWidth = 0;
only1yzerman@0 96 local i = 0;
only1yzerman@0 97 local checkboxes = {};
only1yzerman@0 98
only1yzerman@0 99 for k, v in pairs(table) do
only1yzerman@0 100 height = height + 1;
only1yzerman@0 101 end
only1yzerman@0 102
only1yzerman@0 103 height = floor(height / 2);
only1yzerman@0 104 if height > 19 then height = 19; end;
only1yzerman@0 105
only1yzerman@0 106 for k, v in pairs(table) do
only1yzerman@0 107 i = i + 1;
only1yzerman@0 108 if (i > 1) and (mod(i, height) == 1) then
only1yzerman@0 109 width = CheckBox(v, k, relative, "TOPRIGHT", maxWidth + 6, 0, state);
only1yzerman@0 110 relative = element;
only1yzerman@0 111 maxWidth = width;
only1yzerman@0 112 else
only1yzerman@0 113 width = CheckBox(v, k, element, "BOTTOMLEFT", 0, 0, state);
only1yzerman@0 114 if (i == 1) then relative = element; end;
only1yzerman@0 115 maxWidth = max(width, maxWidth);
only1yzerman@0 116 end
only1yzerman@0 117 if (i == height) then bottom = element; end;
only1yzerman@0 118 checkboxes[k] = element;
only1yzerman@0 119 end
only1yzerman@0 120
only1yzerman@0 121 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 122 button:SetText(L["All"]);
only1yzerman@0 123 local allWidth = button:GetTextWidth() + 30;
only1yzerman@0 124 button:SetWidth(allWidth);
only1yzerman@0 125 button:SetHeight(22);
only1yzerman@0 126 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", 0, -20);
only1yzerman@0 127 button:SetScript("OnClick",
only1yzerman@0 128 function(self, button, down)
only1yzerman@0 129 for k, v in pairs(table) do
only1yzerman@0 130 checkboxes[k]:SetChecked(true);
only1yzerman@0 131 state[k] = nil;
only1yzerman@0 132 end
only1yzerman@0 133 end
only1yzerman@0 134 );
only1yzerman@0 135
only1yzerman@0 136 element = button;
only1yzerman@0 137
only1yzerman@0 138 local button = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate");
only1yzerman@0 139 button:SetText(L["None"]);
only1yzerman@0 140 button:SetWidth(button:GetTextWidth() + 30);
only1yzerman@0 141 button:SetHeight(22);
only1yzerman@0 142 button:SetPoint("TOPLEFT", bottom, "TOPLEFT", allWidth + 20, -20);
only1yzerman@0 143 button:SetScript("OnClick",
only1yzerman@0 144 function(self, button, down)
only1yzerman@0 145 for k, v in pairs(table) do
only1yzerman@0 146 checkboxes[k]:SetChecked(false);
only1yzerman@0 147 state[k] = 1;
only1yzerman@0 148 end
only1yzerman@0 149 end
only1yzerman@0 150 );
only1yzerman@0 151 end
only1yzerman@0 152
only1yzerman@0 153 function AddZones(...)
only1yzerman@0 154 local table = {};
only1yzerman@0 155
only1yzerman@0 156 for i=1,select("#", ...),1 do
only1yzerman@0 157 table[i] = select(i, ...);
only1yzerman@0 158 end
only1yzerman@0 159
only1yzerman@0 160 if not Settings.ZoneFilter then
only1yzerman@0 161 Settings.ZoneFilter = {{},{},{},{},{}};
only1yzerman@0 162 end
only1yzerman@0 163
only1yzerman@0 164 local c = GetCurrentMapContinent()
only1yzerman@0 165
only1yzerman@0 166 if not Settings.ZoneFilter[c] then
only1yzerman@0 167 Settings.ZoneFilter[c] = {}
only1yzerman@0 168 end
only1yzerman@0 169
only1yzerman@0 170 CheckBoxes(table, Settings.ZoneFilter[c]);
only1yzerman@0 171 end
only1yzerman@0 172
only1yzerman@0 173 function AddHerbs()
only1yzerman@0 174 local table = {};
only1yzerman@0 175
only1yzerman@0 176 for h, v in pairs(Bloodhound2.ContinentHerbs) do
only1yzerman@0 177 local name = L[h];
only1yzerman@0 178 if not name then name="Herb "..h; end;
only1yzerman@0 179 table[h] = name;
only1yzerman@0 180 end
only1yzerman@0 181
only1yzerman@0 182 if not Settings.HerbFilter then
only1yzerman@0 183 Settings.HerbFilter = {};
only1yzerman@0 184 end
only1yzerman@0 185
only1yzerman@0 186 CheckBoxes(table, Settings.HerbFilter);
only1yzerman@0 187 end
only1yzerman@0 188
only1yzerman@0 189 function AddOre()
only1yzerman@0 190 local table = {};
only1yzerman@0 191
only1yzerman@0 192 for h, v in pairs(Bloodhound2.ContinentOre) do
only1yzerman@0 193 local name = L[h];
only1yzerman@0 194 if not name then name="Ore "..h; end;
only1yzerman@0 195 table[h] = name;
only1yzerman@0 196 end
only1yzerman@0 197
only1yzerman@0 198 if not Settings.OreFilter then
only1yzerman@0 199 Settings.OreFilter = {};
only1yzerman@0 200 end
only1yzerman@0 201
only1yzerman@0 202 CheckBoxes(table, Settings.OreFilter);
only1yzerman@0 203 end
only1yzerman@0 204
only1yzerman@0 205 local function CopyTable(table)
only1yzerman@0 206 local copy = {};
only1yzerman@0 207 for k,v in pairs(table) do
only1yzerman@0 208 if (type(v) == "table") then
only1yzerman@0 209 copy[k] = CopyTable(v);
only1yzerman@0 210 else
only1yzerman@0 211 copy[k] = v;
only1yzerman@0 212 end
only1yzerman@0 213 end
only1yzerman@0 214 return copy;
only1yzerman@0 215 end
only1yzerman@0 216
only1yzerman@0 217 local configFrame;
only1yzerman@0 218 local BackupSettings;
only1yzerman@0 219
only1yzerman@0 220 local function RefreshConfigFrame()
only1yzerman@0 221 if (configFrame) then
only1yzerman@0 222 configFrame:Hide();
only1yzerman@0 223 end
only1yzerman@0 224
only1yzerman@0 225 BackupSettings = CopyTable(Settings);
only1yzerman@0 226
only1yzerman@0 227 configFrame = CreateFrame("Frame", nil, Bloodhound2.panel);
only1yzerman@0 228 configFrame:SetAllPoints(Bloodhound2.panel);
only1yzerman@0 229 frame = configFrame;
only1yzerman@0 230 element = frame;
only1yzerman@0 231 Title(L["Bloodhound2 Options"]);
only1yzerman@0 232 Heading(L["Multi-Zone"]);
only1yzerman@0 233 DropDown(Settings, "MultiZoneMode", 120, function(menu)
only1yzerman@0 234 AddButton(Settings, "MultiZoneMode", menu, L["While flying"], 0);
only1yzerman@0 235 AddButton(Settings, "MultiZoneMode", menu, L["Always"], 1);
only1yzerman@0 236 AddButton(Settings, "MultiZoneMode", menu, L["Never"], 2);
only1yzerman@0 237 end);
only1yzerman@0 238 Heading(L["Zones"].." ("..ContinentName()..")");
only1yzerman@0 239 AddZones(GetMapZones(GetCurrentMapContinent()));
only1yzerman@0 240 element = frame;
only1yzerman@0 241 Column2(150);
only1yzerman@0 242 Heading(L["Inspection radius"]);
only1yzerman@0 243 DropDown(Settings, "InspectionRadius", 70, function(menu)
only1yzerman@0 244 AddButton(Settings, "InspectionRadius", menu, 30, 30);
only1yzerman@0 245 AddButton(Settings, "InspectionRadius", menu, 35, 35);
only1yzerman@0 246 AddButton(Settings, "InspectionRadius", menu, 40, 40);
only1yzerman@0 247 AddButton(Settings, "InspectionRadius", menu, 45, 45);
only1yzerman@0 248 AddButton(Settings, "InspectionRadius", menu, 50, 50);
only1yzerman@0 249 AddButton(Settings, "InspectionRadius", menu, 60, 60);
only1yzerman@0 250 AddButton(Settings, "InspectionRadius", menu, 70, 70);
only1yzerman@0 251 AddButton(Settings, "InspectionRadius", menu, 80, 80);
only1yzerman@0 252 AddButton(Settings, "InspectionRadius", menu, 90, 90);
only1yzerman@0 253 AddButton(Settings, "InspectionRadius", menu, 100, 100);
only1yzerman@0 254 AddButton(Settings, "InspectionRadius", menu, 120, 120);
only1yzerman@0 255 end);
only1yzerman@0 256 end
only1yzerman@0 257
only1yzerman@0 258 local herbFrame;
only1yzerman@0 259
only1yzerman@0 260 local function RefreshHerbs()
only1yzerman@0 261 if (herbFrame) then herbFrame:Hide(); end;
only1yzerman@0 262 herbFrame = CreateFrame("Frame", nil, Bloodhound2.herbPanel);
only1yzerman@0 263 herbFrame:SetAllPoints(Bloodhound2.herbPanel);
only1yzerman@0 264 frame = herbFrame;
only1yzerman@0 265 element = frame;
only1yzerman@0 266 Title(L["Bloodhound2 Options"]);
only1yzerman@0 267 Heading(L["Herbs"].." ("..ContinentName()..")");
only1yzerman@0 268 AddHerbs();
only1yzerman@0 269 end
only1yzerman@0 270
only1yzerman@0 271 local oreFrame;
only1yzerman@0 272
only1yzerman@0 273 local function RefreshOre()
only1yzerman@0 274 if (oreFrame) then oreFrame:Hide(); end;
only1yzerman@0 275 oreFrame= CreateFrame("Frame", nil, Bloodhound2.orePanel);
only1yzerman@0 276 oreFrame:SetAllPoints(Bloodhound2.orePanel);
only1yzerman@0 277 frame = oreFrame;
only1yzerman@0 278 element = frame;
only1yzerman@0 279 Title(L["Bloodhound2 Options"]);
only1yzerman@0 280 Heading(L["Minerals"].." ("..ContinentName()..")");
only1yzerman@0 281 AddOre();
only1yzerman@0 282 end
only1yzerman@0 283
only1yzerman@0 284 local function RestoreHerbDefaults()
only1yzerman@0 285 Settings.HerbFilter = {};
only1yzerman@0 286 end
only1yzerman@0 287
only1yzerman@0 288 local function RestoreOreDefaults()
only1yzerman@0 289 Settings.OreFilter = {};
only1yzerman@0 290 end
only1yzerman@0 291
only1yzerman@0 292 local function RestoreZoneDefaults()
only1yzerman@0 293 Settings.MultiZoneMode = 0;
only1yzerman@0 294 Settings.InspectionRadius = 60;
only1yzerman@0 295 Settings.ZoneFilter[GetCurrentMapContinent()] = {};
only1yzerman@0 296 end
only1yzerman@0 297
only1yzerman@0 298 Bloodhound2.panel = CreateFrame("FRAME", "Bloodhound2", Bloodhound2.Frame);
only1yzerman@0 299 Bloodhound2.panel.name = L["Bloodhound2"];
only1yzerman@0 300 Bloodhound2.panel.default = RestoreZoneDefaults;
only1yzerman@0 301 Bloodhound2.panel.okay = function() end;
only1yzerman@0 302 Bloodhound2.panel.cancel = function() Settings = BackupSettings; Bloodhound2.UpdateMinimap(); end;
only1yzerman@0 303 Bloodhound2.panel.refresh = RefreshConfigFrame;
only1yzerman@0 304 InterfaceOptions_AddCategory(Bloodhound2.panel);
only1yzerman@0 305
only1yzerman@0 306 Bloodhound2.herbPanel = CreateFrame("FRAME", "Bloodhound2_Herbs", Bloodhound2.Frame);
only1yzerman@0 307 Bloodhound2.herbPanel.name = L["Herbs"];
only1yzerman@0 308 Bloodhound2.herbPanel.parent = "Bloodhound2";
only1yzerman@0 309 Bloodhound2.herbPanel.default = RestoreHerbDefaults;
only1yzerman@0 310 Bloodhound2.herbPanel.okay = function() end;
only1yzerman@0 311 Bloodhound2.herbPanel.cancel = function() end;
only1yzerman@0 312 Bloodhound2.herbPanel.refresh = RefreshHerbs;
only1yzerman@0 313 InterfaceOptions_AddCategory(Bloodhound2.herbPanel);
only1yzerman@0 314
only1yzerman@0 315 Bloodhound2.orePanel = CreateFrame("FRAME", "Bloodhound2_Ore", Bloodhound2.Frame);
only1yzerman@0 316 Bloodhound2.orePanel.name = L["Minerals"];
only1yzerman@0 317 Bloodhound2.orePanel.parent = "Bloodhound2";
only1yzerman@0 318 Bloodhound2.orePanel.default = RestoreOreDefaults;
only1yzerman@0 319 Bloodhound2.orePanel.okay = function() end;
only1yzerman@0 320 Bloodhound2.orePanel.cancel = function() end;
only1yzerman@0 321 Bloodhound2.orePanel.refresh = RefreshOre;
only1yzerman@0 322 InterfaceOptions_AddCategory(Bloodhound2.orePanel);
only1yzerman@0 323