UI Extensions

Extension Manager

class qrenderdoc.ExtensionManager

A manager for listing available and active extensions, as well as the interface for extensions to register hooks and additional functionality.

ExtensionCallback(context, data)

Not a member function - the signature for any ExtensionCallback callbacks.

Callback for extensions to register entry points with, used in many situations depending on how it was registered.

Parameters
  • context (CaptureContext) – The current capture context.

  • data (dict) – Additional data for the call, as a dictionary with string keys. Context-dependent based on what generated the callback

ErrorDialog(text, title)
ErrorDialog(text)None

Display an error message dialog.

Parameters
  • text# (str) – The text of the dialog itself, required.

  • title# (str) – The dialog title, optional.

GetInstalledExtensions()

Retrieve a list of installed extensions.

Returns

The list of installed extensions.

Return type

List[ExtensionMetadata]

GetMiniQtHelper()

Returns a handle to the mini Qt helper. See MiniQtHelper.

Returns

The helper interface.

Return type

MiniQtHelper

IsExtensionLoaded(name)

Check if an installed extension is enabled.

Parameters

name# (str) – The qualified name of the extension, e.g. foo.bar

Returns

If the extension is enabled or not.

Return type

bool

LoadExtension(name)

Enable an extension by name. If the extension is already enabled, this will reload it.

Parameters

name# (str) – The qualified name of the extension, e.g. foo.bar

Returns

If the extension loaded successfully or not.

Return type

bool

MessageDialog(text, title)
MessageDialog(text)None

Display a simple informational message dialog.

Parameters
  • text# (str) – The text of the dialog itself, required.

  • title# (str) – The dialog title, optional.

OpenDirectoryName(caption, dir)
OpenDirectoryName(caption)None
OpenDirectoryName()None

Browse for a directory to open.

Parameters
  • caption# (str) – The dialog title, optional.

  • dir# (str) – The starting directory for browsing, optional.

Returns

The directory selected, or an empty string if nothing was selected.

Return type

str

OpenFileName(caption, dir, filter)
OpenFileName(caption, dir)None
OpenFileName(caption)None
OpenFileName()None

Browse for a filename to open.

Parameters
  • caption# (str) – The dialog title, optional.

  • dir# (str) – The starting directory for browsing, optional.

  • filter# (str) – The filter to apply for filenames, optional.

Returns

The filename selected, or an empty string if nothing was selected.

Return type

str

QuestionDialog(text, options, title)
QuestionDialog(text, options)None

Display an error message dialog.

Parameters
  • text# (str) – The text of the dialog itself, required.

  • options# (List[DialogButton]) – The buttons to display on the dialog.

  • title# (str) – The dialog title, optional.

Returns

The button that was clicked on.

Return type

DialogButton

RegisterContextMenu(base, submenus, callback)

Register a context menu item in a panel for an extension.

Parameters
  • base# (ContextMenu) – The panel to add the item to.

  • submenus# (List[str]) – A list of strings containing the submenus to add before the item. The last string will be the name of the menu item itself. Must contain at least one entry.

  • callback# (ExtensionCallback) – The function to callback when the menu item is selected.

RegisterPanelMenu(base, submenus, callback)

Register a menu item in a panel for an extension.

Parameters
  • base# (PanelMenu) – The panel to add the item to.

  • submenus# (List[str]) – A list of strings containing the submenus to add before the item. The last string will be the name of the menu item itself. Must contain at least one entry.

  • callback# (ExtensionCallback) – The function to callback when the menu item is selected.

RegisterWindowMenu(base, submenus, callback)

Register a new menu item in the main window’s menus for an extension.

Parameters
  • base# (WindowMenu) – The base menu to add the item to.

  • submenus# (List[str]) – A list of strings containing the submenus to add before the item. The last string will be the name of the menu item itself. Must contain at least one entry, or two entries if base is WindowMenu.NewMenu.

  • callback# (ExtensionCallback) – The function to callback when the menu item is selected.

SaveFileName(caption, dir, filter)
SaveFileName(caption, dir)None
SaveFileName(caption)None
SaveFileName()None

Browse for a filename to save to.

