View Single Post
04/21/14, 08:44 AM   #1
LilBudyWizer
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 32
[outdated] Expanding Standard Dialogs

We need a set of libraries for modifying the standard interface. Examples would be adding sections to tooltips and columns to the inventory list. It would be nice if Zenimax did it as part of the stand API, but I wouldn't count on that happening anytime soon. A base would be 12 libraries, one for each of the tabs across the top. General functions would be adding rows and columns. A general rule would be nothing goes in or overtop of a standard element. The library would be the only thing adding to existing elements and that's just one entry for it.

An example is the inventory panel. You have filter tabs across the top so the library adds an additional tab for custom filters. Selecting that inserts a row of tabs below the main tabs. Those tabs are per addon. It can scroll left and right like the item selection in crafting so you can lots of different custom filters. A custom filter can pop up an additional panel to give sub options for that custom filter. The addon also allows adding right click menus to the standard tabs or custom subtabs. There's a submenu for each addon attached to that specific tab.

An alternative to an addon popping a subpanel when it's tab is selected is a custom inventory list, i.e. gridview, treeview or whatever the addon developer dreams up. One tab is the library itself. There's where you set options for the library. With the tab added to the standard tab right clicking lets you enable/disable specific inventory addons. Not the actual addon, just all modification of the inventory. Like you might disable sous-chef when not relevant to what you're doing to cut down on clutter, but turn it on when doing something relevant. When enabled, perhaps, the right click menu for materials has a submenu for sous-chef letting you select the level of cooking material or on consumables the level/quality of the recipe.

Each of the stand libraries should add icons to the bars for config options for itself. That dialog supports up and down navigation. What I mean by that is level. Down is config options for individual addons using that library. Up is the library this library is a component of. Presumably these 12, eventually, would be collected into a single library. These aren't all, so there's a higher level library that picks up others. Libraries might be forked. There might be a tooltip library that handles all tooltips and inventory handles inventory specific tooltips. If you want to hook all tooltips to display the time or something you use the tooltip library, if you just want to hook tooltips for inventory items you use the inventory library.

Obviously those 12 aren't all. Tooltips would be an additional. Crafting, looting, stores, ect would be potential others. The system menu which is sort of covered by the addon menu library though, really, that's a sub-library. An example of an addition for the setting menu is a custom graphics setting dialog. The ability to load and save graphics configurations and collect statistics by saved configuration. So a start would be figure out the structure. Like there's GuiRoot there should be a LibRoot.

GuiRoot has a lot attached to it. The server is down, but when it comes up I'll try looking around and seeing what's the base windows. Obviously there's unit frames, the retile, compass, casting bar, etc. Certainly one general function would be attaching to the bottom of standard frames. An example being attaching achievement tracker to the bottom of the quest tracker. Particularly with these libraries since they, presumably, will change the size of many standard dialogs. So an overarching library is handling configuration of your user interface.

So that's the general idea. Yes, it's ambitious, but it's early in the game. Already though we're getting conflicts between addons. People are having to code to specifically check for specific addons. Certainly there's an appeal to locking people into addons with only these work with that, but that's quickly going to become a nightmare as you start coding checks to play nicely with a dozen other addons. So we need a better solution than doing that. Programmer automate thyself. A good start is just those currently doing that moving it out to a common library.