vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Various functions both Group and Monitor share

local _G = getfenv(0)

function XLoot:QualityColorRow(row, quality)
        if quality == "coin" then
                row.border:Hide()
                row.button.border:Hide()
                row:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))                            
                row.button:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))
                row.button.wrapper:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))
        else
                local r, g, b, hex = GetItemQualityColor(quality)
                if quality >= XLoot.db.profile.loothighlightthreshold then
                        if XLoot.db.profile.texcolor then
                                row.button.border:SetVertexColor(r, g, b, .5)
                                row.button.border:Show()
                        else button.border:Hide() end
                        if XLoot.db.profile.loothighlightframe and not row.status then
                                row.border:SetVertexColor(r, g, b, .3)
                                row.border:Show()
                        else row.border:Hide() end
                else
                        row.button.border:Hide()
                        row.border:Hide()
                end
                if XLoot.db.profile.lootqualityborder then
                        row:SetBackdropBorderColor(r, g, b, 1)                          
                        row.button:SetBackdropBorderColor(r, g, b, 1)                           
                        row.button.wrapper:SetBackdropBorderColor(r, g, b, 1)
                else
                        row:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))                            
                        row.button:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))
                        row.button.wrapper:SetBackdropBorderColor(unpack(XLoot.db.profile.lootbordercolor))
                end
                if row.status then
                        row.status:SetStatusBarColor(r, g, b, .7)
                end
        end
end

function XLoot:OnRowClick(button, stack, row, AA)
        if button == "LeftButton" then
                if ( IsControlKeyDown() ) then
                        DressUpItemLink(row.link);
                elseif ( IsShiftKeyDown() ) then
                        if ( ChatFrameEditBox:IsVisible() ) then
                                ChatFrameEditBox:Insert(row.link);
                        end
                end
        elseif button == "RightButton" and not IsControlKeyDown() and not IsShiftKeyDown() and row.candismiss then
                AA:PopRow(stack, row.id, nil, nil, 0.3, function() AA:Restack(stack) end)
        end
end

function XLoot:SizeRow(stack, row)
        local row = row
        local playerwidth, lootwidth, rollswidth = row.fsplayer:GetStringWidth(), row.fsloot:GetStringWidth(), (row.bgreed and XLootGroup.db.profile.buttonscale or 0)
        local framewidth = playerwidth+lootwidth+rollswidth
        row:SetWidth(framewidth+38+(row.sizeoffset or 0))
        XLoot:QualityBorderResize(row, 1.76, 1.34, 2, 1)
end


function XLoot:GenericItemRow(stack, id, AA)
        local row = CreateFrame("Frame", "XLRow"..stack.name..id, UIParent)
        local button = CreateFrame("Button", "XLRowButton"..stack.name..id, row, "ItemButtonTemplate")
        button:EnableMouse(false)
        _G[button:GetName().."NormalTexture"]:SetWidth(66)
        _G[button:GetName().."NormalTexture"]:SetHeight(66)
        local overlay = CreateFrame("Button", "XLMonitorRowOverlay"..stack.name..id, row)
        row.overlay = overlay

        row.fsplayer = row:CreateFontString("XLRow"..stack.name..id.."Player", "ARTWORK", "GameFontNormalSmall")
        row.fsloot = row:CreateFontString("XLRow"..stack.name..id.."Loot", "ARTWORK", "GameFontNormalSmall")
        row.fsextra = row:CreateFontString("XLRow"..stack.name..id.."Extra", "ARTWORK", "GameFontNormalSmall")

        row:SetWidth(316)
        row:SetHeight(22)
        button:SetScale(.55)
        button:ClearAllPoints()
        button:SetPoint("LEFT", row, "LEFT", 5, 0)
        button:Disable()
        overlay:ClearAllPoints()
        overlay:SetAllPoints(row)
        row.fsplayer:SetHeight(16)
        row.fsloot:SetHeight(16)
        row.fsplayer:ClearAllPoints()
        row.fsplayer:SetPoint("LEFT", button, "RIGHT", 3, 0)
        row.fsloot:ClearAllPoints()
        row.fsloot:SetPoint("LEFT", row.fsplayer, "RIGHT", 2, 0)
        row.fsplayer:SetJustifyH("LEFT")
        row.fsloot:SetJustifyH("LEFT")
        row.fsextra:SetHeight(16)
        row.fsextra:ClearAllPoints()
        row.fsextra:SetPoint("RIGHT", button, "LEFT")
        row.fsextra:SetJustifyH("RIGHT")
        
        overlay:RegisterForDrag("LeftButton")
        overlay:RegisterForClicks("LeftButtonUp", "RightButtonUp")
        overlay:SetScript("OnDragStart", function() AA:DragStart(stack, row) end)
        overlay:SetScript("OnDragStop", function() AA:DragStop(stack, row) end)
        overlay:SetScript("OnClick", function(button) XLoot:OnRowClick(arg1, stack, row, AA) end)
        overlay:SetScript("OnEnter", function() if row.itemid then GameTooltip:SetOwner(row.fsloot, "ANCHOR_TOPLEFT"); GameTooltip:SetHyperlink(row.itemid); CursorUpdate(); end end )
        overlay:SetScript("OnHide", function() AA:OnRowHide(stack, row) end)
        overlay:SetScript("OnLeave", function() GameTooltip:Hide(); ResetCursor(); end)
        overlay:SetScript("OnUpdate", function() CursorOnUpdate(); end)
        
        button.wrapper = XLoot:ItemButtonWrapper(button, 9, 9, 20)
        row.border = XLoot:QualityBorder(row)
        button.border = XLoot:QualityBorder(button.wrapper)
        XLoot:QualityBorderResize(button.wrapper, 1.6, 1.6, 0, 1)
        button:Show()
        button:SetAlpha(1)
        
        XLoot:Skin(row)
        
        row.candismiss = true
        row.sizeoffset = 0
        
        row.button = button
        row.id = id
        
        row:Hide()
        stack.rows[id] = row
        
        stack.built = table.getn(stack.rows)
        return row
end

Generated by GNU Enscript 1.6.5.90.