WoWInterface SVN KuiNameplates

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 118 to Rev 119
    Reverse comparison

Rev 118 → Rev 119

Kui_Nameplates/core.lua
4,10 → 4,18
]]
local addon, ns = ...
local kui = LibStub('Kui-1.0')
local LSM = LibStub('LibSharedMedia-3.0')
 
LibStub('AceAddon-3.0'):NewAddon(ns, 'KuiNameplates')
 
ns.kui = kui
-- add yanone kaffesatz and accidental presidency to LSM (only supports latin)
LSM:Register(LSM.MediaType.FONT, 'Yanone Kaffesatz', kui.m.f.yanone)
LSM:Register(LSM.MediaType.FONT, 'Accidental Presidency', kui.m.f.accid)
-- TODO should probably move LSM stuff into Kui, and replace the table there
 
local locale = GetLocale()
local latin = (locale ~= 'zhCN' and locale ~= 'zhTW' and locale ~= 'koKR' and locale ~= 'ruRU')
 
-------------------------------------------------------------- Default config --
local defaults = {
profile = {
16,7 → 24,7
highlight = true, -- highlight plates on mouse-over
combopoints = true, -- display combo points
fixaa = true, -- attempt to make plates appear sharper (with some drawbacks)
font = kui.m.f.yanone, -- the font used for all text
font = (latin and 'Yanone Kaffesatz' or LSM:GetDefault(LSM.MediaType.FONT)), -- the font used for all text
fontscale = 1.0, -- the scale of all displayed font sizes
},
fade = {
32,40 → 40,6
glowcolour = { 1, 0, 0, 1, 1 } -- the glow colour to use when you have threat
},
hp = {
--[[
syntax help:
 
A simple pattern is used to determine what text should be displayed for health.
A pattern consists of rules seperated by semi-colons (;).
A rule consists of the condition followed by the result of the rule seperated by a colon (:).
 
For example:
A rule: condition:result
A pattern: rule1;rule2;rule3 (etc)
 
Valid conditions are as follows:
<= : When health is less than or equal to its maximum value...
< : When health is less than its maximum value...
= : When health is equal to its maximum value...
 
Valid results are:
c : the current, precise health value (i.e. 128.4k)
d : precise value of health that is currently missing (i.e. -12.3k)
m : the maximum amount of health
p : the current amount of health in percent
 
Health display defaults to blank if no rule is matched.
 
The default patterns and their meanings are:
 
Friendly: =:m;<:d;
Meaning: When at max health, display max health (=:m;)
When below max health, display health deficit (<:d;)
 
Hostile: <:p;
Meaning: When below max health, display health as a percentage.
Otherwise, display nothing.
]]
friendly = '=:m;<:d;', -- health display pattern for friendly units
hostile = '<:p;', -- health display pattern for hostile/neutral units
showalt = true, -- show alternate (contextual) health values as well as main values
78,8 → 52,8
spellname = true, -- display spell name
spellicon = true, -- display spell icon
barcolour = { .43, .47, .55, 1 }, -- the colour of the spell bar (interruptible casts)
warnings = true, -- display spell cast warnings on any plates
usenames = true -- use unit names to display cast warnings on their correct frames: may increase memory usage and may cause warnings to be displayed on incorrect frames when there are many units with the same name. Reccommended on for PvP, off for PvE.
warnings = false, -- display spell cast warnings on any plates
usenames = false -- use unit names to display cast warnings on their correct frames: may increase memory usage and may cause warnings to be displayed on incorrect frames when there are many units with the same name. Reccommended on for PvP, off for PvE.
},
}
}
Kui_Nameplates/layout.lua
4,10 → 4,8
]]
 
local addon, ns = ...
local kui = ns.kui
local uiscale, prevuiscale
local loadedGUIDs, loadedNames, targetExists, profile
= {}, {}
local kui = LibStub('Kui-1.0')
local LSM = LibStub('LibSharedMedia-3.0')
 
-- our frame, whee
ns.f = CreateFrame('Frame')
28,6 → 26,8
['SPELL_PERIODIC_HEAL'] = true
}
 
local font, uiscale, prevuiscale
local loadedGUIDs, loadedNames, targetExists, profile = {}, {}
local origSizes, origFontSizes, sizes, fontSizes = {},{},{},{}
 
--------------------------------------------------------------------- globals --
177,7 → 177,7
local blue = (1 - (1 / 5) * self.points)
 
self:SetText(self.points)
self:SetFont(profile.general.font, size, 'OUTLINE')
self:SetFont(font, size, 'OUTLINE')
self:SetTextColor(1, 1, blue)
elseif self:GetText() then
self:SetText('')
858,14 → 858,14
 
-- health text -------------------------------------------------------------
frame.health.p = kui.CreateFontString(frame.overlay, {
font = profile.general.font, size = fontSizes.large, outline = "OUTLINE" })
font = font, size = fontSizes.large, outline = "OUTLINE" })
frame.health.p:SetJustifyH('RIGHT')
 
frame.health.p:SetPoint('BOTTOMRIGHT', frame.health, 'TOPRIGHT', -2, uiscale and -(3/uiscale) or -3)
 
if profile.hp.showalt then
frame.health.mo = kui.CreateFontString(frame.overlay, {
font = profile.general.font, size = fontSizes.small, outline = "OUTLINE" })
font = font, size = fontSizes.small, outline = "OUTLINE" })
frame.health.mo:SetJustifyH('RIGHT')
 
frame.health.mo:SetPoint('BOTTOMRIGHT', frame.health, -2, uiscale and -(3/uiscale) or -3)
874,7 → 874,7
 
-- level text --------------------------------------------------------------
frame.level = kui.CreateFontString(frame.level, { reset = true,
font = profile.general.font, size = fontSizes.name, outline = 'OUTLINE' })
font = font, size = fontSizes.name, outline = 'OUTLINE' })
frame.level:SetParent(frame.overlay)
 
frame.level:ClearAllPoints()
882,7 → 882,7
 
-- name text ---------------------------------------------------------------
frame.name = kui.CreateFontString(frame.overlay, {
font = profile.general.font, size = fontSizes.name, outline = 'OUTLINE' })
font = font, size = fontSizes.name, outline = 'OUTLINE' })
frame.name:SetJustifyH('LEFT')
 
frame.name:SetHeight(8)
893,7 → 893,7
-- combo point text --------------------------------------------------------
if profile.general.combopoints then
frame.cp = kui.CreateFontString(frame.health,
{ font = profile.general.font, size = fontSizes.combopoints, outline = 'OUTLINE', shadow = true })
{ font = font, size = fontSizes.combopoints, outline = 'OUTLINE', shadow = true })
frame.cp:SetPoint('LEFT', frame.health, 'RIGHT', 5, 1)
 
frame.cp.Update = ComboPointsUpdate
947,17 → 947,17
-- cast bar text -------------------------------------------------------
if profile.castbar.spellname then
frame.castbar.name = kui.CreateFontString(frame.castbar, {
font = profile.general.font, size = fontSizes.name, outline = "OUTLINE" })
font = font, size = fontSizes.name, outline = "OUTLINE" })
frame.castbar.name:SetPoint('TOPLEFT', frame.castbar, 'BOTTOMLEFT', 2, -2)
end
 
if profile.castbar.casttime then
frame.castbar.max = kui.CreateFontString(frame.castbar, {
font = profile.general.font, size = fontSizes.name, outline = "OUTLINE" })
font = font, size = fontSizes.name, outline = "OUTLINE" })
frame.castbar.max:SetPoint('TOPRIGHT', frame.castbar, 'BOTTOMRIGHT', -2, -1)
 
