示例#1
0
        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();
                }
            });
示例#2
0
        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);
                }
            });