WoWInterface SVN FarmFu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

FuBar_FarmFu/FarmFu.lua
11,6 → 11,7
FarmFu.frame = FarmFu:CreateBasicPluginFrame("FarmFuFrame") -- makes the button on FuBar?
 
--
local self = FarmFu
local zoneAreaOld
local zoneBagOld
local zoneDurOld
32,11 → 33,12
local browser
local DurabilityTooltip
 
function FarmFu:OnInitialize()
function self:OnInitialize()
self:RegisterEvent("ZONE_CHANGED")
self:RegisterEvent("ZONE_CHANGED_INDOORS")
self:RegisterEvent("ZONE_CHANGED_NEW_AREA")
self:RegisterEvent("PLAYER_LOGOUT")
self:RegisterEvent("CHAT_MSG_ADDON")
 
zoneAreaOld = "The Real World"
zoneBagOld = self:AppraiseBags()
64,7 → 66,6
self.textFrame = FuBarText
-- ----------------
 
self:Browser()
self:DurabilityTooltip()
 
self:SetIcon(true)
76,93 → 77,18
end
 
-- ---------UI section--local money, bagvalue, invvalue, keyvalue, durvalue, totalvalue = self:AppraiseEverything()
function FarmFu:Browser() --creates the data browser
browser = CreateFrame("Frame", "FarmFuBrowser", nil, UIParent);
browser:SetFrameStrata("DIALOG")
browser:SetWidth(512) -- Set These to whatever height/width is needed
browser:SetHeight(256) -- for your Texture
browser:SetMovable(true)
browser:EnableMouse(true) --to click on catergories
browser:EnableMouseWheel(true)
browser:SetMaxResize(4000,2000) --width/height
browser:SetPoint("CENTER",0,0)
browser:Hide() -- Don't show on startup
-- for movable you also need:
browser:RegisterForDrag("LeftButton");
browser:SetScript("OnDragStart", function(self) self:StartMoving() end)
browser:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
browser:SetBackdrop({
bgFile = "Interface/Tooltips/ChatBubble-Background",
edgeFile = "Interface/Tooltips/ChatBubble-BackDrop",
tile = true, tileSize = 32, edgeSize = 32,
insets = { left = 32, right = 32, top = 32, bottom = 32 }
});
browser:SetBackdropColor(0,0,0,1);
 
browserTitle = browser:CreateFontString("MessageFrame", "OVERLAY", browser)
browserTitle:SetPoint("TOP", browser, "TOP", 0, -15)
browserTitle:SetFont("FRIZQT__.TTF",11,"OUTLINE, MONOCHROME")
browserTitle:SetFontObject(GameFontNormal)
browserTitle:SetText(L["FarmFuBrowser"])
 
browserCloseButton = CreateFrame("Button", "CloseButton", browser, nil);
browserCloseButton:SetWidth(20)
browserCloseButton:SetHeight(20)
browserCloseButton:SetPoint("TOPRIGHT",browser,"TOPRIGHT",-10,-10)
browserCloseButton:SetBackdrop({
bgFile = "Interface/Tooltips/ChatBubble-Background",
edgeFile = "Interface/Tooltips/ChatBubble-BackDrop",
tile = true, tileSize = 5, edgeSize = 5,
insets = { left = 5, right = 5, top = 5, bottom = 5 }
});
browserCloseButton:SetBackdropColor(0,0,0,1);
browserCloseButton:SetScript("OnClick", function() self:out("Closed") browser:Hide() end)
browserCloseButton:SetText("X")
browserCloseButton:Enable()
 
browserZoneScroll = CreateFrame("ScrollFrame", "ZoneScroll", browser, nil);
browserZoneScroll:SetWidth(200)
browserZoneScroll:SetPoint("TOPLEFT",browser,"TOPLEFT",10,-30)
browserZoneScroll:SetPoint("BOTTOM",browser,"BOTTOM",0,10)
browserZoneScroll:SetBackdrop({
bgFile = "Interface/Tooltips/ChatBubble-Background",
edgeFile = "Interface/Tooltips/ChatBubble-BackDrop",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 16, right = 16, top = 16, bottom = 16 }
});
browserZoneScroll:SetBackdropColor(0,0,0,1);
browserZoneScroll:SetText("X")
 
