69 lignes
1,6 Kio
Lua
69 lignes
1,6 Kio
Lua
|
--[[
|
||
|
Author: Alternator (Massiner of Nathrezim)
|
||
|
Copyright 2010
|
||
|
|
||
|
Notes:
|
||
|
]]
|
||
|
|
||
|
BFUILib = BFUILib or nil; local UILib = BFUILib;
|
||
|
|
||
|
|
||
|
|
||
|
--[[
|
||
|
Input Box element to allow getting user input
|
||
|
--]]
|
||
|
local InputBox = CreateFrame("EDITBOX", "BFInputLine", BFConfigureLayer, "InputBoxTemplate");
|
||
|
InputBox:SetFrameStrata("FULLSCREEN_DIALOG");
|
||
|
InputBox:Hide();
|
||
|
|
||
|
function UILib.InputBox(Ref, AcceptFunc, CancelFunc, Text, Width, Point)
|
||
|
|
||
|
if (Ref == nil or (InputBox.AcceptFunc == AcceptFunc and InputBox.CancelFunc == CancelFunc and InputBox.Ref == Ref)) then
|
||
|
--It would appear that the same caller is requesting an inputbox, treat this as a cancel toggle
|
||
|
InputBox:Cancel();
|
||
|
return;
|
||
|
end
|
||
|
|
||
|
InputBox:Cancel(); --Trigger a cancel in the case that we are already editing something else
|
||
|
|
||
|
InputBox.Ref = Ref;
|
||
|
InputBox.AcceptFunc = AcceptFunc;
|
||
|
InputBox.CancelFunc = CancelFunc;
|
||
|
InputBox:SetSize(Width, 20); --Height can't be set, although we need to set height to init it
|
||
|
InputBox:ClearAllPoints();
|
||
|
InputBox:SetPoint(unpack(Point));
|
||
|
InputBox:SetText(Text or "");
|
||
|
|
||
|
InputBox:Show();
|
||
|
end
|
||
|
|
||
|
|
||
|
function InputBox:Accept()
|
||
|
if (self.AcceptFunc) then
|
||
|
self.AcceptFunc(self.Ref, self:GetText());
|
||
|
end
|
||
|
|
||
|
self.Ref = nil;
|
||
|
self.AcceptFunc = nil;
|
||
|
self.CancelFunc = nil;
|
||
|
self:SetText("");
|
||
|
|
||
|
self:Hide();
|
||
|
end
|
||
|
|
||
|
|
||
|
function InputBox:Cancel()
|
||
|
if (self.CancelFunc) then
|
||
|
self.CancelFunc(self.Ref, self:GetText());
|
||
|
end
|
||
|
|
||
|
self.Ref = nil;
|
||
|
self.AcceptFunc = nil;
|
||
|
self.CancelFunc = nil;
|
||
|
self:SetText("");
|
||
|
|
||
|
self:Hide();
|
||
|
end
|
||
|
InputBox:SetScript("OnEscapePressed", InputBox.Cancel);
|
||
|
InputBox:SetScript("OnEnterPressed", InputBox.Accept);
|