An alternative to using the AceGUI widget BlizOptionsGroup to create entries in the Blizzard options panel. All entries created use the same frame objects allowing for minimal memory use. An entry can be created and an options table assigned to it later allowing for LOD options. The library monitors for AceConfigDialog-3.0, AceConfigRegistry-3.0, and AceGUI-3.0 to be loaded before using them to further facilitate LOD behavior.
Example usage:
Code:
-- In main module (myAddon):
myAddon.config = LibStub('LibOptionsAssist-1.0'):AddEntry("myAddon", nil, "myAddon_Config")
myAddon.config:SetInfo(format("Version: %s", GetAddOnMetadata("myAddon", 'Version')))
-- In LOD module (myAddon_Config):
LibStub('AceConfigRegistry-3.0'):RegisterOptionsTable("myAddon", myAddon.options)
myAddon.config:AssignOptions("myAddon")
API
entry = lib:AddEntry(name [, parent [, addon]])
Add an entry to Blizzard's interface options panel under the AddOns tab.
Arguments:
name - (string) The text to appear in the Blizzard options panel under the AddOns tab.
parent - (string) If this is to be a child entry then this should be the name that was used to create the parent entry.
addon - (string) The name of an addon to load, if it isn't already, when the entry is first selected.
Returns:
entry - (table) A table with the required fields to work with the Blizzard options panel (see Entries below).
index = lib:HasEntry(name [, parent])
Determines if an entry is in Blizzard's interface options panel under the AddOns tab.
Arguments:
name - (string) The name of the entry to check for.
parent - (string) The name of the parent entry if a child is being looked for.
Returns:
index - (number) Index of the entry or nil if it doesn't exist.
index, entry = lib:IterateEntries([parent])
Acts as a special case ipairs for Blizzard's INTERFACEOPTIONS_ADDONCATEGORIES table.
Arguments:
parent - (string) If a string is provided then all entries returned will be children of that parent, otherwise only entries with no parent are returned.
Returns:
index - (number) Index of the entry.
entry - (table) The table for the entry.
loaded, reason = lib:LoadModule(name)
Loads an addon even if it is disabled.
Arguments:
name - (string) The addon's name as it appears in the Interface\AddOns folder.
Returns:
loaded - (boolean) Whether or not the addon is loaded.
reason - (string) If the addon is not loaded then this will be the reason why.
Entries
Any entry created by lib:AddEntry() is a normal table that emulates certain frame methods to allow it to work in the Blizzard options panel. A metatable provides the following frame-like methods: ClearAllPoints, GetScript, HasScript, Hide, IsShown, IsVisible, SetAllPoints, SetParent, SetPoint, SetScript, and Show. The only scripts supported by an entry are OnHide and OnShow. The metatable also provides a dummy function for the fields: cancel, defaults, okay, and refresh.
The entry may also be treated like a function, with entry() being the same as InterfaceOptionsFrame_OpenToCategory(entry). Entries also have the following additional methods:
entry:AssignOptions(name [, ...])
Set the AceConfigRegistry-3.0 table to be used to display options when the entry is selected.
Arguments:
name - (string) A name as from an AceConfigRegistry-3.0 RegisterOptionsTable call.
... - Zero or more table keys that lead to a sub-table.
info = entry:GetInfo()
Get the value currently set to be displayed for the entry's information text.
Returns:
info - (string) The current value of the information text.
title = entry:GetTitle()
Get the value currently set to be displayed for the entry's title text.
Returns:
title - (string) The current value of the title text.
entry:Refresh()
Force a display update of the assigned options.
entry:SetInfo(info)
Set the information text to be displayed. This text is right-aligned and opposite the title. The text is smaller than normal, slightly faded, and is only shown if the title is shown.
Arguments:
info - (string) The text to be displayed.
entry:SetTitle(title)
Set the title text to be displayed. This text is left-aligned in the upper-left corner and is larger than normal. When an entry is first created with lib:AddEntry() the title is automatically set to the name given.
Arguments:
title - (string) The text to be displayed.
Change Log - LibOptionsAssist-1.0
Version 1.0.1 (07/05/2009)
- Added MMOUI Minion support to TOC file (X-WoWI-ID)
- Fixed a display bug when hiding an entry
Version 1.0 (06/25/2009)
- Initial release
Optional Files - LibOptionsAssist-1.0
Sorry, there are currently no optional files available.
Comments - LibOptionsAssist-1.0
There have been no comments posted to this file. Be the first to add one.