Figuring out the file dialog.

This commit is contained in:
2026-06-11 09:11:17 +02:00
parent 02ee850e82
commit 0b35d9016c
+19 -4
View File
@@ -1,7 +1,7 @@
package simulator package simulator
import "core:strings"
import "core:log" import "core:log"
import "core:strings"
import rl "vendor:raylib" import rl "vendor:raylib"
gui_left_panel :: proc(rect: rl.Rectangle, sim: ^Simulator) { 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, rect.height / 2,
} }
rl.DrawRectangleLinesEx(top_panel, 1, rl.DARKGRAY) rl.DrawRectangleLinesEx(top_panel, 1, rl.DARKGRAY)
gui_file_loader(top_panel)
bottom_panel := rl.Rectangle { bottom_panel := rl.Rectangle {
rect.x, 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_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) { gui_key_pad :: proc(rect: rl.Rectangle, display: [16]bool, font: rl.Font) {
Key :: struct { label: string, index: int} Key :: struct { label: string, index: int}
keys := [16]Key { 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}, {"4", 4}, {"5", 5}, {"6", 6}, {"D", 13},
{"7", 7}, {"8", 8}, {"9", 9}, {"D", 14}, {"7", 7}, {"8", 8}, {"9", 9}, {"D", 14},
{"A", 10}, {"0", 0}, {"B", 11}, {"F", 15} {"A", 10}, {"0", 0}, {"B", 11}, {"F", 15}
} }
btn_width := f32(rect.width / 4) btn_width := f32(rect.width / 4)
btn_height := f32(rect.height / 4) btn_height := f32(rect.height / 4)
for val, idx in keys { for val, idx in keys {
str := strings.clone_to_cstring(val.label) str := strings.clone_to_cstring(val.label)
ri := int(idx / 4) ri := int(idx / 4)
ci := idx % 4 ci := idx % 4
irect := rl.Rectangle{ irect := rl.Rectangle{
@@ -53,5 +68,5 @@ gui_key_pad :: proc(rect: rl.Rectangle, display: [16]bool, font: rl.Font) {
// Free the allocations! // Free the allocations!
delete(str) delete(str)
} }
} }