frame.castbar.curr = kui.CreateFontString(frame.castbar, {
font = profile.general.font, size = fontSizes.small, outline = "OUTLINE" })
font = font, size = fontSizes.small, outline = "OUTLINE" })
frame.castbar.curr:SetAlpha(.5)
frame.castbar.curr:SetPoint('TOPRIGHT', frame.castbar.max, 'TOPLEFT', -1, -1)
end
1002,7 → 1002,7
if profile.castbar.warnings then
-- casting spell name
frame.castWarning = kui.CreateFontString(frame.overlay, {
font = profile.general.font, size = fontSizes.spellname, outline = 'OUTLINE' })
font = font, size = fontSizes.spellname, outline = 'OUTLINE' })
frame.castWarning:SetPoint('BOTTOMLEFT', frame.level, 'TOPLEFT', 0, 1)
frame.castWarning:Hide()
 
1022,7 → 1022,7
 
-- incoming healing
frame.incWarning = kui.CreateFontString(frame.overlay, {
font = profile.general.font, size = fontSizes.small, outline = 'OUTLINE' })
font = font, size = fontSizes.small, outline = 'OUTLINE' })
frame.incWarning:SetPoint('BOTTOMRIGHT', frame.health.p, 'TOPRIGHT', 1)
frame.incWarning:Hide()
 
1065,15 → 1065,15
frame:SetBackdropColor(1, 1, 1, .5)
 
frame.isfriend = kui.CreateFontString(frame, {
font = profile.general.font, size = 10, outline = 'OUTLINE' })
font = font, size = 10, outline = 'OUTLINE' })
frame.isfriend:SetPoint('BOTTOM', frame, 'TOP')
 
frame.guidtext = kui.CreateFontString(frame, {
font = profile.general.font, size = 10, outline = "OUTLINE" })
font = font, size = 10, outline = "OUTLINE" })
frame.guidtext:SetPoint('TOP', frame, 'BOTTOM')
 
frame.nametext = kui.CreateFontString(frame, {
font = profile.general.font, size = 10, outline = "OUTLINE" })
font = font, size = 10, outline = "OUTLINE" })
frame.nametext:SetPoint('TOP', frame.guidtext, 'BOTTOM')
]]
 
1459,6 → 1459,9
fontSizes[k] = size * profile.general.fontscale
end
 
-- fetch font path from lsm
font = LSM:Fetch(LSM.MediaType.FONT, profile.general.font)
 
ns.f:SetScript('OnUpdate', self.OnUpdate)
ns.f:SetScript('OnEvent', self.OnEvent)
 
Kui_Nameplates/config.lua
1,4 → 1,5
local addon, ns = ...
local kui = LibStub('Kui-1.0')
 
------------------------------------------------------------------ Ace config --
local AceConfig = LibStub('AceConfig-3.0')
6,23 → 7,6
 
--------------------------------------------------------------- Options table --
do
local fontSelection = {
'Yanone Kaffeesatz',
'Accidental Presidency',
'Standard font (Friz Quadrata)',
'Chat font (Arial Narrow)',
'Morpheus',
'Skurri',
}
local fontSelectionValues = {
kui.m.f.yanone,
kui.m.f.accid,
STANDARD_TEXT_FONT,
select(1, DEFAULT_CHAT_FRAME:GetFont()),
'Fonts\\MORPHEUS.ttf',
'Fonts\\skurri.ttf',
}
 
