vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
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