diff options
Diffstat (limited to 'src/gui/mod.rs')
| -rw-r--r-- | src/gui/mod.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 68f8ab3..2701e5c 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -3,12 +3,15 @@ use std::rc::Rc; use gtk::prelude::*; use gtk::Application; +use gtk::gdk; use self::state::View; mod state; mod welcome; mod generate; +mod search; +mod load; pub fn run() { let app = Application::builder() @@ -16,6 +19,16 @@ pub fn run() { .build(); app.connect_activate(|app| { + let provider = gtk::CssProvider::new(); + let style = include_bytes!("style.css"); + provider.load_from_data(style).expect("failed to load default style"); + + gtk::StyleContext::add_provider_for_screen( + &gdk::Screen::default().expect("error initializing gtk css provider"), + &provider, + gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + ); + let window = gtk::ApplicationWindow::builder() .application(app) .default_width(800) @@ -23,17 +36,24 @@ pub fn run() { .title("Index Search") .build(); + window.set_widget_name("mainwindow"); + let mut vm = state::ViewManager::new(window); let welcome = Rc::new(Mutex::new(welcome::Welcome::new())); vm.add_view(welcome.clone()); let generate = Rc::new(Mutex::new(generate::Generate::new())); vm.add_view(generate.clone()); + let load = Rc::new(Mutex::new(load::Load::new())); + vm.add_view(load.clone()); + let search = Rc::new(Mutex::new(search::Search::new())); + vm.add_view(search.clone()); let vm = Rc::new(vm); welcome.lock().unwrap().set_vm(Rc::clone(&vm)); generate.lock().unwrap().set_vm(Rc::clone(&vm)); + load.lock().unwrap().set_vm(Rc::clone(&vm)); + search.lock().unwrap().set_vm(Rc::clone(&vm)); vm.set_current_view("welcome"); - vm.get_window().show_all(); }); app.run(); |