local handler = {}
local options = {
name = 'Kui Nameplates',
70,17 → 54,17
name = 'Font',
desc = 'The font used for all text on frames',
type = 'select',
get = 'GetFont',
set = 'SetFont',
values = fontSelection
dialogControl = 'LSM30_Font',
values = AceGUIWidgetLSMlists.font,
order = 4
},
fontscale = {
name = 'Font scale',
desc = 'The scale of all fonts displayed on nameplates',
type = 'range',
min = 0,
min = 0.01,
softMax = 2,
order = 4
order = 5
}
}
},
283,23 → 267,7
ns.db.profile[info[1]][info[#info]] = val
end
end
 
function handler:GetFont(info)
local path = ns.db.profile[info[1]][info[#info]]
 
for id, thisPath in pairs(fontSelectionValues) do
if path == thisPath then
return id
end
end
 
return 1
end
 
function handler:SetFont(info, val)
ns.db.profile[info[1]][info[#info]] = fontSelectionValues[val]
end
 
AceConfig:RegisterOptionsTable('kuinameplates', options)
AceConfigDialog:AddToBlizOptions('kuinameplates', 'Kui Nameplates')
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua New file
0,0 → 1,262
-- Widget is based on the AceGUIWidget-DropDown.lua supplied with AceGUI-3.0
-- Widget created by Yssaril
 
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")
 
do
local widgetType = "LSM30_Sound"
local widgetVersion = 9
 
local contentFrameCache = {}
local function ReturnSelf(self)
self:ClearAllPoints()
self:Hide()
self.check:Hide()
table.insert(contentFrameCache, self)
end
 
local function ContentOnClick(this, button)
local self = this.obj
self:Fire("OnValueChanged", this.text:GetText())
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function ContentSpeakerOnClick(this, button)
local self = this.frame.obj
local sound = this.frame.text:GetText()
PlaySoundFile(self.list[sound] ~= sound and self.list[sound] or Media:Fetch('sound',sound))
end
 
local function GetContentLine()
local frame
if next(contentFrameCache) then
frame = table.remove(contentFrameCache)
else
frame = CreateFrame("Button", nil, UIParent)
--frame:SetWidth(200)
frame:SetHeight(18)
frame:SetHighlightTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]], "ADD")
frame:SetScript("OnClick", ContentOnClick)
local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16)
check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",1,-1)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:Hide()
frame.check = check
 
local soundbutton = CreateFrame("Button", nil, frame)
soundbutton:SetWidth(16)
soundbutton:SetHeight(16)
soundbutton:SetPoint("RIGHT",frame,"RIGHT",-1,0)
soundbutton.frame = frame
soundbutton:SetScript("OnClick", ContentSpeakerOnClick)
frame.soundbutton = soundbutton
 
local speaker = soundbutton:CreateTexture(nil, "BACKGROUND")
speaker:SetTexture("Interface\\Common\\VoiceChat-Speaker")
speaker:SetAllPoints(soundbutton)
frame.speaker = speaker
local speakeron = soundbutton:CreateTexture(nil, "HIGHLIGHT")
speakeron:SetTexture("Interface\\Common\\VoiceChat-On")
speakeron:SetAllPoints(soundbutton)
frame.speakeron = speakeron
 
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
text:SetPoint("LEFT", check, "RIGHT", 1, 0)
text:SetPoint("RIGHT", soundbutton, "LEFT", -2, 0)
text:SetJustifyH("LEFT")
text:SetText("Test Test Test Test Test Test Test")
frame.text = text
frame.ReturnSelf = ReturnSelf
end
frame:Show()
return frame
end
 
local function OnAcquire(self)
self:SetHeight(44)
self:SetWidth(200)
end
 
local function OnRelease(self)
self:SetText("")
self:SetLabel("")
self:SetDisabled(false)
 
self.value = nil
self.list = nil
self.open = nil
self.hasClose = nil
 
self.frame:ClearAllPoints()
self.frame:Hide()
end
 
local function SetValue(self, value) -- Set the value to an item in the List.
if self.list then
self:SetText(value or "")
end
self.value = value
end
 
local function GetValue(self)
return self.value
end
 
local function SetList(self, list) -- Set the list of values for the dropdown (key => value pairs)
self.list = list or Media:HashTable("sound")
end
 
local function SetText(self, text) -- Set the text displayed in the box.
self.frame.text:SetText(text or "")
end
 
local function SetLabel(self, text) -- Set the text for the label.
self.frame.label:SetText(text or "")
end
 
local function AddItem(self, key, value) -- Add an item to the list.
self.list = self.list or {}
self.list[key] = value
end
local SetItemValue = AddItem -- Set the value of a item in the list. <<same as adding a new item>>
 
local function SetMultiselect(self, flag) end -- Toggle multi-selecting. <<Dummy function to stay inline with the dropdown API>>
local function GetMultiselect() return false end-- Query the multi-select flag. <<Dummy function to stay inline with the dropdown API>>
local function SetItemDisabled(self, key) end-- Disable one item in the list. <<Dummy function to stay inline with the dropdown API>>
 
local function SetDisabled(self, disabled) -- Disable the widget.
self.disabled = disabled
if disabled then
self.frame:Disable()
self.speaker:SetDesaturated(true)
self.speakeron:SetDesaturated(true)
else
self.frame:Enable()
self.speaker:SetDesaturated(false)
self.speakeron:SetDesaturated(false)
end
end
 
local function textSort(a,b)
return string.upper(a) < string.upper(b)
end
 
local sortedlist = {}
local function ToggleDrop(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
AceGUI:ClearFocus()
else
AceGUI:SetFocus(self)
self.dropdown = AGSMW:GetDropDownFrame()
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
for k, v in pairs(self.list) do
sortedlist[#sortedlist+1] = k
end
table.sort(sortedlist, textSort)
for i, k in ipairs(sortedlist) do
local f = GetContentLine()
f.text:SetText(k)
if k == self.value then
f.check:Show()
end
f.obj = self
self.dropdown:AddFrame(f)
end
wipe(sortedlist)
end
end
 
local function ClearFocus(self)
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function OnHide(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function Drop_OnEnter(this)
this.obj:Fire("OnEnter")
end
 
local function Drop_OnLeave(this)
this.obj:Fire("OnLeave")
end
 
local function WidgetPlaySound(this)
local self = this.obj
local sound = self.frame.text:GetText()
PlaySoundFile(self.list[sound] ~= sound and self.list[sound] or Media:Fetch('sound',sound))
end
 
local function Constructor()
local frame = AGSMW:GetBaseFrame()
local self = {}
 
self.type = widgetType
self.frame = frame
frame.obj = self
frame.dropButton.obj = self
frame.dropButton:SetScript("OnEnter", Drop_OnEnter)
frame.dropButton:SetScript("OnLeave", Drop_OnLeave)
frame.dropButton:SetScript("OnClick",ToggleDrop)
frame:SetScript("OnHide", OnHide)
 
 
local soundbutton = CreateFrame("Button", nil, frame)
soundbutton:SetWidth(16)
soundbutton:SetHeight(16)
soundbutton:SetPoint("LEFT",frame.DLeft,"LEFT",26,1)
soundbutton:SetScript("OnClick", WidgetPlaySound)
soundbutton.obj = self
self.soundbutton = soundbutton
frame.text:SetPoint("LEFT",soundbutton,"RIGHT",2,0)
 
 
local speaker = soundbutton:CreateTexture(nil, "BACKGROUND")
speaker:SetTexture("Interface\\Common\\VoiceChat-Speaker")
speaker:SetAllPoints(soundbutton)
self.speaker = speaker
local speakeron = soundbutton:CreateTexture(nil, "HIGHLIGHT")
speakeron:SetTexture("Interface\\Common\\VoiceChat-On")
speakeron:SetAllPoints(soundbutton)
self.speakeron = speakeron
 
self.alignoffset = 31
 
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.ClearFocus = ClearFocus
self.SetText = SetText
self.SetValue = SetValue
self.GetValue = GetValue
self.SetList = SetList
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.AddItem = AddItem
self.SetMultiselect = SetMultiselect
self.GetMultiselect = GetMultiselect
self.SetItemValue = SetItemValue
self.SetItemDisabled = SetItemDisabled
self.ToggleDrop = ToggleDrop
 
AceGUI:RegisterAsWidget(self)
return self
end
 
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua New file
0,0 → 1,230
-- Widget is based on the AceGUIWidget-DropDown.lua supplied with AceGUI-3.0
-- Widget created by Yssaril
 
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")
 
do
local widgetType = "LSM30_Statusbar"
local widgetVersion = 9
 
local contentFrameCache = {}
local function ReturnSelf(self)
self:ClearAllPoints()
self:Hide()
self.check:Hide()
table.insert(contentFrameCache, self)
end
 
local function ContentOnClick(this, button)
local self = this.obj
self:Fire("OnValueChanged", this.text:GetText())
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function GetContentLine()
local frame
if next(contentFrameCache) then
frame = table.remove(contentFrameCache)
else
frame = CreateFrame("Button", nil, UIParent)
--frame:SetWidth(200)
frame:SetHeight(18)
frame:SetHighlightTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]], "ADD")
frame:SetScript("OnClick", ContentOnClick)
local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16)
check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",1,-1)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:Hide()
frame.check = check
local bar = frame:CreateTexture("ARTWORK")
bar:SetHeight(16)
bar:SetPoint("LEFT",check,"RIGHT",1,0)
bar:SetPoint("RIGHT",frame,"RIGHT",-1,0)
frame.bar = bar
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
 
local font, size = text:GetFont()
text:SetFont(font,size,"OUTLINE")
 
text:SetPoint("LEFT", check, "RIGHT", 3, 0)
text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
text:SetJustifyH("LEFT")
text:SetText("Test Test Test Test Test Test Test")
frame.text = text
frame.ReturnSelf = ReturnSelf
end
frame:Show()
return frame
end
 
local function OnAcquire(self)
self:SetHeight(44)
self:SetWidth(200)
end
 
local function OnRelease(self)
self:SetText("")
self:SetLabel("")
self:SetDisabled(false)
 
self.value = nil
self.list = nil
self.open = nil
self.hasClose = nil
 
self.frame:ClearAllPoints()
self.frame:Hide()
end
 
local function SetValue(self, value) -- Set the value to an item in the List.
if self.list then
self:SetText(value or "")
end
self.value = value
end
 
local function GetValue(self)
return self.value
end
 
local function SetList(self, list) -- Set the list of values for the dropdown (key => value pairs)
self.list = list or Media:HashTable("statusbar")
end
 
 
local function SetText(self, text) -- Set the text displayed in the box.
self.frame.text:SetText(text or "")
local statusbar = self.list[text] ~= text and self.list[text] or Media:Fetch('statusbar',text)
self.bar:SetTexture(statusbar)
end
 
local function SetLabel(self, text) -- Set the text for the label.
self.frame.label:SetText(text or "")
end
 
local function AddItem(self, key, value) -- Add an item to the list.
self.list = self.list or {}
self.list[key] = value
end
local SetItemValue = AddItem -- Set the value of a item in the list. <<same as adding a new item>>
 
local function SetMultiselect(self, flag) end -- Toggle multi-selecting. <<Dummy function to stay inline with the dropdown API>>
local function GetMultiselect() return false end-- Query the multi-select flag. <<Dummy function to stay inline with the dropdown API>>
local function SetItemDisabled(self, key) end-- Disable one item in the list. <<Dummy function to stay inline with the dropdown API>>
 
local function SetDisabled(self, disabled) -- Disable the widget.
self.disabled = disabled
if disabled then
self.frame:Disable()
else
self.frame:Enable()
end
end
 
local function textSort(a,b)
return string.upper(a) < string.upper(b)
end
 
local sortedlist = {}
local function ToggleDrop(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
AceGUI:ClearFocus()
else
AceGUI:SetFocus(self)
self.dropdown = AGSMW:GetDropDownFrame()
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
for k, v in pairs(self.list) do
sortedlist[#sortedlist+1] = k
end
table.sort(sortedlist, textSort)
for i, k in ipairs(sortedlist) do
local f = GetContentLine()
f.text:SetText(k)
--print(k)
if k == self.value then
f.check:Show()
end
 
local statusbar = self.list[k] ~= k and self.list[k] or Media:Fetch('statusbar',k)
f.bar:SetTexture(statusbar)
f.obj = self
f.dropdown = self.dropdown
self.dropdown:AddFrame(f)
end
wipe(sortedlist)
end
end
 
local function ClearFocus(self)
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function OnHide(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function Drop_OnEnter(this)
this.obj:Fire("OnEnter")
end
 
local function Drop_OnLeave(this)
this.obj:Fire("OnLeave")
end
 
local function Constructor()
local frame = AGSMW:GetBaseFrame()
local self = {}
 
self.type = widgetType
self.frame = frame
frame.obj = self
frame.dropButton.obj = self
frame.dropButton:SetScript("OnEnter", Drop_OnEnter)
frame.dropButton:SetScript("OnLeave", Drop_OnLeave)
frame.dropButton:SetScript("OnClick",ToggleDrop)
frame:SetScript("OnHide", OnHide)
 
local bar = frame:CreateTexture(nil, "ARTWORK")
bar:SetPoint("TOPLEFT", frame,"TOPLEFT",6,-25)
bar:SetPoint("BOTTOMRIGHT", frame,"BOTTOMRIGHT", -21, 5)
self.bar = bar
 
self.alignoffset = 31
 
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.ClearFocus = ClearFocus
self.SetText = SetText
self.SetValue = SetValue
self.GetValue = GetValue
self.SetList = SetList
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.AddItem = AddItem
self.SetMultiselect = SetMultiselect
self.GetMultiselect = GetMultiselect
self.SetItemValue = SetItemValue
self.SetItemDisabled = SetItemDisabled
self.ToggleDrop = ToggleDrop
 
AceGUI:RegisterAsWidget(self)
return self
end
 
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua New file
0,0 → 1,228
-- Widget is based on the AceGUIWidget-DropDown.lua supplied with AceGUI-3.0
-- Widget created by Yssaril
 
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")
 
do
local widgetType = "LSM30_Border"
local widgetVersion = 9
 
local contentFrameCache = {}
local function ReturnSelf(self)
self:ClearAllPoints()
self:Hide()
self.check:Hide()
table.insert(contentFrameCache, self)
end
 
local function ContentOnClick(this, button)
local self = this.obj
self:Fire("OnValueChanged", this.text:GetText())
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function ContentOnEnter(this, button)
local self = this.obj
local text = this.text:GetText()
local border = self.list[text] ~= text and self.list[text] or Media:Fetch('border',text)
this.dropdown:SetBackdrop({edgeFile = border,
bgFile=[[Interface\DialogFrame\UI-DialogBox-Background-Dark]],
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 }})
end
 
local function GetContentLine()
local frame
if next(contentFrameCache) then
frame = table.remove(contentFrameCache)
else
frame = CreateFrame("Button", nil, UIParent)
--frame:SetWidth(200)
frame:SetHeight(18)
frame:SetHighlightTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]], "ADD")
frame:SetScript("OnClick", ContentOnClick)
frame:SetScript("OnEnter", ContentOnEnter)
local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16)
check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",1,-1)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:Hide()
frame.check = check
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
text:SetPoint("LEFT", check, "RIGHT", 1, 0)
text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
text:SetJustifyH("LEFT")
text:SetText("Test Test Test Test Test Test Test")
frame.text = text
frame.ReturnSelf = ReturnSelf
end
frame:Show()
return frame
end
 
