# HG changeset patch
# User Flick
# Date 1174426658 0
# Node ID f3a7bfebc283292276ef8d1ce1ce159398ffdbde
# Parent 650f75d0895274ea24c3de02278e4eb643dfb116
Version 0.33
diff -r 650f75d08952 -r f3a7bfebc283 Bindings.xml
--- a/Bindings.xml Tue Mar 20 21:35:57 2007 +0000
+++ b/Bindings.xml Tue Mar 20 21:37:38 2007 +0000
@@ -2,7 +2,7 @@
ReActionAddOn:ToggleLocked()
-
- ReBound:ToggleEnabled()
+
+ ReActionAddOn:ToggleKeybindMode()
diff -r 650f75d08952 -r f3a7bfebc283 Buttons.lua
--- a/Buttons.lua Tue Mar 20 21:35:57 2007 +0000
+++ b/Buttons.lua Tue Mar 20 21:37:38 2007 +0000
@@ -4,6 +4,7 @@
--
local AceOO = AceLibrary("AceOO-2.0")
+local ReBound = AceLibrary("ReBound-1.0")
local Action = AceOO.Class(
ReAction,
@@ -20,7 +21,7 @@
)
-ReAction:AddButtonType( "Action", Action, 120 )
+ReAction:AddButtonType( "Action", Action, 120 )
ReAction:AddButtonType( "Pet Action", PetAction, 10 )
@@ -34,8 +35,10 @@
ids = { },
selfcast = nil,
keyBindLoc = "TOPRIGHT",
+ keyBindRightLoc = "RIGHT",
stackCountLoc = "BOTTOMRIGHT",
showKeyBind = true,
+ showKeyBindRight = false,
showStackCount = true,
showMacroText = true,
showBorder = true,
@@ -123,6 +126,7 @@
end
end,
validate = { "default", "none", "alt", "ctrl", "shift", "right-click" },
+ order = 101
},
opacity = {
@@ -206,6 +210,23 @@
},
},
+ order = 102,
+ },
+
+ displaysep = {
+ type = "header",
+ name = " ",
+ desc = " ",
+ order = 103,
+ },
+
+ showkeybind = {
+ type = "toggle",
+ name = "Show Hotkey",
+ desc = "Toggle show/hide hot key labels",
+ get = function() return config.showKeyBind end,
+ set = function() config.showKeyBind = not config.showKeyBind ; refresh() end,
+ order = 104,
},
keyloc = {
@@ -214,24 +235,39 @@
desc = "Sets hotkey location",
get = function() return config.keyBindLoc end,
set = function(loc) config.keyBindLoc = loc ; refresh() end,
+ hidden = function() return not config.showKeyBind end,
validate = labelPlacementOptions,
+ order = 105,
},
- stackloc = {
- type = "text",
- name = "Stack Count Location",
- desc = "Sets stack count location",
- get = function() return config.stackCountLoc end,
- set = function(loc) config.stackCountLoc = loc ; refresh() end,
- validate = labelPlacementOptions,
+ showKeyBindRight = {
+ type = "toggle",
+ name = "Show Right-click Hotkey",
+ desc = "Toggle show/hide right-click hot key labels",
+ get = function() return config.showKeyBindRight end,
+ set = function() config.showKeyBindRight = not config.showKeyBindRight ; refresh() end,
+ order = 106,
},
- showkeybind = {
+ rightkeyloc = {
+ type = "text",
+ name = "Right-click Hotkey Location",
+ desc = "Sets right-click hotkey location",
+ get = function() return config.keyBindRightLoc end,
+ set = function(loc) config.keyBindRightLoc = loc ; refresh() end,
+ hidden = function() return not config.showKeyBindRight end,
+ validate = labelPlacementOptions,
+ order = 107,
+ },
+
+ colorhotkeys = {
type = "toggle",
- name = "Show Hotkey",
- desc = "Toggle show/hide hot key labels",
- get = function() return config.showKeyBind end,
- set = function() config.showKeyBind = not config.showKeyBind ; refresh() end,
+ name = "Colorize Hotkeys",
+ desc = "Toggles coloring hotkeys based on the modifier key. Out-of-range coloring is always enabled.",
+ get = function() return config.keyBindColorCode end,
+ set = function() config.keyBindColorCode = not config.keyBindColorCode ; refresh() end,
+ hidden = function() return not config.showKeyBind and not config.showKeyBindRight end,
+ order = 109,
},
showstackcount = {
@@ -240,6 +276,18 @@
desc = "Toggle show/hide stack count labels",
get = function() return config.showStackCount end,
set = function() config.showStackCount = not config.showStackCount ; refresh() end,
+ order = 110,
+ },
+
+ stackloc = {
+ type = "text",
+ name = "Stack Count Location",
+ desc = "Sets stack count location",
+ get = function() return config.stackCountLoc end,
+ set = function(loc) config.stackCountLoc = loc ; refresh() end,
+ hidden = function() return not config.showStackCount end,
+ validate = labelPlacementOptions,
+ order = 111,
},
showmacrotext = {
@@ -248,6 +296,7 @@
desc = "Toggle show/hide macro name labels",
get = function() return config.showMacroText end,
set = function() config.showMacroText = not config.showMacroText ; refresh() end,
+ order = 112,
},
hidecooldown = {
@@ -256,6 +305,7 @@
desc = "Hides all cooldown displays on buttons. Toggling this on does not hide currently running cooldowns.",
get = function() return config.hideCooldown end,
set = function() config.hideCooldown = not config.hideCooldown ; refresh() end,
+ order = 114,
},
hideglobalcooldown = {
@@ -264,14 +314,8 @@
desc = "Disables the global cooldown from being displayed on buttons.",
get = function() return config.hideGlobalCooldown end,
set = function() config.hideGlobalCooldown = not config.hideGlobalCooldown ; refresh() end,
- },
-
- colorhotkeys = {
- type = "toggle",
- name = "Colorize Hotkeys",
- desc = "Toggles coloring hotkeys based on the modifier key. Out-of-range coloring is always enabled.",
- get = function() return config.keyBindColorCode end,
- set = function() config.keyBindColorCode = not config.keyBindColorCode ; refresh() end,
+ hidden = function() return not config.hideCooldown end,
+ order = 115,
},
--[[
@@ -355,11 +399,7 @@
self:SetupDisplay("ReActionButton"..id)
self:SetupAction()
-
- -- register button with ReBound for keybinding
- if ReBound then
- ReBound:AddKeybindTarget(self:GetActionFrame())
- end
+ ReBound:Register(self:GetActionFrame())
end
function PetAction.prototype:init( id )
@@ -367,10 +407,6 @@
self:SetupDisplay("ReActionPetButton"..id)
self:SetupAction()
-
- -- register button with ReBound for keybinding
- if ReBound then
- ReBound:AddKeybindTarget(self:GetActionFrame())
- end
+ ReBound:Register(self:GetActionFrame())
end
diff -r 650f75d08952 -r f3a7bfebc283 Defaults.lua
--- a/Defaults.lua Tue Mar 20 21:35:57 2007 +0000
+++ b/Defaults.lua Tue Mar 20 21:37:38 2007 +0000
@@ -14,8 +14,8 @@
-- default saved variables
ReAction_DefaultProfile = {
hideArt = false,
-
- bars = { }
+ bars = { },
+ bindings = { }
}
ReAction_DefaultBarConfig = {
diff -r 650f75d08952 -r f3a7bfebc283 KeybindDialog.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/KeybindDialog.xml Tue Mar 20 21:37:38 2007 +0000
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ table.insert(UISpecialFrames, this:GetName())
+
+
+ ReActionAddOn:SetKeybindMode(false)
+ if this.save then
+ this.save = false
+ SaveBindings(GetCurrentBindingSet())
+ else
+ LoadBindings(GetCurrentBindingSet())
+ end
+
+
+
+
+
diff -r 650f75d08952 -r f3a7bfebc283 Options.lua
--- a/Options.lua Tue Mar 20 21:35:57 2007 +0000
+++ b/Options.lua Tue Mar 20 21:37:38 2007 +0000
@@ -32,11 +32,12 @@
func = "Unlock",
},
- bindings = {
- type = "execute",
- name = "bindings",
- desc = "Launches keybinding setup mode",
- func = function() ReBound:Enable() end,
+ keybind = {
+ type = "toggle",
+ name = "keybind",
+ desc = "keybind setup mode",
+ get = "GetKeybindMode",
+ set = "SetKeybindMode",
},
hideart = {
@@ -71,16 +72,6 @@
desc = "Resets to single bar in the default position",
func = "ResetBars",
},
-
- --[[
- resync = {
- type = "execute",
- name = "resync",
- desc = "Re-orders action IDs sequentially amongst bars",
- func = "ResyncActionIDs",
- disabled = true -- not yet implemented
- },
- ]]
}
}
@@ -117,11 +108,12 @@
order = 3,
},
- bindings = {
- type = "execute",
+ keybind = {
+ type = "toggle",
name = "Set Key Bindings",
- desc = "Launches keybinding setup mode",
- func = function() ReBound:Enable() end,
+ desc = "keybind setup mode",
+ get = "GetKeybindMode",
+ set = "SetKeybindMode",
order = 4,
},
@@ -134,16 +126,6 @@
order = 6,
},
- --[[
- resync = {
- type = "execute",
- name = "Re-sync Action IDs",
- desc = "Re-orders action IDs sequentially amongst bars",
- func = "ResyncActionIDs",
- disabled = true, -- not yet implemented
- },
- ]]
-
}
}
diff -r 650f75d08952 -r f3a7bfebc283 README.html
--- a/README.html Tue Mar 20 21:35:57 2007 +0000
+++ b/README.html Tue Mar 20 21:37:38 2007 +0000
@@ -2,14 +2,21 @@
ReAction: README
+
ReAction
AddOn for World of Warcraft
-
Current Version: 0.32 (alpha)
- Released: 03 Feb 2007
- WoW Version Compatibility/TOC: 2.0.6 / TOC 20003
+
Current Version: 0.33 (alpha)
+ Released: 02 Mar 2007
+ WoW Version Compatibility/TOC: 2.0.8 / TOC 20003
The Basics
ReAction is a replacement for the default Blizzard action bars. It allows you
redefine your action button layout any way you like.
@@ -23,7 +30,8 @@
Automatically anchor bars to each other or the screen edges by holding shift
down as you drag.
Context menus provide independent configuration options for each bar.
-
Point and click keybinding interface.
+
Point and click keybinding interface. You can bind keys to left-click or
+ right-click independently.
Supports multiple 'pages' per bar, configured independently. Automatic stance,
form, and stealth switching among pages is supported, including Shadowform.
Pet action bar is fully supported and configurable.
@@ -80,18 +88,30 @@
mode by alt-clicking the ReAction Control Button (or choosing 'keybinding mode'
from the right-click menu). ReAction button keybindings are not available
from the standard keybindings menu! You must use the ReAction keybinding
- interface.
+ interface. They're even greyed out in the keybinding menu to remind you.
Like configuration mode, normal button operation is disabled while in keybinding
mode (though again, any hotkeys you have assigned will work).
With the keybinding interface out, you can mouseover any ReAction button to
see what its current keybinding is. You can set the keybinding on a button by
- pressing the key, then clicking the button. To clear a keybinding from a ReAction
- button, right-click the button. If you've set up bars with multiple pages, you
+ clicking the button, then pressing the key. To clear a keybinding from a ReAction
+ button, shift-click the button. Tooltips will remind you of this interface.
+ You can also right-click/shift-right-click to set/clear a right-click hotkey,
+ which will simulate right-clicking the button (useful for complex macros, typically
+ to save screen real estate). If you've set up bars with multiple pages, you
can also bind a key to the page up/down buttons on a per-bar basis. Just make
sure the buttons are showing (they can be hidden later) and assign the keybinding
like any other ReAction button.
Keybindings are saved on a per-character basis. Keybinding mode is not available
- if you are in combat, and is automatically cancelled if you enter combat.
+ if you are in combat, and is automatically cancelled if you enter combat. When
+ you first log in with ReAction, it steals the keybindings from the default main
+ action bar (buttons 1-12) and assigns them to the corresponding buttons on the
+ default ReAction bar.
+
Remember to click the 'Save' button to save your keybindings! If you
+ do not, they will automatically revert to the previous bindings when exiting
+ keybinding mode. This can be useful for "trying out" certain layouts
+ briefly, but can also be a serious gotcha if you just hit 'Escape,' or
+ alt-click the ReAction Control Button, or enter combat while in keybinding mode,
+ your bindings will revert to their previous state.
Playing with ReAction
Once you get your keybindings and configuration set up, you're ready to go.
The buttons behave just like regular Blizzard buttons. However, at any time
@@ -114,8 +134,9 @@
during combat. This workaround can be disabled via a configuration option,
but then you can't drag and drop actions onto slots during combat. Pick your
poison, it's a limitation of Blizzard's protection scheme.
-
If you hide the default main menu bar, there is no substitute for the XP
- bar, bag bar, or micro menu bar (although the hotkeys for them still work)
+
If you hide the default main menu bar, there is no substitute provided for
+ the XP bar, bag bar, or micro menu bar (although the hotkeys for them still
+ work). Other addons can provide these features until ReAction supports them.
Known Issues
@@ -127,16 +148,12 @@
you will probably need to move your actions around.
Action IDs may not always be laid out in sequence, meaning that similar
layouts on different machines may put the actions in a different order.
-
Keybindings are only saved per character, which causes problems when switching
- profiles.
There seems to be a big performance hit when first dragging a bar after
- entering configuration mode, and when first enabling keybinding mode.
+ entering configuration mode, and when first enabling keybinding mode. More
+ investigation is necessary.
Future Plans
-
Use override bindings for the keybindings, and automatically switch with
- profiles. Also "steal" bindings from the default UI on first run
- so that they're populated with something reasonable.
Add support for bag bar, shapeshift bar, and micro menu bar. May also add
XP bar to default unit frames for those who don't want to use a unit frame
addon to get the XP bar back.
@@ -156,6 +173,23 @@
Localization
Version History
+
Version 0.33:
+
+
Rewrote the keybinding interface (again). I think I finally like this version.
+ Keybindings are now saved and loaded with the profile, and honor the "character-specific
+ keybindings" setting in the Blizzard Keybinding pane. The default keybindings
+ for action bars are now greyed out in Blizzard's interface to remind you to
+ use ReAction to set bindings for action bars.
+
Moved the Action ID label on the buttons to the center of the button.
+
Added support for binding right-clicks to hotkeys on the main action buttons
+ only (no pet buttons). There is also an option (off by default) to display
+ and specify the location for right-click binding labels.
+
Tweaked the ordering of the bar menus. Some options will automatically show/hide
+ when they are relevant.
+
Converted the core of the keybinding code to an Ace2-style library: ReBound-1.0
+
Did a little bit of code cleanup in main.lua
+
Converted to MIT license
+
Version 0.32:
Fixed a bug with displaying cooldowns generating slews of errors
@@ -207,26 +241,28 @@
Credits
Huge credit to the Ace 2 development team,
whose framework provides a level of functionality that I consider critical to
- the success of this addon.
-
Similarly, enormous credit goes to ckknight,
+ the success of this addon. Similarly, enormous credit goes to ckknight,
whose Dewdrop menuing system and FuBar plugin system are ridiculously easy to
use.
Finally, thanks to my alpha testers and stalwart adventuring companions: Deor,
Nogrim, Sorabel, and Yngvi.
You are free to distribute this AddOn package without notice to the author,
- as long as the package is unmodified, this readme.html file accompanies the
- distribution, and no claim of authorship of the contents of the package is made.
- Derived works are expressly permitted but must be clearly labeled as not the
- work of the original author and packaged separately, with credit given to the
- original author. Inclusion of this package within a compilation is expressly
- permitted.
-
The author expressly disclaims any warranty of any kind for the material contained
- in this package. USE AT YOUR OWN RISK.
-
All files in this package under the 'libs/' directory are libraries made available
- by WoWAce, and are not the work of this
- author.
Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is furnished
+ to do so, subject to the following conditions:
+
The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
World of Warcraft is a registered trademark of Blizzard Entertainment, Inc.