From a35752129e81ada7ef21527bd33f9bbfb1ee7307 Mon Sep 17 00:00:00 2001 From: Bram Dingelstad Date: Mon, 6 Dec 2021 19:43:04 +0100 Subject: [PATCH] moved the button in the main editor --- README.md | 6 +++++- addons/Wol/core/compiler/Compiler.gd | 2 +- addons/Wol/editor/WolEditor.gd | 7 ++----- addons/Wol/editor/WolEditor.tscn | 4 ++-- addons/Wol/editor/WolGraphNode.gd | 19 ++++++++++++++++--- addons/Wol/plugin.gd | 13 +++++++++++++ 6 files changed, 39 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index a4419fd..6aabd33 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,12 @@ There are few things that need to be ironed out to be 100% feature compatible wi - [ ] Integration with Godot's translation/localization system. - [ ] Auto generation for `#line:` suffixes - [ ] Support for [format functions](https://yarnspinner.dev/docs/syntax/#format-functions). -- [ ] Support for conditional options. +- [ ] ~Support~ Fix for conditional options. - [ ] In-editor dialogue editor with preview. + - [ ] Lines connecting different nodes if they refer to eachother. + - [x] Error hints when doing something wrong. + - [x] Basic saving, opening and saving-as. +- [ ] Remove all `printerr` in favor of (soft) `assert`s. - [x] Fully extend the documentation of this project. - [x] Porting to usable signals in Godot. - [x] Providing helpful errors when failing to compile. diff --git a/addons/Wol/core/compiler/Compiler.gd b/addons/Wol/core/compiler/Compiler.gd index 617042d..55a4a62 100644 --- a/addons/Wol/core/compiler/Compiler.gd +++ b/addons/Wol/core/compiler/Compiler.gd @@ -126,7 +126,7 @@ func get_nodes(): func assert(statement, message, line_number = -1, column = -1, _absolute_line_number = -1): if not soft_assert: - assert(statement, message + ('; on line %d column %d' % [line_number, column])) + assert(statement, '"%s" on line %d column %d' % [message, line_number, column]) elif not statement: emit_signal('error', message, line_number, column) diff --git a/addons/Wol/editor/WolEditor.gd b/addons/Wol/editor/WolEditor.gd index 1677b7c..08a2c66 100644 --- a/addons/Wol/editor/WolEditor.gd +++ b/addons/Wol/editor/WolEditor.gd @@ -5,7 +5,6 @@ const Compiler = preload('res://addons/Wol/core/compiler/Compiler.gd') onready var GraphNodeTemplate = $GraphNodeTemplate var path -var compiler func _ready(): for menu_button in [$Menu/File]: @@ -13,13 +12,11 @@ func _ready(): # TODO: Conditionally load in theme based on Editor or standalone - path = 'res://dialogue.yarn' + path = 'res://dialogue.wol' build_nodes() func build_nodes(): - compiler = Compiler.new(path) - - for node in compiler.get_nodes(): + for node in Compiler.new(path).get_nodes(): var graph_node = GraphNodeTemplate.duplicate() $GraphEdit.add_child(graph_node) graph_node.node = node diff --git a/addons/Wol/editor/WolEditor.tscn b/addons/Wol/editor/WolEditor.tscn index 6fb5aff..e9eac17 100644 --- a/addons/Wol/editor/WolEditor.tscn +++ b/addons/Wol/editor/WolEditor.tscn @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2c2ef9c83d968c8cc99aa62da40477e6f3660aa71f8621e360818cc0307bf0b -size 604323 +oid sha256:8967c8b3e310a5ab4a5c78cf3d4f3b3a94fbcd4e02ed5c736c413e4106cf9249 +size 604382 diff --git a/addons/Wol/editor/WolGraphNode.gd b/addons/Wol/editor/WolGraphNode.gd index dc584cf..1ef08c3 100644 --- a/addons/Wol/editor/WolGraphNode.gd +++ b/addons/Wol/editor/WolGraphNode.gd @@ -1,10 +1,15 @@ tool extends GraphNode +signal recompiled + const Compiler = preload('res://addons/Wol/core/compiler/Compiler.gd') var node setget set_node +var error_lines = [] +var compiler + onready var text_edit = $TextEdit func _ready(): @@ -12,23 +17,30 @@ func _ready(): text_edit.connect('text_changed', self, '_on_text_changed') $TextDebounce.connect('timeout', self, '_on_debounce') +func get_connections(): + print(compiler) + func _on_text_changed(): $TextDebounce.start(.3) func _on_debounce(): text_edit.get_node('ErrorGutter').hide() node.body = text_edit.text + for line in error_lines: + text_edit.set_line_as_safe(line - 1, false) compile() func _on_offset_changed(): node.position = offset -func _on_error(message, _line_number, _column): +func _on_error(message, line_number, _column): var error_gutter = text_edit.get_node('ErrorGutter') error_gutter.show() error_gutter.text = message - # TODO: Highlight line based on line number and column + error_lines.append(line_number) + + text_edit.set_line_as_safe(line_number - 1, true) func set_node(_node): node = _node @@ -41,6 +53,7 @@ func set_node(_node): func compile(): var text = '---\n%s\n===' % text_edit.text - var compiler = Compiler.new(null, text, true) + compiler = Compiler.new(null, text, true) compiler.connect('error', self, '_on_error') compiler.compile() + emit_signal('recompiled') diff --git a/addons/Wol/plugin.gd b/addons/Wol/plugin.gd index df46bba..9e95aa0 100644 --- a/addons/Wol/plugin.gd +++ b/addons/Wol/plugin.gd @@ -17,6 +17,18 @@ func _enter_tree(): get_editor_interface().get_editor_viewport().add_child(wol_editor_instance) make_visible(false) + + call_deferred('move_button') + +func move_button(): + var buttons = get_editor_interface().get_base_control() + var path = [0, 0, 2] + for child_number in path: + if buttons.get_child_count() > child_number: + buttons = buttons.get_child(child_number) + + if buttons.has_node('AssetLib'): + buttons.get_node('AssetLib').raise() func make_visible(visible): if wol_editor_instance: @@ -35,6 +47,7 @@ func get_plugin_name(): return 'Wol' func get_plugin_icon(): + # FIXME: Change this code so it doesn't show a warning on activation var icon = ImageTexture.new() var image = Image.new() image.load('res://addons/Wol/icon-white.svg')