moved the button in the main editor

This commit is contained in:
Bram Dingelstad 2021-12-06 19:43:04 +01:00
parent 31447732ad
commit a35752129e
6 changed files with 39 additions and 12 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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

BIN
addons/Wol/editor/WolEditor.tscn (Stored with Git LFS)

Binary file not shown.

View file

@ -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')

View file

@ -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')