"progress report" of percent completion on certain long-running
processes (namely extraction, DEF reads, and GDS/CIF writes) was
allowing Tcl/Tk events to be processed so that the display would
be repainted and the console window updated to show the progress
instead of hanging. But that was allowing any key macros or
commands to be entered and executed, potentially corrupting the
database while the process was running. I have used
Tk_RestrictEvents() to prevent key and button events from being
processed until afterward. This preserves the display updates
(which do not alter the database) while preventing commands from
being run during one of these long-running processes. Also:
Previously, whenever a long-running process printed the status,
it would not update at the end, leaving output like "52% complete"
being the last output, leaving the impression that the process
never finished. Changed the code so that if any partial progress
is printed, then it will always finish up with the output "100%
complete" so that it is clear to the user that everything went
according to plan.