Added Open & Save buttons for the shader, some code improvements and bugfixes, open window maximized per default - closes #3
This commit is contained in:
parent
3a5451a4f6
commit
d7a4b05e85
5 changed files with 94 additions and 28 deletions
|
@ -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]
|
||||
|
|
|
@ -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"]
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
17
src/Main.gd
17
src/Main.gd
|
@ -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!")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue