From 0fe143a383f85a6e29b7b76c2992a78a3e157290 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sun, 9 Feb 2025 08:14:46 +0100 Subject: [PATCH] editor: Show tooltips in selectors --- src/editor/ensemble_selector_popover.rs | 9 +++------ src/editor/instrument_selector_popover.rs | 2 ++ src/editor/performer_role_selector_popover.rs | 6 +++++- src/editor/person_editor.rs | 2 +- src/editor/person_selector_popover.rs | 2 ++ src/editor/recording_editor.rs | 12 ++++++++++++ src/editor/role_selector_popover.rs | 2 ++ src/editor/work_selector_popover.rs | 4 ++++ 8 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/editor/ensemble_selector_popover.rs b/src/editor/ensemble_selector_popover.rs index bf3a90e..e13fc39 100644 --- a/src/editor/ensemble_selector_popover.rs +++ b/src/editor/ensemble_selector_popover.rs @@ -146,12 +146,7 @@ impl MusicusEnsembleSelectorPopover { fn search(&self, search: &str) { let imp = self.imp(); - let ensembles = imp - .library - .get() - .unwrap() - .search_ensembles(search) - .unwrap(); + let ensembles = imp.library.get().unwrap().search_ensembles(search).unwrap(); imp.list_box.remove_all(); @@ -163,6 +158,8 @@ impl MusicusEnsembleSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&ensemble.to_string())); + let ensemble = ensemble.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { diff --git a/src/editor/instrument_selector_popover.rs b/src/editor/instrument_selector_popover.rs index 4196610..6edbbde 100644 --- a/src/editor/instrument_selector_popover.rs +++ b/src/editor/instrument_selector_popover.rs @@ -163,6 +163,8 @@ impl MusicusInstrumentSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&instrument.to_string())); + let instrument = instrument.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { diff --git a/src/editor/performer_role_selector_popover.rs b/src/editor/performer_role_selector_popover.rs index c4752a0..313a2ab 100644 --- a/src/editor/performer_role_selector_popover.rs +++ b/src/editor/performer_role_selector_popover.rs @@ -212,6 +212,8 @@ impl MusicusPerformerRoleSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&role.to_string())); + let role = role.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { @@ -256,12 +258,14 @@ impl MusicusPerformerRoleSelectorPopover { for instrument in &instruments { let row = MusicusActivatableRow::new( >k::Label::builder() - .label(instrument.name.get()) + .label(instrument.to_string()) .halign(gtk::Align::Start) .ellipsize(pango::EllipsizeMode::Middle) .build(), ); + row.set_tooltip_text(Some(&instrument.to_string())); + let instrument = instrument.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { diff --git a/src/editor/person_editor.rs b/src/editor/person_editor.rs index 884a183..b43ec41 100644 --- a/src/editor/person_editor.rs +++ b/src/editor/person_editor.rs @@ -96,7 +96,7 @@ impl MusicusPersonEditor { } #[template_callback] - fn save(&self, _: >k::Button) { + fn save(&self) { let library = self.imp().library.get().unwrap(); let name = self.imp().name_editor.translation(); diff --git a/src/editor/person_selector_popover.rs b/src/editor/person_selector_popover.rs index a05f165..e7ee69b 100644 --- a/src/editor/person_selector_popover.rs +++ b/src/editor/person_selector_popover.rs @@ -158,6 +158,8 @@ impl MusicusPersonSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&person.to_string())); + let person = person.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { diff --git a/src/editor/recording_editor.rs b/src/editor/recording_editor.rs index dd4b9ee..34e556c 100644 --- a/src/editor/recording_editor.rs +++ b/src/editor/recording_editor.rs @@ -219,6 +219,18 @@ impl MusicusRecordingEditor { obj } + pub fn connect_created( + &self, + f: F, + ) -> glib::SignalHandlerId { + self.connect_local("created", true, move |values| { + let obj = values[0].get::().unwrap(); + let recording = values[1].get::().unwrap(); + f(&obj, recording); + None + }) + } + #[template_callback] fn select_work(&self, _: &adw::ActionRow) { self.imp().work_selector_popover.get().unwrap().popup(); diff --git a/src/editor/role_selector_popover.rs b/src/editor/role_selector_popover.rs index 8a91a51..7bf85c9 100644 --- a/src/editor/role_selector_popover.rs +++ b/src/editor/role_selector_popover.rs @@ -158,6 +158,8 @@ impl MusicusRoleSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&role.to_string())); + let role = role.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { diff --git a/src/editor/work_selector_popover.rs b/src/editor/work_selector_popover.rs index e9cad3d..1de3568 100644 --- a/src/editor/work_selector_popover.rs +++ b/src/editor/work_selector_popover.rs @@ -206,6 +206,8 @@ impl MusicusWorkSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&person.to_string())); + let person = person.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| { @@ -256,6 +258,8 @@ impl MusicusWorkSelectorPopover { .build(), ); + row.set_tooltip_text(Some(&work.name.get())); + let work = work.clone(); let obj = self.clone(); row.connect_activated(move |_: &MusicusActivatableRow| {