1 type Editor 2 def rename self = 3 let tree = self.tree 4 let display = self.app.display 5 let maybe_selected_tree_item = tree.selected_tree_item 6 if maybe_selected_tree_item.is_none then 7 return 8 9 let selected_tree_item = maybe_selected_tree_item.unwrap 10 let text_box = selected_tree_item.edit 11 let file_item_tab_items = self.file_item_tab_items 12 display.focus = text_box 13 if text_box.on_enter.is_none then 14 assert text_box.on_escape.is_none 15 let margin = selected_tree_item.margin 16 let data = selected_tree_item.data as FileItem 17 text_box.on_enter = { s -> 18 data.name = s 19 text_box.is_visible = false 20 margin.is_visible = true 21 display.focus = tree 22 let path = "${data.directory_path}/$s" 23 data.path = path 24 if data.is_directory then 25 update_item_paths data 26 self.add_all_to_changed data 27 else 28 self.changed.add data 29 if file_item_tab_items.contains data then 30 let tab_item = file_item_tab_items[data] 31 tab_item.header = s } 32 33 text_box.on_escape = { text_box.text = "" 34 text_box.is_visible = false 35 margin.is_visible = true 36 display.focus = tree } 37 38 let remove_content (directory : FileItem) : Unit = 39 let items = directory.items 40 for item in items do 41 remove_content item 42 43 items.clear 44 let parent = directory.parent.unwrap 45 directory.path = "" 46 directory_path = "" 47 parent = None 48 49 changed.add directory 50 add parent 51 52 def remove = 53 if not app.os_window.is_control_pressed then 54 return 55 56 let maybe_selected_item = tree.selected_item 57 if maybe_selected_item.is_none then 58 return 59 60 let selected_item = maybe_selected_item.unwrap as FileItem 61 if selected_item.is_crate then 62 return 63 64 let parent = selected_item.parent.unwrap 65 let items = parent.items 66 let index = items.index_of selected_item 67 tree.selected_item = None 68 items.remove selected_item 69 let maybe_next_index = if items.size > index then Some index 70 else if index > 0 then Some (index - 1) 71 else None 72 73 if maybe_next_index ? Some next_index then 74 tree.selected_item = items[next_index] 75 76 remove_content selected_item 77