Mercurial > wow > reaction
comparison classes/Button.lua @ 234:0e20f65375d5
Reworked button creation to not use goofy event driven semantics.
| author | Flick |
|---|---|
| date | Tue, 22 Mar 2011 17:05:51 -0700 |
| parents | 158c9299185b |
| children | 1663c78a7f31 |
comparison
equal
deleted
inserted
replaced
| 233:9b9f5fc84d34 | 234:0e20f65375d5 |
|---|---|
| 110 | 110 |
| 111 function Button:GetFrame() | 111 function Button:GetFrame() |
| 112 return self.frame | 112 return self.frame |
| 113 end | 113 end |
| 114 | 114 |
| 115 function Button:GetIndex() | |
| 116 return self.idx | |
| 117 end | |
| 118 | |
| 115 function Button:GetName() | 119 function Button:GetName() |
| 116 return self.name | 120 return self.name |
| 117 end | 121 end |
| 118 | 122 |
| 119 function Button:GetDefaultBarConfig() | 123 function Button:GetDefaultBarConfig() |
| 138 end | 142 end |
| 139 | 143 |
| 140 function Button:SetActionIDPool( poolID, maxID ) | 144 function Button:SetActionIDPool( poolID, maxID ) |
| 141 self.actionPoolID = poolID | 145 self.actionPoolID = poolID |
| 142 self.actionMaxID = maxID | 146 self.actionMaxID = maxID |
| 147 end | |
| 148 | |
| 149 function Button:SetupBar( bar ) | |
| 150 local config = bar:GetConfig() | |
| 151 if not config.buttons then | |
| 152 config.buttons = { } | |
| 153 end | |
| 154 local btnCfg = config.buttons | |
| 155 | |
| 156 local r, c = bar:GetButtonGrid() | |
| 157 local n = r*c | |
| 158 | |
| 159 local hint = nil | |
| 160 local i = 1 | |
| 161 repeat | |
| 162 local b = bar:GetButton(i) | |
| 163 if b then | |
| 164 if i > n then | |
| 165 bar:RemoveButton(b) | |
| 166 b:Destroy() | |
| 167 btnCfg[i] = nil | |
| 168 else | |
| 169 b:Refresh() | |
| 170 hint = b:GetActionID() | |
| 171 end | |
| 172 elseif i <= n then | |
| 173 local cfg = btnCfg[i] or { } | |
| 174 local success, r = pcall(self.New, self, cfg, bar, i, hint) -- note call semantics for derived class constructors | |
| 175 if success and r then | |
| 176 b = r | |
| 177 bar:AddButton(i,b) | |
| 178 btnCfg[i] = cfg | |
| 179 b:Refresh() | |
| 180 hint = b:GetActionID() | |
| 181 else | |
| 182 n = i - 1 | |
| 183 bar:ClipNButtons(n) | |
| 184 if not success then | |
| 185 geterrorhandler()(r) | |
| 186 end | |
| 187 end | |
| 188 end | |
| 189 i = i + 1 | |
| 190 until b == nil | |
| 143 end | 191 end |
| 144 | 192 |
| 145 function Button:AcquireActionID( id, hint, unique ) | 193 function Button:AcquireActionID( id, hint, unique ) |
| 146 local poolID = self.actionPoolID | 194 local poolID = self.actionPoolID |
| 147 local maxID = self.actionMaxID | 195 local maxID = self.actionMaxID |
