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.

43 lines
1.2 KiB

--[[
ScriptEditor.lua
@Author : DengSir (tdaddon@163.com)
@Link : https://dengsir.github.io
]]
local ns = select(2, ...)
local Addon = ns.Addon
local UI = ns.UI
local GUI = LibStub('tdGUI-1.0')
local ScriptEditor = Addon:NewClass('ScriptEditor', GUI:GetClass('EditBox'))
function ScriptEditor:Constructor()
self:SetCallback('OnCursorChanged', self.OnCursorChanged)
self.AutoCompleteBox = Addon:GetClass('AutoCompleteBox'):New(UIParent)
end
function ScriptEditor:OnCursorChanged(x, y, w, h)
self.cursorX = x + 10
self.cursorY = y - 10 + self.ScrollFrame:GetVerticalScroll()
end
function ScriptEditor:OnTextChanged(userInput)
if not userInput or self:IsInIMECompositionMode() or not C_PetBattles.IsInBattle() then
return
end
local pos = self:GetCursorPosition()
local line = self:GetText():sub(1, pos):match('([^\r\n]+)$')
if not line then
return
end
local list, column = ns.Snippets:Check(line)
if not list then
self.AutoCompleteBox:Hide()
else
self.AutoCompleteBox:ClearAllPoints()
self.AutoCompleteBox:SetPoint('TOPLEFT', self, 'TOPLEFT', self.cursorX, self.cursorY)
self.AutoCompleteBox:Open(self, list, column)
end
end