MAXScript Tools and Interaction with 3ds Max > Creating MAXScript Tools > Scripted Plug-ins >

# Scripted TrackViewUtility Plug-ins

Scripted TrackViewUtility plug-ins are declared by specifying the <superclass> as TrackViewUtility . They can be used to implement new Utilities to manipulate tracks and keys in TrackView. Their UI can be registered as child of the respective TrackView.

EXAMPLE:
    plugin TrackViewUtility KeyValueUtility
    name:"Current Value Editor"
    category:"Scripted TV Utilities"
    classID:#(0x57088e0e, 0x50b6e750)
    (
    -- Body of Plug-in here...
    )

Event Handlers:

The following Event Handlers can be implemented by a Scripted TrackViewUtility plug-in:

    on trackSelectionChanged do

This handler will be called whenever the track selection has changed.

    on nodeSelectionChanged do

This handler will be called whenever the node selection has changed.

    on keySelectionChanged do

This handler will be called whenever the keys selection has changed.

    on timeSelectionChanged do

This handler will be called whenever the time selection has changed.

    on MajorModeChanged do

This handler will be called whenever the Track View mode has changed.

    on TrackListChanged do

This handler will be called whenever the track list has changed.

    on TrackViewClosed do

This handler will be called whenever the Track View has been closed. It can be used to do clean-up work before closing the plug-in.

    on Init <value> do

This handler will be called whenever the TrackViewUtility plug-in has been initialized. It can be used to do initialization work before opening the plug-in. The value returned contains the parent Track View the TrackViewUtility plug-in has been called from. You can use the value to get the handle of the TrackView and register the dialog of the utility as child of the Track View.

EXAMPLE:
    on Init val do
    (
    --Create a dialog from the Rollout, make it child of the Track View
    createDialog valueRollout parent:(val.ui.hwnd)
    --Register the dialog as Dialog Bar, make it child of the Track View
    cui.registerDialogBar valueRollout parent:val.ui.hwnd
    )

    on filterAnim <anim>subAnim <anim>client <index>index do

This handler will be called for every object to be displayed in the TrackView. It has 3 arguments - the subAnim object to be displayed, its client (parent object) and the index inside the client.

The return value of this handler can be

#skip - the TrackView track should be filtered out and not displayed

#add - the TrackView track should be displayed

NoteIf the return value is neither #skip nor #add, a value of #add will be assumed and the track will be displayed.

#### See Also

- Updating Scripted Plug-ins

- Scripted Plug-in Methods

- Scripted Plug-in Clauses

- Scripted Plug-ins