local mod = StarTip:NewModule("Gestures")
mod.name = "Gestures"
mod.toggled = true
mod.defaultOff = true
local L = StarTip.L
local WidgetGestures = LibStub("LibScriptableWidgetGestures-1.0")
local LibCore = LibStub("LibScriptableLCDCore-1.0")
local _G = _G
local GameTooltip = _G.GameTooltip
local StarTip = _G.StarTip
local UIParent = _G.UIParent
local gestures = {}
local environment = {}
-- LeftButtonDown
local buttonsList = {L["Left Button"], L["Right Button"], L["Center Button"]}
local buttons = {"LeftButton", "RightButton", "CenterButton"}
local directionsList = {L["Up"], L["Down"]}
local directions = {"Up", "Down"}
local defaults = {
profile = {
gestures = {
[1] = {
name = "Wipe Data",
enabled = true,
gestures = {{type="line", pattern="right"}, {type="line", pattern="left"}, {type="line", pattern="right"}, {type="line", pattern="left"}},
expression = [[
WipeDPS()
WipeNoise()
WipeInspect()
]]
},
[2] = {
name = "Start Data",
enabled = false,
gestures = {{type="circle", pattern="clockwise"}},
expression = [[
StartDPS()
StartNoise()
]]
},
[3] = {
name = "Stop Data",
enabled = false,
gestures = {{type="circle", pattern="counterclockwise"}},
expression = [[
StopDPS()
StopNoise()
]]
}
}
}
}
local options = {}
local optionsDefaults = {
add = {
name = L["Add Gesture"],
desc = L["Add a gesture"],
type = "input",
set = function(info, v)
local widget = {
name = v,
type = "gesture",
enabled = true,
points = {{"TOPLEFT", "GameTooltip", "BOTTOMLEFT", 0, -50}},
frame = "UIParent",
expression = "return random(100)",
custom = true
}
tinsert(mod.db.profile.gestures, widget)
StarTip:RebuildOpts()
end,
order = 5
},
defaults = {
name = L["Restore Defaults"],
desc = L["Restore Defaults"],
type = "execute",
func = function()
mod.db.profile.gestures = {}
StarTip:RebuildOpts()
StarTip:Print(L["You'll need to reload your UI. Type /reload"])
end,
order = 6
},
}
local function copy(tbl)
if type(tbl) ~= "table" then return tbl end
local newTbl = {}
for k, v in pairs(tbl) do
newTbl[k] = copy(v)
end
return newTbl
end
function mod:CreateGestures()
for i, gesture in ipairs(self.db.profile.gestures) do
local widget = WidgetGestures:New(self.core, gesture.name, copy(gesture), StarTip.db.profile.errorLevel, timer)
if gesture.enabled then
widget:Start()
end
tinsert(gestures, widget)
end
end
function mod:WipeGestures()
for i, gesture in ipairs(gestures) do
gesture:Del()
end
wipe(gestures)
end
function mod:OnInitialize()
self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults)
StarTip:SetOptionsDisabled(options, true)
self.core = StarTip.core --LibCore:New(mod, environment, "StarTip.Gestures", {["StarTip.Gestures"] = {}}, nil, StarTip.db.profile.errorLevel)
end
function mod:OnEnable()
StarTip:SetOptionsDisabled(options, false)
self:CreateGestures()
end
function mod:OnDisable()
StarTip:SetOptionsDisabled(options, true)
self:WipeGestures()
end
function mod:GetOptions()
return options
end
function mod:RebuildOpts()
local defaults = WidgetGestures.defaults
self:WipeGestures()
self:CreateGestures()
wipe(options)
for k, v in pairs(optionsDefaults) do
options[k] = v
end
for i, db in ipairs(self.db.profile.gestures) do
options[db.name:gsub(" ", "_")] = {
name = db.name,
type="group",
order = i,
args=WidgetGestures:GetOptions(db, StarTip.RebuildOpts, StarTip)
}
options[db.name:gsub(" ", "_")].args.delete = {
name = L["Delete"],
desc = L["Delete this widget"],
type = "execute",
func = function()
self.db.profile.gestures[i] = {}
StarTip:RebuildOpts()
end,
order = 100
}
end
end