When the user allows the pointer to hover over a widget, DynamicHelp can provide help in two forms - either "balloon help" or "variable help". In balloon help, a window is posted that displays help text until the pointer is moved. In variable help, the help string is written to a variable, which is typically the -textvariable for a label or other widget.
Some Slab widgets (ArrowButton, Button, ComboBox, Entry, Label, LabelEntry, ListBox items, MainFrame menus, NoteBook pages, SpinBox, and Tree) have DynamicHelp built in, and it is used via the widget options -helpcmd, -helptext, -helptype, and -helpvar. The widgets that have been ported to Snit and have built-in DynamicHelp delegate to a Snit Abstract Type Slab::DynamicHelp::Helper, and access DynamicHelp exclusively via this object, except that the command DynamicHelp::configure can be used to configure the properties of the help balloon. (The Tree widget has built-in DynamicHelp, has not been ported to Snit, and accesses DynamicHelp via the commands DynamicHelp::add and DynamicHelp::include.)
Here is the use of DynamicHelp in the Entry widget:
snit::widgetadaptor Slab::Entry { # Delegate help-related options and methods. component MyDynamicHelper delegate option -helptext to MyDynamicHelper delegate option -helpvar to MyDynamicHelper delegate option -helpcmd to MyDynamicHelper delegate option -helptype to MyDynamicHelper delegate method dynamichelp_for_snit to MyDynamicHelper constructor {args} { installhull using entry # Define and configure component MyDynamicHelper. install MyDynamicHelper using Slab::DynamicHelp::Helper ${selfns}::keepDynHelpOpts \ -helptype balloon $MyDynamicHelper attach $win $win $self configurelist $args # The rest of the constructor ... ... } } |
DynamicHelp can be added to any other Tk or Slab widget by the command DynamicHelp::add.
This command adds dynamic help to the given widget.
Creating dynamic help for a menu is a two-step process. The menu itself must first be added and then each menu entry must be added separately. Here is a brief example.
# create menu menu .m -type menubar # associate menubar to toplevel BEFORE DynamicHelp::register # to make it works with menu clone name . configure -menu .m .m add cascade -label "File" -menu .m.file menu .m.file .m.file add command -label "Open..." .m.file add command -label "Quit" # create label for help, using variable varinfo label .l -textvariable varinfo # associate all entries of menu .m.file to variable varinfo DynamicHelp::add .m.file -type menu -variable varinfo # then declare entries of .m.file DynamicHelp::add .m.file -type menu -index 0 -text "Detach menu" DynamicHelp::add .m.file -type menu -index 1 -text "Open a file" DynamicHelp::add .m.file -type menu -index 2 -text "Exit demo" |
-background or -bg | -font |
-foreground or -fg | -justify |
-padx | -pady |
This command is deprecated. Use DynamicHelp::add instead.
Register a help text to the widget path. type determines the type of the help. Depending on type, other options must be provided.type | options |
balloon | ?tagOrItem? text |
variable | ?tagOrItem? varName text |
menu | varName |
menuentry | index text |
If tagOrItem is specified, then path is a canvas or a text. In case of a canvas, tagOrItem is the name of a tag or item on the canvas to which the help will be bound. In case of a text, tagOrItem is the name of a tag on the text to which the help will be bound.
For type other than balloon, varName is typically a variable linked to a label.# create menu menu .m -type menubar # associate menubar to toplevel BEFORE DynamicHelp::register # to make it works with menu clone name . configure -menu .m .m add cascade -label "File" -menu .m.file menu .m.file .m.file add command -label "Open..." .m.file add command -label "Quit" # create label for help, using variable varinfo label .l -textvariable varinfo # associate all entries of menu .m.file to variable varinfo DynamicHelp::register .m.file menu varinfo # then declare entries of .m.file DynamicHelp::register .m.file menuentry 0 "Detach menu" DynamicHelp::register .m.file menuentry 1 "Open a file" DynamicHelp::register .m.file menuentry 2 "Exit demo" |