Skip to content
This repository has been archived by the owner on Sep 11, 2023. It is now read-only.

Commit

Permalink
Revert "Make core class using Poncho"
Browse files Browse the repository at this point in the history
This reverts commit ee7e857.
  • Loading branch information
João Cardoso committed Apr 1, 2017
1 parent ee7e857 commit cea31d9
Showing 1 changed file with 66 additions and 50 deletions.
116 changes: 66 additions & 50 deletions core/classes.lua
Original file line number Diff line number Diff line change
@@ -1,75 +1,91 @@
--[[
classes.lua
Base class used by all UI components and custom event broadcast system
Utility method for constructing object classes and messaging between them
--]]
local ADDON, Addon = ...
local CreateClass = LibStub('Poncho-1.0')
local Base = CreateClass()
local Mixins = {'RegisterEvent', 'UnregisterEvent', 'UnregisterEvents', 'RegisterMessage', 'UnregisterMessage', 'UnregisterMessages', 'SendMessage'}
local Messages = {}
LibStub('AceAddon-3.0'):NewAddon(Addon, ADDON, 'AceEvent-3.0')
Addon.SendCall = LibStub('CallbackHandler-1.0'):New(Addon, 'RegisterCall', 'UnregisterCall', 'UnregisterCalls').Fire
LibStub('AceAddon-3.0'):NewAddon(Addon, ADDON, 'AceEvent-3.0', 'AceConsole-3.0')
Addon.SendMessage = LibStub('CallbackHandler-1.0'):New(Messages, 'RegisterMessage', 'UnregisterMessage', 'UnregisterMessages').Fire
Addon.Cache = LibStub('LibItemCache-1.1')
function Addon:NewClass(name, type, xml, parent)
local class = CreateClass(type, ADDON .. className, nil, xml, parent or Base)
self[name] = class
return class
for key, func in pairs(Messages) do
Addon[key] = func
end
--[[ Base Methods ]]--
--[[ API ]]--
function Addon:NewClass(name, type, parent)
local class = CreateFrame(type)
class.__index = class
class.Name = name
class:Hide()
if parent then
class = setmetatable(class, parent)
class.__super = parent
else
class.Bind = function(self, obj)
return setmetatable(obj, self)
end
function Base:UnregisterEvents()
self:UnregisterAllEvents()
self:UnregisterCalls()
end
class.RegisterFrameMessage = function(self, msg, ...)
self:RegisterMessage(self:GetFrameID() .. msg, ...)
end
function Base:RegisterFrameCall (msg, ...)
self:RegisterCall(self:GetFrameID() .. msg, ...)
end
class.UnregisterFrameMessage = function(self, msg, ...)
self:UnregisterMessage(self:GetFrameID() .. msg, ...)
end
function Base:UnregisterFrameCall (msg, ...)
self:UnregisterCall(self:GetFrameID() .. msg, ...)
end
class.SendFrameMessage = function(self, msg, ...)
self:SendMessage(self:GetFrameID() .. msg, ...)
end
function Base:SendFrameCall (msg, ...)
self:SendCall(self:GetFrameID() .. msg, ...)
end
class.GetFrameID = function(self)
local frame = self:GetFrame()
return frame and frame.frameID
end
function Base:GetFrameID ()
local frame = self:GetFrame()
return frame and frame.frameID
end
class.GetProfile = function(self)
local frame = self:GetFrame()
return frame and frame:GetProfile()
end
function Base:GetProfile ()
local frame = self:GetFrame()
return frame and frame:GetProfile()
end
class.GetPlayer = function(self)
local frame = self:GetFrame()
return frame and frame:GetPlayer()
end
function Base:GetPlayer ()
local frame = self:GetFrame()
return frame and frame:GetPlayer()
end
class.IsCached = function(self)
local frame = self:GetFrame()
return frame and frame:IsCached()
end
function Base:IsCached ()
local frame = self:GetFrame()
return frame and frame:IsCached()
end
class.GetFrame = function(self)
if not self.frame then -- loop of doom, do only once
local parent = self:GetParent()
while parent and not parent.frameID do
parent = parent:GetParent()
end
function Base:GetFrame ()
if not self.frame then -- loop of doom, do only once
local parent = self:GetParent()
while parent and not parent.frameID do
parent = parent:GetParent()
self.frame = parent
end
return self.frame
end
self.frame = parent
for i, func in ipairs(Mixins) do
class[func] = self[func]
end
end
return self.frame
self[name] = class
return class
end
Base.SendCall = Addon.SendCall
Base.RegisterCall = Addon.RegisterCall
Base.UnregisterCall = Addon.UnregisterCall
Base.UnregisterCalls = Addon.UnregisterCalls
function Addon:UnregisterEvents()
Addon.UnregisterAllEvents(self)
Addon.UnregisterMessages(self)
end

0 comments on commit cea31d9

Please sign in to comment.