From de4aa26fff3b61add3340e71923ec35be6e166e6 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 29 Nov 2020 01:12:27 +0100 Subject: [PATCH] Removed HTML5FileExchange.gd autoload. --- project.godot | 1 - src/Autoload/Export.gd | 9 +- src/Autoload/HTML5FileExchange.gd | 234 -------------------- src/Palette/PaletteContainer.gd | 7 +- src/UI/Dialogs/ImageEffects/ShaderEffect.gd | 5 +- src/UI/Dialogs/SaveSprite.tscn | 4 +- src/UI/TopMenuContainer.gd | 9 +- src/UI/UI.tscn | 1 + 8 files changed, 12 insertions(+), 258 deletions(-) delete mode 100644 src/Autoload/HTML5FileExchange.gd diff --git a/project.godot b/project.godot index 2561941..22514f0 100644 --- a/project.godot +++ b/project.godot @@ -126,7 +126,6 @@ Import="*res://src/Autoload/Import.gd" OpenSave="*res://src/Autoload/OpenSave.gd" DrawingAlgos="*res://src/Autoload/DrawingAlgos.gd" Tools="*res://src/Autoload/Tools.gd" -Html5FileExchange="*res://src/Autoload/HTML5FileExchange.gd" Export="*res://src/Autoload/Export.gd" [debug] diff --git a/src/Autoload/Export.gd b/src/Autoload/Export.gd index f0cf57d..b7ad2e7 100644 --- a/src/Autoload/Export.gd +++ b/src/Autoload/Export.gd @@ -170,12 +170,9 @@ func export_processed_images(ignore_overwrites: bool, export_dialog: AcceptDialo pass else: for i in range(processed_images.size()): - if OS.get_name() == "HTML5": - Html5FileExchange.save_image(processed_images[i], export_paths[i].get_file()) - else: - var err = processed_images[i].save_png(export_paths[i]) - if err != OK: - OS.alert("Can't save file. Error code: %s" % err) + var err = processed_images[i].save_png(export_paths[i]) + if err != OK: + OS.alert("Can't save file. Error code: %s" % err) # Store settings for quick export and when the dialog is opened again was_exported = true diff --git a/src/Autoload/HTML5FileExchange.gd b/src/Autoload/HTML5FileExchange.gd deleted file mode 100644 index 78b02c1..0000000 --- a/src/Autoload/HTML5FileExchange.gd +++ /dev/null @@ -1,234 +0,0 @@ -extends Node -# Code taken and modified from https://github.com/Pukkah/HTML5-File-Exchange-for-Godot -# Thanks to Pukkah from GitHub for providing the original code - -signal InFocus - - -func _ready() -> void: - if OS.get_name() == "HTML5" and OS.has_feature('JavaScript'): - _define_js() - - -func _notification(notification:int) -> void: - if notification == MainLoop.NOTIFICATION_WM_FOCUS_IN: - emit_signal("InFocus") - - -func _define_js() -> void: - # Define JS script - JavaScript.eval(""" - var fileData; - var fileType; - var fileName; - var canceled; - function upload_image() { - canceled = true; - var input = document.createElement('INPUT'); - input.setAttribute("type", "file"); - input.setAttribute("accept", "image/png, image/jpeg, image/webp"); - input.click(); - input.addEventListener('change', event => { - if (event.target.files.length > 0){ - canceled = false;} - var file = event.target.files[0]; - var reader = new FileReader(); - fileType = file.type; - fileName = file.name; - reader.readAsArrayBuffer(file); - reader.onloadend = function (evt) { - if (evt.target.readyState == FileReader.DONE) { - fileData = evt.target.result; - } - } - }); - } - function upload_palette() { - canceled = true; - var input = document.createElement('INPUT'); - input.setAttribute("type", "file"); - input.setAttribute("accept", "application/json, .gpl, .pal, image/png, image/jpeg, image/webp"); - input.click(); - input.addEventListener('change', event => { - if (event.target.files.length > 0){ - canceled = false;} - var file = event.target.files[0]; - var reader = new FileReader(); - fileType = file.type; - fileName = file.name; - if (fileType == "image/png" || fileType == "image/jpeg" || fileType == "image/webp"){ - reader.readAsArrayBuffer(file); - } - else { - reader.readAsText(file); - } - reader.onloadend = function (evt) { - if (evt.target.readyState == FileReader.DONE) { - fileData = evt.target.result; - } - } - }); - } - function upload_shader() { - canceled = true; - var input = document.createElement('INPUT'); - input.setAttribute("type", "file"); - input.setAttribute("accept", ".shader"); - input.click(); - input.addEventListener('change', event => { - if (event.target.files.length > 0){ - canceled = false;} - var file = event.target.files[0]; - var reader = new FileReader(); - fileType = file.type; - fileName = file.name; - reader.readAsText(file); - reader.onloadend = function (evt) { - if (evt.target.readyState == FileReader.DONE) { - fileData = evt.target.result; - } - } - }); - } - function download(fileName, byte, type) { - var buffer = Uint8Array.from(byte); - var blob = new Blob([buffer], { type: type}); - var link = document.createElement('a'); - link.href = window.URL.createObjectURL(blob); - link.download = fileName; - link.click(); - }; - """, true) - - -func load_image() -> void: - if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'): - return - - # Execute JS function - JavaScript.eval("upload_image();", true) # Opens prompt for choosing file - - yield(self, "InFocus") # Wait until JS prompt is closed - - yield(get_tree().create_timer(0.5), "timeout") # Give some time for async JS data load - - if JavaScript.eval("canceled;", true): # If File Dialog closed w/o file - return - - # Use data from png data - var image_data - while true: - image_data = JavaScript.eval("fileData;", true) - if image_data != null: - break - yield(get_tree().create_timer(1.0), "timeout") # Need more time to load data - - var image_type = JavaScript.eval("fileType;", true) - var image_name = JavaScript.eval("fileName;", true) - - var image = Image.new() - var image_error - match image_type: - "image/png": - image_error = image.load_png_from_buffer(image_data) - "image/jpeg": - image_error = image.load_jpg_from_buffer(image_data) - "image/webp": - image_error = image.load_webp_from_buffer(image_data) - var invalid_type: - print("Invalid type: " + invalid_type) - return - if image_error: - print("An error occurred while trying to display the image.") - return - else: - OpenSave.handle_loading_image(image_name, image) - - -func load_palette() -> void: - if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'): - return - - # Execute JS function - JavaScript.eval("upload_palette();", true) # Opens prompt for choosing file - - yield(self, "InFocus") # Wait until JS prompt is closed - - yield(get_tree().create_timer(0.5), "timeout") # Give some time for async JS data load - - if JavaScript.eval("canceled;", true): # If File Dialog closed w/o file - return - - # Use data from palette file data - var palette_data - while true: - palette_data = JavaScript.eval("fileData;", true) - if palette_data != null: - break - yield(get_tree().create_timer(1.0), "timeout") # Need more time to load data - - var file_type = JavaScript.eval("fileType;", true) - var file_name = JavaScript.eval("fileName;", true) - if file_name.ends_with(".gpl"): - var palette := Palette.new() - palette = Import.import_gpl(file_name, palette_data) - Global.palette_container.attempt_to_import_palette(palette) - elif file_name.ends_with(".pal"): - var palette := Palette.new() - palette = Import.import_pal_palette(file_name, palette_data) - Global.palette_container.attempt_to_import_palette(palette) - else: - match file_type: - "image/png": - var image := Image.new() - var err = image.load_png_from_buffer(palette_data) - if !err: - Global.palette_container.import_image_palette(file_name, image) - "application/json": - var palette : Palette = Palette.new().deserialize(palette_data) - palette.source_path = file_name - Global.palette_container.attempt_to_import_palette(palette) - var invalid_type: - print("Invalid type: " + invalid_type) - return - - -func save_image(image : Image, file_name : String = "export") -> void: - if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'): - return - - var png_data = Array(image.save_png_to_buffer()) - JavaScript.eval("download('%s', %s, 'image/png');" % [file_name, str(png_data)], true) - - -func load_shader() -> void: - if OS.get_name() != "HTML5" or !OS.has_feature('JavaScript'): - return - - # Execute JS function - JavaScript.eval("upload_shader();", true) # Opens prompt for choosing file - - yield(self, "InFocus") # Wait until JS prompt is closed - - yield(get_tree().create_timer(0.5), "timeout") # Give some time for async JS data load - - if JavaScript.eval("canceled;", true): # If File Dialog closed w/o file - return - - # Use data from png data - var file_data - while true: - file_data = JavaScript.eval("fileData;", true) - if file_data != null: - break - yield(get_tree().create_timer(1.0), "timeout") # Need more time to load data - -# var file_type = JavaScript.eval("fileType;", true) - var file_name = JavaScript.eval("fileName;", true) - - var shader = Shader.new() - shader.code = file_data - - var shader_effect_dialog = Global.control.get_node("Dialogs/ImageEffects/ShaderEffect") - shader_effect_dialog.change_shader(shader, file_name.get_basename()) - diff --git a/src/Palette/PaletteContainer.gd b/src/Palette/PaletteContainer.gd index c205861..eda921d 100644 --- a/src/Palette/PaletteContainer.gd +++ b/src/Palette/PaletteContainer.gd @@ -46,11 +46,8 @@ func on_new_empty_palette() -> void: func on_import_palette() -> void: - if OS.get_name() == "HTML5": - Html5FileExchange.load_palette() - else: - Global.palette_import_file_dialog.popup_centered() - Global.dialog_open(true) + Global.palette_import_file_dialog.popup_centered() + Global.dialog_open(true) func on_palette_import_file_selected(path : String) -> void: diff --git a/src/UI/Dialogs/ImageEffects/ShaderEffect.gd b/src/UI/Dialogs/ImageEffects/ShaderEffect.gd index efa6008..dcd83ca 100644 --- a/src/UI/Dialogs/ImageEffects/ShaderEffect.gd +++ b/src/UI/Dialogs/ImageEffects/ShaderEffect.gd @@ -71,10 +71,7 @@ func _on_ShaderEffect_popup_hide() -> void: func _on_ChooseShader_pressed() -> void: - if OS.get_name() == "HTML5": - Html5FileExchange.load_shader() - else: - $FileDialog.popup_centered(Vector2(300, 340)) + $FileDialog.popup_centered(Vector2(300, 340)) func _on_FileDialog_file_selected(path : String) -> void: diff --git a/src/UI/Dialogs/SaveSprite.tscn b/src/UI/Dialogs/SaveSprite.tscn index 7e8486a..958e78b 100644 --- a/src/UI/Dialogs/SaveSprite.tscn +++ b/src/UI/Dialogs/SaveSprite.tscn @@ -12,6 +12,6 @@ margin_bottom = 48.0 resizable = true access = 2 filters = PoolStringArray( "*.pxo ; Pixelorama Project" ) -current_dir = "/Users" +current_dir = "/home/relintai/Projects/draw_gd" current_file = "untitled" -current_path = "/Users/untitled" +current_path = "/home/relintai/Projects/draw_gd/untitled" diff --git a/src/UI/TopMenuContainer.gd b/src/UI/TopMenuContainer.gd index f93d9b5..519e6a9 100644 --- a/src/UI/TopMenuContainer.gd +++ b/src/UI/TopMenuContainer.gd @@ -134,12 +134,9 @@ func on_new_project_file_menu_option_pressed() -> void: func open_project_file() -> void: - if OS.get_name() == "HTML5": - Html5FileExchange.load_image() - else: - Global.open_sprites_dialog.popup_centered() - Global.dialog_open(true) - Global.control.opensprite_file_selected = false + Global.open_sprites_dialog.popup_centered() + Global.dialog_open(true) + Global.control.opensprite_file_selected = false func on_open_last_project_file_menu_option_pressed() -> void: diff --git a/src/UI/UI.tscn b/src/UI/UI.tscn index c972171..fadc75f 100644 --- a/src/UI/UI.tscn +++ b/src/UI/UI.tscn @@ -353,6 +353,7 @@ margin_bottom = 248.0 [node name="PalettePanelContainer" parent="RightPanel/PreviewAndPalettes/ToolAndPaletteVSplit" instance=ExtResource( 20 )] margin_top = 260.0 margin_bottom = 508.0 + [connection signal="reposition_active_tab_request" from="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" to="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" method="_on_Tabs_reposition_active_tab_request"] [connection signal="tab_changed" from="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" to="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" method="_on_Tabs_tab_changed"] [connection signal="tab_close" from="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" to="CanvasAndTimeline/ViewportAndRulers/TabsContainer/Tabs" method="_on_Tabs_tab_close"]