needs pyedit changes in version (fourth editionbesides the updates described in the prior sectionthe following additional enhancements were made for this current fourth edition of this bookpyedit has been ported to run under python and its tkinter library the nonmodal change and font dialogs were fixed to work better if multiple instance windows are openthey now use per-dialog state quit request in main windows now verifies program exit if any other edit windows in the process have changed contentinstead of exiting silently there' new grep menu option and dialog for searching external filessearches are run in threads to avoid blocking the gui and to allow multiple searches to overlap in time and support unicode text there was minor fix for initial positioning when text is inserted initially into newly created editorreflecting change in underlying libraries the run code option for files now uses the base file name instead of the full directory path after chdir to better support relative pathsallows for command-line arguments to code run from filesand inherits patch made in ' launchmodes which converts to in script paths in additionthis option always now runs an update between pop-up dialogs to ensure proper display perhaps most prominentlypyedit now processes files in such way as to support display and editing of text with arbitrary unicode encodingsto the extent allowed by the underlying tk gui library for unicode strings specificallyunicode is taken into account when opening and saving fileswhen displaying text in the guiand when searching files in directories the following sections provide additional implementation notes on these changes modal dialog state fix the change dialog in the prior version saved its entry widgets on the text editor objectwhich meant that the most recent change dialog' fields were used for every change dialog open this could even lead to program aborts for finds in an older change dialog window if newer ones had been closedsince the closed window' widgets had been destroyed--an unanticipated usage modewhich has been present since at least the second editionand which ' like to chalk up to operator errorbut which was really lesson in state retentionthe same phenomenon existed in the font dialog--its most recently opened instance stole the showthough its brute force exception handler prevented program aborts (it issued error pop ups insteadto fixthe change and font complete gui programs