[Summary] FIxed bug in Windows version of the open file dialog and save file dialog. The filter string for required file types was formed incorrectly.

This commit is contained in:
VKamyshniy 2015-04-15 16:58:23 +03:00
parent d69a0b6e42
commit 21d5f00b5c
2 changed files with 28 additions and 29 deletions

View file

@ -76,24 +76,22 @@ ARDOUR::save_file_dialog (std::vector<std::string> extensions, std::string initi
ofn.lpstrTitle = title.c_str();
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_EXPLORER;
// Create filter for required file types
std::string filter;
for (int i = 0; i < extensions.size(); ++i) {
filter += "*."+extensions[i]+";";
filter += "*."+extensions[i];
if (i < (extensions.size() - 1)) {
filter += ';';
}
}
char c_filter[1 + filter.size() + 2];
c_filter[0] = 0;
strcpy (c_filter + 1, filter.c_str ());
c_filter[1 + filter.size() + 1] = '\0';
char c_filter[filter.size()*2 + 3];
strcpy (c_filter, filter.c_str ());
strcpy (c_filter + filter.size() + 1, filter.c_str ());
c_filter[filter.size()*2 + 2] = '\0';
ofn.lpstrFilter = c_filter;
if (!extensions.empty()) {
ofn.lpstrDefExt = extensions[0].c_str ();
}
// Check on valid path
WIN32_FIND_DATA FindFileData;
HANDLE handle = FindFirstFile(initial_path.c_str(), &FindFileData) ;
@ -166,20 +164,19 @@ ARDOUR::open_file_dialog (std::vector<std::string> extensions, bool multi_select
// Create filter for required file types
std::string filter;
for (int i = 0; i < extensions.size(); ++i) {
filter += "*."+extensions[i]+";";
filter += "*."+extensions[i];
if (i < (extensions.size() - 1)) {
filter += ';';
}
}
char c_filter[1 + filter.size() + 2];
c_filter[0] = 0;
strcpy (c_filter + 1, filter.c_str ());
c_filter[1 + filter.size() + 1] = '\0';
char c_filter[filter.size()*2 + 3];
strcpy (c_filter, filter.c_str ());
strcpy (c_filter + filter.size() + 1, filter.c_str ());
c_filter[filter.size()*2 + 2] = '\0';
ofn.lpstrFilter = c_filter;
if (!extensions.empty()) {
ofn.lpstrDefExt = extensions[0].c_str ();
}
// Check on valid path
WIN32_FIND_DATA FindFileData;
HANDLE handle = FindFirstFile(initial_path.c_str(), &FindFileData) ;

View file

@ -129,17 +129,18 @@ WavesImportDialog::_get_import_mode() const
}
const std::string __audiofile_types[] = {
"aif", "AIF", "aifc", "AIFC", "aiff", "AIFF", "amb", "AMB", "au", "AU", "caf", "CAF",
"cdr", "CDR", "flac", "FLAC", "htk", "HTK", "iff", "IFF", "mat", "MAT", "oga", "OGA",
"ogg", "OGG", "paf", "PAF", "pvf", "PVF", "sf", "SF", "smp", "SMP", "snd", "SND",
"maud", "MAUD", "voc", "VOC", "vwe", "VWE", "w64", "W64", "wav", "WAV",
"aif", "aifc", "aiff", "amb", "au", "caf",
"cdr", "flac", "htk", "iff", "mat", "oga",
"ogg", "paf", "pvf", "sf", "smp", "snd",
"maud", "voc", "vwe", "w64", "wav"
#ifdef HAVE_COREAUDIO
"aac", "AAC", "adts", "ADTS",
"ac3", "AC3", "amr", "AMR",
"mpa", "MPA", "mpeg", "MPEG",
"mp1", "MP1", "mp2", "MP2",
"mp3", "MP3", "mp4", "MP4",
"m4a", "M4A", "sd2", "SD2", // libsndfile supports sd2 also, but the resource fork is required to open.
,
"aac", "adts",
"ac3", "amr",
"mpa", "mpeg",
"mp1", "mp2",
"mp3", "mp4",
"m4a", "sd2" // libsndfile supports sd2 also, but the resource fork is required to open.
#endif // HAVE_COREAUDIO
};
@ -148,6 +149,7 @@ WavesImportDialog::run_import ()
{
std::vector<std::string> audiofile_types (__audiofile_types,
__audiofile_types + sizeof (__audiofile_types)/sizeof(__audiofile_types[0]));
do {
_files_to_import = ARDOUR::open_file_dialog (audiofile_types, true, __initial_folder);
if (_files_to_import.empty ()) {