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.
