annotate Console.lua @ 98:33bc8baba858

start of a lot of v3 groundwork based on better knowledge of the addon interface: - use of mixin as a lexical center for generated frames - removal of unfinished segments
author Nenue
date Wed, 26 Oct 2016 10:17:43 -0400
parents
children 7d94df3804a7
rev   line source
Nenue@98 1 -- Mixin for console
Nenue@98 2 local _, D = ...
Nenue@98 3 DevianConsoleMixin = {}
Nenue@98 4
Nenue@98 5 function DevianConsoleMixin:OnLoad()
Nenue@98 6 self:SetMaxResize(GetScreenWidth(), GetScreenHeight())
Nenue@98 7 self:SetMinResize(100, 24)
Nenue@98 8
Nenue@98 9 self:EnableMouse(true)
Nenue@98 10 self:RegisterForDrag('LeftButton')
Nenue@98 11 self:SetMovable(true)
Nenue@98 12 self:SetResizable(true)
Nenue@98 13 self.out:SetFont("Interface\\Addons\\Devian\\font\\SourceCodePro-Regular.ttf", 13, 'NORMAL')
Nenue@98 14 self.out:SetJustifyH('LEFT')
Nenue@98 15 self.out:SetFading(false)
Nenue@98 16
Nenue@98 17 self.width = self:GetWidth()
Nenue@98 18 self.height = self:GetWidth()
Nenue@98 19 end
Nenue@98 20
Nenue@98 21 function DevianConsoleMixin:Setup(info)
Nenue@98 22 for k,v in pairs(info) do
Nenue@98 23 self[k] = v
Nenue@98 24 --oldprint(k,v)
Nenue@98 25 end
Nenue@98 26 self.Dock = DevianDock:GetDockButton(self)
Nenue@98 27 self:Update()
Nenue@98 28 end
Nenue@98 29
Nenue@98 30 function DevianConsoleMixin:Update()
Nenue@98 31 self.title:SetText(self.index..' '.. (self.signature or '?'))
Nenue@98 32 self:SetSize(self.width, self.height)
Nenue@98 33 self:SetPoint('TOPLEFT', UIParent, 'TOPLEFT', self.x, self.y)
Nenue@98 34 -- oldprint(self:GetName(), self.x, self.y)
Nenue@98 35
Nenue@98 36 local isFront = D.currentProfile.current_channel == self.index
Nenue@98 37 local r,g,b,a = unpack(D.db.backborder)
Nenue@98 38 if isFront then
Nenue@98 39 r,g,b,a = unpack(D.db.frontborder)
Nenue@98 40 self.backdrop:SetColorTexture(0,0,0,1)
Nenue@98 41 else
Nenue@98 42 self.backdrop:SetColorTexture(0,0,0,0.5)
Nenue@98 43
Nenue@98 44 end
Nenue@98 45 for name, region in pairs(self.border) do
Nenue@98 46 region:SetColorTexture(r,g,b,a)
Nenue@98 47 end
Nenue@98 48
Nenue@98 49 --oldprint(self:GetID(), self.enabled, self.minimized, self.x, self.y)
Nenue@98 50 self.isFront = isFront
Nenue@98 51 self:SetShown(self.enabled)
Nenue@98 52 self.out:SetShown(self.enabled)
Nenue@98 53 end
Nenue@98 54
Nenue@98 55
Nenue@98 56 function DevianConsoleMixin:OnShow()
Nenue@98 57 self:Update()
Nenue@98 58 end
Nenue@98 59
Nenue@98 60
Nenue@98 61
Nenue@98 62 function DevianConsoleMixin:OnHide() end
Nenue@98 63
Nenue@98 64 function DevianConsoleMixin:OnMouseWheel(delta)
Nenue@98 65
Nenue@98 66 local up = delta > 0
Nenue@98 67 if IsControlKeyDown() then
Nenue@98 68 if up then self.out:ScrollToTop()
Nenue@98 69 else self.out:ScrollToBottom() end
Nenue@98 70 elseif IsShiftKeyDown() then
Nenue@98 71 if up then self.out:PageUp()
Nenue@98 72 else self.out:PageDown() end
Nenue@98 73 else
Nenue@98 74 if up then self.out:ScrollUp()
Nenue@98 75 else self.out:ScrollDown() end
Nenue@98 76 end
Nenue@98 77 end
Nenue@98 78 function DevianConsoleMixin:MinMax(minimized)
Nenue@98 79 minimized = minimized or self.minimized
Nenue@98 80 if minimized then
Nenue@98 81 self:Maximize()
Nenue@98 82 else
Nenue@98 83 self:Minimize()
Nenue@98 84 end
Nenue@98 85 end
Nenue@98 86
Nenue@98 87 function DevianConsoleMixin:Minimize()
Nenue@98 88 self:SetHeight(20)
Nenue@98 89 self:SetMaxResize(GetScreenWidth(),20)
Nenue@98 90 self.minimized = true
Nenue@98 91 self.out:Hide()
Nenue@98 92 D.channels[self.index].minimized = true
Nenue@98 93 end
Nenue@98 94
Nenue@98 95 function DevianConsoleMixin:Maximize()
Nenue@98 96 local db = D.channels[self.index]
Nenue@98 97 self:SetHeight(db.height)
Nenue@98 98 self:SetMaxResize(GetScreenWidth(),GetScreenHeight())
Nenue@98 99 self.minimized = nil
Nenue@98 100 self.out:Show()
Nenue@98 101 D.channels[self.index].minimized = nil
Nenue@98 102 end
Nenue@98 103
Nenue@98 104 function DevianConsoleMixin:OnMouseUp(button)
Nenue@98 105 if button == 'LeftButton' then
Nenue@98 106 self:ToFront()
Nenue@98 107 else
Nenue@98 108 self:MinMax()
Nenue@98 109 end
Nenue@98 110 end
Nenue@98 111
Nenue@98 112 function DevianConsoleMixin:OnLeave()
Nenue@98 113 end
Nenue@98 114
Nenue@98 115 function DevianConsoleMixin:OnEnter()
Nenue@98 116 end
Nenue@98 117
Nenue@98 118 function DevianConsoleMixin:OnDragStart()
Nenue@98 119
Nenue@98 120 self:StartMoving()
Nenue@98 121 end
Nenue@98 122
Nenue@98 123 function DevianConsoleMixin:OnDragStop()
Nenue@98 124 self.x = self:GetLeft()
Nenue@98 125 self.y = self:GetTop() - GetScreenHeight()
Nenue@98 126 D.currentProfile.channels[self:GetID()].x = self:GetLeft()
Nenue@98 127 D.currentProfile.channels[self:GetID()].y = self:GetTop() - GetScreenHeight()
Nenue@98 128 self:StopMovingOrSizing()
Nenue@98 129 end
Nenue@98 130
Nenue@98 131 function DevianConsoleMixin:Reset()
Nenue@98 132 end
Nenue@98 133
Nenue@98 134 function DevianConsoleMixin:ToFront()
Nenue@98 135 self:Raise()
Nenue@98 136 D.currentProfile.current_channel = self.index
Nenue@98 137 for index, channel in ipairs(D.console) do
Nenue@98 138 channel:Update()
Nenue@98 139 end
Nenue@98 140 end
Nenue@98 141
Nenue@98 142 function DevianConsoleMixin:Toggle()
Nenue@98 143 self.enabled = (not self.enabled)
Nenue@98 144 --oldprint(self:GetID(), self.enabled)
Nenue@98 145 self:Update()
Nenue@98 146 end