From b7e9dca87cd9b8b566966403cd6a7ce9bdaa67de Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Wed, 11 May 2022 14:09:31 +0800 Subject: [PATCH 1/7] fix: add eval script failed log --- packages/desktop/src/desktop_context.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index 0b37910b0..93aad7ee8 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -193,9 +193,11 @@ pub(super) fn handler( DevTool => {} - Eval(code) => webview - .evaluate_script(code.as_str()) - .expect("eval shouldn't panic"), + Eval(code) => { + if let Err(e) = webview.evaluate_script(code.as_str()) { + log::error!("Eval script error: {e}"); + } + } } } From 8aadeff9d207f57f09b45d95e6b4d4190f32ef1e Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Wed, 11 May 2022 14:29:31 +0800 Subject: [PATCH 2/7] fix: add eval script failed log --- packages/desktop/src/desktop_context.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index 93aad7ee8..6479e825a 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -195,7 +195,8 @@ pub(super) fn handler( Eval(code) => { if let Err(e) = webview.evaluate_script(code.as_str()) { - log::error!("Eval script error: {e}"); + // we can't panic this error. + log::warn!("Eval script error: {e}"); } } } From 4f55fcb84ab088a544ade666cc04f58f3c9cd9e9 Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Wed, 11 May 2022 14:49:46 +0800 Subject: [PATCH 3/7] feat: use_window add `set_zoom_level` --- packages/desktop/src/desktop_context.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index 6479e825a..39fd5fd16 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -115,6 +115,11 @@ impl DesktopContext { let _ = self.proxy.send_event(SetDecorations(decoration)); } + /// set window zoom level + pub fn set_zoom_level(&self, scale_factor: f64) { + let _ = self.proxy.send_event(SetZoomLevel(scale_factor)); + } + /// opens DevTool window pub fn devtool(&self) { let _ = self.proxy.send_event(DevTool); @@ -148,6 +153,8 @@ pub enum UserWindowEvent { SetTitle(String), SetDecorations(bool), + SetZoomLevel(f64), + DevTool, Eval(String), @@ -191,6 +198,8 @@ pub(super) fn handler( SetTitle(content) => window.set_title(&content), SetDecorations(state) => window.set_decorations(state), + SetZoomLevel(scale_factor) => webview.zoom(scale_factor), + DevTool => {} Eval(code) => { From 77a92a1cf622306ee3bfcd259ccf8d8a0bc996ea Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Wed, 11 May 2022 14:56:37 +0800 Subject: [PATCH 4/7] feat: use_window add `print` & `devtool` --- packages/desktop/src/desktop_context.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index 39fd5fd16..3d4bf0b26 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -120,6 +120,11 @@ impl DesktopContext { let _ = self.proxy.send_event(SetZoomLevel(scale_factor)); } + /// launch print modal + pub fn print(&self) { + let _ = self.proxy.send_event(Print); + } + /// opens DevTool window pub fn devtool(&self) { let _ = self.proxy.send_event(DevTool); @@ -155,6 +160,7 @@ pub enum UserWindowEvent { SetZoomLevel(f64), + Print, DevTool, Eval(String), @@ -200,7 +206,13 @@ pub(super) fn handler( SetZoomLevel(scale_factor) => webview.zoom(scale_factor), - DevTool => {} + Print => { + if let Err(e) = webview.print() { + // we can't panic this error. + log::warn!("Open print modal failed: {e}"); + } + } + DevTool => webview.open_devtools(), Eval(code) => { if let Err(e) = webview.evaluate_script(code.as_str()) { From 77c22161b9ef9f1755c17fb3fea4293ce1c27ebe Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Thu, 12 May 2022 00:03:42 +0800 Subject: [PATCH 5/7] example: add `window_zoom` example --- examples/window_zoom.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 examples/window_zoom.rs diff --git a/examples/window_zoom.rs b/examples/window_zoom.rs new file mode 100644 index 000000000..792ab6de5 --- /dev/null +++ b/examples/window_zoom.rs @@ -0,0 +1,23 @@ +use dioxus::desktop::use_window; +use dioxus::prelude::*; + +fn main() { + dioxus::desktop::launch(app); +} + +fn app(cx: Scope) -> Element { + let window = use_window(&cx); + + let level = use_state(&cx, || 1.0); + + window.set_zoom_level(*level.get()); + cx.render(rsx! { + input { + r#type: "number", + value: "{level_display}", + oninput: |e| { + level.set(e.value.parse::().unwrap_or_default()) + } + } + }) +} From 31a2ded2b9ad37f2ce4bc9492f4fea0afb6e9d53 Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Thu, 12 May 2022 00:05:59 +0800 Subject: [PATCH 6/7] example: add `window_zoom` example --- examples/window_zoom.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/window_zoom.rs b/examples/window_zoom.rs index 792ab6de5..3d185c78c 100644 --- a/examples/window_zoom.rs +++ b/examples/window_zoom.rs @@ -14,7 +14,7 @@ fn app(cx: Scope) -> Element { cx.render(rsx! { input { r#type: "number", - value: "{level_display}", + value: "{level}", oninput: |e| { level.set(e.value.parse::().unwrap_or_default()) } From 3f4897cd1c63f2c5d0600c9f86a62a90beb4bd95 Mon Sep 17 00:00:00 2001 From: YuKun Liu <41265098+mrxiaozhuox@users.noreply.github.com> Date: Thu, 12 May 2022 08:41:30 +0800 Subject: [PATCH 7/7] example: update example --- examples/window_zoom.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/window_zoom.rs b/examples/window_zoom.rs index 3d185c78c..cfb831550 100644 --- a/examples/window_zoom.rs +++ b/examples/window_zoom.rs @@ -9,14 +9,14 @@ fn app(cx: Scope) -> Element { let window = use_window(&cx); let level = use_state(&cx, || 1.0); - - window.set_zoom_level(*level.get()); cx.render(rsx! { input { r#type: "number", value: "{level}", oninput: |e| { - level.set(e.value.parse::().unwrap_or_default()) + let num = e.value.parse::().unwrap_or(1.0); + level.set(num); + window.set_zoom_level(num); } } })