Allow editing performances

This commit is contained in:
Elias Projahn 2020-10-10 10:49:38 +02:00
parent d8f9767b22
commit 6f90359d09
2 changed files with 38 additions and 1 deletions

View file

@ -152,6 +152,25 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="edit_performer_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">edit-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="remove_performer_button">
<property name="visible">True</property>
@ -168,7 +187,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">2</property>
</packing>
</child>
</object>

View file

@ -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 {