From: Olaf Wintermann Date: Sun, 7 Jun 2026 18:13:44 +0000 (+0200) Subject: update app notebooklist when it changes X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;ds=sidebyside;p=note.git update app notebooklist when it changes --- diff --git a/application/src/main.rs b/application/src/main.rs index f0d79e9..81403b7 100644 --- a/application/src/main.rs +++ b/application/src/main.rs @@ -36,7 +36,7 @@ use std::env; use entity::collection::{create_notebook_hierarchy, Node}; use ui_rs::{action, application, ui}; use ui_rs::ui::*; -use crate::backend::{Backend, BackendHandle}; +use crate::backend::{Backend, BackendHandle, BroadcastMessage}; use crate::window::*; fn main() { @@ -60,9 +60,11 @@ fn main() { }; let (backend_handle, join_handle) = backend.start(); + let brx = backend_handle.btx.subscribe(); let mut app = App { backend: backend_handle, + broadcast_rx: brx, notebooks: notebooks, }; ui::app_run(&mut app); @@ -105,6 +107,7 @@ fn init_backend() -> Result { struct App { backend: BackendHandle, + broadcast_rx: tokio::sync::broadcast::Receiver, notebooks: Vec, } @@ -128,7 +131,12 @@ impl Application for App { impl App { #[action] pub fn message(&mut self, _action: &ActionEvent) { - println!("app message handler"); + while let Ok(msg) = self.broadcast_rx.try_recv() { + match msg { + BroadcastMessage::NotebookStructureUpdate(nodes) => self.notebooks = nodes, + _ => {} + } + } } } @@ -144,7 +152,7 @@ fn create_toolbar(app: &AppContext) { app.toolbar_add_default("new_note", ToolbarItemPosition::Left); app.toolbar_appmenu(|menu|{ - menu.item("New Window").onclick(|f| new_app_window() ).create(); + menu.item("New Window").onclick(|_| new_app_window() ).create(); }); } diff --git a/ui-rs-derive/src/lib.rs b/ui-rs-derive/src/lib.rs index fd4d011..83d5505 100644 --- a/ui-rs-derive/src/lib.rs +++ b/ui-rs-derive/src/lib.rs @@ -1,6 +1,6 @@ use proc_macro::TokenStream; use quote::quote; -use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, GenericArgument, ImplItem, ItemImpl, Lit, Meta, PathArguments, Type}; +use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, ImplItem, ItemImpl, Lit, Meta, Type}; #[proc_macro_derive(UiModel, attributes(bind))] pub fn derive_ui_model(input: TokenStream) -> TokenStream { diff --git a/ui-rs/src/ui/application.rs b/ui-rs/src/ui/application.rs index adbec18..3791efb 100644 --- a/ui-rs/src/ui/application.rs +++ b/ui-rs/src/ui/application.rs @@ -41,7 +41,7 @@ pub trait AppActions { pub trait Application: AppActions { fn on_startup(&mut self, app: &AppContext); - fn on_new_window(&mut self, app: &AppContext) {} + fn on_new_window(&mut self, _app: &AppContext) {} fn on_exit(&mut self, _app: &AppContext) { } }