turtle
turtle copied to clipboard
Add a way to close the window
Currently, there is no way to close the window programmatically opened by Turtle::new() or Drawing::new(). We should add a fn destroy(self) method to Drawing which allows for this.
Implementation: The destroy method can send a request to the renderer process which uses EventLoopNotifier to tell the event loop to exit. (More mentoring instructions can be provided if requested.)
To-Do
- [ ] Bikeshed the name.
destroy()was the best I could come up withclose()only works whenDrawingrepresents a window, but that won't always be the casequit()might work, but it might confuse some people who expect that to end the entire processbye()is used by the Python turtle module and some LOGO implementation, but callingdrawing.bye()probably doesn't read very well...- Other suggestions are welcome!
- [x] Resolve TODO comment in
examples/runtest.rs(needs to be tested on MacOS)- The window currently stays open even after
process::exitbecause the subprocess gets orphaned when using the multiprocessed backend - To test on any platform, you can force the multiprocessed backend by changing
backend.rsto contain the following:
- The window currently stays open even after
cfg_if::cfg_if! {
if #[cfg(any(feature = "test", test))] {
mod test;
pub use test::*;
// } else if #[cfg(target_os = "macos")] {
} else {
mod multiprocessed;
pub use multiprocessed::*;
//
// } else {
// mod multithreaded;
// pub use multithreaded::*;
}
}
Re-opening until this method is stabilized. We need to decide on the name (destroy is fine for now but maybe there is a better option?), and we need to expand on the docs and test the panic that occurs when you use a turtle after its drawing has been destroyed (make sure the panic message is helpful).