Mercurial > wow > devian
changeset 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 | 957f42cb49d0 |
children | ac644fc860cc |
files | Devian.lua Devian.toc Devian.xml |
diffstat | 3 files changed, 162 insertions(+), 41 deletions(-) [+] |
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
--- a/Devian.toc Fri Dec 18 04:10:09 2015 -0500 +++ b/Devian.toc Fri Dec 18 19:48:10 2015 -0500 @@ -8,5 +8,5 @@ ## Version: 0.1 ## SavedVariables: DevianDB ## Deps: Ace3 - +Devian.xml Devian.lua \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Devian.xml Fri Dec 18 19:48:10 2015 -0500 @@ -0,0 +1,124 @@ +<Ui> + <Frame name="DevianConsole" parent="UIParent" enableMouse="true" enableMouseWheel="true" movable="true" resizable="true" toplevel="true" hidden="true" clampedToScreen="true"> + + <Size width="500" height="600"/> + <KeyValues> + <KeyValue key="format" value="Devian [%s]" /> + </KeyValues> + <Scripts> + <OnMouseDown> + if button == 'LeftButton' then + if self.sizer:IsMouseOver() then + return self:StartSizing() + end + return self:StartMoving() + end + </OnMouseDown> + <OnMouseUp> + if button == 'RightButton' then + if not self.minimized then + self.sizer:ClearAllPoints() + self.sizer:SetPoint('TOPRIGHT') + self:SetHeight(20) + self.minimized = true + return self.console:Hide() + else + self.sizer:ClearAllPoints() + self.sizer:SetPoint('BOTTOMRIGHT') + self:SetHeight(DevianDB.height) + self.minimized = nil + return self.console:Show() + end + end + self:StopMovingOrSizing() + Devian:SavePos() + </OnMouseUp> + <OnMouseWheel> + local up = delta > 0 + if IsControlKeyDown() then + if up then self.console:ScrollToTop() + else self.console:ScrollToBottom() end + elseif IsShiftKeyDown() then + if up then self.console:PageUp() + else self.console:PageDown() end + else + if up then self.console:ScrollUp() + else self.console:ScrollDown() end + end + </OnMouseWheel> + <OnUpdate> + if not self.throttle then + self.throttle = GetTime() + elseif (GetTime()-self.throttle < 0.2) then + return + else + self.throttle = GetTime() + end + + self.text:SetText(string.format(self.format, GetTime())) + </OnUpdate> + </Scripts> + + <Frames> + <ScrollingMessageFrame name="$parentBuffer" parentkey="console" maxLines="500" displayduration="2000000"> + <Anchors> + <Anchor point="TOPLEFT" y="-20" /> + <Anchor point="BOTTOMRIGHT" /> + </Anchors> + <FontString font="Interface\Addons\Devian\font\SourceCodePro-Regular.ttf" wordwrap="true" maxLines="500" + justifyH="LEFT" + indented="true" + setAllPoints="true"> + <FontHeight> + <AbsValue val="12"/> + </FontHeight> + </FontString> + + <Layers> + <Layer level="BACKGROUND"> + <Texture name="DevianConsoleBG" parentKey="backdrop" setAllPoints="true" alphaMode="MOD"> + <Color r="1" g="1" b="1" a="1"/> + <Gradient orientation="HORIZONTAL"> + <MinColor a="1" r="0" g="0" b="0"/> + <MaxColor a="1" r="1" g="1" b="1"/> + </Gradient> + </Texture> + </Layer> + </Layers> + </ScrollingMessageFrame> + </Frames> + <Layers> + <Layer level="OVERLAY"> + <Texture parentKey="tbar" alphaMode="BLEND"> + <Anchors> + <Anchor point="TOPLEFT" /> + <Anchor point="TOPRIGHT" /> + </Anchors> + <Size y="20" /> + <Color r="0.3" g="0.3" b="0.3" a="1" /> + </Texture> + <FontString parentKey="text" font="Interface\Addons\Devian\font\SourceCodePro-Bold.ttf" wordwrap="true" maxLines="500" + justifyH="LEFT" + indented="true"> + <Anchors> + <Anchor point="TOPLEFT" x="4" y="-2" /> + <Anchor point="TOPRIGHT" x="-4" /> + </Anchors> + <Size y="20" /> + <FontHeight> + <AbsValue val="12"/> + </FontHeight> + </FontString> + </Layer> + <Layer level="HIGHLIGHT"> + <Texture parentKey="sizer" alphaMode="BLEND"> + <Anchors> + <Anchor point="BOTTOMRIGHT" /> + </Anchors> + <Size x="20" y="20" /> + <Color r="1" g="1" b="1" a="0.7"/> + </Texture> + </Layer> + </Layers> + </Frame> +</Ui> \ No newline at end of file