local function OnAcquire(self)
self:SetHeight(44)
self:SetWidth(200)
end
 
local function OnRelease(self)
self:SetText("")
self:SetLabel("")
self:SetDisabled(false)
 
self.value = nil
self.list = nil
self.open = nil
self.hasClose = nil
 
self.frame:ClearAllPoints()
self.frame:Hide()
end
 
local function SetValue(self, value) -- Set the value to an item in the List.
if self.list then
self:SetText(value or "")
end
self.value = value
end
 
local function GetValue(self)
return self.value
end
 
local function SetList(self, list) -- Set the list of values for the dropdown (key => value pairs)
self.list = list or Media:HashTable("border")
end
 
 
local function SetText(self, text) -- Set the text displayed in the box.
self.frame.text:SetText(text or "")
local border = self.list[text] ~= text and self.list[text] or Media:Fetch('border',text)
 
self.frame.displayButton:SetBackdrop({edgeFile = border,
bgFile=[[Interface\DialogFrame\UI-DialogBox-Background-Dark]],
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 }})
end
 
local function SetLabel(self, text) -- Set the text for the label.
self.frame.label:SetText(text or "")
end
 
local function AddItem(self, key, value) -- Add an item to the list.
self.list = self.list or {}
self.list[key] = value
end
local SetItemValue = AddItem -- Set the value of a item in the list. <<same as adding a new item>>
 
local function SetMultiselect(self, flag) end -- Toggle multi-selecting. <<Dummy function to stay inline with the dropdown API>>
local function GetMultiselect() return false end-- Query the multi-select flag. <<Dummy function to stay inline with the dropdown API>>
local function SetItemDisabled(self, key) end-- Disable one item in the list. <<Dummy function to stay inline with the dropdown API>>
 
local function SetDisabled(self, disabled) -- Disable the widget.
self.disabled = disabled
if disabled then
self.frame:Disable()
else
self.frame:Enable()
end
end
 
local function textSort(a,b)
return string.upper(a) < string.upper(b)
end
 
local sortedlist = {}
local function ToggleDrop(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
AceGUI:ClearFocus()
else
AceGUI:SetFocus(self)
self.dropdown = AGSMW:GetDropDownFrame()
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
for k, v in pairs(self.list) do
sortedlist[#sortedlist+1] = k
end
table.sort(sortedlist, textSort)
for i, k in ipairs(sortedlist) do
local f = GetContentLine()
f.text:SetText(k)
--print(k)
if k == self.value then
f.check:Show()
end
f.obj = self
f.dropdown = self.dropdown
self.dropdown:AddFrame(f)
end
wipe(sortedlist)
end
end
 
local function ClearFocus(self)
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function OnHide(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function Drop_OnEnter(this)
this.obj:Fire("OnEnter")
end
 
local function Drop_OnLeave(this)
this.obj:Fire("OnLeave")
end
 
local function Constructor()
local frame = AGSMW:GetBaseFrameWithWindow()
local self = {}
 
self.type = widgetType
self.frame = frame
frame.obj = self
frame.dropButton.obj = self
frame.dropButton:SetScript("OnEnter", Drop_OnEnter)
frame.dropButton:SetScript("OnLeave", Drop_OnLeave)
frame.dropButton:SetScript("OnClick",ToggleDrop)
frame:SetScript("OnHide", OnHide)
 
self.alignoffset = 31
 
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.ClearFocus = ClearFocus
self.SetText = SetText
self.SetValue = SetValue
self.GetValue = GetValue
self.SetList = SetList
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.AddItem = AddItem
self.SetMultiselect = SetMultiselect
self.GetMultiselect = GetMultiselect
self.SetItemValue = SetItemValue
self.SetItemDisabled = SetItemDisabled
self.ToggleDrop = ToggleDrop
 
AceGUI:RegisterAsWidget(self)
return self
end
 
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/widget.xml New file
0,0 → 1,9
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="prototypes.lua" />
<Script file="FontWidget.lua" />
<Script file="SoundWidget.lua" />
<Script file="StatusbarWidget.lua" />
<Script file="BorderWidget.lua" />
<Script file="BackgroundWidget.lua" />
</Ui>
\ No newline at end of file
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua New file
0,0 → 1,231
-- Widget is based on the AceGUIWidget-DropDown.lua supplied with AceGUI-3.0
-- Widget created by Yssaril
 
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")
 
do
local widgetType = "LSM30_Background"
local widgetVersion = 9
 
local contentFrameCache = {}
local function ReturnSelf(self)
self:ClearAllPoints()
self:Hide()
self.check:Hide()
table.insert(contentFrameCache, self)
end
 
local function ContentOnClick(this, button)
local self = this.obj
self:Fire("OnValueChanged", this.text:GetText())
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function ContentOnEnter(this, button)
local self = this.obj
local text = this.text:GetText()
local background = self.list[text] ~= text and self.list[text] or Media:Fetch('background',text)
self.dropdown.bgTex:SetTexture(background)
end
 
local function GetContentLine()
local frame
if next(contentFrameCache) then
frame = table.remove(contentFrameCache)
else
frame = CreateFrame("Button", nil, UIParent)
--frame:SetWidth(200)
frame:SetHeight(18)
frame:SetHighlightTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]], "ADD")
frame:SetScript("OnClick", ContentOnClick)
frame:SetScript("OnEnter", ContentOnEnter)
local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16)
check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",1,-1)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:Hide()
frame.check = check
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
 
