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