AddonManager

AddonManager helps you keep track of your addons and provides easy ways to access them.
It has a main window that lists all registered addons and their details, as well as a "Mini-Addon bar", where small addon icons can go.
The more addon developers that use it (and it's really easy to use!), the more addons will show up in the list. Give it time =)
==For users==
* Type /addons to see all your registered addons
* Alternatively, click on the AddonManager button in the "Mini Addons" bar
===Installation===
* Place both the AddonManager folder and Sol.lua in your Runes of Magic/Interface/Addons directory.
==For addon developers==
===Registering your Addon===
* As of v1.04, you can call AddonManager.RegisterAddonTable, which takes the same parameters as RegisterAddon, but in table form, to make things simpler.
* Add a call to AddonManager.RegisterAddon in your VARIABLES_LOADED event
* Example1. At minimum, you can do this:
 if AddonManager then
 AddonManager.RegisterAddon("MyAddonName", "My addon makes you awesome")
 end
* Example 2. Using a custom icon, a config frame, and a mini-addon button:
if AddonManager then
 local addon = {
 name = "MyAddonName",
 version = "v0.01",
 author = "Me",
 description = "My addon makes you awesome",
 icon = "Interface/Addons/MyAddon/myAddon32.tga",
 category = "Other",
 configFrame = MyAddonConfigFrame, 
 slashCommand = "/myaddon",
 miniButton = MyAddonMiniButton,
 disableScript = MyAddon_Disable,
 enableScript = MyAddon_Enable,
 }
 if AddonManager.RegisterAddonTable then
 AddonManager.RegisterAddonTable(addon)
 else
 AddonManager.RegisterAddon(addon.name, addon.description, addon.icon, addon.category, 
 addon.configFrame, addon.slashCommand, addon.miniButton, addon.version, addon.author)
 end
end
* Of course, replace "my addon" with your addon 
* I recommend not printing out that your addon has loaded if you use AddonManager, since the user will be able to see it in the AddonManager list.
* In the first example, your addon would be considered a "Passive" addon - its text would be colored green (like passive skills) and you can't click on it.
===AddonManager.RegisterAddon===
AddonManager.RegisterAddon = function(name, description, icon, category, configFrame, 
 slashCommands, miniButton, onClickScript, version, author, disableScript, enableScript)
Registers an addon with AddonManager. Adds the addon to the addons list and potentially also to the mini-addons-frame.
Parameters:
+ name - Your addon's name. Default is "[No Name]".
+ description - A brief (one or two sentence) description of your addon. Something that fits in a tooltip. 
+ icon - Path to a 32x32 image icon (e.g., "Interface/Addons/AddonManager/Textures/addonManagerIcon32.tga"). 
If no icon is specified, will use default "recipe" icon.
+ category Will be used for filtering the addons list. Default is "Other".
One of Development, Economy, Information, Interface, Inventory, Leveling, Map, PvP, Social, or Other. 
+ configFrame - If your addon has a config frame or other frame you want to show when your addon is clicked, use this.
+ slashCommands - Specify any slash commands you've registered so that the user doesn't have to remember them.
+ miniButton - If you want to display a button on the "Mini-Addons" bar, specify it here. 
+ onClickScript - If you need to special handling when your addon's button is clicked, you can specify a script for it. 
If this parameter is specified, configFrame is ignored.
+ version - what version this addon's in
+ author - who made this addon
+ disableScript - A script that can be used to disable your addon. Adds the disable option in the AddonManager list if 
both disableScript and enableScript are specified
+ enableScript - A script that can be used to re-enable your addon
====The Mini-Addon Bar====
* To use a mini-button, you need to first have one created in your xml
* Example: 
 <Button name="MyAddonMiniButton" hidden="true" inherits="UIPanelButtonTemplate" parent="AddonManagerMiniFrame">
		<Size>
			<AbsDimension y="24" x="24"/>
		</Size>
		<Scripts>
			<OnClick>
				AddonManager.MiniButton_OnClick(this)
			</OnClick>
			<OnEnter>
				AddonManager.MiniButton_OnEnter(this)
			</OnEnter>
			<OnLeave>
				AddonManager.MiniButton_OnLeave(this)
			</OnLeave>
		</Scripts>
	 <NormalTexture file="Interface\AddOns\MyAddon\myAddonIconNormal.tga"/>
	 <PushedTexture file="Interface\AddOns\MyAddon\myAddonIconDown.tga"/>
	</Button>
* The only things you should change here are the Button's name and the two textures.
* Note that you can't have a MiniButton if your addon is passive (because what should happen when the user clicks on it?). A passive addon is one that has no config frame and no custom onClickScript.
===List of Addon registration samples===
I went through my own Addons and registered them with AddonManager. Since I'm not those Addons' author, I didn't add icons or mini-addon bar buttons and I only used descriptions in the TOC file or on Curse.com. I did, however add these for my addons - Streamline, FunctionWatch, and FriendShare.
====Enhanced Combat Log====
if AddonManager then
 AddonManager.RegisterAddon("Enhanced Combat Log", "Makes the combat log nicer and cleaner :)")
end
====EventWatch====
if AddonManager then
 AddonManager.RegisterAddon("EventWatch", "Monitors events and helps identify event arguments", nil, "Development", nil, "/watch /unwatch /watches")
end
====HudBars====
HudBars requires a custom onClick handler as it needs to load the config frame's settings (should just use Sol!).
if AddonManager then
 AddonManager.RegisterAddon("HudBars", "Arc Styled Player and Target Frames", nil, "Interface", hb_ConfigFrame, "/hb", nil, hudbars_config)
end
====statusbars====
if AddonManager then
 local desc = "Provides information of the buffs on the player such as name and the duration "
 desc = desc .. "left on the buff as well as debuffs on the player. In a different window, "
 desc = desc .. "you can also see the buffs and debuffs of the target and their duration"
 AddonManager.RegisterAddon("statusbars", desc, nil, "Interface")
end
====ToggleMenu====
if AddonManager then
 AddonManager.RegisterAddon("ToggleMenu", "Creates a row of buttons for easy access to the main windows in the game", nil, "Interface")
end
====WoWMap====
if AddonManager then
 AddonManager.RegisterAddon("WoWMap", "Makes the map in RoM feel more like the map in WoW for easier handling", nil, "Map")
end