browserRecordScroll = CreateFrame("ScrollFrame", "RecordScroll", browser, nil);
browserRecordScroll:SetPoint("TOPLEFT",browserZoneScroll,"TOPRIGHT",10,0)
browserRecordScroll:SetPoint("RIGHT",browser,"RIGHT",-10,0)
browserRecordScroll:SetPoint("BOTTOM",browserZoneScroll,"BOTTOM",10,0)
browserRecordScroll:SetBackdrop({
bgFile = "Interface/Tooltips/ChatBubble-Background",
edgeFile = "Interface/Tooltips/ChatBubble-BackDrop",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 16, right = 16, top = 16, bottom = 16 }
});
browserRecordScroll:SetBackdropColor(0,0,0,1);
browserRecordScroll:SetText("X")
end
 
function FarmFu:DurabilityTooltip() --creates a little hidden tooltip so I can get durability data
function self:DurabilityTooltip() --creates a little hidden tooltip so I can get durability data
DurabilityTooltip = CreateFrame("GameTooltip", "DurabilityTooltip", nil, "GameTooltipTemplate")
DurabilityTooltip:SetOwner(WorldFrame, "UIParent")
DurabilityTooltip:SetPoint("CENTER",0,0)
DurabilityTooltip:Hide()
end
 
function FarmFu:OnClick() -- left click
if browser:IsShown() then
browser:Hide()
else
browser:Show()
end
function self:OnClick() -- left click
self:SetupFrames()
end
 
