Known Bugs in Rivet 0.1
Bugs in the Python interface
-
palette.tcl and dialog.tcl need to be ported to Python code.
-
A version of Tk's send command is not implemented.
-
The rivet.selection.handle() and rivet.selection.own() methods exist but
are not completely implemented, Python callbacks are not hooked up.
The "get" and "set" methods work, however.
-
Control-C should interrupt and stop rivet.mainloop. It needs a subsequent
X event to kick it out of Tk_MainLoop() now.
-
Using keyword arguments causes memory leaks. This is a bug in Python 1.3.
Evidence of this is in the gctest.py example.
-
These utility functions are not yet available in the Python rivetmodule:
tk_focusNext, tk_focusPrev, tk_focusContinue,
tk_focusFollowsMouse, and tk_popup
-
Delayed creation of windows inside text windows with:
textwindow.window_create(index, 'create', python_callable)
does not work. The workaround is to use the simpler form of window create:
textwindow.window_create(index, 'window', rivetobj)
-
The reporting of errors in callbacks is sufficient, it prints the call stack
to stdout, but it probably could use some more work. It should be possible
to write a function to handle errors in callbacks, and even support the
same kind of prompting system that tk uses.
-
The tkStrictMotif variable is set to FALSE and changes to it are ignored.
-
The variable classes in rivetutil have one hole where the lower level
variable name shows through: cget and configure will return the string
name for the variable, rather than the variable class instance that was
previously assigned to it.
-
There is some global data that prevents more than one rivet application
within a single address space (only one rivet_main_window, for
example). I believe Tk itself has some similar assumptions. This is
probably only a concern if porting to other runtimes.
-
"menu -postCommand" does not return value to caller.
Rivet C interface bugs
-
The names of widgets do not get removed from tk's id table when rivet
object is destroyed. This is a slight memory leak, and the problem is
generic to tk. This problem is more common in Rivet, because it will
generate names on the fly (from a incrementing variable), and the names
are not so significant as in tcl. The typical suggestion (for tk) is
to reuse the names of your widgets. In rivet, this means that you
would have to explicity name your widgets rather than let rivet name
the widget on your behalf.
-
The standard option "takefocus" cannot be set to a script, for now it
can only have the values 0 or 1.
-
I/O dispatching does not check to see if there is buffered input in
stdio buffers, raw I/O such as pipes work.
-
Pinnable windows do not pin.
-
A version of Tk's send command is not implemented.
-
The selection handle and own commands are not completely implemented.
Miscellenous bugs
-
Use a more portable method for building sources, such as with configure.
-
prolog.ps is located in the same places as tcl/tk. Maybe it
should be copied into the rivet source directories and installed
somewhere.