66 lines
1.9 KiB
GDScript
66 lines
1.9 KiB
GDScript
# Copyright (c) 2023-2024 Mansur Isaev and contributors - MIT License
|
|
# See `LICENSE.md` included in the source distribution for details.
|
|
|
|
@tool
|
|
extends EditorPlugin
|
|
|
|
|
|
const SceneLibrary = preload("res://addons/scene-library/scripts/scene_library.gd")
|
|
|
|
const BUTTON_NAME: String = "Scene Library"
|
|
|
|
|
|
var _editor: SceneLibrary = null
|
|
var _button: Button = null
|
|
|
|
|
|
func _enter_tree() -> void:
|
|
_editor = SceneLibrary.new()
|
|
_button = add_control_to_bottom_panel(_editor, BUTTON_NAME)
|
|
_editor.open_asset_request.connect(_on_open_asset_request)
|
|
_editor.show_in_file_system_request.connect(_on_show_in_file_system_request)
|
|
_editor.show_in_file_manager_request.connect(_on_show_in_file_manager_request)
|
|
_editor.library_saved.connect(_on_library_saved)
|
|
_editor.library_unsaved.connect(_on_library_unsaved)
|
|
|
|
get_parent().connect(&"scene_saved", _editor.handle_scene_saved)
|
|
EditorInterface.get_file_system_dock().files_moved.connect(_editor.handle_file_moved)
|
|
EditorInterface.get_file_system_dock().file_removed.connect(_editor.handle_file_removed)
|
|
|
|
|
|
func _exit_tree() -> void:
|
|
remove_control_from_bottom_panel(_editor)
|
|
_editor.queue_free()
|
|
|
|
|
|
func _save_external_data() -> void:
|
|
if _editor.is_saved():
|
|
return
|
|
|
|
var library_path: String = _editor.get_current_library_path()
|
|
if library_path.is_empty():
|
|
return
|
|
|
|
_editor.save_library(library_path)
|
|
|
|
|
|
func _on_library_saved() -> void:
|
|
_button.set_text(BUTTON_NAME)
|
|
|
|
func _on_library_unsaved() -> void:
|
|
_button.set_text(BUTTON_NAME + "(*)")
|
|
|
|
|
|
func _on_open_asset_request(path: String) -> void:
|
|
EditorInterface.open_scene_from_path(path)
|
|
|
|
|
|
func _on_show_in_file_system_request(path: String) -> void:
|
|
EditorInterface.get_file_system_dock().navigate_to_path(path)
|
|
|
|
|
|
func _on_show_in_file_manager_request(path: String) -> void:
|
|
var error := OS.shell_show_in_file_manager(ProjectSettings.globalize_path(path), true)
|
|
if error:
|
|
push_warning(error_string(error))
|