mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 19:57:25 +01:00
Fully functional person editor
This commit is contained in:
parent
f49f23a501
commit
3dc601e0f0
10 changed files with 214 additions and 43 deletions
|
|
@ -5,7 +5,7 @@ use crate::{
|
|||
},
|
||||
editor::{
|
||||
instrument_selector_popover::MusicusInstrumentSelectorPopover,
|
||||
person_selector_popover::MusicusPersonSelectorPopover,
|
||||
person_editor::MusicusPersonEditor, person_selector_popover::MusicusPersonSelectorPopover,
|
||||
translation_editor::MusicusTranslationEditor,
|
||||
work_editor_composer_row::MusicusWorkEditorComposerRow,
|
||||
},
|
||||
|
|
@ -80,24 +80,20 @@ mod imp {
|
|||
let persons_popover = MusicusPersonSelectorPopover::new(self.library.get().unwrap());
|
||||
|
||||
let obj = self.obj().clone();
|
||||
persons_popover.connect_person_selected(
|
||||
move |_: &MusicusPersonSelectorPopover, person: Person| {
|
||||
let role = obj.library().composer_default_role().unwrap();
|
||||
let composer = Composer { person, role };
|
||||
let row = MusicusWorkEditorComposerRow::new(&obj.library(), composer);
|
||||
persons_popover.connect_person_selected(move |_, person| {
|
||||
obj.add_composer(person);
|
||||
});
|
||||
|
||||
row.connect_remove(clone!(@weak obj => move |row| {
|
||||
obj.imp().composer_list.remove(row);
|
||||
obj.imp().composer_rows.borrow_mut().retain(|c| c != row);
|
||||
}));
|
||||
let obj = self.obj().clone();
|
||||
persons_popover.connect_create(move |_| {
|
||||
let editor = MusicusPersonEditor::new(&obj.navigation(), &obj.library(), None);
|
||||
|
||||
obj.imp()
|
||||
.composer_list
|
||||
.insert(&row, obj.imp().composer_rows.borrow().len() as i32);
|
||||
editor.connect_created(clone!(@weak obj => move |_, person| {
|
||||
obj.add_composer(person);
|
||||
}));
|
||||
|
||||
obj.imp().composer_rows.borrow_mut().push(row);
|
||||
},
|
||||
);
|
||||
obj.navigation().push(&editor);
|
||||
});
|
||||
|
||||
self.select_person_box.append(&persons_popover);
|
||||
self.persons_popover.set(persons_popover).unwrap();
|
||||
|
|
@ -210,4 +206,21 @@ impl MusicusWorkEditor {
|
|||
fn add_instrument(&self, _: &adw::ActionRow) {
|
||||
self.imp().instruments_popover.get().unwrap().popup();
|
||||
}
|
||||
|
||||
fn add_composer(&self, person: Person) {
|
||||
let role = self.library().composer_default_role().unwrap();
|
||||
let composer = Composer { person, role };
|
||||
let row = MusicusWorkEditorComposerRow::new(&self.library(), composer);
|
||||
|
||||
row.connect_remove(clone!(@weak self as obj => move |row| {
|
||||
obj.imp().composer_list.remove(row);
|
||||
obj.imp().composer_rows.borrow_mut().retain(|c| c != row);
|
||||
}));
|
||||
|
||||
self.imp()
|
||||
.composer_list
|
||||
.insert(&row, self.imp().composer_rows.borrow().len() as i32);
|
||||
|
||||
self.imp().composer_rows.borrow_mut().push(row);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue