Mercurial > wow > devian
comparison Devian.lua @ 57:0d2967941745
localization internals
message prefix is forced to string before used on table lookups
author | Nenue |
---|---|
date | Fri, 08 Jan 2016 10:15:09 -0500 |
parents | 4b1b301cf8d4 |
children | 0a9a6740ea5d |
comparison
equal
deleted
inserted
replaced
56:4b1b301cf8d4 | 57:0d2967941745 |
---|---|
3 -- @project-revision@ @project-hash@ | 3 -- @project-revision@ @project-hash@ |
4 -- @file-revision@ @file-hash@ | 4 -- @file-revision@ @file-hash@ |
5 if not LibStub then | 5 if not LibStub then |
6 print('Something has happened...') | 6 print('Something has happened...') |
7 end | 7 end |
8 local MAJOR, MINOR = 'Devian-2.0', 'r@project-revision@' | |
8 Devian = LibStub("AceAddon-3.0"):NewAddon("Devian", "AceConsole-3.0", "AceEvent-3.0") | 9 Devian = LibStub("AceAddon-3.0"):NewAddon("Devian", "AceConsole-3.0", "AceEvent-3.0") |
9 local D = _G.Devian | 10 local D = _G.Devian |
10 D:SetDefaultModuleState(false) | 11 D:SetDefaultModuleState(false) |
11 | 12 D.L = {} |
13 setmetatable(D.L, {__index= function(t,k) return k end, __call = function(t,k,...) return string.format((t[k] or k) , ...) end}) | |
14 local L = D.L | |
12 local pairs, tostring, tonumber, ipairs, type = pairs, tostring, tonumber, ipairs, type | 15 local pairs, tostring, tonumber, ipairs, type = pairs, tostring, tonumber, ipairs, type |
13 local max, rand, format = math.max, math.random, string.format | 16 local max, rand, format = math.max, math.random, string.format |
14 local insert, wipe, concat = table.insert, table.wipe, table.concat | 17 local insert, wipe, concat = table.insert, table.wipe, table.concat |
15 local select, unpack = select, unpack | 18 local select, unpack = select, unpack |
16 local GetNumAddOns, GetAddOnInfo, GetAddOnEnableState, EnableAddOn = GetNumAddOns, GetAddOnInfo, GetAddOnEnableState, EnableAddOn | 19 local GetNumAddOns, GetAddOnInfo, GetAddOnEnableState, EnableAddOn = GetNumAddOns, GetAddOnInfo, GetAddOnEnableState, EnableAddOn |
17 local UnitName, DisableAddOn = UnitName, DisableAddOn | 20 local UnitName, DisableAddOn = UnitName, DisableAddOn |
18 local MAJOR, MINOR = 'Devian-2.0', 'r@project-revision@' | |
19 local MSG_NEED_DEV_MODE = 'Must be in development mode to use this function.' | |
20 local WORKSPACE_ON, WORKSPACE_OFF = 1, 2 | 21 local WORKSPACE_ON, WORKSPACE_OFF = 1, 2 |
21 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName() | 22 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName() |
22 local print = _G.print | 23 local print = _G.print |
23 local db | 24 local db |
24 local defaults = { | 25 local defaults = { |
97 end | 98 end |
98 local mode, tag, dest = unpack(args) | 99 local mode, tag, dest = unpack(args) |
99 | 100 |
100 | 101 |
101 -- no args, toggle ui | 102 -- no args, toggle ui |
102 if mode == 'dock' then | 103 if mode == 'stack' then |
103 if db.workspace == 1 then | 104 if db.workspace == 1 then |
104 D:Print('Must be in dev mode to use this.') | 105 return D:Print(L['Need devmode']) |
105 return | |
106 end | |
107 if #args <= 2 then | |
108 D:Print("Not enough arguments for dock command.") | |
109 return | |
110 end | |
111 | |
112 local target | |
113 local worklist = {} | |
114 for i = 2, #args do | |
115 local ch | |
116 local k = tostring(args[i]) | |
117 local j = tonumber(args[i]) | |
118 if db.channels[j] then | |
119 ch = db.channels[j] | |
120 elseif D.sig[k] then | |
121 ch = D.sig[k] | |
122 elseif D.sigID[k] then | |
123 ch = db.channels[D.sigID[k]] | |
124 elseif db.tags[k] and db.tags[k][1] then | |
125 ch = db.channels[db.tags[j][1]] | |
126 -- last resort | |
127 else | |
128 D:Print('No entry for argument #'..i..': '..tostring(args[i])) | |
129 return | |
130 end | |
131 --@debug@ | |
132 --print(i, '->', ch.index, '-', ch.signature)--@end-debug@ | |
133 if i > 2 then | |
134 insert(worklist, ch.index) | |
135 else | |
136 target = ch | |
137 | |
138 --@debug@ | |
139 --print('arg1', args[2], target)--@end-debug@ | |
140 end | |
141 end | |
142 D:Print("Docking |cFF88FFFF"..concat(worklist, "|r, |cFF88FFFF").."|r with |cFFFFFF00"..target.index..', '..target.signature.."|r.") | |
143 return D:DockFrame(target.index, unpack(worklist)) | |
144 | |
145 | |
146 elseif mode == 'stack' then | |
147 if db.workspace == 1 then | |
148 return D:Print(MSG_NEED_DEV_MODE) | |
149 end | 106 end |
150 return D:StackFrames() | 107 return D:StackFrames() |
151 elseif mode == 'grid' then | 108 elseif mode == 'grid' then |
152 if db.workspace == 1 then | 109 if db.workspace == 1 then |
153 return D:Print(MSG_NEED_DEV_MODE) | 110 return D:Print(L['Need devmode']) |
154 end | 111 end |
155 return D:DistributeFrames() | 112 return D:DistributeFrames() |
156 elseif mode == 'tag' then -- tagging | 113 elseif mode == 'tag' then -- tagging |
157 if db.workspace == 1 then | 114 if db.workspace == 1 then |
158 return D:Print(MSG_NEED_DEV_MODE) | 115 return D:Print(L['Need devmode']) |
159 end | 116 end |
160 | 117 |
161 local sig | 118 local sig |
162 if tag ~= nil and dest ~= nil then | 119 if tag ~= nil and dest ~= nil then |
163 --@debug@ | 120 --@debug@ |
179 | 136 |
180 -- make a new channel? | 137 -- make a new channel? |
181 local channel | 138 local channel |
182 if not D.db.channels[dest] then | 139 if not D.db.channels[dest] then |
183 dest = D.max_channel + 1 | 140 dest = D.max_channel + 1 |
184 D:Print('Created channel |cFF88FFFF'.. (sig and (dest..':'..sig) or dest ) .. '|r') | 141 D:Print(L('New channel created', sig and (dest..':'..sig) or dest )) |
185 channel = D:SetChannel(sig or tag,dest) | 142 channel = D:SetChannel(sig or tag,dest) |
186 else | 143 else |
187 | 144 |
188 channel = D.db.channels[dest] | 145 channel = D.db.channels[dest] |
189 end | 146 end |
194 db.tags[tag] = {} | 151 db.tags[tag] = {} |
195 end | 152 end |
196 | 153 |
197 if db.tags[tag][dest] then -- is tag set? | 154 if db.tags[tag][dest] then -- is tag set? |
198 db.tags[tag][dest] = nil | 155 db.tags[tag][dest] = nil |
199 D:Print('Hiding |cFF88FFFF'..tag..'|r messages in |cFFFFFF00'..db.channels[dest].index ..':'.. db.channels[dest].signature) | 156 D:Print(L('Tag removed from channel', tag, db.channels[dest].index, db.channels[dest].signature)) |
200 else | 157 else |
201 db.tags[tag][dest] = dest | 158 db.tags[tag][dest] = dest |
202 D:Print('Showing |cFF88FFFF'..tag..'|r messages in |cFFFFFF00'..db.channels[dest].index ..':'.. db.channels[dest].signature) | 159 D:Print(L('Tag added to channel', tag, db.channels[dest].index, db.channels[dest].signature)) |
203 end | 160 end |
204 D:UpdateDock() | 161 D:UpdateDock() |
205 else | 162 else |
206 D:Print('Usage: /dvn tag <prefix> <console name or number>') | 163 D:Print(L['Command tag help']) |
207 end | 164 end |
208 return | 165 return |
209 elseif tonumber(mode) ~= nil or mode == 'save' then | 166 elseif tonumber(mode) ~= nil or mode == 'save' then |
210 -- iterating for something | 167 -- iterating for something |
211 if mode == 'save' then | 168 if mode == 'save' then |
212 if tonumber(tag) == nil then | 169 if tonumber(tag) == nil then |
213 T:Print('Save ID is invalid:', tag) | 170 T:Print(L('Invalid ID from arg', tag)) |
214 end | 171 end |
215 list_state = tonumber(tag) | 172 list_state = tonumber(tag) |
216 else | 173 else |
217 list_state = tonumber(mode) | 174 list_state = tonumber(mode) |
218 db.workspace = list_state | 175 db.workspace = list_state |
222 | 179 |
223 end | 180 end |
224 elseif mode == nil then | 181 elseif mode == nil then |
225 list_state = (db.workspace == 1) and db.last_workspace or 1 | 182 list_state = (db.workspace == 1) and db.last_workspace or 1 |
226 db.workspace = list_state | 183 db.workspace = list_state |
227 db.load_message = "quick swapped workspace #"..list_state | |
228 else | 184 else |
229 return D:PrintHelp() | 185 return D:PrintHelp() |
230 end | 186 end |
231 | 187 |
232 -- start the iterating | 188 -- start the iterating |
275 | 231 |
276 end | 232 end |
277 end | 233 end |
278 | 234 |
279 if mode ~= 'save' then | 235 if mode ~= 'save' then |
280 --db.load_message = "AddOn profile ".. list_state .." was loaded." | 236 db.load_message = (mode == nil) and L("Toggled to profile", list_state) or L('Switched to profile number', list_state) |
281 ReloadUI() | 237 ReloadUI() |
282 else | 238 else |
283 D:Print('Profile #'.. (list_state)..' saved.') | 239 |
284 if list_state == 1 then | 240 if list_state == 1 then |
285 D:Print('This will be your main AddOn list.') | 241 D:Print(L['Profile main saved']) |
286 elseif list_state == db.default_list then | 242 else |
287 db.last_workspace = list_state | 243 db.last_workspace = list_state |
288 D:Print('This will be your default workspace') | 244 D:Print(L('Profile number saved', list_state, list_state)) |
289 end | 245 end |
290 end | 246 end |
291 end | 247 end |
292 | 248 |
293 | 249 |
299 -- @param ... Output contents. | 255 -- @param ... Output contents. |
300 local function Message(prefix, ...) | 256 local function Message(prefix, ...) |
301 if db.workspace == 1 then | 257 if db.workspace == 1 then |
302 return D.oldprint(prefix, ...) | 258 return D.oldprint(prefix, ...) |
303 end | 259 end |
304 | 260 prefix = tostring(prefix) |
305 if tostring(prefix) == nil then | 261 if prefix == nil then |
306 prefix = 'nil*' | 262 prefix = 'nil*' |
307 end | 263 end |
308 | 264 |
309 local sendq = {} | 265 local sendq = {} |
310 local tag, id, tagged | 266 local tag, id, tagged |
386 end | 342 end |
387 | 343 |
388 | 344 |
389 | 345 |
390 function D:OnEnable() | 346 function D:OnEnable() |
391 print(MAJOR, MINOR) | |
392 | 347 |
393 if db.unlisted and #db.unlisted > 0 then | 348 if db.unlisted and #db.unlisted > 0 then |
394 D:Print('New AddOns have been found since the last profile update: '.. concat(db.unlisted, ', ')) | 349 D:Print('New AddOns have been found since the last profile update: '.. concat(db.unlisted, ', ')) |
395 wipe(db.unlisted) | 350 wipe(db.unlisted) |
396 end | 351 end |
397 | 352 |
398 if db.workspace == 1 then | 353 if db.workspace == 1 then |
399 D:Print('Gameplay mode active (list #'..db.workspace..'). Print handling turned |cFFFFFF00OFF|r.') | 354 D:Print(L('Devian loaded on standby',MAJOR, MINOR)) |
400 else | 355 else |
401 D:Print('Development mode active (list #'..db.workspace..'). Print handling |cFF00FF00ON|r.') | 356 D:Print(L('Devian loaded in workspace', MAJOR, MINOR, db.workspace)) |
402 -- movement fading | 357 -- movement fading |
403 if db.movement_fade then | 358 if db.movement_fade then |
404 self:RegisterEvent('PLAYER_STARTED_MOVING', function() | 359 self:RegisterEvent('PLAYER_STARTED_MOVING', function() |
405 for k, v in pairs(self.console) do | 360 for k, v in pairs(self.console) do |
406 if v.enabled then | 361 if v.enabled then |