changeset 107:8dc0c1917890

- Test fix for frames getting stuck in hidden state when zoning on the move
author Nenue
date Tue, 17 Oct 2017 16:57:38 -0400
parents f8ed212558c1
children 7a36f5a92f0a
files Console.lua Devent.lua Devent.xml Devian.lua Devian.toc Dock.xml
diffstat 6 files changed, 214 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Console.lua	Mon Apr 10 13:22:20 2017 -0400
+++ b/Console.lua	Tue Oct 17 16:57:38 2017 -0400
@@ -26,6 +26,7 @@
 
   self:RegisterEvent('PLAYER_STARTED_MOVING')
   self:RegisterEvent('PLAYER_STOPPED_MOVING')
+  self:RegisterEvent('PLAYER_ENTERING_WORLD')
 
   UIDropDownMenu_Initialize(self.DropdownFrame, function()
     local info = UIDropDownMenu_CreateInfo()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Devent.lua	Tue Oct 17 16:57:38 2017 -0400
@@ -0,0 +1,148 @@
+--
+-- Created by IntelliJ IDEA.
+-- User: Nick
+-- Date: 4/12/2017
+-- Time: 5:07 PM
+-- To change this template use File | Settings | File Templates.
+--
+local tooltip = GameTooltip
+local traces = {}  -- frames
+local eventLog = {} -- events received
+local selectedEvents = {} -- events selected
+local print = function(...) print('Devent', ...) end
+
+--print('Devent script')
+--print('Devent:OnLoad()')
+SLASH_DTRACE1 = "/dtrace"
+
+SlashCmdList.DTRACE = function(args)
+  if #traces == 0 then
+    local trace = CreateFrame('Frame', 'DevianTraceLog'.. (#traces+1), UIParent, 'DevianEventTraceTemplate')
+    tinsert(traces, trace)
+    trace:Setup()
+  end
+
+  traces[1]:Show()
+end
+DevianEventTraceMixin = {
+  events = {},
+  selected = {},
+}
+local tracer = DevianEventTraceMixin
+
+function tracer:OnLoad()
+  self:SetMaxResize(GetScreenWidth(), GetScreenHeight())
+  self:SetMinResize(100, 24)
+  self:EnableMouse(true)
+  self:RegisterForDrag('LeftButton')
+  self:SetMovable(true)
+  self:SetResizable(true)
+  self:SetClampedToScreen(true)
+  self:SetFont("Interface\\Addons\\Devian\\font\\SourceCodePro-Regular.ttf", 13, 'NORMAL')
+  self:SetJustifyH('LEFT')
+  self:SetHyperlinksEnabled(true)
+  self:SetPoint('CENTER')
+  self:SetSize(400,400)
+end
+
+function tracer:Setup(info)
+  if not info then
+    self:RegisterAllEvents()
+    return
+  end
+
+  for _, event in ipairs(self.events) do
+    self:UnregisterEvent(event)
+  end
+
+  for _, event in ipairs(info.events) do
+    self:RegisterEvent(event)
+  end
+end
+
+function tracer:OnHyperlinkEnter(linkdata, link)
+  local messageID = tonumber(linkdata:match('%d+'))
+  if messageID and self.events[messageID] then
+    local data = self.events[messageID]
+    tooltip:SetOwner(self, 'ANCHOR_RIGHT')
+    tooltip:AddLine(data.event)
+    for i, arg in ipairs(data.args) do
+      local argtype = data.argtypes[i]
+      tooltip:AddLine('|cFFAAAAAA'..tostring(argtype)..'|r ' .. tostring(arg))
+    end
+    tooltip:Show()
+  end
+
+end
+
+function tracer:OnHyperlinkLeave(linkdata, link)
+end
+
+function tracer:OnHyperlinkClick(linkdata, link)
+
+  local messageID = tonumber(linkdata:match('%d+'))
+  if messageID and self.events[messageID] then
+    local data = self.events[messageID]
+
+    if self.selected[data.event] then
+      self.selected[data.event] = nil
+    else
+      self.selected[data.event] = true
+    end
+  end
+  self:Update()
+end
+
+function tracer:OnLeave()
+  if tooltip:IsOwned(self) then
+    tooltip:Hide()
+  end
+end
+
+function tracer:OnEvent(event, ...)
+  local entry = {
+    index = #self.events + 1,
+    ts = time(),
+    event = event,
+    args = {},
+    argtypes = {}
+  }
+    for i = 1, select('#', ...) do
+    local arg = select(i,...)
+      entry.argtypes[i] = type(arg)
+      entry.args[i] = tostring(arg)
+  end
+  self.events[entry.index] = entry
+  self:Update()
+end
+
+function tracer:Update()
+  local startingLine = self.CurrentLine or #self.events
+  local prevLine
+  for i = 0, 20 do
+    local index = startingLine - i
+    local line = self.lines[i]
+    if not line then
+      line = self:CreateFontString('EventLine'..i)
+      line:SetFont([[Fonts\ARIALN__.TTF]], 14, 'THIN')
+      line:SetTextColor(1,1,1)
+      self.lines[i] = line
+    end
+    local entry = self.events[index]
+
+    if entry then
+      line:SetText('|Hdevent:'..entry.index..'|h'..entry.event..'|h')
+      line:ClearAllPoints()
+      if prevLine then
+        line:SetPoint('BOTTOMLEFT', prevLine, 'TOPLEFT', 0, 0)
+      else
+        line:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT')
+      end
+      line:Show()
+      prevLine = line
+    else
+      line:Hide()
+    end
+  end
+
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Devent.xml	Tue Oct 17 16:57:38 2017 -0400
@@ -0,0 +1,62 @@
+<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">
+    <Script file="Devent.lua" />
+
+    <Frame name="DevianEventTraceTemplate" virtual="true" mixin="DevianEventTraceMixin">
+
+        <Scripts>
+
+            <OnLoad method="OnLoad" />
+            <OnShow method="OnShow" />
+            <OnHide method="OnHide" />
+            <OnEvent method="OnEvent" />
+            <OnMouseWheel method="OnMouseWheel" />
+            <OnDragStart method="OnDragStart" />
+            <OnDragStop method="OnDragStop" />
+            <OnMouseDown method="OnMouseDown" />
+            <OnMouseUp method="OnMouseUp" />
+            <OnEnter method="OnEnter" />
+            <OnLeave method="OnLeave" />
+            <OnHyperlinkEnter method="OnEnter" />
+            <OnHyperlinkLeave method="OnLeave" />
+        </Scripts>
+
+        <Size x="400" y="800" />
+        <Layers>
+            <Layer level="BACKGROUND">
+                <Texture parentKey="Background" setAllPoints="true">
+                    <Color a="1" r="0" b="0" g="0" />
+                </Texture>
+            </Layer>
+            <Layer level="ARTWORK">
+                <Texture parentKey="TopStripe">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="TOPRIGHT" x="0" y="-3" />
+                    </Anchors>
+                    <Color r="1" g="1" b="1" a="1" />
+                </Texture>
+            </Layer>
+            <Layer level="OVERLAY">
+                <FontString parentKey="Title" inherits="GameFontNormal" text="DEVENT_FRAME">
+                    <Anchors>
+                        <Anchor point="TOP" />
+                    </Anchors>
+                </FontString>
+            </Layer>
+        </Layers>
+
+        <Frames>
+            <Frame parentKey="Details">
+                <Anchors>
+                    <Anchor point="LEFT" relativePoint="RIGHT" />
+                </Anchors>
+                <Layers>
+                    <Layer level="OVERLAY">
+                        <FontString parentKey="Contents" inherits="GameFontNormal" setAllPoints="true" />
+                    </Layer>
+                </Layers>
+            </Frame>
+        </Frames>
+    </Frame>
+</Ui>
\ No newline at end of file
--- a/Devian.lua	Mon Apr 10 13:22:20 2017 -0400
+++ b/Devian.lua	Tue Oct 17 16:57:38 2017 -0400
@@ -33,6 +33,7 @@
 function DevianCore:OnLoad ()
   self:RegisterEvent('ADDON_LOADED')
   self:RegisterEvent('PLAYER_LOGIN')
+
   self:SetShown(true)
 end
 
--- a/Devian.toc	Mon Apr 10 13:22:20 2017 -0400
+++ b/Devian.toc	Tue Oct 17 16:57:38 2017 -0400
@@ -6,6 +6,7 @@
 ## SavedVariables: DevianDB, DevianLoadMessage
 Devian.xml
 Console.xml
+Devent.xml
 Dock.xml
 Locale.lua
 UI.lua
--- a/Dock.xml	Mon Apr 10 13:22:20 2017 -0400
+++ b/Dock.xml	Tue Oct 17 16:57:38 2017 -0400
@@ -36,7 +36,7 @@
   </Frame>
 
 
-  <Button name="DevianDockTabTemplate" hidden="true" virtual="true" enableMouse="true" alpha="1" frameStrata="MEDIUM" mixin="DevianDockTabMixin">
+  <Button name="DevianDockTabTemplate" hidden="true" virtual="true" enableMouse="true" alpha="1" frameStrata="DIALOG" mixin="DevianDockTabMixin">
     <Size x="64" y="24" />
 
     <Scripts>