From e0feae054619a88a90b2a07c1228eb85b651e0a8 Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sun, 26 May 2024 12:32:23 +0200 Subject: [PATCH] Fix dialog entry buffers --- src/ui/sheet_edit_dialog.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/ui/sheet_edit_dialog.rs b/src/ui/sheet_edit_dialog.rs index 17ef9a5..052e07b 100644 --- a/src/ui/sheet_edit_dialog.rs +++ b/src/ui/sheet_edit_dialog.rs @@ -3,6 +3,7 @@ use std::sync::Arc; use relm4::{ component::{AsyncComponent, AsyncComponentParts, Connector}, + gtk::EntryBuffer, prelude::*, AsyncComponentSender, }; @@ -14,8 +15,8 @@ pub struct SheetEditDialogModel { database: Arc, hidden: bool, sheet: Option, - sheet_name: String, - sheet_composer: String, + name_entry_buffer: EntryBuffer, + composer_entry_buffer: EntryBuffer, is_book: bool, book_sheets: Vec<(String, String, i64)>, alert_empty_fields: Connector, @@ -62,8 +63,7 @@ impl AsyncComponent for SheetEditDialogModel { set_text: "Sheet name" }, gtk::Entry { - #[watch] - set_text: &model.sheet_name, + set_buffer: &model.name_entry_buffer, set_width_chars: 40, }, }, @@ -73,8 +73,7 @@ impl AsyncComponent for SheetEditDialogModel { set_text: "Sheet composer" }, gtk::Entry { - #[watch] - set_text : &model.sheet_composer, + set_buffer: &model.composer_entry_buffer, set_hexpand: true, }, }, @@ -153,8 +152,8 @@ impl AsyncComponent for SheetEditDialogModel { database: params.database, hidden: false, sheet: Some(sheet), - sheet_name, - sheet_composer, + name_entry_buffer: EntryBuffer::new(Some(sheet_name)), + composer_entry_buffer: EntryBuffer::new(Some(sheet_composer)), is_book, book_sheets: Vec::new(), alert_empty_fields: Alert::builder().transient_for(&root).launch(AlertSettings { @@ -183,10 +182,17 @@ impl AsyncComponent for SheetEditDialogModel { match msg { SheetEditDialogInput::Accept => { if let Some(_sheet) = &self.sheet { - if self.sheet_name.is_empty() || self.sheet_composer.is_empty() { + let sheet_name_string = self.name_entry_buffer.text(); + let sheet_name = sheet_name_string.trim(); + + let sheet_composer_string = self.composer_entry_buffer.text(); + let sheet_composer = sheet_composer_string.trim(); + + if sheet_name.is_empty() || sheet_composer.is_empty() { self.alert_empty_fields.emit(AlertMsg::Show); return; } + // match sheet.kind.borrow_mut() { // crate::sheet::SheetKind::Sheet { // name,