local font, size = text:GetFont()
text:SetFont(font,size,"OUTLINE")
 
text:SetPoint("LEFT", check, "RIGHT", 1, 0)
text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
text:SetJustifyH("LEFT")
text:SetText("Test Test Test Test Test Test Test")
frame.text = text
frame.ReturnSelf = ReturnSelf
end
frame:Show()
return frame
end
 
local function OnAcquire(self)
self:SetHeight(44)
self:SetWidth(200)
end
 
local function OnRelease(self)
self:SetText("")
self:SetLabel("")
self:SetDisabled(false)
 
self.value = nil
self.list = nil
self.open = nil
self.hasClose = nil
 
self.frame:ClearAllPoints()
self.frame:Hide()
end
 
local function SetValue(self, value) -- Set the value to an item in the List.
if self.list then
self:SetText(value or "")
end
self.value = value
end
 
local function GetValue(self)
return self.value
end
 
local function SetList(self, list) -- Set the list of values for the dropdown (key => value pairs)
self.list = list or Media:HashTable("background")
end
 
 
local function SetText(self, text) -- Set the text displayed in the box.
self.frame.text:SetText(text or "")
local background = self.list[text] ~= text and self.list[text] or Media:Fetch('background',text)
 
self.frame.displayButton:SetBackdrop({bgFile = background,
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 }})
end
 
local function SetLabel(self, text) -- Set the text for the label.
self.frame.label:SetText(text or "")
end
 
local function AddItem(self, key, value) -- Add an item to the list.
self.list = self.list or {}
self.list[key] = value
end
local SetItemValue = AddItem -- Set the value of a item in the list. <<same as adding a new item>>
 
local function SetMultiselect(self, flag) end -- Toggle multi-selecting. <<Dummy function to stay inline with the dropdown API>>
local function GetMultiselect() return false end-- Query the multi-select flag. <<Dummy function to stay inline with the dropdown API>>
local function SetItemDisabled(self, key) end-- Disable one item in the list. <<Dummy function to stay inline with the dropdown API>>
 
local function SetDisabled(self, disabled) -- Disable the widget.
self.disabled = disabled
if disabled then
self.frame:Disable()
self.frame.displayButton:SetBackdropColor(.2,.2,.2,1)
else
self.frame:Enable()
self.frame.displayButton:SetBackdropColor(1,1,1,1)
end
end
 
local function textSort(a,b)
return string.upper(a) < string.upper(b)
end
 
local sortedlist = {}
local function ToggleDrop(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
AceGUI:ClearFocus()
else
AceGUI:SetFocus(self)
self.dropdown = AGSMW:GetDropDownFrame()
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
for k, v in pairs(self.list) do
sortedlist[#sortedlist+1] = k
end
table.sort(sortedlist, textSort)
for i, k in ipairs(sortedlist) do
local f = GetContentLine()
f.text:SetText(k)
--print(k)
if k == self.value then
f.check:Show()
end
f.obj = self
f.dropdown = self.dropdown
self.dropdown:AddFrame(f)
end
wipe(sortedlist)
end
end
 
local function ClearFocus(self)
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function OnHide(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function Drop_OnEnter(this)
this.obj:Fire("OnEnter")
end
 
local function Drop_OnLeave(this)
this.obj:Fire("OnLeave")
end
 
local function Constructor()
local frame = AGSMW:GetBaseFrameWithWindow()
local self = {}
 
self.type = widgetType
self.frame = frame
frame.obj = self
frame.dropButton.obj = self
frame.dropButton:SetScript("OnEnter", Drop_OnEnter)
frame.dropButton:SetScript("OnLeave", Drop_OnLeave)
frame.dropButton:SetScript("OnClick",ToggleDrop)
frame:SetScript("OnHide", OnHide)
 
self.alignoffset = 31
 
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.ClearFocus = ClearFocus
self.SetText = SetText
self.SetValue = SetValue
self.GetValue = GetValue
self.SetList = SetList
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.AddItem = AddItem
self.SetMultiselect = SetMultiselect
self.GetMultiselect = GetMultiselect
self.SetItemValue = SetItemValue
self.SetItemDisabled = SetItemDisabled
self.ToggleDrop = ToggleDrop
 
AceGUI:RegisterAsWidget(self)
return self
end
 
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/prototypes.lua New file
0,0 → 1,267
-- Widget created by Yssaril
--[===[@debug@
local DataVersion = 9001 -- dev version always overwrites everything else :)
--@end-debug@]===]
--@non-debug@
local DataVersion = 42
--@end-non-debug@
local AGSMW = LibStub:NewLibrary("AceGUISharedMediaWidgets-1.0", DataVersion)
 
if not AGSMW then
return -- already loaded and no upgrade necessary
end
 
LoadAddOn("LibSharedMedia-3.0")
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
AGSMW = AGSMW or {}
 
AceGUIWidgetLSMlists = {
['font'] = Media:HashTable("font"),
['sound'] = Media:HashTable("sound"),
['statusbar'] = Media:HashTable("statusbar"),
['border'] = Media:HashTable("border"),
['background'] = Media:HashTable("background"),
}
 
do
local function disable(frame)
frame.label:SetTextColor(.5,.5,.5)
frame.text:SetTextColor(.5,.5,.5)
frame.dropButton:Disable()
if frame.displayButtonFont then
frame.displayButtonFont:SetTextColor(.5,.5,.5)
frame.displayButton:Disable()
end
end
 
local function enable(frame)
frame.label:SetTextColor(1,.82,0)
frame.text:SetTextColor(1,1,1)
frame.dropButton:Enable()
if frame.displayButtonFont then
frame.displayButtonFont:SetTextColor(1,1,1)
frame.displayButton:Enable()
end
end
 
local displayButtonBackdrop = {
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 },
}
 
-- create or retrieve BaseFrame
function AGSMW:GetBaseFrame()
local frame = CreateFrame("Frame", nil, UIParent)
frame:SetHeight(44)
frame:SetWidth(200)
frame:SetPoint("CENTER", UIParent, "CENTER")
 
local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
label:SetJustifyH("LEFT")
label:SetHeight(18)
label:SetText("")
frame.label = label
 
local DLeft = frame:CreateTexture(nil, "ARTWORK")
DLeft:SetWidth(25)
DLeft:SetHeight(64)
DLeft:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", -17, -21)
DLeft:SetTexture([[Interface\Glues\CharacterCreate\CharacterCreate-LabelFrame]])
DLeft:SetTexCoord(0, 0.1953125, 0, 1)
frame.DLeft = DLeft
local DRight = frame:CreateTexture(nil, "ARTWORK")
DRight:SetWidth(25)
DRight:SetHeight(64)
DRight:SetPoint("TOP", DLeft, "TOP")
DRight:SetPoint("RIGHT", frame, "RIGHT", 17, 0)
DRight:SetTexture([[Interface\Glues\CharacterCreate\CharacterCreate-LabelFrame]])
DRight:SetTexCoord(0.8046875, 1, 0, 1)
frame.DRight = DRight
local DMiddle = frame:CreateTexture(nil, "ARTWORK")
DMiddle:SetHeight(64)
DMiddle:SetPoint("TOP", DLeft, "TOP")
DMiddle:SetPoint("LEFT", DLeft, "RIGHT")
DMiddle:SetPoint("RIGHT", DRight, "LEFT")
DMiddle:SetTexture([[Interface\Glues\CharacterCreate\CharacterCreate-LabelFrame]])
DMiddle:SetTexCoord(0.1953125, 0.8046875, 0, 1)
frame.DMiddle = DMiddle
 
local text = frame:CreateFontString(nil,"OVERLAY","GameFontHighlightSmall")
text:SetPoint("RIGHT",DRight,"RIGHT",-43,1)
text:SetPoint("LEFT",DLeft,"LEFT",26,1)
text:SetJustifyH("RIGHT")
text:SetHeight(18)
text:SetText("")
frame.text = text
 
local dropButton = CreateFrame("Button", nil, frame)
dropButton:SetWidth(24)
dropButton:SetHeight(24)
dropButton:SetPoint("TOPRIGHT", DRight, "TOPRIGHT", -16, -18)
dropButton:SetNormalTexture([[Interface\ChatFrame\UI-ChatIcon-ScrollDown-Up]])
dropButton:SetPushedTexture([[Interface\ChatFrame\UI-ChatIcon-ScrollDown-Down]])
dropButton:SetDisabledTexture([[Interface\ChatFrame\UI-ChatIcon-ScrollDown-Disabled]])
dropButton:SetHighlightTexture([[Interface\Buttons\UI-Common-MouseHilight]], "ADD")
frame.dropButton = dropButton
 
frame.Disable = disable
frame.Enable = enable
return frame
end
 
function AGSMW:GetBaseFrameWithWindow()
local frame = self:GetBaseFrame()
 
local displayButton = CreateFrame("Button", nil, frame)
displayButton:SetHeight(42)
displayButton:SetWidth(42)
displayButton:SetPoint("TOPLEFT", frame, "TOPLEFT", 1, -2)
displayButton:SetBackdrop(displayButtonBackdrop)
displayButton:SetBackdropBorderColor(.5, .5, .5)
frame.displayButton = displayButton
 
frame.label:SetPoint("TOPLEFT",displayButton,"TOPRIGHT",1,2)
 
frame.DLeft:SetPoint("BOTTOMLEFT", displayButton, "BOTTOMRIGHT", -17, -20)
 
return frame
end
 
end
 
do
 
local sliderBackdrop = {
["bgFile"] = [[Interface\Buttons\UI-SliderBar-Background]],
["edgeFile"] = [[Interface\Buttons\UI-SliderBar-Border]],
["tile"] = true,
["edgeSize"] = 8,
["tileSize"] = 8,
["insets"] = {
["left"] = 3,
["right"] = 3,
["top"] = 3,
["bottom"] = 3,
},
}
local frameBackdrop = {
bgFile=[[Interface\DialogFrame\UI-DialogBox-Background-Dark]],
edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]],
tile = true, tileSize = 32, edgeSize = 32,
insets = { left = 11, right = 12, top = 12, bottom = 9 },
}
 
