Apply Patch
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
PTBindingScriptEditor = PTGuiComponent:Extend("puppeteer_binding_script_editor")
|
||||
local colorize = PTUtil.Colorize
|
||||
|
||||
function PTBindingScriptEditor:New()
|
||||
local obj = setmetatable({}, self)
|
||||
local frame = CreateFrame("Frame", self:GenerateName())
|
||||
obj:SetHandle(frame)
|
||||
obj:SetSimpleBackground(PTGuiComponent.BACKGROUND_DIALOG)
|
||||
local title = PTGuiLib.Get("title", frame)
|
||||
:SetSize(192, 36)
|
||||
:SetPoint("CENTER", frame, "TOP")
|
||||
:SetText("Edit Binding Script")
|
||||
obj:AddComponent("Title", title)
|
||||
local editbox = PTGuiLib.Get("multi_line_editbox", frame)
|
||||
:SetPoint("TOPLEFT", frame, "TOPLEFT", 5, -155)
|
||||
:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -5, 30)
|
||||
:SetScript("OnTabPressed", function(self)
|
||||
self:GetHandle():Insert(" ")
|
||||
end)
|
||||
editbox:GetScrollFrame():SetSimpleBackground()
|
||||
obj:AddComponent("Editbox", editbox)
|
||||
|
||||
local margin = 130
|
||||
local yPos = -30
|
||||
|
||||
local customTextTooltip = "The text shown in the spells tooltip for this binding"
|
||||
local name = PTGuiLib.GetText(frame, "Custom Tooltip Text")
|
||||
:SetPoint("RIGHT", frame, "TOPLEFT", margin, yPos)
|
||||
:ApplyTooltip(customTextTooltip)
|
||||
local nameEditbox = PTGuiLib.Get("editbox", frame)
|
||||
:SetPoint("LEFT", name, "RIGHT", 5, 0)
|
||||
:SetSize(150, 20)
|
||||
:ApplyTooltip(customTextTooltip)
|
||||
:SetScript("OnTextChanged", function(self)
|
||||
if not obj.Binding then
|
||||
return
|
||||
end
|
||||
obj.Binding.Tooltip.Data = self:GetText() ~= "" and self:GetText() or nil
|
||||
obj.Binding.Tooltip.Type = obj.Binding.Tooltip.Data and "CUSTOM" or "DEFAULT"
|
||||
end)
|
||||
obj:AddComponent("TooltipTextEditbox", nameEditbox)
|
||||
|
||||
yPos = yPos - 30
|
||||
|
||||
local textColorTooltip = "Use a custom color for this binding in the tooltip"
|
||||
local tooltipColorLabel = PTGuiLib.GetText(frame, "Custom Text Color")
|
||||
:SetPoint("RIGHT", frame, "TOPLEFT", margin, yPos)
|
||||
:ApplyTooltip(textColorTooltip)
|
||||
local tooltipColorCheckbox = PTGuiLib.Get("checkbox", frame)
|
||||
:SetPoint("LEFT", tooltipColorLabel, "RIGHT", 5, 0)
|
||||
:SetSize(20, 20)
|
||||
:ApplyTooltip(textColorTooltip)
|
||||
:OnClick(function(self)
|
||||
if self:GetChecked() then
|
||||
local color = Puppeteer.BindTypeTooltipColors[obj.Binding.Type]
|
||||
obj:GetTooltipColorSelect():SetColorRGB(color[1], color[2], color[3])
|
||||
obj.Binding.Tooltip.TextColor = {color[1], color[2], color[3]}
|
||||
else
|
||||
obj.Binding.Tooltip.TextColor = nil
|
||||
end
|
||||
obj:UpdateTooltipTextColor()
|
||||
end)
|
||||
obj:AddComponent("TooltipColorCheckbox", tooltipColorCheckbox)
|
||||
|
||||
local colorSelect = PTGuiLib.Get("color_select", frame)
|
||||
:SetPoint("LEFT", tooltipColorCheckbox, "RIGHT", 5, 0)
|
||||
:SetSize(30, 20)
|
||||
:SetColorSelectHandler(function(colorSelect)
|
||||
local r, g, b = colorSelect:GetColorRGB()
|
||||
obj.Binding.Tooltip.TextColor = {r, g, b}
|
||||
end)
|
||||
obj:AddComponent("TooltipColorSelect", colorSelect)
|
||||
|
||||
yPos = yPos - 25
|
||||
|
||||
local predefined = PTGuiLib.GetText(frame, "Predefined local variables (hover for more info):")
|
||||
:SetPoint("TOPLEFT", frame, "TOPLEFT", 5, yPos)
|
||||
:SetJustifyH("LEFT")
|
||||
|
||||
local local1 = PTGuiLib.GetText(frame, "local unit")
|
||||
:SetTextColor(0.4, 1, 0.4)
|
||||
:SetPoint("TOPLEFT", predefined, "BOTTOMLEFT", 0, 0)
|
||||
:SetJustifyH("LEFT")
|
||||
:ApplyTooltip("The unit being clicked", "This will be resolved to a GUID if clicking on a focus")
|
||||
local local2 = PTGuiLib.GetText(frame, "local unresolvedUnit")
|
||||
:SetTextColor(0.4, 1, 0.4)
|
||||
:SetPoint("TOPLEFT", local1, "BOTTOMLEFT")
|
||||
:SetJustifyH("LEFT")
|
||||
:ApplyTooltip("The unresolved unit being clicked",
|
||||
"If a focus is being clicked, this will be a phony", "unit, such as 'focus1'")
|
||||
local local3 = PTGuiLib.GetText(frame, "local unitData")
|
||||
:SetTextColor(0.4, 1, 0.4)
|
||||
:SetPoint("TOPLEFT", local2, "BOTTOMLEFT")
|
||||
:SetJustifyH("LEFT")
|
||||
:ApplyTooltip("Cache stored by Puppeteer about the unit",
|
||||
"Some useful APIs:",
|
||||
"unitData:HasBuff(buffName) -- Returns true if the unit has buffName",
|
||||
"unitData:HasDebuff(debuffName) -- Returns true if the unit has debuffName",
|
||||
"unitData:HasDebuffType(typeName) -- Returns true if the unit has the debuff type(such as \"Magic\")",
|
||||
"unitData:GetAuraTimeRemaining(auraName) -- Returns the time remaining on an aura, or nil if unknown(SuperWoW required)")
|
||||
local local4 = PTGuiLib.GetText(frame, "local unitFrame")
|
||||
:SetTextColor(0.4, 1, 0.4)
|
||||
:SetPoint("TOPLEFT", local3, "BOTTOMLEFT")
|
||||
:SetJustifyH("LEFT")
|
||||
:ApplyTooltip("The PTUnitFrame instance that was clicked")
|
||||
|
||||
local saveButton = PTGuiLib.Get("button", frame)
|
||||
:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -5, 5)
|
||||
:SetSize(150, 20)
|
||||
:SetText("Save")
|
||||
:OnClick(function()
|
||||
obj.Callback(true, editbox:GetText(), nameEditbox:GetText())
|
||||
end, true)
|
||||
local cancelButton = PTGuiLib.Get("button", frame)
|
||||
:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", 5, 5)
|
||||
:SetSize(150, 20)
|
||||
:SetText("Cancel")
|
||||
:OnClick(function()
|
||||
obj.Callback(false)
|
||||
end, true)
|
||||
return obj
|
||||
end
|
||||
|
||||
function PTBindingScriptEditor:OnAcquire()
|
||||
self.super.OnAcquire(self)
|
||||
self:GetEditbox():SetText("")
|
||||
self:GetEditbox():GetScrollFrame():FixNextUpdate()
|
||||
self:SetSize(375, 400)
|
||||
end
|
||||
|
||||
function PTBindingScriptEditor:OnDispose()
|
||||
self.super.OnDispose(self)
|
||||
end
|
||||
|
||||
PTBindingScriptEditor:CreateGetter("Editbox")
|
||||
PTBindingScriptEditor:CreateGetter("TooltipTextEditbox")
|
||||
PTBindingScriptEditor:CreateGetter("TooltipColorCheckbox")
|
||||
PTBindingScriptEditor:CreateGetter("TooltipColorSelect")
|
||||
|
||||
PTBindingScriptEditor.UpdateTooltipTextColor = PTGuiUtil.CreateColorUpdater(
|
||||
PTBindingScriptEditor.GetTooltipColorCheckbox,
|
||||
PTBindingScriptEditor.GetTooltipColorSelect,
|
||||
function(self) return self.Binding and self.Binding.Tooltip.TextColor end)
|
||||
|
||||
function PTBindingScriptEditor:SetCallback(func)
|
||||
self.Callback = func
|
||||
return self
|
||||
end
|
||||
|
||||
function PTBindingScriptEditor:SetBinding(binding)
|
||||
self.Binding = binding
|
||||
if not binding.Tooltip then
|
||||
binding.Tooltip = {}
|
||||
end
|
||||
self:GetEditbox():SetText(binding.Data or "")
|
||||
self:UpdateTooltipTextColor()
|
||||
self:GetTooltipTextEditbox():SetText(binding.Tooltip.Type == "CUSTOM" and binding.Tooltip.Data or "")
|
||||
return self
|
||||
end
|
||||
|
||||
PTGuiLib.RegisterComponent(PTBindingScriptEditor)
|
||||
Reference in New Issue
Block a user