All pastes #62231 Raw Edit

Someone

public text v1 · immutable
#62231 ·published 2006-06-05 19:04 UTC
rendered paste body
idActionBar = {}
idActionBar.hook = {}
idActionBar.boolDebug = false

function idActionBar:debug(var)
    if self.boolDebug
        then DEFAULT_CHAT_FRAME:AddMessage(var)
    end
end

function idActionBar:ActionButtonDown(b)
    b = getglobal('idActionButton'..b)
    if b:GetButtonState() == 'NORMAL' then
        b:SetButtonState('PUSHED')
    end
end

function idActionBar:ActionButtonUp(b)
    b = getglobal('idActionButton'..b)
    if b:GetButtonState() == 'PUSHED' then
        b:SetButtonState('NORMAL')
        UseAction(ActionButton_GetPagedID(b), 0, onSelf)
        if IsCurrentAction(ActionButton_GetPagedID(b)) then
            b:SetChecked(1)
        else
            b:SetChecked(0)
        end
    end
end

function idActionBar:newBar(parent, frame, first, rows, cols, spacing)
    local Button, ButtonUnder, ButtonLeft

    Button=getglobal(frame..first) -- the first button
    self:alterButtonLooks(Button)

    parent:SetFrameStrata('BACKGROUND')
    parent:SetHeight(rows * Button:GetHeight() + (rows * spacing) - spacing)
    parent:SetWidth(cols * Button:GetWidth() + (cols * spacing) - spacing)

    Button:SetParent(parent)
    Button:SetPoint('BOTTOMLEFT', parent, 'BOTTOMLEFT')
    Button:Show()

    for i=first+1, rows*cols do
        Button = getglobal(frame..i)

        if math.mod(i-1, cols) == 0 then
            ButtonUnder = getglobal(frame..i-cols)
            Button:ClearAllPoints()
            Button:SetPoint('BOTTOM', ButtonUnder, 'TOP', 0, spacing)
        else
            ButtonLeft = getglobal(frame..i-1)
            Button:ClearAllPoints()
            Button:SetPoint('LEFT', ButtonLeft, 'RIGHT', spacing, 0)
        end

        self:alterButtonLooks(Button)
        Button:SetParent(parent)
        Button:Show()
    end
end

idActionBar.main = {}
function idActionBar.main:Enable()
    self.wrap = CreateFrame('frame', nil, UIParent)

    idActionBar:newBar(self.wrap, 'idActionButton', 1, 3, 12, 0)

    self.wrap:ClearAllPoints()
    self.wrap:SetPoint('BOTTOM', UIParent, 'BOTTOM')

    MainMenuBar:Hide()
    self.wrap:Show()
end

idActionBar.pet = {}
function idActionBar.pet:Enable()
    self.wrap = CreateFrame('frame', nil, UIParent)

    idActionBar:newBar(self.wrap, 'PetActionButton', 1, 1, 10, 0)

    self.wrap:ClearAllPoints()

    if self.showmain then
        self.wrap:SetPoint('BOTTOMLEFT', self.wrap, 'TOPLEFT', 0, 0)
    else
        self.wrap:SetPoint('BOTTOM', UIParent, 'BOTTOM')
    end

    self.wrap:Show()
end

-- Thanks DimUI
function idActionBar:alterButtonLooks(Button)
    background = getglobal(Button:GetName()..'NormalTexture') or getglobal(Button:GetName()..'NormalTexture2')
    icon = getglobal(Button:GetName()..'Icon')

    background:SetAlpha(0)
    icon:SetTexCoord( 0.07, 0.93, 0.07, 0.93 )
end

function idActionBar:ActionButton_HideGrid(Button)
    Button = Button or this
    if string.find(Button:GetName(), 'idActionButton') then
        self:alterButtonLooks(Button)
    end
    self.hook.ActionButton_HideGrid(Button)
end

function idActionBar:Enable()
    local petclasses = {Warlock=1, Hunter=1}
    self.showmain = true
    self.showpet = true

    self.hook.ActionButton_HideGrid = ActionButton_HideGrid
    ActionButton_HideGrid = self.ActionButton_HideGrid

    if self.showmain then
        self.main:Enable()
    end

    if self.showpet and petclasses[UnitClass('player')] then
        self.pet:Enable()
    end
end

idActionBar:Enable()