1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-03 07:10:04 -04:00

eframe web: access app from WebHandle (#1886)

Co-authored-by: Stanislav <enomado@users.noreply.github.com>
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
Stanislav
2022-09-09 09:22:46 +03:00
committed by GitHub
parent e0c7533ede
commit ebc4fc866d
8 changed files with 80 additions and 1 deletions

View File

@@ -1,5 +1,8 @@
use std::sync::Arc;
#[cfg(target_arch = "wasm32")]
use core::any::Any;
use eframe::egui_glow;
use egui::mutex::Mutex;
use egui_glow::glow;
@@ -48,6 +51,11 @@ impl eframe::App for Custom3d {
self.rotating_triangle.lock().destroy(gl);
}
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
impl Custom3d {

View File

@@ -1,5 +1,8 @@
use std::sync::Arc;
#[cfg(target_arch = "wasm32")]
use core::any::Any;
use eframe::{
egui_wgpu::{self, wgpu},
wgpu::util::DeviceExt,
@@ -117,6 +120,11 @@ impl eframe::App for Custom3d {
});
});
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
impl Custom3d {

View File

@@ -1,6 +1,9 @@
use egui_extras::RetainedImage;
use poll_promise::Promise;
#[cfg(target_arch = "wasm32")]
use core::any::Any;
struct Resource {
/// HTTP response
response: ehttp::Response,
@@ -106,6 +109,11 @@ impl eframe::App for HttpApp {
}
});
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
fn ui_url(ui: &mut egui::Ui, frame: &mut eframe::Frame, url: &mut String) -> bool {

View File

@@ -32,7 +32,6 @@ pub struct WebHandle {
#[wasm_bindgen]
impl WebHandle {
#[wasm_bindgen]
#[cfg(target_arch = "wasm32")]
pub fn stop_web(&self) -> Result<(), wasm_bindgen::JsValue> {
let mut app = self.handle.lock();
let res = app.destroy();
@@ -43,6 +42,12 @@ impl WebHandle {
res
}
#[wasm_bindgen]
pub fn set_some_content_from_javasript(&mut self, _some_data: &str) {
let _app = self.handle.lock().app_mut::<WrapApp>();
// _app.data = some_data;
}
}
#[cfg(target_arch = "wasm32")]

View File

@@ -3,6 +3,9 @@ use egui_demo_lib::is_mobile;
#[cfg(feature = "glow")]
use eframe::glow;
#[cfg(target_arch = "wasm32")]
use core::any::Any;
#[derive(Default)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
struct EasyMarkApp {
@@ -13,6 +16,11 @@ impl eframe::App for EasyMarkApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
self.editor.panels(ctx);
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
// ----------------------------------------------------------------------------
@@ -27,6 +35,11 @@ impl eframe::App for DemoApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
self.demo_windows.ui(ctx);
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
// ----------------------------------------------------------------------------
@@ -46,6 +59,11 @@ impl eframe::App for FractalClockApp {
.ui(ui, Some(crate::seconds_since_midnight()));
});
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
// ----------------------------------------------------------------------------
@@ -70,6 +88,11 @@ impl eframe::App for ColorTestApp {
});
});
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
// ----------------------------------------------------------------------------
@@ -225,6 +248,11 @@ impl eframe::App for WrapApp {
custom3d.on_exit(gl);
}
}
#[cfg(target_arch = "wasm32")]
fn as_any_mut(&mut self) -> &mut dyn Any {
&mut *self
}
}
impl WrapApp {