Added Open & Save buttons for the shader, some code improvements and bugfixes, open window maximized per default - closes #3

This commit is contained in:
ChaoticByte 2024-06-08 11:23:21 +02:00
parent 3a5451a4f6
commit d7a4b05e85
No known key found for this signature in database
5 changed files with 94 additions and 28 deletions

View file

@ -26,6 +26,7 @@ Globals="*res://src/Globals.gd"
window/size/viewport_width=1280
window/size/viewport_height=720
window/size/mode=2
window/energy_saving/keep_screen_on=false
[editor_plugins]

View file

@ -58,15 +58,15 @@ grow_vertical = 2
focus_mode = 2
color = Color(1, 1, 1, 0)
[node name="OpenFileDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer"]
title = "Open a File"
[node name="OpenImageDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer"]
title = "Load Image"
size = Vector2i(521, 159)
ok_button_text = "Öffnen"
file_mode = 0
access = 2
use_native_dialog = true
[node name="SaveFileDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer"]
[node name="SaveImageDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer"]
title = "Export Image"
size = Vector2i(661, 159)
ok_button_text = "Speichern"
@ -84,17 +84,17 @@ text = "Load Image"
[node name="SaveImageButton" type="Button" parent="UI_Layer/UserInterfaceContainer"]
layout_mode = 0
offset_left = 152.0
offset_left = 144.0
offset_top = 24.0
offset_right = 272.0
offset_right = 264.0
offset_bottom = 56.0
text = "Export Image"
[node name="FitImageButton" type="Button" parent="UI_Layer/UserInterfaceContainer"]
layout_mode = 0
offset_left = 288.0
layout_mode = 1
offset_left = 272.0
offset_top = 24.0
offset_right = 376.0
offset_right = 360.0
offset_bottom = 56.0
text = "Fit Image"
@ -111,6 +111,23 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("7_g8bap")
[node name="OpenShaderDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer/Editor"]
title = "Load Shader"
size = Vector2i(521, 159)
ok_button_text = "Öffnen"
file_mode = 0
access = 2
filters = PackedStringArray("*.gdshader")
use_native_dialog = true
[node name="SaveShaderDialog" type="FileDialog" parent="UI_Layer/UserInterfaceContainer/Editor"]
title = "Save Shader"
size = Vector2i(661, 159)
ok_button_text = "Speichern"
access = 2
filters = PackedStringArray("*.gdshader")
use_native_dialog = true
[node name="Label" type="Label" parent="UI_Layer/UserInterfaceContainer/Editor"]
layout_mode = 0
offset_top = 8.0
@ -124,7 +141,7 @@ layout_mode = 0
offset_left = 104.0
offset_top = 8.0
offset_right = 240.0
offset_bottom = 32.0
offset_bottom = 40.0
[node name="CodeEdit" type="CodeEdit" parent="UI_Layer/UserInterfaceContainer/Editor"]
layout_mode = 1
@ -150,14 +167,39 @@ indent_automatic = true
auto_brace_completion_enabled = true
auto_brace_completion_highlight_matching = true
[node name="OpenShaderButton" type="Button" parent="UI_Layer/UserInterfaceContainer/Editor"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -120.0
offset_right = -64.0
offset_bottom = 32.0
grow_horizontal = 0
text = "Open"
[node name="SaveShaderButton" type="Button" parent="UI_Layer/UserInterfaceContainer/Editor"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -56.0
offset_bottom = 32.0
grow_horizontal = 0
text = "Save"
[node name="Camera" type="Camera2D" parent="."]
script = ExtResource("8_mls06")
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/OpenFileDialog" to="." method="_on_open_file_dialog_file_selected"]
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/SaveFileDialog" to="." method="_on_save_file_dialog_file_selected"]
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/OpenImageDialog" to="." method="_on_open_image_dialog_file_selected"]
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/SaveImageDialog" to="." method="_on_save_image_dialog_file_selected"]
[connection signal="pressed" from="UI_Layer/UserInterfaceContainer/OpenImageButton" to="." method="_on_open_image_button_pressed"]
[connection signal="pressed" from="UI_Layer/UserInterfaceContainer/SaveImageButton" to="." method="_on_save_image_button_pressed"]
[connection signal="pressed" from="UI_Layer/UserInterfaceContainer/FitImageButton" to="Camera" method="_on_fit_image_button_pressed"]
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/Editor/OpenShaderDialog" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_open_shader_dialog_file_selected"]
[connection signal="file_selected" from="UI_Layer/UserInterfaceContainer/Editor/SaveShaderDialog" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_save_shader_dialog_file_selected"]
[connection signal="item_selected" from="UI_Layer/UserInterfaceContainer/Editor/PresetOptions" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_preset_options_item_selected"]
[connection signal="code_completion_requested" from="UI_Layer/UserInterfaceContainer/Editor/CodeEdit" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_code_edit_code_completion_requested"]
[connection signal="text_changed" from="UI_Layer/UserInterfaceContainer/Editor/CodeEdit" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_code_edit_text_changed"]
[connection signal="pressed" from="UI_Layer/UserInterfaceContainer/Editor/OpenShaderButton" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_open_shader_button_pressed"]
[connection signal="pressed" from="UI_Layer/UserInterfaceContainer/Editor/SaveShaderButton" to="UI_Layer/UserInterfaceContainer/Editor" method="_on_save_shader_button_pressed"]

View file

@ -18,14 +18,15 @@ func _input(event):
global_position -= event.relative / zoom
func fit_image():
var ui_container_size = user_interface_container.size
var image_size = image_viewport.image_original_tex.get_size()
var viewport_size = get_viewport_rect().size
var zoomf = (viewport_size.x - ui_container_size.x) / image_size.x / 1.1
if zoomf * image_size.y > viewport_size.y:
zoomf = viewport_size.y / image_size.y / 1.1
zoom = Vector2(zoomf, zoomf)
global_position = Vector2(-((ui_container_size.x) / 2 / zoom.x), 0)
if image_viewport.image_original_tex != null:
var ui_container_size = user_interface_container.size
var image_size = image_viewport.image_original_tex.get_size()
var viewport_size = get_viewport_rect().size
var zoomf = (viewport_size.x - ui_container_size.x) / image_size.x / 1.1
if zoomf * image_size.y > viewport_size.y:
zoomf = viewport_size.y / image_size.y / 1.1
zoom = Vector2(zoomf, zoomf)
global_position = Vector2(-((ui_container_size.x) / 2 / zoom.x), 0)
func zoom_in():
var old_mouse_pos = get_global_mouse_position()

View file

@ -2,6 +2,8 @@ extends Control
@onready var preset_options = $PresetOptions
@onready var code_editor = $CodeEdit
@onready var open_shader_dialog = $OpenShaderDialog
@onready var save_shader_dialog = $SaveShaderDialog
var selected_preset_name = ShaderPresets.default_preset
# # # # # # # # # # #
@ -210,3 +212,24 @@ func update():
preset_options.select(current_p_idx)
# weirdness ends here
code_editor.text = Globals.shader.code
func _on_open_shader_button_pressed():
open_shader_dialog.show()
func _on_save_shader_button_pressed():
save_shader_dialog.current_file = selected_preset_name + "_custom.gdshader"
save_shader_dialog.show()
func _on_open_shader_dialog_file_selected(path):
var file = FileAccess.open(path, FileAccess.READ)
var shader_code = file.get_as_text()
var shader = Shader.new()
shader.code = shader_code
Globals.shader = shader
Globals.target_viewport.update()
update()
func _on_save_shader_dialog_file_selected(path):
var file = FileAccess.open(path, FileAccess.WRITE)
var content = Globals.shader.code
file.store_string(content)

View file

@ -3,19 +3,16 @@ extends Node2D
@onready var camera = $Camera
@onready var image_viewport = $ImageViewport
@onready var ui_container = $UI_Layer/UserInterfaceContainer
@onready var ui_control_fileopen = $UI_Layer/UserInterfaceContainer/OpenFileDialog
@onready var ui_control_filesave = $UI_Layer/UserInterfaceContainer/SaveFileDialog
@onready var ui_control_fileopen = $UI_Layer/UserInterfaceContainer/OpenImageDialog
@onready var ui_control_filesave = $UI_Layer/UserInterfaceContainer/SaveImageDialog
func _ready():
Globals.target_viewport = image_viewport
func _on_open_image_button_pressed():
if OS.get_name() == "Android":
Engine.get_singleton("GodotGetImage").getGalleryImage()
else:
ui_control_fileopen.show()
ui_control_fileopen.show()
func _on_open_file_dialog_file_selected(path):
func _on_open_image_dialog_file_selected(path):
var img = Image.new()
var err = img.load(path)
if err == OK:
@ -26,9 +23,11 @@ func _on_open_file_dialog_file_selected(path):
print("An error occured!")
func _on_save_image_button_pressed():
ui_control_filesave.show()
if image_viewport.get_result() != null:
ui_control_filesave.current_file = "image.png"
ui_control_filesave.show()
func _on_save_file_dialog_file_selected(path):
func _on_save_image_dialog_file_selected(path):
var err = image_viewport.get_result().save_png(path)
if err != OK:
print("An error occured!")