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 |