You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GDScript
		
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GDScript
		
	
| 
								 
											2 years ago
										 
									 | 
							
								@tool
							 | 
						||
| 
								 | 
							
								extends OptionButton
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@export @onready var editor_view := $"../../../../.."
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var recent_paths := []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func _ready():
							 | 
						||
| 
								 | 
							
									item_selected.connect(_on_item_selected)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func load_paths(paths):
							 | 
						||
| 
								 | 
							
									clear()
							 | 
						||
| 
								 | 
							
									for x in paths:
							 | 
						||
| 
								 | 
							
										add_path_to_recent(x, true)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									selected = 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func add_path_to_recent(path : String, is_loading : bool = false):
							 | 
						||
| 
								 | 
							
									if path in recent_paths: return
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var idx_in_array := recent_paths.find(path)
							 | 
						||
| 
								 | 
							
									if idx_in_array != -1:
							 | 
						||
| 
								 | 
							
										remove_item(idx_in_array)
							 | 
						||
| 
								 | 
							
										recent_paths.remove_at(idx_in_array)
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									recent_paths.append(path)
							 | 
						||
| 
								 | 
							
									add_item(path)
							 | 
						||
| 
								 | 
							
									select(get_item_count() - 1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if !is_loading:
							 | 
						||
| 
								 | 
							
										editor_view.save_data()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func remove_selected_path_from_recent():
							 | 
						||
| 
								 | 
							
									if get_item_count() == 0:
							 | 
						||
| 
								 | 
							
										return
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									var idx_in_array = selected
							 | 
						||
| 
								 | 
							
									recent_paths.remove_at(idx_in_array)
							 | 
						||
| 
								 | 
							
									remove_item(idx_in_array)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if get_item_count() != 0:
							 | 
						||
| 
								 | 
							
										select(0)
							 | 
						||
| 
								 | 
							
										editor_view.display_folder(recent_paths[0])
							 | 
						||
| 
								 | 
							
										editor_view.save_data()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func _on_item_selected(index : int):
							 | 
						||
| 
								 | 
							
									editor_view.current_path = recent_paths[index]
							 | 
						||
| 
								 | 
							
									editor_view.node_folder_path.text = recent_paths[index]
							 | 
						||
| 
								 | 
							
									editor_view.refresh()
							 |