One_Eleven_Android/addons/dialogic/Editor/EditorView.gd
2024-11-10 03:34:28 +03:00

194 lines
7.8 KiB
GDScript

tool
extends Control
var editor_file_dialog
var file_picker_data:Dictionary = {"method":"", "node":self}
var version_string:String
var editor_interface = null
func _ready():
editor_file_dialog = EditorFileDialog.new()
add_child(editor_file_dialog)
$ToolBar / Docs.text = DTS.translate("Help")
$ToolBar / Web.text = DTS.translate("Website")
$MainPanel / MasterTreeContainer / MasterTree.connect("editor_selected", self, "on_master_tree_editor_selected")
DialogicUtil.update_resource_folder_structure()
var separation = get_constant("separation", "BoxContainer")
$MainPanel.margin_left = separation
$MainPanel.margin_right = separation * - 1
$MainPanel.margin_bottom = separation * - 1
$MainPanel.margin_top = 38
var modifier = ""
var _scale = get_constant("inspector_margin", "Editor")
_scale = _scale * 0.125
if _scale == 1:
$MainPanel.margin_top = 30
if _scale == 1.25:
modifier = "-1.25"
$MainPanel.margin_top = 37
if _scale == 1.5:
modifier = "-1.25"
$MainPanel.margin_top = 46
if _scale == 1.75:
modifier = "-1.25"
$MainPanel.margin_top = 53
if _scale == 2:
$MainPanel.margin_top = 59
modifier = "-2"
$ToolBar / NewTimelineButton.icon = load("res://addons/dialogic/Images/Toolbar/add-timeline" + modifier + ".svg")
$ToolBar / NewTimelineButton.hint_tooltip = DTS.translate("Add Timeline")
$ToolBar / NewCharactersButton.icon = load("res://addons/dialogic/Images/Toolbar/add-character" + modifier + ".svg")
$ToolBar / NewCharactersButton.hint_tooltip = DTS.translate("Add Character")
$ToolBar / NewValueButton.icon = load("res://addons/dialogic/Images/Toolbar/add-definition" + modifier + ".svg")
$ToolBar / NewValueButton.hint_tooltip = DTS.translate("Add Value")
$ToolBar / NewGlossaryEntryButton.icon = load("res://addons/dialogic/Images/Toolbar/add-glossary" + modifier + ".svg")
$ToolBar / NewGlossaryEntryButton.hint_tooltip = DTS.translate("Add Glossary Entry")
$ToolBar / NewThemeButton.icon = load("res://addons/dialogic/Images/Toolbar/add-theme" + modifier + ".svg")
$ToolBar / NewThemeButton.hint_tooltip = DTS.translate("Add Theme")
var modulate_color = Color.white
if not get_constant("dark_theme", "Editor"):
modulate_color = get_color("property_color", "Editor")
$ToolBar / NewTimelineButton.modulate = modulate_color
$ToolBar / NewCharactersButton.modulate = modulate_color
$ToolBar / NewValueButton.modulate = modulate_color
$ToolBar / NewGlossaryEntryButton.modulate = modulate_color
$ToolBar / NewThemeButton.modulate = modulate_color
$ToolBar / FoldTools / ButtonFold.icon = get_icon("GuiTreeArrowRight", "EditorIcons")
$ToolBar / FoldTools / ButtonUnfold.icon = get_icon("GuiTreeArrowDown", "EditorIcons")
$ToolBar / FoldTools / PlayTimeline.icon = get_icon("PlayScene", "EditorIcons")
$ToolBar / NewTimelineButton.connect("pressed", $MainPanel / MasterTreeContainer / MasterTree, "new_timeline")
$ToolBar / NewCharactersButton.connect("pressed", $MainPanel / MasterTreeContainer / MasterTree, "new_character")
$ToolBar / NewThemeButton.connect("pressed", $MainPanel / MasterTreeContainer / MasterTree, "new_theme")
$ToolBar / NewValueButton.connect("pressed", $MainPanel / MasterTreeContainer / MasterTree, "new_value_definition")
$ToolBar / NewGlossaryEntryButton.connect("pressed", $MainPanel / MasterTreeContainer / MasterTree, "new_glossary_entry")
$ToolBar / Web.icon = get_icon("Instance", "EditorIcons")
$ToolBar / Web.connect("pressed", OS, "shell_open", ["https://dialogic.coppolaemilio.com"])
$ToolBar / Docs.icon = get_icon("HelpSearch", "EditorIcons")
$ToolBar / DocumentationNavigation / Previous.icon = get_icon("Back", "EditorIcons")
$ToolBar / DocumentationNavigation / Next.icon = get_icon("Forward", "EditorIcons")
$ToolBar / Docs.connect("pressed",
$MainPanel / MasterTreeContainer / MasterTree,
"select_documentation_item",
["/"])
$ToolBar / FoldTools / ButtonFold.connect("pressed", $MainPanel / TimelineEditor, "fold_all_nodes")
$ToolBar / FoldTools / ButtonUnfold.connect("pressed", $MainPanel / TimelineEditor, "unfold_all_nodes")
$ToolBar / FoldTools / PlayTimeline.connect("pressed", $MainPanel / TimelineEditor, "play_timeline")
$RemoveFolderConfirmation.connect("confirmed", self, "_on_RemoveFolderConfirmation_confirmed")
$RemoveConfirmation.window_title = DTS.translate("RemoveResourcePopupTitle")
$RemoveFolderConfirmation.window_title = DTS.translate("RemoveFolderPopupTitle")
$RemoveFolderConfirmation.dialog_text = DTS.translate("RemoveFolderPopupText")
var config = ConfigFile.new()
var err = config.load("res://addons/dialogic/plugin.cfg")
if err == OK:
version_string = config.get_value("plugin", "version", "?")
$ToolBar / Version.text = "Dialogic v" + version_string
$MainPanel / MasterTreeContainer / FilterMasterTreeEdit.right_icon = get_icon("Search", "EditorIcons")
func on_master_tree_editor_selected(editor:String):
$ToolBar / FoldTools.visible = editor == "timeline"
$ToolBar / DocumentationNavigation.visible = editor == "documentation"
func popup_remove_confirmation(what):
if $RemoveConfirmation.is_connected(
"confirmed", self, "_on_RemoveConfirmation_confirmed"):
$RemoveConfirmation.disconnect(
"confirmed", self, "_on_RemoveConfirmation_confirmed")
if what == "Theme" and len(DialogicUtil.get_theme_list()) == 1:
print("[D] You cannot delete the last theme!")
$RemoveConfirmation.dialog_text = DTS.translate("CantDeleteLastTheme")
else :
var remove_text = DTS.translate("DeleteResourceText")
$RemoveConfirmation.dialog_text = remove_text.replace("[resource]", what)
$RemoveConfirmation.connect("confirmed", self, "_on_RemoveConfirmation_confirmed", [what])
$RemoveConfirmation.popup_centered()
func _on_RemoveFolderConfirmation_confirmed():
var item_path = $MainPanel / MasterTreeContainer / MasterTree.get_item_path($MainPanel / MasterTreeContainer / MasterTree.get_selected())
DialogicUtil.remove_folder(item_path)
$MainPanel / MasterTreeContainer / MasterTree.build_full_tree()
func _on_RemoveConfirmation_confirmed(what:String = ""):
if what == "Timeline":
var target = $MainPanel / TimelineEditor.timeline_file
DialogicResources.delete_timeline(target)
elif what == "GlossaryEntry":
var target = $MainPanel / GlossaryEntryEditor.current_definition["id"]
DialogicResources.delete_default_definition(target)
elif what == "Value":
var target = $MainPanel / ValueEditor.current_definition["id"]
DialogicResources.delete_default_definition(target)
elif what == "Theme":
var filename = $MainPanel / MasterTreeContainer / MasterTree.get_selected().get_metadata(0)["file"]
DialogicResources.delete_theme(filename)
elif what == "Character":
var filename = $MainPanel / CharacterEditor.opened_character_data["id"]
DialogicResources.delete_character(filename)
DialogicUtil.update_resource_folder_structure()
$MainPanel / MasterTreeContainer / MasterTree.remove_selected()
$MainPanel / MasterTreeContainer / MasterTree.hide_all_editors()
func godot_dialog(filter, mode = EditorFileDialog.MODE_OPEN_FILE):
editor_file_dialog.mode = mode
editor_file_dialog.clear_filters()
editor_file_dialog.popup_centered_ratio(0.75)
editor_file_dialog.add_filter(filter)
return editor_file_dialog
func godot_dialog_connect(who, method_name, signal_name = "file_selected"):
for test_signal in editor_file_dialog.get_signal_list():
if not file_picker_data["node"] or not is_instance_valid(file_picker_data["node"]):
continue
if editor_file_dialog.is_connected(
test_signal.name,
file_picker_data["node"],
file_picker_data["method"]
):
editor_file_dialog.disconnect(
test_signal.name,
file_picker_data["node"],
file_picker_data["method"]
)
for new_signal_name in signal_name if typeof(signal_name) == TYPE_ARRAY else [signal_name]:
editor_file_dialog.connect(new_signal_name, who, method_name, [who])
file_picker_data["method"] = method_name
file_picker_data["node"] = who