view Devian.xml @ 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
children ac644fc860cc
line wrap: on
line source
<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 &lt; 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>