+ CLI + add command line options: + max block size + min block size + block size change probability + title + number of blocks for partial estimate + presentation + GUI + fix size estimate units - it stays the same irrespective of units type + update only once every second or half second + pause button + Convert the GUI to a table? + add a menu bar + Add a quit button + Add time remaining + Add ETA based on entire transfer so far average + Add ETA based on briefer average + Add 10^3 vs 2^10 units + possibly have a toggle button (did a pulldown menu) + command line options for this + gray out options that are currently selected, to avoid reselection confusion + pause/resume + gray out options that are currently selected, to avoid reselection confusion + switch to using modunits or udunits or something! + Add no estimate transfers? + Keep: + amount transferred + throughput + blocksize + discard: + % transferred goes away + no ETA + no time remaining + progress bar becomes a pulse, not a % + Add /dev/zero transfers (and other device files) + stat + check for device file + backend + both + Use a status_class to communicate from the worker process to the GUI process + assess whether everything can reasonably be packaged up into a single object + Make the worker process die with the GUI on early termination + maybe via a message from GUI to worker + maybe via os.kill or process.join() in some way + add a buffer and/or tempfile mode for no estimate? + add du-like functionality for a list of directories? + use a heap to speed up blocksize_optimizer + exit true if transfer was completed successfully