one for each active server transferand one for each active offline save file load or deletion pymailgui supports mail save filesautomatic saves of sent messagesconfigurable fonts and colorsviewing and adding attachmentsmain message text extractionplain text conversion for htmland much more to make this case study easier to understandlet' begin by seeing what pymailgui actually does--its user interaction and email processing functionality--before jumping into the python code that implements that behavior as you read this partfeel free to jump ahead to the code listings that appear after the screenshotsbut be sure to read this sectiontoothisalong with the prior discussion of version changesis where some subtleties of pymailgui' design are explained after this sectionyou are invited to study the system' python source code listings on your own for better and more complete explanation than can be crafted in english getting started okit' time to take the system out for test drive ' going to run the following demo on my windows laptop it may look slightly different on different platforms (including other versions of windowsthanks to the gui toolkit' native-look-and-feel supportbut the basic functionality will be similar pymailgui is python/tkinter programrun by executing its top-level script filepymailgui py like other python programspymailgui can be started from the system command lineby clicking on its filename icon in file explorer interfaceor by pressing its button in the pydemos or pygadgets launcher bar however it is startedthe first window pymailgui presents is captured in figure - shown after running load to fetch mail headers from my isp' email server notice the "pywindow iconthis is the handiwork of window protocol tools we wrote earlier in this book also notice the non-ascii subject lines herei'll talk about internationalization features later this is the pymailgui main window--every operation starts here it consists ofa help button (the bar at the topa clickable email list area for fetched emails (the middle sectiona button bar at the bottom for processing messages selected in the list area in normal operationusers load their emailselect an email from the list area by clicking on itand press button at the bottom to process it no mail messages are shown initiallywe need to first load them with the load button-- simple password input dialog is displayeda busy dialog appears that counts down message headers being downloaded to give status indicationand the index is filled with messages ready to be selected the pymailgui client