aboutsummaryrefslogtreecommitdiff
path: root/src/gui/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/mod.rs')
-rw-r--r--src/gui/mod.rs22
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();