jtkversion.tcl

Introduction

The jtkversion.tcl library is distributed as part of the jstools package. It consists of procedures to make it easier to write scripts that will work under both Tk 3 and Tk 4.

This document describes jtkversion.tcl version 4.1/4.4.

Usage

Accessing the Library

In order to use the jtkversion.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.

Credits and Copyright

Author

Jay Sekora
js@aq.org
http://www.aq.org/~js/

Copyright

The library is copyright © 1992-1995 by Jay Sekora, but may be freely redistributed under the conditions at the top of the file.

Overview

Procedures

j:tk4 - perform an action (or return true) if running under Tk version 4 or greater
j:tk3 - perform an action (or return true) if running under Tk version 3 or earlier
j:tkversion - perform an action (or return true) under a given range of Tk versions

See Also

jtkutils.tcl

j:tk4

Usage

j:tk4 [command]

Description

This procedure executes command (in the calling procedure's stack frame) if and only if running under Tk version 4 or later. It returns 1 if the command was executed (i.e., if the version of Tk it's running under is 4 or greater) and 0 otherwise. If command is omitted, no action is performed, but the return value still indicates what version of Tk is being used.

j:tk3

Usage

j:tk3 [command]

Description

This procedure executes command (in the calling procedure's stack frame) if and only if running under Tk version 3 or earlier. It returns 1 if the command was executed (i.e., if the version of Tk it's running under is 3 or less) and 0 otherwise. If command is omitted, no action is performed, but the return value still indicates what version of Tk is being used.

j:tkversion

Usage

j:tkversion op number [command]
or
j:tkversion range {low high} [command]

Arguments

op is a Tcl relational operator, like <=, ==, >, or !=
number, low, and high are Tk version numbers
command is a Tcl command to execute under the given Tk version range

Examples

j:tkversion < 4 {
puts stderr \x07
}
j:tkversion >= 4 {
bell -displayof .
}

j:tkversion < 4 {
j:alert -text \
"Warning: File can't be saved under this version of Tk."
}

j:tkversion range {4.0 4.1} {
set file [j:fs]
}
j:tkversion > 4.1 {
set file [tk_getOpenFile]
}
j:tkversion < 4.0 {
j:alert -text "Wrong Tk version; requires at least 4.0"
}

if {[string length [info commands makeImage]] ||
[j:tkversion >= 4.0]} {
labelWithImage $label
}

Description

In the first form of the command (without range), this procedure executes command (in the caller's context) and returns 1 (true) if and only if the Tcl expression {$tkversion op number} evaluates to true (where $tk_version is the version number of Tk the script is executing under).

In the second form (with range), this procedure executes command (in the caller's context) and returns 1 (true) if and only if the current version of Tk is between low and high, inclusive.

In both forms, command can be omitted, in which case the only effect is returning 1 or 0; this can be useful in expressions.

Bugs and Misfeatures