vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--$Id: OneView.lua 8341 2006-08-18 03:57:52Z kaelten $
OneView = OneCore:NewModule("OneView", "AceEvent-2.0", "AceHook-2.0", "AceDebug-2.0", "AceConsole-2.0", "AceDB-2.0")
local L = AceLibrary("AceLocale-2.0"):new("OneView")

BINDING_HEADER_ONEVIEW = "OneView"

function OneView:OnInitialize()
    local baseArgs = OneCore:GetFreshOptionsTable(self)
        local customArgs = {
        ["0"] = {
            name = L"Backpack", type = 'toggle', order = 5,
            desc = L"Turns display of your backpack on and off.",
            get = function() return self.db.profile.show[0] end,
            set = function(v) 
                self.db.profile.show[0] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["1"] = {
            name = L"First Bag", type = 'toggle', order = 6,
            desc = L"Turns display of your first bag on and off.",
            get = function() return self.db.profile.show[1] end,
            set = function(v) 
                self.db.profile.show[1] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["2"] = {
            name = L"Second Bag", type = 'toggle', order = 7,
            desc = L"Turns display of your second bag on and off.",
            get = function() return self.db.profile.show[2] end,
            set = function(v) 
                self.db.profile.show[2] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["3"] = {
            name = L"Third Bag", type = 'toggle', order = 8,
            desc = L"Turns display of your third bag on and off.",
            get = function() return self.db.profile.show[3] end,
            set = function(v) 
                self.db.profile.show[3] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["4"] = {
            name = L"Fourth Bag", type = 'toggle', order = 9,
            desc = L"Turns display of your fourth bag on and off.",
            get = function() return self.db.profile.show[4] end,
            set = function(v) 
                self.db.profile.show[4] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["5"] = {
            name = L"First Bank Bag", type = 'toggle', order = 10,
            desc = L"Turns display of your first bag on and off.",
            get = function() return self.db.profile.show[5] end,
            set = function(v) 
                self.db.profile.show[5] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["6"] = {
            name = L"Second Bank Bag", type = 'toggle', order = 11,
            desc = L"Turns display of your second bag on and off.",
            get = function() return self.db.profile.show[6] end,
            set = function(v) 
                self.db.profile.show[6] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["7"] = {
            name = L"Third Bank Bag", type = 'toggle', order = 12,
            desc = L"Turns display of your third bag on and off.",
            get = function() return self.db.profile.show[7] end,
            set = function(v) 
                self.db.profile.show[7] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["8"] = {
            name = L"Fourth Bank Bag", type = 'toggle', order = 13,
            desc = L"Turns display of your fourth bag on and off.",
            get = function() return self.db.profile.show[8] end,
            set = function(v) 
                self.db.profile.show[8] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["9"] = {
            name = L"Fifth Bank Bag", type = 'toggle', order = 14,
            desc = L"Turns display of your fifth bag on and off.",
            get = function() return self.db.profile.show[9] end,
            set = function(v) 
                self.db.profile.show[9] = v 
                self:OrganizeFrame(true)
            end,
        },
        ["10"] = {
            name = L"Sixth Bank Bag", type = 'toggle', order = 15,
            desc = L"Turns display of your sixth bag on and off.",
            get = function() return self.db.profile.show[10] end,
            set = function(v) 
                self.db.profile.show[10] = v 
                self:OrganizeFrame(true)
            end,
        },
    }
    
    OneCore:CopyTable(customArgs, baseArgs.args.show.args)
        
    
    baseArgs.args.remember = {
        cmdName = L"Remember", guiName = L"Remember Selection", type = 'toggle',
        desc = L"Toggles wether to remember which was the last character you selected.",
        get = function() return self.db.profile.remember end,
        set = function(v) 
            self.db.profile.remember = v 
            if v then
                self.db.account.faction = self.faction 
                self.db.account.characterId = self.charId 
            else
                self.db.account.faction = nil
                self.db.account.characterId = nil
            end
        end,
    }
    
    
        self:RegisterDB("OneViewDB")
        self:RegisterDefaults('profile', OneCore.defaults)
        self:RegisterChatCommand({"/ov", "/OneView"}, baseArgs, string.upper(self.title))
        self:RegisterChatCommand({"/ovs", "/ovshow"}, {type="execute", func= function() 
                        if OneViewFrame:IsVisible() then
                                OneViewFrame:Hide()
                        else
                                OneViewFrame:Show()
                        end
                end})
        
    --self:SetDebugging(true)
        
    self.fBags = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
        self.frame = OneViewFrame
        self.frame.bags = {}
        self.frame.handler = self

        self.storage = OneStorage
        
        self:TriggerEvent("OneView_Loaded")
        
        self:RegisterDewdrop(baseArgs)
end

function OneView:OnEnable()
        self.frame:SetClampedToScreen(true)
        self:BuildCharSelectOptions()
end

function OneView:BuildFrame()
        debugprofilestart()
        
        if not self.frame.bags[-1] then 
                self.frame.bags[-1] = CreateFrame("Frame", "OVBankBag", self.frame)
                self.frame.bags[-1]:SetID(-1)
                self.frame.bags[-1].size = 24
                for slot = 1, 24 do
                        self.frame.bags[-1][slot] = CreateFrame("Button", self.frame.bags[-1]:GetName().."Item"..slot, self.frame.bags[-1], "OneViewItemButtonTemplate")
                        self.frame.bags[-1][slot]:SetID(slot)
                end
        end
        
        
        for bag = 0, 10 do              
                local itemId, size, isAmmo, isSoul, isProf = self.storage:BagInfo(self.faction, self.charId, bag)
                for slot = 1, (tonumber(size) or 0) do
                        if not self.frame.bags[bag] then 
                                self.frame.bags[bag] = CreateFrame("Frame", tostring(self)..bag, self.frame)
                                self.frame.bags[bag]:SetID(bag)
                        end
                        if not self.frame.bags[bag][slot] then
                                self.frame.bags[bag][slot] = CreateFrame("Button", tostring(self)..bag.."Item"..slot, self.frame.bags[bag], "OneViewItemButtonTemplate")
                                self.frame.bags[bag][slot]:SetID(slot)
                        end
                end
                if self.frame.bags[bag] then
                        local curBag = self.frame.bags[bag]
                        curBag.itemId, curBag.size, curBag.isAmmo, curBag.isSoul, curBag.isProf = itemId, size or 0, isAmmo, isSoul, isProf
                end
        end
        self:Debug("%s ran in %s", "BuildFrame", debugprofilestop())
end


function OneView:OrganizeFrame(needs)
        debugprofilestart()
        
        local cols, curCol, curRow = self.db.profile.cols, 1, 1
        local lastslot
        self.bankSoulSlots, self.bankAmmoSlots, self.bankProfSlots, self.bankSlotCount, self.bankTotalCount = 0, 0, 0, 0, 0
        self.invSoulSlots, self.invAmmoSlots, self.invProfSlots, self.invSlotCount, self.invTotalCount = 0, 0, 0, 0, 0
        
        for bag = -1, 10 do 
                if self.frame.bags[bag] then
                        for k2, v2 in ipairs(self.frame.bags[bag]) do 
                                v2:Hide()
                        end
                end
                local curBag = getglobal("OneViewFrameBag" .. bag)
                if curBag and not self.db.profile.show.bank and bag > 4 then
                        curBag:Hide()
                elseif curBag and not self.db.profile.show.inventory and bag < 5 and bag > 0 then
                        curBag:Hide()
                elseif curBag then
                        curBag:Show()
                end
        end
        

        for k, bag in {-1, 5, 6, 7, 8, 9, 10} do
                local curBag = self.frame.bags[bag]
                if curBag and curBag.size and curBag.size > 0 then
                        if curBag.isAmmo then
                                self.bankAmmoSlots = self.bankAmmoSlots + curBag.size
                        elseif curBag.isSoul then
                                self.bankSoulSlots = self.bankSoulSlots + curBag.size
                        elseif curBag.isProf then
                                self.bankProfSlots = self.bankProfSlots + curBag.size
                        else
                                self.bankSlotCount = self.bankSlotCount + curBag.size
                        end
                        if self.db.profile.show.bank then
                                if self:ShouldShow(bag, curBag.isAmmo, curBag.isSoul, curBag.isProf) then
                                        self.bankTotalCount = self.bankTotalCount + curBag.size
                                        for slot = 1, curBag.size do
                                                curBag[slot]:ClearAllPoints()
                                                curBag[slot]:SetPoint("TOPLEFT", self.frame:GetName(), "TOPLEFT", self.leftBorder + (self.colWidth * (curCol - 1)) , 0 - self.topBorder - (self.rowHeight * curRow))
                                                curBag[slot]:Show()                             
                                                if curCol == 1 then lastslot = curBag[slot] end
                                                curCol = curCol + 1
                                                if curCol > cols then curCol, curRow = 1, curRow + 1 end
                                        end
                                end
                        else
                                curRow = curRow + .1
                        end
                end
        end
        
        OneViewFrameBankInfo1:ClearAllPoints()
        if self.db.profile.show.bagslots and lastslot then
                OneViewFrameBag5:ClearAllPoints()
                OneViewFrameBag5:SetPoint("TOPLEFT", lastslot, "BOTTOMLEFT", 0, -10)
                OneViewFrameBankInfo1:SetPoint("TOPLEFT", OneViewFrameBag5, "BOTTOMLEFT", 0, -10)
                for i = 5, 10 do
                        getglobal("OneViewFrameBag" .. i):Show()
                end
        elseif lastslot then
                for i = 5, 10 do
                        getglobal("OneViewFrameBag" .. i):Hide()
                end
                curRow = curRow - 1
                OneViewFrameBankInfo1:SetPoint("TOPLEFT", lastslot, "BOTTOMLEFT", 0, -10)
        else
                for i = 5, 10 do
                        getglobal("OneViewFrameBag" .. i):Hide()
                end
                curRow = curRow - 1
                OneViewFrameBankInfo1:SetPoint("TOPLEFT", OneViewFrameBankButton, "BOTTOMLEFT", 5, -10)
        end

        lastslot = nil
        curCol = 1
        curRow = curRow + (self.db.profile.show.bank and 3.5 or 2)
        
        
        
        for bag = 0, 4 do
                local curBag = self.frame.bags[bag]
                if curBag and curBag.size and curBag.size > 0 then
                        if curBag.isAmmo then
                                self.invAmmoSlots = self.invAmmoSlots + curBag.size
                        elseif curBag.isSoul then
                                self.invSoulSlots = self.invSoulSlots + curBag.size
                        elseif curBag.isProf then
                                self.invProfSlots = self.invProfSlots + curBag.size
                        else
                                self.invSlotCount = self.invSlotCount + curBag.size
                        end
                        if self.db.profile.show.inventory then
                                if self:ShouldShow(bag, curBag.isAmmo, curBag.isSoul, curBag.isProf) then
                                        self.invTotalCount = self.invTotalCount + curBag.size
                                        for slot = 1, curBag.size do
                                                curBag[slot]:ClearAllPoints()
                                                curBag[slot]:SetPoint("TOPLEFT", self.frame:GetName(), "TOPLEFT", self.leftBorder + (self.colWidth * (curCol - 1)) , 0 - self.topBorder - (self.rowHeight * curRow))
                                                curBag[slot]:Show()                             
                                                if curCol == 1 then lastslot = curBag[slot] end
                                                curCol = curCol + 1
                                                if curCol > cols then curCol, curRow = 1, curRow + 1 end
                                        end
                                end
                                local invButton = getglobal(self.frame:GetName() .. "InventoryButton")
                                invButton:ClearAllPoints()
                                invButton:SetPoint("BOTTOMLEFT", self.frame.bags[0][1]:GetName(), "TOPLEFT", -5, 0)
                        else
                                local invButton = getglobal(self.frame:GetName() .. "InventoryButton")
                                invButton:ClearAllPoints()
                                invButton:SetPoint("BOTTOMLEFT", self.frame:GetName(), "BOTTOMLEFT", 3, 24)
                        end
                end
        end
        
        OneViewFrameInventoryInfo1:ClearAllPoints()
        if self.db.profile.show.bagslots and lastslot then
                curRow = curRow + 1
                OneViewFrameBag1:ClearAllPoints()
                OneViewFrameBag1:SetPoint("TOPLEFT", lastslot, "BOTTOMLEFT", 0, -10)
                OneViewFrameInventoryInfo1:SetPoint("TOPLEFT", OneViewFrameBag1, "BOTTOMLEFT", 0, -5)
                for i = 1, 4 do
                        getglobal("OneViewFrameBag" .. i):Show()
                end
        elseif lastslot then
                for i = 1, 4 do
                        getglobal("OneViewFrameBag" .. i):Hide()
                end
                OneViewFrameInventoryInfo1:SetPoint("TOPLEFT", lastslot, "BOTTOMLEFT", 0, -5)
        else
                for i = 1, 4 do
                        getglobal("OneViewFrameBag" .. i):Hide()
                end
                OneViewFrameInventoryInfo1:SetPoint("TOPLEFT", OneViewFrameInventoryButton, "BOTTOMLEFT", 5, -4)
        end

        
        self:Debug("CurrentRow: %s", curRow)
        
        if math.mod(self.invTotalCount, cols) ~= 0 then curRow = curRow + 1 end
        self.frame:SetHeight(curRow * self.rowHeight + self.bottomBorder + self.topBorder) 
        self.frame:SetWidth(cols * self.colWidth + self.leftBorder + self.rightBorder)
        
        self:Debug("%s ran in %s", "OrganizeFrame", debugprofilestop())
        
        OneViewFrameInventoryName:ClearAllPoints()
        OneViewFrameInventoryName:SetPoint("LEFT",  OneViewFrameInventoryButton, "RIGHT", 5, 1)
        
        OneViewFrameBankName:ClearAllPoints()
        OneViewFrameBankName:SetPoint("LEFT",  OneViewFrameBankButton, "RIGHT", 5, 1)
        
        OneViewFrameBankName:SetText(format(L"%s's Bank Bags", self.charId or ""))
        OneViewFrameInventoryName:SetText(format(L"%s's Bags", self.charId or ""))
        
end

function OneView:FillBags()
        for bag = -1, 10 do
                local curBag = self.frame.bags[bag]
                if curBag and curBag.size and curBag.size > 0 then
                        for slot = 1, curBag.size do
                                local itemId, qty = self.storage:SlotInfo(self.faction, self.charId, bag, slot)
                                if itemId then
                                        local itemName, itemLink, itemQuality, itemLevel, itemType, itemSubType, itemCount, itemEquipLoc, itemTexture = GetItemInfo(itemId)
                                        getglobal(curBag[slot]:GetName() .. "IconTexture"):SetTexture(itemTexture)
                                        getglobal(curBag[slot]:GetName() .. "IconTexture"):Show()
                                        if qty > 1 then
                                                getglobal(curBag[slot]:GetName() .. "Count"):SetText(qty)
                                                getglobal(curBag[slot]:GetName() .. "Count"):Show()
                                        else
                                                getglobal(curBag[slot]:GetName() .. "Count"):SetText("")
                                                getglobal(curBag[slot]:GetName() .. "Count"):Hide()
                                        end
                                        curBag[slot].itemId = itemId
                                        curBag[slot].itemQuality = itemQuality
                                        curBag[slot].qty = qty
                                else
                                        getglobal(curBag[slot]:GetName() .. "IconTexture"):Hide()
                                        getglobal(curBag[slot]:GetName() .. "Count"):Hide()
                                        curBag[slot].itemId = nil
                                        curBag[slot].itemQuality = nil
                                        curBag[slot].qty = nil
                                end
                                self:SetBorderColor(curBag[slot])
                        end
                end
                local bagSlot = getglobal("OneViewFrameBag" .. bag)
                if bagSlot then 
                        local itemId = self.storage:BagInfo(self.faction, self.charId, bag)
                        if itemId then 
                                local itemName, itemLink, itemQuality, itemLevel, itemType, itemSubType, itemCount, itemEquipLoc, itemTexture = GetItemInfo(itemId)
                                getglobal(bagSlot:GetName() .. "IconTexture"):SetTexture(itemTexture)
                                getglobal(bagSlot:GetName() .. "IconTexture"):Show()
                                bagSlot.itemId = itemId
                        else
                                getglobal(bagSlot:GetName() .. "IconTexture"):Hide()
                                bagSlot.itemId = nil
                        end
                end
        end
        
        MoneyFrame_Update(self.frame:GetName().."MoneyFrame", self.storage:GetMoney(self.faction, self.charId) or 0)
        
        self:DoBankSlotCounts()
        self:DoInventorySlotCounts()
end

function OneView:SetBorderColor(slot)       
    local color = {r = 1, g = 1, b = 1}
        
        local bag = slot:GetParent()
        local special = false
    
        if bag.isAmmo then 
                color = self.db.profile.colors.ammo
        special = true
        elseif bag.isSoul then
                color = self.db.profile.colors.soul
        special = true
        elseif bag.isProf then
                color = self.db.profile.colors.prof
        special = true
        elseif self.db.profile.colors.rarity and slot.itemQuality then
                color = ITEM_QUALITY_COLORS[slot.itemQuality]
                
        if slot.itemQuality > 1 then
            special = true 
        end
        end
    
    if special and self.db.profile.colors.glow then        
        slot:SetNormalTexture("Interface\\Buttons\\UI-ActionButton-Border")
        slot:GetNormalTexture():SetBlendMode("ADD")
        slot:GetNormalTexture():SetAlpha(.8)
        slot:GetNormalTexture():SetPoint("CENTER", slot:GetName(), "CENTER", 0, 1)
    elseif special then
        slot:SetNormalTexture("Interface\\AddOns\\OneBag\\BagSlot2")
        slot:GetNormalTexture():SetBlendMode("BLEND")
        slot:GetNormalTexture():SetPoint("CENTER", slot:GetName(), "CENTER", 0, 0)
    else
        slot:SetNormalTexture("Interface\\AddOns\\OneBag\\BagSlot")
        slot:GetNormalTexture():SetBlendMode("BLEND")
        slot:GetNormalTexture():SetPoint("CENTER", slot:GetName(), "CENTER", 0, 0)
    end
        slot:GetNormalTexture():SetVertexColor(color.r, color.g, color.b)
end

function OneView:DoBankSlotCounts()
        local usedSlots, usedAmmoSlots, usedSoulSlots, usedProfSlots, ammoQuantity = 0, 0, 0, 0, 0 
        
        for k, bag in {-1, 5, 6, 7, 8, 9, 10} do
                if self.frame.bags[bag] then
                        local tmp, qty = 0, 0
                        for slot = 1, self.frame.bags[bag].size do
                                if(self.frame.bags[bag][slot].itemId) then 
                                        tmp = tmp + 1 
                                        qty = qty + self.frame.bags[bag][slot].qty
                                end
                        end
                        
                        if self.frame.bags[bag].isAmmo then
                                usedAmmoSlots = usedAmmoSlots + tmp
                                ammoQuantity = ammoQuantity + qty
                        elseif self.frame.bags[bag].isSoul then
                                usedSoulSlots = usedSoulSlots + tmp
                        elseif self.frame.bags[bag].isProf then
                                usedProfSlots = usedProfSlots + tmp
                        else
                                usedSlots = usedSlots + tmp
                        end
                end
        end
        
        self:Debug("Normal used: %s, Soul used: %s, Prof used: %s, Ammo used %s, Ammo quantity %s.", usedSlots, usedSoulSlots, usedProfSlots, usedAmmoSlots, ammoQuantity)
        
        local info = 1
        local  name = self.frame:GetName() .. "BankInfo"        
        
        
        getglobal(name .. info):SetText(format(L"%s/%s Slots", usedSlots, self.bankSlotCount))
        info = info + 1
        
        for i = 2, 4 do 
                getglobal(name .. i):SetText("")
        end
    
    if self.db.profile.show.counts then
        if self.bankAmmoSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Ammo", ammoQuantity, self.bankAmmoSlots * 200))
            info = info + 1
        end
        if self.bankSoulSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Soul Shards", usedSoulSlots, self.bankSoulSlots))
            info = info + 1
        end
        if self.bankProfSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Profession Slots", usedProfSlots, self.bankProfSlots))
            info = info + 1
        end
    end
end

function OneView:DoInventorySlotCounts()
        local usedSlots, usedAmmoSlots, usedSoulSlots, usedProfSlots, ammoQuantity = 0, 0, 0, 0, 0 
        
        for bag = 0, 4 do
                if self.frame.bags[bag] then
                        local tmp, qty = 0, 0
                        for slot = 1, self.frame.bags[bag].size do
                                if(self.frame.bags[bag][slot].itemId) then 
                                        tmp = tmp + 1 
                                        qty = qty + self.frame.bags[bag][slot].qty
                                end
                        end
                        
                        if self.frame.bags[bag].isAmmo then
                                usedAmmoSlots = usedAmmoSlots + tmp
                                ammoQuantity = ammoQuantity + qty
                        elseif self.frame.bags[bag].isSoul then
                                usedSoulSlots = usedSoulSlots + tmp
                        elseif self.frame.bags[bag].isProf then
                                usedProfSlots = usedProfSlots + tmp
                        else
                                usedSlots = usedSlots + tmp
                        end
                end
        end
        
        self:Debug("Normal used: %s, Soul used: %s, Prof used: %s, Ammo used %s, Ammo quantity %s.", usedSlots, usedSoulSlots, usedProfSlots, usedAmmoSlots, ammoQuantity)
        
        local info = 1
        local  name = self.frame:GetName() .. "InventoryInfo"   
        
        
        getglobal(name .. info):SetText(format(L"%s/%s Slots", usedSlots, self.invSlotCount))
        info = info + 1
        
        for i = 2, 4 do 
                getglobal(name .. i):SetText("")
        end
        if self.db.profile.show.counts then
        if self.invAmmoSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Ammo", ammoQuantity, self.invAmmoSlots * 200))
            info = info + 1
        end
        if self.invSoulSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Soul Shards", usedSoulSlots, self.invSoulSlots))
            info = info + 1
        end
        if self.invProfSlots > 0 then
            getglobal(name .. info):SetText(format(L"%s/%s Profession Slots", usedProfSlots, self.invProfSlots))
            info = info + 1
        end
    end
end

function OneView:BuildCharSelectOptions()
        local list = self.storage:GetCharListByServerId()
        
        local args         = {
                type="group", 
                args = {},
        }
        
        for serverId, v in list do
                local _, _, server, faction = string.find(serverId, "(.+) . (.+)")
                while string.find(server, "(.+) (.+)")  do
            local _, _, p1, p2 = string.find(server, "(.+) (.+)")
            
            server = p1..p2         
        end
                
        print(server)
        
                args.args[server..faction] = {
                        name = serverId, type = 'group',
                        desc = L"Characters on "..serverId,
                        args = {}
                }
                for k, v2 in v do
                        local fact = faction
                        local _, _, charName, charId = string.find(v2, "(.+) . (.+)")
                        local func = function() self:LoadCharacter(fact, charId) end
                        args.args[server..faction].args[charName] = {
                                name = charName, type = 'execute',
                                func = func, desc = charName,
                        }
                end
        end
        
        self.dewdrop:Register(OneViewFrameCharSelectButton,
                        'children', args,
                        'point', function(parent)
                                if parent:GetTop() < GetScreenHeight() / 2 then
                                        return "BOTTOMLEFT", "TOPLEFT"
                                else
                                        return "TOPLEFT", "BOTTOMLEFT"
                                end
                        end,
                        'dontHook', true
                )
        
end

function OneView:CharSelect()
        if self.dewdrop:IsOpen(getglobal(self.frame:GetName() .. "CharSelectButton")) then
                self.dewdrop:Close()
        else
                self.dewdrop:Open(getglobal(self.frame:GetName() .. "CharSelectButton"), OneViewFrameCharSelectButton)
        end
end

function OneView:LoadCharacter(faction, characterId)
        faction = faction or self.db.account.faction or AceLibrary("AceDB-2.0").FACTION
        characterId = characterId or self.db.account.characterId or AceLibrary("AceDB-2.0").CHAR_ID
        
    if self.db.profile.remember then
        self.db.account.faction = faction
        self.db.account.characterId = characterId
        end
    
        self.faction = faction
        self.charId = characterId
        
        self:BuildFrame()
        self:OrganizeFrame()
        self:FillBags()
end

function OneView:LinkItem(itemId)
        local name, link, quality = GetItemInfo(itemId)
        if ( ChatFrameEditBox:IsShown() ) then
                ChatFrameEditBox:Insert(format("%s|H%s|h[%s]|h|r", ITEM_QUALITY_COLORS[quality].hex, link, name))
        end     
end

function OneView:OnCustomShow() 
    if self.db.profile.point then
        local point = self.db.profile.point
        this:ClearAllPoints()
        this:SetPoint("TOPLEFT", point.parent, "BOTTOMLEFT", point.left, point.top)
    end
end

Generated by GNU Enscript 1.6.5.90.