local function OnMouseWheel(self, dir)
self.slider:SetValue(self.slider:GetValue()+(15*dir*-1))
end
 
local function AddFrame(self, frame)
frame:SetParent(self.contentframe)
local strata = self:GetFrameStrata()
frame:SetFrameStrata(strata)
local level = self:GetFrameLevel() + 100
frame:SetFrameLevel(level)
if next(self.contentRepo) then
frame:SetPoint("TOPLEFT", self.contentRepo[#self.contentRepo], "BOTTOMLEFT", 0, 0)
frame:SetPoint("RIGHT", self.contentframe, "RIGHT", 0, 0)
self.contentframe:SetHeight(self.contentframe:GetHeight() + frame:GetHeight())
self.contentRepo[#self.contentRepo+1] = frame
else
self.contentframe:SetHeight(frame:GetHeight())
frame:SetPoint("TOPLEFT", self.contentframe, "TOPLEFT", 0, 0)
frame:SetPoint("RIGHT", self.contentframe, "RIGHT", 0, 0)
self.contentRepo[1] = frame
end
if self.contentframe:GetHeight() > UIParent:GetHeight()*2/5 - 20 then
self.scrollframe:SetWidth(146)
self:SetHeight(UIParent:GetHeight()*2/5)
self.slider:Show()
self:SetScript("OnMouseWheel", OnMouseWheel)
self.scrollframe:UpdateScrollChildRect()
self.slider:SetMinMaxValues(0, self.contentframe:GetHeight()-self.scrollframe:GetHeight())
else
self.scrollframe:SetWidth(160)
self:SetHeight(self.contentframe:GetHeight()+25)
self.slider:Hide()
self:SetScript("OnMouseWheel", nil)
self.scrollframe:UpdateScrollChildRect()
self.slider:SetMinMaxValues(0, 0)
end
self.contentframe:SetWidth(self.scrollframe:GetWidth())
end
 
local function ClearFrames(self)
for i, frame in ipairs(self.contentRepo) do
frame:ReturnSelf()
self.contentRepo[i] = nil
end
end
 
local function slider_OnValueChanged(self, value)
self.frame.scrollframe:SetVerticalScroll(value)
end
 
local DropDownCache = {}
function AGSMW:GetDropDownFrame()
local frame
if next(DropDownCache) then
frame = table.remove(DropDownCache)
else
frame = CreateFrame("Frame", nil, UIParent)
frame:SetClampedToScreen(true)
frame:SetWidth(188)
frame:SetBackdrop(frameBackdrop)
frame:SetFrameStrata("TOOLTIP")
frame:EnableMouseWheel(true)
 
local contentframe = CreateFrame("Frame", nil, frame)
contentframe:SetWidth(160)
contentframe:SetHeight(0)
frame.contentframe = contentframe
local scrollframe = CreateFrame("ScrollFrame", nil, frame)
scrollframe:SetPoint("TOPLEFT", frame, "TOPLEFT", 14, -13)
scrollframe:SetPoint("BOTTOM", frame, "BOTTOM", 0, 12)
scrollframe:SetWidth(160)
scrollframe:SetScrollChild(contentframe)
frame.scrollframe = scrollframe
local bgTex = frame:CreateTexture(nil, "ARTWORK")
bgTex:SetAllPoints(scrollframe)
frame.bgTex = bgTex
 
frame.AddFrame = AddFrame
frame.ClearFrames = ClearFrames
frame.contentRepo = {} -- store all our frames in here so we can get rid of them later
local slider = CreateFrame("Slider", nil, scrollframe)
slider:SetOrientation("VERTICAL")
slider:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -14, -10)
slider:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -14, 10)
slider:SetBackdrop(sliderBackdrop)
slider:SetThumbTexture([[Interface\Buttons\UI-SliderBar-Button-Vertical]])
slider:SetMinMaxValues(0, 1)
--slider:SetValueStep(1)
slider:SetWidth(12)
slider.frame = frame
slider:SetScript("OnValueChanged", slider_OnValueChanged)
frame.slider = slider
end
frame:SetHeight(UIParent:GetHeight()*2/5)
frame.slider:SetValue(0)
frame:Show()
return frame
end
 
function AGSMW:ReturnDropDownFrame(frame)
ClearFrames(frame)
frame:ClearAllPoints()
frame:Hide()
frame:SetBackdrop(frameBackdrop)
frame.bgTex:SetTexture(nil)
table.insert(DropDownCache, frame)
return nil
end
end
Kui_Nameplates/lib/Ace3/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua New file
0,0 → 1,214
-- Widget is based on the AceGUIWidget-DropDown.lua supplied with AceGUI-3.0
-- Widget created by Yssaril
 
local AceGUI = LibStub("AceGUI-3.0")
local Media = LibStub("LibSharedMedia-3.0")
 
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")
 
do
local widgetType = "LSM30_Font"
local widgetVersion = 9
 
local contentFrameCache = {}
local function ReturnSelf(self)
self:ClearAllPoints()
self:Hide()
self.check:Hide()
table.insert(contentFrameCache, self)
end
 
local function ContentOnClick(this, button)
local self = this.obj
self:Fire("OnValueChanged", this.text:GetText())
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function GetContentLine()
local frame
if next(contentFrameCache) then
frame = table.remove(contentFrameCache)
else
frame = CreateFrame("Button", nil, UIParent)
--frame:SetWidth(200)
frame:SetHeight(18)
frame:SetHighlightTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]], "ADD")
frame:SetScript("OnClick", ContentOnClick)
local check = frame:CreateTexture("OVERLAY")
check:SetWidth(16)
check:SetHeight(16)
check:SetPoint("LEFT",frame,"LEFT",1,-1)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:Hide()
frame.check = check
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
text:SetPoint("LEFT", check, "RIGHT", 1, 0)
text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
text:SetJustifyH("LEFT")
text:SetText("Test Test Test Test Test Test Test")
frame.text = text
frame.ReturnSelf = ReturnSelf
end
frame:Show()
return frame
end
 
