Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn add_cargo_handler(
- button: >k::Button,
- project_path_str: String,
- args: Vec<&str>,
- build_term: Rc<RefCell<gtk::VteTerminal>>,
- current_pid: Rc<Cell<i32>>)
- {
- button.connect(gtk::signals::Clicked::new(&mut move || {
- match build_term.borrow_mut().fork_command(project_path_str.as_slice(), args.as_slice()) {
- Ok(pid) => current_pid.set(pid),
- Err(s) => println!("{}", s)
- }
- }));
- }
- fn create_builder(project_path_str: &str) -> gtk::Box {
- let run_button = gtk::Button::new_with_label("Run").unwrap();
- let build_button = gtk::Button::new_with_label("Build").unwrap();
- let test_button = gtk::Button::new_with_label("Test").unwrap();
- let clean_button = gtk::Button::new_with_label("Clean").unwrap();
- let mut build_buttons = gtk::Box::new(gtk::Orientation::Horizontal, 0).unwrap();
- build_buttons.add(&run_button);
- build_buttons.add(&build_button);
- build_buttons.add(&test_button);
- build_buttons.add(&clean_button);
- let build_term = gtk::VteTerminal::new().unwrap();
- let mut builder = gtk::Box::new(gtk::Orientation::Vertical, 0).unwrap();
- builder.add(&build_buttons);
- builder.pack_start(&build_term, true, true, 0);
- let build_term_rc = Rc::new(RefCell::new(build_term));
- let current_pid_rc = Rc::new(Cell::new(-1));
- add_cargo_handler(&run_button, String::from_str(project_path_str),
- vec!["cargo", "run"], build_term_rc.clone(), current_pid_rc.clone());
- add_cargo_handler(&build_button, String::from_str(project_path_str),
- vec!["cargo", "build", "--release"], build_term_rc.clone(), current_pid_rc.clone());
- add_cargo_handler(&test_button, String::from_str(project_path_str),
- vec!["cargo", "test"], build_term_rc.clone(), current_pid_rc.clone());
- add_cargo_handler(&clean_button, String::from_str(project_path_str),
- vec!["cargo", "clean"], build_term_rc.clone(), current_pid_rc.clone());
- builder.show_all();
- builder
- }
Advertisement
Add Comment
Please, Sign In to add comment