verse editing and slide creation is more streamlined

This commit is contained in:
Chris Cochrun 2026-02-06 07:05:20 -06:00
parent bb4f402803
commit c3de2aced4
3 changed files with 39 additions and 45 deletions

View file

@ -454,6 +454,8 @@ impl SongEditor {
old_verse_name,
);
verse.verse_name = verse_name;
song.update_verse_name(
verse_name,
&old_verse_name,
@ -468,9 +470,10 @@ impl SongEditor {
)) => {
if let Some(mut song) = self.song.clone()
{
song.update_verse(
index, verse, lyric,
);
song.set_lyrics(&verse, lyric);
// song.update_verse(
// index, verse, lyric,
// );
return self.update_song(song);
}
}
@ -1144,13 +1147,16 @@ impl SongEditor {
stroke_color_button.popup(stroke_color_picker);
}
let background_selector = button::icon(
icon::from_name("folder-pictures-symbolic").scale(2),
)
.label("Background")
.tooltip("Select an image or video background")
.on_press(Message::PickBackground)
.padding(space_s);
let background_selector = tooltip(
button::icon(
icon::from_name("folder-pictures-symbolic").scale(2),
)
.label("Background")
.on_press(Message::PickBackground)
.padding(space_s),
"Select an image or video background",
tooltip::Position::Bottom,
);
// let stroke_size_selector = tooltip(
// stroke_popup,
@ -1211,15 +1217,6 @@ impl SongEditor {
// }
// I think this implementation is faster
self.verses = song.verse_map.as_ref().map(|map| {
map.into_iter()
.sorted()
.map(|(verse_name, lyric)| {
VerseEditor::new(*verse_name, lyric.to_string())
})
.collect()
});
let mut tasks = Vec::with_capacity(2);
if let Ok(slides) = song.to_slides() {
if let Some(handle) = &self.update_slide_handle {

View file

@ -1,7 +1,7 @@
use cosmic::{
Element, Task,
cosmic_theme::palette::WithAlpha,
iced::{Background, Border, Color},
iced::{Background, Border, Color, Point},
iced_widget::{column, row},
theme,
widget::{
@ -86,7 +86,9 @@ impl VerseEditor {
} = theme::spacing();
let delete_button = button::text("Delete")
.trailing_icon(icon::from_name("view-close"))
.trailing_icon(
icon::from_name("view-close").symbolic(true),
)
.class(theme::Button::Destructive)
.on_press(Message::DeleteVerse(self.verse_name));
let combo = combo_box(
@ -163,4 +165,13 @@ impl VerseEditor {
.class(theme::Container::Card)
.into()
}
// TODO not done yet. This doesn't work, need to find a way to either reset the
// cursor position or not make new widgets
pub fn set_cursor_position(&mut self, position: (usize, usize)) {
self.content.perform(text_editor::Action::Click(Point::new(
position.0 as f32,
position.1 as f32,
)));
}
}