Allow dropping files onto the window to load them.

This commit is contained in:
Luke Hubmayer-Werner 2024-07-08 14:51:23 +09:30
parent 038ab69a54
commit a7fc07c726
1 changed files with 15 additions and 7 deletions

View File

@ -111,26 +111,28 @@ func update_view():
for entry in files: for entry in files:
itemlist.add_item(entry[0], entry[1]) itemlist.add_item(entry[0], entry[1])
func load_file(entry: String): func load_file(filename: String, full_path: bool = false):
var filename := dir.get_current_dir() + '/' + entry var full_filename := filename
var ext = entry.rsplit('.', true, 1)[1].to_lower() if not full_path:
full_filename = dir.get_current_dir() + '/' + filename
var ext := full_filename.rsplit('/', true, 1)[1].rsplit('.', true, 1)[1].to_lower()
match ext: match ext:
'sfc', 'smc': 'sfc', 'smc':
if current_mode == SELECT_ROM: if current_mode == SELECT_ROM:
splash_filter.visible = true splash_filter.visible = true
splash_label.text = 'Loading ROM: %s'%filename splash_label.text = 'Loading ROM: %s'%full_filename
yield(get_tree(), 'idle_frame') yield(get_tree(), 'idle_frame')
RomLoader.load_snes_rom(filename) RomLoader.load_snes_rom(full_filename)
'srm': 'srm':
if current_mode == SELECT_ROM: if current_mode == SELECT_ROM:
return return
var file := File.new() var file := File.new()
match file.open(filename, File.READ): match file.open(full_filename, File.READ):
OK: OK:
emit_signal('savefile_loaded', SaveLoader.load_save_dicts_from_file(file)) emit_signal('savefile_loaded', SaveLoader.load_save_dicts_from_file(file))
_set_mode(COMPLETE) _set_mode(COMPLETE)
var err: var err:
print_debug('Error loading savefile: %s - %d'%[filename, err]) print_debug('Error loading savefile: %s - %d'%[full_filename, err])
func activate_entry(entry: String, _index: int = -1): func activate_entry(entry: String, _index: int = -1):
var curr_dir := dir.get_current_dir() var curr_dir := dir.get_current_dir()
@ -228,6 +230,12 @@ func _ready() -> void:
RomLoader.connect('loading_stage_updated', self, '_on_loading_stage_updated') RomLoader.connect('loading_stage_updated', self, '_on_loading_stage_updated')
print(ProjectSettings.globalize_path('user://')) print(ProjectSettings.globalize_path('user://'))
print(ProjectSettings.globalize_path(dir.get_current_dir())) print(ProjectSettings.globalize_path(dir.get_current_dir()))
get_tree().connect('files_dropped', self, '_files_dropped')
func _files_dropped(filenames: PoolStringArray, screen_idx: int) -> void:
print('Files Dropped signal: screen=%d, files='%screen_idx, filenames)
for filename in filenames:
load_file(filename, true)
func _update_config() -> void: func _update_config() -> void:
var d = self.dir.get_current_dir() var d = self.dir.get_current_dir()