changeset 34:daff39af0c6d

changeset logjam
author Nenue
date Tue, 16 Aug 2016 10:24:55 -0400
parents d5e6b2265d6f
children b627b7a7a65c
files LibKraken/LibKraken.toc SkeletonKey/ActionTemplates.lua SkeletonKey/BindingsFrame.lua SkeletonKey/Events.lua SkeletonKey/KeyButton.lua SkeletonKey/SkeletonKey.xml
diffstat 6 files changed, 148 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/LibKraken/LibKraken.toc	Tue Aug 16 10:22:48 2016 -0400
+++ b/LibKraken/LibKraken.toc	Tue Aug 16 10:24:55 2016 -0400
@@ -9,4 +9,4 @@
 ## OptionalDeps: Ace3, LibStub
 
 LibStub\LibStub.lua
-LibKraken-1.0.xml
+LibKraken.xml
--- a/SkeletonKey/ActionTemplates.lua	Tue Aug 16 10:22:48 2016 -0400
+++ b/SkeletonKey/ActionTemplates.lua	Tue Aug 16 10:24:55 2016 -0400
@@ -14,7 +14,7 @@
 local GetNumBindings, GetBinding = GetNumBindings, GetBinding
 
 local kb, print, wrap = LibStub('LibKraken').register(KeyBinder, 'Info')
-local cprint = DEVIAN_WORKSPACE and function(...) _G.print('Cfg', ...) end or function() end
+local cprint = (DEVIAN_PNAME == 'SkeletonKey') and function(...) _G.print('Cfg', ...) end or function() end
 
 local CLICK_KEYBINDER_MACRO = "CLICK KeyBinderMacro:"
 local CLICK_KEYBINDER_KEY = "CLICK KeyBinderKey:"
@@ -302,6 +302,10 @@
 
 kb.UpdatePetInfo = function()
   local hasPetSpells, petType = HasPetSpells()
+
+  --kb.PetCache.specNum = GetSpecialization(nil, true)
+  --kb.PetCache.specID, kb.PetCache.specName = GetSpecializationInfo(petSpec, nil, true)
+
   if PetHasSpellbook() then
     print('PET SPELLBOOK')
     local i = 1
@@ -318,6 +322,11 @@
           print('|cFF00FF88spellslot['..spellName..']|r', '=>', i, subText)
 
           if subText then
+            -- make sure that pet specialization subtext maps correctly
+            --if match(subText, kb.PetCache.specName) then
+            --  subText = 'specialization'
+            --end
+
             kb.PetCache.subtext[subText] = kb.PetCache.subtext[subText] or {}
             specialNum[subText] = (specialNum[subText] or 0) + 1
 
@@ -374,11 +383,15 @@
   local n = GetNumBindings()
   for i=1, n do
     local command, key1, key2 = GetBinding(i)
-    if key1 then
-      kb.SystemBindings[key1] = command
-    end
-    if key2 then
-      kb.SystemBindings[key2] = command
+    if not command:match('ACTION.*%d+') then
+      if key1 then
+        kb.SystemBindings[key1] = command
+      end
+      if key2 then
+        kb.SystemBindings[key2] = command
+      end
+    else
+      print('ignoring action button binding', command)
     end
   end
 end
@@ -394,8 +407,13 @@
 kb.pendingAttributes = {}
 kb.SecureAttribute = function(target, name, value)
   if InCombatLockdown() then
+    if #kb.pendingAttributes == 0 then
+      kb:Print(kb.L('Key bindings will be applied when you exit combat.'))
+    end
+
     tinsert(kb.pendingAttributes, {target, name, value})
     kb:RegisterEvent('PLAYER_REGEN_ENABLED')
+
   else
 
     print(target:GetName(), 'attribute', '"'.. tostring(name)..'" = "'..tostring(value)..'"')
--- a/SkeletonKey/BindingsFrame.lua	Tue Aug 16 10:22:48 2016 -0400
+++ b/SkeletonKey/BindingsFrame.lua	Tue Aug 16 10:24:55 2016 -0400
@@ -32,6 +32,26 @@
   [BINDING_TYPE_GLOBAL] = {0, 1, 1}
 }
 