Parameters
  • caption# (str) – The dialog title, optional.

  • dir# (str) – The starting directory for browsing, optional.

  • filter# (str) – The filter to apply for filenames, optional.

Returns

The filename selected, or an empty string if nothing was selected.

Return type

str

Mini-Qt Helper

class qrenderdoc.MiniQtHelper

Python can have direct access to Qt via PySide2, but this is not always available in all RenderDoc builds. To aid extensions to manipulate widgets in a simple but portable fashion this helper exposes a small subset of Qt via RenderDoc’s python bindings.

The intention is not to allow fully flexible building of Qt panels, but to allow access to some basic UI building tools for simple data input and display which can be used on any RenderDoc build.

Note

The widget handles returned are PySide2 widgets where that is available, so this can be used to make a basic UI and optionally customise it further with PySide2 when possible.

WidgetCallback(context, widget, text)

Not a member function - the signature for any WidgetCallback callbacks.

Callback for widgets can be registered at creation time, the text field is optional and may be blank depending on the event, but the context and widget are always valid.

Parameters
  • context (CaptureContext) – The current capture context.

  • widget (QWidget) – The widget sending the callback.

  • text (str) – Additional data for the call, such as the current or selected text.

InvokeCallback(context, widget, text)

Not a member function - the signature for any InvokeCallback callbacks.

Callback for invoking onto the UI thread from another thread (in particular the replay thread). Takes no parameters as the callback is expected to store its own state.

AddGridWidget(parent, row, column, child, rowSpan, columnSpan)

Adds a child widget to a grid layout. If the parent is not a grid layout nothing will happen and the widget will not be added anywhere.

Parameters
  • parent# (QWidget) – The parent grid layout widget.

  • row# (int) – The row at which to add the child widget.

  • column# (int) – The column at which to add the child widget.

  • child# (QWidget) – The child widget to add.

  • rowSpan# (int) – How many rows should this child span over.

  • columnSpan# (int) – How many columns should this child span over.

AddWidget(parent, child)

Adds a child widget to the end of an ordered layout (either horizontal or vertical). If the parent is not an ordered layout nothing will happen and the widget will not be added anywhere.

Parameters
  • parent# (QWidget) – The parent grid layout widget.

  • child# (QWidget) – The child widget to add.

ClearContainedWidgets(parent)

Removes all child widgets from a parent and makes them invisible.

These widgets remain valid and can be re-added to another parent or the same parent.

Parameters

parent# (QWidget) – The parent widget to clear of children.

CloseCurrentDialog(success)

Close the active modal dialog. This does nothing if no dialog is being shown.

Note

Closing a dialog ‘sucessfully’ does nothing except modify the return value of CloseCurrentDialog(). It allows quick distinguishing between OK and Cancel actions without having to carry that information separately in a global or other state.

Parameters

success# (bool) – True if the dialog was successful (the user clicked an OK/Accept type button).

CloseToplevelWidget(widget)

Closes a top-level widget as if the user had clicked to close.

This function is undefined if used on a non top-level widget. It will invoke the closed widget callback.

Parameters

widget# (QWidget) – The top-level widget to close.

CreateButton(pressed)

Create a normal button widget.

Parameters

pressed# (WidgetCallback) – Callback to be called when the button is pressed.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateCheckbox(changed)

Create a checkbox widget which can be toggled between unchecked and checked. When created the checkbox is unchecked.

Parameters

changed# (WidgetCallback) – Callback to be called when the widget is toggled.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateComboBox(editable, changed)

Create a drop-down combo box widget.

When created there are no pre-defined entries in the drop-down section. This can be changed with SetComboOptions().

Parameters
  • editable# (bool) – True if the widget should allow the user to enter any text they wish as well as being able to select a pre-defined entry.

  • changed# (WidgetCallback) – Callback to be called when the text in the combobox is changed. This will be called both when a new option is selected or when the user edits the text.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateGridContainer()

Creates and returns a grid layout widget.

The widget needs to be added to a parent to become part of a panel or window.

Children added to this layout widget are arranged in a grid. Widget sizing follows default logic, which typically has some widgets be only large enough for their content and others which are ‘greedy’ evenly divide any remaining free space. This will not violate the grid constraint though.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateGroupBox(collapsible)