function FarmFu:OnMenuRequest(level, value) -- Right click menu
function self:OnMenuRequest(level, value) -- Right click menu
if level == 1 then
--[[ From here ]]--
dewdrop:AddLine(
248,7 → 174,7
end
end
 
function FarmFu:OnTooltipUpdate() -- this is mouseover
function self:OnTooltipUpdate() -- this is mouseover
local now = time()
local func = abacus.FormatMoneyFull
local money, bagvalue, invvalue, keyvalue, durvalue, totalvalue = self:AppraiseEverything()
395,7 → 321,7
self:ScheduleRepeatingEvent("FarmFuTootltipUpdater", self.UpdateTooltip, 2, self)
end
 
function FarmFu:UpdateText() --this updates the FuBar button
function self:UpdateText() --this updates the FuBar button
if self.db.profile == nil then
return
end
425,7 → 351,7
self:CheckWidth(true)
end
 
function FarmFu:HourlyMoney(depth) --Provides numbers for UpdateText
function self:HourlyMoney(depth) --Provides numbers for UpdateText
local _, _, _, _, _, totalvalue = self:AppraiseEverything()
-- error catching, sometimes this fires before ZoneMoney runs ResetSession
if not totalvalue then totalvalue = 0 end
450,7 → 376,7
return hourlytotal, hourlytotalprofit
end
 
function FarmFu:SetFontSize(size) -- i dunno why I need this, But it cries when I delete it.
function self:SetFontSize(size) -- i dunno why I need this, But it cries when I delete it.
self.fontSize = size
self.iconFrame:SetWidth(size)
self.iconFrame:SetHeight(size)
458,26 → 384,447
end
 
-- -----------------------------
-- --------Data Browser
function self:SetupFrames() --Rabbitbunny
if self.frame then self.frame:Show() self:out("quitting") return end
--Start with the frame and backdrop
self:out("first checkpoint")
self.frame = CreateFrame("Frame", "FarmFuBrowser", UIParent)
self.frame:SetBackdrop({
--bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 32, edgeSize = 32,
insets = {left = 11, right = 12, top = 12, bottom = 11}
})
self.frame.backdrop = self.frame:CreateTexture("$parentBG", "BACKGROUND")
self.frame.backdrop:SetPoint("TOPLEFT", 6, -6)
self.frame.backdrop:SetPoint("BOTTOMRIGHT", -6, 6)
self.frame.backdrop:SetTexture(0,0,0,1)
 
self.frame:SetWidth(632)
self.frame:SetHeight(535)
self.frame:SetPoint("CENTER")
self.frame:SetFrameStrata("DIALOG")
self.frame:EnableMouse(true)
self.frame:SetMovable(true)
 
self.frame:SetScript("OnMouseDown",function()
if ( arg1 == "LeftButton" ) then
self.frame:StartMoving()
end
end)
self.frame:SetScript("OnMouseUp",function()
if ( arg1 == "LeftButton" ) then
self.frame:StopMovingOrSizing()
end
end)
self.frame:SetScript("OnShow",function()
self:UpdateFunction()
end)
 
--Initialize arrays
self.frame.textures = {}
self.frame.fontstrings = {}
self.frame.catButtons = {}
self.frame.achButtons = {}
self.frame.tabButtons = {}
self.frame.achSort = {}
 
--Header
local header = self.frame:CreateTexture("$parentHeader", "ARTWORK")
header:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
header:SetWidth(256)
header:SetHeight(64)
header:SetPoint("TOP")
 
--Points Display Shield
local shield = self.frame:CreateTexture("$parentPointShield", "ARTWORK")
shield:SetTexture("Interface\\AchievementFrame\\UI-Achievement-TinyShield")
shield:SetWidth(20)
shield:SetHeight(20)
shield:SetPoint("TOP", 76, -14)
shield:SetTexCoord(0, 0.6, 0, 0.6)
 
--Iterate through the textures
--[[for _, t in next, frameElements.textures do
local texture = self.frame:CreateTexture("$parent"..t.name, t.layer)
texture:SetTexture(t.path)
texture:SetWidth(t.width)
texture:SetHeight(t.height)
for _,p in next, t.points do
texture:SetPoint(p.point, self.frame, p.relativePoint, p.xOff, p.yOff)
end
if t.texCoord then
texture:SetTexCoord(t.texCoord.left, t.texCoord.right, t.texCoord.top, t.texCoord.bottom)
end
self.frame.textures[t.name] = texture
end]]--
 
--Header Text
local headerText = self.frame:CreateFontString("$parentHeaderText", "ARTWORK", "GameFontNormal")
headerText:SetText("Urban Achiever")
headerText:SetPoint("CENTER", header, 0, 12)
 
--Points Text
self.pointsText = self.frame:CreateFontString("$parentPointText", "ARTWORK", "GameFontNormal")
self.pointsText:SetText("12345")
self.pointsText:SetPoint("LEFT", shield, "RIGHT", 0, 2)
 
--Iterate through the fontstrings
--[[
for _, t in next, frameElements.fontstrings do
local font = self.frame:CreateFontString("$parent"..t.name, t.layer, "GameFontNormal")
font:SetText(t.text)
for _,p in next, t.points do
font:SetPoint(p.point, p.anchor, p.relativePoint, p.xOff, p.yOff)
end
self.frame.fontstrings[t.name] = font
end
]]--
 
--Category Frame
self.frame.category = CreateFrame("Frame", "$parentCategoryFrame", self.frame)
self.frame.category:SetWidth(190)
self.frame.category:SetHeight(470)
self.frame.category:SetBackdrop({
--bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 32, edgeSize = 32,
insets = {left = 11, right = 12, top = 12, bottom = 11}
})
self.frame.category.backdrop = self.frame.category:CreateTexture("$parentBG", "BACKGROUND")
self.frame.category.backdrop:SetPoint("TOPLEFT", 6, -6)
self.frame.category.backdrop:SetPoint("BOTTOMRIGHT", -6, 6)
self.frame.category.backdrop:SetTexture(0,0,0,1)
self.frame.category:SetPoint("RIGHT", self.frame, "LEFT", 12, 0)
 
--Tab Buttons
self.frame.tabButtons[1] = self:CreateTab("$parentTab1", self.frame, "Achievements", "achievements")
self.frame.tabButtons[1]:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT", 20, 6)
 
self.frame.tabButtons[2] = self:CreateTab("$parentTab1", self.frame, "Statistics", "statistics")
self.frame.tabButtons[2]:SetPoint("TOPLEFT", self.frame.tabButtons[1], "TOPRIGHT", 5, 0)
 
--self.frame.tabButtons[3] = self:CreateTab("$parentTab1", self.frame, "Search", "search")
--self.frame.tabButtons[3]:SetPoint("TOPLEFT", self.frame.tabButtons[2], "TOPRIGHT", 5, 0)
 
--Category Buttons
self.frame.catButtons[1] = self:CreateCategoryButton("$parentCatButton1", self.frame.category)
self.frame.catButtons[1]:SetPoint("TOPLEFT", self.frame.category, 12, -12)
for i=2, 28 do
self.frame.catButtons[i] = self:CreateCategoryButton("$parentCatButton"..i, self.frame.category)
self.frame.catButtons[i]:SetPoint("TOPLEFT", self.frame.catButtons[i-1], "BOTTOMLEFT")
end
 
--Achievement Buttons
self.frame.achButtons[1] = self:CreateAchievementButton("$parentAchButton1", self.frame)
self.frame.achButtons[1]:SetPoint("TOPLEFT", 12, -90)
for i=2, 27 do
self.frame.achButtons[i] = self:CreateAchievementButton("$parentAchButton" .. i, self.frame)
self.frame.achButtons[i]:SetPoint("TOPLEFT", self.frame.achButtons[i-1], "BOTTOMLEFT")
end
 
--Achievement Sort Buttons
self.frame.achSort.name = self:CreateAchievementSortButton("$parentSortNameButton", 190, self.frame, "Name", "name")
self.frame.achSort.name:SetPoint("BOTTOMLEFT", self.frame.achButtons[1], "TOPLEFT", 10, 1)
 
self.frame.achSort.points = self:CreateAchievementSortButton("$parentSortPointsButton", 48, self.frame, "Points", "points")
self.frame.achSort.points:SetPoint("LEFT", self.frame.achSort.name, "RIGHT", 1, 0)
 
self.frame.achSort.completed = self:CreateAchievementSortButton("$parentSortCompletedButton", 50, self.frame, "Date", "completed")
self.frame.achSort.completed:SetPoint("LEFT", self.frame.achSort.points, "RIGHT", 1, 0)
 
--Close Button
self.frame.close = CreateFrame("Button", "$parentCloseButton", self.frame, "UIPanelCloseButton")
self.frame.close:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -4, -5)
 
