annotate Config.lua @ 84:3faa1f470cdd v2.1.91

TOC v = 70000
author Nenue
date Tue, 19 Jul 2016 13:49:44 -0400
parents 516ceb31703d
children
rev   line source
Nenue@50 1 --- Devian - Config.lua
Nenue@45 2 -- @file-author@
Nenue@45 3 -- @project-revision@ @project-hash@
Nenue@45 4 -- @file-revision@ @file-hash@
Nenue@45 5 -- Created: 12/30/2015 1:35 AM
Nenue@66 6 local _, D = ...
Nenue@45 7 DevCon = D:NewModule("Config")
Nenue@45 8 local Cf, tinsert, ipairs, tostring = DevCon, table.insert, ipairs, tostring
Nenue@45 9 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName()
Nenue@45 10 local db
Nenue@66 11 local print = D.print
Nenue@45 12
Nenue@45 13
Nenue@45 14 local SetOpt = function(info, value)
Nenue@45 15 db[info[#info]] = value
Nenue@45 16 end
Nenue@45 17 local GetOpt = function(info)
Nenue@45 18 return db[info[#info]]
Nenue@45 19 end
Nenue@45 20 local GetProfileList = function(info)
Nenue@45 21 local select = {}
Nenue@45 22 for i, profile in ipairs(db.profiles) do
Nenue@45 23 if i == db.workspace then
Nenue@45 24 profile[1] = '|cFFFFFF00'..profile[1]..'|r'
Nenue@45 25 elseif i == db.last_workspace then
Nenue@45 26 profile[1] = '|cFF00FF00'..profile[1]..'|r'
Nenue@45 27 end
Nenue@45 28 tinsert(select,tostring(i)..':'..profile[1])
Nenue@45 29 end
Nenue@45 30 return select
Nenue@45 31 end
Nenue@45 32 local GetAddOnList = function(id)
Nenue@45 33 local t = Cf.opts.args.addon.args
Nenue@45 34 for k, v in pairs(t) do
Nenue@45 35 k:match("addon_")
Nenue@45 36 t[k] = nil
Nenue@45 37 end
Nenue@45 38
Nenue@45 39
Nenue@45 40 end
Nenue@45 41 local SetSelectedToProfile = function(info, value)
Nenue@45 42 GetAddOnList(value)
Nenue@45 43 end
Nenue@45 44 local SetLoadedToProfile = function(info, value) end
Nenue@45 45 local SetProfile = function(info, value) end
Nenue@45 46 local LoadSelectedProfile = function() print('Load #', Cf.selected_profile) end
Nenue@45 47 function Cf:OnInitialize()
Nenue@45 48 db = DevianDB
Nenue@45 49 self.selected_profile = db.primary_channel
Nenue@45 50 end
Nenue@45 51
Nenue@45 52 function Cf:OnEnable()
Nenue@45 53
Nenue@45 54 D:Print('Options UI loaded')
Nenue@45 55 self.opts = {
Nenue@45 56 type = 'group',
Nenue@45 57 name = 'Devian',
Nenue@45 58 desc = 'Devkit in a nutshell',
Nenue@45 59 handler = Cf,
Nenue@45 60 set = SetOpt,
Nenue@45 61 get = GetOpt,
Nenue@45 62 args = {
Nenue@45 63 enabled = {
Nenue@45 64 type = 'toggle',
Nenue@45 65 name = 'Enable Print Handler',
Nenue@45 66 desc = 'Allows Devian to handle print() calls.',
Nenue@45 67 order = 10,
Nenue@45 68 },
Nenue@45 69 addon = {
Nenue@45 70 type = 'group',
Nenue@45 71 name = 'AddOns',
Nenue@45 72 order = 20,
Nenue@45 73 args= {
Nenue@45 74 selected_profile = {
Nenue@45 75 type = 'select',
Nenue@45 76 name = 'Profile',
Nenue@45 77 values = GetProfileList,
Nenue@45 78 set = function(info, value, ...) self.selected_profile = value print('select', value, ...) end,
Nenue@45 79 get = function(info) return self.selected_profile or 1 end,
Nenue@45 80 order = 10
Nenue@45 81 },
Nenue@45 82 load_selected = {
Nenue@45 83 func = LoadSelectedProfile,
Nenue@45 84 type = 'execute',
Nenue@45 85 name = 'Load Selected',
Nenue@45 86 desc = 'Save currently loaded AddOns as a profile.',
Nenue@45 87 order = 13,
Nenue@45 88 },
Nenue@45 89 t_header = {
Nenue@45 90 type = 'header',
Nenue@45 91 name = 'Addons',
Nenue@45 92 width = 'full',
Nenue@45 93 order = 15,
Nenue@45 94 },
Nenue@45 95 save_loaded = {
Nenue@45 96 func = SetLoadedToProfile,
Nenue@45 97 type = 'execute',
Nenue@45 98 name = 'Save Loaded',
Nenue@45 99 desc = 'Save currently loaded AddOns as a profile.',
Nenue@45 100 order = 400,
Nenue@45 101 },
Nenue@45 102 save_selected = {
Nenue@45 103 func = SetSelectedToProfile,
Nenue@45 104 type = 'execute',
Nenue@45 105 name = 'Save',
Nenue@45 106 desc = 'Save the selected AddOns as a profile.',
Nenue@45 107 order = 450,
Nenue@45 108 }
Nenue@45 109 }
Nenue@45 110 },
Nenue@45 111 channels = {
Nenue@45 112 type = 'group',
Nenue@45 113 name = 'Console',
Nenue@45 114 order = 30,
Nenue@45 115 args = {
Nenue@45 116 primary_channel = {
Nenue@45 117 type = 'select',
Nenue@45 118 name = 'Primary Channel',
Nenue@45 119 desc = 'Set the default output channel for untagged messages.',
Nenue@45 120 values = {},
Nenue@45 121 }
Nenue@45 122 }
Nenue@45 123 },
Nenue@45 124 tags = {
Nenue@45 125 type = 'group',
Nenue@45 126 name = 'Tags',
Nenue@45 127 order = 40,
Nenue@45 128 args = {
Nenue@45 129 enable_tag = {
Nenue@45 130 type = 'toggle',
Nenue@45 131 name ='Message prefix handling',
Nenue@45 132 desc = 'Enables direction of print() results to different channels based on the first whole word in the output.',
Nenue@45 133 }
Nenue@45 134 }
Nenue@45 135 },
Nenue@45 136 }
Nenue@45 137 }
Nenue@45 138
Nenue@45 139
Nenue@45 140 for i = 1, GetNumAddOns() do
Nenue@45 141 local name = GetAddOnInfo(i)
Nenue@45 142 local enableState, globalState = GetAddOnEnableState(playername, i), GetAddOnEnableState(nil, i)
Nenue@45 143 self.opts.args.addon.args['addon_'..i..'_desc'] = {
Nenue@45 144 type = 'description',
Nenue@45 145 name = name,
Nenue@45 146 width = 'single',
Nenue@45 147 order= (500+i*3)
Nenue@45 148 }
Nenue@45 149 self.opts.args.addon.args['addon_'..i..'_global'] = {
Nenue@45 150 type = 'toggle',
Nenue@45 151 name = '',
Nenue@45 152 get = function() return (GetAddOnEnableState(nil, i) == 2) and true or false end,
Nenue@45 153 set = function(info, value) EnableAddOn(i, value) end,
Nenue@45 154 width= 'half',
Nenue@45 155 order= (500+i*3+1)
Nenue@45 156 }
Nenue@45 157
Nenue@45 158 self.opts.args.addon.args['addon_'..i..'_char'] = {
Nenue@45 159 type = 'toggle',
Nenue@45 160 name = '',
Nenue@45 161 get = function() return (GetAddOnEnableState(GetUnitName('player'), i) == 1) and true or false end,
Nenue@45 162 set = function(info, value) EnableAddOn(PLAYER_REALM, value) end,
Nenue@45 163 width= 'half',
Nenue@45 164 order= (500+i*3+2)
Nenue@45 165 }
Nenue@45 166 end
Nenue@45 167
Nenue@45 168 LibStub("AceConfig-3.0"):RegisterOptionsTable("Devian", self.opts)
Nenue@45 169 self.diag = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Devian", "Devian")
Nenue@45 170 end
Nenue@45 171
Nenue@45 172 function Cf:ChatCommand(input)
Nenue@45 173 InterfaceOptionsFrame_OpenToCategory(self.diag)
Nenue@45 174 InterfaceOptionsFrame_OpenToCategory(self.diag)
Nenue@45 175 end