Mercurial > wow > reaction
changeset 23:dba04d85c799
Added missing files in 1.0 dev tree
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Fri, 07 Mar 2008 22:17:51 +0000 |
parents | 1b9323256a1b |
children | 9e1984088124 |
files | Bindings.xml embeds.xml lib/AceAddon-2.0/AceAddon-2.0.toc lib/AceConsole-2.0/AceConsole-2.0.toc lib/AceDB-2.0/AceDB-2.0.toc lib/AceEvent-2.0/AceEvent-2.0.toc lib/AceLibrary/AceLibrary.toc lib/AceLocale-2.2/AceLocale-2.2.toc lib/AceModuleCore-2.0/AceModuleCore-2.0.lua lib/AceModuleCore-2.0/AceModuleCore-2.0.toc lib/AceOO-2.0/AceOO-2.0.toc locale.xml locale/enUS.lua modules.xml modules/FuBar_ReActionFu/FuBar_ReActionFu.lua modules/FuBar_ReActionFu/FuBar_ReActionFu.toc |
diffstat | 16 files changed, 1008 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Bindings.xml Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,11 @@ +<Bindings> + <!-- general keybindings --> + <Binding name="REACTION_TOGGLELOCK" header="REACTION"> + ReActionAddOn:ToggleLocked() + </Binding> + <Binding name="REACTION_TOGGLEKEYBIND"> + ReActionAddOn:ToggleKeybindMode() + </Binding> + + <!-- dummy keybinds --> +</Bindings>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/embeds.xml Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,19 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd"> + + <Script file="lib\AceLibrary\AceLibrary.lua"/> + <Script file="lib\AceOO-2.0\AceOO-2.0.lua"/> + <Script file="lib\AceAddon-2.0\AceAddon-2.0.lua"/> + <Script file="lib\AceConsole-2.0\AceConsole-2.0.lua"/> + <Script file="lib\AceDB-2.0\AceDB-2.0.lua"/> + <Script file="lib\AceEvent-2.0\AceEvent-2.0.lua"/> + <Script file="lib\AceLocale-2.2\AceLocale-2.2.lua"/> + <Script file="lib\AceModuleCore-2.0\AceModuleCore-2.0.lua"/> + <Script file="lib\Dewdrop-2.0\Dewdrop-2.0.lua"/> + + <Script file="modules\ReAction_ConfigUI\lib\Waterfall-1.0\Waterfall-1.0.lua"/> + <Script file="modules\FuBar_ReActionFu\lib\FuBarPlugin-2.0\FuBarPlugin-2.0.lua"/> + <Script file="modules\FuBar_ReActionFu\lib\Tablet-2.0\Tablet-2.0.lua"/> + +</Ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceAddon-2.0/AceAddon-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceAddon-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary, AceOO-2.0 + +AceAddon-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceConsole-2.0/AceConsole-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceConsole-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary, AceEvent-2.0, AceOO-2.0 + +AceConsole-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceDB-2.0/AceDB-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceDB-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary, AceEvent-2.0, AceOO-2.0 + +AceDB-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceEvent-2.0/AceEvent-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceEvent-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary, AceOO-2.0 + +AceEvent-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceLibrary/AceLibrary.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,10 @@ +## Interface: 20200 + +## Title: Lib: AceLibrary +## Notes: AddOn development framework +## Author: Ace Development Team +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 + +AceLibrary.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceLocale-2.2/AceLocale-2.2.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,13 @@ +## Interface: 20200 + +## Title: Lib: AceLocale-2.2 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary + +AceLocale-2.2.lua +AceLocale-2.2-2.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceModuleCore-2.0/AceModuleCore-2.0.lua Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,688 @@ +--[[ +Name: AceModuleCore-2.0 +Revision: $Rev: 43318 $ +Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team) +Inspired By: Ace 1.x by Turan (turan@gryphon.com) +Website: http://www.wowace.com/ +Documentation: http://www.wowace.com/index.php/AceModuleCore-2.0 +SVN: http://svn.wowace.com/root/trunk/Ace2/AceModuleCore-2.0 +Description: Mixin to provide a module system so that modules or plugins can + use an addon as its core. +Dependencies: AceLibrary, AceOO-2.0, AceAddon-2.0, AceEvent-2.0 (optional) +License: LGPL v2.1 +]] + +local MAJOR_VERSION = "AceModuleCore-2.0" +local MINOR_VERSION = "$Revision: 43318 $" + +if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end +if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end + +if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0") end + +local function safecall(func, ...) + local success, err = pcall(func, ...) + if not success then geterrorhandler()(err:find("%.lua:%d+:") and err or (debugstack():match("\n(.-: )in.-\n") or "") .. err) end +end + +local AceEvent +local AceOO = AceLibrary:GetInstance("AceOO-2.0") +local AceModuleCore = AceOO.Mixin { + "NewModule", + "HasModule", + "GetModule", + "IsModule", + "IterateModules", + "IterateModulesWithMethod", + "CallMethodOnAllModules", + "SetModuleMixins", + "SetModuleClass", + "IsModuleActive", + "ToggleModuleActive", + "SetModuleDefaultState", + } +local AceAddon + +local function getlibrary(lib) + if type(lib) == "string" then + return AceLibrary(lib) + else + return lib + end +end + +local new, del +do + local list = setmetatable({}, {__mode='k'}) + function new() + local t = next(list) + if t then + list[t] = nil + return t + else + return {} + end + end + function del(t) + for k in pairs(t) do + t[k] = nil + end + list[t] = true + return nil + end +end + +local iterList = setmetatable({}, {__mode='v'}) +local modulesWithMethod = setmetatable({}, {__mode='kv'}) +do + local function func(t) + local i = t.i + 1 + local l = t.l + local k = l[i] + if k then + t.i = i + return k, l.m[k] + else + t = del(t) + end + end + function AceModuleCore:IterateModules() + local list = iterList[self] + if not list then + list = new() + for k in pairs(self.modules) do + list[#list+1] = k + end + table.sort(list) + list.m = self.modules + iterList[self] = list + end + local t = new() + t.i = 0 + t.l = list + return func, t, nil + end + + function AceModuleCore:IterateModulesWithMethod(method) + local masterList = modulesWithMethod[self] + if not masterList then + masterList = new() + modulesWithMethod[self] = masterList + end + local list = masterList[method] + if not list then + list = new() + for k, v in pairs(self.modules) do + if self:IsModuleActive(k) and type(v[method]) == "function" then + list[#list+1] = k + end + end + table.sort(list) + list.m = self.modules + masterList[method] = list + end + local t = new() + t.i = 0 + t.l = list + return func, t, nil + end + +--[[---------------------------------------------------------------------------------- +Notes: + Safely calls the given method on all active modules if it exists on said modules. This will automatically subvert any errors that occur in the modules. +Arguments: + string - the name of the method. + tuple - the list of arguments to call the method with. +Example: + core:CallMethodOnAllModules("OnSomething") + core:CallMethodOnAllModules("OnSomethingElse", 1, 2, 3, 4) +------------------------------------------------------------------------------------]] + function AceModuleCore:CallMethodOnAllModules(method, ...) + for name, module in self:IterateModulesWithMethod(method) do + local success, ret = pcall(module[method], module, ...) + if not success then + geterrorhandler()(ret) + end + end + end +end + +--[[---------------------------------------------------------------------------- +Notes: + Create a new module, parented to self. + The module created does, in fact, inherit from AceAddon-2.0. +Arguments: + string - name/title of the Module. + list of mixins the module is to inherit from. +Example: + MyModule = core:NewModule('MyModule', "AceEvent-2.0", "AceHook-2.1") +------------------------------------------------------------------------------]] +local tmp = {} +function AceModuleCore:NewModule(name, ...) + if not self.modules then + AceModuleCore:error("CreatePrototype() must be called before attempting to create a new module.", 2) + end + AceModuleCore:argCheck(name, 2, "string") + if name:len() == 0 then + AceModuleCore:error("Bad argument #2 to `NewModule`, string must not be empty") + end + if self.modules[name] then + AceModuleCore:error("The module %q has already been registered", name) + end + + if iterList[self] then + iterList[self] = del(iterList[self]) + end + + for i = 1, select('#', ...) do + tmp[i] = getlibrary((select(i, ...))) + end + + if self.moduleMixins then + for _,mixin in ipairs(self.moduleMixins) do + local exists = false + for _,v in ipairs(tmp) do + if mixin == v then + exists = true + break + end + end + if not exists then + tmp[#tmp+1] = mixin + end + end + end + + local module = AceOO.Classpool(self.moduleClass, unpack(tmp)):new(name) + self.modules[name] = module + module.name = name + module.title = name + + AceModuleCore.totalModules[module] = self + + if modulesWithMethod[self] then + for k,v in pairs(modulesWithMethod[self]) do + modulesWithMethod[self] = del(v) + end + end + + if type(self.OnModuleCreated) == "function" then + safecall(self.OnModuleCreated, self, name, module) + end + if AceEvent then + AceEvent:TriggerEvent("Ace2_ModuleCreated", module) + end + + local num = #tmp + for i = 1, num do + tmp[i] = nil + end + return module +end +--[[---------------------------------------------------------------------------------- +Notes: + Return whether the module names given are all available in the core. +Arguments: + list of strings that are the names of the modules. (typically you'd only check for one) +Returns: + * boolean - Whether all the modules are available in the core. +Example: + if core:HasModule('Bank') then + -- do banking + end +------------------------------------------------------------------------------------]] +function AceModuleCore:HasModule(...) + for i = 1, select('#', ...) do + if not self.modules[select(i, ...)] then + return false + end + end + + return true +end + +--[[------------------------------------------------------------------------------------ +Notes: + Return the module "name" if it exists. + If the module doesnot exist, an error is thrown. +Arguments: + string - the name of the module. +Returns: + The module requested, if it exists. +Example: + local bank = core:GetModule('Bank') +------------------------------------------------------------------------------------]] +function AceModuleCore:GetModule(name) + if not self.modules then + AceModuleCore:error("Error initializing class. Please report error.") + end + if not self.modules[name] then + AceModuleCore:error("Cannot find module %q.", name) + end + return self.modules[name] +end + +--[[---------------------------------------------------------------------------------- +Notes: + Return whether the given module is actually a module. +Arguments: + reference to the module +Returns: + * boolean - whether the given module is actually a module. +Example: + if core:IsModule(module) then + -- do something + end + -- alternatively + if AceModuleCore:IsModule(module) then + -- checks all modules, no matter the parent + end +------------------------------------------------------------------------------------]] +function AceModuleCore:IsModule(module) + if self == AceModuleCore then + return AceModuleCore.totalModules[module] + elseif type(module) == "table" then + if module.name and self.modules[module.name] and self.modules[module.name].name == module.name then + return true + end + for k,v in pairs(self.modules) do + if v == module then + return true + end + end + return false + end +end + +--[[---------------------------------------------------------------------------------- +Notes: + * Sets the default mixins for a given module. + * This cannot be called after :NewModule() has been called. + * This should really only be called if you use the mixins in your prototype. +Arguments: + list of mixins (up to 20) +Example: + core:SetModuleMixins("AceEvent-2.0", "AceHook-2.0") +------------------------------------------------------------------------------------]] +function AceModuleCore:SetModuleMixins(...) + if self.moduleMixins then + AceModuleCore:error('Cannot call "SetModuleMixins" twice') + elseif not self.modules then + AceModuleCore:error("Error initializing class. Please report error.") + elseif next(self.modules) then + AceModuleCore:error('Cannot call "SetModuleMixins" after "NewModule" has been called.') + end + + self.moduleMixins = { ... } + for i,v in ipairs(self.moduleMixins) do + self.moduleMixins[i] = getlibrary(v) + end +end + +-- #NODOC +function AceModuleCore:SetModuleClass(class) + class = getlibrary(class) + if not AceOO.inherits(class, AceOO.Class) then + AceModuleCore:error("Bad argument #2 to `SetModuleClass' (Class expected)") + end + if not self.modules then + AceModuleCore:error("Error initializing class. Please report error.") + end + if self.customModuleClass then + AceModuleCore:error("Cannot call `SetModuleClass' twice.") + end + self.customModuleClass = true + self.moduleClass = class + self.modulePrototype = class.prototype +end + +local mt = {__index=function(self, key) + self[key] = false + return false +end} +local defaultState = setmetatable({}, {__index=function(self, key) + local t = setmetatable({}, mt) + self[key] = t + return t +end}) + +local function isDisabled(core, module) + local moduleName + if type(module) == "table" then + moduleName = module.name + else + moduleName = module + end + local disabled + if type(module) == "table" and type(module.IsActive) == "function" then + return not module:IsActive() + elseif AceOO.inherits(core, "AceDB-2.0") then + local _,profile = core:GetProfile() + disabled = core.db and core.db.raw and core.db.raw.disabledModules and core.db.raw.disabledModules[profile] and core.db.raw.disabledModules[profile][moduleName] + else + disabled = core.disabledModules and core.disabledModules[moduleName] + end + if disabled == nil then + return defaultState[core][moduleName] + else + return disabled + end +end + +--[[---------------------------------------------------------------------------------- +Notes: + Sets the default active state of a module. This should be called before the ADDON_LOADED of the module. +Arguments: + string - name of the module. + table - reference to the module. + boolean - new state. false means disabled by default, true means enabled by default (true is the default). +Example: + self:SetModuleDefaultState('bank', false) +------------------------------------------------------------------------------------]] +function AceModuleCore:SetModuleDefaultState(module, state) + AceModuleCore:argCheck(module, 2, "table", "string") + AceModuleCore:argCheck(state, 3, "boolean") + + if type(module) == "table" then + if not self:IsModule(module) then + AceModuleCore:error("%q is not a module", module) + end + module = module.name + end + + defaultState[self][module] = not state +end + +--[[---------------------------------------------------------------------------------- +Notes: +Toggles the active state of a module. + +This calls module:ToggleActive([state]) if available. + +If suspending, This will call :OnDisable() on the module if it is available. Also, it will iterate through the addon's mixins and call :OnEmbedDisable(module) if available. - this in turn will, through AceEvent and others, unregister events/hooks/etc. depending on the mixin. Also, it will call :OnModuleDisable(module) on the core if it is available. + +If resuming, This will call :OnEnable(first) on the module if it is available. Also, it will iterate through the addon's mixins and call :OnEmbedEnable(module) if available. - this in turn will, through AceEvent and others, unregister events/hooks/etc. depending on the mixin. Also, it will call :OnModuleEnable(module) on the core if it is available. + +If you call :ToggleModuleActive("name or module, true) and it is already active, it silently returns, same if you pass false and it is inactive. + +Arguments: + string/table - name of the module or a reference to the module + [optional] boolean - new state. (default not :IsModuleActive("name" or module)) +Returns: + * boolean - Whether the module is now in an active (enabled) state. +Example: + self:ToggleModuleActive('bank') +------------------------------------------------------------------------------------]] +function AceModuleCore:ToggleModuleActive(module, state) + AceModuleCore:argCheck(module, 2, "table", "string") + AceModuleCore:argCheck(state, 3, "nil", "boolean") + + if type(module) == "string" then + if not self:HasModule(module) then + AceModuleCore:error("Cannot find module %q", module) + end + module = self:GetModule(module) + elseif not self:IsModule(module) then + AceModuleCore:error("%q is not a module", module) + end + + local disable + if state == nil then + disable = self:IsModuleActive(module) + else + disable = not state + if disable ~= self:IsModuleActive(module) then + return + end + end + + if type(module.ToggleActive) == "function" then + return module:ToggleActive(not disable) + elseif AceOO.inherits(self, "AceDB-2.0") then + if not self.db or not self.db.raw then + AceModuleCore:error("Cannot toggle a module until `RegisterDB' has been called and `ADDON_LOADED' has been fired.") + end + if type(self.db.raw.disabledModules) ~= "table" then + self.db.raw.disabledModules = {} + end + local _,profile = self:GetProfile() + if type(self.db.raw.disabledModules[profile]) ~= "table" then + self.db.raw.disabledModules[profile] = {} + end + if type(self.db.raw.disabledModules[profile][module.name]) ~= "table" then + local value = nil + if disable ~= defaultState[self][module.name] then + value = disable + end + self.db.raw.disabledModules[profile][module.name] = value + end + if not disable then + if not next(self.db.raw.disabledModules[profile]) then + self.db.raw.disabledModules[profile] = nil + end + if not next(self.db.raw.disabledModules) then + self.db.raw.disabledModules = nil + end + end + else + if type(self.disabledModules) ~= "table" then + self.disabledModules = {} + end + local value = nil + if disable ~= defaultState[self][module.name] then + value = disable + end + self.disabledModules[module.name] = value + end + if AceOO.inherits(module, "AceAddon-2.0") then + if not AceAddon.addonsStarted[module] then + return + end + end + if not disable then + local first = nil + if AceOO.inherits(module, "AceAddon-2.0") then + if AceAddon.addonsEnabled and not AceAddon.addonsEnabled[module] then + AceAddon.addonsEnabled[module] = true + first = true + end + end + local current = module.class + while true do + if current == AceOO.Class then + break + end + if current.mixins then + for mixin in pairs(current.mixins) do + if type(mixin.OnEmbedEnable) == "function" then + safecall(mixin.OnEmbedEnable, mixin, module, first) + end + end + end + current = current.super + end + if type(module.OnEnable) == "function" then + safecall(module.OnEnable, module, first) + end + if AceEvent then + AceEvent:TriggerEvent("Ace2_AddonEnabled", module, first) + end + else + local current = module.class + while true do + if current == AceOO.Class then + break + end + if current.mixins then + for mixin in pairs(current.mixins) do + if type(mixin.OnEmbedDisable) == "function" then + safecall(mixin.OnEmbedDisable, mixin, module) + end + end + end + current = current.super + end + if type(module.OnDisable) == "function" then + safecall(module.OnDisable, module) + end + if AceEvent then + AceEvent:TriggerEvent("Ace2_AddonDisabled", module) + end + end + return not disable +end + +--[[----------------------------------------------------------------------- +Notes: + Returns whether the module is in an active (enabled) state. This calls module:IsActive() if available. if notLoaded is set, then "name" must be a string. +Arguments: + string/table - name of the module or a reference to the module + [optional] - boolean - if set, this will check modules that are not loaded as well. (default: false) +Returns: + * boolean - Whether the module is in an active (enabled) state. +Example: + assert(self:IsModuleActive('bank')) +------------------------------------------------------------------------]] +function AceModuleCore:IsModuleActive(module, notLoaded) + AceModuleCore:argCheck(module, 2, "table", "string") + AceModuleCore:argCheck(notLoaded, 3, "nil", "boolean") + if notLoaded then + AceModuleCore:argCheck(module, 2, "string") + end + + if AceModuleCore == self then + self:argCheck(module, 2, "table") + + local core = AceModuleCore.totalModules[module] + if not core then + self:error("Bad argument #2 to `IsModuleActive'. Not a module") + end + return core:IsModuleActive(module) + end + + if type(module) == "string" then + if not notLoaded and not self:HasModule(module) then + AceModuleCore:error("Cannot find module %q", module) + end + if not notLoaded then + module = self:GetModule(module) + else + module = self:HasModule(module) and self:GetModule(module) or module + end + else + if not self:IsModule(module) then + AceModuleCore:error("%q is not a module", module) + end + end + + return not isDisabled(self, module) +end + +-- #NODOC +function AceModuleCore:OnInstanceInit(target) + if target.modules then + do return end + AceModuleCore:error("OnInstanceInit cannot be called twice") + end + + if not AceAddon then + if AceLibrary:HasInstance("AceAddon-2.0") then + AceAddon = AceLibrary("AceAddon-2.0") + else + self:error(MAJOR_VERSION .. " requires AceAddon-2.0") + end + end + target.modules = {} + + target.moduleClass = AceOO.Class("AceAddon-2.0") + target.modulePrototype = target.moduleClass.prototype +end + +AceModuleCore.OnManualEmbed = AceModuleCore.OnInstanceInit + +function AceModuleCore.OnEmbedProfileDisable(AceModuleCore, self, newProfile) + if not AceOO.inherits(self, "AceDB-2.0") then + return + end + local _,currentProfile = self:GetProfile() + for k, module in pairs(self.modules) do + if type(module.IsActive) == "function" or type(module.ToggleActive) == "function" then + -- continue + else + local currentActive = not self.db or not self.db.raw or not self.db.raw.disabledModules or not self.db.raw.disabledModules[currentProfile] or not self.db.raw.disabledModules[currentProfile][module.name] + local newActive = not self.db or not self.db.raw or not self.db.raw.disabledModules or not self.db.raw.disabledModules[newProfile] or not self.db.raw.disabledModules[newProfile][module.name] + if currentActive ~= newActive then + self:ToggleModuleActive(module) + if not self.db.raw.disabledModules then + self.db.raw.disabledModules = {} + end + if not self.db.raw.disabledModules[currentProfile] then + self.db.raw.disabledModules[currentProfile] = {} + end + self.db.raw.disabledModules[currentProfile][module.name] = not currentActive or nil + end + end + end +end + +-- #NODOC +function AceModuleCore:Ace2_AddonEnabled(module, first) + local addon = self.totalModules[module] + if not addon then + return + end + + if modulesWithMethod[addon] then + for k,v in pairs(modulesWithMethod[addon]) do + modulesWithMethod[addon] = del(v) + end + end + if type(addon.OnModuleEnable) == "function" then + safecall(addon.OnModuleEnable, addon, module, first) + end +end + +-- #NODOC +function AceModuleCore:Ace2_AddonDisabled(module) + local addon = self.totalModules[module] + if not addon then + return + end + + if modulesWithMethod[addon] then + for k,v in pairs(modulesWithMethod[addon]) do + modulesWithMethod[addon] = del(v) + end + end + if type(addon.OnModuleDisable) == "function" then + safecall(addon.OnModuleDisable, addon, module) + end +end + +local function activate(self, oldLib, oldDeactivate) + AceModuleCore = self + + self.totalModules = oldLib and oldLib.totalModules or {} + + self:activate(oldLib, oldDeactivate) + + if oldDeactivate then + oldDeactivate(oldLib) + end +end + +local function external(self, major, instance) + if major == "AceEvent-2.0" then + AceEvent = instance + AceEvent:embed(self) + + self:UnregisterAllEvents() + self:RegisterEvent("Ace2_AddonEnabled") + self:RegisterEvent("Ace2_AddonDisabled") + elseif major == "AceAddon-2.0" then + AceAddon = instance + end +end + +AceLibrary:Register(AceModuleCore, MAJOR_VERSION, MINOR_VERSION, activate, nil, external) +AceModuleCore = AceLibrary(MAJOR_VERSION)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceModuleCore-2.0/AceModuleCore-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceModuleCore-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary, AceOO-2.0, AceAddon-2.0, AceEvent-2.0 + +AceModuleCore-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AceOO-2.0/AceOO-2.0.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,12 @@ +## Interface: 20200 + +## Title: Lib: AceOO-2.0 +## Notes: AddOn development framework +## Author: Ace Development Team +## LoadOnDemand: 1 +## X-Website: http://www.wowace.com +## X-Category: Library +## X-License: LGPL v2.1 + MIT for AceOO-2.0 +## Dependencies: AceLibrary + +AceOO-2.0.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locale.xml Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,7 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd"> + + <Script file="locale\enUS.lua"/> + +</Ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locale/enUS.lua Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,65 @@ +AceLibrary("AceLocale-2.2"):new("ReAction"):RegisterTranslations( "enUS", +function() +return +{ +-- ReAction +["ReAction"] = true, +["Toggle ReAction Bar Lock"] = true, +["ReAction Keybinding Mode"] = true, + +-- ReAction_Bar +["Bar "] = true, +["Delete Bar"] = true, +["Remove the bar from the current profile"] = true, +["Rename Bar"] = true, +["Set a name for the bar"] = true, +["ReAction: name already in use"] = true, + +-- modules/ReAction_HideBlizzard +["Hide Default Action Bars"] = true, +["Hide the default main bar and extra action bars"] = true, + +-- modules/ReAction_Action +["New Action Bar"] = true, +["Create a new bar of standard action buttons"] = true, + +-- modules/ReAction_ConfigUI + -- console commands +["/reaction"] = true, +["/rxn"] = true, +["unlock"] = true, +["config"] = true, + -- messages +["ReAction config mode disabled during combat."] = true, + -- tooltips +["Drag to add/remove buttons"] = true, +["Drag to resize buttons"] = true, +["Right-click-drag"] = true, +["to change spacing"] = true, +["Size:"] = true, +["Spacing:"] = true, +["Drag to move"] = true, +["Shift-drag for sticky mode"] = true, +["Right-click for options"] = true, + -- global options +["Unlock Bars"] = true, +["Unlock bars for dragging and resizing with the mouse"] = true, +["Configure..."] = true, +["Open the configuration dialogue"] = true, + -- bar menu options +["Open the configuration dialogue for this bar"] = true, + -- waterfall options +["Global Settings"] = true, +["Global configuration settings"] = true, +["Module Settings"] = true, +["Configuration settings for each module"] = true, +["Bars"] = true, +["Configuration settings for bars"] = true, + +-- modules/ReAction_State +["Dynamic Behavior"] = true, + + +} +end +)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules.xml Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,21 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd"> + +<Script file="ReAction_Bar.lua"/> +<Script file="modules\ReAction_BagBar\ReAction_BagBar.lua"/> +<Script file="modules\ReAction_Action\ReAction_Action.lua"/> +<Script file="modules\ReAction_ConfigUI\ReAction_ConfigUI.lua"/> +<Script file="modules\ReAction_HideBlizzard\ReAction_HideBlizzard.lua"/> +<Script file="modules\ReAction_Label\ReAction_Label.lua"/> +<Script file="modules\ReAction_MicroMenu\ReAction_MicroMenu.lua"/> +<Script file="modules\ReAction_Paging\ReAction_Paging.lua"/> +<Script file="modules\ReAction_PetAction\ReAction_PetAction.lua"/> +<Script file="modules\ReAction_PopBar\ReAction_PopBar.lua"/> +<Script file="modules\ReAction_PossessBar\Reaction_PossessBar.lua"/> +<Script file="modules\ReAction_StanceBar\ReAction_StanceBar.lua"/> +<Script file="modules\ReAction_State\ReAction_State.lua"/> +<Script file="modules\ReAction_Visibility\ReAction_Visibility.lua"/> +<Script file="modules\FuBar_ReActionFu\FuBar_ReActionFu.lua"/> + +</Ui> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/FuBar_ReActionFu/FuBar_ReActionFu.lua Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,87 @@ +--[[ + FuBar plugin module for ReAction + +--]] + +-- local imports +local ReAction = ReAction +local L = ReAction.L +local _G = _G +local Tablet = AceLibrary("Tablet-2.0") +local Dewdrop = AceLibrary("Dewdrop-2.0") + +-- module declaration +local moduleID = "ReActionFu" +local module = ReAction:NewModule( moduleID, + "FuBarPlugin-2.0" +) + +module.hasIcon = "Interface\\Icons\\INV_Qiraj_JewelEncased" +module.hasNoColor = true +module.clickableTooltip = false +module.cannotDetachTooltip = true +module.hideMenuTitle = true +module.independentProfile = true +module.defaultPosition = "LEFT" +module.defaultMinimapPosition = 240 -- degrees + +function module:OnInitialize() + self.db = ReAction:AcquireDBNamespace(moduleID) + ReAction:RegisterDefaults(moduleID,"profile", + { + requireFuBar = false + } + ) + + if self.db.profile.requireFuBar == true then + self:Hide() + end +end + +function module:OnEnable() + +end + +function module:OnDisable() + +end + +function module:OnProfileEnable() + if self.db.profile.requireFuBar == true then + self:Hide() + else + self:Show() + end +end + +function module:OnProfileDisable() + +end + +function module:OnTooltipUpdate() + +end + +function module:OnClick(button) + +end + +function module:OnMenuRequest( level, value, inTooltip, valueN_1, valueN_2, valueN_3, valueN_4 ) + if not self.aceOptionsTable then + local opts = { + type = "group", + handler = ReAction, + args = { + } + } + Dewdrop:InjectAceOptionsTable(ReAction,opts) + self.aceOptionsTable = opts + end + for _, m in ReAction:IterateModulesWithMethod("GetGlobalOptions") do + for k,v in pairs(m:GetGlobalOptions()) do + self.aceOptionsTable.args[k] = v + end + end + Dewdrop:FeedAceOptionsTable(self.aceOptionsTable) +end +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/FuBar_ReActionFu/FuBar_ReActionFu.toc Fri Mar 07 22:17:51 2008 +0000 @@ -0,0 +1,15 @@ +## Interface: 20300 +## Title: FuBar - |cffffffffReAction|r|cff00ff00Fu|r +## Notes: FuBar plugin for ReAction +## DefaultState: enabled +## LoadOnDemand: 1 +## Author: Flick +## Version: 1.0 +## X-Category: Action Bars +## X-Embeds: FuBarPlugin-2.0, Tablet-2.0 +## Dependencies: ReAction + +lib\FuBarPlugin-2.0\FuBarPlugin-2.0.lua +lib\Tablet-2.0\Tablet-2.0.lua + +FuBar_ReActionFu.lua