194 lines
7.8 KiB
GDScript
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
|