Mercurial > wow > devian
view 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 |
line wrap: on
line source
-- Mixin for console local _, D = ... DevianConsoleMixin = {} function DevianConsoleMixin:OnLoad() self:SetMaxResize(GetScreenWidth(), GetScreenHeight()) self:SetMinResize(100, 24) self:EnableMouse(true) self:RegisterForDrag('LeftButton') self:SetMovable(true) self:SetResizable(true) self.out:SetFont("Interface\\Addons\\Devian\\font\\SourceCodePro-Regular.ttf", 13, 'NORMAL') self.out:SetJustifyH('LEFT') self.out:SetFading(false) self.width = self:GetWidth() self.height = self:GetWidth() end function DevianConsoleMixin:Setup(info) for k,v in pairs(info) do self[k] = v --oldprint(k,v) end self.Dock = DevianDock:GetDockButton(self) self:Update() end function DevianConsoleMixin:Update() self.title:SetText(self.index..' '.. (self.signature or '?')) self:SetSize(self.width, self.height) self:SetPoint('TOPLEFT', UIParent, 'TOPLEFT', self.x, self.y) -- oldprint(self:GetName(), self.x, self.y) local isFront = D.currentProfile.current_channel == self.index local r,g,b,a = unpack(D.db.backborder) if isFront then r,g,b,a = unpack(D.db.frontborder) self.backdrop:SetColorTexture(0,0,0,1) else self.backdrop:SetColorTexture(0,0,0,0.5) end for name, region in pairs(self.border) do region:SetColorTexture(r,g,b,a) end --oldprint(self:GetID(), self.enabled, self.minimized, self.x, self.y) self.isFront = isFront self:SetShown(self.enabled) self.out:SetShown(self.enabled) end function DevianConsoleMixin:OnShow() self:Update() end function DevianConsoleMixin:OnHide() end function DevianConsoleMixin:OnMouseWheel(delta) local up = delta > 0 if IsControlKeyDown() then if up then self.out:ScrollToTop() else self.out:ScrollToBottom() end elseif IsShiftKeyDown() then if up then self.out:PageUp() else self.out:PageDown() end else if up then self.out:ScrollUp() else self.out:ScrollDown() end end end function DevianConsoleMixin:MinMax(minimized) minimized = minimized or self.minimized if minimized then self:Maximize() else self:Minimize() end end function DevianConsoleMixin:Minimize() self:SetHeight(20) self:SetMaxResize(GetScreenWidth(),20) self.minimized = true self.out:Hide() D.channels[self.index].minimized = true end function DevianConsoleMixin:Maximize() local db = D.channels[self.index] self:SetHeight(db.height) self:SetMaxResize(GetScreenWidth(),GetScreenHeight()) self.minimized = nil self.out:Show() D.channels[self.index].minimized = nil end function DevianConsoleMixin:OnMouseUp(button) if button == 'LeftButton' then self:ToFront() else self:MinMax() end end function DevianConsoleMixin:OnLeave() end function DevianConsoleMixin:OnEnter() end function DevianConsoleMixin:OnDragStart() self:StartMoving() end function DevianConsoleMixin:OnDragStop() self.x = self:GetLeft() self.y = self:GetTop() - GetScreenHeight() D.currentProfile.channels[self:GetID()].x = self:GetLeft() D.currentProfile.channels[self:GetID()].y = self:GetTop() - GetScreenHeight() self:StopMovingOrSizing() end function DevianConsoleMixin:Reset() end function DevianConsoleMixin:ToFront() self:Raise() D.currentProfile.current_channel = self.index for index, channel in ipairs(D.console) do channel:Update() end end function DevianConsoleMixin:Toggle() self.enabled = (not self.enabled) --oldprint(self:GetID(), self.enabled) self:Update() end