local function OnAcquire(self)
self:SetHeight(44)
self:SetWidth(200)
end
 
local function OnRelease(self)
self:SetText("")
self:SetLabel("")
self:SetDisabled(false)
 
self.value = nil
self.list = nil
self.open = nil
self.hasClose = nil
 
self.frame:ClearAllPoints()
self.frame:Hide()
end
 
local function SetValue(self, value) -- Set the value to an item in the List.
if self.list then
self:SetText(value or "")
end
self.value = value
end
 
local function GetValue(self)
return self.value
end
 
local function SetList(self, list) -- Set the list of values for the dropdown (key => value pairs)
self.list = list or Media:HashTable("font")
end
 
local function SetText(self, text) -- Set the text displayed in the box.
self.frame.text:SetText(text or "")
local font = self.list[text] ~= text and self.list[text] or Media:Fetch('font',text)
local _, size, outline= self.frame.text:GetFont()
self.frame.text:SetFont(font,size,outline)
end
 
local function SetLabel(self, text) -- Set the text for the label.
self.frame.label:SetText(text or "")
end
 
local function AddItem(self, key, value) -- Add an item to the list.
self.list = self.list or {}
self.list[key] = value
end
local SetItemValue = AddItem -- Set the value of a item in the list. <<same as adding a new item>>
 
local function SetMultiselect(self, flag) end -- Toggle multi-selecting. <<Dummy function to stay inline with the dropdown API>>
local function GetMultiselect() return false end-- Query the multi-select flag. <<Dummy function to stay inline with the dropdown API>>
local function SetItemDisabled(self, key) end-- Disable one item in the list. <<Dummy function to stay inline with the dropdown API>>
 
local function SetDisabled(self, disabled) -- Disable the widget.
self.disabled = disabled
if disabled then
self.frame:Disable()
else
self.frame:Enable()
end
end
 
local function textSort(a,b)
return string.upper(a) < string.upper(b)
end
 
local sortedlist = {}
local function ToggleDrop(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
AceGUI:ClearFocus()
else
AceGUI:SetFocus(self)
self.dropdown = AGSMW:GetDropDownFrame()
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
for k, v in pairs(self.list) do
sortedlist[#sortedlist+1] = k
end
table.sort(sortedlist, textSort)
for i, k in ipairs(sortedlist) do
local f = GetContentLine()
local _, size, outline= f.text:GetFont()
local font = self.list[k] ~= k and self.list[k] or Media:Fetch('font',k)
f.text:SetFont(font,size,outline)
f.text:SetText(k)
if k == self.value then
f.check:Show()
end
f.obj = self
self.dropdown:AddFrame(f)
end
wipe(sortedlist)
end
end
 
local function ClearFocus(self)
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function OnHide(this)
local self = this.obj
if self.dropdown then
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown)
end
end
 
local function Drop_OnEnter(this)
this.obj:Fire("OnEnter")
end
 
local function Drop_OnLeave(this)
this.obj:Fire("OnLeave")
end
 
local function Constructor()
local frame = AGSMW:GetBaseFrame()
local self = {}
 
self.type = widgetType
self.frame = frame
frame.obj = self
frame.dropButton.obj = self
frame.dropButton:SetScript("OnEnter", Drop_OnEnter)
frame.dropButton:SetScript("OnLeave", Drop_OnLeave)
frame.dropButton:SetScript("OnClick",ToggleDrop)
frame:SetScript("OnHide", OnHide)
 
self.alignoffset = 31
 
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.ClearFocus = ClearFocus
self.SetText = SetText
self.SetValue = SetValue
self.GetValue = GetValue
self.SetList = SetList
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.AddItem = AddItem
self.SetMultiselect = SetMultiselect
self.GetMultiselect = GetMultiselect
self.SetItemValue = SetItemValue
self.SetItemDisabled = SetItemDisabled
self.ToggleDrop = ToggleDrop
 
AceGUI:RegisterAsWidget(self)
return self
end
 
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion)
 
end
Kui_Nameplates/lib/LibSharedMedia-3.0/LibSharedMedia-3.0.lua New file
0,0 → 1,274
--[[
Name: LibSharedMedia-3.0
Revision: $Revision: 74 $
Author: Elkano (elkano@gmx.de)
Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
Website: http://www.wowace.com/projects/libsharedmedia-3-0/
Description: Shared handling of media data (fonts, sounds, textures, ...) between addons.
Dependencies: LibStub, CallbackHandler-1.0
License: LGPL v2.1
]]
 
local MAJOR, MINOR = "LibSharedMedia-3.0", 5000402 -- 5.0.4 v2 / increase manually on changes
local lib = LibStub:NewLibrary(MAJOR, MINOR)
 
if not lib then return end
 
local _G = getfenv(0)
 
local pairs = _G.pairs
local type = _G.type
 
local band = _G.bit.band
 
local table_insert = _G.table.insert
local table_sort = _G.table.sort
 
local locale = GetLocale()
local locale_is_western
local LOCALE_MASK = 0
lib.LOCALE_BIT_koKR = 1
lib.LOCALE_BIT_ruRU = 2
lib.LOCALE_BIT_zhCN = 4
lib.LOCALE_BIT_zhTW = 8
lib.LOCALE_BIT_western = 128
 
local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
 
lib.callbacks = lib.callbacks or CallbackHandler:New(lib)
 
lib.DefaultMedia = lib.DefaultMedia or {}
lib.MediaList = lib.MediaList or {}
lib.MediaTable = lib.MediaTable or {}
lib.MediaType = lib.MediaType or {}
lib.OverrideMedia = lib.OverrideMedia or {}
 
local defaultMedia = lib.DefaultMedia
local mediaList = lib.MediaList
local mediaTable = lib.MediaTable
local overrideMedia = lib.OverrideMedia
 
 
-- create mediatype constants
lib.MediaType.BACKGROUND = "background" -- background textures
lib.MediaType.BORDER = "border" -- border textures
lib.MediaType.FONT = "font" -- fonts
lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures
lib.MediaType.SOUND = "sound" -- sound files
 
