You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.3 KiB
Lua
92 lines
3.3 KiB
Lua
--[[---------------------------------------------------------------------------
|
|
|
|
Grichelde - Text Replacer
|
|
|
|
Copyright 2020 Teilzeit-Jedi <tj@teilzeit-jedi.de>
|
|
|
|
This addon is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with the addon. If not, see <http://www.gnu.org/licenses/gpl-3.0.txt>.
|
|
|
|
-----------------------------------------------------------------------------]]
|
|
|
|
-- read namespace from global env
|
|
local AddonName, AddonTable = ...
|
|
local _G = _G
|
|
|
|
-- initialize addon
|
|
local Grichelde = LibStub("AceAddon-3.0"):NewAddon(AddonTable, AddonName, "AceConsole-3.0", "AceEvent-3.0", "AceHook-3.0")
|
|
Grichelde.version = GetAddOnMetadata(AddonName, "Version")
|
|
Grichelde.build = GetAddOnMetadata(AddonName, "X-Build") or "Experimental"
|
|
Grichelde.classic = _G.WOW_PROJECT_ID == _G.WOW_PROJECT_CLASSIC
|
|
Grichelde.logLevel = 0 -- cannot reference Grichelde.LOG_LEVELs here as they are loaded afterwards
|
|
|
|
-- publish to global env
|
|
_G[AddonName] = Grichelde
|
|
|
|
-- Ace3 callbacks
|
|
function Grichelde:OnInitialize()
|
|
self.L = LibStub("AceLocale-3.0"):GetLocale(self.name, true)
|
|
|
|
-- Build Interface Options window
|
|
self.db = self:LoadDatabase()
|
|
self:UpgradeDatabase()
|
|
end
|
|
|
|
function Grichelde:OnEnable()
|
|
-- Hook in before message is sent to replace all character occurrences where replacements have been defined in the options
|
|
self:RawHook("SendChatMessage", true)
|
|
|
|
self.options, self.dialog = self:SetupOptions()
|
|
self.ldb, self.icon = self:MinimapButton()
|
|
|
|
self:RefreshProfiles("OnEnable")
|
|
self:SetupSlashCommands()
|
|
|
|
-- tell the world we are listening
|
|
if (self.db.profile.enabled == true) then
|
|
local namePlusVersion = self:Format(self.L.AddonNamePlusVersion, self.L.AddonName, self.version)
|
|
self.F.print(self:Format(self.L.AddonLoaded, self.COLOR_CODES.PREFIX .. namePlusVersion .. self.COLOR_CODES.CLOSE))
|
|
end
|
|
end
|
|
|
|
function Grichelde:OnDisable()
|
|
self:Unhook("SendChatMessage")
|
|
self:CloseOptions()
|
|
self:HideMinimapButton()
|
|
self:UnregisterChatCommand("grichelde")
|
|
self:UnregisterChatCommand("gri")
|
|
end
|
|
|
|
--- Register slash commands 'gri' and 'grichelde'
|
|
function Grichelde:SetupSlashCommands()
|
|
self:RegisterChatCommand("grichelde", "HandleSlashCommand")
|
|
self:RegisterChatCommand("gri", "HandleSlashCommand")
|
|
end
|
|
|
|
function Grichelde:HandleSlashCommand(input, ...)
|
|
-- Show the GUI if no input is supplied, otherwise handle the chat input.
|
|
if (self.F.nilOrEmpty(input)) then
|
|
self:ToggleOptions()
|
|
else
|
|
-- handle slash ourselves
|
|
self:DebugPrint("Handle slash command: " .. input)
|
|
if input == "mappings" then
|
|
self:ToogleMappings()
|
|
elseif input == "options" then
|
|
self:ToggleOptions()
|
|
elseif input == "profile" then
|
|
self:PrintProfile()
|
|
elseif input == "on" or input == "enable" then
|
|
self:Activate()
|
|
elseif input == "off" or input == "disable" then
|
|
self:Deactivate()
|
|
else
|
|
self:SendChatMessageOverride(input, ...)
|
|
end
|
|
end
|
|
end |