Create a groupbox widget which can optionally allow collapsing.

This widget can have children added, but it is recommended to immediately add only one child which is a layout type widget, to allow customising how children are added. By default the children are added in a vertical layout.

The widget needs to be added to a parent to become part of a panel or window.

Parameters

collapsible# (bool) – True if the groupbox should have a toggle in its header to allow collapsing its contents down vertically.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateHorizontalContainer()

Creates and returns a horizontal layout widget.

The widget needs to be added to a parent to become part of a panel or window.

Children added to this layout widget are listed horizontally. Widget sizing follows default logic, which typically has some widgets be only large enough for their content and others which are ‘greedy’ evenly divide any remaining free space.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateLabel()

Create a read-only label widget.

Note

This widget will be blank by default, you can set the text with SetWidgetText().

Returns

The handle to the newly created widget.

Return type

QWidget

CreateOutputRenderingWidget()

Create a widget suitable for rendering to with a renderdoc.ReplayOutput. This widget takes care of painting on demand and recreating the internal display widget when necessary, however this means you must use GetWidgetWindowingData() to retrieve the windowing data for creating the output as well as call SetWidgetReplayOutput() to notify the widget of the current output.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateRadiobox(changed)

Create a radio box widget which can be toggled between unchecked and checked but with at most one radio box in any group of sibling radio boxes being checked.

Upon creation the radio box is unchecked, even in a group of other radio boxes that are unchecked. If you want a default radio box to be checked, you should use SetWidgetChecked().

Parameters

changed# (WidgetCallback) – Callback to be called when the widget is toggled.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateSpacer(horizontal)

Creates and returns a spacer widget.

This widget is completely empty but consumes empty space, meaning all other non-greedy widgets in the same container will be minimally sized. This can be useful for simple layouts.

Parameters

horizontal# (bool) – True if this spacer should consume horizontal space, False if this spacer should consume vertical space. Typically this matches the direction of the layout it is in.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateSpinbox(decimalPlaces, step)

Create a spinbox widget with a numerical value and up/down buttons to change it.

The number of decimal places can be set to 0 for an integer spinbox, and in that case the step should be set to 1.0.

By default the spinbox has minimum and maximum values of 0.0 and 100.0, these can be changed with SetSpinboxBounds().

Parameters
  • decimalPlaces# (int) – The number of decimal places to display when showing the number.

  • step# (float) – The step value to apply in each direction when clicking up or down.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateTextBox(singleLine, changed)

Create a text box widget for the user to enter text into.

Parameters
  • singleLine# (bool) – True if the widget should be a single-line entry, otherwise it is a multi-line text box.

  • changed# (WidgetCallback) – Callback to be called when the text in the textbox is changed.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateToplevelWidget(windowTitle, closed)

Creates and returns a top-level widget for creating layouts.

The widget is not immediately visible. It should be shown either with ShowWidgetAsDialog() or with CaptureContext.AddDockWindow() once it’s ready.

This widget can have children added, but it is recommended to immediately add only one child which is a layout type widget, to allow customising how children are added. By default the children are added in a vertical layout.

Parameters
  • windowTitle# (str) – The title of any window with this widget as its root.

  • closed# (WidgetCallback) – A callback that will be called when the widget is closed by the user. This implicitly deletes the widget and all its children, which will no longer be valid even if a handle to them exists.

Returns

The handle to the newly created widget.

Return type

QWidget

CreateVerticalContainer()

Creates and returns a vertical layout widget.

The widget needs to be added to a parent to become part of a panel or window.

Children added to this layout widget are listed vertically. Widget sizing follows default logic, which typically has some widgets be only large enough for their content and others which are ‘greedy’ evenly divide any remaining free space.

Returns

The handle to the newly created widget.

Return type

QWidget

DestroyWidget(widget)

Destroy a widget. Widgets stay alive unless explicitly destroyed here, OR in one other case when they are in a widget hiearchy under a top-level window which the user closes, which can be detected with the callback parameter in CreateToplevelWidget().

If the widget being destroyed is a top-level window, it will be closed. Otherwise if it is part of a widget hierarchy it will be removed from its parent automatically. You can remove a widget and then destroy it if you wish, but you must not destroy a widget then attempt to remove it from its parent, as after the call to this function the widget is no longer valid to use.

