AcManager.Tools.Managers.Presets.PresetsManager.SavePresetUsingDialog C# (CSharp) Method

SavePresetUsingDialog() public method

public SavePresetUsingDialog ( string key, string category, string data, string filename ) : bool
key string
category string
data string
filename string
return bool
        public bool SavePresetUsingDialog(string key, string category, string data, string filename) {
            if (data == null) {
                return false;
            }

            var presetsDirectory = EnsureDirectory(category);

            var dialog = new SaveFileDialog {
                InitialDirectory = presetsDirectory,
                Filter = string.Format(ToolsStrings.Presets_FileFilter, FileExtension),
                DefaultExt = FileExtension
            };

            if (filename != null) {
                dialog.InitialDirectory = Path.GetDirectoryName(filename);
                dialog.FileName = Path.GetFileNameWithoutExtension(filename);
            }

            if (dialog.ShowDialog() != true) {
                return false;
            }

            filename = dialog.FileName;
            if (!filename.StartsWith(presetsDirectory)) {
                if (ModernDialog.ShowMessage(ToolsStrings.Presets_ChooseFileInInitialDirectory,
                                             ToolsStrings.Common_CannotDo_Title, MessageBoxButton.OKCancel) == MessageBoxResult.OK) {
                    return SavePresetUsingDialog(key, category, data, filename);
                }
                
                return false;
            }
            
            File.WriteAllText(filename, data);
            PresetSaved?.Invoke(this, new PresetSavedEventArgs(key, filename));
            return true;
        }
    }