Mercurial > wow > devian
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>