Mercurial > wow > devian
diff Config.lua @ 45:5341e4d84622
Removed dock manager from the TOC for now
Parts of the config dialog in, needs finishing
author | Nenue |
---|---|
date | Wed, 30 Dec 2015 07:05:38 -0500 |
parents | |
children | c3166f700438 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Config.lua Wed Dec 30 07:05:38 2015 -0500 @@ -0,0 +1,178 @@ +--- +-- @file-author@ +-- @project-revision@ @project-hash@ +-- @file-revision@ @file-hash@ +-- Created: 12/30/2015 1:35 AM + +if not LibStub then + print('Something has happened...') +end +local D = LibStub("AceAddon-3.0"):GetAddon("Devian") +DevCon = D:NewModule("Config") +local Cf, tinsert, ipairs, tostring = DevCon, table.insert, ipairs, tostring +local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName() +local db + + +local SetOpt = function(info, value) + db[info[#info]] = value +end +local GetOpt = function(info) + return db[info[#info]] +end +local GetProfileList = function(info) + local select = {} + for i, profile in ipairs(db.profiles) do + if i == db.workspace then + profile[1] = '|cFFFFFF00'..profile[1]..'|r' + elseif i == db.last_workspace then + profile[1] = '|cFF00FF00'..profile[1]..'|r' + end + tinsert(select,tostring(i)..':'..profile[1]) + end + return select +end +local GetAddOnList = function(id) + local t = Cf.opts.args.addon.args + for k, v in pairs(t) do + k:match("addon_") + t[k] = nil + end + + +end +local SetSelectedToProfile = function(info, value) + GetAddOnList(value) +end +local SetLoadedToProfile = function(info, value) end +local SetProfile = function(info, value) end +local LoadSelectedProfile = function() print('Load #', Cf.selected_profile) end +function Cf:OnInitialize() + db = DevianDB + self.selected_profile = db.primary_channel +end + +function Cf:OnEnable() + + D:Print('Options UI loaded') + self.opts = { + type = 'group', + name = 'Devian', + desc = 'Devkit in a nutshell', + handler = Cf, + set = SetOpt, + get = GetOpt, + args = { + enabled = { + type = 'toggle', + name = 'Enable Print Handler', + desc = 'Allows Devian to handle print() calls.', + order = 10, + }, + addon = { + type = 'group', + name = 'AddOns', + order = 20, + args= { + selected_profile = { + type = 'select', + name = 'Profile', + values = GetProfileList, + set = function(info, value, ...) self.selected_profile = value print('select', value, ...) end, + get = function(info) return self.selected_profile or 1 end, + order = 10 + }, + load_selected = { + func = LoadSelectedProfile, + type = 'execute', + name = 'Load Selected', + desc = 'Save currently loaded AddOns as a profile.', + order = 13, + }, + t_header = { + type = 'header', + name = 'Addons', + width = 'full', + order = 15, + }, + save_loaded = { + func = SetLoadedToProfile, + type = 'execute', + name = 'Save Loaded', + desc = 'Save currently loaded AddOns as a profile.', + order = 400, + }, + save_selected = { + func = SetSelectedToProfile, + type = 'execute', + name = 'Save', + desc = 'Save the selected AddOns as a profile.', + order = 450, + } + } + }, + channels = { + type = 'group', + name = 'Console', + order = 30, + args = { + primary_channel = { + type = 'select', + name = 'Primary Channel', + desc = 'Set the default output channel for untagged messages.', + values = {}, + } + } + }, + tags = { + type = 'group', + name = 'Tags', + order = 40, + args = { + enable_tag = { + type = 'toggle', + name ='Message prefix handling', + desc = 'Enables direction of print() results to different channels based on the first whole word in the output.', + } + } + }, + } + } + + + for i = 1, GetNumAddOns() do + local name = GetAddOnInfo(i) + local enableState, globalState = GetAddOnEnableState(playername, i), GetAddOnEnableState(nil, i) + self.opts.args.addon.args['addon_'..i..'_desc'] = { + type = 'description', + name = name, + width = 'single', + order= (500+i*3) + } + self.opts.args.addon.args['addon_'..i..'_global'] = { + type = 'toggle', + name = '', + get = function() return (GetAddOnEnableState(nil, i) == 2) and true or false end, + set = function(info, value) EnableAddOn(i, value) end, + width= 'half', + order= (500+i*3+1) + } + + self.opts.args.addon.args['addon_'..i..'_char'] = { + type = 'toggle', + name = '', + get = function() return (GetAddOnEnableState(GetUnitName('player'), i) == 1) and true or false end, + set = function(info, value) EnableAddOn(PLAYER_REALM, value) end, + width= 'half', + order= (500+i*3+2) + } + end + + LibStub("AceConfig-3.0"):RegisterOptionsTable("Devian", self.opts) + self.diag = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Devian", "Devian") +end + +function Cf:ChatCommand(input) + InterfaceOptionsFrame_OpenToCategory(self.diag) + InterfaceOptionsFrame_OpenToCategory(self.diag) +end \ No newline at end of file