diff --git a/addons/dialogic/Dialog.tscn b/addons/dialogic/Dialog.tscn
index d5e15ef..fa49bbf 100644
--- a/addons/dialogic/Dialog.tscn
+++ b/addons/dialogic/Dialog.tscn
@@ -87,9 +87,9 @@ anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
-margin_left = -455.0
+margin_left = -250.0
margin_top = -207.0
-margin_right = 455.0
+margin_right = 250.0
margin_bottom = -40.0
__meta__ = {
"_edit_use_anchors_": false
@@ -136,8 +136,6 @@ __meta__ = {
"_edit_use_anchors_": false
}
-[node name="Tween" type="Tween" parent="TextBubble"]
-
[node name="NextIndicator" type="TextureRect" parent="TextBubble"]
visible = false
anchor_left = 1.0
@@ -203,6 +201,8 @@ __meta__ = {
"_edit_use_anchors_": false
}
+[node name="Tween" type="Tween" parent="TextBubble"]
+
[node name="Options" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
@@ -340,8 +340,8 @@ __meta__ = {
[node name="Timer" type="Timer" parent="DefinitionInfo"]
[node name="WaitSeconds" type="Timer" parent="."]
+
[connection signal="meta_hover_ended" from="TextBubble/RichTextLabel" to="." method="_on_RichTextLabel_meta_hover_ended"]
[connection signal="meta_hover_started" from="TextBubble/RichTextLabel" to="." method="_on_RichTextLabel_meta_hover_started"]
-[connection signal="tween_completed" from="TextBubble/Tween" to="." method="_on_Tween_tween_completed"]
[connection signal="timeout" from="DefinitionInfo/Timer" to="." method="_on_Definition_Timer_timeout"]
[connection signal="timeout" from="WaitSeconds" to="." method="_on_WaitSeconds_timeout"]
diff --git a/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd b/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd
index f426639..b049eee 100644
--- a/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd
+++ b/addons/dialogic/Editor/CharacterEditor/CharacterEditor.gd
@@ -2,7 +2,7 @@ tool
extends ScrollContainer
var editor_reference
-onready var master_tree = get_node('../MasterTree')
+onready var master_tree = get_node('../MasterTreeContainer/MasterTree')
var opened_character_data
var portrait_entry = load("res://addons/dialogic/Editor/CharacterEditor/PortraitEntry.tscn")
onready var nodes = {
diff --git a/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd b/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd
index 771b4a3..18b1b32 100644
--- a/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd
+++ b/addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.gd
@@ -2,7 +2,7 @@ tool
extends ScrollContainer
var editor_reference
-onready var master_tree = get_node('../MasterTree')
+onready var master_tree = get_node('../MasterTreeContainer/MasterTree')
var current_definition = null
onready var nodes = {
diff --git a/addons/dialogic/Editor/EditorView.gd b/addons/dialogic/Editor/EditorView.gd
index 61cde66..3c8f47f 100644
--- a/addons/dialogic/Editor/EditorView.gd
+++ b/addons/dialogic/Editor/EditorView.gd
@@ -6,7 +6,7 @@ var editor_file_dialog # EditorFileDialog
var file_picker_data: Dictionary = {'method': '', 'node': self}
var current_editor_view: String = 'Master'
var version_string: String
-onready var master_tree = $MainPanel/MasterTree
+onready var master_tree = $MainPanel/MasterTreeContainer/MasterTree
onready var timeline_editor = $MainPanel/TimelineEditor
onready var character_editor = $MainPanel/CharacterEditor
onready var definition_editor = $MainPanel/DefinitionEditor
@@ -27,6 +27,40 @@ func _ready():
master_tree.connect("editor_selected", self, 'on_master_tree_editor_selected')
+
+ # Sizes
+ # This part of the code is a bit terrible. But there is no better way
+ # of doing this in Godot at the moment. I'm sorry.
+ 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/NewCharactersButton.icon = load("res://addons/dialogic/Images/Toolbar/add-character" + modifier + ".svg")
+ $ToolBar/NewDefinitionButton.icon = load("res://addons/dialogic/Images/Toolbar/add-definition" + modifier + ".svg")
+ $ToolBar/NewThemeButton.icon = load("res://addons/dialogic/Images/Toolbar/add-theme" + modifier + ".svg")
+ $ToolBar/NewThemeButton.icon = load("res://addons/dialogic/Images/Toolbar/add-theme" + modifier + ".svg")
+
+ $ToolBar/FoldTools/ButtonFold.icon = get_icon("GuiTreeArrowRight", "EditorIcons")
+ $ToolBar/FoldTools/ButtonUnfold.icon = get_icon("GuiTreeArrowDown", "EditorIcons")
# Toolbar
$ToolBar/NewTimelineButton.connect('pressed', $MainPanel/TimelineEditor, 'new_timeline')
$ToolBar/NewCharactersButton.connect('pressed', $MainPanel/CharacterEditor, 'new_character')
@@ -55,7 +89,9 @@ func _ready():
var err = config.load("res://addons/dialogic/plugin.cfg")
if err == OK:
version_string = config.get_value("plugin", "version", "?")
- $ToolBar/Version.text = 'v' + version_string
+ $ToolBar/Version.text = 'Dialogic v' + version_string
+
+ $MainPanel/MasterTreeContainer/FilterMasterTreeEdit.right_icon = get_icon("Search", "EditorIcons")
func on_master_tree_editor_selected(editor: String):
@@ -75,10 +111,10 @@ func _on_TimelinePopupMenu_id_pressed(id):
func _on_RemoveTimelineConfirmation_confirmed():
var dir = Directory.new()
var target = $MainPanel/TimelineEditor.timeline_file
- print('target: ', target)
+ #'target: ', target)
DialogicResources.delete_timeline(target)
- $MainPanel/MasterTree.remove_selected()
- $MainPanel/MasterTree.hide_all_editors()
+ $MainPanel/MasterTreeContainer/MasterTree.remove_selected()
+ $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors()
# Character context menu
@@ -95,6 +131,10 @@ func _on_ThemePopupMenu_id_pressed(id):
OS.shell_open(ProjectSettings.globalize_path(DialogicResources.get_path('THEME_DIR')))
if id == 1:
$RemoveThemeConfirmation.popup_centered()
+ if id == 2:
+ var filename = $MainPanel/MasterTreeContainer/MasterTree.get_selected().get_metadata(0)['file']
+ if (filename.begins_with('theme-')):
+ theme_editor.duplicate_theme(filename)
# Definition context menu
@@ -108,22 +148,22 @@ func _on_DefinitionPopupMenu_id_pressed(id):
func _on_RemoveDefinitionConfirmation_confirmed():
var target = $MainPanel/DefinitionEditor.current_definition['id']
DialogicResources.delete_default_definition(target)
- $MainPanel/MasterTree.remove_selected()
- $MainPanel/MasterTree.hide_all_editors()
+ $MainPanel/MasterTreeContainer/MasterTree.remove_selected()
+ $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors()
func _on_RemoveCharacterConfirmation_confirmed():
- var filename = DialogicResources.get_path('CHAR_DIR', $MainPanel/CharacterEditor.opened_character_data['id'])
+ var filename = $MainPanel/CharacterEditor.opened_character_data['id']
DialogicResources.delete_character(filename)
- $MainPanel/MasterTree.remove_selected()
- $MainPanel/MasterTree.hide_all_editors()
+ $MainPanel/MasterTreeContainer/MasterTree.remove_selected()
+ $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors()
func _on_RemoveThemeConfirmation_confirmed():
- var filename = $MainPanel/MasterTree.get_selected().get_metadata(0)['file']
+ var filename = $MainPanel/MasterTreeContainer/MasterTree.get_selected().get_metadata(0)['file']
DialogicResources.delete_theme(filename)
- $MainPanel/MasterTree.remove_selected()
- $MainPanel/MasterTree.hide_all_editors()
+ $MainPanel/MasterTreeContainer/MasterTree.remove_selected()
+ $MainPanel/MasterTreeContainer/MasterTree.hide_all_editors()
# Godot dialog
@@ -157,12 +197,6 @@ func _on_file_selected(path):
dprint(path)
-func _on_Logo_gui_input(event) -> void:
- # I should probably replace this with an "About Dialogic" dialog
- if event is InputEventMouseButton and event.button_index == 1:
- OS.shell_open("https://github.com/coppolaemilio/dialogic")
-
-
func dprint(what) -> void:
if debug_mode:
print(what)
diff --git a/addons/dialogic/Editor/EditorView.tscn b/addons/dialogic/Editor/EditorView.tscn
index 7f72ae9..e6e08d0 100644
--- a/addons/dialogic/Editor/EditorView.tscn
+++ b/addons/dialogic/Editor/EditorView.tscn
@@ -1,24 +1,21 @@
-[gd_scene load_steps=20 format=2]
+[gd_scene load_steps=17 format=2]
[ext_resource path="res://addons/dialogic/Editor/EditorView.gd" type="Script" id=1]
[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn" type="PackedScene" id=2]
-[ext_resource path="res://addons/dialogic/Images/Toolbar/add-timeline.svg" type="Texture" id=3]
-[ext_resource path="res://addons/dialogic/Images/Toolbar/add-character.svg" type="Texture" id=4]
-[ext_resource path="res://addons/dialogic/Images/Toolbar/add-theme.svg" type="Texture" id=5]
+[ext_resource path="res://addons/dialogic/Images/Toolbar/add-character.svg" type="Texture" id=3]
+[ext_resource path="res://addons/dialogic/Images/Toolbar/add-timeline.svg" type="Texture" id=4]
+[ext_resource path="res://addons/dialogic/Images/Toolbar/add-definition.svg" type="Texture" id=5]
[ext_resource path="res://addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn" type="PackedScene" id=6]
[ext_resource path="res://addons/dialogic/Editor/CharacterEditor/CharacterEditor.tscn" type="PackedScene" id=7]
[ext_resource path="res://addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn" type="PackedScene" id=8]
-[ext_resource path="res://addons/dialogic/Images/open-icon.svg" type="Texture" id=9]
-[ext_resource path="res://addons/dialogic/Images/closed-icon.svg" type="Texture" id=10]
[ext_resource path="res://addons/dialogic/Images/ActionCopy.svg" type="Texture" id=11]
[ext_resource path="res://addons/dialogic/Editor/DefinitionEditor/DefinitionEditor.tscn" type="PackedScene" id=12]
-[ext_resource path="res://addons/dialogic/Images/Toolbar/add-definition.svg" type="Texture" id=13]
-[ext_resource path="res://addons/dialogic/Images/logo.png" type="Texture" id=14]
+[ext_resource path="res://addons/dialogic/Images/Toolbar/add-theme.svg" type="Texture" id=13]
[ext_resource path="res://addons/dialogic/Images/Remove.svg" type="Texture" id=22]
[ext_resource path="res://addons/dialogic/Images/Filesystem.svg" type="Texture" id=26]
[ext_resource path="res://addons/dialogic/Editor/MasterTree/MasterTree.tscn" type="PackedScene" id=35]
-[sub_resource type="Image" id=3]
+[sub_resource type="Image" id=1]
data = {
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
"format": "LumAlpha8",
@@ -30,16 +27,12 @@ data = {
[sub_resource type="ImageTexture" id=2]
flags = 4
flags = 4
-image = SubResource( 3 )
+image = SubResource( 1 )
size = Vector2( 16, 16 )
[node name="EditorView" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
-margin_left = 8.0
-margin_top = 8.0
-margin_right = -8.0
-margin_bottom = -8.0
rect_min_size = Vector2( 0, 200 )
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -50,7 +43,7 @@ __meta__ = {
[node name="ToolBar" type="HBoxContainer" parent="."]
anchor_right = 1.0
-margin_bottom = 30.0
+margin_bottom = 32.0
custom_constants/separation = 0
__meta__ = {
"_edit_use_anchors_": false
@@ -58,119 +51,118 @@ __meta__ = {
[node name="NewTimelineButton" type="Button" parent="ToolBar"]
self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
-margin_right = 34.0
-margin_bottom = 30.0
+margin_right = 28.0
+margin_bottom = 32.0
hint_tooltip = "New Timeline"
focus_mode = 0
-icon = ExtResource( 3 )
+icon = ExtResource( 4 )
flat = true
[node name="NewCharactersButton" type="ToolButton" parent="ToolBar"]
self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
-margin_left = 34.0
-margin_right = 68.0
-margin_bottom = 30.0
+margin_left = 28.0
+margin_right = 56.0
+margin_bottom = 32.0
hint_tooltip = "New Character"
focus_mode = 0
-icon = ExtResource( 4 )
+icon = ExtResource( 3 )
[node name="NewDefinitionButton" type="Button" parent="ToolBar"]
self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
-margin_left = 68.0
-margin_right = 102.0
-margin_bottom = 30.0
+margin_left = 56.0
+margin_right = 84.0
+margin_bottom = 32.0
hint_tooltip = "New Definition"
focus_mode = 0
-icon = ExtResource( 13 )
-flat = true
-
-[node name="NewThemeButton" type="Button" parent="ToolBar"]
-self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
-margin_left = 102.0
-margin_right = 136.0
-margin_bottom = 30.0
-hint_tooltip = "New Theme"
-focus_mode = 0
icon = ExtResource( 5 )
flat = true
+[node name="NewThemeButton" type="Button" parent="ToolBar"]
+self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
+margin_left = 84.0
+margin_right = 112.0
+margin_bottom = 32.0
+hint_tooltip = "New Theme"
+focus_mode = 0
+icon = ExtResource( 13 )
+flat = true
+
[node name="FoldTools" type="HBoxContainer" parent="ToolBar"]
visible = false
-margin_left = 136.0
-margin_right = 271.0
-margin_bottom = 30.0
+margin_left = 112.0
+margin_right = 203.0
+margin_bottom = 32.0
[node name="Label" type="Label" parent="ToolBar/FoldTools"]
-margin_top = 8.0
+margin_top = 9.0
margin_right = 59.0
-margin_bottom = 22.0
+margin_bottom = 23.0
text = " Fold "
-[node name="ButtonFold" type="Button" parent="ToolBar/FoldTools"]
+[node name="ButtonFold" type="ToolButton" parent="ToolBar/FoldTools"]
margin_left = 63.0
-margin_right = 97.0
-margin_bottom = 30.0
-icon = ExtResource( 10 )
+margin_right = 75.0
+margin_bottom = 32.0
+icon = SubResource( 2 )
align = 0
-[node name="ButtonUnfold" type="Button" parent="ToolBar/FoldTools"]
-margin_left = 101.0
-margin_right = 135.0
-margin_bottom = 30.0
-icon = ExtResource( 9 )
+[node name="ButtonUnfold" type="ToolButton" parent="ToolBar/FoldTools"]
+margin_left = 79.0
+margin_right = 91.0
+margin_bottom = 32.0
+icon = SubResource( 2 )
align = 0
[node name="Spacer" type="Control" parent="ToolBar"]
-margin_left = 136.0
-margin_right = 751.0
-margin_bottom = 30.0
+margin_left = 112.0
+margin_right = 832.0
+margin_bottom = 32.0
size_flags_horizontal = 3
[node name="Docs" type="ToolButton" parent="ToolBar"]
self_modulate = Color( 0.870588, 0.870588, 0.870588, 1 )
-margin_left = 751.0
-margin_right = 861.0
-margin_bottom = 30.0
+margin_left = 832.0
+margin_right = 942.0
+margin_bottom = 32.0
hint_tooltip = "Theme Editor"
mouse_default_cursor_shape = 2
text = "Online Docs"
icon = SubResource( 2 )
-[node name="Logo" type="TextureRect" parent="ToolBar"]
-margin_left = 861.0
-margin_right = 981.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 120, 0 )
-mouse_default_cursor_shape = 2
-texture = ExtResource( 14 )
-expand = true
-stretch_mode = 5
-
[node name="Version" type="Label" parent="ToolBar"]
self_modulate = Color( 1, 1, 1, 0.631373 )
-margin_left = 981.0
-margin_top = 8.0
-margin_right = 1008.0
-margin_bottom = 22.0
-text = "v1.0"
+margin_left = 942.0
+margin_top = 9.0
+margin_right = 1024.0
+margin_bottom = 23.0
+text = "Dialogic v1.1"
[node name="MainPanel" type="HSplitContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
-margin_left = 6.0
margin_top = 38.0
-margin_right = -5.0
-margin_bottom = -5.0
__meta__ = {
"_edit_use_anchors_": false
}
-[node name="MasterTree" parent="MainPanel" instance=ExtResource( 35 )]
+[node name="MasterTreeContainer" type="VBoxContainer" parent="MainPanel"]
+margin_right = 150.0
+margin_bottom = 562.0
+
+[node name="FilterMasterTreeEdit" type="LineEdit" parent="MainPanel/MasterTreeContainer"]
+margin_right = 150.0
+margin_bottom = 26.0
+clear_button_enabled = true
+right_icon = SubResource( 2 )
+placeholder_text = "Filter"
+
+[node name="MasterTree" parent="MainPanel/MasterTreeContainer" instance=ExtResource( 35 )]
anchor_right = 0.0
anchor_bottom = 0.0
-margin_right = 180.0
-margin_bottom = 541.0
-rect_min_size = Vector2( 180, 0 )
+margin_top = 30.0
+margin_right = 150.0
+margin_bottom = 562.0
+rect_min_size = Vector2( 150, 0 )
size_flags_vertical = 3
[node name="TimelineEditor" parent="MainPanel" instance=ExtResource( 2 )]
@@ -194,15 +186,15 @@ margin_right = 1253.0
margin_bottom = 661.0
[node name="Empty" type="CenterContainer" parent="MainPanel"]
-margin_left = 192.0
-margin_right = 997.0
-margin_bottom = 541.0
+margin_left = 162.0
+margin_right = 1024.0
+margin_bottom = 562.0
[node name="VBoxContainer" type="VBoxContainer" parent="MainPanel/Empty"]
-margin_left = 262.0
-margin_top = 263.0
-margin_right = 542.0
-margin_bottom = 277.0
+margin_left = 291.0
+margin_top = 274.0
+margin_right = 571.0
+margin_bottom = 288.0
[node name="Label" type="Label" parent="MainPanel/Empty/VBoxContainer"]
margin_right = 280.0
@@ -234,7 +226,7 @@ margin_left = 171.799
margin_top = 209.0
margin_right = 267.799
margin_bottom = 229.0
-items = [ "Show in File Manager", ExtResource( 26 ), 0, false, false, 0, 0, null, "", false, "Remove Theme", ExtResource( 22 ), 0, false, false, 1, 0, null, "", false ]
+items = [ "Show in File Manager", ExtResource( 26 ), 0, false, false, 0, 0, null, "", false, "Remove Theme", ExtResource( 22 ), 0, false, false, 1, 0, null, "", false, "Duplicate Theme", ExtResource( 11 ), 0, false, false, 2, 0, null, "", false ]
__meta__ = {
"_edit_use_anchors_": false
}
@@ -298,4 +290,3 @@ dialog_text = "Are you sure you want to remove this timeline?
__meta__ = {
"_edit_use_anchors_": false
}
-[connection signal="gui_input" from="ToolBar/Logo" to="." method="_on_Logo_gui_input"]
diff --git a/addons/dialogic/Editor/MasterTree/MasterTree.gd b/addons/dialogic/Editor/MasterTree/MasterTree.gd
index 0cc661c..f9c0891 100644
--- a/addons/dialogic/Editor/MasterTree/MasterTree.gd
+++ b/addons/dialogic/Editor/MasterTree/MasterTree.gd
@@ -1,26 +1,31 @@
tool
extends Tree
-onready var editor_reference = get_node('../..')
-onready var timeline_editor = get_node('../TimelineEditor')
-onready var character_editor = get_node('../CharacterEditor')
-onready var definition_editor = get_node('../DefinitionEditor')
-onready var settings_editor = get_node('../SettingsEditor')
-onready var theme_editor = get_node('../ThemeEditor')
-onready var empty_editor = get_node('../Empty')
+onready var editor_reference = get_node('../../../')
+onready var timeline_editor = get_node('../../TimelineEditor')
+onready var character_editor = get_node('../../CharacterEditor')
+onready var definition_editor = get_node('../../DefinitionEditor')
+onready var settings_editor = get_node('../../SettingsEditor')
+onready var theme_editor = get_node('../../ThemeEditor')
+onready var empty_editor = get_node('../../Empty')
+onready var filter_tree_edit = get_node('../FilterMasterTreeEdit')
onready var tree = self
-var timeline_icon = load("res://addons/dialogic/Images/timeline.svg")
-var character_icon = load("res://addons/dialogic/Images/character.svg")
-var theme_icon = load("res://addons/dialogic/Images/Resources/theme.svg")
-var definition_icon = load("res://addons/dialogic/Images/Resources/definition.svg")
-var glossary_icon = load("res://addons/dialogic/Images/Resources/glossary.svg")
+
+var timeline_icon
+var character_icon
+var theme_icon
+var definition_icon
+var glossary_icon
+
var timelines_tree
var characters_tree
var definitions_tree
var themes_tree
var settings_tree
+var filter_tree_term = ''
+
signal editor_selected(selected)
func _ready():
@@ -28,26 +33,49 @@ func _ready():
var root = tree.create_item()
tree.set_hide_root(true)
+ var modifier = ''
+ var _scale = get_constant("inspector_margin", "Editor")
+ _scale = _scale * 0.125
+ rect_min_size.x = 150
+ if _scale == 1.25:
+ modifier = '-1.25'
+ rect_min_size.x = 180
+ if _scale == 1.5:
+ modifier = '-1.25'
+ rect_min_size.x = 250
+ if _scale == 1.75:
+ modifier = '-1.25'
+ rect_min_size.x = 250
+ if _scale == 2:
+ modifier = '-2'
+ rect_min_size.x = 360
+ rect_size.x = 0
+ timeline_icon = load("res://addons/dialogic/Images/Resources/timeline" + modifier + ".svg")
+ character_icon = load("res://addons/dialogic/Images/Resources/character" + modifier + ".svg")
+ theme_icon = load("res://addons/dialogic/Images/Resources/theme" + modifier + ".svg")
+ definition_icon = load("res://addons/dialogic/Images/Resources/definition" + modifier + ".svg")
+ glossary_icon = load("res://addons/dialogic/Images/Resources/glossary" + modifier + ".svg")
+
# Creating the parents
timelines_tree = tree.create_item(root)
timelines_tree.set_selectable(0, false)
timelines_tree.set_text(0, "Timelines")
- #timelines_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
+ timelines_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
characters_tree = tree.create_item(root)
characters_tree.set_selectable(0, false)
characters_tree.set_text(0, "Characters")
- #characters_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
+ characters_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
definitions_tree = tree.create_item(root)
definitions_tree.set_selectable(0, false)
definitions_tree.set_text(0, "Definitions")
- #definitions_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
+ definitions_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
themes_tree = tree.create_item(root)
themes_tree.set_selectable(0, false)
themes_tree.set_text(0, "Themes")
- #themes_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
+ themes_tree.set_icon(0, get_icon("Folder", "EditorIcons"))
settings_tree = tree.create_item(root)
settings_tree.set_selectable(0, true)
@@ -62,6 +90,8 @@ func _ready():
connect('item_edited', self, '_on_item_edited')
$RenamerReset.connect("timeout", self, '_on_renamer_reset_timeout')
+ filter_tree_edit.connect("text_changed", self, '_on_filter_tree_edit_changed')
+
#var subchild1 = tree.create_item(timelines_tree)
#subchild1.set_text(0, "Subchild1")
@@ -93,7 +123,13 @@ func _clear_tree_children(parent: TreeItem):
func build_timelines(selected_item: String=''):
_clear_tree_children(timelines_tree)
for t in DialogicUtil.get_sorted_timeline_list():
- _add_timeline(t, not selected_item.empty() and t['file'] == selected_item)
+ if (filter_tree_term != ''):
+ if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()):
+ _add_timeline(t, not selected_item.empty() and t['file'] == selected_item)
+ else:
+ _add_timeline(t, not selected_item.empty() and t['file'] == selected_item)
+ # force redraw control
+ update()
func _add_timeline(timeline, select = false):
@@ -115,7 +151,13 @@ func _add_timeline(timeline, select = false):
func build_themes(selected_item: String=''):
_clear_tree_children(themes_tree)
for t in DialogicUtil.get_sorted_theme_list():
- _add_theme(t, not selected_item.empty() and t['file'] == selected_item)
+ if (filter_tree_term != ''):
+ if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()):
+ _add_theme(t, not selected_item.empty() and t['file'] == selected_item)
+ else:
+ _add_theme(t, not selected_item.empty() and t['file'] == selected_item)
+ # force redraw tree
+ update()
func _add_theme(theme_item, select = false):
@@ -133,7 +175,13 @@ func _add_theme(theme_item, select = false):
func build_characters(selected_item: String=''):
_clear_tree_children(characters_tree)
for t in DialogicUtil.get_sorted_character_list():
- _add_character(t, not selected_item.empty() and t['file'] == selected_item)
+ if (filter_tree_term != ''):
+ if (filter_tree_term.to_lower() in t['file'].to_lower() or filter_tree_term.to_lower() in t['name'].to_lower()):
+ _add_character(t, not selected_item.empty() and t['file'] == selected_item)
+ else:
+ _add_character(t, not selected_item.empty() and t['file'] == selected_item)
+ # force redraw tree
+ update()
func _add_character(character, select = false):
@@ -156,7 +204,13 @@ func _add_character(character, select = false):
func build_definitions(selected_item: String=''):
_clear_tree_children(definitions_tree)
for t in DialogicUtil.get_sorted_default_definitions_list():
- _add_definition(t, not selected_item.empty() and t['id'] == selected_item)
+ if (filter_tree_term != ''):
+ if (filter_tree_term.to_lower() in t['name'].to_lower()):
+ _add_definition(t, not selected_item.empty() and t['id'] == selected_item)
+ else:
+ _add_definition(t, not selected_item.empty() and t['id'] == selected_item)
+ # force redraw tree
+ update()
func _add_definition(definition, select = false):
@@ -209,6 +263,7 @@ func show_character_editor():
settings_editor.visible = false
empty_editor.visible = false
+
func show_timeline_editor():
emit_signal("editor_selected", 'timeline')
character_editor.visible = false
@@ -218,6 +273,7 @@ func show_timeline_editor():
settings_editor.visible = false
empty_editor.visible = false
+
func show_definition_editor():
emit_signal("editor_selected", 'definition')
character_editor.visible = false
@@ -227,6 +283,7 @@ func show_definition_editor():
settings_editor.visible = false
empty_editor.visible = false
+
func show_theme_editor():
emit_signal("editor_selected", 'theme')
character_editor.visible = false
@@ -236,6 +293,7 @@ func show_theme_editor():
settings_editor.visible = false
empty_editor.visible = false
+
func show_settings_editor():
emit_signal("editor_selected", 'theme')
character_editor.visible = false
@@ -245,6 +303,7 @@ func show_settings_editor():
settings_editor.visible = true
empty_editor.visible = false
+
func hide_all_editors():
emit_signal("editor_selected", 'none')
character_editor.visible = false
@@ -279,7 +338,8 @@ func remove_selected():
func refresh_timeline_list():
- print('update timeline list')
+ #print('update timeline list')
+ pass
func _on_renamer_reset_timeout():
@@ -296,7 +356,6 @@ func _on_gui_input(event):
func _on_item_edited():
- print('edited')
var item = get_selected()
var metadata = item.get_metadata(0)
if metadata['editor'] == 'Timeline':
@@ -320,6 +379,14 @@ func _on_item_edited():
func _on_autosave_timeout():
save_current_resource()
+
+
+func _on_filter_tree_edit_changed(value):
+ filter_tree_term = value
+ build_timelines()
+ build_themes()
+ build_characters()
+ build_definitions()
func save_current_resource():
@@ -336,3 +403,56 @@ func save_current_resource():
if metadata['editor'] == 'Definition':
definition_editor.save_definition()
# Note: Theme files auto saves on change
+
+
+func select_timeline_item(timeline_name):
+ if (timeline_name == ''):
+ return
+
+ var main_item = tree.get_root().get_children()
+
+ # wow, godots tree traversal is extremly odd, or I just don't get it
+ while (main_item):
+
+ if (main_item == null):
+ break
+
+ if (main_item.has_method("get_text") && main_item.get_text(0) == "Timelines"):
+ var item = main_item.get_children()
+ while (item):
+
+ if (not item.has_method("get_metadata")):
+ item = item.get_next()
+ continue
+
+ var meta = item.get_metadata(0)
+
+ if (meta == null):
+ item = item.get_next()
+ continue
+
+ if (not meta.has("editor") or meta["editor"] != "Timeline"):
+ item = item.get_next()
+ continue
+
+ # search for filename
+ if (meta.has("file") and meta["file"] == timeline_name):
+ # select this one
+ item.select(0)
+ return;
+
+ # search for name
+ if (meta.has("name") and meta["name"] == timeline_name):
+ # select this one
+ item.select(0)
+ return;
+
+ item = item.get_next()
+ break
+ else:
+ main_item = main_item.get_next()
+
+ # fallback
+ hide_all_editors()
+ pass
+
diff --git a/addons/dialogic/Editor/Pieces/CallNode.gd b/addons/dialogic/Editor/Pieces/CallNode.gd
new file mode 100644
index 0000000..7380718
--- /dev/null
+++ b/addons/dialogic/Editor/Pieces/CallNode.gd
@@ -0,0 +1,93 @@
+tool
+extends Control
+
+var editor_reference
+var editorPopup
+
+
+# This is the information of this event and it will get parsed and saved to the JSON file.
+var event_data = {
+ 'call_node': {
+ 'target_node_path': '',
+ 'method_name': '',
+ 'arguments': []
+ }
+}
+
+
+func load_data(data):
+ event_data = data
+
+ if (not event_data['call_node']['arguments'] is Array):
+ event_data['call_node']['arguments'] = []
+
+ for i in range(event_data['call_node']['arguments'].size()):
+ if (event_data['call_node']['arguments'][i] == null):
+ event_data['call_node']['arguments'][i] = ''
+
+ $PanelContainer/VBoxContainer/Properties/TargetNodeEdit.text = event_data['call_node']['target_node_path']
+ $PanelContainer/VBoxContainer/Properties/CallMethodEdit.text = event_data['call_node']['method_name']
+ $PanelContainer/VBoxContainer/Properties/ArgumentsSpinBox.value = event_data['call_node']['arguments'].size()
+
+ _create_argument_controls()
+
+
+# signal callbacks
+
+func _on_Target_LineEdit_text_changed(new_text):
+ event_data['call_node']['target_node_path'] = new_text
+
+func _on_Method_LineEdit_text_changed(new_text):
+ event_data['call_node']['method_name'] = new_text
+
+func _on_ArgumentsSpinBox_value_changed(value):
+ event_data['call_node']['arguments'].resize(max(0, value))
+
+ for i in range(event_data['call_node']['arguments'].size()):
+ if (event_data['call_node']['arguments'][i] == null):
+ event_data['call_node']['arguments'][i] = ''
+
+ _create_argument_controls()
+ pass
+
+func _on_argument_value_changed(value, arg_index):
+ if (arg_index < 0 or arg_index >= event_data['call_node']['arguments'].size()):
+ return
+
+ event_data['call_node']['arguments'][arg_index] = str(value)
+ pass
+
+# helpers
+func _create_argument_controls():
+ if (not event_data['call_node']['arguments'] is Array):
+ return
+
+ # clear old
+ for c in $PanelContainer/VBoxContainer/Arguments.get_children():
+ $PanelContainer/VBoxContainer/Arguments.remove_child(c)
+ c.queue_free()
+
+ # create controls
+ var index = 0
+ for a in event_data['call_node']['arguments']:
+ var container = HBoxContainer.new()
+ container.name = "Argument%s" % index
+
+ var label = Label.new()
+ label.name = "ArgumentLabel"
+ label.text = "Argument %s:" % index
+ label.rect_min_size.x = 100
+ container.add_child(label)
+
+ var edit = LineEdit.new()
+ edit.name = "ArgumentValue"
+ edit.text = str(a)
+ edit.connect("text_changed", self, "_on_argument_value_changed", [ index ])
+ edit.rect_min_size.x = 250
+ container.add_child(edit)
+
+ $PanelContainer/VBoxContainer/Arguments.add_child(container)
+
+ index += 1
+
+ pass
diff --git a/addons/dialogic/Editor/Pieces/CallNode.tscn b/addons/dialogic/Editor/Pieces/CallNode.tscn
new file mode 100644
index 0000000..5640ce5
--- /dev/null
+++ b/addons/dialogic/Editor/Pieces/CallNode.tscn
@@ -0,0 +1,143 @@
+[gd_scene load_steps=6 format=2]
+
+[ext_resource path="res://addons/dialogic/Images/Script.svg" type="Texture" id=1]
+[ext_resource path="res://addons/dialogic/Editor/Pieces/CallNode.gd" type="Script" id=2]
+[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/Spacer.tscn" type="PackedScene" id=3]
+[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn" type="PackedScene" id=4]
+
+[sub_resource type="StyleBoxFlat" id=1]
+content_margin_left = 16.0
+content_margin_right = 6.0
+content_margin_top = 6.0
+content_margin_bottom = 6.0
+bg_color = Color( 0.14902, 0.333333, 0.509804, 0.4 )
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color( 0.12549, 0.12549, 0.12549, 1 )
+corner_radius_top_left = 6
+corner_radius_top_right = 6
+corner_radius_bottom_right = 6
+corner_radius_bottom_left = 6
+
+[node name="CallNode" type="HBoxContainer"]
+margin_right = 1004.0
+margin_bottom = 100.0
+size_flags_horizontal = 3
+size_flags_vertical = 9
+script = ExtResource( 2 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Indent" type="Control" parent="."]
+visible = false
+margin_bottom = 42.0
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+margin_right = 1004.0
+margin_bottom = 100.0
+mouse_filter = 1
+size_flags_horizontal = 3
+size_flags_vertical = 3
+custom_styles/panel = SubResource( 1 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
+margin_left = 16.0
+margin_top = 6.0
+margin_right = 998.0
+margin_bottom = 94.0
+size_flags_horizontal = 3
+
+[node name="Header" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+margin_right = 982.0
+margin_bottom = 28.0
+
+[node name="TextureRect" type="TextureRect" parent="PanelContainer/VBoxContainer/Header"]
+margin_right = 22.0
+margin_bottom = 28.0
+texture = ExtResource( 1 )
+stretch_mode = 6
+
+[node name="Title" type="Label" parent="PanelContainer/VBoxContainer/Header"]
+margin_left = 26.0
+margin_top = 7.0
+margin_right = 87.0
+margin_bottom = 21.0
+text = "Call Node"
+
+[node name="Preview" type="Label" parent="PanelContainer/VBoxContainer/Header"]
+margin_left = 91.0
+margin_top = 7.0
+margin_right = 91.0
+margin_bottom = 21.0
+custom_colors/font_color = Color( 1, 1, 1, 0.513726 )
+
+[node name="Spacer" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 3 )]
+margin_left = 95.0
+margin_right = 941.0
+margin_bottom = 28.0
+
+[node name="OptionButton" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 4 )]
+margin_left = 945.0
+margin_right = 982.0
+margin_bottom = 28.0
+items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ]
+
+[node name="Properties" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+margin_top = 32.0
+margin_right = 982.0
+margin_bottom = 56.0
+custom_constants/separation = 8
+
+[node name="TargetNodeLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"]
+margin_top = 5.0
+margin_right = 81.0
+margin_bottom = 19.0
+text = "Target Node:"
+
+[node name="TargetNodeEdit" type="LineEdit" parent="PanelContainer/VBoxContainer/Properties"]
+margin_left = 89.0
+margin_right = 339.0
+margin_bottom = 24.0
+rect_min_size = Vector2( 250, 0 )
+
+[node name="CallMethodLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"]
+margin_left = 347.0
+margin_top = 5.0
+margin_right = 427.0
+margin_bottom = 19.0
+text = "Call Method:"
+
+[node name="CallMethodEdit" type="LineEdit" parent="PanelContainer/VBoxContainer/Properties"]
+margin_left = 435.0
+margin_right = 635.0
+margin_bottom = 24.0
+rect_min_size = Vector2( 200, 0 )
+
+[node name="ArgumentsLabel" type="Label" parent="PanelContainer/VBoxContainer/Properties"]
+margin_left = 643.0
+margin_top = 5.0
+margin_right = 717.0
+margin_bottom = 19.0
+text = "Arguments:"
+
+[node name="ArgumentsSpinBox" type="SpinBox" parent="PanelContainer/VBoxContainer/Properties"]
+margin_left = 725.0
+margin_right = 799.0
+margin_bottom = 24.0
+max_value = 99.0
+
+[node name="Arguments" type="VBoxContainer" parent="PanelContainer/VBoxContainer"]
+margin_top = 60.0
+margin_right = 982.0
+margin_bottom = 60.0
+custom_constants/separation = 5
+
+[connection signal="text_changed" from="PanelContainer/VBoxContainer/Properties/TargetNodeEdit" to="." method="_on_Target_LineEdit_text_changed"]
+[connection signal="text_changed" from="PanelContainer/VBoxContainer/Properties/CallMethodEdit" to="." method="_on_Method_LineEdit_text_changed"]
+[connection signal="value_changed" from="PanelContainer/VBoxContainer/Properties/ArgumentsSpinBox" to="." method="_on_ArgumentsSpinBox_value_changed"]
diff --git a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd
index 213e32a..b339355 100644
--- a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd
+++ b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.gd
@@ -21,8 +21,7 @@ func _on_OptionSelected(index):
timeline_editor.move_block(current_piece, 'down')
elif index == 3:
# Removing a piece
- if timeline_editor.selected_item == current_piece:
- timeline_editor.selected_item = null
- # TODO: Add a warning here if the event has changes
- current_piece.queue_free()
+ if timeline_editor.selected_item != current_piece:
+ timeline_editor._select_item(current_piece)
+ timeline_editor.delete_event()
timeline_editor.indent_events()
diff --git a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn
index 4518994..f9c22f2 100644
--- a/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn
+++ b/addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn
@@ -11,7 +11,7 @@ text = "Item 0"
icon = ExtResource( 1 )
clip_text = true
align = 2
-items = [ "Move Up", null, 0, false, false, 0, 0, null, "", false, "Move Down", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ]
+items = [ "Move Up (Alt+Up)", null, 0, false, false, 0, 0, null, "", false, "Move Down (Alt+Down)", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, 2, 0, null, "", true, "Remove", null, 0, false, false, 3, 0, null, "", false ]
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
diff --git a/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd b/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd
new file mode 100644
index 0000000..48c9704
--- /dev/null
+++ b/addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd
@@ -0,0 +1,8 @@
+tool
+extends SpinBox
+
+func can_drop_data(position, data):
+ # this prevents locking the mouse
+ # on some operating systems
+ # due to a godot editor bug with SpinBox drag/drop
+ return false
diff --git a/addons/dialogic/Editor/Pieces/IfCondition.tscn b/addons/dialogic/Editor/Pieces/IfCondition.tscn
index a06688b..3d7c195 100644
--- a/addons/dialogic/Editor/Pieces/IfCondition.tscn
+++ b/addons/dialogic/Editor/Pieces/IfCondition.tscn
@@ -75,8 +75,9 @@ margin_bottom = 28.0
[node name="CustomLineEdit" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 6 )]
margin_left = 256.0
-margin_right = 304.0
+margin_right = 352.0
margin_bottom = 28.0
+hint_tooltip = "you can enter a text-value, a number or you can enter the name of another definition to compare against."
[node name="Preview" type="Label" parent="PanelContainer/VBoxContainer/Header"]
margin_left = 308.0
diff --git a/addons/dialogic/Editor/Pieces/SceneEvent.gd b/addons/dialogic/Editor/Pieces/SceneEvent.gd
index a82d9d3..ca440e4 100644
--- a/addons/dialogic/Editor/Pieces/SceneEvent.gd
+++ b/addons/dialogic/Editor/Pieces/SceneEvent.gd
@@ -18,7 +18,7 @@ func _ready():
func _on_ImageButton_pressed():
- editor_reference.godot_dialog("*.png, *.jpg, *.jpeg, *.tga, *.svg, *.svgz, *.bmp, *.webp;Image")
+ editor_reference.godot_dialog("*.png, *.jpg, *.jpeg, *.tga, *.svg, *.svgz, *.bmp, *.webp, *.tscn")
editor_reference.godot_dialog_connect(self, "_on_file_selected")
@@ -33,8 +33,8 @@ func load_data(data):
func load_image(img_src):
event_data['background'] = img_src
- if event_data['background'] != '':
- $PanelContainer/VBoxContainer/HBoxContainer/LineEdit.text = event_data['background']
+ $PanelContainer/VBoxContainer/HBoxContainer/LineEdit.text = event_data['background']
+ if event_data['background'] != '' and not event_data['background'].ends_with('.tscn'):
$PanelContainer/VBoxContainer/TextureRect.texture = load(event_data['background'])
$PanelContainer/VBoxContainer/TextureRect.rect_min_size = Vector2(200,200)
preview = event_data['background']
diff --git a/addons/dialogic/Editor/Pieces/TextBlock.gd b/addons/dialogic/Editor/Pieces/TextBlock.gd
index ae56a46..aa8b1b7 100644
--- a/addons/dialogic/Editor/Pieces/TextBlock.gd
+++ b/addons/dialogic/Editor/Pieces/TextBlock.gd
@@ -1,7 +1,7 @@
tool
extends Control
-var text_height = 26
+var text_height = 21
var editor_reference
var preview = ''
onready var toggler = get_node("PanelContainer/VBoxContainer/Header/VisibleToggle")
@@ -16,7 +16,11 @@ var event_data = {
onready var portrait_picker = $PanelContainer/VBoxContainer/Header/PortraitPicker
func _ready():
+ var _scale = get_constant("inspector_margin", "Editor")
+ _scale = _scale * 0.125
+ text_height = text_height * _scale
connect("gui_input", self, '_on_gui_input')
+ $PanelContainer/VBoxContainer/TextEdit.connect("focus_entered", self, "_on_TextEdit_focus_entered")
$PanelContainer/VBoxContainer/TextEdit.set("rect_min_size", Vector2(0, 80))
$PanelContainer/VBoxContainer/Header/CharacterPicker.connect('character_selected', self , '_on_character_selected')
portrait_picker.get_popup().connect("index_pressed", self, '_on_portrait_selected')
@@ -96,5 +100,26 @@ func _on_gui_input(event):
toggler.pressed = true
+func _on_TextEdit_focus_entered():
+ # propagate to timeline to make this text event as active selected
+ # to help improve keyboard shortcut workflows
+ # only maybe only do this on left click since mouse wheel and
+ # touch scrolling may triggers this event too
+ if (Input.is_mouse_button_pressed(BUTTON_LEFT)):
+ var timeline_editor = editor_reference.get_node_or_null('MainPanel/TimelineEditor')
+ if (timeline_editor != null):
+ # @todo select item and clear selection is marked as "private" in TimelineEditor.gd
+ # consider to make it "public" or add a public helper function
+ timeline_editor._clear_selection()
+ timeline_editor._select_item(self)
+ pass
+
+
func _on_saver_timer_timeout():
update_preview()
+
+
+# gets called when the user selects this node in the timeline
+func on_timeline_selected():
+ $PanelContainer/VBoxContainer/TextEdit.grab_focus()
+ pass
diff --git a/addons/dialogic/Editor/Pieces/TextBlock.tscn b/addons/dialogic/Editor/Pieces/TextBlock.tscn
index fa5541d..8f21ebd 100644
--- a/addons/dialogic/Editor/Pieces/TextBlock.tscn
+++ b/addons/dialogic/Editor/Pieces/TextBlock.tscn
@@ -76,9 +76,9 @@ stretch_mode = 6
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Header"]
visible = false
-margin_left = 60.0
+margin_left = 35.0
margin_top = 8.0
-margin_right = 103.0
+margin_right = 78.0
margin_bottom = 22.0
text = " Text "
@@ -93,6 +93,8 @@ margin_right = 149.0
[node name="PortraitPicker" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 7 )]
visible = false
+margin_left = 153.0
+margin_right = 187.0
[node name="VisibleToggle" parent="PanelContainer/VBoxContainer/Header" instance=ExtResource( 2 )]
margin_left = 153.0
@@ -127,4 +129,5 @@ size_flags_vertical = 3
show_line_numbers = true
smooth_scrolling = true
wrap_enabled = true
+
[connection signal="text_changed" from="PanelContainer/VBoxContainer/TextEdit" to="." method="_on_TextEdit_text_changed"]
diff --git a/addons/dialogic/Editor/Pieces/WaitSeconds.tscn b/addons/dialogic/Editor/Pieces/WaitSeconds.tscn
index 3a60230..90d8783 100644
--- a/addons/dialogic/Editor/Pieces/WaitSeconds.tscn
+++ b/addons/dialogic/Editor/Pieces/WaitSeconds.tscn
@@ -1,9 +1,10 @@
-[gd_scene load_steps=6 format=2]
+[gd_scene load_steps=8 format=2]
[ext_resource path="res://addons/dialogic/Images/Events/Wait.svg" type="Texture" id=1]
[ext_resource path="res://addons/dialogic/Editor/Pieces/WaitSeconds.gd" type="Script" id=2]
[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/Spacer.tscn" type="PackedScene" id=3]
[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/PieceExtraSettings.tscn" type="PackedScene" id=4]
+[ext_resource path="res://addons/dialogic/Editor/Pieces/Common/SpinBoxPreventDnD.gd" type="Script" id=6]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 16.0
@@ -78,6 +79,7 @@ min_value = 0.1
value = 0.1
allow_greater = true
align = 1
+script = ExtResource( 6 )
[node name="Title2" type="Label" parent="PanelContainer/VBoxContainer/Header"]
margin_left = 157.0
diff --git a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd
index faec1bc..85157eb 100644
--- a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd
+++ b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.gd
@@ -7,7 +7,10 @@ onready var nodes = {
'remove_empty_messages': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer/RemoveEmptyMessages,
'auto_color_names': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3/AutoColorNames,
'propagate_input': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4/PropagateInput,
+ 'dim_characters': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5/DimCharacters,
}
+
+
func _ready():
update_data()
@@ -16,6 +19,7 @@ func _ready():
nodes['remove_empty_messages'].connect('toggled', self, '_on_remove_empty_message_toggled')
nodes['auto_color_names'].connect('toggled', self, '_on_auto_color_names_toggled')
nodes['propagate_input'].connect('toggled', self, '_on_propagate_input_toggled')
+ nodes['dim_characters'].connect('toggled', self, '_on_dim_characters_toggled')
func update_data():
@@ -33,6 +37,8 @@ func dialog_options(settings):
nodes['auto_color_names'].pressed = settings.get_value('dialog', 'auto_color_names')
if settings.has_section_key('dialog', 'propagate_input'):
nodes['propagate_input'].pressed = settings.get_value('dialog', 'propagate_input')
+ if settings.has_section_key('dialog', 'dim_characters'):
+ nodes['dim_characters'].pressed = settings.get_value('dialog', 'dim_characters')
func refresh_themes(settings):
@@ -74,10 +80,14 @@ func _on_new_line_toggled(value):
func _on_auto_color_names_toggled(value):
set_value('dialog', 'auto_color_names', value)
+
func _on_propagate_input_toggled(value):
set_value('dialog', 'propagate_input', value)
+func _on_dim_characters_toggled(value):
+ set_value('dialog', 'dim_characters', value)
+
# Reading and saving data to the settings file
func set_value(section, key, value):
DialogicResources.set_settings_value(section, key, value)
diff --git a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn
index 3eaf266..df0419a 100644
--- a/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn
+++ b/addons/dialogic/Editor/SettingsEditor/SettingsEditor.tscn
@@ -18,19 +18,19 @@ size_flags_vertical = 3
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"]
margin_right = 1024.0
-margin_bottom = 212.0
+margin_bottom = 240.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3"]
-margin_right = 288.0
-margin_bottom = 212.0
+margin_right = 304.0
+margin_bottom = 240.0
custom_constants/separation = 16
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer"]
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 54.0
[node name="Panel" type="Panel" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer"]
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 30.0
rect_min_size = Vector2( 0, 30 )
size_flags_horizontal = 3
@@ -45,7 +45,7 @@ __meta__ = {
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer"]
margin_top = 34.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 54.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer"]
@@ -59,19 +59,23 @@ margin_left = 50.0
margin_right = 190.0
margin_bottom = 20.0
rect_min_size = Vector2( 140, 0 )
-text = "test"
-items = [ "test", null, false, 0, {
-"file": "theme-1616687382.cfg"
+text = "Basic"
+items = [ "Alternative", null, false, 0, {
+"file": "theme-1617143167.cfg"
+}, "Basic", null, false, 1, {
+"file": "theme-1616778229.cfg"
+}, "New Theme", null, false, 2, {
+"file": "theme-1617143282.cfg"
} ]
-selected = 0
+selected = 1
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer"]
margin_top = 70.0
-margin_right = 288.0
-margin_bottom = 212.0
+margin_right = 304.0
+margin_bottom = 240.0
[node name="Panel2" type="Panel" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 30.0
rect_min_size = Vector2( 0, 30 )
size_flags_horizontal = 3
@@ -86,7 +90,7 @@ __meta__ = {
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
margin_top = 34.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 58.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer2"]
@@ -105,7 +109,7 @@ pressed = true
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
margin_top = 62.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 86.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer"]
@@ -116,14 +120,14 @@ text = "Remove empty messages"
[node name="RemoveEmptyMessages" type="CheckBox" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer"]
margin_left = 169.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 24.0
size_flags_horizontal = 3
pressed = true
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
margin_top = 90.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 114.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3"]
@@ -140,7 +144,7 @@ pressed = true
[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
margin_top = 118.0
-margin_right = 288.0
+margin_right = 304.0
margin_bottom = 142.0
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4"]
@@ -154,3 +158,20 @@ margin_left = 223.0
margin_right = 247.0
margin_bottom = 24.0
pressed = true
+
+[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2"]
+margin_top = 146.0
+margin_right = 304.0
+margin_bottom = 170.0
+
+[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5"]
+margin_top = 5.0
+margin_right = 276.0
+margin_bottom = 19.0
+text = "Dim characters when they are not speaking"
+
+[node name="DimCharacters" type="CheckBox" parent="VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5"]
+margin_left = 280.0
+margin_right = 304.0
+margin_bottom = 24.0
+pressed = true
diff --git a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd
index d98d4de..af0d09e 100644
--- a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd
+++ b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd
@@ -2,68 +2,78 @@ tool
extends Control
var editor_reference
-onready var master_tree = get_node('../MasterTree')
+onready var master_tree = get_node('../MasterTreeContainer/MasterTree')
onready var settings_editor = get_node('../SettingsEditor')
var current_theme = ''
+# When loading the variables to the input fields in the
+# load_theme function, every element thinks the value was updated
+# so it has to perform a "saving" of that property.
+# The loading variable is a way to check if the values should be saved
+# or not.
+var loading = true
+
# The amazing and revolutionary path system that magically works and you can't
# complain because "that is not how you are supposed to work". If there was only
# a way to set an id and then access that node via id...
# Here you have paths in all its glory. Praise the paths (っ´ω`c)♡
onready var n = {
# Text
- 'theme_text_shadow': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/CheckBoxShadow,
- 'theme_text_shadow_color': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/ColorPickerButtonShadow,
- 'theme_text_color': $VBoxContainer/HBoxContainer2/Text/GridContainer/ColorPickerButton,
- 'theme_font': $VBoxContainer/HBoxContainer2/Text/GridContainer/FontButton,
- 'theme_shadow_offset_x': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetX,
- 'theme_shadow_offset_y': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetY,
- 'theme_text_speed': $VBoxContainer/HBoxContainer2/Text/GridContainer/TextSpeed,
- 'alignment': $VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3/Alignment,
+ 'theme_text_shadow': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/CheckBoxShadow,
+ 'theme_text_shadow_color': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow,
+ 'theme_text_color': $VBoxContainer/TabContainer/Text/Column/GridContainer/ColorPickerButton,
+ 'theme_font': $VBoxContainer/TabContainer/Text/Column/GridContainer/FontButton,
+ 'theme_shadow_offset_x': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetX,
+ 'theme_shadow_offset_y': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetY,
+ 'theme_text_speed': $VBoxContainer/TabContainer/Text/Column/GridContainer/TextSpeed,
+ 'alignment': $VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3/Alignment,
# Dialog box
- 'background_texture_button_visible': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/CheckBox,
- 'theme_background_image': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/BackgroundTextureButton,
- 'theme_next_image': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextIndicatorButton,
- 'next_animation': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextAnimation,
- 'theme_action_key': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton,
- 'theme_background_color_visible': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/CheckBox,
- 'theme_background_color': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/ColorPickerButton,
- 'theme_text_margin': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetV,
- 'theme_text_margin_h': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetH,
- 'size_w': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeW,
- 'size_h': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeH,
- 'bottom_gap': $VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5/BottomGap,
+ 'background_texture_button_visible': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/CheckBox",
+ 'theme_background_image': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/BackgroundTextureButton",
+ 'theme_next_image': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextIndicatorButton",
+ 'next_animation': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextAnimation",
+ 'theme_action_key': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton",
+ 'theme_background_color_visible': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/CheckBox",
+ 'theme_background_color': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/ColorPickerButton",
+ 'theme_text_margin': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetV",
+ 'theme_text_margin_h': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetH",
+ 'size_w': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeW",
+ 'size_h': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeH",
+ 'bottom_gap': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5/BottomGap",
+ 'background_modulation': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/CheckBox",
+ 'background_modulation_color': $"VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/ColorPickerButton",
+
# Buttons
- 'button_text_color_enabled': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/CheckBox2,
- 'button_text_color': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/ButtonTextColor,
- 'button_background': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/ColorPickerButton,
- 'button_background_visible': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/CheckBox,
- 'button_image': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/BackgroundTextureButton,
- 'button_image_visible': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/CheckBox,
- 'button_offset_x': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetH,
- 'button_offset_y': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetV,
- 'button_separation': $VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/VerticalSeparation,
+ 'button_text_color_enabled': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/CheckBox2",
+ 'button_text_color': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/ButtonTextColor",
+ 'button_background': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/ColorPickerButton",
+ 'button_background_visible': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/CheckBox",
+ 'button_image': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/BackgroundTextureButton",
+ 'button_image_visible': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/CheckBox",
+ 'button_offset_x': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetH",
+ 'button_offset_y': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetV",
+ 'button_separation': $"VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/VerticalSeparation",
# Definitions
- 'glossary_font': $VBoxContainer/HBoxContainer2/Glossary/GridContainer/FontButton,
- 'glossary_color': $VBoxContainer/HBoxContainer2/Glossary/GridContainer/ColorPickerButton,
+ 'glossary_font': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton,
+ 'glossary_color': $VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton,
+
# Text preview
- 'preview_panel': $VBoxContainer/Panel,
'text_preview': $VBoxContainer/HBoxContainer3/TextEdit,
# Character Names
- 'name_auto_color': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/CheckBox,
- 'name_background_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/CheckBox,
- 'name_background': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/ColorPickerButton,
- 'name_image': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/BackgroundTextureButton,
- 'name_image_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/CheckBox,
- 'name_shadow': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/ColorPickerButtonShadow,
- 'name_shadow_visible': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/CheckBoxShadow,
- 'name_shadow_offset_x': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetX,
- 'name_shadow_offset_y': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetY,
- 'name_bottom_gap': $VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5/BottomGap,
+ 'name_auto_color': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/CheckBox",
+ 'name_background_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/CheckBox",
+ 'name_background': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/ColorPickerButton",
+ 'name_image': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/BackgroundTextureButton",
+ 'name_image_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/CheckBox",
+ 'name_shadow': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/ColorPickerButtonShadow",
+ 'name_shadow_visible': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/CheckBoxShadow",
+ 'name_shadow_offset_x': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetX",
+ 'name_shadow_offset_y': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetY",
+ 'name_bottom_gap': $"VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5/BottomGap",
}
func _ready():
@@ -73,11 +83,15 @@ func _ready():
$VBoxContainer/HBoxContainer3/PreviewButton.icon = load("res://addons/dialogic/Images/Plugin/plugin-editor-icon-dark-theme.svg")
else:
$VBoxContainer/HBoxContainer3/PreviewButton.icon = load("res://addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme.svg")
+
+ $DelayPreviewTimer.one_shot = true
+ $DelayPreviewTimer.connect("timeout", self, '_on_DelayPreview_timer_timeout')
# Force preview update
_on_visibility_changed()
func load_theme(filename):
+ loading = true
current_theme = filename
var theme = DialogicResources.get_theme_config(filename)
# Settings
@@ -89,6 +103,10 @@ func load_theme(filename):
n['theme_background_color'].color = Color(theme.get_value('background', 'color', '#ff000000'))
n['theme_background_color_visible'].pressed = theme.get_value('background', 'use_color', false)
n['theme_next_image'].text = DialogicResources.get_filename_from_path(theme.get_value('next_indicator', 'image', 'res://addons/dialogic/Images/next-indicator.png'))
+
+ n['background_modulation'].pressed = theme.get_value('background', 'modulation', false)
+ n['background_modulation_color'].color = Color(theme.get_value('background', 'modulation_color', '#ffffffff'))
+
var size_value = theme.get_value('box', 'size', Vector2(910, 167))
n['size_w'].value = size_value.x
@@ -160,6 +178,8 @@ func load_theme(filename):
# Preview text
n['text_preview'].text = theme.get_value('text', 'preview', 'This is preview text. You can use [color=#A5EFAC]BBCode[/color] to style it.\n[wave amp=50 freq=2]You can even use effects![/wave]')
+ # Finished loading
+ loading = false
# Updating the preview
_on_PreviewButton_pressed()
@@ -171,18 +191,29 @@ func new_theme():
load_theme(theme_file)
# Check if it is the only theme to set as default
if DialogicUtil.get_theme_list().size() == 1:
- print('only theme, setting as default')
+ #print('only theme, setting as default')
settings_editor.set_value('theme', 'default', theme_file)
+func duplicate_theme(from_filename):
+ var duplicate_theme = 'theme-' + str(OS.get_unix_time()) + '.cfg'
+ DialogicResources.duplicate_theme(from_filename, duplicate_theme)
+ DialogicResources.set_theme_value(duplicate_theme, 'settings', 'name', duplicate_theme)
+ master_tree.build_themes(duplicate_theme)
+ load_theme(duplicate_theme)
+
+
func _on_BackgroundTextureButton_pressed():
editor_reference.godot_dialog("*.png")
editor_reference.godot_dialog_connect(self, "_on_background_selected")
func _on_background_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'background','image', path)
n['theme_background_image'].text = DialogicResources.get_filename_from_path(path)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_NextIndicatorButton_pressed():
@@ -191,36 +222,54 @@ func _on_NextIndicatorButton_pressed():
func _on_indicator_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'next_indicator','image', path)
n['theme_next_image'].text = DialogicResources.get_filename_from_path(path)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_NextAnimation_item_selected(index):
DialogicResources.set_theme_value(current_theme, 'next_indicator', 'animation', n['next_animation'].get_item_text(index))
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_ColorPickerButton_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_ColorPickerButtonShadow_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','shadow_color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_CheckBoxShadow_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','shadow', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_ShadowOffset_value_changed(_value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','shadow_offset', Vector2(n['theme_shadow_offset_x'].value,n['theme_shadow_offset_y'].value))
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_PreviewButton_pressed():
- for i in n['preview_panel'].get_children():
+ for i in $VBoxContainer/Panel.get_children():
i.free()
var dialogic_node = load("res://addons/dialogic/Dialog.tscn")
var preview_dialog = dialogic_node.instance()
+ preview_dialog.timeline = ''
preview_dialog.preview = true
+ preview_dialog.debug_mode = false
preview_dialog.get_node('DefinitionInfo').in_theme_editor = true
# Random character preview if there are any
@@ -230,21 +279,27 @@ func _on_PreviewButton_pressed():
characters.shuffle()
character_file = characters[0]['file']
+ # Loading the theme here because I need it for the parse_alignment
+ preview_dialog.current_theme = preview_dialog.load_theme(current_theme)
+
# Creating the one event timeline for the dialog
+ var text = preview_dialog.parse_definitions(n['text_preview'].text)
preview_dialog.dialog_script['events'] = [{
"character": character_file,
"portrait":'',
- "text": preview_dialog.parse_definitions(n['text_preview'].text)
+ "text": text
}]
preview_dialog.parse_characters(preview_dialog.dialog_script)
preview_dialog.settings = DialogicResources.get_settings_config()
# Alignment
- n['preview_panel'].add_child(preview_dialog)
+ $VBoxContainer/Panel.add_child(preview_dialog)
preview_dialog.load_dialog()
+ # Reloading the theme
preview_dialog.current_theme = preview_dialog.load_theme(current_theme)
+
# When not performing this step, the dialog name doesn't update the color for some reason
# I should probably refactor the preview dialog to stop making everything manually.
if n['name_auto_color'].pressed:
@@ -252,11 +307,13 @@ func _on_PreviewButton_pressed():
preview_dialog.get_node('TextBubble/NameLabel').set('custom_colors/font_color', characters[0]['color'])
# maintaining the preview panel big enough for the dialog box
- n['preview_panel'].rect_min_size.y = preview_dialog.current_theme.get_value('box', 'size', Vector2(910, 167)).y + 90 + preview_dialog.current_theme.get_value('box', 'bottom_gap', 40)
- n['preview_panel'].rect_size.y = 0
+ $VBoxContainer/Panel.rect_min_size.y = preview_dialog.current_theme.get_value('box', 'size', Vector2(910, 167)).y + 90 + preview_dialog.current_theme.get_value('box', 'bottom_gap', 40)
+ $VBoxContainer/Panel.rect_size.y = 0
func _on_ActionOptionButton_item_selected(index):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'settings','action_key', n['theme_action_key'].text)
@@ -274,43 +331,68 @@ func _on_FontButton_pressed():
func _on_Font_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','font', path)
n['theme_font'].text = DialogicResources.get_filename_from_path(path)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_textSpeed_value_changed(value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text','speed', value)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_TextMargin_value_changed(value):
+ if loading == true:
+ return
var final_vector = Vector2(
n['theme_text_margin'].value,
n['theme_text_margin_h'].value
)
DialogicResources.set_theme_value(current_theme, 'text', 'margin', final_vector)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_BackgroundColor_CheckBox_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'background', 'use_color', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_BackgroundColor_ColorPickerButton_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'background', 'color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_BackgroundTexture_CheckBox_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'background', 'use_image', button_pressed)
-
+ _on_PreviewButton_pressed() # Refreshing the preview
+
func _on_button_background_visible_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'use_background_color', button_pressed)
func _on_button_background_color_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'background_color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_ButtonOffset_value_changed(value):
+ if loading == true:
+ return
var final_vector = Vector2(
n['button_offset_x'].value,
n['button_offset_y'].value
@@ -319,10 +401,14 @@ func _on_ButtonOffset_value_changed(value):
func _on_VerticalSeparation_value_changed(value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'gap', n['button_separation'].value)
func _on_button_texture_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'use_image', button_pressed)
@@ -332,29 +418,43 @@ func _on_ButtonTextureButton_pressed():
func _on_button_texture_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'image', path)
n['button_image'].text = DialogicResources.get_filename_from_path(path)
func _on_ButtonTextColor_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'text_color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_Custom_Button_Color_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'buttons', 'text_color_enabled', button_pressed)
func _on_GlossaryColorPicker_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'definitions', 'color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_GlossaryFontButton_pressed():
editor_reference.godot_dialog("*.tres")
editor_reference.godot_dialog_connect(self, "_on_Glossary_Font_selected")
+
func _on_Glossary_Font_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'definitions', 'font', path)
n['glossary_font'].text = DialogicResources.get_filename_from_path(path)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_visibility_changed():
@@ -364,47 +464,69 @@ func _on_visibility_changed():
else:
# Erasing all previews since them keeps working
# on background
- for i in n['preview_panel'].get_children():
+ for i in $VBoxContainer/Panel.get_children():
i.queue_free()
func _on_BoxSize_value_changed(value):
+ if loading == true:
+ return
var size_value = Vector2(n['size_w'].value, n['size_h'].value)
DialogicResources.set_theme_value(current_theme, 'box', 'size', size_value)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_BottomGap_value_changed(value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'box', 'bottom_gap', value)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_Alignment_item_selected(index):
+ if loading == true:
+ return
if index == 0:
DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Left')
elif index == 1:
DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Center')
elif index == 2:
DialogicResources.set_theme_value(current_theme, 'text', 'alignment', 'Right')
-
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_Preview_text_changed():
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'text', 'preview', n['text_preview'].text)
func _on_name_auto_color_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'auto_color', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_name_background_visible_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'background_visible', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_name_background_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'background', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_name_image_visible_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'image_visible', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_name_image_pressed():
@@ -413,22 +535,55 @@ func _on_name_image_pressed():
func _on_name_texture_selected(path, target):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'image', path)
n['name_image'].text = DialogicResources.get_filename_from_path(path)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_shadow_visible_toggled(button_pressed):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'shadow_visible', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_name_shadow_color_changed(color):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'shadow', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
func _on_name_ShadowOffset_value_changed(_value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name','shadow_offset',
Vector2(n['name_shadow_offset_x'].value,n['name_shadow_offset_y'].value))
+ _on_PreviewButton_pressed() # Refreshing the preview
func _on_name_BottomGap_value_changed(value):
+ if loading == true:
+ return
DialogicResources.set_theme_value(current_theme, 'name', 'bottom_gap', value)
+ _on_PreviewButton_pressed() # Refreshing the preview
+
+
+func _on_DelayPreview_timer_timeout():
+ _on_PreviewButton_pressed() # Refreshing the preview
+
+
+func _on_BackgroundTexture_Modulation_toggled(button_pressed):
+ if loading == true:
+ return
+ DialogicResources.set_theme_value(current_theme, 'background', 'modulation', button_pressed)
+ _on_PreviewButton_pressed() # Refreshing the preview
+
+
+func _on_ColorPicker_Background_texture_modulation_color_changed(color):
+ if loading == true:
+ return
+ DialogicResources.set_theme_value(current_theme, 'background', 'modulation_color', '#' + color.to_html())
+ $DelayPreviewTimer.start(0.5) # Calling a timer so the update doesn't get triggered many times
diff --git a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn
index 7c16786..4970f14 100644
--- a/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn
+++ b/addons/dialogic/Editor/ThemeEditor/ThemeEditor.tscn
@@ -1,778 +1,28 @@
-[gd_scene load_steps=4 format=2]
+[gd_scene load_steps=3 format=2]
[ext_resource path="res://addons/dialogic/Images/Plugin/plugin-editor-icon-light-theme.svg" type="Texture" id=1]
[ext_resource path="res://addons/dialogic/Editor/ThemeEditor/ThemeEditor.gd" type="Script" id=2]
-[ext_resource path="res://addons/dialogic/Editor/ThemeEditor/SectionTitle.tscn" type="PackedScene" id=3]
[node name="ThemeEditor" type="ScrollContainer"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = 261.0
+margin_bottom = 232.0
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="."]
-margin_right = 1273.0
-margin_bottom = 701.0
+margin_right = 1285.0
+margin_bottom = 832.0
size_flags_horizontal = 3
size_flags_vertical = 3
custom_constants/separation = 15
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"]
-margin_right = 1273.0
-margin_bottom = 296.0
-
-[node name="Text" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"]
-margin_right = 316.0
-margin_bottom = 296.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/Text"]
-margin_right = 316.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 0, 30 )
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Text/PanelContainer"]
-margin_right = 40.0
-margin_bottom = 14.0
-text = "Text"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Text"]
-margin_top = 34.0
-margin_right = 316.0
-margin_bottom = 202.0
-size_flags_horizontal = 3
-custom_constants/hseparation = 10
-columns = 2
-
-[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 3.0
-margin_right = 148.0
-margin_bottom = 17.0
-size_flags_horizontal = 3
-text = "Font"
-
-[node name="FontButton" type="Button" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_right = 316.0
-margin_bottom = 20.0
-size_flags_vertical = 4
-text = "DefaultFont"
-
-[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 32.0
-margin_right = 148.0
-margin_bottom = 46.0
-text = "Color"
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_top = 24.0
-margin_right = 316.0
-margin_bottom = 54.0
-rect_min_size = Vector2( 50, 30 )
-color = Color( 1, 1, 1, 1 )
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 66.0
-margin_right = 148.0
-margin_bottom = 80.0
-text = "Shadow"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_top = 58.0
-margin_right = 316.0
-margin_bottom = 88.0
-
-[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2"]
-margin_right = 24.0
-margin_bottom = 30.0
-
-[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2"]
-margin_left = 28.0
-margin_right = 158.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 50, 30 )
-size_flags_horizontal = 3
-color = Color( 0, 0, 0, 0.619608 )
-
-[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 97.0
-margin_right = 148.0
-margin_bottom = 111.0
-text = "Shadow Offset"
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_top = 92.0
-margin_right = 316.0
-margin_bottom = 116.0
-custom_constants/separation = 10
-
-[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "X"
-
-[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer"]
-margin_left = 84.0
-margin_right = 158.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "Y"
-
-[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 125.0
-margin_right = 148.0
-margin_bottom = 139.0
-text = "Speed (bigger = slower)"
-
-[node name="TextSpeed" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_top = 120.0
-margin_right = 316.0
-margin_bottom = 144.0
-max_value = 10.0
-value = 2.0
-rounded = true
-
-[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_top = 151.0
-margin_right = 148.0
-margin_bottom = 165.0
-text = "Alignment"
-
-[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Text/GridContainer"]
-margin_left = 158.0
-margin_top = 148.0
-margin_right = 316.0
-margin_bottom = 168.0
-
-[node name="Alignment" type="OptionButton" parent="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3"]
-margin_right = 158.0
-margin_bottom = 20.0
-size_flags_horizontal = 3
-text = "Left"
-items = [ "Left", null, false, 0, null, "Center", null, false, 1, null, "Right", null, false, 2, null ]
-selected = 0
-
-[node name="Glossary" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"]
-margin_left = 320.0
-margin_right = 635.0
-margin_bottom = 296.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="Character Name" parent="VBoxContainer/HBoxContainer2/Glossary" instance=ExtResource( 3 )]
-margin_right = 315.0
-
-[node name="GridContainer2" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Glossary"]
-margin_top = 34.0
-margin_right = 315.0
-margin_bottom = 204.0
-columns = 2
-
-[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 5.0
-margin_right = 126.0
-margin_bottom = 19.0
-text = "Background Color"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_right = 288.0
-margin_bottom = 24.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2"]
-margin_right = 24.0
-margin_bottom = 24.0
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2"]
-margin_left = 28.0
-margin_right = 158.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-
-[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 33.0
-margin_right = 126.0
-margin_bottom = 47.0
-text = "Background Texture"
-
-[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_top = 28.0
-margin_right = 288.0
-margin_bottom = 52.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3"]
-margin_right = 24.0
-margin_bottom = 24.0
-pressed = true
-
-[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3"]
-margin_left = 28.0
-margin_right = 158.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-text = "background-2"
-
-[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 64.0
-margin_right = 126.0
-margin_bottom = 78.0
-text = "Shadow"
-
-[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_top = 56.0
-margin_right = 288.0
-margin_bottom = 86.0
-
-[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4"]
-margin_right = 24.0
-margin_bottom = 30.0
-
-[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4"]
-margin_left = 28.0
-margin_right = 158.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 50, 30 )
-size_flags_horizontal = 3
-color = Color( 0, 0, 0, 0.619608 )
-
-[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 95.0
-margin_right = 126.0
-margin_bottom = 109.0
-text = "Shadow Offset"
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_top = 90.0
-margin_right = 288.0
-margin_bottom = 114.0
-custom_constants/separation = 10
-
-[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "X"
-
-[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer"]
-margin_left = 84.0
-margin_right = 158.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "Y"
-
-[node name="Label8" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 123.0
-margin_right = 126.0
-margin_bottom = 137.0
-text = "Bottom gap"
-
-[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_top = 118.0
-margin_right = 288.0
-margin_bottom = 142.0
-
-[node name="BottomGap" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5"]
-margin_right = 74.0
-margin_bottom = 24.0
-max_value = 999.0
-value = 48.0
-allow_greater = true
-allow_lesser = true
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_top = 151.0
-margin_right = 126.0
-margin_bottom = 165.0
-text = "Auto color"
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer2"]
-margin_left = 130.0
-margin_top = 146.0
-margin_right = 288.0
-margin_bottom = 170.0
-
-[node name="Glossary Panel" parent="VBoxContainer/HBoxContainer2/Glossary" instance=ExtResource( 3 )]
-margin_top = 208.0
-margin_right = 315.0
-margin_bottom = 238.0
-
-[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/Glossary"]
-margin_top = 242.0
-margin_right = 315.0
-margin_bottom = 296.0
-size_flags_horizontal = 3
-custom_constants/hseparation = 10
-columns = 2
-
-[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-margin_top = 3.0
-margin_right = 210.0
-margin_bottom = 17.0
-size_flags_horizontal = 3
-text = "Font"
-
-[node name="FontButton" type="Button" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-margin_left = 220.0
-margin_right = 315.0
-margin_bottom = 20.0
-size_flags_vertical = 4
-text = "GlossaryFont"
-
-[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-margin_top = 32.0
-margin_right = 210.0
-margin_bottom = 46.0
-text = "Color"
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-margin_left = 220.0
-margin_top = 24.0
-margin_right = 315.0
-margin_bottom = 54.0
-rect_min_size = Vector2( 50, 30 )
-color = Color( 0.215686, 0.654902, 0.67451, 1 )
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-visible = false
-margin_top = 66.0
-margin_right = 141.0
-margin_bottom = 80.0
-text = "Shadow"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-visible = false
-margin_top = 58.0
-margin_right = 213.0
-margin_bottom = 88.0
-
-[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2"]
-margin_right = 24.0
-margin_bottom = 30.0
-
-[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2"]
-margin_left = 28.0
-margin_right = 213.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 50, 30 )
-size_flags_horizontal = 3
-color = Color( 0, 0, 0, 0.619608 )
-
-[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-visible = false
-margin_top = 63.0
-margin_right = 141.0
-margin_bottom = 77.0
-text = "S, Offset"
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer"]
-visible = false
-margin_top = 58.0
-margin_right = 213.0
-margin_bottom = 82.0
-custom_constants/separation = 10
-
-[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "X"
-
-[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer"]
-margin_left = 84.0
-margin_right = 158.0
-margin_bottom = 24.0
-value = 2.0
-rounded = true
-allow_lesser = true
-prefix = "Y"
-
-[node name="DialogBox" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"]
-margin_left = 639.0
-margin_right = 954.0
-margin_bottom = 296.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/DialogBox"]
-margin_right = 315.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 0, 30 )
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/PanelContainer"]
-margin_right = 40.0
-margin_bottom = 14.0
-text = "Dialog Box"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/DialogBox"]
-margin_top = 34.0
-margin_right = 315.0
-margin_bottom = 242.0
-size_flags_horizontal = 3
-custom_constants/hseparation = 10
-columns = 2
-
-[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 5.0
-margin_right = 126.0
-margin_bottom = 19.0
-text = "Background Color"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_right = 288.0
-margin_bottom = 24.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2"]
-margin_right = 24.0
-margin_bottom = 24.0
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2"]
-margin_left = 28.0
-margin_right = 152.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 33.0
-margin_right = 126.0
-margin_bottom = 47.0
-text = "Background Texture"
-
-[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 28.0
-margin_right = 288.0
-margin_bottom = 52.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3"]
-margin_right = 24.0
-margin_bottom = 24.0
-pressed = true
-
-[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3"]
-margin_left = 28.0
-margin_right = 152.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-text = "background-2"
-
-[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 59.0
-margin_right = 126.0
-margin_bottom = 73.0
-text = "Next indicator"
-
-[node name="NextIndicatorButton" type="Button" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 56.0
-margin_right = 288.0
-margin_bottom = 76.0
-text = "next-indicator"
-
-[node name="Label4" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 83.0
-margin_right = 126.0
-margin_bottom = 97.0
-text = "Next animation"
-
-[node name="NextAnimation" type="OptionButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 80.0
-margin_right = 288.0
-margin_bottom = 100.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 109.0
-margin_right = 126.0
-margin_bottom = 123.0
-text = "Box padding"
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 104.0
-margin_right = 288.0
-margin_bottom = 128.0
-
-[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 10.0
-rounded = true
-allow_lesser = true
-
-[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer"]
-margin_left = 78.0
-margin_right = 152.0
-margin_bottom = 24.0
-value = 20.0
-rounded = true
-allow_lesser = true
-
-[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 137.0
-margin_right = 126.0
-margin_bottom = 151.0
-text = "Box Size (pixels)"
-
-[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 132.0
-margin_right = 288.0
-margin_bottom = 156.0
-
-[node name="BoxSizeW" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 100.0
-rounded = true
-allow_greater = true
-allow_lesser = true
-
-[node name="BoxSizeH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4"]
-margin_left = 78.0
-margin_right = 152.0
-margin_bottom = 24.0
-max_value = 999.0
-value = 167.0
-rounded = true
-allow_greater = true
-allow_lesser = true
-
-[node name="Label8" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 165.0
-margin_right = 126.0
-margin_bottom = 179.0
-text = "Bottom gap"
-
-[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 160.0
-margin_right = 288.0
-margin_bottom = 184.0
-
-[node name="BottomGap" type="SpinBox" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5"]
-margin_right = 74.0
-margin_bottom = 24.0
-max_value = 999.0
-value = 40.0
-rounded = true
-allow_greater = true
-allow_lesser = true
-
-[node name="Label3" type="Label" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_top = 188.0
-margin_right = 126.0
-margin_bottom = 208.0
-size_flags_vertical = 5
-text = "Action key"
-
-[node name="BoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer"]
-margin_left = 136.0
-margin_top = 188.0
-margin_right = 288.0
-margin_bottom = 208.0
-
-[node name="ActionOptionButton" type="OptionButton" parent="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer"]
-margin_right = 152.0
-margin_bottom = 20.0
-hint_tooltip = "To add/remove actions go to Project > Project Settings > Input Map"
-size_flags_horizontal = 3
-text = "[Select Action]"
-items = [ "[Select Action]", null, false, 0, null, "ui_accept", null, false, 1, null, "ui_select", null, false, 2, null, "ui_cancel", null, false, 3, null, "ui_focus_next", null, false, 4, null, "ui_focus_prev", null, false, 5, null, "ui_left", null, false, 6, null, "ui_right", null, false, 7, null, "ui_up", null, false, 8, null, "ui_down", null, false, 9, null, "ui_page_up", null, false, 10, null, "ui_page_down", null, false, 11, null, "ui_home", null, false, 12, null, "ui_end", null, false, 13, null ]
-selected = 0
-
-[node name="ButtonStyle" type="VBoxContainer" parent="VBoxContainer/HBoxContainer2"]
-margin_left = 958.0
-margin_right = 1273.0
-margin_bottom = 296.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="PanelContainer" type="Panel" parent="VBoxContainer/HBoxContainer2/ButtonStyle"]
-margin_right = 315.0
-margin_bottom = 30.0
-rect_min_size = Vector2( 0, 30 )
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/PanelContainer"]
-margin_right = 40.0
-margin_bottom = 14.0
-text = "Choice Buttons"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="GridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle"]
-margin_top = 34.0
-margin_right = 315.0
-margin_bottom = 170.0
-size_flags_horizontal = 3
-custom_constants/hseparation = 10
-columns = 2
-
-[node name="Label5" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_top = 5.0
-margin_right = 126.0
-margin_bottom = 19.0
-text = "Text Color "
-
-[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_left = 136.0
-margin_right = 288.0
-margin_bottom = 24.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="CheckBox2" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4"]
-margin_right = 24.0
-margin_bottom = 24.0
-pressed = true
-
-[node name="ButtonTextColor" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4"]
-margin_left = 28.0
-margin_right = 152.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-color = Color( 1, 1, 1, 1 )
-
-[node name="Label7" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_top = 33.0
-margin_right = 126.0
-margin_bottom = 47.0
-text = "Background Color"
-
-[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_left = 136.0
-margin_top = 28.0
-margin_right = 288.0
-margin_bottom = 52.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2"]
-margin_right = 24.0
-margin_bottom = 24.0
-
-[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2"]
-margin_left = 28.0
-margin_right = 152.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-
-[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_top = 61.0
-margin_right = 126.0
-margin_bottom = 75.0
-text = "Background Texture"
-
-[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_left = 136.0
-margin_top = 56.0
-margin_right = 288.0
-margin_bottom = 80.0
-
-[node name="CheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3"]
-margin_right = 24.0
-margin_bottom = 24.0
-pressed = true
-
-[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3"]
-margin_left = 28.0
-margin_right = 152.0
-margin_bottom = 24.0
-size_flags_horizontal = 3
-text = "background-2"
-
-[node name="Label6" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_top = 89.0
-margin_right = 126.0
-margin_bottom = 103.0
-text = "Box padding"
-
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_left = 136.0
-margin_top = 84.0
-margin_right = 288.0
-margin_bottom = 108.0
-
-[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer"]
-margin_right = 74.0
-margin_bottom = 24.0
-value = 5.0
-rounded = true
-allow_lesser = true
-prefix = "V"
-
-[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer"]
-margin_left = 78.0
-margin_right = 152.0
-margin_bottom = 24.0
-value = 5.0
-rounded = true
-allow_lesser = true
-prefix = "H"
-
-[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_top = 117.0
-margin_right = 126.0
-margin_bottom = 131.0
-text = "Vertical separation"
-
-[node name="VerticalSeparation" type="SpinBox" parent="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer"]
-margin_left = 136.0
-margin_top = 112.0
-margin_right = 288.0
-margin_bottom = 136.0
-value = 5.0
-rounded = true
-allow_lesser = true
-
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"]
-margin_top = 311.0
-margin_right = 1273.0
-margin_bottom = 371.0
+margin_right = 1285.0
+margin_bottom = 60.0
custom_constants/separation = 10
[node name="PreviewButton" type="Button" parent="VBoxContainer/HBoxContainer3"]
@@ -783,7 +33,7 @@ icon = ExtResource( 1 )
[node name="TextEdit" type="TextEdit" parent="VBoxContainer/HBoxContainer3"]
margin_left = 162.0
-margin_right = 1273.0
+margin_right = 1285.0
margin_bottom = 60.0
rect_min_size = Vector2( 400, 60 )
size_flags_horizontal = 3
@@ -792,66 +42,842 @@ text = "This is preview text. You can use [color=#A5EFAC]BBCode[/color] to styl
wrap_enabled = true
[node name="Panel" type="Panel" parent="VBoxContainer"]
-margin_top = 386.0
-margin_right = 1273.0
-margin_bottom = 686.0
+margin_top = 75.0
+margin_right = 1285.0
+margin_bottom = 375.0
rect_min_size = Vector2( 0, 300 )
-[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
-margin_top = 701.0
-margin_right = 1273.0
-margin_bottom = 701.0
+[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
+margin_top = 390.0
+margin_right = 1285.0
+margin_bottom = 594.0
+tab_align = 0
-[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer"]
-margin_right = 1273.0
+[node name="Text" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 4.0
+margin_top = 32.0
+margin_right = -4.0
+margin_bottom = -4.0
+
+[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Text"]
+margin_right = 316.0
+margin_bottom = 168.0
+size_flags_vertical = 3
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Text/Column"]
+margin_right = 316.0
+margin_bottom = 168.0
+size_flags_horizontal = 3
+custom_constants/hseparation = 10
+columns = 2
+
+[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 3.0
+margin_right = 148.0
+margin_bottom = 17.0
+size_flags_horizontal = 3
+text = "Font"
+
+[node name="FontButton" type="Button" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_right = 316.0
+margin_bottom = 20.0
+size_flags_vertical = 4
+text = "DefaultFont"
+
+[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 32.0
+margin_right = 148.0
+margin_bottom = 46.0
+text = "Color"
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_top = 24.0
+margin_right = 316.0
+margin_bottom = 54.0
+rect_min_size = Vector2( 50, 30 )
+color = Color( 1, 1, 1, 1 )
+
+[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 66.0
+margin_right = 148.0
+margin_bottom = 80.0
+text = "Shadow"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_top = 58.0
+margin_right = 316.0
+margin_bottom = 88.0
+
+[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2"]
+margin_right = 24.0
+margin_bottom = 30.0
+
+[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2"]
+margin_left = 28.0
+margin_right = 158.0
+margin_bottom = 30.0
+rect_min_size = Vector2( 50, 30 )
+size_flags_horizontal = 3
+color = Color( 0, 0, 0, 0.619608 )
+
+[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 97.0
+margin_right = 148.0
+margin_bottom = 111.0
+text = "Shadow Offset"
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_top = 92.0
+margin_right = 316.0
+margin_bottom = 116.0
+custom_constants/separation = 10
+
+[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer"]
+margin_right = 74.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "X"
+
+[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer"]
+margin_left = 84.0
+margin_right = 158.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "Y"
+
+[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 125.0
+margin_right = 148.0
+margin_bottom = 139.0
+text = "Speed (bigger = slower)"
+
+[node name="TextSpeed" type="SpinBox" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_top = 120.0
+margin_right = 316.0
+margin_bottom = 144.0
+max_value = 10.0
+value = 2.0
+rounded = true
+
+[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_top = 151.0
+margin_right = 148.0
+margin_bottom = 165.0
+text = "Alignment"
+
+[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Text/Column/GridContainer"]
+margin_left = 158.0
+margin_top = 148.0
+margin_right = 316.0
+margin_bottom = 168.0
+
+[node name="Alignment" type="OptionButton" parent="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3"]
+margin_right = 158.0
+margin_bottom = 20.0
+size_flags_horizontal = 3
+text = "Left"
+items = [ "Left", null, false, 0, null, "Center", null, false, 1, null, "Right", null, false, 2, null ]
+selected = 0
+
+[node name="Dialog Box" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 4.0
+margin_top = 32.0
+margin_right = -4.0
+margin_bottom = -4.0
+
+[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box"]
+margin_right = 1277.0
+margin_bottom = 236.0
size_flags_horizontal = 3
size_flags_vertical = 3
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column"]
+margin_right = 1277.0
+margin_bottom = 236.0
+size_flags_horizontal = 3
+custom_constants/hseparation = 10
+columns = 2
+
+[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 5.0
+margin_right = 126.0
+margin_bottom = 19.0
+text = "Background Color"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_right = 288.0
+margin_bottom = 24.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2"]
+margin_right = 24.0
+margin_bottom = 24.0
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+
+[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 33.0
+margin_right = 126.0
+margin_bottom = 47.0
+text = "Background Texture"
+
+[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 28.0
+margin_right = 288.0
+margin_bottom = 52.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3"]
+margin_right = 24.0
+margin_bottom = 24.0
+pressed = true
+
+[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+text = "background-2"
+
+[node name="Label9" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 61.0
+margin_right = 126.0
+margin_bottom = 75.0
+text = "Texture Modulation"
+
+[node name="HBoxContainer6" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 56.0
+margin_right = 288.0
+margin_bottom = 80.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6"]
+margin_right = 24.0
+margin_bottom = 24.0
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+
+[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 87.0
+margin_right = 126.0
+margin_bottom = 101.0
+text = "Next indicator"
+
+[node name="NextIndicatorButton" type="Button" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 84.0
+margin_right = 288.0
+margin_bottom = 104.0
+text = "next-indicator"
+
+[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 111.0
+margin_right = 126.0
+margin_bottom = 125.0
+text = "Next animation"
+
+[node name="NextAnimation" type="OptionButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 108.0
+margin_right = 288.0
+margin_bottom = 128.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 137.0
+margin_right = 126.0
+margin_bottom = 151.0
+text = "Box padding"
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 132.0
+margin_right = 288.0
+margin_bottom = 156.0
+
+[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer"]
+margin_right = 74.0
+margin_bottom = 24.0
+max_value = 1e+07
+value = 10.0
+rounded = true
+allow_greater = true
+allow_lesser = true
+
+[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer"]
+margin_left = 78.0
+margin_right = 152.0
+margin_bottom = 24.0
+max_value = 1e+07
+value = 20.0
+rounded = true
+allow_greater = true
+allow_lesser = true
+
+[node name="Label7" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 165.0
+margin_right = 126.0
+margin_bottom = 179.0
+text = "Box Size (pixels)"
+
+[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 160.0
+margin_right = 288.0
+margin_bottom = 184.0
+
+[node name="BoxSizeW" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4"]
+margin_right = 74.0
+margin_bottom = 24.0
+value = 100.0
+rounded = true
+allow_greater = true
+allow_lesser = true
+
+[node name="BoxSizeH" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4"]
+margin_left = 78.0
+margin_right = 152.0
+margin_bottom = 24.0
+max_value = 999.0
+value = 167.0
+rounded = true
+allow_greater = true
+allow_lesser = true
+
+[node name="Label8" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 193.0
+margin_right = 126.0
+margin_bottom = 207.0
+text = "Bottom gap"
+
+[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 188.0
+margin_right = 288.0
+margin_bottom = 212.0
+
+[node name="BottomGap" type="SpinBox" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5"]
+margin_right = 74.0
+margin_bottom = 24.0
+max_value = 999.0
+value = 40.0
+rounded = true
+allow_greater = true
+allow_lesser = true
+
+[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_top = 216.0
+margin_right = 126.0
+margin_bottom = 236.0
+size_flags_vertical = 5
+text = "Action key"
+
+[node name="BoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 216.0
+margin_right = 288.0
+margin_bottom = 236.0
+
+[node name="ActionOptionButton" type="OptionButton" parent="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer"]
+margin_right = 152.0
+margin_bottom = 20.0
+hint_tooltip = "To add/remove actions go to Project > Project Settings > Input Map"
+size_flags_horizontal = 3
+text = "[Select Action]"
+items = [ "[Select Action]", null, false, 0, null, "ui_accept", null, false, 1, null, "ui_select", null, false, 2, null, "ui_cancel", null, false, 3, null, "ui_focus_next", null, false, 4, null, "ui_focus_prev", null, false, 5, null, "ui_left", null, false, 6, null, "ui_right", null, false, 7, null, "ui_up", null, false, 8, null, "ui_down", null, false, 9, null, "ui_page_up", null, false, 10, null, "ui_page_down", null, false, 11, null, "ui_home", null, false, 12, null, "ui_end", null, false, 13, null ]
+selected = 0
+
+[node name="Choice Buttons" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 4.0
+margin_top = 32.0
+margin_right = -4.0
+margin_bottom = -4.0
+
+[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 953.0
+margin_top = 187.0
+margin_right = 945.0
+margin_bottom = 189.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column"]
+margin_top = 34.0
+margin_right = 316.0
+margin_bottom = 170.0
+size_flags_horizontal = 3
+custom_constants/hseparation = 10
+columns = 2
+
+[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_top = 5.0
+margin_right = 126.0
+margin_bottom = 19.0
+text = "Text Color "
+
+[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_left = 136.0
+margin_right = 288.0
+margin_bottom = 24.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="CheckBox2" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4"]
+margin_right = 24.0
+margin_bottom = 24.0
+pressed = true
+
+[node name="ButtonTextColor" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+color = Color( 1, 1, 1, 1 )
+
+[node name="Label7" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_top = 33.0
+margin_right = 126.0
+margin_bottom = 47.0
+text = "Background Color"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 28.0
+margin_right = 288.0
+margin_bottom = 52.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2"]
+margin_right = 24.0
+margin_bottom = 24.0
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+
+[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_top = 61.0
+margin_right = 126.0
+margin_bottom = 75.0
+text = "Background Texture"
+
+[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 56.0
+margin_right = 288.0
+margin_bottom = 80.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3"]
+margin_right = 24.0
+margin_bottom = 24.0
+pressed = true
+
+[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3"]
+margin_left = 28.0
+margin_right = 152.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+text = "background-2"
+
+[node name="Label6" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_top = 89.0
+margin_right = 126.0
+margin_bottom = 103.0
+text = "Box padding"
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 84.0
+margin_right = 288.0
+margin_bottom = 108.0
+
+[node name="TextOffsetV" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer"]
+margin_right = 74.0
+margin_bottom = 24.0
+value = 5.0
+rounded = true
+allow_lesser = true
+prefix = "V"
+
+[node name="TextOffsetH" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer"]
+margin_left = 78.0
+margin_right = 152.0
+margin_bottom = 24.0
+value = 5.0
+rounded = true
+allow_lesser = true
+prefix = "H"
+
+[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_top = 117.0
+margin_right = 126.0
+margin_bottom = 131.0
+text = "Vertical separation"
+
+[node name="VerticalSeparation" type="SpinBox" parent="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer"]
+margin_left = 136.0
+margin_top = 112.0
+margin_right = 288.0
+margin_bottom = 136.0
+value = 5.0
+rounded = true
+allow_lesser = true
+
+[node name="Name Label" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 4.0
+margin_top = 32.0
+margin_right = -4.0
+margin_bottom = -4.0
+
+[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Name Label"]
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 315.0
+margin_top = 187.0
+margin_right = 307.0
+margin_bottom = 315.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Name Label/Column"]
+margin_top = 34.0
+margin_right = 315.0
+margin_bottom = 204.0
+columns = 2
+
+[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 5.0
+margin_right = 126.0
+margin_bottom = 19.0
+text = "Background Color"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_right = 288.0
+margin_bottom = 24.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2"]
+margin_right = 24.0
+margin_bottom = 24.0
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2"]
+margin_left = 28.0
+margin_right = 158.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+
+[node name="Label2" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 33.0
+margin_right = 126.0
+margin_bottom = 47.0
+text = "Background Texture"
+
+[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_top = 28.0
+margin_right = 288.0
+margin_bottom = 52.0
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3"]
+margin_right = 24.0
+margin_bottom = 24.0
+pressed = true
+
+[node name="BackgroundTextureButton" type="Button" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3"]
+margin_left = 28.0
+margin_right = 158.0
+margin_bottom = 24.0
+size_flags_horizontal = 3
+text = "background-2"
+
+[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 64.0
+margin_right = 126.0
+margin_bottom = 78.0
+text = "Shadow"
+
+[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_top = 56.0
+margin_right = 288.0
+margin_bottom = 86.0
+
+[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4"]
+margin_right = 24.0
+margin_bottom = 30.0
+
+[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4"]
+margin_left = 28.0
+margin_right = 158.0
+margin_bottom = 30.0
+rect_min_size = Vector2( 50, 30 )
+size_flags_horizontal = 3
+color = Color( 0, 0, 0, 0.619608 )
+
+[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 95.0
+margin_right = 126.0
+margin_bottom = 109.0
+text = "Shadow Offset"
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_top = 90.0
+margin_right = 288.0
+margin_bottom = 114.0
+custom_constants/separation = 10
+
+[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer"]
+margin_right = 74.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "X"
+
+[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer"]
+margin_left = 84.0
+margin_right = 158.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "Y"
+
+[node name="Label8" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 123.0
+margin_right = 126.0
+margin_bottom = 137.0
+text = "Bottom gap"
+
+[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_top = 118.0
+margin_right = 288.0
+margin_bottom = 142.0
+
+[node name="BottomGap" type="SpinBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5"]
+margin_right = 74.0
+margin_bottom = 24.0
+max_value = 999.0
+value = 48.0
+allow_greater = true
+allow_lesser = true
+
+[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_top = 151.0
+margin_right = 126.0
+margin_bottom = 165.0
+text = "Auto color"
+
+[node name="CheckBox" type="CheckBox" parent="VBoxContainer/TabContainer/Name Label/Column/GridContainer"]
+margin_left = 130.0
+margin_top = 146.0
+margin_right = 288.0
+margin_bottom = 170.0
+
+[node name="Glossary" type="HBoxContainer" parent="VBoxContainer/TabContainer"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_left = 4.0
+margin_top = 32.0
+margin_right = -4.0
+margin_bottom = -4.0
+
+[node name="Column" type="VBoxContainer" parent="VBoxContainer/TabContainer/Glossary"]
+margin_right = 40.0
+margin_bottom = 40.0
+
+[node name="GridContainer" type="GridContainer" parent="VBoxContainer/TabContainer/Glossary/Column"]
+margin_left = 315.0
+margin_top = 429.0
+margin_right = 630.0
+margin_bottom = 483.0
+size_flags_horizontal = 3
+custom_constants/hseparation = 10
+columns = 2
+
+[node name="Label5" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+margin_top = 3.0
+margin_right = 210.0
+margin_bottom = 17.0
+size_flags_horizontal = 3
+text = "Font"
+
+[node name="FontButton" type="Button" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+margin_left = 220.0
+margin_right = 315.0
+margin_bottom = 20.0
+size_flags_vertical = 4
+text = "GlossaryFont"
+
+[node name="Label3" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+margin_top = 32.0
+margin_right = 210.0
+margin_bottom = 46.0
+text = "Color"
+
+[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+margin_left = 220.0
+margin_top = 24.0
+margin_right = 315.0
+margin_bottom = 54.0
+rect_min_size = Vector2( 50, 30 )
+color = Color( 0.215686, 0.654902, 0.67451, 1 )
+
+[node name="Label" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+visible = false
+margin_top = 66.0
+margin_right = 141.0
+margin_bottom = 80.0
+text = "Shadow"
+
+[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+visible = false
+margin_top = 58.0
+margin_right = 213.0
+margin_bottom = 88.0
+
+[node name="CheckBoxShadow" type="CheckBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"]
+margin_right = 24.0
+margin_bottom = 30.0
+
+[node name="ColorPickerButtonShadow" type="ColorPickerButton" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2"]
+margin_left = 28.0
+margin_right = 213.0
+margin_bottom = 30.0
+rect_min_size = Vector2( 50, 30 )
+size_flags_horizontal = 3
+color = Color( 0, 0, 0, 0.619608 )
+
+[node name="Label4" type="Label" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+visible = false
+margin_top = 63.0
+margin_right = 141.0
+margin_bottom = 77.0
+text = "S, Offset"
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer"]
+visible = false
+margin_top = 58.0
+margin_right = 213.0
+margin_bottom = 82.0
+custom_constants/separation = 10
+
+[node name="ShadowOffsetX" type="SpinBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer"]
+margin_right = 74.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "X"
+
+[node name="ShadowOffsetY" type="SpinBox" parent="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer"]
+margin_left = 84.0
+margin_right = 158.0
+margin_bottom = 24.0
+value = 2.0
+rounded = true
+allow_lesser = true
+prefix = "Y"
+
+[node name="DelayPreviewTimer" type="Timer" parent="."]
+one_shot = true
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/FontButton" to="." method="_on_FontButton_pressed"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Text/GridContainer/TextSpeed" to="." method="_on_textSpeed_value_changed"]
-[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/Text/GridContainer/HBoxContainer3/Alignment" to="." method="_on_Alignment_item_selected"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/CheckBox" to="." method="_on_name_background_visible_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer2/ColorPickerButton" to="." method="_on_name_background_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/CheckBox" to="." method="_on_name_image_visible_toggled"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer3/BackgroundTextureButton" to="." method="_on_name_image_pressed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/CheckBoxShadow" to="." method="_on_shadow_visible_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer4/ColorPickerButtonShadow" to="." method="_on_name_shadow_color_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetX" to="." method="_on_name_ShadowOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer/ShadowOffsetY" to="." method="_on_name_ShadowOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/HBoxContainer5/BottomGap" to="." method="_on_name_BottomGap_value_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer2/CheckBox" to="." method="_on_name_auto_color_toggled"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/FontButton" to="." method="_on_GlossaryFontButton_pressed"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/ColorPickerButton" to="." method="_on_GlossaryColorPicker_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/Glossary/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_BackgroundColor_CheckBox_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_BackgroundColor_ColorPickerButton_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_BackgroundTexture_CheckBox_toggled"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_BackgroundTextureButton_pressed"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextIndicatorButton" to="." method="_on_NextIndicatorButton_pressed"]
-[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/NextAnimation" to="." method="_on_NextAnimation_item_selected"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_TextMargin_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_TextMargin_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeW" to="." method="_on_BoxSize_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer4/BoxSizeH" to="." method="_on_BoxSize_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_BottomGap_value_changed"]
-[connection signal="item_selected" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_item_selected"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/DialogBox/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_pressed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/CheckBox2" to="." method="_on_Custom_Button_Color_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer4/ButtonTextColor" to="." method="_on_ButtonTextColor_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_button_background_visible_toggled"]
-[connection signal="color_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_button_background_color_color_changed"]
-[connection signal="toggled" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_button_texture_toggled"]
-[connection signal="pressed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_ButtonTextureButton_pressed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_ButtonOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_ButtonOffset_value_changed"]
-[connection signal="value_changed" from="VBoxContainer/HBoxContainer2/ButtonStyle/GridContainer/VerticalSeparation" to="." method="_on_VerticalSeparation_value_changed"]
[connection signal="pressed" from="VBoxContainer/HBoxContainer3/PreviewButton" to="." method="_on_PreviewButton_pressed"]
[connection signal="text_changed" from="VBoxContainer/HBoxContainer3/TextEdit" to="." method="_on_Preview_text_changed"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/FontButton" to="." method="_on_FontButton_pressed"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Text/Column/GridContainer/TextSpeed" to="." method="_on_textSpeed_value_changed"]
+[connection signal="item_selected" from="VBoxContainer/TabContainer/Text/Column/GridContainer/HBoxContainer3/Alignment" to="." method="_on_Alignment_item_selected"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_BackgroundColor_CheckBox_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_BackgroundColor_ColorPickerButton_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_BackgroundTexture_CheckBox_toggled"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_BackgroundTextureButton_pressed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/CheckBox" to="." method="_on_BackgroundTexture_Modulation_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer6/ColorPickerButton" to="." method="_on_ColorPicker_Background_texture_modulation_color_changed"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextIndicatorButton" to="." method="_on_NextIndicatorButton_pressed"]
+[connection signal="item_selected" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/NextAnimation" to="." method="_on_NextAnimation_item_selected"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_TextMargin_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_TextMargin_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeW" to="." method="_on_BoxSize_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer4/BoxSizeH" to="." method="_on_BoxSize_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_BottomGap_value_changed"]
+[connection signal="item_selected" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_item_selected"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Dialog Box/Column/GridContainer/BoxContainer/ActionOptionButton" to="." method="_on_ActionOptionButton_pressed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/CheckBox2" to="." method="_on_Custom_Button_Color_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer4/ButtonTextColor" to="." method="_on_ButtonTextColor_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_button_background_visible_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_button_background_color_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_button_texture_toggled"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_ButtonTextureButton_pressed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetV" to="." method="_on_ButtonOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/HBoxContainer/TextOffsetH" to="." method="_on_ButtonOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Choice Buttons/Column/GridContainer/VerticalSeparation" to="." method="_on_VerticalSeparation_value_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/CheckBox" to="." method="_on_name_background_visible_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer2/ColorPickerButton" to="." method="_on_name_background_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/CheckBox" to="." method="_on_name_image_visible_toggled"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer3/BackgroundTextureButton" to="." method="_on_name_image_pressed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/CheckBoxShadow" to="." method="_on_shadow_visible_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer4/ColorPickerButtonShadow" to="." method="_on_name_shadow_color_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_name_ShadowOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_name_ShadowOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/HBoxContainer5/BottomGap" to="." method="_on_name_BottomGap_value_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Name Label/Column/GridContainer/CheckBox" to="." method="_on_name_auto_color_toggled"]
+[connection signal="pressed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/FontButton" to="." method="_on_GlossaryFontButton_pressed"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/ColorPickerButton" to="." method="_on_GlossaryColorPicker_color_changed"]
+[connection signal="toggled" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/CheckBoxShadow" to="." method="_on_CheckBoxShadow_toggled"]
+[connection signal="color_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer2/ColorPickerButtonShadow" to="." method="_on_ColorPickerButtonShadow_color_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer/ShadowOffsetX" to="." method="_on_ShadowOffset_value_changed"]
+[connection signal="value_changed" from="VBoxContainer/TabContainer/Glossary/Column/GridContainer/HBoxContainer/ShadowOffsetY" to="." method="_on_ShadowOffset_value_changed"]
diff --git a/addons/dialogic/Editor/TimelineEditor/EventButton.gd b/addons/dialogic/Editor/TimelineEditor/EventButton.gd
new file mode 100644
index 0000000..9b1d721
--- /dev/null
+++ b/addons/dialogic/Editor/TimelineEditor/EventButton.gd
@@ -0,0 +1,16 @@
+tool
+extends Button
+
+export (String) var EventName = ''
+
+func get_drag_data(position):
+ var preview_label = Label.new()
+
+ if (self.text != ''):
+ preview_label.text = text
+ else:
+ preview_label.text = 'Add Event %s' % [ EventName ]
+
+ set_drag_preview(preview_label)
+
+ return { "source": "EventButton", "event_name": EventName }
diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd b/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd
new file mode 100644
index 0000000..622184f
--- /dev/null
+++ b/addons/dialogic/Editor/TimelineEditor/TimelineArea.gd
@@ -0,0 +1,139 @@
+tool
+extends ScrollContainer
+
+var _drag_drop_indicator = null
+# store last attempts since godot sometimes misses drop events
+var _is_drag_receiving = false
+var _last_event_button_drop_attempt = ''
+var _mouse_exited = false
+
+func _ready():
+ connect("mouse_entered", self, '_on_mouse_entered')
+ connect("mouse_exited", self, '_on_mouse_exited')
+ connect("gui_input", self, '_on_gui_input')
+
+
+func can_drop_data(position, data):
+ if (data != null and data is Dictionary and data.has("source")):
+ if (data["source"] == "EventButton"):
+ # position drop indicator
+ _set_indicator_position(position)
+ _is_drag_receiving = true
+ _last_event_button_drop_attempt = data["event_name"]
+ return true
+
+ _remove_drop_indicator()
+ return false
+
+
+func cancel_drop():
+ _is_drag_receiving = false
+ _last_event_button_drop_attempt = ''
+ _remove_drop_indicator()
+ pass
+
+
+func drop_data(position, data):
+ # todo, getting timeline like this is prone to fail someday
+ var timeline_editor = get_parent()
+
+ # add event
+ if (data["source"] == "EventButton"):
+ var piece = timeline_editor.create_event(data["event_name"])
+ if (piece != null and _drag_drop_indicator != null):
+ var parent = piece.get_parent()
+ if (parent != null):
+ parent.remove_child(piece)
+ parent.add_child_below_node(_drag_drop_indicator, piece)
+ timeline_editor.indent_events()
+ # @todo _select_item seems to be a "private" function
+ # maybe expose it as "public" or add a public helper function
+ # to TimelineEditor.gd
+ timeline_editor._select_item(piece)
+
+ _is_drag_receiving = false
+ _last_event_button_drop_attempt = ''
+ _remove_drop_indicator()
+
+
+func _on_mouse_exited():
+ _mouse_exited = true
+
+
+func _on_mouse_entered():
+ _mouse_exited = false
+
+
+func _input(event):
+ if (event is InputEventMouseButton and is_visible_in_tree() and event.button_index == BUTTON_LEFT):
+ if (_mouse_exited and _is_drag_receiving):
+ cancel_drop()
+
+
+func _on_gui_input(event):
+ # godot sometimes misses drop events
+ if (event is InputEventMouseButton and event.button_index == BUTTON_LEFT):
+ if (_is_drag_receiving):
+ if (_last_event_button_drop_attempt != ''):
+ drop_data(Vector2.ZERO, { "source": "EventButton", "event_name": _last_event_button_drop_attempt} )
+ _is_drag_receiving = false
+ _remove_drop_indicator()
+ pass
+
+
+func _create_drop_indicator():
+ _remove_drop_indicator()
+
+ var timeline = get_child(0)
+ if (timeline == null):
+ return
+
+ var indicator = ColorRect.new()
+ indicator.name = "DropIndicator"
+ indicator.rect_size.y = 100
+ indicator.rect_min_size.y = 100
+ indicator.color = Color(0.35, 0.37, 0.44) # default editor light blue
+ indicator.mouse_filter = MOUSE_FILTER_IGNORE
+
+ # add indent node like the other scene nodes have
+ var indent = Control.new()
+ indent.rect_min_size.x = 25
+ indent.visible = false
+ indent.name = "Indent"
+ indicator.add_child(indent)
+
+ var label = Label.new()
+ label.text = "Drop here"
+ indicator.add_child(label)
+
+ timeline.add_child(indicator)
+
+ _drag_drop_indicator = indicator
+
+
+func _remove_drop_indicator():
+ if (_drag_drop_indicator != null):
+ _drag_drop_indicator.get_parent().remove_child(_drag_drop_indicator)
+ _drag_drop_indicator.queue_free()
+
+ _drag_drop_indicator = null
+
+
+func _set_indicator_position(position):
+ var timeline = get_child(0)
+ if (timeline == null):
+ return
+
+ if (_drag_drop_indicator == null):
+ _create_drop_indicator()
+
+ var highest_index = 0
+ var index = 0
+ for child in timeline.get_children():
+ if child.get_local_mouse_position().y > 0 and index > highest_index:
+ highest_index = index
+ index += 1
+
+ if (_drag_drop_indicator.is_inside_tree()):
+ timeline.move_child(_drag_drop_indicator, max(0, highest_index))
+ pass
diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd
index c1bcb54..7a2b9bc 100644
--- a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd
+++ b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd
@@ -6,7 +6,7 @@ var timeline_name: String = ''
var timeline_file: String = ''
var current_timeline: Dictionary = {}
-onready var master_tree = get_node('../MasterTree')
+onready var master_tree = get_node('../MasterTreeContainer/MasterTree')
onready var timeline = $TimelineArea/TimeLine
onready var events_warning = $ScrollContainer/EventContainer/EventsWarning
@@ -18,8 +18,26 @@ var selected_item : Node
var moving_piece = null
+var piece_was_dragged = false
func _ready():
+ var modifier = ''
+ var _scale = get_constant("inspector_margin", "Editor")
+ _scale = _scale * 0.125
+ $ScrollContainer.rect_min_size.x = 180
+ if _scale == 1.25:
+ modifier = '-1.25'
+ $ScrollContainer.rect_min_size.x = 200
+ if _scale == 1.5:
+ modifier = '-1.25'
+ $ScrollContainer.rect_min_size.x = 200
+ if _scale == 1.75:
+ modifier = '-1.25'
+ $ScrollContainer.rect_min_size.x = 390
+ if _scale == 2:
+ modifier = '-2'
+ $ScrollContainer.rect_min_size.x = 390
+
# We connect all the event buttons to the event creation functions
for b in $ScrollContainer/EventContainer.get_children():
if b is Button:
@@ -34,6 +52,136 @@ func _ready():
style.set('bg_color', get_color("dark_color_1", "Editor"))
+func delete_event():
+ # get next element
+ var next = min(timeline.get_child_count() - 1, selected_item.get_index() + 1)
+ var next_node = timeline.get_child(next)
+ if (next_node == selected_item):
+ next_node = null
+
+ # remove current
+ selected_item.get_parent().remove_child(selected_item)
+ selected_item.queue_free()
+ selected_item = null
+
+ # select next
+ if (next_node != null):
+ _select_item(next_node)
+ else:
+ if (timeline.get_child_count() > 0):
+ next_node = timeline.get_child(max(0, timeline.get_child_count() - 1))
+ if (next_node != null):
+ _select_item(next_node)
+
+ indent_events()
+
+func _input(event):
+ # some shortcuts need to get handled in the common input event
+ # especially CTRL-based
+ # because certain godot controls swallow events (like textedit)
+ # we protect this with is_visible_in_tree to not
+ # invoke a shortcut by accident
+ if (event is InputEventKey and event is InputEventWithModifiers and is_visible_in_tree()):
+ # CTRL UP
+ if (event.pressed
+ and event.alt == false
+ and event.shift == false
+ and event.control == true
+ and event.scancode == KEY_UP
+ and event.echo == false
+ ):
+ # select previous
+ if (selected_item != null):
+ var prev = max(0, selected_item.get_index() - 1)
+ var prev_node = timeline.get_child(prev)
+ if (prev_node != selected_item):
+ _select_item(prev_node)
+ get_tree().set_input_as_handled()
+
+ pass
+
+ # CTRL DOWN
+ if (event.pressed
+ and event.alt == false
+ and event.shift == false
+ and event.control == true
+ and event.scancode == KEY_DOWN
+ and event.echo == false
+ ):
+ # select next
+ if (selected_item != null):
+ var next = min(timeline.get_child_count() - 1, selected_item.get_index() + 1)
+ var next_node = timeline.get_child(next)
+ if (next_node != selected_item):
+ _select_item(next_node)
+ get_tree().set_input_as_handled()
+
+ pass
+
+ # CTRL DELETE
+ if (event.pressed
+ and event.alt == false
+ and event.shift == false
+ and event.control == true
+ and event.scancode == KEY_DELETE
+ and event.echo == false
+ ):
+ if (selected_item != null):
+ delete_event()
+ get_tree().set_input_as_handled()
+ pass
+
+ # CTRL T
+ if (event.pressed
+ and event.alt == false
+ and event.shift == false
+ and event.control == true
+ and event.scancode == KEY_T
+ and event.echo == false
+ ):
+ var new_text = create_event("TextBlock")
+ _select_item(new_text)
+ indent_events()
+ get_tree().set_input_as_handled()
+ pass
+
+
+func _unhandled_key_input(event):
+ if (event is InputEventWithModifiers):
+ # ALT UP
+ if (event.pressed
+ and event.alt == true
+ and event.shift == false
+ and event.control == false
+ and event.scancode == KEY_UP
+ and event.echo == false
+ ):
+ # move selected up
+ if (selected_item != null):
+ move_block(selected_item, "up")
+ indent_events()
+ get_tree().set_input_as_handled()
+
+ pass
+
+ # ALT DOWN
+ if (event.pressed
+ and event.alt == true
+ and event.shift == false
+ and event.control == false
+ and event.scancode == KEY_DOWN
+ and event.echo == false
+ ):
+ # move selected down
+ if (selected_item != null):
+ move_block(selected_item, "down")
+ indent_events()
+ get_tree().set_input_as_handled()
+
+ pass
+
+ pass
+
func _process(delta):
if moving_piece != null:
var current_position = get_global_mouse_position()
@@ -45,10 +193,12 @@ func _process(delta):
up_offset = (up_offset / 2) + 5
if current_position.y < node_position - up_offset:
move_block(moving_piece, 'up')
+ piece_was_dragged = true
if down_offset != null:
down_offset = height + (down_offset / 2) + 5
if current_position.y > node_position + down_offset:
move_block(moving_piece, 'down')
+ piece_was_dragged = true
func _clear_selection():
@@ -56,6 +206,7 @@ func _clear_selection():
var selected_panel: PanelContainer = selected_item.get_node("PanelContainer")
if selected_panel != null:
selected_panel.set('custom_styles/panel', saved_style)
+
selected_item = null
saved_style = null
@@ -75,18 +226,28 @@ func _select_item(item: Node):
panel.set('custom_styles/panel', selected_style_text)
else:
panel.set('custom_styles/panel', selected_style)
+ # allow event panels to do additional operation when getting selected
+ if (selected_item.has_method("on_timeline_selected")):
+ selected_item.on_timeline_selected()
else:
_clear_selection()
func _on_gui_input(event, item: Node):
if event is InputEventMouseButton and event.button_index == 1:
- if event.is_pressed():
+ if (not event.is_pressed()):
+ if (not piece_was_dragged and moving_piece != null):
+ _clear_selection()
+ if (moving_piece != null):
+ indent_events()
+ moving_piece = null
+ elif event.is_pressed():
+ moving_piece = item
if not _is_item_selected(item):
_select_item(item)
- moving_piece = item
- else:
- moving_piece = null
+ piece_was_dragged = true
+ else:
+ piece_was_dragged = false
# Event Creation signal for buttons
@@ -154,8 +315,14 @@ func indent_events() -> void:
for event in event_list:
var indent_node = event.get_node("Indent")
indent_node.visible = false
+
# Adding new indents
for event in event_list:
+ # since there are indicators now, not all elements
+ # in this list have an event_data property
+ if (not "event_data" in event):
+ continue
+
if event.event_data.has('question') or event.event_data.has('condition'):
indent += 1
starter = true
@@ -186,8 +353,8 @@ func indent_events() -> void:
func load_timeline(filename: String):
- print('---------------------------')
- print('Loading: ', filename)
+ #print('---------------------------')
+ #print('Loading: ', filename)
clear_timeline()
var start_time = OS.get_system_time_msecs()
timeline_file = filename
@@ -234,6 +401,8 @@ func load_timeline(filename: String):
create_event("SetValue", i)
{'set_theme'}:
create_event("SetTheme", i)
+ {'call_node'}:
+ create_event("CallNode", i)
if data.size() < 1:
events_warning.visible = true
@@ -243,7 +412,7 @@ func load_timeline(filename: String):
#fold_all_nodes()
var elapsed_time = (OS.get_system_time_msecs() - start_time) * 0.001
- editor_reference.dprint("Loading time: " + str(elapsed_time))
+ #editor_reference.dprint("Loading time: " + str(elapsed_time))
func clear_timeline():
@@ -317,6 +486,9 @@ func generate_save_data():
'events': []
}
for event in timeline.get_children():
+ # check that event has event_data (e.g. drag drop indicators)
+ if (not "event_data" in event):
+ continue
if event.is_queued_for_deletion() == false: # Checking that the event is not waiting to be removed
info_to_save['events'].append(event.event_data)
return info_to_save
diff --git a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn
index b377d42..bceb82f 100644
--- a/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn
+++ b/addons/dialogic/Editor/TimelineEditor/TimelineEditor.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=22 format=2]
+[gd_scene load_steps=25 format=2]
[ext_resource path="res://addons/dialogic/Images/character-join.svg" type="Texture" id=1]
[ext_resource path="res://addons/dialogic/Images/dialog.svg" type="Texture" id=2]
@@ -19,6 +19,9 @@
[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineEditor.gd" type="Script" id=17]
[ext_resource path="res://addons/dialogic/Images/theme.svg" type="Texture" id=18]
[ext_resource path="res://addons/dialogic/Images/Events/background-music.svg" type="Texture" id=19]
+[ext_resource path="res://addons/dialogic/Images/Script.svg" type="Texture" id=20]
+[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/EventButton.gd" type="Script" id=21]
+[ext_resource path="res://addons/dialogic/Editor/TimelineEditor/TimelineArea.gd" type="Script" id=22]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 5.0
@@ -48,7 +51,6 @@ anchor_bottom = 1.0
margin_bottom = 138.0
size_flags_horizontal = 3
size_flags_vertical = 3
-custom_constants/separation = 0
split_offset = 7
script = ExtResource( 17 )
__meta__ = {
@@ -56,11 +58,12 @@ __meta__ = {
}
[node name="TimelineArea" type="ScrollContainer" parent="."]
-margin_right = 816.0
+margin_right = 836.0
margin_bottom = 738.0
size_flags_horizontal = 3
size_flags_vertical = 3
custom_styles/bg = SubResource( 1 )
+script = ExtResource( 22 )
__meta__ = {
"_edit_use_anchors_": false
}
@@ -68,7 +71,7 @@ __meta__ = {
[node name="TimeLine" type="VBoxContainer" parent="TimelineArea"]
margin_left = 5.0
margin_top = 5.0
-margin_right = 811.0
+margin_right = 831.0
margin_bottom = 733.0
grow_horizontal = 2
grow_vertical = 2
@@ -76,13 +79,13 @@ size_flags_horizontal = 3
size_flags_vertical = 3
[node name="ScrollContainer" type="ScrollContainer" parent="."]
-margin_left = 824.0
+margin_left = 844.0
margin_right = 1024.0
margin_bottom = 738.0
-rect_min_size = Vector2( 200, 0 )
+rect_min_size = Vector2( 180, 0 )
[node name="EventContainer" type="VBoxContainer" parent="ScrollContainer"]
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 738.0
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -91,14 +94,14 @@ __meta__ = {
}
[node name="EventsWarning" type="PanelContainer" parent="ScrollContainer/EventContainer"]
-margin_right = 200.0
-margin_bottom = 60.0
+margin_right = 180.0
+margin_bottom = 68.0
custom_styles/panel = SubResource( 2 )
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/EventContainer/EventsWarning"]
margin_top = 10.0
-margin_right = 194.0
-margin_bottom = 50.0
+margin_right = 174.0
+margin_bottom = 58.0
size_flags_horizontal = 3
size_flags_vertical = 3
__meta__ = {
@@ -107,15 +110,15 @@ __meta__ = {
[node name="TextureRect" type="TextureRect" parent="ScrollContainer/EventContainer/EventsWarning/HBoxContainer"]
margin_right = 40.0
-margin_bottom = 40.0
+margin_bottom = 48.0
rect_min_size = Vector2( 40, 40 )
texture = ExtResource( 13 )
stretch_mode = 4
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/EventsWarning/HBoxContainer"]
margin_left = 44.0
-margin_right = 194.0
-margin_bottom = 40.0
+margin_right = 174.0
+margin_bottom = 48.0
rect_min_size = Vector2( 100, 0 )
size_flags_horizontal = 3
size_flags_vertical = 1
@@ -124,9 +127,9 @@ text = "Add an event to start building your timeline"
autowrap = true
[node name="HBoxContainer6" type="HBoxContainer" parent="ScrollContainer/EventContainer"]
-margin_top = 64.0
-margin_right = 200.0
-margin_bottom = 78.0
+margin_top = 72.0
+margin_right = 180.0
+margin_bottom = 86.0
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer6"]
margin_right = 77.0
@@ -135,38 +138,44 @@ text = "Main Events"
[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer6"]
margin_left = 81.0
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 14.0
size_flags_horizontal = 3
[node name="TextBlock" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 82.0
-margin_right = 200.0
-margin_bottom = 110.0
+margin_top = 90.0
+margin_right = 180.0
+margin_bottom = 118.0
text = " Text Event"
icon = ExtResource( 2 )
align = 0
+script = ExtResource( 21 )
+EventName = "TextBlock"
[node name="CharacterJoinBlock" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 114.0
-margin_right = 200.0
-margin_bottom = 142.0
+margin_top = 122.0
+margin_right = 180.0
+margin_bottom = 150.0
text = " Character Join"
icon = ExtResource( 1 )
align = 0
+script = ExtResource( 21 )
+EventName = "CharacterJoinBlock"
[node name="CharacterLeaveBlock" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 146.0
-margin_right = 200.0
-margin_bottom = 174.0
+margin_top = 154.0
+margin_right = 180.0
+margin_bottom = 182.0
text = " Character Leave"
icon = ExtResource( 7 )
align = 0
+script = ExtResource( 21 )
+EventName = "CharacterLeaveBlock"
[node name="HBoxContainer5" type="HBoxContainer" parent="ScrollContainer/EventContainer"]
-margin_top = 178.0
-margin_right = 200.0
-margin_bottom = 192.0
+margin_top = 186.0
+margin_right = 180.0
+margin_bottom = 200.0
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer5"]
margin_right = 33.0
@@ -175,54 +184,64 @@ text = "Logic"
[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer5"]
margin_left = 37.0
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 14.0
size_flags_horizontal = 3
[node name="ButtonQuestion" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 196.0
-margin_right = 200.0
-margin_bottom = 224.0
+margin_top = 204.0
+margin_right = 180.0
+margin_bottom = 232.0
text = " Question"
icon = ExtResource( 8 )
align = 0
+script = ExtResource( 21 )
+EventName = "Question"
[node name="Choice" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 228.0
-margin_right = 200.0
-margin_bottom = 256.0
+margin_top = 236.0
+margin_right = 180.0
+margin_bottom = 264.0
text = " Choice"
icon = ExtResource( 12 )
align = 0
+script = ExtResource( 21 )
+EventName = "Choice"
[node name="IfCondition" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 260.0
-margin_right = 200.0
-margin_bottom = 288.0
+margin_top = 268.0
+margin_right = 180.0
+margin_bottom = 296.0
text = " Condition"
icon = ExtResource( 5 )
align = 0
+script = ExtResource( 21 )
+EventName = "IfCondition"
[node name="EndBranch" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 292.0
-margin_right = 200.0
-margin_bottom = 320.0
+margin_top = 300.0
+margin_right = 180.0
+margin_bottom = 328.0
text = " End Branch"
icon = ExtResource( 9 )
align = 0
+script = ExtResource( 21 )
+EventName = "EndBranch"
[node name="SetValue" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 324.0
-margin_right = 200.0
-margin_bottom = 352.0
+margin_top = 332.0
+margin_right = 180.0
+margin_bottom = 354.0
text = " Set Value"
icon = ExtResource( 11 )
align = 0
+script = ExtResource( 21 )
+EventName = "SetValue"
[node name="HBoxContainer3" type="HBoxContainer" parent="ScrollContainer/EventContainer"]
-margin_top = 356.0
-margin_right = 200.0
-margin_bottom = 370.0
+margin_top = 358.0
+margin_right = 180.0
+margin_bottom = 372.0
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer3"]
margin_right = 56.0
@@ -231,55 +250,65 @@ text = "Timeline"
[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer3"]
margin_left = 60.0
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 14.0
size_flags_horizontal = 3
[node name="ChangeTimeline" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 374.0
-margin_right = 200.0
-margin_bottom = 402.0
+margin_top = 376.0
+margin_right = 180.0
+margin_bottom = 404.0
hint_tooltip = "This will instantly teleport you to the start of the desired timeline."
text = " Change Timeline"
icon = ExtResource( 10 )
align = 0
+script = ExtResource( 21 )
+EventName = "ChangeTimeline"
[node name="SceneEvent" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 406.0
-margin_right = 200.0
-margin_bottom = 434.0
+margin_top = 408.0
+margin_right = 180.0
+margin_bottom = 436.0
text = " Scene Event"
icon = ExtResource( 4 )
align = 0
+script = ExtResource( 21 )
+EventName = "SceneEvent"
[node name="CloseDialog" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 438.0
-margin_right = 200.0
-margin_bottom = 466.0
+margin_top = 440.0
+margin_right = 180.0
+margin_bottom = 468.0
text = " Close Dialog"
icon = ExtResource( 6 )
align = 0
+script = ExtResource( 21 )
+EventName = "CloseDialog"
[node name="WaitSeconds" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 470.0
-margin_right = 200.0
-margin_bottom = 498.0
+margin_top = 472.0
+margin_right = 180.0
+margin_bottom = 500.0
text = " Wait Seconds"
icon = ExtResource( 14 )
align = 0
+script = ExtResource( 21 )
+EventName = "WaitSeconds"
[node name="SetTheme" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 502.0
-margin_right = 200.0
-margin_bottom = 530.0
+margin_top = 504.0
+margin_right = 180.0
+margin_bottom = 532.0
text = " Set Theme"
icon = ExtResource( 18 )
align = 0
+script = ExtResource( 21 )
+EventName = "SetTheme"
[node name="HBoxContainer4" type="HBoxContainer" parent="ScrollContainer/EventContainer"]
-margin_top = 534.0
-margin_right = 200.0
-margin_bottom = 548.0
+margin_top = 536.0
+margin_right = 180.0
+margin_bottom = 550.0
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer4"]
margin_right = 37.0
@@ -288,30 +317,34 @@ text = "Audio"
[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer4"]
margin_left = 41.0
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 14.0
size_flags_horizontal = 3
[node name="AudioBlock" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 552.0
-margin_right = 200.0
-margin_bottom = 580.0
+margin_top = 554.0
+margin_right = 180.0
+margin_bottom = 582.0
text = " Audio Event"
icon = ExtResource( 3 )
align = 0
+script = ExtResource( 21 )
+EventName = "AudioBlock"
[node name="BackgroundMusic" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 584.0
-margin_right = 200.0
-margin_bottom = 612.0
+margin_top = 586.0
+margin_right = 180.0
+margin_bottom = 614.0
text = " Background Music"
icon = ExtResource( 19 )
align = 0
+script = ExtResource( 21 )
+EventName = "BackgroundMusic"
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/EventContainer"]
-margin_top = 616.0
-margin_right = 200.0
-margin_bottom = 630.0
+margin_top = 618.0
+margin_right = 180.0
+margin_bottom = 632.0
[node name="Label" type="Label" parent="ScrollContainer/EventContainer/HBoxContainer"]
margin_right = 39.0
@@ -320,24 +353,38 @@ text = "Godot"
[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/EventContainer/HBoxContainer"]
margin_left = 43.0
-margin_right = 200.0
+margin_right = 180.0
margin_bottom = 14.0
size_flags_horizontal = 3
[node name="EmitSignal" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 634.0
-margin_right = 200.0
-margin_bottom = 662.0
+margin_top = 636.0
+margin_right = 180.0
+margin_bottom = 664.0
text = " Emit Signal"
icon = ExtResource( 16 )
align = 0
+script = ExtResource( 21 )
+EventName = "EmitSignal"
[node name="ChangeScene" type="Button" parent="ScrollContainer/EventContainer"]
-margin_top = 666.0
-margin_right = 200.0
-margin_bottom = 694.0
+margin_top = 668.0
+margin_right = 180.0
+margin_bottom = 696.0
hint_tooltip = "This will instantly change
the current scene."
text = " Change Scene"
icon = ExtResource( 15 )
align = 0
+script = ExtResource( 21 )
+EventName = "ChangeScene"
+
+[node name="CallNode" type="Button" parent="ScrollContainer/EventContainer"]
+margin_top = 700.0
+margin_right = 180.0
+margin_bottom = 728.0
+text = " Call Node"
+icon = ExtResource( 20 )
+align = 0
+script = ExtResource( 21 )
+EventName = "CallNode"
diff --git a/addons/dialogic/Images/Resources/character-1.25.svg b/addons/dialogic/Images/Resources/character-1.25.svg
new file mode 100644
index 0000000..28ff003
--- /dev/null
+++ b/addons/dialogic/Images/Resources/character-1.25.svg
@@ -0,0 +1,4 @@
+
diff --git a/addons/dialogic/Images/Resources/character-1.25.svg.import b/addons/dialogic/Images/Resources/character-1.25.svg.import
new file mode 100644
index 0000000..95c11e6
--- /dev/null
+++ b/addons/dialogic/Images/Resources/character-1.25.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/character-1.25.svg-f8560c64a6c9ea126837d22490545cc1.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/dialogic/Images/Resources/character-1.25.svg"
+dest_files=[ "res://.import/character-1.25.svg-f8560c64a6c9ea126837d22490545cc1.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/addons/dialogic/Images/Resources/character-2.svg b/addons/dialogic/Images/Resources/character-2.svg
new file mode 100644
index 0000000..abcc1ab
--- /dev/null
+++ b/addons/dialogic/Images/Resources/character-2.svg
@@ -0,0 +1,4 @@
+
diff --git a/addons/dialogic/Images/Resources/character-2.svg.import b/addons/dialogic/Images/Resources/character-2.svg.import
new file mode 100644
index 0000000..04728d7
--- /dev/null
+++ b/addons/dialogic/Images/Resources/character-2.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/character-2.svg-6a7c147375663e487c6aad504c0ac5e9.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/dialogic/Images/Resources/character-2.svg"
+dest_files=[ "res://.import/character-2.svg-6a7c147375663e487c6aad504c0ac5e9.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/addons/dialogic/Images/Resources/character.svg b/addons/dialogic/Images/Resources/character.svg
new file mode 100644
index 0000000..8871f5e
--- /dev/null
+++ b/addons/dialogic/Images/Resources/character.svg
@@ -0,0 +1,4 @@
+
diff --git a/addons/dialogic/Images/icon.svg.import b/addons/dialogic/Images/Resources/character.svg.import
similarity index 67%
rename from addons/dialogic/Images/icon.svg.import
rename to addons/dialogic/Images/Resources/character.svg.import
index 27fadb6..b8d82a5 100644
--- a/addons/dialogic/Images/icon.svg.import
+++ b/addons/dialogic/Images/Resources/character.svg.import
@@ -2,15 +2,15 @@
importer="texture"
type="StreamTexture"
-path="res://.import/icon.svg-ea02ac3b105238214f20335b7e707d35.stex"
+path="res://.import/character.svg-dce8982b5c5669e98479bbff64aab08f.stex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://addons/dialogic/Images/icon.svg"
-dest_files=[ "res://.import/icon.svg-ea02ac3b105238214f20335b7e707d35.stex" ]
+source_file="res://addons/dialogic/Images/Resources/character.svg"
+dest_files=[ "res://.import/character.svg-dce8982b5c5669e98479bbff64aab08f.stex" ]
[params]
diff --git a/addons/dialogic/Images/Resources/definition-1.25.svg b/addons/dialogic/Images/Resources/definition-1.25.svg
new file mode 100644
index 0000000..ed40659
--- /dev/null
+++ b/addons/dialogic/Images/Resources/definition-1.25.svg
@@ -0,0 +1,3 @@
+
diff --git a/addons/dialogic/Images/Resources/definition-1.25.svg.import b/addons/dialogic/Images/Resources/definition-1.25.svg.import
new file mode 100644
index 0000000..4bb82ea
--- /dev/null
+++ b/addons/dialogic/Images/Resources/definition-1.25.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/definition-1.25.svg-7298ef82f76fa611485bd53d1f0aebe0.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/dialogic/Images/Resources/definition-1.25.svg"
+dest_files=[ "res://.import/definition-1.25.svg-7298ef82f76fa611485bd53d1f0aebe0.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/addons/dialogic/Images/Resources/definition-2.svg b/addons/dialogic/Images/Resources/definition-2.svg
new file mode 100644
index 0000000..6fca867
--- /dev/null
+++ b/addons/dialogic/Images/Resources/definition-2.svg
@@ -0,0 +1,3 @@
+
diff --git a/addons/dialogic/Images/Resources/definition-2.svg.import b/addons/dialogic/Images/Resources/definition-2.svg.import
new file mode 100644
index 0000000..3bc9276
--- /dev/null
+++ b/addons/dialogic/Images/Resources/definition-2.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/definition-2.svg-533f2834cedbb3e21c178f7a40ec34a3.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/dialogic/Images/Resources/definition-2.svg"
+dest_files=[ "res://.import/definition-2.svg-533f2834cedbb3e21c178f7a40ec34a3.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/addons/dialogic/Images/Resources/definition.svg b/addons/dialogic/Images/Resources/definition.svg
index ed40659..236ca35 100644
--- a/addons/dialogic/Images/Resources/definition.svg
+++ b/addons/dialogic/Images/Resources/definition.svg
@@ -1,3 +1,3 @@
-