aboutsummaryrefslogtreecommitdiff
path: root/src/gui/mod.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-07-26 21:19:59 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2023-07-26 21:19:59 +0200
commit61ac9375b4a35878576ac2727c5210cd9fc51a92 (patch)
tree5e147ad0c60b35a83baab3f84143d3c40a09cdcd /src/gui/mod.rs
parent7679fcc3a0c4fadea00a1a320938851b1518028d (diff)
add gtk3 gui
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();