Mercurial > wow > reaction
comparison Buttons.lua @ 7:f920db5fc6b1
version 0.3
| author | Flick <flickerstreak@gmail.com> |
|---|---|
| date | Tue, 20 Mar 2007 21:25:29 +0000 |
| parents | |
| children | c05fd3e18b4f |
comparison
equal
deleted
inserted
replaced
| 6:2da5089ab7ff | 7:f920db5fc6b1 |
|---|---|
| 1 -- Buttons.lua | |
| 2 -- | |
| 3 -- Defines button types for use with the ReAction AddOn | |
| 4 -- | |
| 5 | |
| 6 local AceOO = AceLibrary("AceOO-2.0") | |
| 7 | |
| 8 local Action = AceOO.Class( | |
| 9 ReAction, | |
| 10 ReAction.ActionType, | |
| 11 ReAction.ActionDisplay, | |
| 12 ReAction.DefaultColorScheme | |
| 13 ) | |
| 14 | |
| 15 local PetAction = AceOO.Class( | |
| 16 ReAction, | |
| 17 ReAction.PetActionType, | |
| 18 ReAction.PetActionDisplay, | |
| 19 ReAction.DefaultColorScheme | |
| 20 ) | |
| 21 | |
| 22 | |
| 23 ReAction:AddButtonType( "Action", Action, 120 ) | |
| 24 ReAction:AddButtonType( "Pet Action", PetAction, 10 ) | |
| 25 | |
| 26 | |
| 27 | |
| 28 ----------------------- | |
| 29 -- static class members | |
| 30 ----------------------- | |
| 31 Action.defaultProfile = { | |
| 32 type = "ReAction", | |
| 33 subtype = "Action", | |
| 34 ids = { }, | |
| 35 selfcast = nil, | |
| 36 keyBindLoc = "TOPRIGHT", | |
| 37 stackCountLoc = "BOTTOMRIGHT", | |
| 38 showKeyBind = true, | |
| 39 showStackCount = true, | |
| 40 showMacroText = true, | |
| 41 showGrid = false, | |
| 42 showBorder = true, | |
| 43 keyBindColorCode = false, | |
| 44 } | |
| 45 | |
| 46 PetAction.defaultProfile = { | |
| 47 type = "ReAction", | |
| 48 subtype = "Pet Action", | |
| 49 ids = { }, | |
| 50 keyBindLoc = "TOPRIGHT", | |
| 51 showKeyBind = false, | |
| 52 showGrid = false, | |
| 53 showBorder = true, | |
| 54 keyBindColorCode = false, | |
| 55 } | |
| 56 | |
| 57 | |
| 58 | |
| 59 ----------------------- | |
| 60 -- static class methods | |
| 61 ----------------------- | |
| 62 function Action:GetDefaultProfile() | |
| 63 return self.defaultProfile | |
| 64 end | |
| 65 | |
| 66 function PetAction:GetDefaultProfile() | |
| 67 return self.defaultProfile | |
| 68 end | |
| 69 | |
| 70 | |
| 71 | |
| 72 local labelPlacementOptions = { | |
| 73 "TOP", | |
| 74 "BOTTOM", | |
| 75 "LEFT", | |
| 76 "RIGHT", | |
| 77 "TOPLEFT", | |
| 78 "TOPRIGHT", | |
| 79 "BOTTOMLEFT", | |
| 80 "BOTTOMRIGHT" | |
| 81 } | |
| 82 | |
| 83 | |
| 84 function Action:GenerateOptionsTable( config, buttonListFunc ) | |
| 85 | |
| 86 local function refresh() | |
| 87 for _, b in pairs(buttonListFunc()) do | |
| 88 b:UpdateAction() | |
| 89 b:UpdateTooltip() | |
| 90 b:UpdateDisplay() | |
| 91 end | |
| 92 end | |
| 93 | |
| 94 return { | |
| 95 type = "group", | |
| 96 args = { | |
| 97 selfcast = { | |
| 98 type = "text", | |
| 99 name = "Self Cast", | |
| 100 desc = "Choose a modifier key to hold down or an alternate button to click to self-cast spells. ".. | |
| 101 "'default' uses the settings in the Interface Options Advanced panel (use this to achieve 'smart self cast'). ".. | |
| 102 "'right-click' self-casting is not supported for multi-page bars.", | |
| 103 get = function() return config.selfcast or "default" end, | |
| 104 set = function(opt) | |
| 105 if opt == "default" then opt = nil end | |
| 106 config.selfcast = opt | |
| 107 for _, b in pairs(buttonListFunc()) do | |
| 108 b:UpdateSelfcast() | |
| 109 end | |
| 110 end, | |
| 111 validate = { "default", "none", "alt", "ctrl", "shift", "right-click" }, | |
| 112 }, | |
| 113 | |
| 114 keyloc = { | |
| 115 type = "text", | |
| 116 name = "Hotkey Location", | |
| 117 desc = "Sets hotkey location", | |
| 118 get = function() return config.keyBindLoc end, | |
| 119 set = function(loc) config.keyBindLoc = loc ; refresh() end, | |
| 120 validate = labelPlacementOptions, | |
| 121 }, | |
| 122 | |
| 123 stackloc = { | |
| 124 type = "text", | |
| 125 name = "Stack Count Location", | |
| 126 desc = "Sets stack count location", | |
| 127 get = function() return config.stackCountLoc end, | |
| 128 set = function(loc) config.stackCountLoc = loc ; refresh() end, | |
| 129 validate = labelPlacementOptions, | |
| 130 }, | |
| 131 | |
| 132 showkeybind = { | |
| 133 type = "toggle", | |
| 134 name = "Show Hotkey", | |
| 135 desc = "Toggle show/hide hot key labels", | |
| 136 get = function() return config.showKeyBind end, | |
| 137 set = function() config.showKeyBind = not config.showKeyBind ; refresh() end, | |
| 138 }, | |
| 139 | |
| 140 showstackcount = { | |
| 141 type = "toggle", | |
| 142 name = "Show Stack Count", | |
| 143 desc = "Toggle show/hide stack count labels", | |
| 144 get = function() return config.showStackCount end, | |
| 145 set = function() config.showStackCount = not config.showStackCount ; refresh() end, | |
| 146 }, | |
| 147 | |
| 148 showmacrotext = { | |
| 149 type = "toggle", | |
| 150 name = "Show Macro Names", | |
| 151 desc = "Toggle show/hide macro name labels", | |
| 152 get = function() return config.showMacroText end, | |
| 153 set = function() config.showMacroText = not config.showMacroText ; refresh() end, | |
| 154 }, | |
| 155 | |
| 156 showgrid = { | |
| 157 type = "toggle", | |
| 158 name = "Always Show Buttons", | |
| 159 desc = "Show button placeholders when no action is assigned or on the cursor. Note that buttons are always shown when bars are unlocked.", | |
| 160 get = function() return config.showGrid end, | |
| 161 set = function() config.showGrid = not config.showGrid ; refresh() end, | |
| 162 }, | |
| 163 | |
| 164 colorhotkeys = { | |
| 165 type = "toggle", | |
| 166 name = "Colorize Hotkeys", | |
| 167 desc = "Toggles coloring hotkeys based on the modifier key. Out-of-range coloring is always enabled.", | |
| 168 get = function() return config.keyBindColorCode end, | |
| 169 set = function() config.keyBindColorCode = not config.keyBindColorCode ; refresh() end, | |
| 170 }, | |
| 171 | |
| 172 --[[ | |
| 173 hideborder = { | |
| 174 type = "toggle", | |
| 175 name = "Hide Border", | |
| 176 desc = "Toggles hiding of the button border frame.", | |
| 177 get = function() return not config.showBorder end, | |
| 178 set = function() config.showBorder = not config.showBorder ; refresh() end, | |
| 179 },]] | |
| 180 } | |
| 181 } | |
| 182 end | |
| 183 | |
| 184 | |
| 185 function PetAction:GenerateOptionsTable( config, buttonListFunc ) | |
| 186 | |
| 187 local function refresh() | |
| 188 for _, b in pairs(buttonListFunc()) do | |
| 189 b:UpdateAction() | |
| 190 b:UpdateTooltip() | |
| 191 b:UpdateDisplay() | |
| 192 end | |
| 193 end | |
| 194 | |
| 195 return { | |
| 196 type = "group", | |
| 197 args = { | |
| 198 keyloc = { | |
| 199 type = "text", | |
| 200 name = "Hotkey Location", | |
| 201 desc = "Sets hotkey location", | |
| 202 get = function() return config.keyBindLoc end, | |
| 203 set = function(loc) config.keyBindLoc = loc ; refresh() end, | |
| 204 validate = { "TOP", "BOTTOM", "LEFT", "RIGHT", "TOPLEFT", "TOPRIGHT", "BOTTOMLEFT", "BOTTOMRIGHT" }, | |
| 205 }, | |
| 206 | |
| 207 showkeybind = { | |
| 208 type = "toggle", | |
| 209 name = "Show Hotkey", | |
| 210 desc = "Toggle show/hide hot key labels", | |
| 211 get = function() return config.showKeyBind end, | |
| 212 set = function() config.showKeyBind = not config.showGrid ; refresh() end, | |
| 213 }, | |
| 214 | |
| 215 showgrid = { | |
| 216 type = "toggle", | |
| 217 name = "Always Show Buttons", | |
| 218 desc = "Show button placeholders when no action is assigned or on the cursor. Note that buttons are always shown when bars are unlocked.", | |
| 219 get = function() return config.showGrid end, | |
| 220 set = function() config.showGrid = not config.showGrid ; refresh() end, | |
| 221 }, | |
| 222 | |
| 223 colorhotkeys = { | |
| 224 type = "toggle", | |
| 225 name = "Colorize Hotkeys", | |
| 226 desc = "Toggles coloring hotkeys based on the modifier key. Out-of-range coloring is always enabled.", | |
| 227 get = function() return config.keyBindColorCode end, | |
| 228 set = function() config.keyBindColorCode = not config.keyBindColorCode ; refresh() end, | |
| 229 }, | |
| 230 | |
| 231 --[[ | |
| 232 hideborder = { | |
| 233 type = "toggle", | |
| 234 name = "Hide Border", | |
| 235 desc = "Toggles hiding of the button border frame.", | |
| 236 get = function() return not config.showBorder end, | |
| 237 set = function() config.showBorder = not config.showBorder ; refresh() end, | |
| 238 },]] | |
| 239 } | |
| 240 } | |
| 241 end | |
| 242 | |
| 243 | |
| 244 | |
| 245 ---------------------- | |
| 246 -- Instance methods | |
| 247 ---------------------- | |
| 248 function Action.prototype:init( id ) | |
| 249 Action.super.prototype.init(self) | |
| 250 | |
| 251 self:SetupDisplay("ReActionButton"..id) | |
| 252 self:SetupAction() | |
| 253 | |
| 254 -- register button with ReBound for keybinding | |
| 255 if ReBound then | |
| 256 ReBound:AddKeybindTarget(self:GetActionFrame()) | |
| 257 end | |
| 258 end | |
| 259 | |
| 260 function PetAction.prototype:init( id ) | |
| 261 Action.super.prototype.init(self) | |
| 262 | |
| 263 self:SetupDisplay("ReActionPetButton"..id) | |
| 264 self:SetupAction() | |
| 265 | |
| 266 -- register button with ReBound for keybinding | |
| 267 if ReBound then | |
| 268 ReBound:AddKeybindTarget(self:GetActionFrame()) | |
| 269 end | |
| 270 end | |
| 271 |
