Initial commit
This commit is contained in:
Executable
+312
@@ -0,0 +1,312 @@
|
||||
--[[
|
||||
Name: Prat_Editbox
|
||||
Revision: $Revision: 16019 $
|
||||
Author(s): Curney (asml8ed@gmail.com)
|
||||
Krtek (krtek4@gmail.com)
|
||||
Inspired by: idChat2_Editbox by Industrial
|
||||
Website: http://www.wowace.com/files/index.php?path=Prat/
|
||||
Documentation: http://www.wowace.com/wiki/Prat/Integrated_Modules#Editbox
|
||||
SVN: http://svn.wowace.com/wowace/trunk/Prat/
|
||||
Description: Module for Prat that adds editbox options.
|
||||
Dependencies: Prat
|
||||
]]
|
||||
|
||||
local L = AceLibrary("AceLocale-2.2"):new("PratEditbox")
|
||||
|
||||
L:RegisterTranslations("enUS", function() return {
|
||||
["Editbox"] = true,
|
||||
["Editbox options."] = true,
|
||||
["Alpha"] = true,
|
||||
["Set the alpha of the editbox."] = true,
|
||||
["Position"] = true,
|
||||
["Set position of editbox."] = true,
|
||||
["Width"] = true,
|
||||
["Set the width of the editbox."] = true,
|
||||
["Locked"] = true,
|
||||
["Lock editbox position is undocked."] = true,
|
||||
["Arrowkeys"] = true,
|
||||
["Toggle using arrowkeys in editbox without the alt key."] = true,
|
||||
["Sticky"] = true,
|
||||
["Toggle text clearing when editbox is closed."] = true,
|
||||
["Toggle"] = true,
|
||||
["Toggle the module on and off."] = true,
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("ruRU", function() return {
|
||||
["Editbox"] = "Editbox",
|
||||
["Editbox options."] = "Настройки поля ввода.",
|
||||
["Alpha"] = "Альфа",
|
||||
["Set the alpha of the editbox."] = "Установить альфа в поле ввода.",
|
||||
["Position"] = "Позиция",
|
||||
["Set position of editbox."] = "Установить положение поля ввода.",
|
||||
["Width"] = "Ширина",
|
||||
["Set the width of the editbox."] = "Установить ширину поля ввода.",
|
||||
["Locked"] = "Заблокировать",
|
||||
["Lock editbox position is undocked."] = "Поле ввода будет отстыковано.",
|
||||
["Arrowkeys"] = "Стрелки",
|
||||
["Toggle using arrowkeys in editbox without the alt key."] = "Переключение поля ввода с помощью стрелок, без кнопки alt.",
|
||||
["Sticky"] = "Липкий",
|
||||
["Toggle text clearing when editbox is closed."] = "Вкл/Выкл очистку текста когда поле ввода закрыто.",
|
||||
["Toggle"] = "Вкл/Выкл",
|
||||
["Toggle the module on and off."] = "Вкл/Выкл модуль",
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("zhCN", function() return {
|
||||
["Editbox"] = "输入框",
|
||||
["Editbox options."] = "输入框选项。",
|
||||
["Alpha"] = "透明度",
|
||||
["Set the alpha of the editbox."] = "设置输入框透明度。",
|
||||
["Position"] = "位置",
|
||||
["Set position of editbox."] = "设置输入框位置。",
|
||||
["Width"] = "宽度",
|
||||
["Set the width of the editbox."] = "设置输入框宽度。",
|
||||
["Locked"] = "锁定",
|
||||
["Lock editbox position is undocked."] = "锁定输入框位置。",
|
||||
["Arrowkeys"] = "方向键",
|
||||
["Toggle using arrowkeys in editbox without the alt key."] = "激活输入框使用方向键不带Alt键功能。",
|
||||
["Sticky"] = "粘滞",
|
||||
["Toggle text clearing when editbox is closed."] = "激活当聊天框关闭时清除文本。",
|
||||
["Toggle"] = "切换",
|
||||
["Toggle the module on and off."] = "切换此模块的打开与关闭",
|
||||
} end)
|
||||
|
||||
L:RegisterTranslations("koKR", function() return {
|
||||
["Editbox"] = "입력창",
|
||||
["Editbox options."] = "입력창 설정입니다.",
|
||||
["Alpha"] = "투명도",
|
||||
["Set the alpha of the editbox."] = "입력창의 투명도를 설정합니다.",
|
||||
["Position"] = "위치",
|
||||
["Set position of editbox."] = "입력창의 위치를 설정합니다.",
|
||||
["Width"] = "넓이",
|
||||
["Set the width of the editbox."] = "입력창의 넓이를 설정합니다.",
|
||||
["Locked"] = "고정",
|
||||
["Lock editbox position is undocked."] = "입력창 위치를 고정시킵니다.",
|
||||
["Arrowkeys"] = "방향키",
|
||||
["Toggle using arrowkeys in editbox without the alt key."] = " ALT키를 누르지 않고 입력창에 방향키 사용을 전환합니다.",
|
||||
["Sticky"] = "고정",
|
||||
["Toggle text clearing when editbox is closed."] = "입력창을 닫았을 때 텍스트 초기화를 전환합니다.",
|
||||
["Toggle"] = "전환",
|
||||
["Toggle the module on and off."] = "모듈 켜고 끄기를 전환합니다.",
|
||||
} end)
|
||||
|
||||
Prat_Editbox = Prat:NewModule("editbox")
|
||||
|
||||
function Prat_Editbox:OnInitialize()
|
||||
self.db = Prat:AcquireDBNamespace("Editbox")
|
||||
Prat:RegisterDefaults("Editbox", "profile", {
|
||||
on = true,
|
||||
alpha = 1,
|
||||
position = "TOP",
|
||||
width = 400,
|
||||
undocked = {point = "CENTER", relativeTo="UIParent", relativePoint = "CENTER", xoff = 0, yoff = 0},
|
||||
locked = false,
|
||||
sticky = false,
|
||||
arrowkeys = true
|
||||
})
|
||||
Prat.Options.args.editbox = {
|
||||
name = L["Editbox"],
|
||||
desc = L["Editbox options."],
|
||||
type = "group",
|
||||
args = {
|
||||
alpha = {
|
||||
name = L["Alpha"],
|
||||
desc = L["Set the alpha of the editbox."],
|
||||
type = "range",
|
||||
get = function() return self.db.profile.alpha end,
|
||||
set = function(v)
|
||||
self.db.profile.alpha = v
|
||||
self:Alpha(v)
|
||||
end,
|
||||
min = 0,
|
||||
max = 1,
|
||||
step = 0.05,
|
||||
order = 195
|
||||
},
|
||||
position = {
|
||||
name = L["Position"],
|
||||
desc = L["Set position of editbox."],
|
||||
type = "text",
|
||||
get = function() return self.db.profile.position end,
|
||||
set = function(v)
|
||||
self.db.profile.position = v
|
||||
self:Position(v)
|
||||
end,
|
||||
validate = {["TOP"] = "Top", ["BOTTOM"] = "Bottom", ["UNDOCKED"] = "Undocked"},
|
||||
order = 196
|
||||
},
|
||||
width = {
|
||||
name = L["Width"],
|
||||
desc = L["Set the width of the editbox."],
|
||||
type = "range",
|
||||
get = function() return self.db.profile.width end,
|
||||
set = function(v)
|
||||
self.db.profile.width = v
|
||||
self:Position(self.db.profile.position)
|
||||
end,
|
||||
min = 267,
|
||||
max = 800,
|
||||
step = 1,
|
||||
disabled = function() if self.db.profile.position == "UNDOCKED" then return false else return true end end,
|
||||
order = 197
|
||||
},
|
||||
locked = {
|
||||
name = L["Locked"],
|
||||
desc = L["Lock editbox position is undocked."],
|
||||
type = "toggle",
|
||||
get = function() return self.db.profile.locked end,
|
||||
set = function(v)
|
||||
self.db.profile.locked = v
|
||||
self:Position(self.db.profile.position)
|
||||
end,
|
||||
disabled = function() if self.db.profile.position == "UNDOCKED" then return false else return true end end,
|
||||
order = 198
|
||||
},
|
||||
arrowkeys = {
|
||||
name = L["Arrowkeys"],
|
||||
desc = L["Toggle using arrowkeys in editbox without the alt key."],
|
||||
type = "toggle",
|
||||
get = function() return self.db.profile.arrowkeys end,
|
||||
set = function(v)
|
||||
self.db.profile.arrowkeys = v
|
||||
self:ArrowKeys(v)
|
||||
end,
|
||||
order = 199
|
||||
},
|
||||
sticky = {
|
||||
name = L["Sticky"],
|
||||
desc = L["Toggle text clearing when editbox is closed."],
|
||||
type = "toggle",
|
||||
get = function() return self.db.profile.sticky end,
|
||||
set = function(v)
|
||||
self.db.profile.sticky = v
|
||||
self:Sticky(v)
|
||||
end,
|
||||
order = 200
|
||||
},
|
||||
toggle = {
|
||||
name = L["Toggle"],
|
||||
desc = L["Toggle the module on and off."],
|
||||
type = "toggle",
|
||||
get = function() return self.db.profile.on end,
|
||||
set = function() self.db.profile.on = Prat:ToggleModuleActive("editbox") end,
|
||||
order = 201
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
function Prat_Editbox:OnEnable()
|
||||
self:Position(self.db.profile.position)
|
||||
self:Alpha(self.db.profile.alpha)
|
||||
self:ArrowKeys(self.db.profile.arrowkeys)
|
||||
self:Sticky(self.db.profile.sticky)
|
||||
end
|
||||
|
||||
function Prat_Editbox:OnDisable()
|
||||
self:Position("BOTTOM")
|
||||
self:Alpha(1)
|
||||
self:ArrowKeys(false)
|
||||
self:Sticky(false)
|
||||
end
|
||||
|
||||
function Prat_Editbox:Alpha(value)
|
||||
local eb = VisorEditbox or ChatFrameEditBox
|
||||
for i,v in ipairs({eb:GetRegions()}) do
|
||||
if i==6 or i==7 or i==8 then
|
||||
v:SetAlpha(value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_Editbox:ArrowKeys(enabled)
|
||||
local eb = VisorEditBox or ChatFrameEditBox
|
||||
if enabled then eb:SetAltArrowKeyMode(false) else eb:SetAltArrowKeyMode(true) end
|
||||
end
|
||||
|
||||
function Prat_Editbox:Position(option)
|
||||
local eb = VisorEditBox or ChatFrameEditBox
|
||||
eb:ClearAllPoints()
|
||||
if option == "TOP" then
|
||||
eb:SetPoint("BOTTOMLEFT", "ChatFrame1", "TOPLEFT", -5, 0)
|
||||
eb:SetPoint("BOTTOMRIGHT", "ChatFrame1", "TOPRIGHT", 5, 0)
|
||||
end
|
||||
if option == "BOTTOM" then
|
||||
eb:SetPoint("TOPLEFT", "ChatFrame1", "BOTTOMLEFT", -5, 0)
|
||||
eb:SetPoint("TOPRIGHT", "ChatFrame1", "BOTTOMRIGHT", 5, 0)
|
||||
end
|
||||
if option == "UNDOCKED" then
|
||||
eb:SetMovable(true)
|
||||
eb:EnableMouse(true)
|
||||
eb:RegisterForDrag("LeftButton")
|
||||
eb:SetScript("OnDragStart", function() if not self.db.profile.locked then eb:StartMoving() end end)
|
||||
eb:SetScript("OnDragStop", function()
|
||||
eb:StopMovingOrSizing()
|
||||
local point, relativeTo, relativePoint, xoff, yoff = eb:GetPoint()
|
||||
self.db.profile.undocked.point = point
|
||||
-- self.db.profile.undocked.relativeTo = relativeTo:GetName() -- this causes game crash, keep commented out
|
||||
self.db.profile.undocked.relativePoint = relativePoint
|
||||
self.db.profile.undocked.xoff = xoff
|
||||
self.db.profile.undocked.yoff = yoff
|
||||
end)
|
||||
eb:SetPoint(self.db.profile.undocked.point, self.db.profile.undocked.relativeTo, self.db.profile.undocked.relativePoint, self.db.profile.undocked.xoff, self.db.profile.undocked.yoff)
|
||||
eb:SetWidth(self.db.profile.width)
|
||||
end
|
||||
end
|
||||
|
||||
function Prat_Editbox:Sticky(enabled)
|
||||
if not enabled then
|
||||
DEFAULT_CHAT_FRAME.editBox:SetScript("OnEscapePressed",
|
||||
function() ChatEdit_OnEscapePressed(this) end
|
||||
)
|
||||
DEFAULT_CHAT_FRAME.editBox:SetScript("OnEnterPressed",
|
||||
function() ChatEdit_OnEnterPressed() end
|
||||
)
|
||||
self:UnhookAll()
|
||||
else
|
||||
DEFAULT_CHAT_FRAME.editBox:SetScript("OnEscapePressed",
|
||||
function()
|
||||
this.oldText = this:GetText()
|
||||
this.oldChatType = this.chatType
|
||||
ChatEdit_OnEscapePressed(this)
|
||||
end
|
||||
)
|
||||
DEFAULT_CHAT_FRAME.editBox:SetScript("OnEnterPressed",
|
||||
function()
|
||||
this.oldText = nil
|
||||
this.oldChatType = nil
|
||||
ChatEdit_OnEnterPressed()
|
||||
end
|
||||
)
|
||||
self:Hook("ChatFrame_OpenChat",
|
||||
function(text, chatFrame)
|
||||
local editBox = DEFAULT_CHAT_FRAME.editBox
|
||||
if (not chatFrame or chatFrame == DEFAULT_CHAT_FRAME) and text == "" and
|
||||
editBox.oldText and editBox.oldText ~= "" then
|
||||
editBox:SetText(editBox.oldText)
|
||||
editBox.chatType = editBox.oldChatType
|
||||
editBox:Show()
|
||||
else
|
||||
self.hooks["ChatFrame_OpenChat"](text, chatFrame)
|
||||
end
|
||||
end
|
||||
)
|
||||
self:Hook("ChatFrame_ReplyTell",
|
||||
function(chatFrame)
|
||||
if ( not chatFrame ) then
|
||||
chatFrame = DEFAULT_CHAT_FRAME;
|
||||
end
|
||||
chatFrame.editBox.oldText = nil
|
||||
self.hooks["ChatFrame_ReplyTell"](chatFrame)
|
||||
end
|
||||
)
|
||||
self:Hook("ChatFrame_ReplyTell2",
|
||||
function(chatFrame)
|
||||
if ( not chatFrame ) then
|
||||
chatFrame = DEFAULT_CHAT_FRAME;
|
||||
end
|
||||
chatFrame.editBox.oldText = nil
|
||||
self.hooks["ChatFrame_ReplyTell2"](chatFrame)
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user