diff 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
line wrap: on
line diff
--- a/Devian.lua	Fri Dec 18 04:10:09 2015 -0500
+++ b/Devian.lua	Fri Dec 18 19:48:10 2015 -0500
@@ -5,10 +5,31 @@
 end
 Devian = LibStub("AceAddon-3.0"):NewAddon("Devian", "AceConsole-3.0", "AceEvent-3.0")
 local D = _G.Devian
-local db
 local STATE_LOW, STATE_HIGH = 1, 2
 local PLAYER_REALM = UnitName("player") .. '-' .. GetRealmName()
-local DEVIAN_FRAME = DevianDebugInfo
+local DEVIAN_FRAME = DevianConsole
+local cherry = false
+if not DevianDB then
+  DevianDB = {
+    ['global'] = {[STATE_LOW] = {}, [STATE_HIGH] = {}},
+    console = true,
+    dnd_status = true,
+    dnd_message = "Debugging. Your messages may get eaten.",
+    x = 100,
+    y = -150,
+    height = 500,
+    width = 600,
+  }
+  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"
+end
+local db = DevianDB
+
+function D:SavePos(x,y)
+  db.y = DEVIAN_FRAME:GetTop()
+  db.x = DEVIAN_FRAME:GetLeft()
+  db.width = DEVIAN_FRAME:GetWidth()
+  db.height = DEVIAN_FRAME:GetHeight()
+end
 
 local ScanAddOnList = function(args)
   local list_state
@@ -86,15 +107,13 @@
 
 -- Debug info
 local function CreateMessenger()
-  -- TODO: throw this into an XML file
-  if not DEVIAN_FRAME then
-    DEVIAN_FRAME = CreateFrame('ScrollingMessageFrame', DEVIAN_FRAME, UIParent)
-    if not db.console then
-      DEVIAN_FRAME:Hide()
-    end
+  if db.console == true then
+    DEVIAN_FRAME:Show()
   end
 
+
   local f = DEVIAN_FRAME
+  --[[
   f.backdrop = f:CreateTexture('backdrop', 'BACKGROUND')
   f.backdrop:SetTexture(1,1,1,1)
   f.backdrop:SetGradient('HORIZONTAL', 0.2, 0.2, 0.2, 1, 1, 1)
@@ -105,30 +124,20 @@
   f:EnableMouseWheel(true)
   f:EnableKeyboard(true)
   f:SetScript('OnMouseWheel', function (self, delta)
-    local up =  delta > 0
-    if IsControlKeyDown() then
-      if up then self:ScrollToTop()
-      else self:ScrollToBottom() end
-    elseif IsShiftKeyDown() then
-      if up then self:PageUp()
-      else self:PageDown() end
-    else
-      if up then self:ScrollUp()
-      else self:ScrollDown() end
-    end
   end)
 
   f:ScrollToBottom()
   f:SetMaxLines(500)
-  f:SetInsertMode('BOTTOM')
-  f:SetPoint('BOTTOMLEFT', GENERAL_CHAT_DOCK, 'TOPLEFT', 0, 25)
-  f:SetPoint('TOPRIGHT', UIParent, 'TOP', 0, 0- PlayerFrame:GetHeight())
-  f:SetFrameStrata('BACKGROUND')
-  f:SetFont([[Interface\Addons\Turok\Media\font\SourceCodePro-Regular.ttf]], 14, 'NONE')
+  --]]
+  f.console:SetInsertMode('BOTTOM')
+  f:SetPoint('CENTER', UIParent, 'CENTER', db.x, db.y)
+  f:SetSize(db.width, db.height)
+  f:Lower()
+  f.console:SetFont([[Interface\Addons\Turok\Media\font\SourceCodePro-Regular.ttf]], 13, 'NONE')
 
-  f:SetFading(false)
-  f:SetTimeVisible(2147483647)
-  f:SetJustifyH('LEFT')
+  f.console:SetFading(false)
+  f.console:SetTimeVisible(2147483647)
+  --f:SetJustifyH('LEFT')
 
 
   D.debug_init = true
@@ -177,7 +186,7 @@
 
     table.insert(buffer, var)
   end
-  DEVIAN_FRAME:AddMessage(table.concat(buffer, ' '))
+  DEVIAN_FRAME.console:AddMessage(table.concat(buffer, ' '))
   table.wipe(buffer)
 end
 
@@ -192,18 +201,6 @@
 
 function D:OnInitialize()
 
-  local cherry = false
-  if not DevianDB then
-    DevianDB = {
-      ['global'] = {[STATE_LOW] = {}, [STATE_HIGH] = {}},
-      console = true,
-      dnd_status = true,
-      dnd_message = "Debugging. Your messages may get eaten.",
-    }
-    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"
-  end
-  db = DevianDB
-
   if not db[PLAYER_REALM] then
     db[PLAYER_REALM] = {[STATE_LOW] = {}, [STATE_HIGH] = {} }
     if not cherry then