123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*******************************************************************************************
- *
- * raygui - custom file dialog to load image
- *
- * DEPENDENCIES:
- * raylib 4.0 - Windowing/input management and drawing.
- * raygui 3.0 - Immediate-mode GUI controls.
- *
- * COMPILATION (Windows - MinGW):
- * gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99
- *
- * LICENSE: zlib/libpng
- *
- * Copyright (c) 2016-2024 Ramon Santamaria (@raysan5)
- *
- **********************************************************************************************/
- #include "raylib.h"
- #define RAYGUI_IMPLEMENTATION
- #include "../../src/raygui.h"
- #undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again
- #define GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION
- #include "gui_window_file_dialog.h"
- //------------------------------------------------------------------------------------
- // Program main entry point
- //------------------------------------------------------------------------------------
- int main()
- {
- // Initialization
- //---------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 560;
- InitWindow(screenWidth, screenHeight, "raygui - custom modal dialog");
- SetExitKey(0);
- // Custom file dialog
- GuiWindowFileDialogState fileDialogState = InitGuiWindowFileDialog(GetWorkingDirectory());
- bool exitWindow = false;
- char fileNameToLoad[512] = { 0 };
- Texture texture = { 0 };
- SetTargetFPS(60);
- //--------------------------------------------------------------------------------------
- // Main game loop
- while (!exitWindow) // Detect window close button or ESC key
- {
- // Update
- //----------------------------------------------------------------------------------
- exitWindow = WindowShouldClose();
- if (fileDialogState.SelectFilePressed)
- {
- // Load image file (if supported extension)
- if (IsFileExtension(fileDialogState.fileNameText, ".png"))
- {
- strcpy(fileNameToLoad, TextFormat("%s" PATH_SEPERATOR "%s", fileDialogState.dirPathText, fileDialogState.fileNameText));
- UnloadTexture(texture);
- texture = LoadTexture(fileNameToLoad);
- }
- fileDialogState.SelectFilePressed = false;
- }
- //----------------------------------------------------------------------------------
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
- ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR)));
- DrawTexture(texture, GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, WHITE);
- DrawRectangleLines(GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, texture.width, texture.height, BLACK);
- DrawText(fileNameToLoad, 208, GetScreenHeight() - 20, 10, GRAY);
- // raygui: controls drawing
- //----------------------------------------------------------------------------------
- if (fileDialogState.windowActive) GuiLock();
- if (GuiButton((Rectangle){ 20, 20, 140, 30 }, GuiIconText(ICON_FILE_OPEN, "Open Image"))) fileDialogState.windowActive = true;
- GuiUnlock();
- // GUI: Dialog Window
- //--------------------------------------------------------------------------------
- GuiWindowFileDialog(&fileDialogState);
- //--------------------------------------------------------------------------------
- //----------------------------------------------------------------------------------
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadTexture(texture); // Unload texture
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
- return 0;
- }
|