+--[=[
+  -- some useful texture paths
+  [[Interface\PaperDollInfoFrame\UI-GearManager-Undo]]
+  [[Interface\PetPaperDollFrame\UI-PetHappiness]]
+  [[Interface\RAIDFRAME\ReadyCheck-Waiting]]
+  [[Interface\RAIDFRAME\ReadyCheck-Read]]
+  [[Interface\RAIDFRAME\ReadyCheck-NotReady]]
+  [[Interface\TradeSkillFrame\UI-TradeSkill-LinkButton]]
+  [[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]]
+  [[Interface\UI-TutorialFrame-QuestGiver\UI-TutorialFrame-QuestGray]]
+--]=]
+local lastFolder
+local addT = function(frame, key, folder, name)
+  folder = folder or lastFolder
+  frame[key] = frame:CreateTexture()
+  frame[key]:SetTexture('Interface\\' .. folder .. '\\' .. name)
+  frame[key]:SetPoint('TOPLEFT')
+  lastFolder = folder
+end
+
 local restingAlpha = 0.7
 local fadeTime, fadeDelay = .30, 0.15
 local saveButton
@@ -82,6 +102,7 @@
     end
   elseif click == 'RightButton' then
     kb.ReleaseSlot(self)
+    kb.ui()
   end
 end
 
@@ -181,12 +202,14 @@
   kb.ui(true)
 end
 
-local KeyBinder_CheckButton = function(frame ,enableText, disableText, dbKey, tooltipText, callback)
+local frameCount = 0
+local lastCheckFrame
+local KeyBinder_CheckButton = function(frame ,enableText, disableText, dbKey, tooltipText, callback, header)
   if kb.db[dbKey] then
     frame:SetChecked(true)
   end
-  frame.label:SetText(kb.db[dbKey] and enableText or disableText)
-  frame:SetWidth(frame.label:GetStringWidth()+8)
+
+  frame.header:SetText(header)
 
   frame:SetScript('OnClick', function(self)
     if callback then
@@ -198,8 +221,6 @@
         kb.DeactivateSlot(kb.saveTarget)
       end
     end
-    self.label:SetText(kb.db[dbKey] and enableText or disableText)
-    self:SetWidth(self.label:GetStringWidth()+8)
     kb.ui()
   end)
 
@@ -216,6 +237,25 @@
       GameTooltip:Hide()
     end
   end)
+
+  if frame:GetID() == 0 then
+    frameCount = frameCount + 1
+    frame:SetID(frameCount)
+    print('checkbutton #', frameCount)
+    if frameCount == 1 then
+      frame:ClearAllPoints()
+      frame:SetPoint('TOP', KeyBinderInventoryButton, 'BOTTOM', 0, -22)
+      frame:SetPoint('LEFT', kb.sourcesbg, 'LEFT', 2, 0)
+    else
+      frame:ClearAllPoints()
+      frame:SetPoint('TOPLEFT', lastCheckFrame, 'BOTTOMLEFT', 0, -2)
+    end
+
+    frame.header:ClearAllPoints()
+    frame.header:SetPoint('LEFT', frame, 'RIGHT', 2, 0)
+
+    lastCheckFrame = frame
+  end
 end
 
 local KeyBinder_OnHide = function()
@@ -319,8 +359,9 @@
     function() OpenAllBags() end,
     "Interface\\BUTTONS\\UI-MicroButtonCharacter-Up", {0, 1, .4, 1})
 
