changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate ui/src/lib.rs

changeset 16: af615d1895cb
author: ellis <ellis@rwest.io>
date: Fri, 26 May 2023 21:59:40 -0400
permissions: -rw-r--r--
description: refactoring, ui stuff (goin with slint for DSL power)
16
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
1
 #[cfg(target_arch="wasm32")]
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
2
 use wasm_bindgen::prelude::*;
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
3
 use winit::{
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
4
     event::*,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
5
     event_loop::{ControlFlow, EventLoop},
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
6
     window::WindowBuilder,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
7
 };
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
8
 
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
9
 #[cfg_attr(target_arch="wasm32", wasm_bindgen(start))]
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
10
 pub fn run() {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
11
   cfg_if::cfg_if! {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
12
     if #[cfg(target_arch = "wasm32")] {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
13
       std::panic::set_hook(Box::new(console_error_panic_hook::hook));
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
14
       console_log::init_with_level(log::Level::Warn).expect("Couldn't initialize logger");
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
15
     } else {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
16
       env_logger::init();
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
17
     }
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
18
   }
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
19
   let event_loop = EventLoop::new();
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
20
   let window = WindowBuilder::new().build(&event_loop).unwrap();
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
21
 
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
22
   #[cfg(target_arch = "wasm32")]
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
23
 {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
24
     // Winit prevents sizing with CSS, so we have to set
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
25
     // the size manually when on web.
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
26
     use winit::dpi::PhysicalSize;
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
27
     window.set_inner_size(PhysicalSize::new(450, 400));
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
28
     
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
29
     use winit::platform::web::WindowExtWebSys;
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
30
     web_sys::window()
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
31
         .and_then(|win| win.document())
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
32
         .and_then(|doc| {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
33
             let dst = doc.get_element_by_id("wasm-example")?;
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
34
             let canvas = web_sys::Element::from(window.canvas());
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
35
             dst.append_child(&canvas).ok()?;
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
36
             Some(())
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
37
         })
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
38
         .expect("Couldn't append canvas to document body.");
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
39
 }
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
40
     event_loop.run(move |event, _, control_flow| match event {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
41
         Event::WindowEvent {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
42
             ref event,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
43
             window_id,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
44
         } if window_id == window.id() => match event {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
45
             WindowEvent::CloseRequested
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
46
             | WindowEvent::KeyboardInput {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
47
                 input:
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
48
                     KeyboardInput {
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
49
                         state: ElementState::Pressed,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
50
                         virtual_keycode: Some(VirtualKeyCode::Escape),
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
51
                         ..
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
52
                     },
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
53
                 ..
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
54
             } => *control_flow = ControlFlow::Exit,
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
55
             _ => {}
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
56
         },
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
57
         _ => {}
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
58
     });
af615d1895cb refactoring, ui stuff (goin with slint for DSL power)
ellis <ellis@rwest.io>
parents:
diff changeset
59
 }