jprefpanel.tcl
The
jprefpanel.tcl library is distributed as part of the
jstools package. It a single procedure which creates
the
jstools Global Preferences panel.
This document describes
jprefpanel.tcl version 4.1/4.4.
Accessing the Library
In order to use the
jprefpanel.tcl library, it (and any other libraries it depends on) must be
in your Tcl
auto_path, described in
tclvars(n). Information about how to arrange that, and other conventions
common to
the
jstools libraries, is in
the
Usage section of
The jstools Libraries.
Author
Jay Sekora
js@aq.org
http://www.aq.org/~js/
Copyright
The library is copyright © 1992-1996 by Jay Sekora, but may be
freely redistributed under the conditions at the top of the file.
Procedures
j:global_pref_panel - create
the
jstools Global Preferences panel
j:pref:string_ui - labelled UI for global variable (undocumented)
j:pref:boolean_ui - labelled UI for global variable (undocumented)
j:pref:radio_ui - labelled UI for global variable (undocumented)
j:pref:show_module - cause panel to show prefs for module
j:pref:module_ui - create pref panel for module (undocumented)
j:pref:create_panel - create a preferences panel (undocumented)
j:pref:show_panel - create and display a preferences panel
See Also
jprefs.tcl
Usage
j:global_pref_panel
[options]
Option
-title
title
(localisable, default
Global Preferences)
Description
This procedure creates a preference panel that lets users set
preferences intended to be shared across multiple applications.
Global preferences are accessed by applications as elements
of the global
J_PREFS array, and saved as Tcl code in the file
~/.tk/defaults.
The main part of the panel contains various kinds of controls
to manipulate particular preferences. At the bottom of the
panel are two buttons labelled `Save' and `Done'. (Save is
the default button.) The Done button simply dismisses the panel;
the application will use whatever preferences are currently shown,
but they will not be saved across sessions. The Save button
writes the current preferences into the file
~/.tk/defaults before dismissing the panel, so that they can be read in the
next time the application starts, or by other applications.
If
title is specified, it will be the title of the panel, for use by
the window manager.
Documentation for the Global Preferences panel itself (as opposed
to the library) is available in
The jstools Global Preferences Panel.
Currently, the controls available and the preferences they manipulate
are:
Autoposition dialogue boxes
Checkbutton; sets
J_PREFS(autoposition)
(Used by
j:dialogue)
Confirm actions
Checkbutton; sets
J_PREFS(confirm)
(Used by
j:alert)
Fast file selector
Checkbutton; sets
J_PREFS(j_fs_fast)
(Used by
j:fs)
Visible Bell
Checkbutton; sets
J_PREFS(visiblebell)
(Used by
j:beep)
Audible Bell
Checkbutton; sets
J_PREFS(audiblebell)
(Used by
j:beep)
Strict Motif emulation
Checkbutton; sets
J_PREFS(tk_strictMotif) and
tk_strictMotif
(Used by Tk itself. Changing this preference currently has
no effect until the next time the application is run; this might
be considered a bug.)
Basic bindings
Radiobutton; sets
J_PREFS(bindings) to
basic
(Used by
j:init; can also be checked by your code.)
vi bindings
Radiobutton; sets
J_PREFS(bindings) to
vi
(Used by
j:init; can also be checked by your code.)
EDT bindings
Radiobutton; sets
J_PREFS(bindings) to
EDT
(Used by
j:init; can also be checked by your code.)
Emacs bindings
Radiobutton; sets
J_PREFS(bindings) to
emacs
(Used by
j:init; can also be checked by your code.)
Printer:
Entry field; sets
J_PREFS(printer)
(Used by
j:more; can also be used by your application. Note that in the
current version of the library, it does not set the
PRINTER environment variable.)
In addition to using commands in the
jbindings.tcl or
jinit.tcl libraries to set default text and entry bindings, your application
may wish to consult the value of
J_PREFS(bindings) in order to choose bindings for commands that it defines.
For instance, you may wish to use `/' (a slash) to start a search if the user has selected vi or basic
bindings, but
Control-s if the user has selected Emacs bindings. Likewise, you might
bind either `ZZ' or
Control-x
Control-q to save a document, depending on the user's preferred bindings.
Additional global preferences are likely to be defined in future
versions of the library.
Description
This procedure creates the user interface to control a stringvalued
preference. It's mainly intended to be used by
j:pref:module_ui, and is not yet documented.
Description
This procedure creates the user interface to control a booleanvalued
preference. It's mainly intended to be used by
j:pref:module_ui, and is not yet documented.
Description
This procedure creates the user interface to control a oneofmany
preference. It's mainly intended to be used by
j:pref:module_ui, and is not yet documented.
Usage
j:pref:show_module
[module]
Arguments
module - the module to display
Description
This procedure displays the interface for the preferences in
module, creating the panel containing
module if necessary. It's used by the option menu at the top of
a preferences panel, but you can also call it from your own code.
For instance, if you had a printing panel, you might want to
put a button on it that would allow the user to set printingrelated
preferences.
Description
This procedure creates the user interface corresponding to a particular
preferences module. It's mainly intended to be used by
j:pref:show_panel, and is not yet documented.
j:pref:create_panel
Description
This procedure creates a preference panel, but doesn't show one
of its modules. It's intended for use by
j:pref:show_panel, and is not yet documented.
Usage
j:pref:show_panel
panel
Arguments
panel - the pathname of the panel to create
Example
j:pref:show_panel .editor_prefs
Description
This procedure creates (if necessary) and displays the preferences
panel
panel, which should previously have been populated by preference modules
by
j:pref:module and
j:pref:preference (both in
jprefs.tcl). The first preference module registered for
panel will be displayed, with an option menu at the top of the panel
for displaying the other modules in
panel.