diff --git a/res/ui/recording_editor.ui b/res/ui/recording_editor.ui index 3a64b40..d6835ff 100644 --- a/res/ui/recording_editor.ui +++ b/res/ui/recording_editor.ui @@ -152,6 +152,25 @@ 0 + + + True + True + True + + + True + False + edit-symbolic + + + + + False + True + 1 + + True @@ -168,7 +187,7 @@ False True - 1 + 2 diff --git a/src/dialogs/recording_editor.rs b/src/dialogs/recording_editor.rs index 1df12ce..3065596 100644 --- a/src/dialogs/recording_editor.rs +++ b/src/dialogs/recording_editor.rs @@ -45,6 +45,7 @@ where get_widget!(builder, gtk::Entry, comment_entry); get_widget!(builder, gtk::ListBox, performer_list); get_widget!(builder, gtk::Button, add_performer_button); + get_widget!(builder, gtk::Button, edit_performer_button); get_widget!(builder, gtk::Button, remove_performer_button); let (id, work, performers) = match recording { @@ -109,6 +110,23 @@ where })).show(); })); + edit_performer_button.connect_clicked(clone!(@strong result => move |_| { + let row = result.get_selected_performer_row(); + match row { + Some(row) => { + let index = row.get_index(); + let index: usize = index.try_into().unwrap(); + let performer = result.performers.borrow()[index].clone(); + + PerformanceEditor::new(result.backend.clone(), &result.window, Some(performer), clone!(@strong result => move |performer| { + result.performers.borrow_mut()[index] = performer; + result.show_performers(); + })).show(); + } + None => (), + } + })); + remove_performer_button.connect_clicked(clone!(@strong result => move |_| { let row = result.get_selected_performer_row(); match row {