Adds a cancel button. Function using psutil looks for all python (and wgrib2) processes and terminates running pids if the button is clicked. Seems to work as intended, although some times there seems to be a little lag, or you may have to click it twice. Have not been able to test rigorously with the Mesowest or update_dir_list scripts.
Moved code in launch_simulation to two functions: one the "original" just in case, and the other implementing the cancelation capabilities.
Several ancillary functions (including process monitoring) moved to standalone utils.py file to clean things up.
obs_placefile.py, munger.py, update_dir_list.py: attempt to determine which system this code is running on, and set up directories accordingly.
Added a separate text div at the bottom of the app to output which script(s) are running, and how long they've been running for. Wanted to avoid overwriting clock-output once the simulation starts. We could simply hide the status-output div once all scripts have finished.
Nexrad.py: In order to use subprocess to execute, strings are passed into the NexradDownloader(). Code block with: if self.download evaluated to True (boolean) for both self.download = 'True' and self.download = 'False' (strings). Added ast.literal_eval() to cast to a bool which seems to work.
Was unable to figure out how to pass self.radar_files_dict back out to the application...
This PR: