Mercurial > wow > reaction
changeset 6:2da5089ab7ff
(none)
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Tue, 20 Mar 2007 21:20:20 +0000 |
parents | 27aeec452e7f |
children | f920db5fc6b1 |
files | classes/ReBinder.lua classes/ReBinder.xml |
diffstat | 2 files changed, 0 insertions(+), 374 deletions(-) [+] |
line wrap: on
line diff
--- a/classes/ReBinder.lua Tue Mar 20 21:20:05 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ --- ReBinder.lua --- - -ReBinder = { } - --- initial values -ReBinder.active = false - -ReBinder.targets = { } - -function ReBinder:AddKeybindTarget( t ) - if t then - self.targets[t] = CreateFrame("Button", nil, t, "ReBinderClickBindingTemplate") - self.targets[t].keybindTarget = t:GetName() - end -end - -function ReBinder:RemoveKeybindTarget( t ) - if t then - self.targets[t] = nil - end -end - -function ReBinder:ShowClickBindingButtons() - for _, clickFrame in pairs(self.targets) do - clickFrame:Show() - end -end - -function ReBinder:HideClickBindingButtons() - for _, clickFrame in pairs(self.targets) do - clickFrame:Hide() - end -end - -function ReBinder:ClearSelectedKey() - self.selectedKey = nil -end - -function ReBinder:ToggleEnabled() - if self:IsEnabled() then - self:Disable() - else - self:Enable() - end -end - -function ReBinder:IsEnabled() - return ReBinderFrame:IsVisible() -end - -function ReBinder:Enable() - ReBinderFrame:Show() -end - -function ReBinder:Disable() - ReBinderFrame:Hide() -end - - -function ReBinder:HandleKeyPressed( key ) - if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then - return - end - if IsShiftKeyDown() then - key = "SHIFT-"..key - end - if IsControlKeyDown() then - key = "CTRL-"..key - end - if IsAltKeyDown() then - key = "ALT-"..key - end - if key == "ESCAPE" or GetBindingAction(key) == "REBINDER_TOGGLEBINDINGMODE" then - ReBinderFrame:Hide() - return nil, nil - end - - self.selectedKey = key - - local keyTxt = GetBindingText(key, "KEY_") - local cmd = GetBindingAction(key) - local cmdTxt - - if cmd then - cmdTxt = GetBindingText(cmd, "BINDING_NAME_") - end - - -- make click-bindings look prettier - local btnName - if cmdTxt then - btnName = string.match(cmdTxt,"CLICK (.+)\:LeftButton") - btnName = btnName or string.match(cmdTxt,"CLICK (.+)\:RightButton") - end - - return keyTxt, btnName or cmdTxt -end - --- TODO: move to override-binding model and store data in profile -function ReBinder:BindSelectedKeyTo( btnName ) - if self.selectedKey and btnName then - self:ClearBinding(btnName) - SetBindingClick(self.selectedKey, btnName, "LeftButton") - SaveBindings(2) -- 2 = character-specific - ReBinderFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName) - ReBinderFrame.selectedKey:SetText("(none)") - ReBinderFrame.currentAction:SetText("(none)") - self.selectedKey = nil - end -end - - -function ReBinder:ClearBinding( btnName ) - if btnName then - local current = GetBindingKey("CLICK "..btnName..":LeftButton") - if current then - SetBinding(current, nil) - ReBinderFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r") - end - end -end - - -function ReBinder:UpdateCurrentTarget( btnName ) - local msg = "" - if btnName then - msg = btnName.." is currently " - local current = GetBindingKey("CLICK "..btnName..":LeftButton") - if current then - msg = msg .. "bound to " .. GetBindingText(current, "KEY_") - else - msg = msg .. " not bound" - end - end - ReBinderFrame.statusMsg:SetText(msg) -end
--- a/classes/ReBinder.xml Tue Mar 20 21:20:05 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,242 +0,0 @@ -<Ui xmlns="http://www.blizzard.com/wow/ui/" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd"> - - - <Button name="ReBinderClickBindingTemplate" virtual="true" hidden="true" toplevel="true" setAllPoints="true"> - <HighlightTexture alphaMode="ADD" file="Interface\Buttons\ButtonHilight-Square"/> - <Layers> - <Layer level="BACKGROUND"> - <Texture> - <Color r="0" g="0" b="0" a="0"/> - </Texture> - </Layer> - </Layers> - <Scripts> - <OnLoad> - this:RegisterForClicks("LeftButtonUp","RightButtonUp") - </OnLoad> - <OnClick> - local mouseBtn = arg1 - if mouseBtn == "LeftButton" then - ReBinder:BindSelectedKeyTo(this.keybindTarget) - elseif mouseBtn == "RightButton" then - ReBinder:ClearBinding(this.keybindTarget) - end - </OnClick> - <PostClick> - this:SetButtonState("NORMAL") - </PostClick> - <OnEnter> - ReBinder:UpdateCurrentTarget(this.keybindTarget) - </OnEnter> - <OnLeave> - ReBinder:UpdateCurrentTarget(nil) - </OnLeave> - </Scripts> - </Button> - - - <!-- this frame covers the entire UIParent. It is visible but empty and in the background, so all it does is consume key presses and unhandled mouse clicks --> - <Button name="ReBinderFrame" frameStrata="BACKGROUND" movable="false" enableMouse="true" enableKeyboard="true" parent="UIParent" hidden="true" setAllPoints="true"> - <Frames> - <!-- this is a dialog frame that appears to provide user feedback for the outer frame --> - <Button name="$parentDialog" frameStrata="DIALOG" movable="true" enableMouse="true"> - <Size> - <AbsDimension x="330" y="350"/> - </Size> - <Anchors> - <Anchor point="CENTER"/> - </Anchors> - <TitleRegion> - <Size> - <AbsDimension x="350" y="30"/> - </Size> - <Anchors> - <Anchor point="TOP"> - <Offset> - <AbsDimension x="0" y="-10"/> - </Offset> - </Anchor> - </Anchors> - </TitleRegion> - <Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true"> - <EdgeSize> - <AbsValue val="16"/> - </EdgeSize> - <TileSize> - <AbsValue val="16"/> - </TileSize> - <BackgroundInsets> - <AbsInset left="4" right="4" top="4" bottom="4"/> - </BackgroundInsets> - </Backdrop> - <Layers> - <Layer level="BACKGROUND"> - <Texture> - <Color r="0" g="0" b="0" a="0.7"/> - </Texture> - </Layer> - <Layer level="ARTWORK"> - <FontString inherits="GameFontNormalLarge" text="Key Binding Setup" justifyH="CENTER"> - <Size> - <AbsDimension x="200" y="30"/> - </Size> - <Anchors> - <Anchor point="TOP"> - <Offset> - <AbsDimension x="0" y="-10"/> - </Offset> - </Anchor> - </Anchors> - </FontString> - <FontString inherits="GameFontNormal" text="Press a key to ready it for assignment, then click a button to assign the key.|nRight-click a button to clear its binding." justifyH="CENTER"> - <Size> - <AbsDimension x="240" y="70"/> - </Size> - <Anchors> - <Anchor point="TOP"> - <Offset> - <AbsDimension x="0" y="-55"/> - </Offset> - </Anchor> - </Anchors> - <Color r="1.0" g="1.0" b="1.0"/> - </FontString> - <FontString inherits="GameFontNormal" text="Selected Key:" justifyH="RIGHT"> - <Size> - <AbsDimension x="175" y="25"/> - </Size> - <Anchors> - <Anchor point="RIGHT" relativePoint="TOP"> - <Offset> - <AbsDimension x="-25" y="-160"/> - </Offset> - </Anchor> - </Anchors> - </FontString> - <FontString inherits="GameFontNormal" text="Current Binding:" justifyH="RIGHT"> - <Size> - <AbsDimension x="175" y="25"/> - </Size> - <Anchors> - <Anchor point="RIGHT" relativePoint="TOP"> - <Offset> - <AbsDimension x="-25" y="-205"/> - </Offset> - </Anchor> - </Anchors> - </FontString> - <FontString name="$parentCurrentActionText" inherits="GameFontNormal" text="(none)" justifyH="CENTER"> - <Size> - <AbsDimension x="140" y="50"/> - </Size> - <Anchors> - <Anchor point="CENTER" relativePoint="TOP"> - <Offset> - <AbsDimension x="75" y="-205"/> - </Offset> - </Anchor> - </Anchors> - <Color r="0" g="1" b="0" a="1"/> - </FontString> - <FontString name="$parentStatusMsg" inherits="GameFontNormal" text="" justifyH="CENTER"> - <Size> - <AbsDimension x="200" y="50"/> - </Size> - <Anchors> - <Anchor point="TOP"> - <Offset> - <AbsDimension x="0" y="-230"/> - </Offset> - </Anchor> - </Anchors> - <Color r="0.1" g="1.0" b="0.1"/> - </FontString> - </Layer> - </Layers> - <Frames> - <Button name="$parentSelectedKey" inherits="UIPanelButtonTemplate2" text="(none)"> - <Size> - <AbsDimension x="140" y="28"/> - </Size> - <Anchors> - <Anchor point="CENTER" relativePoint="TOP"> - <Offset> - <AbsDimension x="75" y="-160"/> - </Offset> - </Anchor> - </Anchors> - </Button> - <Button inherits="GameMenuButtonTemplate" text="Done"> - <Size> - <AbsDimension x="112" y="28"/> - </Size> - <Anchors> - <Anchor point="BOTTOM"> - <Offset> - <AbsDimension x="0" y="10"/> - </Offset> - </Anchor> - </Anchors> - <Scripts> - <OnClick> - this:GetParent():GetParent():Hide() - </OnClick> - </Scripts> - </Button> - </Frames> - <Scripts> - <!-- the dialog frame needs to handle clicks (close button, drag title) so we have to - re-implement the behavior of capturing alternate mouse buttons --> - <OnLoad> - this.selectedKey = getglobal(this:GetName().."SelectedKeyText") - this.currentAction = getglobal(this:GetName().."CurrentActionText") - this:RegisterForClicks("MiddleButtonUp","Button4Up","Button5Up") - </OnLoad> - <OnClick> - local k, a = ReBinder:HandleKeyPressed(arg1) - if k then - this.selectedKey:SetText(k) - this.currentAction:SetText(a or "(none)") - end - </OnClick> - </Scripts> - </Button> - </Frames> - <Scripts> - <OnLoad> - this.selectedKey = getglobal(this:GetName().."DialogSelectedKeyText") - this.currentAction = getglobal(this:GetName().."DialogCurrentActionText") - this.statusMsg = getglobal(this:GetName().."DialogStatusMsg") - tinsert(UISpecialFrames,this:GetName()) - this:RegisterForClicks("MiddleButtonUp","Button4Up","Button5Up") - </OnLoad> - <OnShow> - this.selectedKey:SetText("(none)") - this.currentAction:SetText("(none)") - this.statusMsg:SetText("") - ReBinder:ShowClickBindingButtons() - </OnShow> - <OnHide> - ReBinder:HideClickBindingButtons() - ReBinder:ClearSelectedKey() - </OnHide> - <OnKeyDown> - local k, a = ReBinder:HandleKeyPressed(arg1) - if k then - this.selectedKey:SetText(k) - this.currentAction:SetText(a or "(none)") - end - </OnKeyDown> - <OnClick> - local k, a = ReBinder:HandleKeyPressed(arg1) - if k then - this.selectedKey:SetText(k) - this.currentAction:SetText(a or "(none)") - end - </OnClick> - </Scripts> - </Button> - -</Ui>