fontchooser(n)               Tk Built-In Commands               fontchooser(n)



______________________________________________________________________________

NAME
       fontchooser - control font selection dialog

SYNOPSIS
       tk fontchooser configure ?-option value -option value ...?

       tk fontchooser show

       tk fontchooser hide
______________________________________________________________________________

DESCRIPTION
       The tk fontchooser command controls the Tk font selection dialog. It
       uses the native platform font selection dialog where available, or a
       dialog implemented in Tcl otherwise.

       Unlike most of the other Tk dialog commands, tk fontchooser does not
       return an immediate result, as on some platforms (Mac OS X) the
       standard font dialog is modeless while on others (Windows) it is modal.
       To accommodate this difference, all user interaction with the dialog
       will be communicated to the caller via callbacks or virtual events.

       The tk fontchooser command can have one of the following forms:

       tk fontchooser configure ?-option value -option value ...?
              Set or query one or more of the configurations options below
              (analogous to Tk widget configuration).

       tk fontchooser show
              Show the font selection dialog. Depending on the platform, may
              return immediately or only once the dialog has been withdrawn.

       tk fontchooser hide
              Hide the font selection dialog if it is visible and cause any
              pending tk fontchooser show command to return.

CONFIGURATION OPTIONS
       -parent
              Specifies/returns the logical parent window of the font
              selection dialog (similar to the -parent option to other
              dialogs). The font selection dialog is hidden if it is visible
              when the parent window is destroyed.

       -title Specifies/returns the title of the dialog. Has no effect on
              platforms where the font selection dialog does not support
              titles.

       -font  Specifies/returns the font that is currently selected in the
              dialog if it is visible, or that will be initially selected when
              the dialog is shown (if supported by the platform). Can be set
              to the empty string to indicate that no font should be selected.
              Fonts can be specified in any form given by the "FONT
              DESCRIPTION" section in the font manual page.

       -command
              Specifies/returns the command prefix to be called when a font
              selection has been made by the user. The command prefix is
              evaluated at the global level after having the specification of
              the selected font appended. On platforms where the font
              selection dialog offers the user control of further font
              attributes (such as color), additional key/value pairs may be
              appended before evaluation. Can be set to the empty string to
              indicate that no callback should be invoked. Fonts are specified
              by a list of form [3] of the "FONT DESCRIPTION" section in the
              font manual page (i.e. a list of the form {family size style
              ?style ...?}).

       -visible
              Read-only option that returns a boolean indicating whether the
              font selection dialog is currently visible. Attempting to set
              this option results in an error.


VIRTUAL EVENTS
       <<TkFontchooserVisibility>>
              Sent to the dialog parent whenever the visibility of the font
              selection dialog changes, both as a result of user action (e.g.
              disposing of the dialog via OK/Cancel button or close box) and
              of the tk fontchooser show/hide commands being called. Binding
              scripts can determine the current visibility of the dialog by
              querying the -visible configuration option.

       <<TkFontchooserFontChanged>>
              Sent to the dialog parent whenever the font selection dialog is
              visible and the selected font changes, both as a result of user
              action and of the -font configuration option being set. Binding
              scripts can determine the currently selected font by querying
              the -font configuration option.

NOTES
       Callers should not expect a result from tk fontchooser show and may not
       assume that the dialog has been withdrawn or closed when the command
       returns. All user interaction with the dialog is communicated to the
       caller via the -command callback and the <<TkFontchooser*>> virtual
       events.  It is implementation dependent which exact user actions result
       in the callback being called resp. the virtual events being sent. Where
       an Apply or OK button is present in the dialog, that button will
       trigger the -command callback and <<TkFontchooserFontChanged>> virtual
       event. On some implementations other user actions may also have that
       effect; on Mac OS X for instance, the standard font selection dialog
       immediately reflects all user choices to the caller.

       In the presence of multiple widgets intended to be influenced by the
       font selection dialog, care needs to be taken to correctly handle focus
       changes: the font selected in the dialog should always match the
       current font of the widget with the focus, and the -command callback
       should only act on the widget with the focus. The recommended practice
       is to set font dialog -font and -command configuration options in
       per-widget <FocusIn> handlers (and if necessary to unset them - i.e.
       set to the empty string - in corresponding <FocusOut> handlers). This
       is particularly important for implementers of library code using the
       font selection dialog, to avoid conflicting with application code that
       may also want to use the dialog.

       Because the font selection dialog is application-global, in the
       presence of multiple interpreters calling tk fontchooser, only the
       -command callback set by the interpreter that most recently called tk
       fontchooser configure or tk fontchooser show will be invoked in
       response to user action and only the -parent set by that interpreter
       will receive <<TkFontchooser*>> virtual events.

       The font dialog implementation may only store (and return) font actual
       data as the value of the -font configuration option. This can be an
       issue when -font is set to a named font, if that font is subsequently
       changed, the font dialog -font option needs to be set again to ensure
       its selected font matches the new value of the named font.

EXAMPLE
              proc fontchooserDemo {} {
                  wm title . "Font Chooser Demo"
                  tk fontchooser configure -parent .
                  button .b -command fontchooserToggle -takefocus 0
                  fontchooserVisibility .b
                  bind . <<TkFontchooserVisibility>> \
                          [list fontchooserVisibility .b]
                  foreach w {.t1 .t2} {
                      text $w -width 20 -height 4 -borderwidth 1 -relief solid
                      bind $w <FocusIn> [list fontchooserFocus $w]
                      $w insert end "Text Widget $w"
                  }
                  .t1 configure -font {Courier 14}
                  .t2 configure -font {Times 16}
                  pack .b .t1 .t2; focus .t1
              }
              proc fontchooserToggle {} {
                  tk fontchooser [expr {
                          [tk fontchooser configure -visible] ?
                          "hide" : "show"}]
              }
              proc fontchooserVisibility {w} {
                  $w configure -text [expr {
                          [tk fontchooser configure -visible] ?
                          "Hide Font Dialog" : "Show Font Dialog"}]
              }
              proc fontchooserFocus {w} {
                  tk fontchooser configure -font [$w cget -font] \
                          -command [list fontchooserFontSelection $w]
              }
              proc fontchooserFontSelection {w font args} {
                  $w configure -font [font actual $font]
              }
              fontchooserDemo

SEE ALSO
       font(n), tk(n)

KEYWORDS
       dialog, font, font selection, font chooser, font panel



Tk                                                              fontchooser(n)
