Skip to content

Commit 6ab200c

Browse files
committed
[UPD] : update readme for the new FileDialogConfig api
1 parent 2b77954 commit 6ab200c

1 file changed

Lines changed: 60 additions & 31 deletions

File tree

README.md

Lines changed: 60 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ A filter is recognized only if it respects theses rules :
101101
1) a regex must be in (( and ))
102102
2) a , will separate filters except if between a ( and )
103103
3) name{filter1, filter2} is a special form for collection filters
104-
3.1) the name can be composed of what you want except { and }
105-
3.2) a filter can be a regex
104+
- the name can be composed of what you want except { and }
105+
- a filter can be a regex
106106
4) the filters cannot integrate these chars '(' ')' '{' '}' ' ' except for a regex with respect to rule 1)
107107
5) the filters cannot integrate a ','
108108

@@ -137,7 +137,9 @@ void drawGui()
137137
{
138138
// open Dialog Simple
139139
if (ImGui::Button("Open File Dialog"))
140-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp", ".");
140+
IGFD::FileDialogConfig config;
141+
config.path = ".";
142+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp", config);
141143

142144
// display
143145
if (ImGuiFileDialog::Instance()->Display("ChooseFileDlgKey"))
@@ -172,8 +174,11 @@ ImGuiFileDialogFlags_Modal
172174
you can use it like that :
173175

174176
```cpp
175-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp",
176-
".", 1, nullptr, ImGuiFileDialogFlags_Modal);
177+
IGFD::FileDialogConfig config;
178+
config.path = ".";
179+
config.countSelectionMax = 1;
180+
config.flags = ImGuiFileDialogFlags_Modal;
181+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp", config);
177182
```
178183
179184
</blockquote></details>
@@ -183,7 +188,9 @@ ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp
183188
To have a directory chooser, set the file extension filter to nullptr:
184189
185190
```cpp
186-
ImGuiFileDialog::Instance()->OpenDialog("ChooseDirDlgKey", "Choose a Directory", nullptr, ".");
191+
IGFD::FileDialogConfig config;
192+
config.path = ".";
193+
ImGuiFileDialog::Instance()->OpenDialog("ChooseDirDlgKey", "Choose a Directory", nullptr, config);
187194
```
188195

189196
In this mode you can select any directory with one click and open a directory with a double-click.
@@ -227,8 +234,14 @@ void drawGui()
227234
{
228235
// open Dialog with Pane
229236
if (ImGui::Button("Open File Dialog with a custom pane"))
230-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp",
231-
".", "", std::bind(&InfosPane, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), 350, 1, UserDatas("InfosPane"));
237+
IGFD::FileDialogConfig config;
238+
config.path = ".";
239+
config.countSelectionMax = 1;
240+
config.sidePane = std::bind(&InfosPane, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
241+
config.sidePaneWidth = 350.0f;
242+
config.useDatas = UserDatas("InfosPane");
243+
config.flags = ImGuiFileDialogFlags_Modal;
244+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".cpp,.h,.hpp", config);
232245

233246
// display and action if ok
234247
if (ImGuiFileDialog::Instance()->Display("ChooseFileDlgKey"))
@@ -401,7 +414,9 @@ this code :
401414
402415
```cpp
403416
const char *filters = "Source files (*.cpp *.h *.hpp){.cpp,.h,.hpp},Image files (*.png *.gif *.jpg *.jpeg){.png,.gif,.jpg,.jpeg},.md";
404-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", ICON_IMFDLG_FOLDER_OPEN " Choose a File", filters, ".");
417+
IGFD::FileDialogConfig config;
418+
config.path = ".";
419+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", ICON_IMFDLG_FOLDER_OPEN " Choose a File", filters, config);
405420
```
406421

407422
will produce :
@@ -420,12 +435,24 @@ You can define in OpenDialog call the count file you want to select :
420435
See the define at the end of these funcs after path.
421436

422437
```cpp
423-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".*,.cpp,.h,.hpp", ".");
424-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose 1 File", ".*,.cpp,.h,.hpp", ".", 1);
425-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose 5 File", ".*,.cpp,.h,.hpp", ".", 5);
426-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose many File", ".*,.cpp,.h,.hpp", ".", 0);
427-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".png,.jpg",
428-
".", "", std::bind(&InfosPane, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), 350, 1, "SaveFile"); // 1 file
438+
IGFD::FileDialogConfig config; config.path = ".";
439+
440+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".*,.cpp,.h,.hpp", config);
441+
442+
config.countSelectionMax = 1;
443+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose 1 File", ".*,.cpp,.h,.hpp", config);
444+
445+
config.countSelectionMax = 5;
446+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose 5 File", ".*,.cpp,.h,.hpp", config);
447+
448+
config.countSelectionMax = 0;
449+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose many File", ".*,.cpp,.h,.hpp", config);
450+
451+
config.countSelectionMax = 1;
452+
config.sidePane = std::bind(&InfosPane, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
453+
config.sidePaneWidth = 350.0f;
454+
config.useDatas = UserDatas("SaveFile");
455+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", "Choose File", ".png,.jpg", config); // 1 file
429456
```
430457
431458
![alt text](https://github.com/aiekick/ImGuiFileDialog/blob/DemoApp/doc/multiSelection.gif)
@@ -538,17 +565,20 @@ behavior. (by design! :) )
538565
Example code For Standard Dialog :
539566

540567
```cpp
568+
IGFD::FileDialogConfig config;
569+
config.path = ".";
570+
config.flags = ImGuiFileDialogFlags_ConfirmOverwrite;
541571
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey",
542-
ICON_IGFD_SAVE " Choose a File", filters,
543-
".", "", 1, nullptr, ImGuiFileDialogFlags_ConfirmOverwrite);
572+
ICON_IGFD_SAVE " Choose a File", filters, config);
544573
```
545574
546575
Example code For Modal Dialog :
547576
548577
```cpp
549-
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey",
550-
ICON_IGFD_SAVE " Choose a File", filters,
551-
".", "", 1, nullptr, ImGuiFileDialogFlags_Modal | ImGuiFileDialogFlags_ConfirmOverwrite);
578+
IGFD::FileDialogConfig config;
579+
config.path = ".";
580+
config.flags = ImGuiFileDialogFlags_Modal | ImGuiFileDialogFlags_ConfirmOverwrite;
581+
ImGuiFileDialog::Instance()->OpenDialog("ChooseFileDlgKey", ICON_IGFD_SAVE " Choose a File", filters, config);
552582
```
553583

554584
This dialog will only verify the file in the file field, not with `GetSelection()`.
@@ -700,11 +730,14 @@ ImGuiFileDialog fileDialog;
700730

701731
// open dialog; in this case, Bookmark, directory creation are disabled with, and also the file input field is readonly.
702732
// btw you can od what you want
703-
fileDialog.OpenDialog("embedded", "Select File", ".*", "", -1, nullptr,
704-
ImGuiFileDialogFlags_NoDialog |
733+
IGFD::FileDialogConfig config;
734+
config.path = ".";
735+
config.countSelectionMax = -1;
736+
config.flags = ImGuiFileDialogFlags_NoDialog |
705737
ImGuiFileDialogFlags_DisableBookmarkMode |
706738
ImGuiFileDialogFlags_DisableCreateDirectoryButton |
707739
ImGuiFileDialogFlags_ReadOnlyFileNameField);
740+
fileDialog.OpenDialog("embedded", "Select File", ".*", config);
708741
// then display, here
709742
// to note, when embedded the ImVec2(0,0) (MinSize) do nothing, only the ImVec2(0,350) (MaxSize) can size the dialog frame
710743
fileDialog.Display("embedded", ImGuiWindowFlags_NoCollapse, ImVec2(0,0), ImVec2(0,350)))
@@ -976,19 +1009,15 @@ Sample code with cimgui :
9761009
ImGuiFileDialog *cfileDialog = IGFD_Create();
9771010

