Add a 'New' and 'Save As' button and improve save behaviour, additional minor improvements - fix #20

This commit is contained in:
ChaoticByte 2024-12-25 00:07:51 +01:00
parent 6b748229ed
commit ca40971e53
No known key found for this signature in database
7 changed files with 232 additions and 170 deletions

View file

@ -1,12 +1,14 @@
extends Control
@onready var code_editor = %CodeEdit
@onready var open_shader_dialog = %OpenShaderDialog
@onready var save_shader_dialog = %SaveShaderDialog
@onready var image_viewport = %ImageViewport
@onready var ui_control_filesave = %SaveImageDialog
@onready var image_viewport = get_tree().root.get_node("Main/%ImageViewport")
@onready var camera = get_tree().root.get_node("Main/%Camera")
# # # # # # # # # # #
# GDShader keywords #
# https://github.com/godotengine/godot/blob/e96ad5af98547df71b50c4c4695ac348638113e0/servers/rendering/shader_language.cpp
@ -183,28 +185,36 @@ func _input(event):
func update():
code_editor.text = Filesystem.shader.code
#
func _on_new_shader_button_pressed():
Filesystem.reset()
self.update()
image_viewport.update()
func _on_open_shader_button_pressed():
open_shader_dialog.show()
func _on_save_shader_button_pressed():
Filesystem.shader.code = code_editor.text
if Filesystem.last_shader_savepath == "":
_on_save_shader_as_button_pressed()
else:
_on_save_shader_dialog_file_selected(Filesystem.last_shader_savepath)
func _on_save_shader_as_button_pressed() -> void:
Filesystem.shader.code = code_editor.text
if Filesystem.last_shader_savepath == "":
save_shader_dialog.current_file = "filter.gdshader"
else:
save_shader_dialog.current_path = Filesystem.last_shader_savepath
save_shader_dialog.show()
func _on_open_shader_dialog_file_selected(path: String):
Filesystem.load_shader(path)
image_viewport.update()
self.update()
func _on_save_shader_dialog_file_selected(path):
Filesystem.save_shader(path, code_editor.text)
func _on_fit_image_button_pressed():
camera.fit_image()
func _on_apply_shader_button_pressed():
var shader = Shader.new()
shader.code = code_editor.text
Filesystem.shader = shader
Filesystem.shader.code = code_editor.text
image_viewport.update()
func _on_save_image_button_pressed():
@ -212,5 +222,15 @@ func _on_save_image_button_pressed():
ui_control_filesave.current_path = Filesystem.last_image_savepath
ui_control_filesave.show()
#
func _on_open_shader_dialog_file_selected(path: String):
Filesystem.load_shader(path)
image_viewport.update()
self.update()
func _on_save_shader_dialog_file_selected(path):
Filesystem.save_shader(path)
func _on_save_image_dialog_file_selected(path):
Filesystem.save_result(path)