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 |