|
@@ -58,6 +58,7 @@ namespace Publicate {
|
|
|
|
|
|
var remove_file_button = new Button.from_icon_name("user-trash-symbolic");
|
|
|
file_buttons.append(remove_file_button);
|
|
|
+ remove_file_button.clicked.connect(delete_file_clicked);
|
|
|
|
|
|
leaflet = new Leaflet();
|
|
|
leaflet.vexpand = true;
|
|
@@ -265,6 +266,37 @@ namespace Publicate {
|
|
|
window.close();
|
|
|
}
|
|
|
|
|
|
+ private void delete_file_clicked() {
|
|
|
+ var asset = file_explorer.selected_asset;
|
|
|
+ if(asset == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var prompt = new Adw.MessageDialog(window, "Delete File?", @"Are you sure you want to delete the file\"<i>$(asset.name)</i>\"? This cannot be undone.");
|
|
|
+ prompt.body_use_markup = true;
|
|
|
+ prompt.add_response("cancel", "Cancel");
|
|
|
+ prompt.add_response("delete", "Delete");
|
|
|
+ prompt.response.connect(r => {
|
|
|
+ if(r == "delete") {
|
|
|
+ delete_file.begin(asset);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ prompt.present();
|
|
|
+ }
|
|
|
+
|
|
|
+ private async void delete_file(Ppub.Asset asset) {
|
|
|
+ var to_save = publication.assets
|
|
|
+ .where(a => a.name != asset.name)
|
|
|
+ .select<Savable>(a => new SavableAsset(publication, a)).to_sequence();
|
|
|
+
|
|
|
+ if(open_editors.has_key(asset.name)) {
|
|
|
+ Editors.EditorWidget editor;
|
|
|
+ open_editors.unset(asset.name, out editor);
|
|
|
+ tab_view.close_page(editor.tab_page);
|
|
|
+ }
|
|
|
+ yield save(to_save);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
}
|