_Dev combines many small addon development tools into one addon, similar to Iriel's DevTools addon. It includes a text-based stats display for framerate, memory, and latency; allows frames to be highlighted and tracked even when hidden or off-screen; can print data structures neatly to chat frames; includes a mouse-over frame identifier that can also outline and print details for found frames; and features a few other useful tools.
Details
- Adds the slash command “/togglemod <Name>” to toggle on and off the addon called <Name>. May reload the UI if necessary.
- Adds a key binding to open the shortest available /script-like slash command.
- Adds a key binding for reloading the user interface.
- Unescapes pipe characters (“|”) from /script commands.
- Implements table.count( <Table> ) function to count the number of elements in both arrays and hash tables.
- Implements math.round( <Float> [, <Precision> ] ) function to round a given <Float> number to one with <Precision> decimal places.
- Shrinks the console font size to 12pt.
- Disables the console key unless <CTRL> is held, allowing tildes (“~”) and grave accents (“`”) in the console and other edit boxes.
Dump
Outputs a detailed view of a data structure to the default chat frame in a format similar to Lua.
- Adds the slash command “/dump <Expression>” to dump the result of executing any RValue <Expression>.
- Implements dump( <LValue>, … ) to print … with the title <LValue>. To demonstrate the use of <LValue>, the call dump( "ChatFrame1", ChatFrame1 ) would produce the results found in the second example screenshot to the right.
- Optionally escapes all pipe characters and non-printable bytes found in printed strings.
- No infinite recursion: If a table is encountered more than once, the second instance will display as a reference to the first.
- Recognizes UIObject tables and prints their names and widget types accordingly.
- Optional protective limits for execution time, table length, string length, and table nest depth.
- Optimized for fast execution speed.
- Can optionally avoid recursing into the global environment _G variable.
Outline
Allows frames to be outlined to track their positions and boundaries, even when hidden or off-screen.
- Adds the slash command “/outline [ <Frame> ]” to toggle <Frame>'s outline on and off, or remove all outlines if no frame is given.
- Implements outline( <Region> [, <DefaultName> ] ) to toggle <Frame>'s outline. <DefaultName> specifies the name to print in case the region has none.
- Multiple colors for multiple outlines helps tell frames apart.
- Frames cannot be outlined more than once at a time.
- Borders are always visible, no matter where the target frame is or what it's under.
- For frames that go off-screen, a tracking arrow appears at the screen edge to point at it.
Stats
Adds a small transparent string of stats to the top left of the WorldFrame. This display includes framerate, latency, and total interface memory consumption.
Events
Adds an
“AddOn Messages” sub-menu to the chat frame tab dropdown to enable the display of escaped
CHAT_MSG_ADDON events. These addon messages look similar in format and color to their corresponding chat channel messages.
Frames
A spiritual successor to
Itchy's FrameFinder addon from long ago, Frames highlights the frame focused under your mouse. This incarnation, however, is designed to not cripple gameplay while active. In addition to identifying mouse focus frames, this module also implements
Dumping and
Outlining said frames with mouse clicks.
- Adds a key binding to toggle frame highlighting.
- Adds the slash command “/frames” to toggle frame highlighting.
- Hold <ALT> to enter interactive mode, where the highlight cannot be moved, but can be explored using the mouse buttons.
- Left click to Outline the frame.
- Right click to print a summary of the frame's name along with its parent's name.
- Middle click to Dump the frame's table.
Options
All of _Dev's and its modules' options can be configured through the _Dev pane in the Interface Options menu. Use the slash command “
/dev” to open the options pane directly.