All children under this widget will be destroyed recursively as well, which will be made invalid even if a handle to them exists.

Parameters

widget# (QWidget) – The widget to destroy.

FindChildByName(parent, name)

Find a child widget of a parent by internal name.

Parameters
  • parent# (QWidget) – The widget to start the search from.

  • name# (str) – The internal name to search for.

Returns

The handle to the first widget with a matching name, or None if no widget is found.

Return type

QWidget

GetChild(parent, index)

Return a child widget for a parent.

Parameters
  • parent# (QWidget) – The parent widget to look up.

  • index# (int) – The child index to return.

Returns

The specified child of the parent, or None if the index is out of bounds.

Return type

QWidget

GetNumChildren(widget)

Return the number of children this widget has. This is generally only useful for layout type widgets.

Parameters

widget# (QWidget) – The widget to query.

Returns

The number of child widgets this widget has.

Return type

int

GetParent(widget)

Return the parent of a widget in the widget hierarchy.

Note

The widget returned may not be a widget created through this helper interface if the specified widget has been docked somewhere. Beware making changes to any widgets returned as you may modify the RenderDoc UI itself.

Parameters

widget# (QWidget) – The widget to query.

Returns

The handle to the parent widget with a matching name, or None if this widget is either not yet parented or is a top-level window.

Return type

QWidget

GetSpinboxValue(spinbox)

Return the current value of a spinbox widget. If another type of widget is passed 0.0 will be returned.

Parameters

spinbox# (QWidget) – The widget to query.

Returns

The current value of the spinbox.

Return type

float

GetWidgetName(widget)

Return the internal name of a widget, as set my SetWidgetName().

Parameters

widget# (QWidget) – The widget to query.

Returns

The widget’s internal name, which may be an empty string if no name has been set.

Return type

str

GetWidgetText(widget)

Return the current text of a widget. See SetWidgetText().

Parameters

widget# (QWidget) – The widget to query.

Returns

The widget’s current text, which may be an empty string if no valid text is available.

Return type

str

GetWidgetType(widget)

Return the type of the widget as a string. This type is the Qt type name so this should only be used for debugging as the name may change even if for the same type of widget.

Parameters

widget# (QWidget) – The widget to query.

Returns

The widget’s type name.

Return type

str

GetWidgetWindowingData(widget)

Return the opaque pointer of windowing data suitable for passing to CreateOutput() or other functions that expect windowing data.

If the widget is not a output rendering widget created with CreateOutputRenderingWidget() this function will fail and return an invalid set of windowing data.

It’s important to note that the windowing data is not valid forever, so this function should be called as close to where you call CreateOutput() as possible. Also don’t fetch windowing data unless you are going to create an output, because this function will cause the widget to go into an undefined state unless an output is created to render onto it.

Note

This function must be called on the main UI thread.

Parameters

widget# (QWidget) – The widget to create windowing data for.

Returns

The windowing data.

Return type

renderdoc.WindowingData

InsertWidget(parent, index, child)

Insert a child widget at the specified index in an ordered layout (either horizontal or vertical). If the parent is not an ordered layout nothing will happen and the widget will not be added anywhere.

Parameters
  • parent# (QWidget) – The parent grid layout widget.

  • index# (int) – The index to insert the widget at. If this index is out of bounds it will be clamped, so that negative indices will be equivalent to index 0 and all indices above the number of children will append the widget

  • child# (QWidget) – The child widget to add.

InvokeOntoUIThread(callback)

Invoke a callback on the UI thread. All widget accesses must come from the UI thread, so if work has been done on the render thread then this function can be used to asynchronously and safely go back to the UI thread.

This function is safe to call on the UI thread, but it will synchronously call the callback immediately before returning.

Note

No parameters are provided to the callback, it is assumed that the callback will maintain its own context as needed.

Parameters

callback# (InvokeCallback) – The callback to invoke on the UI thread.

IsWidgetChecked(checkableWidget)

Return the current checked-state of a widget. See SetWidgetChecked(). If another type of widget is passed other than a checkbox or radio box False will be returned.

Parameters

checkableWidget# (QWidget) – The widget to query.

Returns