-  KeyBinder_CheckButton(KeyBinderStickyMode, 'Enabled', 'Disabled', 'stickyMode', 'Keep input active after receiving a key.')
-  KeyBinder_CheckButton(KeyBinderHoverInput, 'MouseOver', 'Click', 'hoverInput', 'Enable key input when the cursor is over a binding slot.')
+  KeyBinder_CheckButton(KeyBinderStickyMode, 'Enabled', 'Disabled', 'stickyMode', 'Keep input active after receiving a key.', nil, 'Sticky:')
+  KeyBinder_CheckButton(KeyBinderHoverInput, 'MouseOver', 'Click', 'hoverInput', 'Enable key input when the cursor is over a binding slot.', nil, 'Bind by:')
+  KeyBinder_CheckButton(KeyBinderProtectBindings, 'Block', 'Allow', 'protectBlizKeys', 'Allow overwriting Blizzard UI bindings.', nil, 'Safety:')
 
 
   KeyBinderUnbindButton:SetScript('OnClick', function()
--- a/SkeletonKey/Events.lua	Tue Aug 16 10:22:48 2016 -0400
+++ b/SkeletonKey/Events.lua	Tue Aug 16 10:24:55 2016 -0400
@@ -60,4 +60,8 @@
 kb.SPELLS_CHANGED = function(self, event, unit)
   print('|cFFFF0088'.. event..'|r', unit)
   kb.UpdatePetInfo()
+end
+
+kb.BINDINGS_UPDATE = function()
+  kb.UpdateSystemBinds()
 end
\ No newline at end of file
--- a/SkeletonKey/KeyButton.lua	Tue Aug 16 10:22:48 2016 -0400
+++ b/SkeletonKey/KeyButton.lua	Tue Aug 16 10:24:55 2016 -0400
@@ -357,6 +357,7 @@
     end
   end
 
+
   if self.command then
     print('['..slot..'] =', self.command, GetBindingKey(self.command))
 
@@ -447,6 +448,10 @@
       self.icon:SetTexture(GetSpellTexture(self.actionID))
     end
   else
+    if kb.saveTarget == self then
+      kb.DeactivateSlot(self)
+    end
+
     self.ignoreTexture:Hide()
   end
 
--- a/SkeletonKey/SkeletonKey.xml	Tue Aug 16 10:22:48 2016 -0400
+++ b/SkeletonKey/SkeletonKey.xml	Tue Aug 16 10:24:55 2016 -0400
@@ -83,6 +83,9 @@
       <Anchor point="TOP" y="-25" x="0" />
     </Anchors>
     <Size x="600" y="200" />
+    <KeyValues>
+      <KeyValue key="DEVIAN_PNAME" value="SkeletonKey"/>
+    </KeyValues>
     <Scripts>
       <OnLoad>
         self:RegisterForDrag('LeftButton')
@@ -197,6 +200,47 @@
       </Layer>
     </Layers>
     <Frames>
+
+
+      <Frame name="KeyBinderTutorial" parent="KeyBinder">
+
+        <Size x="20" y="20" />
+        <Anchors>
+          <Anchor point="TOPLEFT" relativeKey="$parent.footer" x="2" y="-2" />
+          <Anchor point="TOPRIGHT" relativeKey="$parent.footer" x="-2" y="-2" />
+        </Anchors>
+        <Layers>
+          <Layer level="ARTWORK">
+            <Texture name="$parentMouseLeftClick" file="Interface\TutorialFrame\UI-TUTORIAL-FRAME">
+              <Size x="15" y="20"/>
+              <Anchors>
+                <Anchor point="TOPLEFT" />
+              </Anchors>
+              <TexCoords left="0.0019531" right="0.1484375" top="0.4257813" bottom="0.6210938"/>
+            </Texture>
+            <FontString inherits="KTLogString" text="to change a key binding.">
+              <Anchors>
+                <Anchor point="TOPLEFT" relativePoint="TOPRIGHT" relativeTo="$parentMouseLeftClick" x="2" y="0" />
+              </Anchors>
+            </FontString>
+
+            <Texture name="$parentMouseRightClick" file="Interface\TutorialFrame\UI-TUTORIAL-FRAME">
+              <Size x="15" y="20"/>
+              <Anchors>
+                <Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="$parentMouseLeftClick" x="0" y="-2" />
+              </Anchors>
+              <TexCoords left="0.0019531" right="0.1484375" top="0.6269531" bottom="0.8222656"/>
+            </Texture>
+            <FontString inherits="KTLogString" text="to remove actions from profile.">
+              <Anchors>
+                <Anchor point="TOPLEFT" relativePoint="TOPRIGHT" relativeTo="$parentMouseRightClick" x="2" y="0" />
+              </Anchors>
+            </FontString>
+
+          </Layer>
+        </Layers>
+      </Frame>
+
       <Button inherits="UIPanelCloseButton" parentKey="CloseButton">
         <Anchors>
           <Anchor point="TOPRIGHT" />
@@ -224,70 +268,42 @@
       </Button>
 
 
-      <CheckButton name="KeyBinderStickyMode" text="Receiving">
-        <Size  y="28" x="72" />
+      <CheckButton name="KeyBinderStickyMode" inherits="UICheckButtonTemplate">
+        <Size  y="32" x="32" />
+        <Layers>
+          <Layer level="OVERLAY">
+            <FontString parentKey="header" inherits="KTLogString" text="Sticky Mode:" />
+          </Layer>
+        </Layers>
+      </CheckButton>
+
+      <CheckButton name="KeyBinderHoverInput" inherits="UICheckButtonTemplate">
+        <Size  y="32" x="32" />
         <Anchors>
-          <Anchor point="TOPRIGHT" x="-4" y="-48" relativeKey="$parent.headerbg" />
+          <Anchor point="TOPRIGHT" relativePoint="TOPLEFT" x="-4" y="0" relativeTo="KeyBinderStickyMode" />
         </Anchors>
         <Layers>
           <Layer level="OVERLAY">
-            <FontString inherits="KTLogString" text="Sticky Mode:">
+            <FontString parentKey="header" inherits="KTLogString" text="Bind" />
+            <FontString inherits="KTHeaderFont" text="Settings">
               <Anchors>
-                <Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT" x="4" y="4" />
-              </Anchors>
-            </FontString>
-            <FontString parentKey="label" inherits="KTUIPanelFont" text="STICKY_MODE">
-              <Anchors>
-                <Anchor point="LEFT" x="4" />
+                <Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT" x="0" y="32" />
               </Anchors>
             </FontString>
           </Layer>
         </Layers>
-        <NormalTexture>
-          <Color a=".5" r=".3" g="0.5" b="0.2" />
-        </NormalTexture>
-        <CheckedTexture>
-          <Color a="1" r=".3" g="0.9" b=".2" />
-        </CheckedTexture>
-        <HighlightTexture alphaMode="ADD">
-          <Color a="1" r="0.2" g="0.2" b="0.2" />
-        </HighlightTexture>
       </CheckButton>
 
-      <CheckButton name="KeyBinderHoverInput">
-        <Size  y="28" x="72" />
+      <CheckButton name="KeyBinderProtectBindings" inherits="UICheckButtonTemplate">
+        <Size  y="32" x="32" />
         <Anchors>
-          <Anchor point="TOPRIGHT" relativePoint="TOPLEFT" x="-4" y="0" relativeTo="KeyBinderStickyMode" />
+          <Anchor point="TOPRIGHT" relativePoint="TOPLEFT" x="-4" y="0" relativeTo="KeyBinderHoverInput" />
         </Anchors>
-
         <Layers>
           <Layer level="OVERLAY">
-            <FontString parentKey="label" inherits="KTUIPanelFont" text="HOVER_INPUT">
-              <Anchors>
-                <Anchor point="LEFT" x="4" />
-              </Anchors>
-            </FontString>
-            <FontString inherits="KTLogString" text="Bind on:">
-              <Anchors>
-                <Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT" x="4" y="4" />
-              </Anchors>
-            </FontString>
-            <FontString inherits="KTHeaderFont" text="Options">
-              <Anchors>
-                <Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT" x="4" y="24" />
-              </Anchors>
-            </FontString>
+            <FontString parentKey="header" inherits="KTLogString" text="Safe" />
           </Layer>
         </Layers>
-        <NormalTexture>
-          <Color a=".7" r=".5" g=".15" b=".1" />
-        </NormalTexture>
-        <CheckedTexture>
-          <Color a="1" r="1" g=".3" b=".2" />
-        </CheckedTexture>
-        <HighlightTexture alphaMode="ADD">
-          <Color a="1" r="0.2" g="0.2" b="0.2" />
-        </HighlightTexture>
       </CheckButton>
     </Frames>
   </Frame>
@@ -331,10 +347,11 @@
       </Layer>
     </Layers>
     <FontString inherits="NumberFontNormal" justifyH="LEFT">
-
       <Anchors>
         <Anchor point="TOPLEFT" />
       </Anchors>
-        </FontString>
+    </FontString>
   </ScrollingMessageFrame>
+
+
 </Ui>
\ No newline at end of file