comparison classes/Bar.lua @ 153:d5e11e924053

Code formatting, separate accessors from other methods in Bar.lua
author Flick <flickerstreak@gmail.com>
date Fri, 08 May 2009 17:14:36 +0000
parents de1da46dadb3
children df67685b340e
comparison
equal deleted inserted replaced
152:6d7ef2a3f828 153:d5e11e924053
108 108
109 function Bar:LIBKEYBOUND_DISABLED(evt) 109 function Bar:LIBKEYBOUND_DISABLED(evt)
110 self:SetKeybindMode(false) 110 self:SetKeybindMode(false)
111 end 111 end
112 112
113 --
114 -- Accessors
115 --
116
117 function Bar:GetName()
118 return self.name
119 end
120
121 -- only ReAction:RenameBar() should call this function. Calling from any other
122 -- context will desync the bar list in the ReAction class.
123 function Bar:SetName(name)
124 self.name = name
125 self:SetLabel(self.name) -- Bar:SetLabel() defined in Overlay.lua
126 end
127
128 function Bar:GetFrame()
129 -- this method is included for documentation purposes. It is overridden
130 -- for each object in the :New() method.
131 error("Invalid Bar object: used without initialization")
132 end
133
134 function Bar:GetConfig()
135 return self.config
136 end
137
138 function Bar:GetAnchor()
139 local c = self.config
140 return (c.point or "CENTER"),
141 (c.anchor or self:GetFrame():GetParent():GetName()),
142 (c.relpoint or c.point or "CENTER"),
143 (c.x or 0),
144 (c.y or 0)
145 end
146
147 function Bar:SetAnchor(point, frame, relativePoint, x, y)
148 local c = self.config
149 c.point = point or c.point
150 c.anchor = frame or c.anchor
151 c.relpoint = relativePoint or c.relpoint
152 c.x = x or c.x
153 c.y = y or c.y
154 self:ApplyAnchor()
155 ReAction:RefreshBar(self)
156 end
157
158 function Bar:GetSize()
159 local f = self:GetFrame()
160 return f:GetWidth(), f:GetHeight()
161 end
162
163 function Bar:SetSize(w,h)
164 local f = self:GetFrame()
165 self.config.width = w
166 self.config.height = h
167 f:SetWidth(w)
168 f:SetHeight(h)
169 end
170
171 function Bar:GetButtonSize()
172 local w = self.config.btnWidth or 32
173 local h = self.config.btnHeight or 32
174 -- TODO: get from modules?
175 return w,h
176 end
177
178 function Bar:SetButtonSize(w,h)
179 if w > 0 and h > 0 then
180 self.config.btnWidth = w
181 self.config.btnHeight = h
182 end
183 ReAction:RefreshBar(self)
184 end
185
186 function Bar:GetNumButtons()
187 local r,c = self:GetButtonGrid()
188 return r*c
189 end
190
191 function Bar:GetButtonGrid()
192 local cfg = self.config
193 local r = cfg.btnRows or 1
194 local c = cfg.btnColumns or 1
195 local s = cfg.spacing or 4
196 return r,c,s
197 end
198
199 function Bar:SetButtonGrid(r,c,s)
200 if r > 0 and c > 0 and s > 0 then
201 local cfg = self.config
202 cfg.btnRows = r
203 cfg.btnColumns = c
204 cfg.spacing = s
205 end
206 ReAction:RefreshBar(self)
207 end
208
209 function Bar:GetAlpha()
210 return self.config.alpha or 1.0
211 end
212
213 function Bar:SetAlpha(value)
214 self.config.alpha = value
215 self:GetFrame():SetAlpha(value or 1.0)
216 ReAction:RefreshBar(self)
217 end
218
219 -- iterator returns button, idx and does NOT iterate in index order
220 function Bar:IterateButtons()
221 return pairs(self.buttons)
222 end
223
224 --
225 -- Methods
226 --
227
228 function Bar:SetConfigMode(mode)
229 self:ShowControls(mode)
230 if self.unitwatch then
231 if mode then
232 UnregisterUnitWatch(self:GetFrame())
233 self:GetFrame():Show()
234 else
235 RegisterUnitWatch(self:GetFrame())
236 end
237 end
238 for b in self:IterateButtons() do
239 b:ShowGridTemp(mode)
240 b:UpdateActionIDLabel(mode)
241 end
242 end
243
244 function Bar:SetKeybindMode(mode)
245 if self.unitwatch then
246 if mode then
247 UnregisterUnitWatch(self:GetFrame())
248 self:GetFrame():Show()
249 else
250 RegisterUnitWatch(self:GetFrame())
251 end
252 end
253 for b in self:IterateButtons() do
254 b:SetKeybindMode(mode)
255 end
256 end
257
113 function Bar:ApplyAnchor() 258 function Bar:ApplyAnchor()
114 local f = self:GetFrame() 259 local f = self:GetFrame()
115 local c = self.config 260 local c = self.config
116 local p = c.point 261 local p = c.point
117 262
134 else 279 else
135 f:SetPoint("CENTER") 280 f:SetPoint("CENTER")
136 end 281 end
137 end 282 end
138 283
139 function Bar:SetAnchor(point, frame, relativePoint, x, y)
140 local c = self.config
141 c.point = point or c.point
142 c.anchor = frame or c.anchor
143 c.relpoint = relativePoint or c.relpoint
144 c.x = x or c.x
145 c.y = y or c.y
146 self:ApplyAnchor()
147 ReAction:RefreshBar(self)
148 end
149
150 function Bar:GetAnchor()
151 local c = self.config
152 return (c.point or "CENTER"),
153 (c.anchor or self:GetFrame():GetParent():GetName()),
154 (c.relpoint or c.point or "CENTER"),
155 (c.x or 0),
156 (c.y or 0)
157 end
158
159 function Bar:GetSize()
160 local f = self:GetFrame()
161 return f:GetWidth(), f:GetHeight()
162 end
163
164 function Bar:SetSize(w,h)
165 local f = self:GetFrame()
166 self.config.width = w
167 self.config.height = h
168 f:SetWidth(w)
169 f:SetHeight(h)
170 end
171
172 function Bar:GetButtonSize()
173 local w = self.config.btnWidth or 32
174 local h = self.config.btnHeight or 32
175 -- TODO: get from modules?
176 return w,h
177 end
178
179 function Bar:SetButtonSize(w,h)
180 if w > 0 and h > 0 then
181 self.config.btnWidth = w
182 self.config.btnHeight = h
183 end
184 ReAction:RefreshBar(self)
185 end
186
187 function Bar:GetButtonGrid()
188 local cfg = self.config
189 local r = cfg.btnRows or 1
190 local c = cfg.btnColumns or 1
191 local s = cfg.spacing or 4
192 return r,c,s
193 end
194
195 function Bar:GetNumButtons()
196 local r,c = self:GetButtonGrid()
197 return r*c
198 end
199
200 function Bar:SetButtonGrid(r,c,s)
201 if r > 0 and c > 0 and s > 0 then
202 local cfg = self.config
203 cfg.btnRows = r
204 cfg.btnColumns = c
205 cfg.spacing = s
206 end
207 ReAction:RefreshBar(self)
208 end
209
210 function Bar:ClipNButtons( n ) 284 function Bar:ClipNButtons( n )
211 local cfg = self.config 285 local cfg = self.config
212 local r = cfg.btnRows or 1 286 local r = cfg.btnRows or 1
213 local c = cfg.btnColumns or 1 287 local c = cfg.btnColumns or 1
214 288
215 cfg.btnRows = ceil(n/c) 289 cfg.btnRows = ceil(n/c)
216 cfg.btnColumns = min(n,c) 290 cfg.btnColumns = min(n,c)
217 end
218
219 function Bar:GetName()
220 return self.name
221 end
222
223 function Bar:GetFrame()
224 -- this method is included for documentation purposes. It is overridden
225 -- for each object in the :New() method.
226 error("Invalid Bar object: used without initialization")
227 end
228
229 -- only ReAction:RenameBar() should call this function. Calling from any other
230 -- context will desync the bar list in the ReAction class.
231 function Bar:SetName(name)
232 self.name = name
233 self:SetLabel(self.name) -- Bar:SetLabel() defined in Overlay.lua
234 end
235
236 function Bar:GetAlpha()
237 return self.config.alpha or 1.0
238 end
239
240 function Bar:SetAlpha(value)
241 self.config.alpha = value
242 self:GetFrame():SetAlpha(value or 1.0)
243 ReAction:RefreshBar(self)
244 end 291 end
245 292
246 function Bar:AddButton(idx, button) 293 function Bar:AddButton(idx, button)
247 local f = self:GetFrame() 294 local f = self:GetFrame()
248 295
257 function Bar:RemoveButton(button) 304 function Bar:RemoveButton(button)
258 local idx = self.buttons[button] 305 local idx = self.buttons[button]
259 if idx then 306 if idx then
260 self:GetFrame():SetAttribute(format("frameref-btn%d",idx),nil) 307 self:GetFrame():SetAttribute(format("frameref-btn%d",idx),nil)
261 self.buttons[button] = nil 308 self.buttons[button] = nil
262 end
263 end
264
265 -- iterator returns button, idx and does NOT iterate in index order
266 function Bar:IterateButtons()
267 return pairs(self.buttons)
268 end
269
270 function Bar:SetConfigMode(mode)
271 self:ShowControls(mode)
272 if self.unitwatch then
273 if mode then
274 UnregisterUnitWatch(self:GetFrame())
275 self:GetFrame():Show()
276 else
277 RegisterUnitWatch(self:GetFrame())
278 end
279 end
280 for b in self:IterateButtons() do
281 b:ShowGridTemp(mode)
282 b:UpdateActionIDLabel(mode)
283 end
284 end
285
286 function Bar:SetKeybindMode(mode)
287 if self.unitwatch then
288 if mode then
289 UnregisterUnitWatch(self:GetFrame())
290 self:GetFrame():Show()
291 else
292 RegisterUnitWatch(self:GetFrame())
293 end
294 end
295 for b in self:IterateButtons() do
296 b:SetKeybindMode(mode)
297 end 309 end
298 end 310 end
299 311
300 function Bar:PlaceButton(button, baseW, baseH) 312 function Bar:PlaceButton(button, baseW, baseH)
301 local idx = self.buttons[button] 313 local idx = self.buttons[button]