True if the widget is currently checked.

Return type

bool

IsWidgetEnabled(widget)

Return the current enabled-state of a widget. See SetWidgetEnabled().

Parameters

widget# (QWidget) – The widget to query.

Returns

True if the widget is currently enabled.

Return type

bool

IsWidgetVisible(widget)

Return the current visibility of a widget. See SetWidgetVisible().

This query is recursive - a widget could be individually visible, but if it is under a parent which is invisible then this widget will be returned as invisible.

Parameters

widget# (QWidget) – The widget to query.

Returns

True if the widget is currently visible.

Return type

bool

SetComboOptions(combo, options)

Set the pre-defined options in a drop-down combo box. If another type of widget is passed nothing will happen.

Parameters
  • combo# (QWidget) – The combo box.

  • options# (List[str]) – The new options for the combo box.

SetLabelImage(widget, data, width, height, alpha)

Set an image for a label widget. If the widget isn’t a label, this call has no effect.

The label will be resized to a fixed size to display the image at 100% scale. Any text in the label will not be displayed, but passing an empty image will revert the label back to being text-based.

The data must be in RGB(A) format with the first byte of each texel being R.

Parameters
  • widget# (QWidget) – The widget to set the picture for.

  • data# (bytes) – The image data itself, tightly packed.

  • width# (int) – The width of the image in pixels.

  • height# (int) – The height of the image in pixels.

  • alpha# (bool) – True if the image data contains an alpha channel.

SetSpinboxBounds(spinbox, minVal, maxVal)

Set the minimum and maximum values allowed in the spinbox. If another type of widget is passed nothing will happen.

Parameters
  • spinbox# (QWidget) – The spinbox.

  • minVal# (float) – The minimum value allowed for the spinbox to reach. Lower values entered will be clamped to this.

  • maxVal# (float) – The maximum value allowed for the spinbox to reach. Higher values entered will be clamped to this.

SetSpinboxValue(spinbox, value)

Set the value contained in a spinbox. If another type of widget is passed nothing will happen.

Parameters
  • spinbox# (QWidget) – The spinbox.

  • value# (float) – The value for the spinbox, which will be clamped by the current bounds.

SetWidgetBackgroundColor(widget, red, green, blue)

Set the default backkground color for a rendering widget. This background color is used when no output is currently configured, e.g. when a capture is closed.

For all other widget types this has no effect.

To disable the background color pass negative values for the components, this will cause a default checkerboard to be rendered instead. This is the default behaviour when a widget is created.

Parameters
  • widget# (QWidget) – The widget to set the background color of.

  • red# (float) – The red component of the color, in the range 0.0 - 1.0.

  • green# (float) – The green component of the color, in the range 0.0 - 1.0.

  • blue# (float) – The blue component of the color, in the range 0.0 - 1.0.

SetWidgetChecked(checkableWidget, checked)

Set whether the widget is checked or not. This only affects checkboxes and radio boxes. If another type of widget is passed nothing will happen.

Parameters
  • checkableWidget# (QWidget) – The widget to check or uncheck.

  • checked# (bool) – True if the widget should be checked.

SetWidgetEnabled(widget, enabled)

Set whether the widget is enabled or not. This generally only affects interactive widgets and not fixed widgets, interactive widgets become read-only while still displaying the same data.

Note

Disabled widgets can still be modified programmatically, they are only disabled for the user.

Parameters
  • widget# (QWidget) – The widget to enable or disable.

  • enabled# (bool) – True if the widget should be enabled.

SetWidgetFont(widget, font, fontSize, bold, italic)

Change the font properties of a widget.

Parameters
  • widget# (QWidget) – The widget to change font of.

  • font# (str) – The new font family to use, or an empty string to leave the font family the same.

  • fontSize# (int) – The new font point size to use, or 0 to leave the size the same.

  • bold# (bool) – True if the font should be bold.

  • italic# (bool) – True if the font should be italic.

SetWidgetName(widget, name)

Set the internal name of a widget. This is not displayed anywhere but can be used by FindChildByName() to locate a widget within a hierarchy.

Note

Names are optional and only for your use. Nothing prevents from you from setting duplicate names, but this makes searches by name ambiguous.

