GodotProjects/Sprout/addons/dialogic/Editor/editor_main.gd
2023-01-03 16:54:53 -07:00

51 lines
1.9 KiB
GDScript

@tool
extends ColorRect
## Editor root node. Most editor functionality is handled by EditorsManager node!
var plugin_reference = null
var editors_manager : Control = null
var editor_file_dialog:EditorFileDialog
## Styling
@export var editor_tab_bg := StyleBoxFlat.new()
func _ready():
## REFERENCES
editors_manager = $Margin/EditorsManager
## STYLING
color = get_theme_color("base_color", "Editor")
editor_tab_bg.border_color = get_theme_color("base_color", "Editor")
$Margin/EditorsManager/HSplit/Editors.add_theme_stylebox_override('panel', editor_tab_bg)
# File dialog
editor_file_dialog = EditorFileDialog.new()
add_child(editor_file_dialog)
$SaveConfirmationDialog.add_button('No Saving Please!', true, 'nosave')
$SaveConfirmationDialog.hide()
func godot_file_dialog(callable, filter, mode = EditorFileDialog.FILE_MODE_OPEN_FILE, window_title = "Save", current_file_name = 'New_File', saving_something = false):
for connection in editor_file_dialog.file_selected.get_connections():
editor_file_dialog.file_selected.disconnect(connection.callable)
for connection in editor_file_dialog.dir_selected.get_connections():
editor_file_dialog.dir_selected.disconnect(connection.callable)
editor_file_dialog.file_mode = mode
editor_file_dialog.clear_filters()
editor_file_dialog.popup_centered_ratio(0.75)
editor_file_dialog.add_filter(filter)
editor_file_dialog.title = window_title
editor_file_dialog.current_file = current_file_name
editor_file_dialog.disable_overwrite_warning = !saving_something
if mode == EditorFileDialog.FILE_MODE_OPEN_FILE or mode == EditorFileDialog.FILE_MODE_SAVE_FILE:
editor_file_dialog.file_selected.connect(callable)
elif mode == EditorFileDialog.FILE_MODE_OPEN_DIR:
editor_file_dialog.dir_selected.connect(callable)
elif mode == EditorFileDialog.FILE_MODE_OPEN_ANY:
editor_file_dialog.dir_selected.connect(callable)
editor_file_dialog.file_selected.connect(callable)
return editor_file_dialog