diff --git a/gui/src/installer/message.rs b/gui/src/installer/message.rs index 291c144e..0c8a5ba2 100644 --- a/gui/src/installer/message.rs +++ b/gui/src/installer/message.rs @@ -8,6 +8,7 @@ use crate::hw::HardwareWallet; pub enum Message { Event(iced_native::Event), Exit(PathBuf), + Clibpboard(String), Next, Previous, Install, diff --git a/gui/src/installer/mod.rs b/gui/src/installer/mod.rs index 6199d624..f75a9304 100644 --- a/gui/src/installer/mod.rs +++ b/gui/src/installer/mod.rs @@ -4,7 +4,7 @@ mod step; mod view; use iced::pure::Element; -use iced::{Command, Subscription}; +use iced::{clipboard, Command, Subscription}; use iced_native::{window, Event}; use minisafe::miniscript::bitcoin; @@ -74,6 +74,7 @@ impl Installer { pub fn update(&mut self, message: Message) -> Command { match message { + Message::Clibpboard(s) => clipboard::write(s), Message::Next => { let current_step = self .steps diff --git a/gui/src/installer/step/descriptor.rs b/gui/src/installer/step/descriptor.rs index fb409948..286a63f5 100644 --- a/gui/src/installer/step/descriptor.rs +++ b/gui/src/installer/step/descriptor.rs @@ -348,7 +348,7 @@ impl Step for RegisterDescriptor { }; Command::none() } - fn apply(&mut self, ctx: &mut Context) -> bool { + fn apply(&mut self, _ctx: &mut Context) -> bool { true } fn load(&self) -> Command { diff --git a/gui/src/installer/view.rs b/gui/src/installer/view.rs index ed057902..93047802 100644 --- a/gui/src/installer/view.rs +++ b/gui/src/installer/view.rs @@ -169,7 +169,16 @@ pub fn register_descriptor<'a>( layout( column() .push(text("Register descriptor").bold().size(50)) - .push(text(descriptor).small()) + .push( + column() + .push(text(descriptor).small()) + .push( + button::transparent_border(Some(icon::clipboard_icon()), "Copy") + .on_press(Message::Clibpboard(descriptor.to_string())), + ) + .spacing(10) + .align_items(Alignment::Center), + ) .push_maybe(error.map(|e| card::error("Failed to import xpub", &e.to_string()))) .push(if !hws.is_empty() { column()