diff ReAction.lua @ 25:bf997ea151ca

yet another attempt to add missing files
author Flick <flickerstreak@gmail.com>
date Fri, 07 Mar 2008 22:19:03 +0000
parents
children f1e838841ce1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ReAction.lua	Fri Mar 07 22:19:03 2008 +0000
@@ -0,0 +1,164 @@
+--[[
+
+  ReAction Add-On main file. 
+  
+  Performs add-on and library initialization and setup.
+
+--]]
+
+
+-- 'ReAction' is exported as a global.
+ReAction = AceLibrary("AceAddon-2.0"):new(
+  "AceModuleCore-2.0",
+  "AceEvent-2.0",
+  "AceDB-2.0"
+)
+
+local ReAction = ReAction
+local L = AceLibrary("AceLocale-2.2"):new("ReAction")
+local AceOO = AceLibrary("AceOO-2.0")
+
+
+ReAction.revision = tonumber(("$Revision: 1 $"):match("%d+"))
+ReAction.L = L
+
+-- global variable strings for integration with WoW keybindings dialog (see bindings.xml)
+BINDING_HEADER_REACTION             = L["ReAction"]
+BINDING_NAME_REACTION_TOGGLELOCK    = L["Toggle ReAction Bar Lock"]
+BINDING_NAME_REACTION_TOGGLEKEYBIND = L["ReAction Keybinding Mode"]
+
+-- from AceAddon-2.0
+function ReAction:OnInitialize()
+  self:RegisterDB("ReActionDB")
+end
+
+-- from AceAddon-2.0
+function ReAction:OnEnable()
+
+end
+
+-- from AceAddon-2.0
+function ReAction:OnDisable()
+
+end
+
+-- from AceDB-2.0
+function ReAction:OnProfileEnable()
+
+end
+
+-- from AceDB-2.0
+function ReAction:OnProfileDisable()
+
+end
+
+-- from AceModuleCore-2.0
+function ReAction:OnModuleEnable(module)
+  -- this handles initialization ordering issues with ReAction_Bar
+  local barMod = self:GetModule("Bar")
+  if barMod and module.ApplyToBar then
+    for _, b in pairs(barMod.bars) do
+      if b then
+        module:ApplyToBar(b)
+      end
+    end
+  end
+end
+
+-- from AceModuleCore-2.0
+function ReAction:OnModuleDisable(module)
+  local barMod = self:GetModule("Bar")
+  if barMod and module.RemoveFromBar then
+    for _, b in pairs(barMod.bars) do
+      if b then
+        module:RemoveFromBar(b)
+      end
+    end
+  end
+end
+
+--[[
+  Module API (see bar.lua for usage)
+
+  module:ApplyToBar(bar)
+  module:RemoveFromBar(bar)
+  module:RefreshBar(bar)
+  module:ApplyConfigMode(mode,listOfBars)
+  module:GetBarNameModifier(bar)
+  module:EraseBarConfig(barName)
+]]--
+
+
+-- debugging
+ReAction.debug = true
+if ReAction.debug then
+  ReAction.print = function(msg)
+    DEFAULT_CHAT_FRAME:AddMessage(msg)
+  end
+  --seterrorhandler(ReAction.print)
+else
+  ReAction.print = function() end
+end
+
+
+-- utility
+local newTable, recycle, deepCopy, deepDelete, varName
+do
+  local pool = setmetatable( { }, {__mode="kv"} )
+
+  function newTable(...)
+    local t = table.remove(pool) or { }
+    for i = 1, select('#',...), 2 do
+      local k = select(i,...)
+      local v = select(i+1,...)
+      if k and v then
+        t[k] = v
+      end
+    end
+    return t
+  end
+
+  function recycle(t)
+    if type(t) == "table" then
+      table.insert(pool,t)
+    end
+  end
+
+  function deepCopy( x )
+    if type(x) ~= "table" then
+      return x
+    end
+    local r = newTable()
+    for k,v in pairs(x) do
+      r[k] = deepCopy(v)
+    end
+    return r
+  end
+
+  function deepDelete( x )
+    if type(x) == "table" and x.IsObjectType == nil and not(AceOO.inherits(x,AceOO.Object)) then -- don't want to delete WoW or AceOO objects!
+      for k,v in pairs(x) do
+        x[k] = deepDelete(v)
+      end
+      recycle(x)
+    end
+  end
+
+  function varName(s)
+    return tostring(s):gsub("[^a-zA-Z0-9_]","_")
+  end
+
+  local u = setmetatable( { }, {__newindex = function(self,k,v) rawset(self,#self+1,v) ; rawset(self,k,v) end} )
+  u.deepCopy = deepCopy
+  u.deepDelete = deepDelete
+  u.newTable = newTable
+  u.recycle = recycle
+  u.varName = varName
+
+  ReAction.util = u
+end
+
+function ReAction:GetUtilFuncs()
+  return unpack(self.util)
+end
+