Parameters
  • widget# (QWidget) – The widget to set an internal name for.

  • name# (str) – The internal name to set for the widget.

SetWidgetReplayOutput(widget, output)

Set the current output for a widget. This only affects output rendering widgets. If another type of widget is passed nothing will happen.

Passing None as the output will reset the widget and make it display the default background until another output is set.

When a capture is closed and all outputs are destroyed, the widget will automatically unset the output so there is no need to do that manually.

Parameters
  • widget# (QWidget) – The widget to set the output for.

  • output# (renderdoc.ReplayOutput) – The new output to set, or None to unset any previous output.

SetWidgetText(widget, text)

Set the ‘text’ of a widget. How this manifests depends on the type of the widget, for example a text-box or label will set the text directly. For a checkbox or radio button this will add text next to it.

Parameters
  • widget# (QWidget) – The widget to set text for.

  • text# (str) – The text to set for the widget.

SetWidgetVisible(widget, visible)

Set whether the widget is visible or not. An invisible widget maintains its position in the hierarchy but is not visible and cannot be interacted with in any way.

Parameters
  • widget# (QWidget) – The widget to show or hide.

  • visible# (bool) – True if the widget should be made visible (shown).

ShowWidgetAsDialog(widget)

Show a top-level widget as a blocking modal dialog. This is most useful to prompt the user for some specific information.

The dialog is only closed when the user closes the window explicitly or if you call CloseCurrentDialog() in a widget callback, e.g. upon a button press.

Parameters

widget# (QWidget) – The top-level widget to show as a dialog.

Returns

Whether the dialog was closed successfully, via CloseCurrentDialog().

Return type

bool

Helpers

class qrenderdoc.ExtensionMetadata

The metadata for an extension.

author

The author of the extension, optionally with an email contact

description

A longer description of what the extension does

extensionAPI

The version of the extension API that this extension is written against

extensionURL

The URL for where the extension is fetched from

filePath

The location of this package on disk

name

The short friendly name for the extension

package

The python package for this extension, e.g. foo.bar

version

The version of the extension

class qrenderdoc.WindowMenu(value)

Specifies the base menu to add a menu item into.

File

The menu item will be in a section between Open/Save/Close captures and Import/Export.

Window

The menu item will be in a new section at the end of the menu.

Tools

The menu item will be added to a new section above Settings.

NewMenu

The menu item will be a root menu, placed between Tools and Help.

Help

The menu item will be added after the error reporting item.

class qrenderdoc.PanelMenu(value)

Specifies the panel to add a menu item into.

EventBrowser

The EventBrowser.

PipelineStateViewer

The PipelineStateViewer.

MeshPreview

The mesh previewing BufferViewer.

TextureViewer

The TextureViewer.

class qrenderdoc.ContextMenu(value)

Specifies the panel to add a menu item into.

EventBrowser_Event

Adds the item to the context menu for events in the EventBrowser.

MeshPreview_Vertex

Adds the item to the context menu for all vertices in the mesh previewing BufferViewer.

MeshPreview_VSInVertex

Adds the item to the context menu for vertex inputs in the mesh previewing BufferViewer.

MeshPreview_VSOutVertex

Adds the item to the context menu for VS output in the mesh previewing BufferViewer.

MeshPreview_GSOutVertex

Adds the item to the context menu for GS/Tess output in the mesh previewing BufferViewer.

TextureViewer_Thumbnail

Adds the item to the context menu for all thumbnails in the TextureViewer.

TextureViewer_InputThumbnail

Adds the item to the context menu for input thumbnails in the TextureViewer.

TextureViewer_OutputThumbnail

Adds the item to the context menu for output thumbnails in the TextureViewer.

class qrenderdoc.DialogButton(value)

A button for a dialog prompt.

OK

An OK button

Save

A Save button

SaveAll

A Save All button

Open

An Open button

Yes

A Yes button

YesToAll

A Yes To All button

No

A No button

NoToAll

A No To All button

Abort

An Abort button

Retry

A Retry button

Ignore

An Ignore button

Close

A Close button

Cancel

A Cancel button

Discard

A Discard button

Help

A Help button

Apply

An Apply button

Reset

A Reset button

RestoreDefaults

A Restore Defaults button