You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.8 KiB
98 lines
2.8 KiB
--[[-----------------------------------------------------------------------------
|
|
WeakAurasMediaSound Widget
|
|
|
|
This code come from https://www.curseforge.com/wow/addons/libddi-1-0 by Funkeh under "Ace3 Style BSD" licence
|
|
-------------------------------------------------------------------------------]]
|
|
local Type, Version = "WeakAurasMediaSound", 1
|
|
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
|
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then
|
|
return
|
|
end
|
|
local L = WeakAuras.L
|
|
local media = LibStub("LibSharedMedia-3.0")
|
|
local prototype = LibStub("AceGUI-3.0-DropDown-ItemBase"):GetItemBase()
|
|
|
|
local ignore = {
|
|
[" " ..L["Custom"]] = true,
|
|
[" " ..L["Sound by Kit ID"]] = true,
|
|
[L["None"]] = true
|
|
}
|
|
|
|
local function updateToggle(self)
|
|
if self.value then
|
|
self.check:Show()
|
|
else
|
|
self.check:Hide()
|
|
end
|
|
end
|
|
|
|
local function updateSndButton(self)
|
|
local text = self.obj.text:GetText()
|
|
if text == nil or ignore[text] then
|
|
self.sndButton:Hide()
|
|
else
|
|
self.sndButton:Show()
|
|
end
|
|
end
|
|
|
|
local function onRelease(self)
|
|
prototype.OnRelease(self)
|
|
self:SetValue(nil)
|
|
end
|
|
|
|
local function onClick(frame)
|
|
local self = frame.obj
|
|
if self.disabled then return end
|
|
self.value = not self.value
|
|
if self.value then
|
|
PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON
|
|
else
|
|
PlaySound(857) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF
|
|
end
|
|
updateToggle(self)
|
|
self:Fire("OnValueChanged", self.value)
|
|
end
|
|
|
|
local function setValue(self, value)
|
|
self.value = value
|
|
updateToggle(self)
|
|
end
|
|
|
|
local function getValue(self)
|
|
return self.value
|
|
end
|
|
|
|
local function soundOnClick(self)
|
|
local snd = media:Fetch("sound", self.sound:GetText())
|
|
if snd then PlaySoundFile(snd, "Master") end
|
|
end
|
|
|
|
local function constructor()
|
|
local self = prototype.Create(Type)
|
|
self.frame:SetScript("OnShow", updateSndButton)
|
|
self.frame:SetScript("OnClick", onClick)
|
|
self.SetValue = setValue
|
|
self.GetValue = getValue
|
|
self.OnRelease = onRelease
|
|
local frame = self.frame
|
|
|
|
local sndButton = CreateFrame("Button", nil, frame)
|
|
sndButton:SetWidth(16)
|
|
sndButton:SetHeight(16)
|
|
sndButton:SetPoint("RIGHT", frame, "RIGHT", -3, -1)
|
|
sndButton:SetScript("OnClick", soundOnClick)
|
|
sndButton.sound = frame.obj.text
|
|
frame.sndButton = sndButton
|
|
|
|
local icon = sndButton:CreateTexture(nil, "BACKGROUND")
|
|
icon:SetTexture(130979) --"Interface\\Common\\VoiceChat-Speaker"
|
|
icon:SetAllPoints(sndButton)
|
|
|
|
local highlight = sndButton:CreateTexture(nil, "HIGHLIGHT")
|
|
highlight:SetTexture(130977) --"Interface\\Common\\VoiceChat-On"
|
|
highlight:SetAllPoints(sndButton)
|
|
|
|
AceGUI:RegisterAsWidget(self)
|
|
return self
|
|
end
|
|
AceGUI:RegisterWidgetType(Type, constructor, Version)
|
|
|