mirror of
https://github.com/raysan5/raygui.git
synced 2026-02-01 19:59:17 -05:00
Added some tweaks and comments
This commit is contained in:
@ -9,6 +9,13 @@
|
|||||||
* INIT: GuiFileDialogState state = InitGuiFileDialog();
|
* INIT: GuiFileDialogState state = InitGuiFileDialog();
|
||||||
* DRAW: GuiFileDialog(&state);
|
* DRAW: GuiFileDialog(&state);
|
||||||
*
|
*
|
||||||
|
* NOTE: This module depends on some raylib file system functions:
|
||||||
|
* - GetDirectoryFiles()
|
||||||
|
* - ClearDirectoryFiles()
|
||||||
|
* - GetWorkingDirectory()
|
||||||
|
* - DirectoryExists()
|
||||||
|
* - FileExists()
|
||||||
|
*
|
||||||
* LICENSE: Propietary License
|
* LICENSE: Propietary License
|
||||||
*
|
*
|
||||||
* Copyright (c) 2019 raylib technologies (@raylibtech). All Rights Reserved.
|
* Copyright (c) 2019 raylib technologies (@raylibtech). All Rights Reserved.
|
||||||
@ -101,6 +108,8 @@ void GuiFileDialog(GuiFileDialogState *state);
|
|||||||
|
|
||||||
#include "raygui.h"
|
#include "raygui.h"
|
||||||
|
|
||||||
|
#include <string.h> // Required for: strcpy()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Defines and Macros
|
// Defines and Macros
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
@ -186,7 +195,7 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
if (dirFilesIcon == NULL)
|
if (dirFilesIcon == NULL)
|
||||||
{
|
{
|
||||||
dirFilesIcon = (char **)malloc(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read
|
dirFilesIcon = (char **)RL_MALLOC(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read
|
||||||
for (int i = 0; i < MAX_DIRECTORY_FILES; i++) dirFilesIcon[i] = (char *)calloc(MAX_DIR_PATH_LENGTH, 1); // Max file name length
|
for (int i = 0; i < MAX_DIRECTORY_FILES; i++) dirFilesIcon[i] = (char *)calloc(MAX_DIR_PATH_LENGTH, 1); // Max file name length
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,9 +210,9 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
// Move dir path one level up
|
// Move dir path one level up
|
||||||
strcpy(state->dirPathText, GetPrevDirectoryPath(state->dirPathText));
|
strcpy(state->dirPathText, GetPrevDirectoryPath(state->dirPathText));
|
||||||
|
|
||||||
// Free previous dirFiles (reloaded by ReadDirectoryFiles())
|
// RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles())
|
||||||
for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]);
|
for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]);
|
||||||
free(state->dirFiles);
|
RL_FREE(state->dirFiles);
|
||||||
|
|
||||||
// Read files in the new path
|
// Read files in the new path
|
||||||
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
||||||
@ -220,9 +229,9 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
// Verify if a valid path has been introduced
|
// Verify if a valid path has been introduced
|
||||||
if (DirectoryExists(state->dirPathText))
|
if (DirectoryExists(state->dirPathText))
|
||||||
{
|
{
|
||||||
// Free previous dirFiles (reloaded by ReadDirectoryFiles())
|
// RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles())
|
||||||
for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]);
|
for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]);
|
||||||
free(state->dirFiles);
|
RL_FREE(state->dirFiles);
|
||||||
|
|
||||||
// Read files in new path
|
// Read files in new path
|
||||||
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
||||||
@ -257,9 +266,9 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
|
|
||||||
strcpy(state->dirPathTextCopy, state->dirPathText);
|
strcpy(state->dirPathTextCopy, state->dirPathText);
|
||||||
|
|
||||||
// Free previous dirFiles (reloaded by ReadDirectoryFiles())
|
// RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles())
|
||||||
for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]);
|
for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]);
|
||||||
free(state->dirFiles);
|
RL_FREE(state->dirFiles);
|
||||||
|
|
||||||
// Read files in new path
|
// Read files in new path
|
||||||
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt);
|
||||||
@ -312,15 +321,15 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
// File dialog has been closed!
|
// File dialog has been closed!
|
||||||
if (!state->fileDialogActive)
|
if (!state->fileDialogActive)
|
||||||
{
|
{
|
||||||
// Free dirFiles memory
|
// RL_FREE dirFiles memory
|
||||||
for (int i = 0; i < state->dirFilesCount; i++)
|
for (int i = 0; i < state->dirFilesCount; i++)
|
||||||
{
|
{
|
||||||
free(state->dirFiles[i]);
|
RL_FREE(state->dirFiles[i]);
|
||||||
free(dirFilesIcon[i]);
|
RL_FREE(dirFilesIcon[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(state->dirFiles);
|
RL_FREE(state->dirFiles);
|
||||||
free(dirFilesIcon);
|
RL_FREE(dirFilesIcon);
|
||||||
|
|
||||||
dirFilesIcon = NULL;
|
dirFilesIcon = NULL;
|
||||||
state->dirFiles = NULL;
|
state->dirFiles = NULL;
|
||||||
@ -332,8 +341,8 @@ void GuiFileDialog(GuiFileDialogState *state)
|
|||||||
static char **ReadDirectoryFiles(const char *dir, int *filesCount, char *filterExt)
|
static char **ReadDirectoryFiles(const char *dir, int *filesCount, char *filterExt)
|
||||||
{
|
{
|
||||||
int validFilesCount = 0;
|
int validFilesCount = 0;
|
||||||
char **validFiles = (char **)malloc(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read
|
char **validFiles = (char **)RL_MALLOC(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read
|
||||||
for (int i = 0; i < MAX_DIRECTORY_FILES; i++) validFiles[i] = (char *)malloc(MAX_DIR_PATH_LENGTH); // Max file name length
|
for (int i = 0; i < MAX_DIRECTORY_FILES; i++) validFiles[i] = (char *)RL_MALLOC(MAX_DIR_PATH_LENGTH); // Max file name length
|
||||||
|
|
||||||
int filterExtCount = 0;
|
int filterExtCount = 0;
|
||||||
const char **extensions = GuiTextSplit(filterExt, &filterExtCount, NULL);
|
const char **extensions = GuiTextSplit(filterExt, &filterExtCount, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user