comparison Devian.lua @ 4:247118593c66

Console interface properly resides in XML, and has been fitted with a sizing widget. Console frame can be moved by clicking and dragging anywhere, and can be minimized by right click. Font paths point to the actual addon tree.
author Nenue
date Fri, 18 Dec 2015 19:48:10 -0500
parents 77adceb8ebe4
children ac644fc860cc
comparison
equal deleted inserted replaced
3:957f42cb49d0 4:247118593c66
3 if not LibStub then 3 if not LibStub then
4 print('Something has happened...') 4 print('Something has happened...')
5 end 5 end
6 Devian = LibStub("AceAddon-3.0"):NewAddon("Devian", "AceConsole-3.0", "AceEvent-3.0") 6 Devian = LibStub("AceAddon-3.0"):NewAddon("Devian", "AceConsole-3.0", "AceEvent-3.0")
7 local D = _G.Devian 7 local D = _G.Devian
8 local db
9 local STATE_LOW, STATE_HIGH = 1, 2 8 local STATE_LOW, STATE_HIGH = 1, 2
10 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName() 9 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName()
11 local DEVIAN_FRAME = DevianDebugInfo 10 local DEVIAN_FRAME = DevianConsole
11 local cherry = false
12 if not DevianDB then
13 DevianDB = {
14 ['global'] = {[STATE_LOW] = {}, [STATE_HIGH] = {}},
15 console = true,
16 dnd_status = true,
17 dnd_message = "Debugging. Your messages may get eaten.",
18 x = 100,
19 y = -150,
20 height = 500,
21 width = 600,
22 }
23 cherry = "This is probably the first time, so:\n /dvn 2 to save your regular addon list\n /dvn 1 to save your development addon list\n /dvn to switch between the two\n /dvc to toggle print() frame"
24 end
25 local db = DevianDB
26
27 function D:SavePos(x,y)
28 db.y = DEVIAN_FRAME:GetTop()
29 db.x = DEVIAN_FRAME:GetLeft()
30 db.width = DEVIAN_FRAME:GetWidth()
31 db.height = DEVIAN_FRAME:GetHeight()
32 end
12 33
13 local ScanAddOnList = function(args) 34 local ScanAddOnList = function(args)
14 local list_state 35 local list_state
15 36
16 local mode = tonumber(args:match('^%d$')) 37 local mode = tonumber(args:match('^%d$'))
84 end 105 end
85 end 106 end
86 107
87 -- Debug info 108 -- Debug info
88 local function CreateMessenger() 109 local function CreateMessenger()
89 -- TODO: throw this into an XML file 110 if db.console == true then
90 if not DEVIAN_FRAME then 111 DEVIAN_FRAME:Show()
91 DEVIAN_FRAME = CreateFrame('ScrollingMessageFrame', DEVIAN_FRAME, UIParent) 112 end
92 if not db.console then 113
93 DEVIAN_FRAME:Hide()
94 end
95 end
96 114
97 local f = DEVIAN_FRAME 115 local f = DEVIAN_FRAME
116 --[[
98 f.backdrop = f:CreateTexture('backdrop', 'BACKGROUND') 117 f.backdrop = f:CreateTexture('backdrop', 'BACKGROUND')
99 f.backdrop:SetTexture(1,1,1,1) 118 f.backdrop:SetTexture(1,1,1,1)
100 f.backdrop:SetGradient('HORIZONTAL', 0.2, 0.2, 0.2, 1, 1, 1) 119 f.backdrop:SetGradient('HORIZONTAL', 0.2, 0.2, 0.2, 1, 1, 1)
101 f.backdrop:SetBlendMode('MOD') 120 f.backdrop:SetBlendMode('MOD')
102 f.backdrop:SetAllPoints(f) 121 f.backdrop:SetAllPoints(f)
103 f:AddMessage('init a thing') 122 f:AddMessage('init a thing')
104 123
105 f:EnableMouseWheel(true) 124 f:EnableMouseWheel(true)
106 f:EnableKeyboard(true) 125 f:EnableKeyboard(true)
107 f:SetScript('OnMouseWheel', function (self, delta) 126 f:SetScript('OnMouseWheel', function (self, delta)
108 local up = delta > 0
109 if IsControlKeyDown() then
110 if up then self:ScrollToTop()
111 else self:ScrollToBottom() end
112 elseif IsShiftKeyDown() then
113 if up then self:PageUp()
114 else self:PageDown() end
115 else
116 if up then self:ScrollUp()
117 else self:ScrollDown() end
118 end
119 end) 127 end)
120 128
121 f:ScrollToBottom() 129 f:ScrollToBottom()
122 f:SetMaxLines(500) 130 f:SetMaxLines(500)
123 f:SetInsertMode('BOTTOM') 131 --]]
124 f:SetPoint('BOTTOMLEFT', GENERAL_CHAT_DOCK, 'TOPLEFT', 0, 25) 132 f.console:SetInsertMode('BOTTOM')
125 f:SetPoint('TOPRIGHT', UIParent, 'TOP', 0, 0- PlayerFrame:GetHeight()) 133 f:SetPoint('CENTER', UIParent, 'CENTER', db.x, db.y)
126 f:SetFrameStrata('BACKGROUND') 134 f:SetSize(db.width, db.height)
127 f:SetFont([[Interface\Addons\Turok\Media\font\SourceCodePro-Regular.ttf]], 14, 'NONE') 135 f:Lower()
128 136 f.console:SetFont([[Interface\Addons\Turok\Media\font\SourceCodePro-Regular.ttf]], 13, 'NONE')
129 f:SetFading(false) 137
130 f:SetTimeVisible(2147483647) 138 f.console:SetFading(false)
131 f:SetJustifyH('LEFT') 139 f.console:SetTimeVisible(2147483647)
140 --f:SetJustifyH('LEFT')
132 141
133 142
134 D.debug_init = true 143 D.debug_init = true
135 end 144 end
136 145
175 var = 'nil' 184 var = 'nil'
176 end 185 end
177 186
178 table.insert(buffer, var) 187 table.insert(buffer, var)
179 end 188 end
180 DEVIAN_FRAME:AddMessage(table.concat(buffer, ' ')) 189 DEVIAN_FRAME.console:AddMessage(table.concat(buffer, ' '))
181 table.wipe(buffer) 190 table.wipe(buffer)
182 end 191 end
183 192
184 function D:OnEnable() 193 function D:OnEnable()
185 if db.enabled then 194 if db.enabled then
189 D:Print('Development AddOn list active. Type /dvn to revert to regular operation.') 198 D:Print('Development AddOn list active. Type /dvn to revert to regular operation.')
190 end 199 end
191 end 200 end
192 201
193 function D:OnInitialize() 202 function D:OnInitialize()
194
195 local cherry = false
196 if not DevianDB then
197 DevianDB = {
198 ['global'] = {[STATE_LOW] = {}, [STATE_HIGH] = {}},
199 console = true,
200 dnd_status = true,
201 dnd_message = "Debugging. Your messages may get eaten.",
202 }
203 cherry = "This is probably the first time, so:\n /dvn 2 to save your regular addon list\n /dvn 1 to save your development addon list\n /dvn to switch between the two\n /dvc to toggle print() frame"
204 end
205 db = DevianDB
206 203
207 if not db[PLAYER_REALM] then 204 if not db[PLAYER_REALM] then
208 db[PLAYER_REALM] = {[STATE_LOW] = {}, [STATE_HIGH] = {} } 205 db[PLAYER_REALM] = {[STATE_LOW] = {}, [STATE_HIGH] = {} }
209 if not cherry then 206 if not cherry then
210 cherry = "This character didn't have an AddOn table." 207 cherry = "This character didn't have an AddOn table."