farmbuyer@96
|
1 local addon = select(2,...)
|
farmbuyer@96
|
2 if addon.NOLOAD then return end
|
farmbuyer@96
|
3
|
farmbuyer@96
|
4 -- Don't bother recording any of this loot:
|
farmbuyer@96
|
5 addon.default_itemfilter = {
|
farmbuyer@97
|
6 [52190] = true, -- Inferno Ruby
|
farmbuyer@97
|
7 [52191] = true, -- Ocean Sapphire
|
farmbuyer@97
|
8 [52192] = true, -- Dream Emerald
|
farmbuyer@97
|
9 [52193] = true, -- Ember Topaz
|
farmbuyer@97
|
10 [52194] = true, -- Demonseye
|
farmbuyer@97
|
11 [52195] = true, -- Amberjewel
|
farmbuyer@97
|
12 [52722] = true, -- Maelstrom Crystal
|
farmbuyer@97
|
13 [71716] = true, -- Soothsayer's Runes
|
farmbuyer@96
|
14 -- could probably remove most of this now
|
farmbuyer@97
|
15 -- [29434] = true, -- Badge of Justice
|
farmbuyer@97
|
16 -- [40752] = true, -- Emblem of Heroism
|
farmbuyer@97
|
17 -- [40753] = true, -- Emblem of Valor
|
farmbuyer@97
|
18 -- [45624] = true, -- Emblem of Conquest
|
farmbuyer@97
|
19 -- [43228] = true, -- Stone Keeper's Shard
|
farmbuyer@97
|
20 -- [47241] = true, -- Emblem of Triumph
|
farmbuyer@97
|
21 -- [49426] = true, -- Emblem of Frost
|
farmbuyer@96
|
22 }
|
farmbuyer@96
|
23
|
farmbuyer@96
|
24 -- Mark these as straight to guild vault:
|
farmbuyer@96
|
25 addon.default_itemvault = {
|
farmbuyer@97
|
26 [52078] = true, -- Chaos Orb
|
farmbuyer@97
|
27 [69237] = true, -- Living Ember
|
farmbuyer@97
|
28 [71998] = true, -- Essence of Destruction
|
farmbuyer@96
|
29 }
|
farmbuyer@96
|
30
|
farmbuyer@96
|
31 local options_tree = {
|
farmbuyer@96
|
32 {
|
farmbuyer@96
|
33 value = "pong",
|
farmbuyer@96
|
34 text = "Pongs",
|
farmbuyer@96
|
35 },
|
farmbuyer@96
|
36 {
|
farmbuyer@96
|
37 value = "basic",
|
farmbuyer@96
|
38 text = "Options",
|
farmbuyer@96
|
39 children = {
|
farmbuyer@96
|
40 {
|
farmbuyer@96
|
41 value = "filter",
|
farmbuyer@96
|
42 text = "Item Filters",
|
farmbuyer@96
|
43 },
|
farmbuyer@97
|
44 {
|
farmbuyer@97
|
45 value = "profiles",
|
farmbuyer@97
|
46 text = "Profiles",
|
farmbuyer@97
|
47 },
|
farmbuyer@96
|
48 },
|
farmbuyer@96
|
49 },
|
farmbuyer@96
|
50 {
|
farmbuyer@96
|
51 value = "adv",
|
farmbuyer@96
|
52 text = "Advanced/Debugging",
|
farmbuyer@96
|
53 },
|
farmbuyer@96
|
54 }
|
farmbuyer@96
|
55
|
farmbuyer@96
|
56
|
farmbuyer@96
|
57 --[[
|
farmbuyer@96
|
58 mkbutton ("WidgetType", 'display key', "Text On Widget", "mouseover status text")
|
farmbuyer@96
|
59 mkbutton ( [Button] 'display key', "Text On Widget", "mouseover status text")
|
farmbuyer@96
|
60 mkbutton ( [Button] [text] "Text On Widget", "mouseover status text")
|
farmbuyer@96
|
61 ]]
|
farmbuyer@96
|
62 local mkbutton = addon.gui_state_pointer.mkbutton
|
farmbuyer@96
|
63 local gui = addon.gui_state_pointer
|
farmbuyer@96
|
64 local AceGUI = LibStub("AceGUI-3.0")
|
farmbuyer@96
|
65 local flib = LibStub("LibFarmbuyer")
|
farmbuyer@96
|
66 local opts
|
farmbuyer@96
|
67
|
farmbuyer@96
|
68 local function mktoggle (opt, label, width, desc, opt_func)
|
farmbuyer@96
|
69 local w = mkbutton("CheckBoxSmallLabel", nil, "", desc)
|
farmbuyer@96
|
70 w:SetRelativeWidth(width)
|
farmbuyer@96
|
71 w:SetType("checkbox")
|
farmbuyer@96
|
72 w:SetLabel(label)
|
farmbuyer@96
|
73 if opt then
|
farmbuyer@96
|
74 w:SetValue(opts[opt])
|
farmbuyer@96
|
75 w:SetCallback("OnValueChanged", opt_func or (function(_w,event,value)
|
farmbuyer@96
|
76 opts[opt] = value
|
farmbuyer@96
|
77 end))
|
farmbuyer@96
|
78 end
|
farmbuyer@96
|
79 return w
|
farmbuyer@96
|
80 end
|
farmbuyer@96
|
81
|
farmbuyer@97
|
82 local function spacer (height)
|
farmbuyer@97
|
83 local s = AceGUI:Create("Spacer")
|
farmbuyer@97
|
84 s:SetFullWidth(true)
|
farmbuyer@97
|
85 s:SetHeight(height)
|
farmbuyer@97
|
86 return s
|
farmbuyer@97
|
87 end
|
farmbuyer@97
|
88
|
farmbuyer@96
|
89 local function mktitle (txt)
|
farmbuyer@96
|
90 local t = AceGUI:Create("Label")
|
farmbuyer@96
|
91 t:SetFullWidth(true)
|
farmbuyer@96
|
92 t:SetColor (0.19, 0.68, 1) -- cff30adff
|
farmbuyer@96
|
93 t:SetFontObject(GameFontHighlightLarge)
|
farmbuyer@96
|
94 t:SetText(txt)
|
farmbuyer@97
|
95 return t, spacer(20)
|
farmbuyer@96
|
96 end
|
farmbuyer@96
|
97
|
farmbuyer@96
|
98 local function adv_careful_OnTextChanged (ebox,event,value)
|
farmbuyer@96
|
99 -- The EditBox widget's code will call an internal ShowButton routine
|
farmbuyer@96
|
100 -- after this callback returns. ShowButton will test for this flag:
|
farmbuyer@96
|
101 ebox:DisableButton (value == "")
|
farmbuyer@96
|
102 end
|
farmbuyer@96
|
103
|
farmbuyer@96
|
104
|
farmbuyer@96
|
105 ---------------
|
farmbuyer@96
|
106 -- All controls take a scrollframe container set to Flow layout.
|
farmbuyer@96
|
107 local controls = {}
|
farmbuyer@96
|
108 controls.pong = function (container)
|
farmbuyer@96
|
109 container:AddChildren(mktitle[[Echoes from latest ping:]])
|
farmbuyer@96
|
110 addon.sender_list.sort()
|
farmbuyer@96
|
111 if #addon.sender_list.namesI > 0 then
|
farmbuyer@96
|
112 local w = AceGUI:Create("Label")
|
farmbuyer@96
|
113 w:SetFullWidth(true)
|
farmbuyer@96
|
114 w:SetText(table.concat(addon.sender_list.namesI,'\n')) -- sigh
|
farmbuyer@96
|
115 container:AddChild(w)
|
farmbuyer@96
|
116 end
|
farmbuyer@96
|
117 end
|
farmbuyer@96
|
118
|
farmbuyer@96
|
119
|
farmbuyer@96
|
120 ---------------
|
farmbuyer@96
|
121 controls.basic = function (container)
|
farmbuyer@96
|
122 container:AddChildren(mktitle[[Account Options (saved across sessions)]])
|
farmbuyer@96
|
123
|
farmbuyer@96
|
124 container:PauseLayout()
|
farmbuyer@96
|
125 local w
|
farmbuyer@96
|
126 local stdw = 0.99 -- standard width
|
farmbuyer@96
|
127
|
farmbuyer@96
|
128 -- the nubtoggle!
|
farmbuyer@96
|
129 w = mktoggle('gui_noob', [[Show UI Tips]], stdw,
|
farmbuyer@96
|
130 [[Toggles display of the "helpful tips" box hanging off the right side. Useful if you've just installed/upgraded.]])
|
farmbuyer@96
|
131 container:AddChild(w)
|
farmbuyer@96
|
132
|
farmbuyer@96
|
133 -- reminder popup
|
farmbuyer@96
|
134 w = mktoggle('popup_on_join', "Show reminder popup on new raid", stdw,
|
farmbuyer@96
|
135 [[When joining a raid and not already tracking, display a dialog asking for instructions.]])
|
farmbuyer@96
|
136 container:AddChild(w)
|
farmbuyer@96
|
137
|
farmbuyer@96
|
138 -- toggle scroll-to-bottom on first tab
|
farmbuyer@96
|
139 w = mktoggle('scroll_to_bottom', "Scroll to bottom when opening display", stdw,
|
farmbuyer@96
|
140 [[Scroll to the bottom of the loot window (most recent entries) when displaying the GUI.]])
|
farmbuyer@96
|
141 container:AddChild(w)
|
farmbuyer@96
|
142
|
farmbuyer@96
|
143 -- chatty boss mode
|
farmbuyer@96
|
144 w = mktoggle('chatty_on_kill', "Be chatty on boss kill", stdw,
|
farmbuyer@96
|
145 [[Print something to chat output when the boss mod tells Ouro Loot about a successful boss kill.]])
|
farmbuyer@96
|
146 container:AddChild(w)
|
farmbuyer@96
|
147
|
farmbuyer@96
|
148 -- less noise in main panel
|
farmbuyer@96
|
149 w = mktoggle('no_tracking_wipes', "Do not track wipes", stdw,
|
farmbuyer@96
|
150 [[Do not add 'wipe' entries on the main loot grid, or generate any text for them.]])
|
farmbuyer@96
|
151 container:AddChild(w)
|
farmbuyer@96
|
152
|
farmbuyer@96
|
153 -- cutesy abbrevs
|
farmbuyer@96
|
154 w = mktoggle('snarky_boss', "Use snarky boss names", stdw,
|
farmbuyer@96
|
155 [[Irreverent replacement names for boss events. See abbreviations.lua for details.]])
|
farmbuyer@96
|
156 container:AddChild(w)
|
farmbuyer@96
|
157
|
farmbuyer@96
|
158 -- LOD plugins in all cases
|
farmbuyer@96
|
159 w = mktoggle('display_disabled_LODs', "Include disabled plugins", stdw,
|
farmbuyer@96
|
160 [[Show loadable plugins even if they've been disabled (and offer to enable them). Relog to take effect.]])
|
farmbuyer@96
|
161 container:AddChild(w)
|
farmbuyer@96
|
162
|
farmbuyer@96
|
163 -- showing the "(from Rebroadcasterdude)" in the notes column
|
farmbuyer@96
|
164 w = mktoggle('display_bcast_from', "Show rebroadcasting player", stdw,
|
farmbuyer@96
|
165 [[Include "from PlayerName" in the Notes column for loot that was broadcast to you. (Not included in forum output).]],
|
farmbuyer@96
|
166 function(_w,_e,value)
|
farmbuyer@96
|
167 opts.display_bcast_from = value
|
farmbuyer@96
|
168 addon.loot_clean = nil
|
farmbuyer@96
|
169 end)
|
farmbuyer@96
|
170 container:AddChild(w)
|
farmbuyer@96
|
171
|
farmbuyer@96
|
172 -- prefilling g_uniques with history
|
farmbuyer@96
|
173 w = mktoggle('precache_history_uniques', "Prescan for faster handling", stdw,
|
farmbuyer@96
|
174 [[See description under +Help -- Handy Tips -- Prescanning> for instructions.]])
|
farmbuyer@96
|
175 container:AddChild(w)
|
farmbuyer@96
|
176
|
farmbuyer@97
|
177 container:AddChild(spacer(10))
|
farmbuyer@96
|
178 -- possible keybindings
|
farmbuyer@96
|
179 do
|
farmbuyer@96
|
180 local pair = AceGUI:Create("InlineGroup")
|
farmbuyer@96
|
181 pair:SetLayout("List")
|
farmbuyer@96
|
182 pair:SetRelativeWidth(0.49)
|
farmbuyer@96
|
183 pair:SetTitle("Keybinding for '/ouroloot'")
|
farmbuyer@96
|
184 local editbox, checkbox
|
farmbuyer@96
|
185 editbox = mkbutton("EditBox", nil, opts.keybinding_text,
|
farmbuyer@96
|
186 [[Keybinding text format is fragile! (All caps, ALT then CTRL then SHIFT.) Relog to take effect.]])
|
farmbuyer@96
|
187 editbox:SetFullWidth(true)
|
farmbuyer@96
|
188 editbox:SetLabel("Keybinding text")
|
farmbuyer@96
|
189 editbox:SetCallback("OnEnterPressed", function(_w,event,value)
|
farmbuyer@96
|
190 opts.keybinding_text = value
|
farmbuyer@96
|
191 end)
|
farmbuyer@96
|
192 editbox:SetDisabled(not opts.keybinding)
|
farmbuyer@96
|
193 checkbox = mktoggle('keybinding', "Register keybinding", 1,
|
farmbuyer@96
|
194 [[Register a keybinding to toggle the loot display. Relog to take effect.]],
|
farmbuyer@96
|
195 function (_w,_,value)
|
farmbuyer@96
|
196 opts.keybinding = value
|
farmbuyer@96
|
197 editbox:SetDisabled(not opts.keybinding)
|
farmbuyer@96
|
198 end)
|
farmbuyer@96
|
199 checkbox:SetFullWidth(true)
|
farmbuyer@96
|
200 pair:AddChild(checkbox)
|
farmbuyer@96
|
201 pair:AddChild(editbox)
|
farmbuyer@96
|
202 container:AddChild(pair)
|
farmbuyer@96
|
203 end
|
farmbuyer@96
|
204
|
farmbuyer@96
|
205 -- replacement for slashloot
|
farmbuyer@96
|
206 do
|
farmbuyer@96
|
207 local pair = AceGUI:Create("InlineGroup")
|
farmbuyer@96
|
208 pair:SetLayout("List")
|
farmbuyer@96
|
209 pair:SetRelativeWidth(0.49)
|
farmbuyer@96
|
210 pair:SetTitle('Synonyms for "/ouroloot"')
|
farmbuyer@96
|
211 local editbox, checkbox
|
farmbuyer@96
|
212 editbox = mkbutton("EditBox", nil, opts.slash_synonyms,
|
farmbuyer@96
|
213 [[Separate multiple synonyms with a comma. Relog to take effect.]])
|
farmbuyer@96
|
214 editbox:SetFullWidth(true)
|
farmbuyer@96
|
215 editbox:SetLabel("Slash commands")
|
farmbuyer@96
|
216 editbox:SetCallback("OnEnterPressed", function(_e,event,value)
|
farmbuyer@96
|
217 -- Do the sanity checking here rather than at each login.
|
farmbuyer@96
|
218 -- This is not foolproof. That's okay.
|
farmbuyer@96
|
219 local t = { strsplit(',', tostring(value)) }
|
farmbuyer@96
|
220 for k,v in ipairs(t) do
|
farmbuyer@96
|
221 v = v:trim()
|
farmbuyer@96
|
222 if v:sub(1,1) ~= "/" then
|
farmbuyer@96
|
223 v = "/" .. v
|
farmbuyer@96
|
224 end
|
farmbuyer@96
|
225 t[k] = v
|
farmbuyer@96
|
226 end
|
farmbuyer@96
|
227 value = table.concat(t,',')
|
farmbuyer@96
|
228 _e:SetText(value)
|
farmbuyer@96
|
229 opts.slash_synonyms = value
|
farmbuyer@96
|
230 end)
|
farmbuyer@96
|
231 editbox:SetDisabled(not opts.register_slash_synonyms)
|
farmbuyer@96
|
232 checkbox = mktoggle('register_slash_synonyms', "Register slash commands", 1,
|
farmbuyer@96
|
233 [[Register these slash commands as synonyms for "/ouroloot". Relog to take effect.]],
|
farmbuyer@96
|
234 function (_w,_,value)
|
farmbuyer@96
|
235 opts.register_slash_synonyms = value
|
farmbuyer@96
|
236 editbox:SetDisabled(not opts.register_slash_synonyms)
|
farmbuyer@96
|
237 end)
|
farmbuyer@96
|
238 checkbox:SetFullWidth(true)
|
farmbuyer@96
|
239 pair:AddChild(checkbox)
|
farmbuyer@96
|
240 pair:AddChild(editbox)
|
farmbuyer@96
|
241 container:AddChild(pair)
|
farmbuyer@96
|
242 end
|
farmbuyer@96
|
243
|
farmbuyer@96
|
244 -- chatty disposition/assignment changes
|
farmbuyer@97
|
245 container:AddChild(spacer(10))
|
farmbuyer@96
|
246 do
|
farmbuyer@96
|
247 local chatgroup = AceGUI:Create("InlineGroup")
|
farmbuyer@96
|
248 chatgroup:SetLayout("List")
|
farmbuyer@96
|
249 chatgroup:SetRelativeWidth(0.75)
|
farmbuyer@96
|
250 chatgroup:SetTitle("Remote Changes Chat")
|
farmbuyer@96
|
251 local toggle, editbox
|
farmbuyer@96
|
252 toggle = mktoggle('chatty_on_remote_changes', "Be chatty on remote changes", 1,
|
farmbuyer@96
|
253 [[Print something to chat when other users change recorded loot.]],
|
farmbuyer@96
|
254 function (_w,_,value)
|
farmbuyer@96
|
255 opts.chatty_on_remote_changes = value
|
farmbuyer@96
|
256 editbox:SetDisabled(not opts.chatty_on_remote_changes)
|
farmbuyer@96
|
257 end)
|
farmbuyer@96
|
258 toggle:SetFullWidth(true)
|
farmbuyer@96
|
259 chatgroup:AddChild(toggle)
|
farmbuyer@96
|
260 w = AceGUI:Create("Label")
|
farmbuyer@96
|
261 w:SetFullWidth(true)
|
farmbuyer@96
|
262 w:SetText("This controls the output of the |cff00ffff'Be chatty on remote changes'|r option. If this field is a number, it designates which chat frame to use. Otherwise it is the Lua variable name of a frame with AddMessage capability.")
|
farmbuyer@96
|
263 chatgroup:AddChild(w)
|
farmbuyer@96
|
264 editbox = mkbutton("EditBox", nil, opts.chatty_on_remote_changes_frame,
|
farmbuyer@96
|
265 [[1 = default chat frame, 2 = combat log, etc]])
|
farmbuyer@96
|
266 editbox:SetFullWidth(true)
|
farmbuyer@96
|
267 editbox:SetLabel("Output Chatframe")
|
farmbuyer@96
|
268 editbox:SetCallback("OnTextChanged", adv_careful_OnTextChanged)
|
farmbuyer@96
|
269 editbox:SetCallback("OnEnterPressed", function(_w,event,value)
|
farmbuyer@96
|
270 local prev = opts.chatty_on_remote_changes_frame
|
farmbuyer@96
|
271 value = value:trim()
|
farmbuyer@96
|
272 value = tonumber(value) or value
|
farmbuyer@96
|
273 if addon:_set_remote_change_chatframe (value) then
|
farmbuyer@96
|
274 opts.chatty_on_remote_changes_frame = value
|
farmbuyer@96
|
275 _w:SetText(tostring(value))
|
farmbuyer@96
|
276 _w.editbox:ClearFocus()
|
farmbuyer@96
|
277 else
|
farmbuyer@96
|
278 _w:SetText(tostring(prev))
|
farmbuyer@96
|
279 end
|
farmbuyer@96
|
280 end)
|
farmbuyer@96
|
281 editbox:SetDisabled(not opts.chatty_on_remote_changes)
|
farmbuyer@96
|
282 chatgroup:AddChild(editbox)
|
farmbuyer@96
|
283 w = mkbutton("Chat Frame Numbers",
|
farmbuyer@96
|
284 [[Print each chat window number in its own frame, for easy reference in the editing field.]])
|
farmbuyer@96
|
285 w:SetFullWidth(true)
|
farmbuyer@96
|
286 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
287 for i = 1, NUM_CHAT_WINDOWS do
|
farmbuyer@96
|
288 local cf = _G['ChatFrame'..i]
|
farmbuyer@96
|
289 if not cf then break end
|
farmbuyer@96
|
290 addon:CFPrint (cf, "This is frame number |cffff0000%d|r.", i)
|
farmbuyer@96
|
291 end
|
farmbuyer@96
|
292 end)
|
farmbuyer@96
|
293 chatgroup:AddChild(w)
|
farmbuyer@96
|
294 container:AddChild(chatgroup)
|
farmbuyer@96
|
295 end
|
farmbuyer@96
|
296
|
farmbuyer@96
|
297 -- boss mod selection
|
farmbuyer@97
|
298 container:AddChild(spacer(2))
|
farmbuyer@96
|
299 do
|
farmbuyer@96
|
300 local list = {}
|
farmbuyer@96
|
301 local current
|
farmbuyer@96
|
302 for k,v in ipairs(addon.bossmods) do
|
farmbuyer@96
|
303 list[k] = v.n
|
farmbuyer@96
|
304 if v.n == opts.bossmod then
|
farmbuyer@96
|
305 current = k
|
farmbuyer@96
|
306 end
|
farmbuyer@96
|
307 end
|
farmbuyer@96
|
308 w = mkbutton("Dropdown", nil, "", [[Which 'boss mod' to use.]])
|
farmbuyer@96
|
309 w:SetRelativeWidth(0.3)
|
farmbuyer@96
|
310 w:SetLabel("Boss Mod:")
|
farmbuyer@96
|
311 w:SetList(list)
|
farmbuyer@96
|
312 w:SetValue(current)
|
farmbuyer@96
|
313 w:SetCallback("OnValueChanged", function(_w,event,choice)
|
farmbuyer@96
|
314 opts.bossmod = list[choice]
|
farmbuyer@96
|
315 end)
|
farmbuyer@96
|
316 container:AddChild(w)
|
farmbuyer@96
|
317 end
|
farmbuyer@96
|
318
|
farmbuyer@96
|
319 container:ResumeLayout()
|
farmbuyer@96
|
320 container:DoLayout()
|
farmbuyer@96
|
321 AceGUI:ClearFocus()
|
farmbuyer@96
|
322 end
|
farmbuyer@96
|
323
|
farmbuyer@96
|
324
|
farmbuyer@96
|
325 ---------------
|
farmbuyer@96
|
326 do
|
farmbuyer@97
|
327 local description = [[These control automatic handling of specific items when they are looted. "Item filter" is a list of items to ignore. "Vault items" is a list of items to mark as going to the guild vault (as if you had chosen "Mark as guild vault" from the Loot tab).
|
farmbuyer@97
|
328
|
farmbuyer@97
|
329 Proper use of these lists can avoid a lot of noise and tedious clicking during or after a raid. You will probably need to add/remove entries as you advance between expansions and tiers.]]
|
farmbuyer@97
|
330 local defaultstext = [[Clicking this button adds some reasonable defaults to your item lists. (This was done once automatically, the first time you loaded Ouro Loot, but you can delete them at any time.)]]
|
farmbuyer@97
|
331
|
farmbuyer@96
|
332 local warntext = [[At least one of the items in the filter list was not in your game client's cache. This is okay. Just wait a few seconds, display some other Ouro Loot tab or panel, and then display the Item Filters again.]]
|
farmbuyer@96
|
333 local cache_warn, cache_warned = false, false
|
farmbuyer@96
|
334 local function do_warning (cnt)
|
farmbuyer@96
|
335 if cache_warn and not cache_warned then
|
farmbuyer@96
|
336 cache_warned = true
|
farmbuyer@96
|
337 addon:Print(warntext)
|
farmbuyer@96
|
338 local t = AceGUI:Create("Label")
|
farmbuyer@96
|
339 t:SetFullWidth(true)
|
farmbuyer@96
|
340 t:SetText(warntext)
|
farmbuyer@96
|
341 cnt:AddChild(t)
|
farmbuyer@96
|
342 end
|
farmbuyer@96
|
343 end
|
farmbuyer@96
|
344
|
farmbuyer@96
|
345 controls.basic_filter = function (container)
|
farmbuyer@96
|
346 container:AddChildren(mktitle[[Item-Specific Special Handling]])
|
farmbuyer@96
|
347
|
farmbuyer@97
|
348 local w = AceGUI:Create("Label")
|
farmbuyer@97
|
349 w:SetFullWidth(true)
|
farmbuyer@97
|
350 w:SetText(description)
|
farmbuyer@97
|
351 container:AddChild(w)
|
farmbuyer@97
|
352 container:AddChild(spacer(20))
|
farmbuyer@97
|
353
|
farmbuyer@96
|
354 cache_warn, cache_warned = false, false
|
farmbuyer@96
|
355 local filterlist, vaultlist = {}, {}
|
farmbuyer@96
|
356 for id in pairs(opts.itemfilter) do
|
farmbuyer@96
|
357 local iname, _, iquality = GetItemInfo(id)
|
farmbuyer@96
|
358 if iname then
|
farmbuyer@96
|
359 filterlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
|
farmbuyer@96
|
360 else
|
farmbuyer@96
|
361 filterlist[id] = id
|
farmbuyer@96
|
362 cache_warn = true
|
farmbuyer@96
|
363 end
|
farmbuyer@96
|
364 end
|
farmbuyer@96
|
365 for id in pairs(opts.itemvault) do
|
farmbuyer@96
|
366 local iname, _, iquality = GetItemInfo(id)
|
farmbuyer@96
|
367 if iname then
|
farmbuyer@96
|
368 vaultlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
|
farmbuyer@96
|
369 else
|
farmbuyer@96
|
370 vaultlist[id] = id
|
farmbuyer@96
|
371 cache_warn = true
|
farmbuyer@96
|
372 end
|
farmbuyer@96
|
373 end
|
farmbuyer@97
|
374 -- This is so that the "add all defaults" button will never, ever,
|
farmbuyer@97
|
375 -- trip over cache misses.
|
farmbuyer@97
|
376 for id in pairs(addon.default_itemfilter) do GetItemInfo(id) end
|
farmbuyer@97
|
377 for id in pairs(addon.default_itemvault) do GetItemInfo(id) end
|
farmbuyer@96
|
378
|
farmbuyer@97
|
379 w = AceGUI:Create("EditBoxDropDown")
|
farmbuyer@96
|
380 w:SetRelativeWidth(0.4)
|
farmbuyer@96
|
381 w:SetText("Item filter")
|
farmbuyer@96
|
382 w:SetEditBoxTooltip("Link items which should no longer be tracked.")
|
farmbuyer@96
|
383 w:SetList(filterlist)
|
farmbuyer@96
|
384 w:SetCallback("OnTextEnterPressed", function(_w, _, text)
|
farmbuyer@96
|
385 local iname, ilink, iquality = GetItemInfo(text:trim())
|
farmbuyer@96
|
386 if not iname then
|
farmbuyer@96
|
387 return addon:Print("Error: %s is not a valid item name/link!", text)
|
farmbuyer@96
|
388 end
|
farmbuyer@96
|
389 local id = tonumber(ilink:match("item:(%d+)"))
|
farmbuyer@96
|
390 filterlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
|
farmbuyer@96
|
391 opts.itemfilter[id] = true
|
farmbuyer@96
|
392 addon:Print("Now filtering out", ilink)
|
farmbuyer@96
|
393 end)
|
farmbuyer@96
|
394 w:SetCallback("OnListItemClicked", function(_w, _, key_id, val_name)
|
farmbuyer@96
|
395 --local ilink = select(2,GetItemInfo(key_id))
|
farmbuyer@96
|
396 opts.itemfilter[tonumber(key_id)] = nil
|
farmbuyer@96
|
397 --addon:Print("No longer filtering out", ilink)
|
farmbuyer@96
|
398 addon:Print("No longer filtering out", val_name)
|
farmbuyer@96
|
399 end)
|
farmbuyer@96
|
400 --w:SetCallback("OnDropdownShown",do_warning)
|
farmbuyer@96
|
401 w:SetCallback("OnDropdownShown", function()
|
farmbuyer@96
|
402 do_warning(container)
|
farmbuyer@96
|
403 end)
|
farmbuyer@96
|
404 container:AddChild(w)
|
farmbuyer@96
|
405
|
farmbuyer@96
|
406 w = AceGUI:Create("Spacer")
|
farmbuyer@96
|
407 w:SetRelativeWidth(0.1)
|
farmbuyer@96
|
408 w:SetHeight(2)
|
farmbuyer@96
|
409 container:AddChild(w)
|
farmbuyer@96
|
410
|
farmbuyer@96
|
411 w = AceGUI:Create("EditBoxDropDown")
|
farmbuyer@96
|
412 w:SetRelativeWidth(0.4)
|
farmbuyer@96
|
413 w:SetText("Vault items")
|
farmbuyer@96
|
414 w:SetEditBoxTooltip("Link items which should be automatically marked as guild vault.")
|
farmbuyer@96
|
415 w:SetList(vaultlist)
|
farmbuyer@96
|
416 w:SetCallback("OnTextEnterPressed", function(_w, _, text)
|
farmbuyer@96
|
417 local iname, ilink, iquality = GetItemInfo(text:trim())
|
farmbuyer@96
|
418 if not iname then
|
farmbuyer@96
|
419 return addon:Print("Error: %s is not a valid item name/link!", text)
|
farmbuyer@96
|
420 end
|
farmbuyer@96
|
421 local id = tonumber(ilink:match("item:(%d+)"))
|
farmbuyer@96
|
422 vaultlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
|
farmbuyer@96
|
423 opts.itemvault[id] = true
|
farmbuyer@96
|
424 addon:Print("Now auto-vaulting", ilink)
|
farmbuyer@96
|
425 end)
|
farmbuyer@96
|
426 w:SetCallback("OnListItemClicked", function(_w, _, key_id, val_name)
|
farmbuyer@96
|
427 --local ilink = select(2,GetItemInfo(key_id))
|
farmbuyer@96
|
428 opts.itemfilter[tonumber(key_id)] = nil
|
farmbuyer@96
|
429 --addon:Print("No longer filtering out", ilink)
|
farmbuyer@96
|
430 addon:Print("No longer auto-vaulting", val_name)
|
farmbuyer@96
|
431 end)
|
farmbuyer@96
|
432 w:SetCallback("OnDropdownShown",do_warning)
|
farmbuyer@96
|
433 container:AddChild(w)
|
farmbuyer@97
|
434
|
farmbuyer@97
|
435 local function MAYBE_ADD (destname, dest, id)
|
farmbuyer@97
|
436 local name, link = GetItemInfo(id)
|
farmbuyer@97
|
437 if not name then
|
farmbuyer@97
|
438 addon:Print("> No data on ID %d, this may be a bug.",id)
|
farmbuyer@97
|
439 return
|
farmbuyer@97
|
440 end
|
farmbuyer@97
|
441 if dest[id] then
|
farmbuyer@97
|
442 addon:Print("> Skipping %s as it's already in '%s' list.",
|
farmbuyer@97
|
443 link, destname)
|
farmbuyer@97
|
444 else
|
farmbuyer@97
|
445 dest[id] = true
|
farmbuyer@97
|
446 addon:Print("> Added %s to '%s' list.", link, destname)
|
farmbuyer@97
|
447 end
|
farmbuyer@97
|
448 end
|
farmbuyer@97
|
449
|
farmbuyer@97
|
450 container:AddChild(spacer(40))
|
farmbuyer@97
|
451 w = AceGUI:Create("Label")
|
farmbuyer@97
|
452 w:SetFullWidth(true)
|
farmbuyer@97
|
453 w:SetText(defaultstext)
|
farmbuyer@97
|
454 container:AddChild(w)
|
farmbuyer@97
|
455 w = AceGUI:Create("Button")
|
farmbuyer@97
|
456 w:SetRelativeWidth(0.4)
|
farmbuyer@97
|
457 w:SetText[[Add Default Entries]]
|
farmbuyer@97
|
458 w:SetCallback("OnClick", function()
|
farmbuyer@97
|
459 for id in pairs(addon.default_itemfilter) do
|
farmbuyer@97
|
460 MAYBE_ADD ("filter", opts.itemfilter, id)
|
farmbuyer@97
|
461 end
|
farmbuyer@97
|
462 for id in pairs(addon.default_itemvault) do
|
farmbuyer@97
|
463 MAYBE_ADD ("vault", opts.itemvault, id)
|
farmbuyer@97
|
464 end
|
farmbuyer@97
|
465 addon:redisplay()
|
farmbuyer@97
|
466 end)
|
farmbuyer@97
|
467 container:AddChild(w)
|
farmbuyer@97
|
468 end
|
farmbuyer@97
|
469 end
|
farmbuyer@97
|
470
|
farmbuyer@97
|
471
|
farmbuyer@97
|
472 ---------------
|
farmbuyer@97
|
473 do
|
farmbuyer@97
|
474 local profiles
|
farmbuyer@97
|
475 controls.basic_profiles = function (container)
|
farmbuyer@97
|
476 if not profiles then
|
farmbuyer@97
|
477 profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon.db)
|
farmbuyer@97
|
478 LibStub("AceConfig-3.0"):RegisterOptionsTable("OuroLootProfiles", profiles)
|
farmbuyer@97
|
479 end
|
farmbuyer@97
|
480 LibStub("AceConfigDialog-3.0"):Open ("OuroLootProfiles", container)
|
farmbuyer@96
|
481 end
|
farmbuyer@96
|
482 end
|
farmbuyer@96
|
483
|
farmbuyer@96
|
484
|
farmbuyer@96
|
485 ---------------
|
farmbuyer@96
|
486 local adv_real = function (container)
|
farmbuyer@96
|
487 container:AddChildren(mktitle[[Debugging Options (not saved across sessions)]])
|
farmbuyer@96
|
488
|
farmbuyer@96
|
489 container:PauseLayout()
|
farmbuyer@96
|
490 local w
|
farmbuyer@96
|
491
|
farmbuyer@96
|
492 do
|
farmbuyer@96
|
493 local grp = AceGUI:Create("InlineGroup")
|
farmbuyer@96
|
494 grp:SetLayout("List")
|
farmbuyer@96
|
495 grp:SetRelativeWidth(0.60)
|
farmbuyer@96
|
496 grp:SetTitle("Output of debugging messages")
|
farmbuyer@96
|
497
|
farmbuyer@96
|
498 w = AceGUI:Create("CheckBoxSmallLabel")
|
farmbuyer@96
|
499 w:SetFullWidth(true)
|
farmbuyer@96
|
500 w:SetType("checkbox")
|
farmbuyer@96
|
501 w:SetLabel("master toggle")
|
farmbuyer@96
|
502 w:SetValue(addon.DEBUG_PRINT)
|
farmbuyer@96
|
503 w:SetCallback("OnValueChanged", function(_w,event,value)
|
farmbuyer@96
|
504 addon.DEBUG_PRINT = value
|
farmbuyer@96
|
505 addon:redisplay()
|
farmbuyer@96
|
506 end)
|
farmbuyer@96
|
507 grp:AddChild(w)
|
farmbuyer@96
|
508 for d,v in pairs(addon.debug) do
|
farmbuyer@96
|
509 w = AceGUI:Create("CheckBoxSmallLabel")
|
farmbuyer@96
|
510 w:SetFullWidth(true)
|
farmbuyer@96
|
511 w:SetType("checkbox")
|
farmbuyer@96
|
512 w:SetLabel(d)
|
farmbuyer@96
|
513 if d == "notraid" then
|
farmbuyer@96
|
514 w:SetDescription[[Tick this before enabling to make the addon work outside of raid groups]]
|
farmbuyer@96
|
515 else
|
farmbuyer@96
|
516 if d == "alsolog" then
|
farmbuyer@96
|
517 w:SetDescription[[Also log all debug messages to disk. See print_log.lua in the addon folder for later viewing.]]
|
farmbuyer@96
|
518 end
|
farmbuyer@96
|
519 w:SetDisabled(not addon.DEBUG_PRINT)
|
farmbuyer@96
|
520 end
|
farmbuyer@96
|
521 w:SetValue(v)
|
farmbuyer@96
|
522 w:SetCallback("OnValueChanged", function(_w,event,value) addon.debug[d] = value end)
|
farmbuyer@96
|
523 grp:AddChild(w)
|
farmbuyer@96
|
524 end
|
farmbuyer@96
|
525 container:AddChild(grp)
|
farmbuyer@96
|
526 end
|
farmbuyer@96
|
527
|
farmbuyer@96
|
528 do
|
farmbuyer@96
|
529 local simple = AceGUI:Create("SimpleGroup")
|
farmbuyer@96
|
530 simple:SetLayout("List")
|
farmbuyer@96
|
531 simple:SetRelativeWidth(0.35)
|
farmbuyer@96
|
532 w = AceGUI:Create("CheckBoxSmallLabel")
|
farmbuyer@96
|
533 --w:SetRelativeWidth(0.35)
|
farmbuyer@96
|
534 w:SetFullWidth(true)
|
farmbuyer@96
|
535 w:SetType("checkbox")
|
farmbuyer@96
|
536 w:SetLabel("GOP history mode")
|
farmbuyer@96
|
537 w:SetValue(addon.history_suppress)
|
farmbuyer@96
|
538 w:SetCallback("OnValueChanged", function(_w,event,value) addon.history_suppress = value end)
|
farmbuyer@96
|
539 simple:AddChild(w)
|
farmbuyer@96
|
540 w = mkbutton("Dropdown", nil, "",
|
farmbuyer@96
|
541 [[if active, tooltip shown when hovering over Item column only]])
|
farmbuyer@96
|
542 --w:SetRelativeWidth(0.4)
|
farmbuyer@96
|
543 w:SetFullWidth(true)
|
farmbuyer@96
|
544 w:SetLabel("loot debugging tooltip")
|
farmbuyer@96
|
545 w:SetList{
|
farmbuyer@96
|
546 [1] = "Off",
|
farmbuyer@96
|
547 [2] = "/dump into tooltip",
|
farmbuyer@96
|
548 [3] = "small fixed fields",
|
farmbuyer@96
|
549 }
|
farmbuyer@96
|
550 w:SetValue(gui._do_debugging_tooltip or 1)
|
farmbuyer@96
|
551 w:SetCallback("OnValueChanged", function(_w,event,choice)
|
farmbuyer@96
|
552 gui._do_debugging_tooltip = choice > 1 and choice or nil
|
farmbuyer@96
|
553 end)
|
farmbuyer@96
|
554 simple:AddChild(w)
|
farmbuyer@96
|
555 container:AddChild(simple)
|
farmbuyer@96
|
556 end
|
farmbuyer@96
|
557
|
farmbuyer@97
|
558 container:AddChild(spacer(10))
|
farmbuyer@96
|
559
|
farmbuyer@96
|
560 w = mkbutton("EditBox", 'comm_ident', addon.ident,
|
farmbuyer@96
|
561 [[Set tracking to 'Disabled' in the top-right dropdown, then change this field (click Okay or press Enter).]])
|
farmbuyer@96
|
562 w:SetRelativeWidth(0.25)
|
farmbuyer@96
|
563 w:SetLabel("Addon channel ID")
|
farmbuyer@96
|
564 w:SetCallback("OnTextChanged", adv_careful_OnTextChanged)
|
farmbuyer@96
|
565 w:SetCallback("OnEnterPressed", function(_w,event,value)
|
farmbuyer@96
|
566 -- if they set it to blank spaces, they're boned. oh well.
|
farmbuyer@96
|
567 -- Re-enabling will take care of propogating this new value.
|
farmbuyer@96
|
568 addon.ident = (value == "") and "OuroLoot2" or value
|
farmbuyer@96
|
569 _w:SetText(addon.ident)
|
farmbuyer@96
|
570 addon:Print("Addon channel ID set to '".. addon.ident.. "' for rebroadcasting and listening.")
|
farmbuyer@96
|
571 end)
|
farmbuyer@96
|
572 w:SetDisabled(addon.enabled or addon.rebroadcast)
|
farmbuyer@96
|
573 container:AddChild(w)
|
farmbuyer@96
|
574
|
farmbuyer@96
|
575 w = mkbutton("EditBox", nil, addon.recent_messages.ttl, [[comm cache TTL]])
|
farmbuyer@96
|
576 w:SetRelativeWidth(0.1)
|
farmbuyer@96
|
577 w:SetLabel("ttl")
|
farmbuyer@96
|
578 w:SetCallback("OnTextChanged", adv_careful_OnTextChanged)
|
farmbuyer@96
|
579 w:SetCallback("OnEnterPressed", function(_w,event,value)
|
farmbuyer@96
|
580 value = tonumber(value) or addon.recent_messages.ttl
|
farmbuyer@96
|
581 addon.recent_messages.ttl = value
|
farmbuyer@96
|
582 _w:SetText(tostring(value))
|
farmbuyer@96
|
583 end)
|
farmbuyer@96
|
584 container:AddChild(w)
|
farmbuyer@96
|
585
|
farmbuyer@96
|
586 w = mkbutton("load nsaab1548", [[Cursed Darkhound]])
|
farmbuyer@96
|
587 w:SetRelativeWidth(0.25)
|
farmbuyer@96
|
588 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
589 for i, v in ipairs(DBM.AddOns) do
|
farmbuyer@96
|
590 if v.modId == "DBM-NotScaryAtAll" then
|
farmbuyer@96
|
591 DBM:LoadMod(v)
|
farmbuyer@96
|
592 break
|
farmbuyer@96
|
593 end
|
farmbuyer@96
|
594 end
|
farmbuyer@96
|
595 local mod = DBM:GetModByName("NotScaryAtAll")
|
farmbuyer@96
|
596 if mod then
|
farmbuyer@96
|
597 mod:EnableMod()
|
farmbuyer@96
|
598 addon:Print("Now tracking ID",mod.creatureId)
|
farmbuyer@96
|
599 else
|
farmbuyer@96
|
600 addon:Print("Can do nothing; DBM testing mod wasn't loaded.")
|
farmbuyer@96
|
601 end
|
farmbuyer@96
|
602 end)
|
farmbuyer@96
|
603 w:SetDisabled(addon.bossmod_registered ~= 'DBM')
|
farmbuyer@96
|
604 container:AddChild(w)
|
farmbuyer@96
|
605
|
farmbuyer@96
|
606 w = mkbutton("GC", [[full GC cycle]])
|
farmbuyer@96
|
607 w:SetRelativeWidth(0.2)
|
farmbuyer@96
|
608 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
609 local before = collectgarbage('count')
|
farmbuyer@96
|
610 collectgarbage('collect')
|
farmbuyer@96
|
611 local after = collectgarbage('count')
|
farmbuyer@96
|
612 addon:Print("Collected %d KB, %d KB still in use by Lua universe.", before-after, after)
|
farmbuyer@96
|
613 end)
|
farmbuyer@96
|
614 container:AddChild(w)
|
farmbuyer@96
|
615
|
farmbuyer@97
|
616 container:AddChild(spacer(3))
|
farmbuyer@96
|
617 do
|
farmbuyer@96
|
618 local simple = AceGUI:Create("SimpleGroup")
|
farmbuyer@96
|
619 simple:SetLayout("Flow")
|
farmbuyer@96
|
620 --simple:SetRelativeWidth(0.95)
|
farmbuyer@96
|
621 simple:SetFullWidth(true)
|
farmbuyer@96
|
622 w = mkbutton("MidS-H", [[not exactly an Easter egg, with sound]])
|
farmbuyer@96
|
623 w:SetRelativeWidth(0.2)
|
farmbuyer@96
|
624 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
625 PlaySoundFile ([[Sound\Music\WorldEvents\HordeFirepole.mp3]], "Master")
|
farmbuyer@96
|
626 end)
|
farmbuyer@96
|
627 simple:AddChild(w)
|
farmbuyer@96
|
628 w = mkbutton("MidS-A", [[not exactly an Easter egg, with sound]])
|
farmbuyer@96
|
629 w:SetRelativeWidth(0.2)
|
farmbuyer@96
|
630 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
631 PlaySoundFile ([[Sound\Music\WorldEvents\AllianceFirepole.mp3]], "Master")
|
farmbuyer@96
|
632 end)
|
farmbuyer@96
|
633 simple:AddChild(w)
|
farmbuyer@96
|
634 w = mkbutton("SFRR", [[test]])
|
farmbuyer@96
|
635 w:SetRelativeWidth(0.15)
|
farmbuyer@96
|
636 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
637 PlaySoundFile ([[Interface\AddOns\Ouro_Loot\sfrr.ogg]], "Master")
|
farmbuyer@96
|
638 end)
|
farmbuyer@96
|
639 simple:AddChild(w)
|
farmbuyer@96
|
640
|
farmbuyer@96
|
641 container:AddChild(simple)
|
farmbuyer@96
|
642 end
|
farmbuyer@96
|
643
|
farmbuyer@96
|
644 w = AceGUI:Create("Spacer") w:SetRelativeWidth(0.65) w:SetHeight(15) container:AddChild(w)
|
farmbuyer@96
|
645 w = mkbutton("Clear All & Reload",
|
farmbuyer@96
|
646 [[No confirmation! |cffff1010Erases absolutely all> Ouro Loot saved variables and reloads the UI.]])
|
farmbuyer@96
|
647 w:SetRelativeWidth(0.3)
|
farmbuyer@96
|
648 w:SetCallback("OnClick", function()
|
farmbuyer@96
|
649 addon:_clear_SVs() -- reloads
|
farmbuyer@96
|
650 end)
|
farmbuyer@96
|
651 container:AddChild(w)
|
farmbuyer@96
|
652
|
farmbuyer@96
|
653 container:ResumeLayout()
|
farmbuyer@96
|
654 container:DoLayout()
|
farmbuyer@96
|
655 AceGUI:ClearFocus()
|
farmbuyer@96
|
656 --container:SetScroll(1000) -- scrollframe widget's max value
|
farmbuyer@96
|
657 end
|
farmbuyer@96
|
658
|
farmbuyer@96
|
659 -- Initial advanced panel function (unless debug mode is on during load, which
|
farmbuyer@96
|
660 -- means it was almost certainly hardcoded that way, which means it's probably
|
farmbuyer@96
|
661 -- me testing).
|
farmbuyer@97
|
662 if addon.DEBUG_PRINT then
|
farmbuyer@96
|
663 controls.adv = adv_real
|
farmbuyer@96
|
664 else
|
farmbuyer@96
|
665 controls.adv = function (container)
|
farmbuyer@96
|
666 local speedbump = AceGUI:Create("InteractiveLabel")
|
farmbuyer@96
|
667 speedbump:SetFullWidth(true)
|
farmbuyer@96
|
668 speedbump:SetFontObject(GameFontHighlightLarge)
|
farmbuyer@96
|
669 speedbump:SetImage[[Interface\DialogFrame\DialogAlertIcon]]
|
farmbuyer@96
|
670 speedbump:SetImageSize(50,50)
|
farmbuyer@96
|
671 speedbump:SetText[[The debugging/testing settings on the advanced panel can seriously bork up the addon if you make a mistake. If you're okay with the possibility of losing data, click this warning to load the panel.]]
|
farmbuyer@96
|
672 speedbump:SetCallback("OnClick", function (_sb)
|
farmbuyer@96
|
673 controls.adv = { adv_real }
|
farmbuyer@96
|
674 return addon:redisplay()
|
farmbuyer@96
|
675 end)
|
farmbuyer@96
|
676 container:AddChild(speedbump)
|
farmbuyer@96
|
677 end
|
farmbuyer@96
|
678 end
|
farmbuyer@96
|
679
|
farmbuyer@96
|
680
|
farmbuyer@96
|
681 ---------------
|
farmbuyer@96
|
682 -- Tab 6: Options
|
farmbuyer@96
|
683 do
|
farmbuyer@96
|
684 local funkified = {}
|
farmbuyer@96
|
685 for key,f in pairs(controls) do
|
farmbuyer@96
|
686 -- this is how TreeGroup makes unique keys
|
farmbuyer@96
|
687 local funkykey = key:gsub('_','\001')
|
farmbuyer@96
|
688 funkified[funkykey] = { f }
|
farmbuyer@96
|
689 end
|
farmbuyer@96
|
690 controls = funkified
|
farmbuyer@96
|
691 end
|
farmbuyer@96
|
692
|
farmbuyer@96
|
693 -- widget container status tables (will have things magically appear
|
farmbuyer@96
|
694 -- inside them that we wish to preserve)
|
farmbuyer@96
|
695 local status_for_scroll = {}
|
farmbuyer@96
|
696 local status_for_select = { treewidth = 160 }
|
farmbuyer@96
|
697
|
farmbuyer@97
|
698 local function preload()
|
farmbuyer@97
|
699 for id in pairs(opts.itemfilter) do GetItemInfo(id) end
|
farmbuyer@97
|
700 for id in pairs(opts.itemvault) do GetItemInfo(id) end
|
farmbuyer@97
|
701 preload = nil
|
farmbuyer@97
|
702 end
|
farmbuyer@97
|
703
|
farmbuyer@96
|
704 -- Clicking an entry on the left tree column.
|
farmbuyer@96
|
705 local opt_OnGroupSelected_func = function (treeg,event,category)
|
farmbuyer@96
|
706 local catfuncs = controls[category]
|
farmbuyer@96
|
707 if not catfuncs then
|
farmbuyer@96
|
708 addon:horrible_horrible_error(("Category '%s' has no handler function!"):format(category:gsub('\001','_')))
|
farmbuyer@96
|
709 end
|
farmbuyer@96
|
710 treeg:ReleaseChildren()
|
farmbuyer@96
|
711 local sf = AceGUI:Create("ScrollFrame")
|
farmbuyer@96
|
712 sf:SetStatusTable(status_for_scroll)
|
farmbuyer@96
|
713 sf:SetLayout("Flow")
|
farmbuyer@96
|
714 -- This forces the scrolling area to be bigger than the visible area; else
|
farmbuyer@96
|
715 -- some of the text gets cut off without ever triggering the scrollbar.
|
farmbuyer@96
|
716 sf.content:SetHeight(700)
|
farmbuyer@96
|
717 for _,func in ipairs(catfuncs) do
|
farmbuyer@96
|
718 if func(sf) then break end
|
farmbuyer@96
|
719 end
|
farmbuyer@96
|
720 treeg:AddChild(sf)
|
farmbuyer@96
|
721 if treeg:GetUserData("options restore scroll") then
|
farmbuyer@96
|
722 if status_for_scroll.scrollvalue then
|
farmbuyer@96
|
723 sf:SetScroll(status_for_scroll.scrollvalue)
|
farmbuyer@96
|
724 end
|
farmbuyer@96
|
725 treeg:SetUserData("options restore scroll", false)
|
farmbuyer@96
|
726 else
|
farmbuyer@96
|
727 sf:SetScroll(0)
|
farmbuyer@96
|
728 end
|
farmbuyer@96
|
729 end
|
farmbuyer@96
|
730
|
farmbuyer@96
|
731 -- Clicking the Options tab as a whole (tabs_OnGroupSelected["opt"]).
|
farmbuyer@96
|
732 local tabs_OGS = function (container, specials)
|
farmbuyer@97
|
733 opts = gui.opts
|
farmbuyer@96
|
734
|
farmbuyer@96
|
735 container:SetLayout("Fill")
|
farmbuyer@96
|
736 local left = AceGUI:Create("TreeGroup")
|
farmbuyer@96
|
737 left:SetStatusTable(status_for_select)
|
farmbuyer@96
|
738 left:SetLayout("Fill")
|
farmbuyer@96
|
739 left:SetFullWidth(true)
|
farmbuyer@96
|
740 left:SetFullHeight(true)
|
farmbuyer@96
|
741 left:EnableButtonTooltips(false)
|
farmbuyer@96
|
742 left:SetTree(options_tree)
|
farmbuyer@96
|
743 left:SetCallback("OnGroupSelected", opt_OnGroupSelected_func)
|
farmbuyer@96
|
744 container:AddChild(left)
|
farmbuyer@96
|
745 if status_for_select.selected then
|
farmbuyer@96
|
746 left:SetUserData("options restore scroll", true)
|
farmbuyer@96
|
747 left:SelectByValue(status_for_select.selected)
|
farmbuyer@96
|
748 else
|
farmbuyer@96
|
749 left:SelectByValue("basic")
|
farmbuyer@96
|
750 end
|
farmbuyer@96
|
751
|
farmbuyer@96
|
752 local w = mkbutton("ReloadUI",
|
farmbuyer@96
|
753 [[Does what you think it does. Loot information is written out and restored.]])
|
farmbuyer@96
|
754 w:SetFullWidth(true)
|
farmbuyer@96
|
755 w:SetCallback("OnClick", ReloadUI)
|
farmbuyer@96
|
756 specials:AddChild(w)
|
farmbuyer@96
|
757
|
farmbuyer@96
|
758 w = mkbutton("Ping!",
|
farmbuyer@96
|
759 [[Queries other raid users for their addon version and current status. Results displayed on Pongs panel after five seconds.]])
|
farmbuyer@96
|
760 w:SetFullWidth(true)
|
farmbuyer@96
|
761 w:SetCallback("OnClick", function(_w)
|
farmbuyer@96
|
762 _w:SetText("5... 4... 3...")
|
farmbuyer@96
|
763 _w:SetDisabled(true)
|
farmbuyer@96
|
764 addon:DoPing()
|
farmbuyer@96
|
765 addon:ScheduleTimer(function(b)
|
farmbuyer@96
|
766 if b:IsVisible() then
|
farmbuyer@96
|
767 return addon:redisplay()
|
farmbuyer@96
|
768 end
|
farmbuyer@96
|
769 end, 5, _w)
|
farmbuyer@96
|
770 end)
|
farmbuyer@96
|
771 specials:AddChild(w)
|
farmbuyer@97
|
772
|
farmbuyer@97
|
773 if preload then preload() end
|
farmbuyer@96
|
774 end
|
farmbuyer@96
|
775
|
farmbuyer@96
|
776 addon:register_tab_control_AT_END ("opt", [[Options]],
|
farmbuyer@96
|
777 [[Options for fine-tuning behavior]], tabs_OGS)
|
farmbuyer@96
|
778
|
farmbuyer@96
|
779 -- vim:noet
|