ImGuiFileDialog

Full featured file Dialog for Dear ImGui

MIT License

Stars
1.1K

Bot releases are hidden (Show)

ImGuiFileDialog - ImGuiFileDialog v0.6.7 Latest Release

Published by aiekick 8 months ago

New Features

The new function stamps [BREAKING CHANGE]

there is now only one function stamp "OpenDialog" for all cases and for simplify futur additions
for customize the behavior you must pass to the function a IGFD::FileDialogConfig struct
See doc and DemoApp branch for infos of how to use it.

The new "Places" system [BREAKING CHANGE]

This release introduce a new "Places" system like we can see in many file explorers
The bookmarks and drives are now moved in the left side pane
See doc and DemoApp branch for infos of how to use it.

With this new system you can now add groups of links like the "shortcuts" on "recent" files on windows.
You can add many editable group like bookmarks
you can add your devices (replacing drives who was only available on windows)
and/or what you want or all systems

Example of what can be done : (see the left pane with the places)
alt text

The new callback for modify the file infos during scan

you can now change file infos during the file system scans by a user provided callback passed to the IGFD::FileDialogConfig
with this feature you can now by ex get the bin size corresponding to a gltf file (since the datas is in a separated file)
See doc and DemoApp branch for infos of how to use it.

ex in the DemoApp with a gltf files
Before the Use of the userAttribute callback :
user_files_attributes_before.png
After :
user_files_attributes_after.png

Fixes

  • Fix: prevent possible relative path on non-UNIX systems (Windows)
  • Replace busy waiting with condition variable, fix race condition
  • Fix memory leaks that were reported by LeakSanitizer on linux
ImGuiFileDialog - ImGuiFileDialog v0.6.6.1

Published by aiekick 11 months ago

Little Release

due to a compilation mistake with the std::filesysem
not seen with the github actions because of a bas configuration of the CMakeList.txt

Changes of ImGuiFileDialog v0.6.6 :

We have reached the threshold of 1k stars. thanks all

Main changes :

  • Custom File System Api :
    you can now use your own file system api.
    the defaults available apis are Dirent (cpp11) and std::filesystem (cpp17)
    via this file system interface you can customize the drives list.
    Can be usefull by ex on android for select "local" or "sd cards" fs.
    see the DemoApp for an example implementation for boost::filesystem

  • Support of MultiLayer extentions (toto.a.b.c)

Misc :

  • Support of Dear ImGui 1.90.1
  • The lib is now in master branch, the app in DemoApp branch
  • many improvements about resulting in directory mode or file mode
  • For panes uses cases you need to call OpenDialogWithPane
  • Add result modes for GetFilePathName, GetFileName, getSelection. let you control how the file ext will be replaced
  • The quick path selection is now default, no more a define, but now a flag for disable it
  • The combo box auto size is no the default behavior
  • Removal of the hovered flags (useless)
  • The modal mode, hidden type column, and confirm overwrite are not default flags (more common use case)

