Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
60
Task/Animation/Rust/animation.rust
Normal file
60
Task/Animation/Rust/animation.rust
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#[cfg(feature = "gtk")]
|
||||
mod graphical {
|
||||
extern crate gtk;
|
||||
|
||||
use self::gtk::traits::*;
|
||||
use self::gtk::{Inhibit, Window, WindowType};
|
||||
use std::ops::Not;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
pub fn create_window() {
|
||||
gtk::init().expect("Failed to initialize GTK");
|
||||
|
||||
let window = Window::new(WindowType::Toplevel);
|
||||
window.connect_delete_event(|_, _| {
|
||||
gtk::main_quit();
|
||||
Inhibit(false)
|
||||
});
|
||||
let button = gtk::Button::new_with_label("Hello World! ");
|
||||
window.add(&button);
|
||||
|
||||
let lock = Arc::new(RwLock::new(false));
|
||||
|
||||
let lock_button = lock.clone();
|
||||
button.connect_clicked(move |_| {
|
||||
let mut reverse = lock_button.write().unwrap();
|
||||
*reverse = reverse.not();
|
||||
});
|
||||
|
||||
let lock_thread = lock.clone();
|
||||
gtk::timeout_add(100, move || {
|
||||
let reverse = lock_thread.read().unwrap();
|
||||
let mut text = button.get_label().unwrap();
|
||||
let len = &text.len();
|
||||
|
||||
if *reverse {
|
||||
let begin = &text.split_off(1);
|
||||
text.insert_str(0, begin);
|
||||
} else {
|
||||
let end = &text.split_off(len - 1);
|
||||
text.insert_str(0, end);
|
||||
}
|
||||
|
||||
button.set_label(&text);
|
||||
|
||||
gtk::Continue(true)
|
||||
});
|
||||
|
||||
window.show_all();
|
||||
gtk::main();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[cfg(feature = "gtk")]
|
||||
fn main() {
|
||||
graphical::create_window();
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "gtk"))]
|
||||
fn main() {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue