I noticed that FileChooser filter bug in native dialogs is still not resolved.
Here is fix:
juce_win32_FileChooser.cpp
line 221:
const size_t filterSpaceNumChars = 2048; HeapBlock<WCHAR> filters; filters.calloc (filterSpaceNumChars); //const size_t bytesWritten = filter.copyToUTF16 (filters.getData(), filterSpaceNumChars * sizeof (WCHAR)); //filter.copyToUTF16 (filters + (bytesWritten / sizeof (WCHAR)), // ((filterSpaceNumChars - 1) * sizeof (WCHAR) - bytesWritten));
juce_gui_basics\native\juce_linux_FileChooser.cpp
line: 132
if (filters.isNotEmpty() && filters != "*" && filters != "*.*") { //StringArray tokens; //tokens.addTokens (filters, ";,|", "\""); //for (int i = 0; i < tokens.size(); ++i) // args.add ("--file-filter=" + tokens[i]); StringArray tokens; tokens.addTokens(filters.replaceCharacter(';', ' '), "|", "\""); for (int i = 0; i < tokens.size(); i += 2) args.add("--file-filter=" + tokens[i] + "|" + tokens[i + 1] + ""); }
Please add this fix to source. I'm getting tired making these modifications everytime I download new juce source.
This way filters can be used using standard syntax like this:
juce::String filters = "All Files|*|"
"G-Code Files|*.nc;*.tap;*.cnc;*.iso;*.gcode;*.ncf;*.txt|"
"DXF Files|*.dxf|"
"PLT/HPGL Files|*.plt;*.plo;*.hg;*.hgl;*.hpg;*.hpgl;*.hpgl2|"
"Gerber Files|*.gbr;*.gbl;*.gtl;*.gko;*.grb;*.cmp;*.sol;*.plc;*.pls;*.stc;*.sts;*.smc;*.sms;*.ssc;*.sss|"
"NC Drill Files|*.ncd;*.nc;*.drl;*.drd|"
"CSV Files|*.csv|"
"BIN Files|*.bin|"
"Curve Files|*.curve";
juce::FileChooser fc(TRANS("Save"), dir, filters, true);
Non native and OSX dialogs do not support multiple filters so this does not affect them.