summaryrefslogtreecommitdiff
path: root/src/gui.rs
blob: de8a3220a2cc5170fdc532567a7d4f2a4f72fe77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use gtk;
use gtk::prelude::*;

pub fn start_gui() -> Result<(), String> {
    try!(gtk::init().map_err(|_| "Failed to initialize GTK."));
        
    // Create the main window.
    let window = gtk::Window::new(gtk::WindowType::Toplevel);
    window.set_title("Musician Training");

    let pa = ::audio::init().expect("Could not init portaudio");
    let audio_devices = try!(::audio::get_device_list(&pa).map_err(|e| e.to_string()));
    let dropdown = gtk::ComboBoxText::new();
    for (index, name) in audio_devices {
        dropdown.append(Some(format!("{}", index).as_ref()), name.as_ref());
    }
    window.add(&dropdown);
    window.set_default_size(300, 300);

    window.show_all();

    window.connect_delete_event(|_, _| {
        gtk::main_quit();
        gtk::prelude::Inhibit(false)
    });

    gtk::main();
    Ok(())
}