9781011
// open dialog
979-
if (igButton("Open File", buttonSize))
980-
{
1012+
if (igButton("Open File", buttonSize)) {
1013+
IGFD_FileDialog_Config config = IGFD_FileDialog_Config_Get();
1014+
config.path = ".";
1015+
config.flags = ImGuiFileDialogFlags_ConfirmOverwrite; // ImGuiFileDialogFlags
9811016
IGFD_OpenDialog(cfiledialog,
9821017
"filedlg", // dialog key (make it possible to have different treatment reagrding the dialog key
9831018
"Open a File", // dialog title
9841019
"c files(*.c *.h){.c,.h}", // dialog filter syntax : simple => .h,.c,.pp, etc and collections : text1{filter0,filter1,filter2}, text2{filter0,filter1,filter2}, etc..
985-
".", // base directory for files scan
986-
"", // base filename
987-
0, // a fucntion for display a right pane if you want
988-
0.0f, // base width of the pane
989-
0, // count selection : 0 infinite, 1 one file (default), n (n files)
990-
"User data !", // some user datas
991-
ImGuiFileDialogFlags_ConfirmOverwrite); // ImGuiFileDialogFlags
1020+
config); // the file dialog config
9921021
}
9931022

9941023
ImGuiIO* ioptr = igGetIO();

0 commit comments

Comments
 (0)