瀏覽代碼

Add delete functionality

Billy Barrow 2 年之前
父節點
當前提交
630803f088
共有 2 個文件被更改,包括 33 次插入0 次删除
  1. 32 0
      src/Editor.vala
  2. 1 0
      src/FileExplorer.vala

+ 32 - 0
src/Editor.vala

@@ -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);
+        }
+
         
     }
 }

+ 1 - 0
src/FileExplorer.vala

@@ -53,6 +53,7 @@ namespace Publicate {
         public void set_selected_item(string name) {
             var item = file_items.where(i => i.asset.name == name).first_or_default();
             file_list.select_row(item);
+            selected_asset = item?.asset;
         }
 
     }