From 3176bfa94ef05f170b54a71f9fba79aaf4382822 Mon Sep 17 00:00:00 2001 From: TheGag96 Date: Sat, 14 Jan 2017 23:02:17 -0600 Subject: [PATCH 1/2] Allow FileDialog to select not-yet-existing files --- src/dlangui/dialogs/filedlg.d | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/dlangui/dialogs/filedlg.d b/src/dlangui/dialogs/filedlg.d index d9edbed5..46b4dd00 100644 --- a/src/dlangui/dialogs/filedlg.d +++ b/src/dlangui/dialogs/filedlg.d @@ -460,7 +460,9 @@ class FileDialog : Dialog, CustomGridCellAdapter { Action result = _action; result.stringParam = _filename; // success if either selected dir & has to open dir or if selected file - if (action.id == StandardAction.OpenDirectory && isDir(_filename) || isFile(_filename)) { + if (action.id == StandardAction.OpenDirectory && isDir(_filename) || + action.id == StandardAction.Save && !(_flags & FileDialogFlag.FileMustExist) || + isFile(_filename)) { close(result); return true; } @@ -540,6 +542,9 @@ class FileDialog : Dialog, CustomGridCellAdapter { if (_flags & FileDialogFlag.SelectDirectory) { _edFilename.visibility = Visibility.Gone; } + if ((_flags & FileDialogFlag.Save) && !(_flags & FileDialogFlag.FileMustExist)) { + _edFilename.contentChange = &onFilenameTyped; + } //_edFilename.layoutWeight = 0; @@ -634,6 +639,10 @@ class FileDialog : Dialog, CustomGridCellAdapter { override void onShow() { _fileList.setFocus(); } + + void onFilenameTyped(EditableContent content) { + _filename = _path ~ dirSeparator ~ toUTF8(content.text); + } } interface OnPathSelectionHandler { @@ -998,4 +1007,4 @@ class DirEditLine : FileNameEditLine { } //import dlangui.widgets.metadata; -//mixin(registerWidgets!(FileNameEditLine, DirEditLine)()); +//mixin(registerWidgets!(FileNameEditLine, DirEditLine)()); \ No newline at end of file From f8341f67a5291c29f3f3c9524234a799d15211a1 Mon Sep 17 00:00:00 2001 From: TheGag96 Date: Sat, 14 Jan 2017 23:04:28 -0600 Subject: [PATCH 2/2] Remove stray comment (possibly from older version?) --- src/dlangui/dialogs/filedlg.d | 1 - 1 file changed, 1 deletion(-) diff --git a/src/dlangui/dialogs/filedlg.d b/src/dlangui/dialogs/filedlg.d index 46b4dd00..0f4663ed 100644 --- a/src/dlangui/dialogs/filedlg.d +++ b/src/dlangui/dialogs/filedlg.d @@ -1007,4 +1007,3 @@ class DirEditLine : FileNameEditLine { } //import dlangui.widgets.metadata; -//mixin(registerWidgets!(FileNameEditLine, DirEditLine)()); \ No newline at end of file