/
## Interface: 40100 |
## Interface: 40200 |
## Name: Who Framed Watcher Wabbit? |
## Version: 1.7 |
## Version: 1.7.1 |
## Notes: Various tweaks to improve the quest watch frame |
## SavedVariables: WFWWDB |
## SavedVariablesPerCharacter: WFWWPCDB |
--[[ $Id: AceGUIWidget-DropDown.lua 997 2010-12-01 18:36:28Z nevcairiel $ ]]-- |
--[[ $Id: AceGUIWidget-DropDown.lua 1029 2011-06-10 23:10:58Z nevcairiel $ ]]-- |
local AceGUI = LibStub("AceGUI-3.0") |
-- Lua APIs |
do |
local widgetType = "Dropdown" |
local widgetVersion = 24 |
local widgetVersion = 25 |
--[[ Static data ]]-- |
self:SetHeight(44) |
self:SetWidth(200) |
self:SetLabel() |
end |
-- exported, AceGUI callback |
self.pullout = nil |
self:SetText("") |
self:SetLabel("") |
self:SetDisabled(false) |
self:SetMultiselect(false) |
self.label:SetText(text) |
self.label:Show() |
self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,-18) |
self.frame:SetHeight(44) |
self:SetHeight(44) |
self.alignoffset = 30 |
else |
self.label:SetText("") |
self.label:Hide() |
self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,0) |
self.frame:SetHeight(26) |
self:SetHeight(26) |
self.alignoffset = 12 |
end |
end |
self.SetItemValue = SetItemValue |
self.SetItemDisabled = SetItemDisabled |
self.alignoffset = 31 |
self.alignoffset = 30 |
frame:SetHeight(44) |
frame:SetWidth(200) |
frame:SetScript("OnHide",Dropdown_OnHide) |
dropdown:ClearAllPoints() |
TreeGroup Container |
Container that uses a tree control to switch between groups. |
-------------------------------------------------------------------------------]] |
local Type, Version = "TreeGroup", 33 |
local Type, Version = "TreeGroup", 34 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-- Lua APIs |
local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type |
local math_min, math_max, floor = math.min, math.max, floor |
local select, tremove, unpack = select, table.remove, unpack |
local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat |
-- WoW APIs |
local CreateFrame, UIParent = CreateFrame, UIParent |
end |
end, |
["RefreshTree"] = function(self) |
["RefreshTree"] = function(self,scrollToSelection) |
local buttons = self.buttons |
local lines = self.lines |
local tree = self.tree |
local treeframe = self.treeframe |
status.scrollToSelection = status.scrollToSelection or scrollToSelection -- needs to be cached in case the control hasn't been drawn yet (code bails out below) |
self:BuildLevel(tree, 1) |
if maxlines <= 0 then return end |
local first, last |
scrollToSelection = status.scrollToSelection |
status.scrollToSelection = nil |
if numlines <= maxlines then |
--the whole tree fits in the frame |
if numlines - status.scrollvalue < maxlines then |
status.scrollvalue = numlines - maxlines |
end |
self.noupdate = nil |
first, last = status.scrollvalue+1, status.scrollvalue + maxlines |
--show selection? |
if scrollToSelection and status.selected then |
local show |
for i,line in ipairs(lines) do -- find the line number |
if line.uniquevalue==status.selected then |
show=i |
end |
end |
if not show then |
-- selection was deleted or something? |
elseif show>=first and show<=last then |
-- all good |
else |
-- scrolling needed! |
if show<first then |
status.scrollvalue = show-1 |
else |
status.scrollvalue = show-maxlines |
end |
first, last = status.scrollvalue+1, status.scrollvalue + maxlines |
end |
end |
if self.scrollbar:GetValue() ~= status.scrollvalue then |
self.scrollbar:SetValue(status.scrollvalue) |
end |
self.noupdate = nil |
first, last = status.scrollvalue+1, status.scrollvalue + maxlines |
end |
local buttonnum = 1 |
button:Show() |
buttonnum = buttonnum + 1 |
end |
end, |
["SetSelected"] = function(self, value) |
self.filter = false |
local status = self.status or self.localstatus |
local groups = status.groups |
for i = 1, select('#', ...) do |
groups[BuildUniqueValue(select(i, ...))] = true |
local path = {...} |
for i = 1, #path do |
groups[tconcat(path, "\001", 1, i)] = true |
end |
status.selected = uniquevalue |
self:RefreshTree() |
self:RefreshTree(true) |
self:Fire("OnGroupSelected", uniquevalue) |
end, |
type = "header", |
order = .5, |
}, |
scale = { |
name = "WatchFrame scale", |
desc = "The scale of the entire tracker frame.", |
type = "range", |
min = .5, |
max = 2, |
step = .05, |
get = function() return db.scale end, |
set = function(_, scale) |
db.scale = scale |
SetSize() |
end, |
order = 1, |
}, |
anchor = { |
name = "Screen Anchor", |
desc = "What side of the screen you would like the WatchFrame located at. The tracker will also collapse in this direction.", |
db.yOffset = "0" |
MoveWatchFrame() |
end, |
order = 2, |
order = 1, |
}, |
xOffset = { |
name = "X Offset", |
db.xOffset = xOffset |
MoveWatchFrame() |
end, |
order = 3, |
order = 2, |
}, |
yOffset = { |
name = "Y Offset", |
db.yOffset = yOffset |
MoveWatchFrame() |
end, |
order = 3, |
}, |
scale = { |
name = "WatchFrame scale", |
desc = "The scale of the entire tracker frame.", |
type = "range", |
min = .5, |
max = 2, |
step = .05, |
get = function() return db.scale end, |
set = function(_, scale) |
db.scale = scale |
SetSize() |
end, |
order = 4, |
}, |
height = { |
desc = "The background color and transparency.\n\nIf you wish to use a custom background texture and do not want it colored, set this to white.", |
type = "color", |
hasAlpha = true, |
width = "double", |
get = function() return db.bgColor.r, db.bgColor.g, db.bgColor.b, db.bgColor.a end, |
set = function(_,r,g,b,a) |
db.bgColor.r = r |
end, |
order = 11, |
}, |
borderAlpha = { |
name = "Border Alpha", |
desc = "Transparency of the border.", |
type = "range", |
min = 0, |
max = 1, |
step = .05, |
get = function() return db.borderAlpha end, |
set = function(_, borderAlpha) |
db.borderAlpha = borderAlpha |
borderColor = { |
name = "Border Color", |
desc = "Color of the watch frame's border.", |
type = "color", |
disabled = function() return db.classBorder end, |
get = function() return db.borderColor.r, db.borderColor.g, db.borderColor.b end, |
set = function(_,r,g,b) |
db.borderColor.r = r |
db.borderColor.g = g |
db.borderColor.b = b |
Appearance() |
end, |
order = 11.5, |
order = 12, |
}, |
classBorder = { |
name = "Class Colored Border", |
db.classBorder = not db.classBorder |
Appearance() |
end, |
order = 12, |
order = 12.5, |
}, |
borderColor = { |
name = "Border Color", |
desc = "Color of the watch frame's border.", |
type = "color", |
disabled = function() return db.classBorder end, |
get = function() return db.borderColor.r, db.borderColor.g, db.borderColor.b end, |
set = function(_,r,g,b) |
db.borderColor.r = r |
db.borderColor.g = g |
db.borderColor.b = b |
borderAlpha = { |
name = "Border Alpha", |
desc = "Transparency of the border.", |
type = "range", |
min = 0, |
max = 1, |
step = .05, |
get = function() return db.borderAlpha end, |
set = function(_, borderAlpha) |
db.borderAlpha = borderAlpha |
Appearance() |
end, |
order = 12.5, |
order = 13, |
}, |
borderWidth = { |
name = "Border Width", |
db.borderWidth = borderWidth |
Appearance() |
end, |
order = 13, |
order = 13.5, |
}, |
inset = { |
name = "Inset", |