-- populate lib with default Blizzard data
-- BACKGROUND
if not lib.MediaTable.background then lib.MediaTable.background = {} end
lib.MediaTable.background["None"] = [[]]
lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]]
lib.MediaTable.background["Blizzard Dialog Background Dark"] = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]]
lib.MediaTable.background["Blizzard Dialog Background Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Background]]
lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]]
lib.MediaTable.background["Blizzard Marble"] = [[Interface\FrameGeneral\UI-Background-Marble]]
lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]]
lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]]
lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-GuildAchievement-Parchment-Horizontal]]
lib.MediaTable.background["Blizzard Rock"] = [[Interface\FrameGeneral\UI-Background-Rock]]
lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]]
lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]]
lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]]
lib.DefaultMedia.background = "None"
 
-- BORDER
if not lib.MediaTable.border then lib.MediaTable.border = {} end
lib.MediaTable.border["None"] = [[]]
lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]]
lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]]
lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]]
lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]]
lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]]
lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]]
lib.DefaultMedia.border = "None"
 
-- FONT
if not lib.MediaTable.font then lib.MediaTable.font = {} end
local SML_MT_font = lib.MediaTable.font
--[[
file name latin koKR ruRU zhCN zhTW
2002.ttf 2002 X X X - -
2002B.ttf 2002 Bold X X X - -
ARHei.ttf AR CrystalzcuheiGBK Demibold X - X X X
ARIALN.TTF Arial Narrow X - X - -
ARKai_C.ttf AR ZhongkaiGBK Medium (Combat) X - X X X
ARKai_T.ttf AR ZhongkaiGBK Medium X - X X X
bHEI00M.ttf AR Heiti2 Medium B5 - - - - X
bHEI01B.ttf AR Heiti2 Bold B5 - - - - X
bKAI00M.ttf AR Kaiti Medium B5 - - - - X
bLEI00D.ttf AR Leisu Demi B5 - - - - X
FRIZQT__.TTF Friz Quadrata TT X - - - -
FRIZQT___CYR.TTF FrizQuadrataCTT - - X - -
K_Damage.TTF YDIWingsM - X X - -
K_Pagetext.TTF MoK X X X - -
MORPHEUS.TTF Morpheus X - - - -
MORPHEUS_CYR.TTF Morpheus X - X - -
NIM_____.ttf Nimrod MT X - X - -
SKURRI.TTF Skurri X - - - -
SKURRI_CYR.TTF Skurri X - X - -
]]
 
if locale == "koKR" then
LOCALE_MASK = lib.LOCALE_BIT_koKR
--
SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]]
SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]]
SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]]
SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]]
--
lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed
--
elseif locale == "zhCN" then
LOCALE_MASK = lib.LOCALE_BIT_zhCN
--
SML_MT_font["伤害数字"] = [[Fonts\ARKai_C.ttf]]
SML_MT_font["默认"] = [[Fonts\ARKai_T.ttf]]
SML_MT_font["聊天"] = [[Fonts\ARHei.ttf]]
--
lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed
--
elseif locale == "zhTW" then
LOCALE_MASK = lib.LOCALE_BIT_zhTW
--
SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]]
SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]]
SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]]
SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]]
--
lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed
 
elseif locale == "ruRU" then
LOCALE_MASK = lib.LOCALE_BIT_ruRU
--
SML_MT_font["2002"] = [[Fonts\2002.TTF]]
SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]]
SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]]
SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]]
SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]]
SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT___CYR.TTF]]
SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]]
SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]]
SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]]
SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]]
--
lib.DefaultMedia.font = "Friz Quadrata TT"
--
else
LOCALE_MASK = lib.LOCALE_BIT_western
locale_is_western = true
--
SML_MT_font["2002"] = [[Fonts\2002.TTF]]
SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]]
SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]]
SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]]
SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]]
SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]]
SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]]
SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]]
SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]]
SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]]
SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]]
--
lib.DefaultMedia.font = "Friz Quadrata TT"
--
end
 
-- STATUSBAR
if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end
lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]]
lib.MediaTable.statusbar["Blizzard Character Skills Bar"] = [[Interface\PaperDollInfoFrame\UI-Character-Skills-Bar]]
lib.MediaTable.statusbar["Blizzard Raid Bar"] = [[Interface\RaidFrame\Raid-Bar-Hp-Fill]]
lib.DefaultMedia.statusbar = "Blizzard"
 
-- SOUND
if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
lib.MediaTable.sound["None"] = [[Interface\Quiet.ogg]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
lib.DefaultMedia.sound = "None"
 
local function rebuildMediaList(mediatype)
local mtable = mediaTable[mediatype]
if not mtable then return end
if not mediaList[mediatype] then mediaList[mediatype] = {} end
local mlist = mediaList[mediatype]
-- list can only get larger, so simply overwrite it
local i = 0
for k in pairs(mtable) do
i = i + 1
mlist[i] = k
end
table_sort(mlist)
end
 
function lib:Register(mediatype, key, data, langmask)
if type(mediatype) ~= "string" then
error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype))
end
if type(key) ~= "string" then
error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key))
end
mediatype = mediatype:lower()
if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end
if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
local mtable = mediaTable[mediatype]
if mtable[key] then return false end
 
mtable[key] = data
rebuildMediaList(mediatype)
self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
return true
end
 
function lib:Fetch(mediatype, key, noDefault)
local mtt = mediaTable[mediatype]
local overridekey = overrideMedia[mediatype]
local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil
return result ~= "" and result or nil
end
 
function lib:IsValid(mediatype, key)
return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false
end
 
function lib:HashTable(mediatype)
return mediaTable[mediatype]
end
 
function lib:List(mediatype)
if not mediaTable[mediatype] then
return nil
end
if not mediaList[mediatype] then
rebuildMediaList(mediatype)
end
return mediaList[mediatype]
end
 
function lib:GetGlobal(mediatype)
return overrideMedia[mediatype]
end
 
function lib:SetGlobal(mediatype, key)
if not mediaTable[mediatype] then
return false
end
overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil
self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype])
return true
end
 
function lib:GetDefault(mediatype)
return defaultMedia[mediatype]
end
 
function lib:SetDefault(mediatype, key)
if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then
defaultMedia[mediatype] = key
return true
else
return false
end
end
Kui_Nameplates/lib/LibSharedMedia-3.0/lib.xml New file
0,0 → 1,4
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="LibSharedMedia-3.0.lua" />
</Ui>
\ No newline at end of file
Kui_Nameplates/lib/embeds.xml
1,10 → 1,14
<Ui xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd">
<Script file="LibStub\LibStub.lua"/>
<Include file="Kui\kui.xml"/>
 
<Include file="Ace3\CallbackHandler-1.0\CallbackHandler-1.0.xml"/>
<Include file="Ace3\AceAddon-3.0\AceAddon-3.0.xml"/>
<Include file="Ace3\AceDB-3.0\AceDB-3.0.xml"/>
<Include file="Ace3\AceDBOptions-3.0\AceDBOptions-3.0.xml"/>
<Include file="Ace3\AceGUI-3.0\AceGUI-3.0.xml"/>
<Include file="Ace3\AceConfig-3.0\AceConfig-3.0.xml"/>
<Include file="Ace3\AceDB-3.0\AceDB-3.0.xml"/>
<Include file="Ace3\AceDBOptions-3.0\AceDBOptions-3.0.xml"/>
 
<Include file="LibSharedMedia-3.0\lib.xml"/>
<Include file="Ace3\AceGUI-3.0-SharedMediaWidgets\widget.xml"/>
</Ui>