It should be straightforward to adapt programs using the module Tk, since most changes are conservative.
The first thing you will notice is that the efficiency with respect to both memory and runtime has been improved considerably.
Tk
ModuleHere is a list of improvements and changes of the Tk
module:
An action can be either a procedure P
or a pair
O#M
of an object O
and a message
M
. Whenever the action is invoked, P
is
applied or O
is applied to M
.
Arguments for events are not longer limited to be strings, they can be specified together with an appropriate type. For example:
{C tkBind(event: '<1>' args: [int(x) int(y)] action: proc {$ X Y} {Show X+Y} end)}
specifies that the action procedure is invoked with integers for the x- and y-coodinates of the mouse pointer.
The module provides the following classes for menu entries:
Tk.menuentry.separator
Tk.menuentry.command
Tk.menuentry.checkbutton
Tk.menuentry.cascade
Tk.menuentry.radiobutton
New tickles are true
,
false
, and unit
that
correspond to the virtual strings 1
, 0
, and
the empty string.
The color tickle c(R G B)
expands to a string
specifying a color by integer values between 0
and
255
for its red, green, and blue part.
The batch tickle b(Tcls)
expands to a string,
where the strings obtained by expanding the elements of the list
Tcls
are concatenated and separated by a space
character.
Widgets are now closed by applying them to the message
tkClose
. Closing a widget closes all its sub-widgets. In
contrast to Oz 1 all sub-widgets are closed implicitly without
applying them to the message tkClose
theirselves.
Applying a closed widget to a message other than
tkClose
raises an exception.
TkTools
ModuleThe new module TkTools
offers procedures and classes
that support graphical abstractions which occur in a large number of
applications and are not directly supported by abstractions provided
by the Tk
module.
Currently, the module includes support for:
Unfortunately, the document Window Programming in Oz is still in a very early draft state. However you can find it here.
Another source of information are the programs that come with the
system. A good idea could be to look at the code for the
Explorer
, the Panel
, the
Browser
, and the demos.