/
coordframe:EnableMouse(true) |
local coords = coordframe:CreateFontString(nil, "OVERLAY") |
coords:SetParent(coordframe) |
coords:SetFont("Interface\\AddOns\\PocketPlot\\media\\negotiate_free.ttf", 12) --temporary |
--coords:SetFont("Interface\\AddOns\\PocketPlot\\media\\negotiate_free.ttf", 12) --temporary |
local frames = { "None", |
"Minimap", |
"DurabilityFrame", |
"WorldStateAlwaysUpFrame", |
} |
local stratae = {"BACKGROUND", "LOW", "MEDIUM", "HIGH", "DIALOG"} |
local allshapes = { "Circle", |
local allshapes = { "3-Corner", |
"Circle", |
"Compass", |
"Fancy Frame", |
"Flower", |
"Slanted", |
"Scalloped", |
"Square", |
"Teardrop", |
"Torn", |
"Zigzag Round", |
"Zigzag Square" |
} |
--need these 2 tables for minimap button paths |
local squareMasks = { |
["3-Corner"] = true, |
["Fancy Frame"] = true, |
["Half Round"] = true, |
["Rectangle"] = true, |
["Circle"] = true, |
["Compass"] = true, |
["Flower"] = true, |
["Teardrop"] = true, |
["Zigzag Round"] = true, |
} |
local fontFlags = {"None", "Outline", "Monochrome Outline"} --, "Monochrome"} |
end |
--MINIMAP ICONS/BLIPS |
if db.blips == "default" then |
--[[if db.blips == "default" then |
Minimap:SetBlipTexture("Interface\\Minimap\\OBJECTICONS") |
else |
Minimap:SetBlipTexture("Interface\\AddOns\\PocketPlot\\media\\"..db.blips) |
end |
end]] |
--MAKE THE MINIMAP SQUARE WITH A THIN BORDER |
MinimapBorder:Hide() |
if not db.coords then |
coordframe:Hide() |
end |
coordframe:SetScript("OnEnter", function(self) |
GameTooltip:SetOwner(self, "ANCHOR_LEFT") |
GameTooltip:AddLine("Location Functions", 1,1,1) |
GameTooltip:AddLine("Click to display the world map.") |
GameTooltip:AddLine("Shift-click to input your coordinates into chat.") |
GameTooltip:Show() |
end) |
coordframe:SetScript("OnLeave", function() GameTooltip:Hide() end) |
coordframe:SetScript("OnMouseUp", function() |
if IsShiftKeyDown() then |
ChatFrame1EditBox:Insert("["..coords:GetText().."]") |
else |
ToggleFrame(WorldMapFrame) |
end |
end) |
local throttle = 0 |
local coordx, coordy |
coordframe:SetScript("OnUpdate", function(self, elapsed) |
throttle = throttle + elapsed |
if throttle >= .3 then |
coordx,coordy = GetPlayerMapPosition("player") |
coords:SetFormattedText("%.1f/%.1f", coordx*100, coordy*100) |
throttle = 0 |
end |
end) |
--COLOR BORDER AND CLOCK/COORDS BY CLASS IF ENABLED |
ClassColors() |
end, |
order = 1, |
}, |
blips = { |
--[[blips = { |
name = "Tracking Blips", |
desc = "Set the style of tracking blips (POI) on the minimap.", |
type = "select", |
end |
end, |
order = 2, |
}, |
},]] |
scale = { |
name = "Minimap Scale", |
desc = "Set the scale of the minimap.", |
LSM:Register("font", "Negotiate Free", "Interface\\AddOns\\PocketPlot\\media\\negotiate_free.ttf") |
coordframe:SetScript("OnEnter", function(self) |
GameTooltip:SetOwner(self, "ANCHOR_LEFT") |
GameTooltip:AddLine("Location Functions", 1,1,1) |
GameTooltip:AddLine("Click to display the world map.") |
GameTooltip:AddLine("Shift-click to input your coordinates into chat.") |
GameTooltip:Show() |
end) |
coordframe:SetScript("OnLeave", function() GameTooltip:Hide() end) |
coordframe:SetScript("OnMouseUp", function() |
if IsShiftKeyDown() then |
ChatFrame1EditBox:Insert("["..coords:GetText().."]") |
else |
ToggleFrame(WorldMapFrame) |
end |
end) |
local throttle = 0 |
local coordx, coordy |
coordframe:SetScript("OnUpdate", function(self, elapsed) |
throttle = throttle + elapsed |
if throttle >= .3 then |
coordx,coordy = GetPlayerMapPosition("player") |
coords:SetFormattedText("%.1f/%.1f", coordx*100, coordy*100) |
throttle = 0 |
end |
end) |
PocketPlot:RegisterEvent("PLAYER_LOGIN") |
PocketPlot:SetScript("OnEvent", PlayerLogin) |
## Interface: 60000 |
## Interface: 70000 |
## Title: PocketPlot |
## Author: Seerah |
## Notes: Minimap customization |
## Version: 2.16 |
## Version: 2.17 |
## X-Category: Minimap |
## OptionalDeps: Ace3, LibSharedMedia-3.0, AceGUI-3.0-SharedMediaWidgets |
## SavedVariables: PocketPlotDB |
local AceGUI = LibStub("AceGUI-3.0") |
local Media = LibStub("LibSharedMedia-3.0") |
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") |
do |
local min, max, floor = math.min, math.max, math.floor |
local fixlevels = AceGUISharedMediaWidgets.fixlevels |
local OnItemValueChanged = AceGUISharedMediaWidgets.OnItemValueChanged |
local widgetType = "LSM30_Sound" |
local widgetVersion = 11 |
do |
local widgetType = "LSM30_Sound_Item_Select" |
local widgetVersion = 1 |
local contentFrameCache = {} |
local function ReturnSelf(self) |
self:ClearAllPoints() |
self:Hide() |
self.check:Hide() |
table.insert(contentFrameCache, self) |
end |
local function Frame_OnEnter(this) |
local self = this.obj |
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 |
if self.useHighlight then |
self.highlight:Show() |
end |
self:Fire("OnEnter") |
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), "Master") |
end |
if self.specialOnEnter then |
self.specialOnEnter(self) |
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 function Frame_OnLeave(this) |
local self = this.obj |
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 |
self.highlight:Hide() |
self:Fire("OnLeave") |
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 |
if self.specialOnLeave then |
self.specialOnLeave(self) |
end |
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite") |
text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) |
text:SetPoint("BOTTOMRIGHT", soundbutton, "BOTTOMLEFT", -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.frame:SetToplevel(true) |
self.frame:SetFrameStrata("FULLSCREEN_DIALOG") |
end |
local function OnAcquire(self) |
self:SetHeight(44) |
self:SetWidth(200) |
end |
local function OnRelease(self) |
self.pullout = nil |
self.frame:SetParent(nil) |
self.frame:ClearAllPoints() |
self.frame:Hide() |
end |
local function OnRelease(self) |
self:SetText("") |
self:SetLabel("") |
self:SetDisabled(false) |
local function SetPullout(self, pullout) |
self.pullout = pullout |
self.value = nil |
self.list = nil |
self.open = nil |
self.hasClose = nil |
self.frame:SetParent(nil) |
self.frame:SetParent(pullout.itemFrame) |
self.parent = pullout.itemFrame |
fixlevels(pullout.itemFrame, pullout.itemFrame:GetChildren()) |
end |
self.frame:ClearAllPoints() |
self.frame:Hide() |
end |
local function SetText(self, text) |
self.sound = text or '' |
self.text:SetText(text or "") |
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 GetText(self) |
return self.text:GetText() |
end |
local function GetValue(self) |
return self.value |
end |
local function SetPoint(self, ...) |
self.frame:SetPoint(...) |
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 Show(self) |
self.frame:Show() |
end |
local function SetText(self, text) -- Set the text displayed in the box. |
self.frame.text:SetText(text or "") |
end |
local function Hide(self) |
self.frame:Hide() |
end |
local function SetLabel(self, text) -- Set the text for the label. |
self.frame.label:SetText(text or "") |
end |
local function SetDisabled(self, disabled) |
self.disabled = disabled |
if disabled then |
self.useHighlight = false |
self.text:SetTextColor(.5, .5, .5) |
else |
self.useHighlight = true |
self.text:SetTextColor(1, 1, 1) |
end |
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 SetOnLeave(self, func) |
self.specialOnLeave = func |
end |
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 SetOnEnter(self, func) |
self.specialOnEnter = func |
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 UpdateToggle(self) |
if self.value then |
self.check:Show() |
else |
self.check:Hide() |
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() |
local width = self.frame:GetWidth() |
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") |
self.dropdown:SetPoint("TOPRIGHT", self.frame, "BOTTOMRIGHT", width < 160 and (160 - width) or 0, 0) |
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 Frame_OnClick(this, button) |
local self = this.obj |
self.value = not self.value |
UpdateToggle(self) |
self:Fire("OnValueChanged", self.value) |
local function ClearFocus(self) |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local function Speaker_OnClick(this, button) |
local self = this.obj |
PlaySoundFile(Media:Fetch('sound',self.sound)) |
local function OnHide(this) |
local self = this.obj |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local function SetValue(self, value) |
self.value = value |
UpdateToggle(self) |
end |
local function Drop_OnEnter(this) |
this.obj:Fire("OnEnter") |
end |
local function Constructor() |
local count = AceGUI:GetNextWidgetNum(type) |
local frame = CreateFrame("Frame", "LSM30_Sound_DropDownItem"..count) |
local self = {} |
self.frame = frame |
frame.obj = self |
self.type = type |
local function Drop_OnLeave(this) |
this.obj:Fire("OnLeave") |
end |
self.useHighlight = true |
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), "Master") |
end |
frame:SetHeight(17) |
frame:SetFrameStrata("FULLSCREEN_DIALOG") |
local function Constructor() |
local frame = AGSMW:GetBaseFrame() |
local self = {} |
local button = CreateFrame("Button", nil, frame) |
button:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-22,0) |
button:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0) |
self.button = button |
button.obj = 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 speakerbutton = CreateFrame("Button", nil, frame) |
speakerbutton:SetWidth(16) |
speakerbutton:SetHeight(16) |
speakerbutton:SetPoint("RIGHT",frame,"RIGHT",-6,0) |
self.speakerbutton = speakerbutton |
speakerbutton.obj = self |
local speaker = frame:CreateTexture(nil, "BACKGROUND") |
speaker:SetTexture("Interface\\Common\\VoiceChat-Speaker") |
speaker:SetAllPoints(speakerbutton) |
self.speaker = speaker |
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 speakeron = speakerbutton:CreateTexture(nil, "HIGHLIGHT") |
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(speakerbutton) |
self.speakeron = speakeron |
speakeron:SetAllPoints(soundbutton) |
self.speakeron = speakeron |
local text = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall") |
text:SetTextColor(1,1,1) |
text:SetJustifyH("LEFT") |
text:SetPoint("TOPLEFT",frame,"TOPLEFT",18,0) |
text:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-24,0) |
self.text = text |
self.alignoffset = 31 |
local highlight = button:CreateTexture(nil, "OVERLAY") |
highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") |
highlight:SetBlendMode("ADD") |
highlight:SetHeight(14) |
highlight:ClearAllPoints() |
highlight:SetPoint("RIGHT",frame,"RIGHT",-19,0) |
highlight:SetPoint("LEFT",frame,"LEFT",5,0) |
highlight:Hide() |
self.highlight = highlight |
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 |
local check = frame:CreateTexture("OVERLAY") |
check:SetWidth(16) |
check:SetHeight(16) |
check:SetPoint("LEFT",frame,"LEFT",3,-1) |
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") |
check:Hide() |
self.check = check |
local sub = frame:CreateTexture("OVERLAY") |
sub:SetWidth(16) |
sub:SetHeight(16) |
sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) |
sub:SetTexture("Interface\\ChatFrame\\ChatFrameExpandArrow") |
sub:Hide() |
self.sub = sub |
button:SetScript("OnEnter", Frame_OnEnter) |
button:SetScript("OnLeave", Frame_OnLeave) |
self.OnAcquire = OnAcquire |
self.OnRelease = OnRelease |
self.SetPullout = SetPullout |
self.GetText = GetText |
self.SetText = SetText |
self.SetDisabled = SetDisabled |
self.SetPoint = SetPoint |
self.Show = Show |
self.Hide = Hide |
self.SetOnLeave = SetOnLeave |
self.SetOnEnter = SetOnEnter |
self.button:SetScript("OnClick", Frame_OnClick) |
self.speakerbutton:SetScript("OnClick", Speaker_OnClick) |
self.SetValue = SetValue |
AceGUI:RegisterAsWidget(self) |
return self |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
AceGUI:RegisterAsWidget(self) |
return self |
end |
do |
local widgetType = "LSM30_Sound" |
local widgetVersion = 3 |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
local function AddListItem(self, value, text) |
local item = AceGUI:Create("LSM30_Sound_Item_Select") |
item:SetText(text) |
item.userdata.obj = self |
item.userdata.value = value |
item:SetCallback("OnValueChanged", OnItemValueChanged) |
self.pullout:AddItem(item) |
end |
local function SetList(self, list) |
self.list = list or Media:HashTable("sound") |
self.pullout:Clear() |
if self.multiselect then |
AddCloseButton() |
end |
end |
local sortlist = {} |
local function ParseListItems(self) |
for v in pairs(self.list) do |
sortlist[#sortlist + 1] = v |
end |
table.sort(sortlist) |
for i, value in pairs(sortlist) do |
AddListItem(self, value, value) |
sortlist[i] = nil |
end |
end |
local function Constructor() |
local self = AceGUI:Create("Dropdown") |
self.type = widgetType |
self.SetList = SetList |
self.SetValue = AceGUISharedMediaWidgets.SetValue |
local clickscript = self.button:GetScript("OnClick") |
self.button:SetScript("OnClick", function(...) |
self.pullout:Clear() |
ParseListItems(self) |
clickscript(...) |
end) |
return self |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
end |
end |
local AceGUI = LibStub("AceGUI-3.0") |
local Media = LibStub("LibSharedMedia-3.0") |
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") |
do |
local min, max, floor = math.min, math.max, math.floor |
local fixlevels = AceGUISharedMediaWidgets.fixlevels |
local OnItemValueChanged = AceGUISharedMediaWidgets.OnItemValueChanged |
local widgetType = "LSM30_Statusbar" |
local widgetVersion = 11 |
do |
local widgetType = "LSM30_Statusbar_Item_Select" |
local widgetVersion = 1 |
local contentFrameCache = {} |
local function ReturnSelf(self) |
self:ClearAllPoints() |
self:Hide() |
self.check:Hide() |
table.insert(contentFrameCache, self) |
end |
local function SetText(self, text) |
if text and text ~= '' then |
self.texture:SetTexture(Media:Fetch('statusbar',text)) |
self.texture:SetVertexColor(.5,.5,.5) |
end |
self.text:SetText(text or "") |
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 Constructor() |
local self = AceGUI:Create("Dropdown-Item-Toggle") |
self.type = widgetType |
self.SetText = SetText |
local texture = self.frame:CreateTexture(nil, "BACKGROUND") |
texture:SetTexture(0,0,0,0) |
texture:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",-4,1) |
texture:SetPoint("TOPLEFT",self.frame,"TOPLEFT",6,-1) |
self.texture = texture |
return self |
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("TOPLEFT", check, "TOPRIGHT", 3, 0) |
text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) |
text:SetJustifyH("LEFT") |
text:SetText("Test Test Test Test Test Test Test") |
frame.text = text |
frame.ReturnSelf = ReturnSelf |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
frame:Show() |
return frame |
end |
do |
local widgetType = "LSM30_Statusbar" |
local widgetVersion = 3 |
local function OnAcquire(self) |
self:SetHeight(44) |
self:SetWidth(200) |
end |
local function SetText(self, text) |
if text and text ~= '' then |
self.texture:SetTexture(Media:Fetch('statusbar',text)) |
self.texture:SetVertexColor(.5,.5,.5) |
end |
self.text:SetText(text or "") |
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 AddListItem(self, value, text) |
local item = AceGUI:Create("LSM30_Statusbar_Item_Select") |
item:SetText(text) |
item.userdata.obj = self |
item.userdata.value = value |
item:SetCallback("OnValueChanged", OnItemValueChanged) |
self.pullout:AddItem(item) |
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 SetList(self, list) |
self.list = list or Media:HashTable("statusbar") |
self.pullout:Clear() |
if self.multiselect then |
AddCloseButton() |
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() |
local width = self.frame:GetWidth() |
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") |
self.dropdown:SetPoint("TOPRIGHT", self.frame, "BOTTOMRIGHT", width < 160 and (160 - width) or 0, 0) |
for k, v in pairs(self.list) do |
sortedlist[#sortedlist+1] = k |
end |
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 sortlist = {} |
local function ParseListItems(self) |
for v in pairs(self.list) do |
sortlist[#sortlist + 1] = v |
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 |
table.sort(sortlist) |
for i, value in pairs(sortlist) do |
AddListItem(self, value, value) |
sortlist[i] = nil |
end |
wipe(sortedlist) |
end |
end |
local function Constructor() |
local self = AceGUI:Create("Dropdown") |
self.type = widgetType |
self.SetText = SetText |
self.SetList = SetList |
self.SetValue = AceGUISharedMediaWidgets.SetValue |
local function ClearFocus(self) |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local left = _G[self.dropdown:GetName() .. "Left"] |
local middle = _G[self.dropdown:GetName() .. "Middle"] |
local right = _G[self.dropdown:GetName() .. "Right"] |
local function OnHide(this) |
local self = this.obj |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local texture = self.dropdown:CreateTexture(nil, "ARTWORK") |
texture:SetPoint("BOTTOMRIGHT", right, "BOTTOMRIGHT" ,-39, 26) |
texture:SetPoint("TOPLEFT", left, "TOPLEFT", 24, -24) |
self.texture = texture |
local function Drop_OnEnter(this) |
this.obj:Fire("OnEnter") |
end |
local clickscript = self.button:GetScript("OnClick") |
self.button:SetScript("OnClick", function(...) |
self.pullout:Clear() |
ParseListItems(self) |
clickscript(...) |
end) |
local function Drop_OnLeave(this) |
this.obj:Fire("OnLeave") |
end |
return self |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
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, "OVERLAY") |
bar:SetPoint("TOPLEFT", frame,"TOPLEFT",6,-25) |
bar:SetPoint("BOTTOMRIGHT", frame,"BOTTOMRIGHT", -21, 5) |
bar:SetAlpha(0.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 |
local AceGUI = LibStub("AceGUI-3.0") |
local Media = LibStub("LibSharedMedia-3.0") |
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") |
do |
local min, max, floor = math.min, math.max, math.floor |
local fixlevels = AceGUISharedMediaWidgets.fixlevels |
local OnItemValueChanged = AceGUISharedMediaWidgets.OnItemValueChanged |
local widgetType = "LSM30_Border" |
local widgetVersion = 11 |
do |
local widgetType = "LSM30_Border_Item_Select" |
local widgetVersion = 1 |
local contentFrameCache = {} |
local function ReturnSelf(self) |
self:ClearAllPoints() |
self:Hide() |
self.check:Hide() |
table.insert(contentFrameCache, self) |
end |
local function Frame_OnEnter(this) |
local self = this.obj |
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 |
if self.useHighlight then |
self.highlight:Show() |
self.border:Show() |
end |
self:Fire("OnEnter") |
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 |
if self.specialOnEnter then |
self.specialOnEnter(self) |
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("TOPLEFT", check, "TOPRIGHT", 1, 0) |
text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -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 Frame_OnLeave(this) |
local self = this.obj |
self.border:Hide() |
self.highlight:Hide() |
self:Fire("OnLeave") |
local function OnAcquire(self) |
self:SetHeight(44) |
self:SetWidth(200) |
end |
if self.specialOnLeave then |
self.specialOnLeave(self) |
end |
end |
local function OnRelease(self) |
self:SetText("") |
self:SetLabel("") |
self:SetDisabled(false) |
local function SetText(self, text) |
if text and text ~= '' then |
local backdropTable = self.border:GetBackdrop() |
backdropTable.edgeFile = Media:Fetch('border',text) |
self.border:SetBackdrop(backdropTable) |
end |
self.text:SetText(text or "") |
end |
self.value = nil |
self.list = nil |
self.open = nil |
self.hasClose = nil |
local function Constructor() |
local self = AceGUI:Create("Dropdown-Item-Toggle") |
self.type = widgetType |
self.SetText = SetText |
local border = CreateFrame('Frame') |
border:SetFrameStrata("TOOLTIP") |
border:SetWidth(64) |
border:SetHeight(32) |
border:SetPoint("LEFT",self.frame,"RIGHT",5,0) |
border:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", |
tile = true, tileSize = 16, edgeSize = 16, |
insets = { left = 4, right = 4, top = 4, bottom = 4 }}) |
self.border = border |
border:Hide() |
self.frame:SetScript("OnEnter", Frame_OnEnter) |
self.frame:SetScript("OnLeave", Frame_OnLeave) |
return self |
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 |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
self.value = value |
end |
do |
local widgetType = "LSM30_Border" |
local widgetVersion = 3 |
local function GetValue(self) |
return self.value |
end |
local function Frame_OnEnter(this) |
local self = this.obj |
local text = self.text:GetText() |
if text ~= nil and text ~= '' then |
self.borderframe:Show() |
end |
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 Frame_OnLeave(this) |
local self = this.obj |
self.borderframe:Hide() |
end |
local function AddListItem(self, value, text) |
local item = AceGUI:Create("LSM30_Border_Item_Select") |
item:SetText(text) |
item.userdata.obj = self |
item.userdata.value = value |
item:SetCallback("OnValueChanged", OnItemValueChanged) |
self.pullout:AddItem(item) |
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) |
local function SetList(self, list) |
self.list = list or Media:HashTable("border") |
self.pullout:Clear() |
if self.multiselect then |
AddCloseButton() |
end |
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 sortlist = {} |
local function ParseListItems(self) |
for v in pairs(self.list) do |
sortlist[#sortlist + 1] = v |
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() |
local width = self.frame:GetWidth() |
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") |
self.dropdown:SetPoint("TOPRIGHT", self.frame, "BOTTOMRIGHT", width < 160 and (160 - width) or 0, 0) |
for k, v in pairs(self.list) do |
sortedlist[#sortedlist+1] = k |
end |
table.sort(sortlist) |
for i, value in pairs(sortlist) do |
AddListItem(self, value, value) |
sortlist[i] = nil |
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 SetText(self, text) |
if text and text ~= '' then |
local backdropTable = self.borderframe:GetBackdrop() |
backdropTable.edgeFile = Media:Fetch('border',text) |
self.borderframe:SetBackdrop(backdropTable) |
end |
self.text:SetText(text or "") |
local function ClearFocus(self) |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local function Constructor() |
local self = AceGUI:Create("Dropdown") |
self.type = widgetType |
self.SetList = SetList |
self.SetText = SetText |
self.SetValue = AceGUISharedMediaWidgets.SetValue |
local function OnHide(this) |
local self = this.obj |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local left = _G[self.dropdown:GetName() .. "Left"] |
local middle = _G[self.dropdown:GetName() .. "Middle"] |
local right = _G[self.dropdown:GetName() .. "Right"] |
local function Drop_OnEnter(this) |
this.obj:Fire("OnEnter") |
end |
local borderframe = CreateFrame('Frame') |
borderframe:SetFrameStrata("TOOLTIP") |
borderframe:SetWidth(64) |
borderframe:SetHeight(32) |
borderframe:SetPoint("LEFT",right,"RIGHT",-15,0) |
borderframe:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", |
tile = true, tileSize = 16, edgeSize = 16, |
insets = { left = 4, right = 4, top = 4, bottom = 4 }}) |
self.borderframe = borderframe |
borderframe:Hide() |
local function Drop_OnLeave(this) |
this.obj:Fire("OnLeave") |
end |
self.dropdown:EnableMouse(true) |
self.dropdown:SetScript("OnEnter", Frame_OnEnter) |
self.dropdown:SetScript("OnLeave", Frame_OnLeave) |
local function Constructor() |
local frame = AGSMW:GetBaseFrameWithWindow() |
local self = {} |
local clickscript = self.button:GetScript("OnClick") |
self.button:SetScript("OnClick", function(...) |
self.pullout:Clear() |
ParseListItems(self) |
clickscript(...) |
end) |
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) |
return self |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
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 |
<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="SharedFunctions.lua" /> |
<Script file="prototypes.lua" /> |
<Script file="FontWidget.lua" /> |
<Script file="SoundWidget.lua" /> |
<Script file="StatusbarWidget.lua" /> |
local AceGUI = LibStub("AceGUI-3.0") |
local Media = LibStub("LibSharedMedia-3.0") |
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") |
do |
local min, max, floor = math.min, math.max, math.floor |
local fixlevels = AceGUISharedMediaWidgets.fixlevels |
local OnItemValueChanged = AceGUISharedMediaWidgets.OnItemValueChanged |
local widgetType = "LSM30_Background" |
local widgetVersion = 11 |
do |
local widgetType = "LSM30_Background_Item_Select" |
local widgetVersion = 1 |
local contentFrameCache = {} |
local function ReturnSelf(self) |
self:ClearAllPoints() |
self:Hide() |
self.check:Hide() |
table.insert(contentFrameCache, self) |
end |
local function Frame_OnEnter(this) |
local self = this.obj |
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 |
if self.useHighlight then |
self.highlight:Show() |
self.texture:Show() |
end |
self:Fire("OnEnter") |
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 |
if self.specialOnEnter then |
self.specialOnEnter(self) |
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) |
frame:SetScript("OnEnter", ContentOnEnter) |
local function Frame_OnLeave(this) |
local self = this.obj |
self.texture:Hide() |
self.highlight:Hide() |
self:Fire("OnLeave") |
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 |
if self.specialOnLeave then |
self.specialOnLeave(self) |
end |
end |
local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite") |
local font, size = text:GetFont() |
text:SetFont(font,size,"OUTLINE") |
local function SetText(self, text) |
if text and text ~= '' then |
self.texture:SetTexture(Media:Fetch('background',text)) |
end |
self.text:SetText(text or "") |
end |
text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) |
text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) |
text:SetJustifyH("LEFT") |
text:SetText("Test Test Test Test Test Test Test") |
frame.text = text |
local function Constructor() |
local self = AceGUI:Create("Dropdown-Item-Toggle") |
self.type = widgetType |
self.SetText = SetText |
local textureframe = CreateFrame('Frame') |
textureframe:SetFrameStrata("TOOLTIP") |
textureframe:SetWidth(128) |
textureframe:SetHeight(128) |
textureframe:SetPoint("LEFT",self.frame,"RIGHT",5,0) |
self.textureframe = textureframe |
local texture = textureframe:CreateTexture(nil, "OVERLAY") |
texture:SetTexture(0,0,0,0) |
texture:SetAllPoints(textureframe) |
texture:Hide() |
self.texture = texture |
self.frame:SetScript("OnEnter", Frame_OnEnter) |
self.frame:SetScript("OnLeave", Frame_OnLeave) |
return self |
frame.ReturnSelf = ReturnSelf |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
frame:Show() |
return frame |
end |
do |
local widgetType = "LSM30_Background" |
local widgetVersion = 3 |
local function OnAcquire(self) |
self:SetHeight(44) |
self:SetWidth(200) |
end |
local function Frame_OnEnter(this) |
local self = this.obj |
local text = self.text:GetText() |
if text ~= nil and text ~= '' then |
self.textureframe:Show() |
end |
end |
local function OnRelease(self) |
self:SetText("") |
self:SetLabel("") |
self:SetDisabled(false) |
local function Frame_OnLeave(this) |
local self = this.obj |
self.textureframe:Hide() |
end |
self.value = nil |
self.list = nil |
self.open = nil |
self.hasClose = nil |
local function SetText(self, text) |
if text and text ~= '' then |
self.texture:SetTexture(Media:Fetch('background',text)) |
end |
self.text:SetText(text or "") |
end |
self.frame:ClearAllPoints() |
self.frame:Hide() |
end |
local function AddListItem(self, value, text) |
local item = AceGUI:Create("LSM30_Background_Item_Select") |
item:SetText(text) |
item.userdata.obj = self |
item.userdata.value = value |
item:SetCallback("OnValueChanged", OnItemValueChanged) |
self.pullout:AddItem(item) |
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 SetList(self, list) |
self.list = list or Media:HashTable("background") |
self.pullout:Clear() |
local function GetValue(self) |
return self.value |
end |
if self.multiselect then |
AddCloseButton() |
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 sortlist = {} |
local function ParseListItems(self) |
for v in pairs(self.list) do |
sortlist[#sortlist + 1] = v |
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() |
local width = self.frame:GetWidth() |
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") |
self.dropdown:SetPoint("TOPRIGHT", self.frame, "BOTTOMRIGHT", width < 160 and (160 - width) or 0, 0) |
for k, v in pairs(self.list) do |
sortedlist[#sortedlist+1] = k |
end |
table.sort(sortlist) |
for i, value in pairs(sortlist) do |
AddListItem(self, value, value) |
sortlist[i] = nil |
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 Constructor() |
local self = AceGUI:Create("Dropdown") |
self.type = widgetType |
self.SetText = SetText |
self.SetList = SetList |
self.SetValue = AceGUISharedMediaWidgets.SetValue |
local function ClearFocus(self) |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local left = _G[self.dropdown:GetName() .. "Left"] |
local middle = _G[self.dropdown:GetName() .. "Middle"] |
local right = _G[self.dropdown:GetName() .. "Right"] |
local function OnHide(this) |
local self = this.obj |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local textureframe = CreateFrame('Frame') |
textureframe:SetFrameStrata("TOOLTIP") |
textureframe:SetWidth(128) |
textureframe:SetHeight(128) |
textureframe:SetPoint("LEFT",right,"RIGHT",-15,0) |
self.textureframe = textureframe |
local texture = textureframe:CreateTexture(nil, "OVERLAY") |
texture:SetTexture(0,0,0,0) |
texture:SetAllPoints(textureframe) |
textureframe:Hide() |
self.texture = texture |
local function Drop_OnEnter(this) |
this.obj:Fire("OnEnter") |
end |
self.dropdown:EnableMouse(true) |
self.dropdown:SetScript("OnEnter", Frame_OnEnter) |
self.dropdown:SetScript("OnLeave", Frame_OnLeave) |
local function Drop_OnLeave(this) |
this.obj:Fire("OnLeave") |
end |
local clickscript = self.button:GetScript("OnClick") |
self.button:SetScript("OnClick", function(...) |
self.pullout:Clear() |
ParseListItems(self) |
clickscript(...) |
end) |
local function Constructor() |
local frame = AGSMW:GetBaseFrameWithWindow() |
local self = {} |
return self |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
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 |
local AceGUI = LibStub("AceGUI-3.0") |
local Media = LibStub("LibSharedMedia-3.0") |
local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") |
do |
local min, max, floor = math.min, math.max, math.floor |
local fixlevels = AceGUISharedMediaWidgets.fixlevels |
local OnItemValueChanged = AceGUISharedMediaWidgets.OnItemValueChanged |
local widgetType = "LSM30_Font" |
local widgetVersion = 11 |
do |
local widgetType = "LSM30_Font_Item_Select" |
local widgetVersion = 1 |
local contentFrameCache = {} |
local function ReturnSelf(self) |
self:ClearAllPoints() |
self:Hide() |
self.check:Hide() |
table.insert(contentFrameCache, self) |
end |
local function SetText(self, text) |
if text and text ~= '' then |
local _, size, outline= self.text:GetFont() |
self.text:SetFont(Media:Fetch('font',text),size,outline) |
end |
self.text:SetText(text or "") |
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 Constructor() |
local self = AceGUI:Create("Dropdown-Item-Toggle") |
self.type = widgetType |
self.SetText = SetText |
return self |
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("TOPLEFT", check, "TOPRIGHT", 1, 0) |
text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -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 |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
local function OnAcquire(self) |
self:SetHeight(44) |
self:SetWidth(200) |
end |
do |
local widgetType = "LSM30_Font" |
local widgetVersion = 3 |
local function OnRelease(self) |
self:SetText("") |
self:SetLabel("") |
self:SetDisabled(false) |
local function SetText(self, text) |
if text and text ~= '' then |
local _, size, outline= self.text:GetFont() |
self.text:SetFont(Media:Fetch('font',text),size,outline) |
end |
self.text:SetText(text or "") |
end |
self.value = nil |
self.list = nil |
self.open = nil |
self.hasClose = nil |
local function AddListItem(self, value, text) |
local item = AceGUI:Create("LSM30_Font_Item_Select") |
item:SetText(text) |
item.userdata.obj = self |
item.userdata.value = value |
item:SetCallback("OnValueChanged", OnItemValueChanged) |
self.pullout:AddItem(item) |
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 SetList(self, list) |
self.list = list or Media:HashTable("font") |
self.pullout:Clear() |
if self.multiselect then |
AddCloseButton() |
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 sortlist = {} |
local function ParseListItems(self) |
for v in pairs(self.list) do |
sortlist[#sortlist + 1] = v |
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() |
local width = self.frame:GetWidth() |
self.dropdown:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT") |
self.dropdown:SetPoint("TOPRIGHT", self.frame, "BOTTOMRIGHT", width < 160 and (160 - width) or 0, 0) |
for k, v in pairs(self.list) do |
sortedlist[#sortedlist+1] = k |
end |
table.sort(sortlist) |
for i, value in pairs(sortlist) do |
AddListItem(self, value, value) |
sortlist[i] = nil |
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 Constructor() |
local self = AceGUI:Create("Dropdown") |
self.type = widgetType |
self.SetText = SetText |
self.SetValue = AceGUISharedMediaWidgets.SetValue |
self.SetList = SetList |
local function ClearFocus(self) |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
local clickscript = self.button:GetScript("OnClick") |
self.button:SetScript("OnClick", function(...) |
self.pullout:Clear() |
ParseListItems(self) |
clickscript(...) |
end) |
return self |
local function OnHide(this) |
local self = this.obj |
if self.dropdown then |
self.dropdown = AGSMW:ReturnDropDownFrame(self.dropdown) |
end |
end |
AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) |
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 |
--[[ $Id: CallbackHandler-1.0.lua 965 2010-08-09 00:47:52Z mikk $ ]] |
--[[ $Id: CallbackHandler-1.0.lua 1131 2015-06-04 07:29:24Z nevcairiel $ ]] |
local MAJOR, MINOR = "CallbackHandler-1.0", 6 |
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) |
-- UnregisterName - name of the callback unregistration API, default "UnregisterCallback" |
-- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API. |
function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused) |
-- TODO: Remove this after beta has gone out |
assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused") |
function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName) |
RegisterName = RegisterName or "RegisterCallback" |
UnregisterName = UnregisterName or "UnregisterCallback" |
ScrollFrame Container |
Plain container that scrolls its content and doesn't grow in height. |
-------------------------------------------------------------------------------]] |
local Type, Version = "ScrollFrame", 23 |
local Type, Version = "ScrollFrame", 24 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local pairs, assert, type = pairs, assert, type |
local min, max, floor, abs = math.min, math.max, math.floor, math.abs |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetTexture(0, 0, 0, 0.4) |
if IsLegion then |
scrollbg:SetColorTexture(0, 0, 0, 0.4) |
else |
scrollbg:SetTexture(0, 0, 0, 0.4) |
end |
--Container Support |
local content = CreateFrame("Frame", nil, scrollframe) |
TreeGroup Container |
Container that uses a tree control to switch between groups. |
-------------------------------------------------------------------------------]] |
local Type, Version = "TreeGroup", 36 |
local Type, Version = "TreeGroup", 40 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type |
local math_min, math_max, floor = math.min, math.max, floor |
if self.enabletooltips then |
GameTooltip:SetOwner(frame, "ANCHOR_NONE") |
GameTooltip:SetPoint("LEFT",frame,"RIGHT") |
GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1) |
GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) |
GameTooltip:Show() |
end |
["OnAcquire"] = function(self) |
self:SetTreeWidth(DEFAULT_TREE_WIDTH, DEFAULT_TREE_SIZABLE) |
self:EnableButtonTooltips(true) |
self.frame:SetScript("OnUpdate", FirstFrameUpdate) |
end, |
["OnRelease"] = function(self) |
button.toggle.button = button |
button.toggle:SetScript("OnClick",Expand_OnClick) |
button.text:SetHeight(14) -- Prevents text wrapping |
return button |
end, |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetTexture(0,0,0,0.4) |
if IsLegion then |
scrollbg:SetColorTexture(0,0,0,0.4) |
else |
scrollbg:SetTexture(0,0,0,0.4) |
end |
local border = CreateFrame("Frame",nil,frame) |
border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") |
border:SetPoint("BOTTOMRIGHT") |
local _G = _G |
local PlaySound, CreateFrame, UIParent = PlaySound, CreateFrame, UIParent |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Scripts |
-------------------------------------------------------------------------------]] |
-------------------------------------------------------------------------------]] |
local function Constructor() |
local name = "AceGUI30Button" .. AceGUI:GetNextWidgetNum(Type) |
local frame = CreateFrame("Button", name, UIParent, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local frame = CreateFrame("Button", name, UIParent, "UIPanelButtonTemplate") |
frame:Hide() |
frame:EnableMouse(true) |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 996 2010-12-01 18:34:17Z nevcairiel $ ]]-- |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 1137 2016-05-15 10:57:36Z nevcairiel $ ]]-- |
local AceGUI = LibStub("AceGUI-3.0") |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local select, assert = select, assert |
-- A single line to separate items |
do |
local widgetType = "Dropdown-Item-Separator" |
local widgetVersion = 1 |
local widgetVersion = 2 |
-- exported, override |
local function SetDisabled(self, disabled) |
local line = self.frame:CreateTexture(nil, "OVERLAY") |
line:SetHeight(1) |
line:SetTexture(.5, .5, .5) |
if IsLegion then |
line:SetColorTexture(.5, .5, .5) |
else |
line:SetTexture(.5, .5, .5) |
end |
line:SetPoint("LEFT", self.frame, "LEFT", 10, 0) |
line:SetPoint("RIGHT", self.frame, "RIGHT", -10, 0) |
--[[----------------------------------------------------------------------------- |
ColorPicker Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "ColorPicker", 22 |
local Type, Version = "ColorPicker", 23 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local pairs = pairs |
local texture = frame:CreateTexture(nil, "BACKGROUND") |
texture:SetWidth(16) |
texture:SetHeight(16) |
texture:SetTexture(1, 1, 1) |
if IsLegion then |
texture:SetColorTexture(1, 1, 1) |
else |
texture:SetTexture(1, 1, 1) |
end |
texture:SetPoint("CENTER", colorSwatch) |
texture:Show() |
local Type, Version = "MultiLineEditBox", 27 |
local Type, Version = "MultiLineEditBox", 28 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-- List them here for Mikk's FindGlobals script |
-- GLOBALS: ACCEPT, ChatFontNormal |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Support functions |
-------------------------------------------------------------------------------]] |
self.frame:SetScript("OnShow", OnShowFocus) |
end |
end, |
["HighlightText"] = function(self, from, to) |
self.editBox:HighlightText(from, to) |
end, |
["GetCursorPosition"] = function(self) |
return self.editBox:GetCursorPosition() |
end, |
label:SetText(ACCEPT) |
label:SetHeight(10) |
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, "UIPanelButtonTemplate") |
button:SetPoint("BOTTOMLEFT", 0, 4) |
button:SetHeight(22) |
button:SetWidth(label:GetStringWidth() + 24) |
Keybinding Widget |
Set Keybindings in the Config UI. |
-------------------------------------------------------------------------------]] |
local Type, Version = "Keybinding", 24 |
local Type, Version = "Keybinding", 25 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-- List them here for Mikk's FindGlobals script |
-- GLOBALS: NOT_BOUND |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Scripts |
-------------------------------------------------------------------------------]] |
local self = frame.obj |
if self.waitingForKey then |
frame:EnableKeyboard(false) |
frame:EnableMouseWheel(false) |
self.msgframe:Hide() |
frame:UnlockHighlight() |
self.waitingForKey = nil |
else |
frame:EnableKeyboard(true) |
frame:EnableMouseWheel(true) |
self.msgframe:Show() |
frame:LockHighlight() |
self.waitingForKey = true |
end |
frame:EnableKeyboard(false) |
frame:EnableMouseWheel(false) |
self.msgframe:Hide() |
frame:UnlockHighlight() |
self.waitingForKey = nil |
Keybinding_OnKeyDown(frame, button) |
end |
local function Keybinding_OnMouseWheel(frame, direction) |
local button |
if direction >= 0 then |
button = "MOUSEWHEELUP" |
else |
button = "MOUSEWHEELDOWN" |
end |
Keybinding_OnKeyDown(frame, button) |
end |
--[[----------------------------------------------------------------------------- |
Methods |
-------------------------------------------------------------------------------]] |
self.msgframe:Hide() |
self:SetDisabled(false) |
self.button:EnableKeyboard(false) |
self.button:EnableMouseWheel(false) |
end, |
-- ["OnRelease"] = nil, |
local name = "AceGUI30KeybindingButton" .. AceGUI:GetNextWidgetNum(Type) |
local frame = CreateFrame("Frame", nil, UIParent) |
local button = CreateFrame("Button", name, frame, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local button = CreateFrame("Button", name, frame, "UIPanelButtonTemplate") |
button:EnableMouse(true) |
button:EnableMouseWheel(false) |
button:RegisterForClicks("AnyDown") |
button:SetScript("OnEnter", Control_OnEnter) |
button:SetScript("OnLeave", Control_OnLeave) |
button:SetScript("OnClick", Keybinding_OnClick) |
button:SetScript("OnKeyDown", Keybinding_OnKeyDown) |
button:SetScript("OnMouseDown", Keybinding_OnMouseDown) |
button:SetScript("OnMouseWheel", Keybinding_OnMouseWheel) |
button:SetPoint("BOTTOMLEFT") |
button:SetPoint("BOTTOMRIGHT") |
button:SetHeight(24) |
local select, pairs, print = select, pairs, print |
-- WoW APIs |
local CreateFrame, UIParent, GetBuildInfo = CreateFrame, UIParent, GetBuildInfo |
local CreateFrame, UIParent = CreateFrame, UIParent |
--[[----------------------------------------------------------------------------- |
Scripts |
for method, func in pairs(methods) do |
widget[method] = func |
end |
-- SetText is deprecated, but keep it around for a while. (say, to WoW 4.0) |
if (select(4, GetBuildInfo()) < 40000) then |
widget.SetText = widget.SetLabel |
else |
widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end |
end |
widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end |
return AceGUI:RegisterAsWidget(widget) |
end |
--[[----------------------------------------------------------------------------- |
EditBox Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "EditBox", 25 |
local Type, Version = "EditBox", 26 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
if not self.frame:IsShown() then |
self.frame:SetScript("OnShow", Frame_OnShowFocus) |
end |
end, |
["HighlightText"] = function(self, from, to) |
self.editbox:HighlightText(from, to) |
end |
} |
-- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". |
-- @class file |
-- @name AceConfigRegistry-3.0 |
-- @release $Id: AceConfigRegistry-3.0.lua 1105 2013-12-08 22:11:58Z nevcairiel $ |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 15 |
-- @release $Id: AceConfigRegistry-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 16 |
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigRegistry then return end |
local ismethodtable={["table"]=true,["string"]=true,["function"]=true, _="methodname, funcref or table"} |
local optstring={["nil"]=true,["string"]=true, _="string"} |
local optstringfunc={["nil"]=true,["string"]=true,["function"]=true, _="string or funcref"} |
local optstringnumberfunc={["nil"]=true,["string"]=true,["number"]=true,["function"]=true, _="string, number or funcref"} |
local optnumber={["nil"]=true,["number"]=true, _="number"} |
local optmethod={["nil"]=true,["string"]=true,["function"]=true, _="methodname or funcref"} |
local optmethodfalse={["nil"]=true,["string"]=true,["function"]=true,["boolean"]={[false]=true}, _="methodname, funcref or false"} |
dialogHidden=optmethodbool, |
dropdownHidden=optmethodbool, |
cmdHidden=optmethodbool, |
icon=optstringfunc, |
icon=optstringnumberfunc, |
iconCoords=optmethodtable, |
handler=opttable, |
get=optmethodfalse, |
local typedkeys={ |
header={}, |
description={ |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
imageHeight=optnumber, |
imageWidth=optnumber, |
childGroups=optstring, |
}, |
execute={ |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
imageHeight=optnumber, |
imageWidth=optnumber, |
}, |
toggle={ |
tristate=optbool, |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
}, |
tristate={ |
--- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. |
-- @class file |
-- @name AceConfigDialog-3.0 |
-- @release $Id: AceConfigDialog-3.0.lua 1113 2014-09-11 20:18:16Z nevcairiel $ |
-- @release $Id: AceConfigDialog-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
local LibStub = LibStub |
local MAJOR, MINOR = "AceConfigDialog-3.0", 59 |
local MAJOR, MINOR = "AceConfigDialog-3.0", 61 |
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigDialog then return end |
if descStyle and descStyle ~= "tooltip" then return end |
GameTooltip:SetText(name, 1, .82, 0, 1) |
GameTooltip:SetText(name, 1, .82, 0, true) |
if opt.type == "multiselect" then |
GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1) |
GameTooltip:AddLine(user.text, 0.5, 0.5, 0.8, true) |
end |
if type(desc) == "string" then |
GameTooltip:AddLine(desc, 1, 1, 1, 1) |
GameTooltip:AddLine(desc, 1, 1, 1, true) |
end |
if type(usage) == "string" then |
GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1) |
GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, true) |
end |
GameTooltip:Show() |
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) |
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
control = gui:Create("Icon") |
if not width then |
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) |
local image = GetOptionsMemberValue("image", v, options, path, appName) |
local imageCoords = GetOptionsMemberValue("imageCoords", v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
if type(imageCoords) == "table" then |
control:SetImage(image, unpack(imageCoords)) |
else |
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) |
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
if not width then |
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) |
end |
GameTooltip:SetPoint("LEFT",button,"RIGHT") |
end |
GameTooltip:SetText(name, 1, .82, 0, 1) |
GameTooltip:SetText(name, 1, .82, 0, true) |
if type(desc) == "string" then |
GameTooltip:AddLine(desc, 1, 1, 1, 1) |
GameTooltip:AddLine(desc, 1, 1, 1, true) |
end |
GameTooltip:Show() |