public bool OpenFileDialog(OpenFileDialogParams openParams, Action <OpenFileDialogParams> callback) { WinformsSystemWindow.ShowingSystemDialog = true; openParams.FileName = ""; openParams.FileNames = null; var openFileDialog1 = new OpenFileDialog { InitialDirectory = openParams.InitialDirectory, Filter = openParams.Filter, Multiselect = openParams.MultiSelect, Title = openParams.Title, FilterIndex = openParams.FilterIndex, RestoreDirectory = true }; if (openFileDialog1.ShowDialog() == DialogResult.OK) { this.LastDirectoryUsed = System.IO.Path.GetDirectoryName(openFileDialog1.FileName); openParams.FileNames = openFileDialog1.FileNames; openParams.FileName = openFileDialog1.FileName; } WinformsSystemWindow.ShowingSystemDialog = false; UiThread.RunOnIdle(() => { callback(openParams); }); return(true); }
public bool OpenFileDialog(OpenFileDialogParams openParams, Action <OpenFileDialogParams> callback) { WinformsSystemWindow.ShowingSystemDialog = true; Gtk.Application.Init(); Gtk.FileChooserDialog fc = new Gtk.FileChooserDialog(openParams.Title, null, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); if (openParams.InitialDirectory != null) { fc.SetCurrentFolder(openParams.InitialDirectory); } fc.SelectMultiple = openParams.MultiSelect; Gtk.FileFilter filter = new Gtk.FileFilter(); filter.Name = openParams.Filter.Split('|')[0]; string[] extensions = openParams.Filter.Split('|') [1].Split(';'); foreach (string e in extensions) { filter.AddPattern(e.ToLower()); filter.AddPattern(e.ToUpper()); } fc.AddFilter(filter); // fc.Show(); // fc.Present(); fc.KeepAbove = true; if (fc.Run() == (int)ResponseType.Accept) { this.LastDirectoryUsed = Path.GetDirectoryName(fc.Filename); openParams.FileNames = fc.Filenames; openParams.FileName = fc.Filename; UiThread.RunOnIdle(() => { callback(openParams); }); } fc.Destroy(); while (Gtk.Application.EventsPending()) { Gtk.Main.Iteration(); } WinformsSystemWindow.ShowingSystemDialog = false; return(true); }
public bool OpenFileDialog(OpenFileDialogParams openParams, Action <OpenFileDialogParams> callback) { ShowFileDialog((fileText) => { if (fileText.Length > 2) { string[] files = fileText.Split(';', ' ').Select(f => f.Trim('\"')).ToArray(); openParams.FileName = files[0]; openParams.FileNames = files; } UiThread.RunOnIdle(() => callback?.Invoke(openParams)); }); return(true); }