public void OpenFile(string title, bool multiple, List <FileDialogFilter> filters, Action <string[]> onAccepted, Action onCancelled) { Application.Invoke(delegate { using FileChooserDialog dialog = new FileChooserDialog(title, window, FileChooserAction.Open); dialog.SelectMultiple = multiple; dialog.AddButton(Stock.Cancel, ResponseType.Cancel); dialog.AddButton(Stock.Save, ResponseType.Accept); foreach (var filter in filters) { dialog.AddFilter(GtkUtils.CreateFileFilter(filter)); } if (dialog.Run() == (int)ResponseType.Accept) { onAccepted(dialog.Filenames); } else { onCancelled(); } });
public void SaveFile(SaveFileDialogSettings settings, Action <string> onAccepted) { Gtk.Application.Invoke(delegate { using FileChooserDialog dialog = new FileChooserDialog(settings.DialogTitle, WindowManager.MainWindow, FileChooserAction.Save); dialog.AddButton(Stock.Cancel, ResponseType.Cancel); dialog.AddButton(Stock.Save, ResponseType.Accept); dialog.DoOverwriteConfirmation = settings.OverwritePrompt; dialog.CurrentName = settings.FileName; if (settings.Filters is {} filters) { foreach (var filter in filters) { dialog.AddFilter(GtkUtils.CreateFileFilter(filter)); } } if (dialog.Run() == (int)ResponseType.Accept) { onAccepted.Invoke(dialog.Filename); } });