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