local addonName, addon = ... local childName = addon['childName'] local db local child = addon[childName] local modifier = {'none','shift','ctrl','alt'} local mouseButtons = {'LEFTBUTTON','RIGHTBUTTON','WHEEL',"BUTTON4","BUTTON5"} local prefGroupActiveClickzz local function selectSpell() local list = {} for spellId, spellName in pairs(db['spells']) do list[#list+1] = spellName end sort(list) return list end local function remClick(pref) child['options']['args'][childName]['args']["activeClickzz"]['args'][pref[#pref-1]] = nil db['clicks'][strsub(pref[#pref-1],10)] = nil child:enableAllFrames() end local function buildMenu() local config = LibStub:GetLibrary("zzConfig") local options = child['options'] local main = options['args'][childName] for clickName,v in pairs(db['clicks']) do -- print(clickName, v) local grpName = v['btnName'] if(v['mod'] ~= 1) then grpName = format("%s-%s",strupper(v['modName']),grpName) end local clickNum = format("clickNum-%s", clickName) local grp = config:AddConfigEntry(prefGroupActiveClickzz, clickNum, "group", grpName, 'Settings', 1, { ['db'] = db, ['func'] = nil, SetDB = function(self, db) self.db = db end, GetPref = child.getPref, SetPref = child.setPref, }) config:AddConfigEntry(grp, "remClick", "execute", 'Remove', nil, 9, remClick) config:AddConfigEntry(grp, "dualSpell", "toggle", 'Dual', 'Set damage and heal spell on same click', 8) config:AddConfigEntry(grp, "selectSpell", "select", 'Spell', nil, 7, selectSpell) if(v['dualSpell']) then config:AddConfigEntry(grp, "selectSpell2", "select", 'Heal Spell', nil, 6, selectSpell) end end end function child:getPref(pref) if(pref[#pref] == 'selectSpell') then local spells = selectSpell() for i = 1, #spells do if(spells[i] == db['clicks'][strsub(pref[#pref-1],10)]['spell']) then return i end end elseif(pref[#pref] == 'selectSpell2') then local spells = selectSpell() for i = 1, #spells do if(spells[i] == db['clicks'][strsub(pref[#pref-1],10)]['spellHeal']) then return i end end elseif(pref[#pref] == 'dualSpell') then return db['clicks'][strsub(pref[#pref-1],10)]['dualSpell'] end return db[pref[#pref]] end function child:setPref(pref,value) if(pref[#pref] == 'selectSpell') then local spells = selectSpell() db['clicks'][strsub(pref[#pref-1],10)]['spell'] = spells[value] child:enableAllFrames() return elseif(pref[#pref] == 'dualSpell') then db['clicks'][strsub(pref[#pref-1],10)]['dualSpell'] = value buildMenu() return elseif(pref[#pref] == 'selectSpell2') then local spells = selectSpell() db['clicks'][strsub(pref[#pref-1],10)]['spellHeal'] = spells[value] child:enableAllFrames() return end db[pref[#pref]] = value end local function addClick() local mod = tonumber(db['modType']) if(modifier[mod]) then local clickName local btn = tonumber(db['mouseButton']) local mf = modifier[mod] local bf = mouseButtons[btn] if(mod==1) then clickName = format("type%i", btn) else clickName = format("%s-type%i", mf, btn) end db['clicks'][clickName] = db['clicks'][clickName] or { ['btnName'] = bf, ['modName'] = mf, ['btn'] = btn, ['mod'] = mod } buildMenu() child:enableAllFrames() end end local init = { Setup = function(self) db = child['db'] local config = LibStub:GetLibrary("zzConfig") local options = child['options'] local main = options['args'][childName] -- print("setup prefs", childName) config:AddConfigEntry(main, "modType", "select", 'Modifier', nil, 1, modifier) config:AddConfigEntry(main, "mouseButton", "select", 'Mousebutton', nil, 2, mouseButtons) config:AddConfigEntry(main, "addClick", "execute", 'Add Click', nil, 3, addClick) prefGroupActiveClickzz = config:AddConfigEntry(main, "activeClickzz", "group", 'Active Clickzz', '', 4) buildMenu() end } addon.RegisterCallback(init, format("Init%s", childName), 'Setup')