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;
}
}