Tk 4.2 for Macintosh
by Ray Johnson
Sun Microsystems Laboratories
rjohnson@eng.sun.com
SCCS: @(#) README 1.18 96/10/07 14:47:23
1. Introduction
---------------
This is the README file for the Macintosh version of the Tk
extension for the Tcl scripting language. The file consists of
information specific to the Macintosh version of Tcl and Tk. For more
general information please read the README file in the main Tk
directory.
2. What's new?
-------------
We have several new features in the Tk 4.2 release. The most
interesting is a set of common dialog boxes. These include the
new commands "tk_chooseColor", "tk_getOpenFile", "tk_getSaveFile"
and "tk_messageBox". All of these new commands use the Macintosh
look and feel except for tk_messageBox.
I've also added a command that allows you to get more native window
styles. However, we have yet to decide on a cross platform solution
to the problem of varying window styles. None the less, I thought
it would be use full to add the capability in an unsupported means
to tide you over until a better solution is available. The command
is called "unsupported1". It can be used in the following way:
toplevel .foo; unsupported1 style .foo zoomDocProc
The above command will create a document window with a zoom box.
Type "unsupported1 style . ???" to get a list of the supported
styles. The command works like "wm overrideredirect" - you must
make the call before the window is mapped.
I've also fixed up the edit menu some. I've added a new Clear item
and all Edit Menu items now send a Virtual Event to the system rather
than simulating key events. You can bind to these events in any
widget you wish. (However, the event is only sent to the window that
contains the focus.)
Lastly, I've a couple of bugs in the canvas's "postscript" command.
In addition to bug fixes, the command now searches the resource fork
for a resource called "prolog" instead of relying on the prolog.ps
file being installed in the right location. Several of you asked
for this...
3. The Distribution
-------------------
Macintosh Tk is distributed in three different forms. This
should make it easier to only download what you need. The
packages are as follows:
mactk4.2.sea.hqx
This distribution is a "binary" only release. It contains an
installer program that will install a 68k, PowerPC, or Fat
version of the "Wish" application. In addition, in installs
the Tcl & Tk libraries in the Extensions folder inside your
System Folder. (No "INIT"'s or Control Pannels are installed.)
mactcltk-full-4.2.sea.hqx
This release contains the full release of Tcl and Tk for the
Macintosh plus the More Files package on which Macintosh Tcl and
Tk rely.
mactk-source-4.2.sea.hqx
This release contains the complete source to Tk for the Macintosh
In addition, Metrowerks CodeWarrior libraries and project files
are included. However, you must already have the More Files
package to compile this code.
4. Documentation
----------------
Two books are currently available for Tcl. Both provide a good
introduction to the language. It is a good way to get started
if you haven't used the language before:
Title: Tcl and the Tk Toolkit
Author: John K. Ousterhout
Publisher: Addison-Wesley
ISBN: 0-201-63337-X
Title: Practical Programming in Tcl and Tk
Author: Brent Welch
Publisher: Prentice Hall
ISBN: 0-13-182007-9
The "doc" subdirectory contains reference in documentation
in the "man" format found on most UNIX machines. Unfortunately,
there is not a suitable way to view these pages on the Macintosh.
A version suitable for viewing on the Macintosh has yet to be
developed. We are working are having better documentation for
the Macintosh platform in the future. However, if you have WWW
access you may access the Man pages at the following URL:
http://www.smli.com/research/tcl/man/
Other documentation and sample Tcl scripts can be found at
the Tcl ftp site:
ftp://ftp.aud.alcatel.com/tcl/
The internet news group comp.lang.tcl is also a valuable
source of information about Tcl. A mailing list is also
available (see below).
5. Compiling Tk
---------------
In order to compile Macintosh Tk you must have the
following items:
CodeWarrior release 8 or higher
Mac Tcl 7.6 (source)
(which requires More Files 1.4.2 or 1.4.3)
The project files included with the Mac Tcl source should work
fine. The only thing you may need to update are the access paths.
Special notes:
* You may not have the libmoto library which will cause a compile
error. Look at the file libmoto.doc for more details.
* Check out the file bugs.doc for information about known bugs.
6. About Dialog
---------------
There is now a way to replace the default dialog box for the Wish
application. If you create the tcl procedure "tkAboutDialog" it will
be called instead of creating the default dialog box. Your procedure
is then responsible for displaying a window, removing it, etc. This
interface is experimental and may change in the future - tell me what
you think of it.
7. Apple Events
---------------
Tcl/Tk currently doesn't have much in the way of support for Mac
Apple Events. There is no way to send an apple event (although you
could write an extension to do this) and no general purpose way to
recieve apple events. However, there are a couple of hooks for
dealing with some of the standard apple events.
exit - Generally, Tcl cleans up after it self when you exit.
However, your application may want to do application specifc
cleanup like saving a users data. To do this you can rename
the exit command to something else. Define your own exit
command to do whatever clean up you like and then call the
origional exit command. For example,
rename exit __exit
proc exit {} {
# Do your clean up hear
__exit
}
Both incoming quit events and hitting the Quit menu item
will call the exit command. However, don't expect you can
abort the exit. Tk may exit anyway if the exit command it
calls does not actually quit the application.
open - The other apple event Tk supports is the open event. The
open event is sent to Tk if, for example, you drop a file on
the Wish icon. If you define a Tcl procedure with the name
"tkOpenDocument" it will be invoked on any Open Document
events that the application receives. The a list of paths to
the various documents will be passed to the Tcl function.
Here is an example,
proc tkOpenDocument args {
foreach file $args {
# Deal with passed in file path
}
}
Note: This isn't every thing you need to do to make your
application dropable. You must still define a FREF resource
that makes sense for your application domain. (Out of the
box, you will not be able to drop files on the Wish
application. See the Inside Macintosh documentation for
details about the FREF resource.
8. Tk Cursors
-------------
The Macintosh version of Tk supports all of the X cursors. Tk on the
Mac will also accept any of the standard Mac cursors including ibeam,
crosshair, watch, plus, and arrow. In addition, Tk will load
cursor resources of the types 'crsr' (color) and 'CURS' (black and
white) by the name of the of the resource. The application and all
it's open dynamic library's resource files will be searched for the
named cursor. If there are conlicts color cursors will always be
loaded in preference to black and white cursors.
9. Macintosh Tcl Mailing List
-----------------------------
A Mailing List has been set up to discuss Macintosh related Tcl & Tk
issues including (but not limited to) MacTcl & the Tk port. In order
to use this Mailing List you must have access to the internet. If you
have access to the WWW the home page for this mailing list is located
at the following URL:
http://www.smli.com/research/tcl/lists/mactcl-list.html
The home page contains information about the list and an HTML archive
of all the past messages on the list. To subscribe send a message to:
listserv@sunlabs.sun.com
In the body of the message (the subject will be ignored) put:
subscribe mactcl Joe Blow
Replacing Joe Blow with your real name, of course. If you would just
like to receive more information about the list without subscribing
but the line:
information mactcl
in the body instead.
If you have comments or Bug reports send them to:
Ray Johnson
rjohnson@eng.sun.com