|
@@ -17,6 +17,7 @@
|
|
|
#include "./sv.h"
|
|
|
|
|
|
#include "./editor.h"
|
|
|
+#include "./file_browser.h"
|
|
|
#include "./la.h"
|
|
|
#include "./free_glyph.h"
|
|
|
#include "./simple_renderer.h"
|
|
@@ -60,16 +61,12 @@ void MessageCallback(GLenum source,
|
|
|
static Free_Glyph_Atlas atlas = {0};
|
|
|
static Simple_Renderer sr = {0};
|
|
|
static Editor editor = {0};
|
|
|
+static File_Browser fb = {0};
|
|
|
static Uint32 last_stroke = 0;
|
|
|
|
|
|
#define FREE_GLYPH_FONT_SIZE 64
|
|
|
#define ZOOM_OUT_GLYPH_THRESHOLD 30
|
|
|
|
|
|
-typedef struct {
|
|
|
- Files files;
|
|
|
- size_t cursor;
|
|
|
-} File_Browser;
|
|
|
-
|
|
|
void render_file_browser(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer *sr, const File_Browser *fb)
|
|
|
{
|
|
|
Vec2f cursor_pos = vec2f(0, -(float)fb->cursor * FREE_GLYPH_FONT_SIZE);
|
|
@@ -225,13 +222,6 @@ void render_editor(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer
|
|
|
// TODO: display errors reported via flash_error right in the text editor window somehow
|
|
|
#define flash_error(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
|
|
|
|
|
|
-int file_cmp(const void *ap, const void *bp)
|
|
|
-{
|
|
|
- const char *a = *(const char**)ap;
|
|
|
- const char *b = *(const char**)bp;
|
|
|
- return strcmp(a, b);
|
|
|
-}
|
|
|
-
|
|
|
int main(int argc, char **argv)
|
|
|
{
|
|
|
editor_recompute_lines(&editor);
|
|
@@ -279,6 +269,13 @@ int main(int argc, char **argv)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ const char *dir_path = ".";
|
|
|
+ Errno err = fb_open_dir(&fb, dir_path);
|
|
|
+ if (err != 0) {
|
|
|
+ fprintf(stderr, "ERROR: Could not read directory %s: %s\n", dir_path, strerror(errno));
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
|
|
fprintf(stderr, "ERROR: Could not initialize SDL: %s\n", SDL_GetError());
|
|
|
return 1;
|
|
@@ -346,7 +343,6 @@ int main(int argc, char **argv)
|
|
|
|
|
|
bool quit = false;
|
|
|
bool file_browser = false;
|
|
|
- File_Browser fb = {0};
|
|
|
while (!quit) {
|
|
|
const Uint32 start = SDL_GetTicks();
|
|
|
SDL_Event event = {0};
|
|
@@ -404,16 +400,7 @@ int main(int argc, char **argv)
|
|
|
break;
|
|
|
|
|
|
case SDLK_F3: {
|
|
|
- fb.files.count = 0;
|
|
|
- fb.cursor = 0;
|
|
|
- const char *dir_path = ".";
|
|
|
- Errno err = read_entire_dir(dir_path, &fb.files);
|
|
|
- if (err != 0) {
|
|
|
- flash_error("Could not read directory %s: %s", dir_path, strerror(errno));
|
|
|
- } else {
|
|
|
- qsort(fb.files.items, fb.files.count, sizeof(*fb.files.items), file_cmp);
|
|
|
- file_browser = true;
|
|
|
- }
|
|
|
+ file_browser = true;
|
|
|
}
|
|
|
break;
|
|
|
|