From fe3db61a8c890ebbd8661ee2eaabfdd6f2121c95 Mon Sep 17 00:00:00 2001 From: trustable-code Date: Sun, 3 Nov 2019 20:06:04 +0100 Subject: Add SelectDirectoryDialog Fixes #67 --- src/nigui/private/gtk3/platform_impl.nim | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/nigui/private/gtk3') diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim index bf4b1ab..c5a7fdb 100755 --- a/src/nigui/private/gtk3/platform_impl.nim +++ b/src/nigui/private/gtk3/platform_impl.nim @@ -402,7 +402,6 @@ proc alert(window: Window, message: string, title = "Message") = method run*(dialog: OpenFileDialog) = dialog.files = @[] var chooser = gtk_file_chooser_dialog_new(dialog.title, nil, GTK_FILE_CHOOSER_ACTION_OPEN, "Cancel", GTK_RESPONSE_CANCEL, "Open", GTK_RESPONSE_ACCEPT, nil) - # Issue: When a title is passed, the dialog is shown without a title discard gtk_file_chooser_set_current_folder(chooser, dialog.directory) gtk_file_chooser_set_select_multiple(chooser, dialog.multiple) let res = gtk_dialog_run(chooser) @@ -415,7 +414,6 @@ method run*(dialog: OpenFileDialog) = method run(dialog: SaveFileDialog) = var chooser = gtk_file_chooser_dialog_new(dialog.title, nil, GTK_FILE_CHOOSER_ACTION_SAVE, "Cancel", GTK_RESPONSE_CANCEL, "Save", GTK_RESPONSE_ACCEPT, nil) - # Issue: When a title is passed, the dialog is shown without a title let res = gtk_dialog_run(chooser) discard gtk_file_chooser_set_current_folder(chooser, dialog.directory) if dialog.defaultName.len > 0: @@ -426,6 +424,15 @@ method run(dialog: SaveFileDialog) = dialog.file = "" gtk_widget_destroy(chooser) +method run*(dialog: SelectDirectoryDialog) = + dialog.selectedDirectory = "" + var chooser = gtk_file_chooser_dialog_new(dialog.title, nil, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, "Cancel", GTK_RESPONSE_CANCEL, "Select", GTK_RESPONSE_ACCEPT, nil) + discard gtk_file_chooser_set_current_folder(chooser, dialog.startDirectory) + let res = gtk_dialog_run(chooser) + if res == GTK_RESPONSE_ACCEPT: + dialog.selectedDirectory = $gtk_file_chooser_get_filename(chooser) + gtk_widget_destroy(chooser) + # ---------------------------------------------------------------------------------------- # Timers -- cgit v1.2.3