WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   AddOn Search/Requests (https://www.wowinterface.com/forums/forumdisplay.php?f=6)
-   -   How do I make an Addon change the behavior of another one? (https://www.wowinterface.com/forums/showthread.php?t=56352)

Krainz 07-14-18 11:31 AM

How do I make an Addon change the behavior of another one?
 
I want to make an addon that makes Details use a different font so I don't have to replace the font file every time the addon is updated

I know that Skinner was written to change how other addons look, so I know its kinda possible to do it

However, the only time I see specific fonts being mentioned is in these lines:

Lua Code:
  1. _detalhes.empty_function = function() end
  2.     _detalhes.empty_table = {}
  3.  
  4.     --> register textures and fonts for shared media
  5.         local SharedMedia = LibStub:GetLibrary ("LibSharedMedia-3.0")
  6.         --default bars
  7.         SharedMedia:Register ("statusbar", "Details D'ictum", [[Interface\AddOns\Details\images\bar4]])
  8.         SharedMedia:Register ("statusbar", "Details Vidro", [[Interface\AddOns\Details\images\bar4_vidro]])
  9.         SharedMedia:Register ("statusbar", "Details D'ictum (reverse)", [[Interface\AddOns\Details\images\bar4_reverse]])
  10.         --flat bars
  11.         SharedMedia:Register ("statusbar", "Details Serenity", [[Interface\AddOns\Details\images\bar_serenity]])
  12.         SharedMedia:Register ("statusbar", "BantoBar", [[Interface\AddOns\Details\images\BantoBar]])
  13.         SharedMedia:Register ("statusbar", "Skyline", [[Interface\AddOns\Details\images\bar_skyline]])
  14.         SharedMedia:Register ("statusbar", "WorldState Score", [[Interface\WorldStateFrame\WORLDSTATEFINALSCORE-HIGHLIGHT]])
  15.         SharedMedia:Register ("statusbar", "DGround", [[Interface\AddOns\Details\images\bar_background]])
  16.  
  17.         --window bg and bar border
  18.         SharedMedia:Register ("background", "Details Ground", [[Interface\AddOns\Details\images\background]])
  19.         SharedMedia:Register ("border", "Details BarBorder 1", [[Interface\AddOns\Details\images\border_1]])
  20.         SharedMedia:Register ("border", "Details BarBorder 2", [[Interface\AddOns\Details\images\border_2]])
  21.         SharedMedia:Register ("border", "Details BarBorder 3", [[Interface\AddOns\Details\images\border_3]])
  22.         SharedMedia:Register ("border", "1 Pixel", [[Interface\Buttons\WHITE8X8]])
  23.         --misc fonts
  24.         SharedMedia:Register ("font", "Oswald", [[Interface\Addons\Details\fonts\Oswald-Regular.otf]])
  25.         SharedMedia:Register ("font", "Nueva Std Cond", [[Interface\Addons\Details\fonts\NuevaStd-Cond.otf]])
  26.         SharedMedia:Register ("font", "Accidental Presidency", [[Interface\Addons\Details\fonts\Accidental Presidency.ttf]])
  27.         SharedMedia:Register ("font", "TrashHand", [[Interface\Addons\Details\fonts\TrashHand.TTF]])
  28.         SharedMedia:Register ("font", "Harry P", [[Interface\Addons\Details\fonts\HARRYP__.TTF]])
  29.         SharedMedia:Register ("font", "FORCED SQUARE", [[Interface\Addons\Details\fonts\FORCED SQUARE.ttf]])
  30.  
  31.         SharedMedia:Register ("sound", "d_gun1", [[Interface\Addons\Details\sounds\sound_gun2.ogg]])
  32.         SharedMedia:Register ("sound", "d_gun2", [[Interface\Addons\Details\sounds\sound_gun3.ogg]])
  33.         SharedMedia:Register ("sound", "d_jedi1", [[Interface\Addons\Details\sounds\sound_jedi1.ogg]])
  34.         SharedMedia:Register ("sound", "d_whip1", [[Interface\Addons\Details\sounds\sound_whip1.ogg]])

I just wanted an addon that added the following line:

SharedMedia:Register ("font", "Proza Regular", [[Interface\Addons\NewAddon\fonts\headlines.TTF]])

So I wouldn't have to manually make changes to the fonts every time Details is updated


Another problem I'm having is that the line I pasted just above isn't working. Proza Regular doesn't show up in the font list, and my usual solution is replacing one of the font files by it. Shitty, I know.

Seerah 07-14-18 11:39 AM

Download the SharedMedia addon and read the "INSTRUCTIONS for MyMedia" file inside.
https://www.wowace.com/projects/sharedmedia

Ammako 07-14-18 12:51 PM

Your line isn't working because your addon won't know what "SharedMedia" is unless you declare it. If you had lua errors enabled, it would give you an error telling you that you "attempted to use SharedMedia (a nil value)" or something like that (displaying lua errors may be disabled by default with no option given to enable them in the UI, thanks Blizzard.)

lua Code:
  1. local SharedMedia = LibStub:GetLibrary ("LibSharedMedia-3.0")
  2. SharedMedia:Register ("font", "Proza Regular", [[Interface\Addons\NewAddon\fonts\headlines.TTF]])

This should work as long as your addon is loaded after another addon which has LibStub and LibSharedMedia included, but if you want to be clever you could do it like this (as per SharedMedia_NoAsianFonts):

lua Code:
  1. local f = CreateFrame("Frame")
  2. f:RegisterEvent("ADDON_LOADED")
  3. f:SetScript("OnEvent", function()
  4.     local LSM = LibStub and LibStub("LibSharedMedia-3.0", true)
  5.     if not LSM then return end
  6.  
  7.     f:UnregisterAllEvents()
  8.     f:SetScript("OnEvent", nil)
  9.  
  10.     LSM:Register("font", "Proza Regular", [[Interface\Addons\NewAddon\fonts\headlines.TTF]])
  11. end)

This is more robust and should work regardless of the order in which addons are loaded. Or at least it works for me -shrugs-


All times are GMT -6. The time now is 07:34 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI