From 0b35d9016c7df6d791bbbf8d1baf2d0bf0176789 Mon Sep 17 00:00:00 2001 From: Jason Hilder Date: Thu, 11 Jun 2026 09:11:17 +0200 Subject: [PATCH] Figuring out the file dialog. --- src/simulator/left_panel.odin | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/simulator/left_panel.odin b/src/simulator/left_panel.odin index e4662de..39fc054 100644 --- a/src/simulator/left_panel.odin +++ b/src/simulator/left_panel.odin @@ -1,7 +1,7 @@ package simulator -import "core:strings" import "core:log" +import "core:strings" import rl "vendor:raylib" gui_left_panel :: proc(rect: rl.Rectangle, sim: ^Simulator) { @@ -12,6 +12,7 @@ gui_left_panel :: proc(rect: rl.Rectangle, sim: ^Simulator) { rect.height / 2, } rl.DrawRectangleLinesEx(top_panel, 1, rl.DARKGRAY) + gui_file_loader(top_panel) bottom_panel := rl.Rectangle { rect.x, @@ -23,6 +24,20 @@ gui_left_panel :: proc(rect: rl.Rectangle, sim: ^Simulator) { gui_key_pad(bottom_panel, sim.machine.keypad, sim.font) } +gui_file_loader :: proc(rect: rl.Rectangle,) { + if rl.IsFileDropped() { + log.info("file drop found!") + dropped_file := rl.LoadDroppedFiles() + + if dropped_file.count > 1 { + path_str := string(dropped_file.paths[0]) + log.info("file dropped: ", path_str) + } + + rl.UnloadDroppedFiles(dropped_file) + } +} + gui_key_pad :: proc(rect: rl.Rectangle, display: [16]bool, font: rl.Font) { Key :: struct { label: string, index: int} keys := [16]Key { @@ -30,14 +45,14 @@ gui_key_pad :: proc(rect: rl.Rectangle, display: [16]bool, font: rl.Font) { {"4", 4}, {"5", 5}, {"6", 6}, {"D", 13}, {"7", 7}, {"8", 8}, {"9", 9}, {"D", 14}, {"A", 10}, {"0", 0}, {"B", 11}, {"F", 15} - } + } btn_width := f32(rect.width / 4) btn_height := f32(rect.height / 4) for val, idx in keys { str := strings.clone_to_cstring(val.label) - ri := int(idx / 4) + ri := int(idx / 4) ci := idx % 4 irect := rl.Rectangle{ @@ -53,5 +68,5 @@ gui_key_pad :: proc(rect: rl.Rectangle, display: [16]bool, font: rl.Font) { // Free the allocations! delete(str) - } + } }