From 6823f9badefa098e8325259a9c70281438c1f045 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Tue, 8 Sep 2026 20:03:45 -0500 Subject: [PATCH] Initial support for SDL3 native file open dialogs :heart: --- lib/gosu_ext.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lib/gosu_ext.rb diff --git a/lib/gosu_ext.rb b/lib/gosu_ext.rb new file mode 100644 index 0000000..286a3ea --- /dev/null +++ b/lib/gosu_ext.rb @@ -0,0 +1,36 @@ +module Gosu + # ! nonblocking + def self.choose_file(&block) + callback_id = "gc_protect_#{Gosu.milliseconds}" + + callback = lambda do |user_data, file_list, filter| + data = nil + + if file_list + data = file_list.read_array_of_string + end + + block.call(data) + + W3DHubLauncher::MemCache.delete(callback_id) + end + + W3DHubLauncher::MemCache[callback_id] = callback + + SDL.ShowOpenFileDialog( + callback, + nil, + CyberarmEngine::Window.instance.sdl_window, + nil, + 0, + W3DHubLauncher::CACHE_PATH, + false + ) + end + + def self.choose_folder() + end + + def self.save_file() + end +end