DataDump

DataDump

451 Downloads

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:

Variable Display
    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:
        return varName

    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
    reloaded.

    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
    active.

    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.

Events Display
    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.

General Notes:
    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
    is auto-refresh.

    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.