Mercurial > projects > dynamin
diff dynamin/gui/windows_file_dialog.d @ 18:836a064828e8
Implement FileDialog/DirectoryDialog with GTK
and start a glib/gdk/gtk binding. Add invoke/invokeNow stubs to fix build on X.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Fri, 24 Jul 2009 00:35:42 -0500 |
parents | fc2420d39e3c |
children | 127b9d99c01c |
line wrap: on
line diff
--- a/dynamin/gui/windows_file_dialog.d Sat Jul 18 21:32:19 2009 -0500 +++ b/dynamin/gui/windows_file_dialog.d Fri Jul 24 00:35:42 2009 -0500 @@ -34,12 +34,7 @@ ofn.lStructSize = OPENFILENAME.sizeof; //ofn.hwndOwner = ; - bool allFilesFilter = false; - foreach(filter; _filters) - if(filter.extensions.length == 0) - allFilesFilter = true; - if(!allFilesFilter) addFilter("All Files (*.*)"); - + ensureAllFilesFilter(); string filterStr; foreach(filter; _filters) { if(filter.shouldShow) @@ -70,7 +65,7 @@ ofn.Flags |= OFN_FILEMUSTEXIST; ofn.Flags |= OFN_HIDEREADONLY; ofn.Flags |= OFN_OVERWRITEPROMPT; - if(_multipleSelection) + if(_multipleSelection && fileDialogType == Open) ofn.Flags |= OFN_ALLOWMULTISELECT; auto GetFileName = fileDialogType == Open ? @@ -106,25 +101,13 @@ _files[i-1] = arr[i]; else _files[i-1] = _directory ~ arr[i]; + maybeAddExt(_files[i-1]); } } else { //single file assert(filesBuffer.contains('\\')); _directory = filesBuffer[0..filesBuffer.findLast("\\")].dup; _files = [filesBuffer.dup]; - } - - // if "All Files (*.*)" filter is not selected - if(_filters[selectedFilter].extensions.length > 0) { - // go over every chosen file and add the selected filter's - // extension if the file doesn't already have one from the selected filter - for(int i = 0; i < _files.length; ++i) { - bool validExt = false; - foreach(ext; _filters[selectedFilter].extensions) - if(_files[i].downcase().endsWith(ext.downcase())) - validExt = true; - if(!validExt) - _files[i] ~= "." ~ _filters[selectedFilter].extensions[0].downcase(); - } + maybeAddExt(_files[0]); } return DialogResult.OK;