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 with-
close()
only works whenDrawing
represents a window, but that won't always be the case -
quit()
might work, but it might confuse some people who expect that to end the entire process -
bye()
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::exit
because the subprocess gets orphaned when using the multiprocessed backend - To test on any platform, you can force the multiprocessed backend by changing
backend.rs
to 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).