diff --git a/test/testdialog.c b/test/testdialog.c index 73cebe8137..daeb6b8e37 100644 --- a/test/testdialog.c +++ b/test/testdialog.c @@ -16,7 +16,7 @@ #include #include -const SDL_DialogFileFilter filters[] = { +static const SDL_DialogFileFilter filters[] = { { "All files", "*" }, { "SVI Session Indexes", "index;svi-index;index.pb" }, { "JPG images", "jpg;jpeg" }, @@ -27,7 +27,7 @@ static void SDLCALL callback(void *userdata, const char * const *files, int filt char **saved_path = userdata; if (files) { - const char* filter_name = "(filter fetching unsupported)"; + const char *filter_name = "(filter fetching unsupported)"; if (filter != -1) { if (filter < sizeof(filters) / sizeof(*filters)) { @@ -55,7 +55,7 @@ static void SDLCALL callback(void *userdata, const char * const *files, int filt } } -char *concat_strings(const char *a, const char *b) +static char *concat_strings(const char *a, const char *b) { char *out = NULL; @@ -74,45 +74,27 @@ char *concat_strings(const char *a, const char *b) int main(int argc, char *argv[]) { - SDL_Window *w; - SDL_Renderer *r; - SDLTest_CommonState *state; - const SDL_FRect open_file_rect = { 50, 50, 220, 140 }; - const SDL_FRect save_file_rect = { 50, 290, 220, 140 }; - const SDL_FRect open_folder_rect = { 370, 50, 220, 140 }; - int i; - const char *default_filename = "Untitled.index"; + static const SDL_FRect OPEN_FILE_RECT = { 50, 50, 220, 140 }; + static const SDL_FRect SAVE_FILE_RECT = { 50, 290, 220, 140 }; + static const SDL_FRect OPEN_FOLDER_RECT = { 370, 50, 220, 140 }; + static const char DEFAULT_FILENAME[] = "Untitled.index"; const char *initial_path = NULL; char *last_saved_path = NULL; /* Initialize test framework */ - state = SDLTest_CommonCreateState(argv, 0); + SDLTest_CommonState *state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); if (state == NULL) { return 1; } - /* Parse commandline */ - for (i = 1; i < argc;) { - int consumed; - - consumed = SDLTest_CommonArg(state, i); - - if (consumed <= 0) { - static const char *options[] = { NULL }; - SDLTest_CommonLogUsage(state, argv[0], options); - return 1; - } - - i += consumed; - } - - if (!SDL_Init(SDL_INIT_VIDEO)) { - SDL_Log("SDL_Init failed (%s)", SDL_GetError()); + if (!SDLTest_CommonDefaultArgs(state, argc, argv)) { + SDL_Quit(); + SDLTest_CommonDestroyState(state); return 1; } - if (!SDL_CreateWindowAndRenderer("testdialog", 640, 480, 0, &w, &r)) { - SDL_Log("Failed to create window and/or renderer: %s", SDL_GetError()); - SDL_Quit(); + + if (!SDLTest_CommonInit(state)) { + SDL_Log("SDL_Init failed (%s)", SDL_GetError()); return 1; } @@ -123,14 +105,13 @@ int main(int argc, char *argv[]) } while (1) { - int quit = 0; + int done = 0; SDL_Event e; while (SDL_PollEvent(&e)) { - if (e.type == SDL_EVENT_QUIT) { - quit = 1; - break; - } else if (e.type == SDL_EVENT_MOUSE_BUTTON_UP) { + SDLTest_CommonEvent(state, &e, &done); + if (e.type == SDL_EVENT_MOUSE_BUTTON_UP) { const SDL_FPoint p = { e.button.x, e.button.y }; + SDL_Window *w = SDL_GetWindowFromID(e.button.windowID); /* * Arguments, in order: * - A function to call when files are chosen (or dialog is canceled, or error happens) @@ -140,52 +121,53 @@ int main(int argc, char *argv[]) * - The path where the dialog should start. May be a folder or a file * - Nonzero if the user is allowed to choose multiple entries (not for SDL_ShowSaveFileDialog) */ - if (SDL_PointInRectFloat(&p, &open_file_rect)) { + if (SDL_PointInRectFloat(&p, &OPEN_FILE_RECT)) { SDL_ShowOpenFileDialog(callback, NULL, w, filters, SDL_arraysize(filters), initial_path, 1); - } else if (SDL_PointInRectFloat(&p, &open_folder_rect)) { + } else if (SDL_PointInRectFloat(&p, &OPEN_FOLDER_RECT)) { SDL_ShowOpenFolderDialog(callback, NULL, w, initial_path, 1); - } else if (SDL_PointInRectFloat(&p, &save_file_rect)) { + } else if (SDL_PointInRectFloat(&p, &SAVE_FILE_RECT)) { char *save_path = NULL; if (last_saved_path) { save_path = SDL_strdup(last_saved_path); } else { - save_path = concat_strings(initial_path, default_filename); + save_path = concat_strings(initial_path, DEFAULT_FILENAME); } - SDL_ShowSaveFileDialog(callback, &last_saved_path, w, filters, SDL_arraysize(filters), save_path ? save_path : default_filename); + SDL_ShowSaveFileDialog(callback, &last_saved_path, w, filters, SDL_arraysize(filters), save_path ? save_path : DEFAULT_FILENAME); SDL_free(save_path); } } } - if (quit) { + if (done) { break; } SDL_Delay(100); - SDL_SetRenderDrawColor(r, 0, 0, 0, SDL_ALPHA_OPAQUE); - SDL_RenderClear(r); + for (int i = 0; i < state->num_windows; i++) { + SDL_Renderer *r = state->renderers[i]; - SDL_SetRenderDrawColor(r, 255, 0, 0, SDL_ALPHA_OPAQUE); - SDL_RenderFillRect(r, &open_file_rect); + SDL_SetRenderDrawColor(r, 0, 0, 0, SDL_ALPHA_OPAQUE); + SDL_RenderClear(r); - SDL_SetRenderDrawColor(r, 0, 255, 0, SDL_ALPHA_OPAQUE); - SDL_RenderFillRect(r, &save_file_rect); + SDL_SetRenderDrawColor(r, 255, 0, 0, SDL_ALPHA_OPAQUE); + SDL_RenderFillRect(r, &OPEN_FILE_RECT); - SDL_SetRenderDrawColor(r, 0, 0, 255, SDL_ALPHA_OPAQUE); - SDL_RenderFillRect(r, &open_folder_rect); + SDL_SetRenderDrawColor(r, 0, 255, 0, SDL_ALPHA_OPAQUE); + SDL_RenderFillRect(r, &SAVE_FILE_RECT); - SDL_SetRenderDrawColor(r, 0, 0, 0, SDL_ALPHA_OPAQUE); - SDLTest_DrawString(r, open_file_rect.x+5, open_file_rect.y+open_file_rect.h/2, "Open File..."); - SDLTest_DrawString(r, save_file_rect.x+5, save_file_rect.y+save_file_rect.h/2, "Save File..."); - SDLTest_DrawString(r, open_folder_rect.x+5, open_folder_rect.y+open_folder_rect.h/2, "Open Folder..."); + SDL_SetRenderDrawColor(r, 0, 0, 255, SDL_ALPHA_OPAQUE); + SDL_RenderFillRect(r, &OPEN_FOLDER_RECT); - SDL_RenderPresent(r); + SDL_SetRenderDrawColor(r, 0, 0, 0, SDL_ALPHA_OPAQUE); + SDLTest_DrawString(r, OPEN_FILE_RECT.x+5, OPEN_FILE_RECT.y+OPEN_FILE_RECT.h/2, "Open File..."); + SDLTest_DrawString(r, SAVE_FILE_RECT.x+5, SAVE_FILE_RECT.y+SAVE_FILE_RECT.h/2, "Save File..."); + SDLTest_DrawString(r, OPEN_FOLDER_RECT.x+5, OPEN_FOLDER_RECT.y+OPEN_FOLDER_RECT.h/2, "Open Folder..."); + + SDL_RenderPresent(r); + } } SDL_free(last_saved_path); SDLTest_CleanupTextDrawing(); - SDL_DestroyRenderer(r); - SDL_DestroyWindow(w); - SDL_Quit(); - SDLTest_CommonDestroyState(state); + SDLTest_CommonQuit(state); return 0; }