In Brief
The Disclosure Button is a small button which exposes and hides a frame.
It is similar in functionality to the Disclosure Frame, except: (a) it is displayed as a button instead of a triangle and label, (b) the exposed widget need not be directly underneath it, (c) it tends to be used in different situations.
The widget appears in Apple's Human Interface Guide in Section 7.
This widget appears in TclMacBag v0.11 and above.
Commands
::tclmacbag::dbutton pathName ?Options?
Required Options:
- -widget pathName
This is the name of the widget which will be exposed and hidden when the user clicks the button.
- -gridopts Options
Specify where the frame will be gridded and using which options.
- -autoresize on|off
On Mac OS X, the usual behaviour when a dialog changes size (for example, due to a disclosure frame becoming active) is for the window to automatically change size to suit.
Using this option enables this behaviour.
This command allows you to programatically change the state of the disclosure button from its current state (eg, open) to its opposite (eg, closed).
::tclmacbag::dbutton::ToggleTo pathName ?Options?
This command allows you to programatically toggle the state of the disclosure button to a particular state (open or closed).
Options:
- -state open|closed
Selects the state the widget should be toggled to.
Example
# Set up the contoller widget
grid [::tclmacbag::dbutton .b -pathname .e \
-gridopts {-column 2 -row 1}] -column 1 -row 1
# Set up the disclosed/hidden frame.
ttk::frame .e
grid [ttk::label .e.l1 -text "Hello world."]
Further Information
At this stage, only the Grid geometry manager is supported by this widget. Pack may be supported at a later date. Place is unlikely to ever be supported.
As is standard, this widget returns with value of pathName, for ease of use with geometry managers like grid and pack.
While the -autoresize option handles the resizing, it does not (currently) have the animation effect characteristic of Mac resizing (which appears to be done by taking a screen grab of the before and after effects and fading between them). A plain resize effect may be unexpected to some Mac users.
The autoresize is only triggered when the vertical size of the toplevel has changed.