The purpose of DataDump is to allow rapid inspection of UI elements and values, as well as
editing values of UI objects.
The Variable Inspector may be set to constantly refresh the data so that current values
are always displayed. The UI Object Inspector allows various values of the UI objects to
be edited. This latter feature allows a dev to adjust the UI as desired, without having
to go through the process of adjusting values in source files, reloading the UI, inspecting
the results, and repeating until the UI objects are set up as desired.
The primary target audience of Data Dump is Add On and UI / Interface developers. While
one of my goals was to make Data Dump easy to use, it does expect at least a small amount
of programming experience to use it. If you are interested in developing Add Ons or making
UI / Interface enhancements welcome to the club! There are plenty of resource on the Web
to get you started. Another Add On I would strongly recommend is WoWLua. It will allow
you to test code directly and easily while running WoW.
Features of Data Dump:
Displays info on a variable. You may enter any variable into the input field
as long as the variable would resolve if if the following code was executed:
Tables and sub-tables may be expanded or collapsed using the plus/minus buttons. The
three primary columns are Key, Type, and Value.
The key is displayed in the Key Button.
Left clicking the key buttons will drill down, and place bread crumbs in the left
margin. Clicking an up arrow will return the display to a higher bread crumb.
Right clicking the key button will cause a new variable display to be created. If the
value in the input field could not be fully displayed textually, then the input field
will be disabled. An example of an impossible to resolve input field would be if one
of the keys in the variable's resolution path was a function or table.
The value's type is displayed in the Type Button. If the type is a UI object, then
right clicking the button will open a new UI Inspector which displays the UI element.
The value is displayed in the Value Button. If the value is a UI object, and it has a
resolvable name, that name will be displayed in the Value Button.
Left clicking the Value Button will display the value in a copy box. The value cannot
be edited, but it may be copied. Pressing escape of clicking the red box will dismiss
the copy box.
Left clicking the Refresh Button cause the values to be refreshed. Right clicking
the Refresh Button will display the refresh dialog, wherein a refresh rate may be specified.
The display will continue to refresh until it is hidden, deactivated, or the UI is
Warning1: using a Variable Display to get info on _G will cause over 50k lines of data
to be generated.
Warning2: tables in _G may not liked to be touched by add ons, and may become tainted.
Warning3: getting _G will use a lot of add on memory
Warning4: getting _G will use A LOT of add on memory
UI Object Display
Displays info about a WoW UI Object Element.
The Region Tab display positional info about the UI Element. Edit Boxs may be updated
and the actual UI Element will display any changes when enter is pressed. Note: you may
need to refresh the display if an edit would change one of the read only fields. Ex:
changing the value in Scale will have an impact on Effective Scale, but you would need
to click Refresh to see this impact.
The Coordinates Menu allows the choices of showing the Element's coordinates, or its
bounds values. The bounds values are the maximum sizes needed to display the element
and all of its child frames / regions.
The points editor may be used to make changes to a specific point. Clicking an existing
point will display the point editor. Changes to the point will take place when Set
or Delete are clicked. The point editor may be closed with no effects by clicking
Cancel or the original point line.
New points may be added by clicking the + point line.
Clicking Resizable or Clamped will open another editor displaying multiple fields.
Clicking Get Parent will open a new UI Inspector containing info on the parent frame.
Clicking Get Functions will return a Variable Display that lists all of the functions
attached to the element. Functions that are on the meta table are marked as "Meta Function".
Functions that are directly attached to the table are marked as "Attached Function".
Functions that are directly attached to the table and override a meta function are
marked as "Overridden Function".
Clicking Child Frames will return a Variable Display that lists all of the child frames
of the current element.
Clicking Child Regions will return a Variable Display that lists all of the region objects
that are children of the current element.
If certain features are not appropriate for an element, the specific feature is disabled.
The Scripts tab shows a few values regarding secure frames.
Clicking Get Scripts will return a variable Display listing all possible scripts that
may be attached to the element, as well as the script signature and which scripts are
The Backdrop Tab displays info on the backdrop of the element. It also allows the
editing of the various values. Note that new values are only applied once the
appropriate Set button is clicked.
When Watch All Events is checked, the Events Display will record all events that
transpire in chronological order. The Clear button will remove all recorded events.
The Deactivate All button will stop any of the currently recorded events from being
displayed, while the Activate All button will allow all of them to be displayed. The
default is that all events are displayed.
By unchecking Show Chronologically, each event with a unique name will be collapsed
down to one entry. The entries will be sorted alphabetically. The purpose of this
feature is to easily allow all events with a given name to be hidden, and thus allow
easier inspection of the actual events of interest. Clicking the red X on the left of
each line will disable that entry.
Clicking on an event will display a detail pane that shows the milliseconds of the
event, as well as arguments of the event.
Data Dump is designed to keep the displays ready to use even between reloads. If a
display has active text in its input field, and the Red X is click, the display is
merely hidden. Using the appropriate show command will retrieve the display.
The ability to retrieve these displays works across UI reloads. This way, if several
displays are being used, and a UI reload is required, the developer does not have to
go through all the effort to recreate the displays.
Furthermore, if some displays are visible, and others are hidden, the ones that are
visible will still be shown after the UI reload is complete. The only thing turned off
To actually delete a display, click the delete button. This hides the display, removes
the value from the input field, and readies for it to be recycled in the event another
display of the same type is needed.
Note: some displays will be created with the input field disabled. These are not saved,
and will be fully removed after a UI reload. These type of displays are typically
generated by other displays, and are not saved because either there is no way to correctly
resolve the variable via the input field, or that the display was generated from clicking
buttons like Get Children.
Performance Note: if a display is hidden during UI reload, the new display will not be
allocated in memory until it is specifically requested to be shown.