LibAboutPanel-2.0
LibAboutPanel-2.0
An embedded library that scans your AddOn's ToC to display that information either as a seperate About button in the Interface Options panel, or as part of AceConfig-3.0 options table.
Getting LAP into your own addon
Step one is to add LibAboutPanel-2.0 to your addon's .pkgmeta file. Assuming you have a folder named Libs into which you are adding all your libs, the .pkgmeta section would look like one of the following:
Old method
The old method still works to get the full fat version of LibAboutPanel-2.0, which includes LibStub, CallbackHandler-1.0, and AceConfig-3.0. Use this method if you are not certain what you need for your addon.
externals:
Libs/LibAboutPanel-2.0: https://github.com/Myrroddin/libaboutpanel-2.0
New method
If all you need is LibAboutPanel-2.0 because you either do not need AceConfig-3.0 or you have added LibStub, CallbackHandler-1.0, and AceConfig-3.0 as their own folders, use this second method to get the slim version of LibAboutPanel-2.0, which includes the main Lua file and the XML loader, with nothing else.
externals:
Libs/LibAboutPanel-2.0:
url: https://github.com/Myrroddin/libaboutpanel-2.0/LibAboutPanel-2.0
curse-slug: libaboutpanel-2-0
Step two is in your ToC file, with either of the above methods, load the .xml file that loads LibAboutPanel-2.0:
Libs\LibAboutPanel-2.0\lib.xml
Step three is embedding LibAboutPanel-2.0 into your addon to use its APIs. Embedding LAP is optional yet recommended.
-- using Ace3
local MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "LibAboutPanel-2.0")
-- not using Ace3
local folderName, MyAddon = ...
LibStub("LibAboutPanel-2.0"):Embed(MyAddon)
-- now you can use the APIs
function MyAddon:DoSomething()
-- self refers to MyAddon
self:CreateAboutPanel() -- not strictly accurate, see docs
end
-- not embedding LAP
local folderName, MyAddon = ...
local LAP = LibStub("LibAboutPanel-2.0")
function MyAddon:DoSomething()
LAP:CreateAboutPanel() -- not strictly accurate, see docs
end
Please be aware that capitalization in the .pkgmeta and .toc files matters, and the different slashes ("/" in .pkgmeta and "\" in .toc files). These conventions are standards set by others. Like any other WoW addon or library, LibAboutPanel-2.0 must follow the standards.
Retail, Cataclysm, or Classic
LibAboutPanel-2.0 should work in all versions of the game.
Not a drop-in replacement
LibAboutPanel and LibAboutPanel-2.0 do more or less the same thing, but LAP2 will not replace Ackis' version just because you have it installed. As an author, you can make the choice which you prefer.
API
You can find the API and example here.
Features that are new or different than Ackis' LibAboutPanel
- More localization. LAP2 uses global strings to translate factions, locale names, etc. It also has more translatable strings than the original.
- Its API is embedded, so MyAddOn:API() is the norm.
- LAP2 has an API that supports AceConfig-3.0 options tables, thus the About panel can be displayed as a tab, part of a tree, etc.
List of supported ToC fields
- Author
- Notes in all languages the author has translated
- Title in all languages the author has translated
- Version
@project-version@
is replaced with a translation ofDeveloper Build
- X-Date or X-ReleaseDate
- X-Revision including
wowi:revision
- X-Author-Guild
- X-Author-Faction (Horde or Alliance) translated
- X-Author-Server
- X-Website
- X-Email
- X-Localizations (enUS, deDE, etc) which are translated themselves. Note the z not s
- X-Credits
- X-Category
- X-License
All Rights Reserved
is translated - X-Copyright
Copyright
and(c)
are translated
Localization
There are several phrases and words that need translating. Please help and contribute.
Bugs and suggestions
There is a ticket tracker for suggesting fixes or improvements.
Hello!
One of my addon users reported this error. I've tried looking to see if this code was renamed or something but haven't found anything yet. Hoping that this error message helps!
Message: ...omAudio/Libs/LibAboutPanel-2.0/LibAboutPanel-2.0.lua:495: attempt to call global 'InterfaceOptions_AddCategory' (a nil value)
Time: Fri Jul 26 22:39:22 2024
Count: 1
Stack: ...omAudio/Libs/LibAboutPanel-2.0/LibAboutPanel-2.0.lua:495: attempt to call global 'InterfaceOptions_AddCategory' (a nil value)
[string "@Interface/AddOns/ElvUI_Libraries/Core/Ace3/AceAddon-3.0/AceAddon-3.0.lua"]:494: in function `InitializeAddon'
[string "@Interface/AddOns/ElvUI_Libraries/Core/Ace3/AceAddon-3.0/AceAddon-3.0.lua"]:619: in function <...UI_Libraries/Core/Ace3/AceAddon-3.0/AceAddon-3.0.lua:611>
Locals: self = <table> {
initializequeue = <table> {
}
statuses = <table> {
}
embeds = <table> {
}
frame = AceAddon30Frame {
}
addons = <table> {
}
enablequeue = <table> {
}
}
addon = <table> {
modules = <table> {
}
defaultModuleLibraries = <table> {
}
name = "RareScanner"
orderedModules = <table> {
}
db = <table> {
}
baseName = "RareScanner"
enabledState = true
defaultModuleState = true
}
In reply to SweetsourGamer: Thank you for the bug report. I didn't see it because my notifications are for GitHub. I created an issue report and will fix the deprecated API. https://github.com/Myrroddin/libaboutpanel-2.0/issues/1
In reply to Sygon_Paul: Perfect, thank you! I'm the author of the addon and will push the latest version out! I'll also be sure to use your github for any bugs in the future. :)
In reply to SweetsourGamer: Sorry for the late reply. Have you updated your pkgmeta to use the new method to get LibAboutPanel-2.0's repository? The old method works, but adds extra files to your addon which aren't needed. See the main description for details.
In reply to SweetsourGamer: Please tell the author of "...omAudio" to push an updated zip. I cannot read the full name of the addon. The fix is in LibAboutPanel-2.0 version 1.0.71.
Not sure how you managed this; but within the addon; inside "LibAboutPanel-2.0" > "LibStub" -- there are two "LibStub.lua" files.
Which one is needed?
In reply to JDM12983: I'll check on that. There should only be one. EDIT: I looked at a couple of addons I wrote, and see one copy of LibStub. Which addon are looking at?
Is this ready to be embedded in other addon?
In reply to arithmandar:
Better late than never. I put it in beta October 8, 2019