Fixes :

  • Extension seperator in default filename gets removed
  • Now links are correctly shown on unix platforms [#141)
  • fix about the insensitive case of extention feature (#140)
  • fix about FileStyle by Extention (#118)
ImGuiFileDialog - ImGuiFileDialog v0.6.6

Published by aiekick 11 months ago

We have reached the threshold of 1k stars. thanks all

Main changes :

  • Custom File System Api :
    you can now use your own file system api.
    the defaults available apis are Dirent (cpp11) and std::filesystem (cpp17)
    via this file system interface you can customize the drives list.
    Can be usefull by ex on android for select "local" or "sd cards" fs.
    see the DemoApp for an example implementation for boost::filesystem

  • Support of MultiLayer extentions (toto.a.b.c)

Misc :

  • Support of Dear ImGui 1.90.1
  • The lib is now in master branch, the app in DemoApp branch
  • many improvements about resulting in directory mode or file mode
  • For panes uses cases you need to call OpenDialogWithPane
  • Add result modes for GetFilePathName, GetFileName, getSelection. let you control how the file ext will be replaced
  • The quick path selection is now default, no more a define, but now a flag for disable it
  • The combo box auto size is no the default behavior
  • Removal of the hovered flags (useless)
  • The modal mode, hidden type column, and confirm overwrite are not default flags (more common use case)

Fixes :

  • Extension seperator in default filename gets removed
  • Now links are correctly shown on unix platforms [#141)
  • fix about the insensitive case of extention feature (#140)
  • fix about FileStyle by Extention (#118)
ImGuiFileDialog - ImGuiFileDialog v0.6.5

Published by aiekick over 1 year ago

The main changes are :

  • Support of Dear ImGui 1.89.5
  • Full rewrite of filter parsing
  • The Regex's are now supported for Filtering and File Styling
  • Add the support of File Styling by Lambda Function

See Readme file

ImGuiFileDialog - ImGuiFileDialog v0.6.4

Published by aiekick over 2 years ago

little update for ImGui 1.87

The dialog can be :

  • embedded in your imgui window now
  • can have ok and cancel button with different widths and placements
  • can disable with flags the display of the boobkmark
  • can display a popup of parallels directory with the path separator '' or '/' of the path composer

R40y1mJixc

see changes :

[ADD] : add a / between path in the composer. when you clik left on it, you have a popup of paralle directory, you can select
[ADD] : can invert the ok and cancel buttons (with the define invertOkAndCancelButtons)
[ADD] : add a way for tune the width of validation buttons, ok and cancel (defines okButtonWidth and cancelButtonWidth)
[ADD] : add a way for tune the position of the validations buttons. okCancelButtonAlignement is a ratio
by ex 0.0 is left, 0.5 middle, 1.0 right, and other ratios
[ADD] : add a way to disable the display of bookmark feature by the flag ImGuiFileDialogFlags_DisableBookmarkMode
[ADD] : add a way for embbed the FIleDialog in a user imgui begin/end scope, let inetrgate the dialog in any windows.
just need to use the flag ImGuiFileDialogFlags_NoDialog

ImGuiFileDialog - ImGuiFileDialog v0.6.3

Published by aiekick almost 3 years ago

add a new style system for file / dir / links

  • can be used for define color, icon, font
  • can be used for define global style for all files / dirs / links

add IGFD_FileStyleFlags

  • IGFD_FileStyleByTypeFile mean define style for all files
  • IGFD_FileStyleByTypeDir mean define style for all dir
  • IGFD_FileStyleByTypeLink mean define style for all link
  • IGFD_FileStyleByExtention mean define style by extention, for files or links
  • IGFD_FileStyleByFullName mean define style for particular file/dir/link full name (filename + extention)
  • IGFD_FileStyleByContainedInFullName mean define style for file/dir/link when criteria is contained in full name

BREAKING CHANGE :

  • IGFD::FileExtentionInfos become IGFD::FileStyle
  • CPP : ImGuiFileDialog::SetExtentionInfos become ImGuiFileDialog::SetFileStyle(IGFD_FileStyleByExtention,
  • CPP : ImGuiFileDialog::GetExtentionInfos become ImGuiFileDialog::GetFileStyle(IGFD_FileStyleByExtention,
  • CPP : ImGuiFileDialog::ClearExtentionInfos become ImGuiFileDialog::ClearFilesStyle
  • C : IGFD_SetExtentionInfos become IGFD_SetFileStyle
  • C : IGFD_GetExtentionInfos become IGFD_GetFileStyle
  • C : IGFD_ClearExtentionInfos become IGFD_ClearFilesStyle
ImGuiFileDialog - ImGuiFileDialog v0.6.2

Published by aiekick about 3 years ago

Add the support of std::filesystem for replace dirent.h
need c++17 btw.

you just need to uncomment

#define USE_STD_FILESYSTEM

in the config file

ImGuiFileDialog - ImGuiFileDialog v0.6.1

Published by aiekick about 3 years ago

some fixs for complete the release v0.6

ImGuiFileDialog - ImGuiFileDialog v0.6

Published by aiekick about 3 years ago

Full rewrite of ImGuIFileDialog for Thumbnails display.

The texture creation and destroy is made in a agnostic way.
Successfully tested on OpenGl and Vulkan

you can check the Readme and the sample app in master branch

In test from 5 months on my softwares so i release it.
hope will be ok for all :-)

see a demo :
thumbnails.gif

ImGuiFileDialog - ImGuiFileDialog v0.5.6

Published by aiekick about 3 years ago

fixed version for ImGui 1.84.2

ImGuiFileDialog - ImGuiFileDialog v0.5.5

Published by aiekick over 3 years ago

ImGuiFileDialog v0.5.5

The main features are :

  • Adding of C Api (succesfully tested with CImGui)
  • Creation of a specific branch for Lib Only (with dirent included for win32)
  • Adding of a splitter for Bookmarks/Side Panes
  • ImGuITable is in base for ImGuiFileDialog. Since ImGuITable is merged in Master for last release of ImGui v1.80
  • Can customize the DataTime Format in Table Date field

Some Function signature were changed by the way :

  • FileDialog() become Display()
  • CloseDialog() become Close, (no key needed for closing)
  • IsOk var become a func IsOk()
  • Pane callback signature become 'void(const char*, IGFDUserDatas, bool*)' was 'void(std::string, UserDatas, bool*)'
  • Replacement of igfd:ImGuIFileDialog by just ImGuIFileDialog
  • Replacement of igfd:UserDatas by IGFDUserDatas

the mains draw parts function are virtual now,
so you can customize according to your needs by derivation :

 * virtual void DrawHeader();                   // draw header part of the dialog (bookmark btn, dir creation, path composer, search bar)
 * virtual void DrawContent();                  // draw content part of the dialog (bookmark pane, file list, side pane)
 * virtual bool DrawFooter();                   // draw footer part of the dialog (file field, fitler combobox, ok/cancel btn's)
 * virtual void DrawDirectoryCreation();        // draw directory creation widget
 * virtual void DrawPathComposer();             // draw path composer widget
 * virtual void DrawSearchBar();                // draw search bar
 * virtual void DrawFileListView(ImVec2 vSize); // draw file list viexw
 * virtual void DrawSidePane(float vHeight);    // draw side pane
 * virtual void DrawBookMark();                 // draw bookmark button

Add many's comment in all of the header file

see other details :

Cat Description
[VER] IMGUIFILEDIALOG_VERSION passed to v0.5.5
[ADD] C Api available. succesfully tested with CImGui
[ADD] creation of a branch for have the Lib_Only / separation of sample app and lib
[ADD] two way are possible for call ImGuiFileDialog / Singleton or instance (for multi instance by ex)
[ADD] add a define 'DateTimeFormat' for customize the date field. see strftime func in for customize it. default is "%Y/%m/%d %H:%M:%S" who give 2021:01:22 11:47:10
[ADD] add a splitter for resize the pane
[ADD] add a way for force the close of the dialog without knowing the key
[ADD] add a way for know if a dialog is opened and what is the related key
[RMV] the directive USE_IMGUI_TABLE is removed, so cant be disabled. since ImGui v1.80 is released with the support of ImGuiTable in master, now ImGuiTable is in base
[UPD] update ImGui version to v1.80 in sample APP (branch master)
[UPD] update ImGuiTable flags
[FIX] fix warnings with MSVC
[FIX] fix issue on UNIX. all files was displayed in lowercase, some problemes for open directory and all returned path could be invalids. (@jackm97, #41)
[FIX] fis issue with new flag renaming for ImGui Table
[FIX] fix compilation issue when USE_BOOKMARK is undefined #39
[FIX] fix issue on drives list (buffer overflow), issue with maxi used instead of mini
[RFR] some refactor on #define #else #endif (add comments)
[RFR] refactor for readability
[UPD] update ImGui version to v1.80 in sample APP (branch master)
[UPD] update ImGuiTable flags
[IMP] improvement of stamps. separation of version with and without panes
[IMP] add comment for any methods
[IMP] remove messy function stamp for dialog calls.
ImGuiFileDialog - ImGuiFileDialog v0.5.3.1

Published by aiekick almost 4 years ago

One New Feature :

A 'confirm to OverWrite dialog' exist now for prevent overwrite if file exist

My appologies :
The last release v0.5.3 was deleted because of a big mistake on the repo.
The content was not corresponding to the expected content

See the rest of the changes :

[FIX] : fix of display of ImGuiTable header
[ADD] : add returns cases in demo app for see what we obtain after the file dialog is closed
[FIX] : fix, when the file field is empty the ok button is hidden. before that the ok was not closing the dialog [issue #36]
[FIX] : only one dialog can be, now, displayed per frame. (before, many dialog was appended, and many cotnrol was unusable due to same id)
[ADD] : a func WasOpenedThisFrame for test if the dialog was opened during this frame
[ADD] : add ifndef for IS_FLOAT_DIFFERENT and IS_FLOAT_EQUAL
[ADD] : Add a 'confirm to OverWrite dialog' if file exist. just need to define the flag ImGuiFileDialogFlags_ConfirmOverwrite
[IMP] : Improvement, Update readme doc for the 'confirm to OverWrite dialog'
[IMP] : Improvement, the whole documentation added in the header code comment section. more convenient han the site but without gifs :)
{IMP] : Improvement, new case added in sample App for the 'confirm to OverWrite dialog'
[RFR] : Refactor, some func, vars, warnings fix
[VER] : Version, IMGUIFILEDIALOG_VERSION passed to v0.5.3
[ACT] : Action, reactivation of Osx Action, since the github action server have fixed the issue now

ImGuiFileDialog - ImGuiFileDialog v0.5.2

Published by aiekick almost 4 years ago

fixed for last ImGui 1.80 WIP master (merge of table branch)
fixed issue #33
some refactoring too
obsolete imgui function disabled by default in sample app

not stable for production, will wait the release of ImGui 1.80
was changed becayse the table branch was merged in ImGui 1.80 WIP

ImGuiFileDialog - ImGuiFileDialog v0.5.1

Published by aiekick almost 4 years ago

little fix regarding the Release 0.5

sorry :)

ImGuiFileDialog - ImGuiFileDialog v0.5

Published by aiekick almost 4 years ago

[ADD] a input path edition mode :

if you click right on one of any button of the path, you can input or modify the path pointed by this button.
then press the validate key (Enter by default with GLFW) for validate the new path
or press the escape key (Escape by default with GLFW) for quit the input path edition

[FIX] : some fixs and refactoring

ImGuiFileDialog - ImGuiFileDialog v0.4

Published by aiekick over 4 years ago

[ADD] a bookmark system for create/edit/apply paths bookmarks

  • You can customize it a bit with the custom config file
  • You can use a specific name for a bookmark. you can edit this name by selecting the bookmark
  • You can apply the bookmark with double click on it
  • you can also serialize/deserialize bookmarks to string (by ex for load/save from/to file)
ImGuiFileDialog - ImGuiFileDialog v0.3

Published by aiekick over 4 years ago

[ADD] can explore file list and directories by keys :

  • You can select files/directory (depending of the mode) on top/bottom and open/close directories
  • you can alos customize used keys for your binding
  • the selected file/directory flash for 1 sec (by default), but can be customized too

[ADD] can explore a file list via input character.

[IMPROVMENT] better fps for the file list displaying

  • virtual list mode (better with big file list)
  • all filtering is done one time or after filtering change (like by search tag)
ImGuiFileDialog - ImGuiFileDialog v0.2

Published by aiekick over 4 years ago

[ADD] The search is now case insensitive :

  • all search tags in lower case will result to display lower and upper case files and directories
  • all search tags in upper case will result to display only upper case files and directories

[ADD] The file list sorting is now case insensitive

[ADD] Support of custom filter names and filter collections (group of filter with custom filter group name)

  • breaking change : the filter format is changed : '\0' is replaced by ',' +> see README.md for infos
ImGuiFileDialog - ImGuiFileDialog v0.1

Published by aiekick over 4 years ago

First release of ImGuiFileDialog.
ready for production

Features :

  • Separate system for call and display
  • Can use custom pane via function binding
  • Support of Filter Custom Coloring / Icons / text
  • Dialog size can be constraint by min / max size value
  • Multi File/Directory Selection (one file, N files, or infinite)
  • Support of Modal/Standard dialog Type
  • Can be a File Chooser or Directory Chooser
  • Can display table with file size/date by using ImGui Table branch (not merged in master at this moment)
  • Successfully compiled / tested on Win32, MacOs and Linux

See Readme.md and sample app for more infos

you can access binaries for all os/builds in github "actions" tab