~~Title: ButtonData~~
The **ButtonData** object is used to initialise a dynamic toolbar button. It's obtained from the various methods of the **[[addbuttonhelper|AddButtonHelper]]** object. The properties of this object are used to configure the button.
==Common to all types==
$$ Property Name
$$ Return Type
$$ Description
$$ backcol
$$ //string//
$$ Sets the background color of the button, in the format `#RRGGBB` (hexadecimal) or `RRR,GGG,BBB` (decimal).
$$ desc
$$ //string//
$$ The button's description (tooltip).
$$ image
$$ //string//
$$ The main icon for the button; you can specify either an internal icon name (e.g. `#copy`) or the full path of an external image file or icon. You can extract icons from DLLs etc by appending a comma and the icon index to the file name.
$$ image2
$$ //string//
$$ The secondary icon for the button.
$$ label
$$ //string//
$$ The button's label.
$$ nohighlight
$$ //bool//
$$ Set to **True** if the button should not highlight when the mouse moves over it.
$$ notablabel
$$ //bool//
$$ Set to **True** to disable interpreting of tabs in the button's label.
$$ separator
$$ //bool//
$$ Set to **True** to display a separator following this button.
$$ showimage
$$ //bool// or
//string//
$$ Controls the button image visibility. Valid values are **True** or **False**, "dual", "large", or "largedual".
$$ showlabel
$$ //bool// or
//string//
$$ Controls the button label visibility. Valid values are **True** or **False**, "left", "right", "top", "bottom".
$$ textcol
$$ //string//
$$ Sets the text color of the button, in the format `#RRGGBB` (hexadecimal) or `RRR,GGG,BBB` (decimal).
==Normal buttons==
$$ Property Name
$$ Return Type
$$ Description
$$ checked
$$ //bool//
$$ Set to **True** to have the button appear checked/highlighted.
$$ disabled
$$ //bool//
$$ Set to **True** to disable the button.
$$ func
$$ //string//
$$ The full function to run when the button is clicked. Multiple lines can be provided, with cr/lf separators. Any
*@modifiers* need to go at the top of the function.
$$ type
$$ //string//
$$ Sets the function type; valid values are "batch", "script", "wsl". Leave empty for a standard Opus function.
$$ radio
$$ //bool//
$$ Set to **True** to use a radio button rather than a checkmark.
==Menus==
$$ Property Name
$$ Return Type
$$ Description
$$ arrow
$$ //bool// or
//string//
$$ Display a dropdown arrow on the menu. Valid values are **True** or **False**, "normal", or "slim".
$$ children
$$ [[addbuttonhelper|AddButtonHelper]]
$$ This returns another **AddButtonHelper** object, which lets you add child buttons to the menu.
$$ childimages
$$ //string//
$$ Controls the visibility of images in the menu. Valid values are "off", "on", "large".
$$ minimize
$$ //bool//
$$ Set to **True** to minimize the menu width.
$$ popout
$$ //string//
$$ Control where the menu pops open. Valid values are "left", "right", "top", "bottom".
==Menu buttons==
$$ Property Name
$$ Return Type
$$ Description
$$ alwaysenable
$$ //bool//
$$ Set to **True** to always enable the dropdown even if the button itself is disabled.
$$ checked
$$ //bool//
$$ Set to **True** to have the button appear checked/highlighted.
$$ children
$$ [[addbuttonhelper|AddButtonHelper]]
$$ This returns another **AddButtonHelper** object, which lets you add child buttons to the menu component of the menu button.
$$ childimages
$$ //string//
$$ Controls the visibility of images in the menu. Valid values are "off", "on", "large".
$$ disabled
$$ //bool//
$$ Set to **True** to disable the button.
$$ func
$$ //string//
$$ The full function to run when the button is clicked. Multiple lines can be provided, with cr/lf separators. Any
*@modifiers* need to go at the top of the function.
$$ holdright
$$ //bool//
$$ Set to **True** to enable the "hold/right button to pop open" option.
$$ type
$$ //string//
$$ Sets the function type; valid values are "batch", "script", "wsl". Leave empty for a standard Opus function.
$$ radio
$$ //bool//
$$ Set to **True** to use a radio button rather than a checkmark.
==Three-button buttons==
$$ Property Name
$$ Return Type
$$ Description
$$ children
$$ [[addbuttonhelper|AddButtonHelper]]
$$ This returns another **AddButtonHelper** object, which lets you add child buttons to the menu. The first button is designated left, the second is right and the third is middle.
$$ childimages
$$ //string//
$$ Controls the visibility of images for the three-button's child buttons. Valid values are "off", "on", "large".
$$ dynamicfromchild
$$ //bool//
$$ Enables dynamic icons/labels for the button parent based on the child buttons.