[Web] Allow dropping files onto the window to load them.

This commit is contained in:
Luke Hubmayer-Werner 2024-07-08 15:35:38 +09:30
parent a7fc07c726
commit 9ad16eaece
1 changed files with 19 additions and 0 deletions

View File

@ -145,6 +145,24 @@ func _upload_file(filename: String, file_type: String, data): # data is Javascr
print('uploaded "%s" with filesize %d bytes'%[filename, len(data)])
update_view()
func _files_dropped(filenames: PoolStringArray, screen_idx: int) -> void:
print('Files Dropped signal: screen=%d, files='%screen_idx, filenames)
for filename in filenames:
var ext: String = filename.rsplit('.', true, 1)[1]
if ext in ALLOWED_EXTS:
var file := File.new()
match file.open(filename, File.READ):
OK:
var rom_size := file.get_len()
var data := file.get_buffer(rom_size)
uploaded_files[filename] = data
uploaded_files_types[filename] = ext
print('uploaded "%s" with filesize %d bytes'%[filename, len(data)])
update_view()
load_file(filename)
var error:
print_debug('Error %d loading filename:'%error, filename)
func _ready() -> void:
if OS.get_name() != 'HTML5' or !OS.has_feature('JavaScript'):
return
@ -155,6 +173,7 @@ func _ready() -> void:
RomLoader.connect('rom_loaded', self, '_on_rom_loaded')
RomLoader.connect('loading_stage_updated', self, '_on_loading_stage_updated')
HTML5.connect('uploaded_file', self, '_upload_file')
get_tree().connect('files_dropped', self, '_files_dropped')
func _set_mode(new_mode) -> void:
match new_mode: