vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | local locals = KC_ITEMS_LOCALS |
2 | |||
3 | KC_ItemsModule = AceModule:new(); |
||
4 | |||
5 | -- Module DB Closures. These use the addon's (KC_Items's) profilePath to ensure |
||
6 | -- that the proper profile will always get used. |
||
7 | |||
8 | function KC_ItemsModule:GetOpt(path, var) |
||
9 | if (not var) then var = path; path = nil; end |
||
10 | |||
11 | if (self.db) then |
||
12 | local profilePath = path and {self.app.profilePath, path} or self.app.profilePath |
||
13 | return self.db:get(profilePath, var) |
||
14 | else |
||
15 | return self.app:GetOpt(path, var) |
||
16 | end |
||
17 | end |
||
18 | |||
19 | function KC_ItemsModule:SetOpt(path, var, val) |
||
20 | if (not var) then val = var; var = path; path = nil; end |
||
21 | |||
22 | if (self.db) then |
||
23 | local profilePath = path and {self.app.profilePath, path} or self.app.profilePath |
||
24 | return self.db:set(profilePath, var, val) |
||
25 | else |
||
26 | return self.app:SetOpt(path, var, val) |
||
27 | end |
||
28 | end |
||
29 | |||
30 | function KC_ItemsModule:TogOpt(path, var) |
||
31 | if (not var) then val = var; var = path; path = nil; end |
||
32 | |||
33 | if (self.db) then |
||
34 | local profilePath = path and {self.app.profilePath, path} or self.app.profilePath |
||
35 | return self.db:toggle(profilePath, var) |
||
36 | else |
||
37 | return self.app:TogOpt(path, var) |
||
38 | end |
||
39 | end |
||
40 | |||
41 | function KC_ItemsModule:ClearOpt(path, var) |
||
42 | if (not var) then var = path; path = nil; end |
||
43 | |||
44 | if (self.db) then |
||
45 | local profilePath = path and {self.app.profilePath, path} or self.app.profilePath |
||
46 | return self.db:set(profilePath, var) |
||
47 | else |
||
48 | return self.app:ClearOpt(path, var) |
||
49 | end |
||
50 | end |
||
51 | |||
52 | |||
53 | -- Command Reporting Closures |
||
54 | |||
55 | function KC_ItemsModule:Msg(...) |
||
56 | self.app:Msg(unpack(arg)) |
||
57 | end |
||
58 | |||
59 | function KC_ItemsModule:Result(text, val, map) |
||
60 | self.app:Result(text, val, map) |
||
61 | end |
||
62 | |||
63 | function KC_ItemsModule:TogMsg(var, text) |
||
64 | local val = self:TogOpt(var) |
||
65 | self.app:Result(text, val, locals.maps.onOff) |
||
66 | return val |
||
67 | end |
||
68 | |||
69 | function KC_ItemsModule:Error(...) |
||
70 | self.app:Error(unpack(arg)) |
||
71 | end |
||
72 | |||
73 | |||
74 | -- Enabling/Disabling |
||
75 | |||
76 | function KC_ItemsModule:Register() |
||
77 | self.disabled = TRUE |
||
78 | self:RegisterEvent("KC_ITEMS_LOADED") |
||
79 | self:RegisterEvent("KC_ITEMS_ENABLED") |
||
80 | end |
||
81 | |||
82 | function KC_ItemsModule:KC_ITEMS_LOADED() |
||
83 | self:debug("KC_Items Loaded") |
||
84 | if( self.db ) then self.db:Initialize() end |
||
85 | end |
||
86 | |||
87 | function KC_ItemsModule:KC_ITEMS_ENABLED() |
||
88 | self:CheckEnable() |
||
89 | self:RegisterEvent("KC_ITEMS_DISABLED") |
||
90 | self:debug("KC_Items Enabled") |
||
91 | end |
||
92 | |||
93 | function KC_ItemsModule:KC_ITEMS_DISABLED() |
||
94 | self:Disable() |
||
95 | self:debug("KC_Items Disabled") |
||
96 | end |
||
97 | |||
98 | function KC_ItemsModule:KC_ITEMS_MODULE_ENABLED() |
||
99 | if( self.disabled and self:CheckDependencies() ) then self:CheckEnable() end |
||
100 | end |
||
101 | |||
102 | function KC_ItemsModule:KC_ITEMS_MODULE_DISABLED() |
||
103 | if( self.disabled ) then return end |
||
104 | if( not self:CheckDependencies() ) then self:Disable() end |
||
105 | end |
||
106 | |||
107 | function KC_ItemsModule:CheckDependencies() |
||
108 | if( not self.dependencies ) then return TRUE end |
||
109 | |||
110 | local _, dep |
||
111 | for _, dep in self.dependencies do |
||
112 | if( (not self.app.modules[dep]) or |
||
113 | (not self.app:ModEnabled(self.app.modules[dep])) |
||
114 | ) then |
||
115 | return |
||
116 | end |
||
117 | end |
||
118 | |||
119 | return TRUE |
||
120 | end |
||
121 | |||
122 | function KC_ItemsModule:CheckEnable(force) |
||
123 | if( (not self.app.disabled) and (self.app:ModEnabled(self) or force) and |
||
124 | self:CheckDependencies() |
||
125 | ) then |
||
126 | self:Enable() |
||
127 | self.disabled = FALSE |
||
128 | self:TriggerEvent("KC_ITEMS_MODULE_ENABLED") |
||
129 | self:RegisterEvent("KC_ITEMS_DISABLED") |
||
130 | self:RegisterEvent("KC_ITEMS_MODULE_DISABLED") |
||
131 | return TRUE |
||
132 | end |
||
133 | end |
||
134 | |||
135 | |||
136 | -- Should be overridden |
||
137 | function KC_ItemsModule:Enable() end |
||
138 | |||
139 | function KC_ItemsModule:Disable() |
||
140 | self:UnregisterAllEvents() |
||
141 | self:UnhookAll() |
||
142 | self.disabled = TRUE |
||
143 | self:TriggerEvent("KC_ITEMS_MODULE_DISABLED") |
||
144 | self:RegisterEvent("KC_ITEMS_ENABLED") |
||
145 | self:RegisterEvent("KC_ITEMS_MODULE_ENABLED") |
||
146 | end |
||
147 | |||
148 | |||
149 | -- Common Module Command Handlers |
||
150 | |||
151 | function KC_ItemsModule:Toggle() |
||
152 | if( self.app:ModEnabled(self) ) then |
||
153 | self.app:SetModState(self, FALSE) |
||
154 | self:Disable() |
||
155 | self:Result(self.name, nil, locals.maps.enabled) |
||
156 | elseif( self:CheckEnable(TRUE)) then |
||
157 | self.app:SetModState(self, TRUE) |
||
158 | self:Result(self.name, TRUE, locals.maps.enabled) |
||
159 | else |
||
160 | self:Msg(format(locals.err.modEnable, self.name)) |
||
161 | self:Msg(format(locals.err.needs, self.name, table.concat(self.dependencies, ", "))) |
||
162 | end |
||
163 | end |