57 lines
1.6 KiB
Rust
57 lines
1.6 KiB
Rust
use gtk::prelude::*;
|
|
use gtk::{self, glib, Application};
|
|
mod graph_widget;
|
|
|
|
const APP_ID: &str = "com.chloechristine.ftt2midi";
|
|
|
|
fn main() -> glib::ExitCode {
|
|
// Create a new application
|
|
let app = Application::builder().application_id(APP_ID).build();
|
|
|
|
// Connect to the "activate" signal of 'ftt2midi'
|
|
app.connect_activate(build_ui);
|
|
|
|
// Run the application
|
|
app.run()
|
|
}
|
|
|
|
fn build_ui(app: &Application) {
|
|
let ui_src = include_str!("resources/main_window.ui");
|
|
println!("{}", ui_src);
|
|
let builder = gtk::Builder::from_string(ui_src);
|
|
|
|
// Bind to UI elements defined in template
|
|
let window = builder
|
|
.object::<gtk::ApplicationWindow>("main_window")
|
|
.expect("Couldn't bind to window :(");
|
|
|
|
let main_grid = builder
|
|
.object::<gtk::Grid>("main_grid")
|
|
.expect("Couldn't bind to main_grid");
|
|
|
|
let input_selector = builder
|
|
.object::<gtk::MenuButton>("input_selector")
|
|
.expect("Couldn't bind to input_selector");
|
|
|
|
let midi_device_selector = builder
|
|
.object::<gtk::MenuButton>("midi_device_selector")
|
|
.expect("Couldn't bind to midi_device_selector");
|
|
|
|
let start_button = builder
|
|
.object::<gtk::Button>("start_button")
|
|
.expect("Couldn't bind to start_button");
|
|
|
|
let fft_graph = graph_widget::GraphWidget::new();
|
|
fft_graph.set_height_request(500);
|
|
fft_graph.set_width_request(500);
|
|
main_grid.attach(&fft_graph, 0, 0, 1, 1);
|
|
//main_grid.attach_next_to(&fft_graph, Some(&control_deck), gtk::PositionType::Top, 1, 0);
|
|
|
|
//start_button.connect_clicked()
|
|
|
|
|
|
window.set_application(Some(app));
|
|
|
|
// Present the window
|
|
window.present();
|
|
} |