--Category Toggle Button
self.frame.catToggle = CreateFrame("Button", "$parentCategoryToggleButton", self.frame)
self.frame.catToggle:SetNormalTexture("Interface\\Buttons\\UI-SpellbookIcon-PrevPage-Up")
self.frame.catToggle:SetPushedTexture("Interface\\Buttons\\UI-SpellbookIcon-PrevPage-Down")
self.frame.catToggle:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Round", "ADD")
self.frame.catToggle:SetWidth(32)
self.frame.catToggle:SetHeight(32)
self.frame.catToggle:SetPoint("BOTTOMLEFT", self.frame.achButtons[1], "TOPLEFT", 5, 21)
self.frame.catToggle:SetScript("OnClick", function()
if self.frame.category:IsShown() then
self.frame.category:Hide()
else
self.frame.category:Show()
end
end)
 
--Search Editbox
self.frame.editbox = self:CreateEditbox(self.frame)
self.frame.editbox:SetWidth(200)
self.frame.editbox:SetPoint("TOPLEFT", self.frame.catToggle, "TOPRIGHT", 10, 0)
 
--Category Scroll Bar
self.frame.catScroll = CreateFrame("Slider", "$parentCatSlider", self.frame, "UIPanelScrollBarTemplate")
self.frame.catScroll:SetPoint("TOPLEFT", self.frame.catButtons[2], "TOPRIGHT")
self.frame.catScroll:SetPoint("BOTTOMLEFT", self.frame.catButtons[#self.frame.catButtons - 1], "BOTTOMRIGHT")
self.frame.catScroll:SetWidth(16)
self.frame.catScroll:SetMinMaxValues(0,0)
self.frame.catScroll:SetValueStep(1)
self.frame.catScroll:SetScript("OnValueChanged", function()
self:OnCatScroll()
end)
self.frame.catScroll:SetValue(1)
 
--Achievement Button Scroll Bar
self.frame.achScroll = CreateFrame("Slider", "$parentAchSlider", self.frame, "UIPanelScrollBarTemplate")
self.frame.achScroll:SetPoint("TOPLEFT", self.frame.achButtons[2], "TOPRIGHT")
self.frame.achScroll:SetPoint("BOTTOMLEFT", self.frame.achButtons[#self.frame.achButtons - 1], "BOTTOMRIGHT")
self.frame.achScroll:SetWidth(16)
self.frame.achScroll:SetMinMaxValues(0,0)
self.frame.achScroll:SetValueStep(1)
self.frame.achScroll:SetScript("OnValueChanged", function()
self:OnAchScroll()
end)
self.frame.achScroll:SetValue(1)
 
--Achievement Display Frame
self.frame.display = CreateFrame("Frame", "$parentDisplayFrame", self.frame)
self.frame.display.backdrop = self.frame.display:CreateTexture("$parentBG", "BACKGROUND")
self.frame.display.backdrop:SetPoint("TOPLEFT")
self.frame.display.backdrop:SetPoint("BOTTOMRIGHT")
--self.frame.display.backdrop:SetTexture(1,0,0,1)
 
 
self.frame.display:SetWidth(290)
self.frame.display:SetHeight(448)
self.frame.display:SetPoint("TOPLEFT", self.frame.achButtons[1], "TOPRIGHT", 19, 0)
self.frame.display:Hide()
 
--Display Icon
self.frame.display.icon = CreateFrame("Button", "$parentIcon", self.frame.display)
self.frame.display.icon:SetWidth(64)
self.frame.display.icon:SetHeight(64)
self.frame.display.icon:SetPoint("TOPLEFT")
self.frame.display.icon:SetHighlightTexture("Interface\\Buttons\\ButtonHilight-Round", "ADD")
self.frame.display.icon:SetScript("OnClick", function()
self:InsertIntoChat(self.currentAch)
end)
 
--Display Name
self.frame.display.name = self.frame.display:CreateFontString("$parentName", "ARTWORK", "AchievementPointsFont")
self.frame.display.name:SetPoint("TOPLEFT", self.frame.display.icon, "TOPRIGHT", 5, 0)
--self.frame.display.name:SetPoint("TOPRIGHT", -15,-15)
self.frame.display.name:SetWidth(220)
self.frame.display.name:SetHeight(70)
self.frame.display.name:SetJustifyH("CENTER")
self.frame.display.name:SetJustifyV("TOP")
 
--Display Shield Icon
self.frame.display.shield = self.frame.display:CreateTexture("$parentShield", "ARTWORK")
self.frame.display.shield:SetPoint("TOPLEFT", self.frame.display.icon, "BOTTOMLEFT", 0, -5)
self.frame.display.shield:SetTexture("Interface\\AchievementFrame\\UI-Achievement-Shields")
self.frame.display.shield:SetTexCoord(0, .5, 0, 1);
self.frame.display.shield:SetWidth(64)
self.frame.display.shield:SetHeight(64)
 
--Display Points
self.frame.display.points = self.frame.display:CreateFontString("$parentPoints", "ARTWORK", "AchievementPointsFont")
self.frame.display.points:SetPoint("CENTER", self.frame.display.shield, "CENTER", -2, 3)
 
--Display Description
self.frame.display.desc = self.frame.display:CreateFontString("$parentDescription", "ARTWORK", "GameFontNormal")
self.frame.display.desc:SetPoint("TOPLEFT", self.frame.display.shield, "TOPRIGHT", 5, 0)
--self.frame.display.desc:SetPoint("BOTTOMRIGHT", self.frame.display, "TOPRIGHT", -15,-109)
self.frame.display.desc:SetWidth(220)
self.frame.display.desc:SetHeight(65)
 
--Display Reward
self.frame.display.reward = self.frame.display:CreateFontString("$parentReward", "ARTWORK", "GameFontNormal")
self.frame.display.reward:SetPoint("TOP", self.frame.display, "TOP", 0, -127)
self.frame.display.reward:SetTextColor(1,1,1)
 
self.frame.display.criteriaButtons = {}
 
--Criteria Buttons
self.frame.display.criteriaButtons[1] = self:CreateCriteriaButton("$parentCriteriaButton1", self.frame.display)
self.frame.display.criteriaButtons[1]:SetPoint("TOPLEFT", 0, -145)
for i=2, 18 do
self.frame.display.criteriaButtons[i] = self:CreateCriteriaButton("$parentCriteriaButton" .. i, self.frame.display)
self.frame.display.criteriaButtons[i]:SetPoint("TOPLEFT", self.frame.display.criteriaButtons[i-1], "BOTTOMLEFT")
end
 
--Display Scroll Bar
self.frame.criteriaScroll = CreateFrame("Slider", "$parentSlider", self.frame.display, "UIPanelScrollBarTemplate")
self.frame.criteriaScroll:SetPoint("TOPLEFT", self.frame.display.criteriaButtons[2], "TOPRIGHT")
self.frame.criteriaScroll:SetPoint("BOTTOMLEFT", self.frame.display.criteriaButtons[#self.frame.display.criteriaButtons - 1], "BOTTOMRIGHT")
self.frame.criteriaScroll:SetWidth(16)
self.frame.criteriaScroll:SetMinMaxValues(0,0)
self.frame.criteriaScroll:SetValueStep(1)
self.frame.criteriaScroll:SetScript("OnValueChanged", function()
self:OnCriteriaScroll()
end)
self.frame.criteriaScroll:SetValue(1)
self.frame.criteriaScroll:Show()
 
self.frame.display.criteria = self.frame.display:CreateFontString("$parentCriteria", "ARTWORK", "GameFontNormal")
self.frame.display.criteria:SetPoint("TOPLEFT", 0, -135)
self.frame.display.criteria:SetJustifyH("LEFT")
self.frame.display.criteria:SetJustifyV("TOP")
 
tinsert(UISpecialFrames,self.frame:GetName())
self.frame:SetScript("OnShow", function()
if self.masterList[self.currentAch] then
self.masterList[self.currentAch].searchString = self:GetSearchString(self.currentAch)
end
PlaySound("AchievementMenuOpen");
end)
self.frame:SetScript("OnHide", function()
PlaySound("AchievementMenuClose");
end)
 
self:RefreshCategoryButtons()
self:RefreshAchievementButtons()
self:UpdateFunction()
 
self.frame:Hide()
end
 
function self:CreateCategoryButton(name, parent) --Rabbitbunny
local button = CreateFrame("Button", name, parent)
button:EnableMouseWheel(true)
button:SetWidth(150)
button:SetHeight(16)
 
button.text = button:CreateFontString("$parentText", "BORDER", "GameFontNormal")
button.text:SetPoint("LEFT")
 
--button:SetNormalTexture("Interface/FriendsFrame/UI-FriendsFrame-HighlightBar")
button:SetHighlightTexture("Interface/FriendsFrame/UI-FriendsFrame-HighlightBar", "ADD")
 
button:SetScript("OnClick", function()
local id = button:GetID()
self.currentCat = id
for _,v in next, self.categories[self.currentTab] do
if v.id == id then
v.collapsed = not v.collapsed
break
end
end
self:RefreshCategoryButtons()
self:RefreshAchievementButtons()
end)
button:SetScript("OnMouseWheel", function()
self:ButtonScroll(arg1, "catScroll", "catOffset")
--[[--arg1 = 1 for up, -1 for down
local sMin, sMax = self.frame.catScroll:GetMinMaxValues()
self.catOffset = math.min(sMax, math.max(sMin, self.catOffset + (arg1 * -1)))
self.frame.catScroll:SetValue(self.catOffset)
--self:RefreshCategoryButtons()]]--
 
end)
 
return button
end
 
function self:CreateAchievementButton(name, parent) --Rabbitbunny
local button = CreateFrame("Button", name, parent)
button:EnableMouseWheel(true)
button:SetWidth(300)
button:SetHeight(16)
 
button.expand = button:CreateFontString("$parentExpand", "BORDER", "GameFontNormal")
button.expand:SetText("+")
button.expand:SetWidth(10)
button.expand:SetHeight(10)
button.expand:SetPoint("TOPLEFT")
 
button.offset = CreateFrame("Frame", nil, button)
button.offset:SetWidth(10)
button.offset:SetHeight(1)
button.offset:SetPoint("TOPLEFT", 9, 0)
 
button.background = button:CreateTexture("$parentBackground", "BACKGROUND")
button.background:SetTexture("Interface\\AchievementFrame\\UI-Achievement-Parchment-Horizontal")
button.background:SetPoint("TOPLEFT", button.offset, "TOPRIGHT")
button.background:SetPoint("BOTTOMRIGHT", button)
--button.background:SetWidth(190)
--button.background:SetHeight(30)
 
button.name = button:CreateFontString("$parentNameText","BORDER", "GameFontNormal")
button.name:SetPoint("TOPLEFT", button.background)
--button.text:SetPoint("TOPRIGHT", button, "TOPRIGHT")
button.name:SetWidth(200)
button.name:SetHeight(16)
button.name:SetJustifyH("LEFT")
button.name:SetJustifyV("TOP")
button.name:SetTextColor(1,1,1)
 
button.points = button:CreateFontString("$parentPointsText","BORDER", "GameFontNormal")
button.points:SetPoint("TOPLEFT", button, "TOPLEFT", 217, 0)
--button.text:SetPoint("TOPRIGHT", button, "TOPRIGHT")
button.points:SetWidth(20)
button.points:SetJustifyH("LEFT")
button.points:SetJustifyV("TOP")
button.points:SetTextColor(1,1,1)
 
button.completed = button:CreateFontString("$parentCompletedText","BORDER", "GameFontNormal")
button.completed:SetPoint("TOPLEFT", button.points, "TOPRIGHT", 3, 0)
--button.text:SetPoint("TOPRIGHT", button, "TOPRIGHT")
button.completed:SetWidth(60)
button.completed:SetJustifyH("LEFT")
button.completed:SetJustifyV("TOP")
button.completed:SetTextColor(1,1,1)
 
 
button:SetHighlightTexture("Interface/FriendsFrame/UI-FriendsFrame-HighlightBar", "ADD")
 
button:SetScript("OnClick", function()
local id = button:GetID()
if GetPreviousAchievement(id) and (not GetNextAchievement(id)) then
self.expandList[id] = not self.expandList[id]
self:RefreshAchievementButtons(false)
end
self:SetDisplayAchievement(id)
end)
button:SetScript("OnMouseWheel", function()
self:ButtonScroll(arg1, "achScroll", "achOffset")
--[[--arg1 = 1 for up, -1 for down
local sMin, sMax = self.frame.achScroll:GetMinMaxValues()
self.achOffset = math.min(sMax, math.max(sMin, self.achOffset + (arg1 * -1)))
self.frame.achScroll:SetValue(self.achOffset)
--self:RefreshAchievementButtons()
]]--
end)
 
return button
end
 
function self:UpdateFunction()
if (not self.frame) or (not self.frame:IsShown()) then return end
self:RefreshCategoryButtons()
self:RefreshAchievementButtons()
self.pointsText:SetText(GetTotalAchievementPoints())
end
 
-- -----------------------------
-- --------Event Hooks
function FarmFu:PLAYER_LOGOUT() -- Save partial zones, Not sure if it works
function self:PLAYER_LOGOUT() -- Save partial zones, Not sure if it works
self:ZoneMoney("PLAYER_LOGOUT")
end
 
function FarmFu:ZONE_CHANGED()
function self:ZONE_CHANGED()
self:ZoneMoney("ZONE_CHANGED")
end
 
function FarmFu:ZONE_CHANGED_NEW_AREA()
function self:ZONE_CHANGED_NEW_AREA()
self:ZoneMoney("ZONE_CHANGED_NEW_AREA")
end
 
function FarmFu:ZONE_CHANGED_INDOORS()
function self:ZONE_CHANGED_INDOORS()
self:ZoneMoney("ZONE_CHANGED_INDOORS")
end
 
function self:CHAT_MSG_ADDON()
self:GetData()
end
 
-- -----------------------------
-- ------------Resets
function FarmFu:setDefaults()
function self:setDefaults()
self.db.profile.minInZone = 60
self.db.profile.showDebug = false
self.db.profile.showTotalValue = true
486,7 → 833,7
self.db.profile.ignoremules = false
end
 
function FarmFu:ResetSession()
function self:ResetSession()
if self.db.profile.showDebug then
self:out(L["Name"]..": "..L["Session_Reset"])
end
499,7 → 846,7
sessionTimeOld = time()
end
 
function FarmFu:ResetZone(area, entered, money, keyvalue, invvalue, bagvalue, durvalue, totalvalue)
function self:ResetZone(area, entered, money, keyvalue, invvalue, bagvalue, durvalue, totalvalue)
zoneTotalOld = totalvalue
zoneInvOld = invvalue
zoneBagOld = bagvalue
510,13 → 857,13
zoneAreaOld = area
end
 
function FarmFu:resetZones() --deletes entire DB
function self:resetZones() --deletes entire DB
self.db.realm = {}
end
 
-- ----------------------------
-- ------------Appraisers
function FarmFu:AppraiseEverything() --local money, bagvalue, invvalue, keyvalue, durvalue, totalvalue = self:AppraiseEverything()
function self:AppraiseEverything() --local money, bagvalue, invvalue, keyvalue, durvalue, totalvalue = self:AppraiseEverything()
local money = GetMoney()
local bagvalue = self:AppraiseBags()
local invvalue = self:AppraiseInventory()
527,7 → 874,7
return money, bagvalue, invvalue, keyvalue, durvalue, totalvalue
end
 
function FarmFu:AppraiseDurability()
function self:AppraiseDurability()
local value = 0
 
--if self.db.profile.showDebug then
579,7 → 926,7
return value
end
 
function FarmFu:AppraiseKeyring()
function self:AppraiseKeyring()
local value = 0
 
--if self.db.profile.showDebug then
613,7 → 960,7
return value
end
 
function FarmFu:AppraiseBags()
function self:AppraiseBags()
local value = 0
--if self.db.profile.showDebug then
--self:out("Appraising Bags.........")
659,7 → 1006,7
return value
end
 
function FarmFu:AppraiseInventory()
function self:AppraiseInventory()
local money = 0
--if self.db.profile.showDebug then
--self:out("Appraising Inventory.........")
708,7 → 1055,7
return money
end
 
function FarmFu:GetPriceData(link) --Tested with AucAdvanced r3164
function self:GetPriceData(link) --Tested with AucAdvanced r3164
--sell, buy, buyout
if not link then
return 0
743,7 → 1090,7
end
 
-- ----------------------------
function FarmFu:ZoneMoney(event) -- calculate previous zone data nad returns variables to 0 for next zone
function self:ZoneMoney(event) -- calculate previous zone data nad returns variables to 0 for next zone
local realzone = GetRealZoneText()
local subzone = GetSubZoneText()
local zone = GetZoneText()
908,7 → 1255,7
end
end
 
function FarmFu:SaveZoneData(profit, bagprofit, durprofit, invprofit, total, inzone, entered)
function self:SaveZoneData(profit, bagprofit, durprofit, invprofit, total, inzone, entered)
if self.db.profile.showDebug then
self:out("Saving Zone Data")
end
958,8 → 1305,12
end
end
 
function self:SaveSession()
 
end
 
-- ------------Workhorses
function FarmFu:PrettyDate(timestamp) -- WoW doesn't allow the time format I want, This makes it.
function self:PrettyDate(timestamp) -- WoW doesn't allow the time format I want, This makes it.
local prettydate = strlower(date("%I:%M%p", timestamp)) --08:32am
 
if strsub(prettydate, 0, 1) == "0" then --8:32am
969,7 → 1320,7
return prettydate
end
 
function FarmFu:out(chat, errorframe) --this is my lovely output function, DEFAULT_CHAT_FRAME wastes file space.
function self:out(chat, errorframe) --this is my lovely output function, DEFAULT_CHAT_FRAME wastes file space.
if errorframe ~= nil then
UIErrorsFrame:AddMessage(errorframe, 1.0, 1.0, 0, 1, 10)
end
978,7 → 1329,7
end
end
 
function FarmFu:showZonesToChat() --this is never called, I'm just using it to view the table.
function self:showZonesToChat() --this is never called, I'm just using it to view the table.
DEFAULT_CHAT_FRAME:AddMessage("self.db.realm = {");
for level1, zone in pairs(self.db.realm) do
if level1 ~= "The Real World" and level1 ~= "currentProfile" and level1 ~= "profiles" then
1000,7 → 1351,7
DEFAULT_CHAT_FRAME:AddMessage("}");
end
 
function FarmFu:SetFontSize(size) -- i dunno why I need this, But it cries when I delete it.
function self:SetFontSize(size) -- i dunno why I need this, But it cries when I delete it.
 
self.fontSize = size
 
1010,3 → 1361,25
self:UpdateText()
end
 
function self:SendData()
local data = "Example"
local loops = GetNumFriends()
for a = 1,loops do
name,level,class,_,connected,_,_,_ = GetFriendInfo(a);
if not connected then
--self:out("Offline: "..name);
else
--self:out(name.." "..level.." "..class.." -> "..data);
--SendAddonMessage(self, data, "WHISPER", name)
end
end
end
 
function self:GetData()
--self:out(arg1.." , "..arg2.." , "..arg3.." , "..arg4)
if arg1 == self then
if arg3 == "WHISPER" then
--self:out(arg4.." sent: "..arg2)
end
end
end