/// <summary> /// Saves As.. template /// </summary> private void OnSaveAsTemplate() { string suggestedName = string.Empty; if (this.SelectedTab is TemplateViewModel) { TemplateViewModel template = this.SelectedTab as TemplateViewModel; suggestedName = template.TemplateName; } string savePath = DialogManager.ShowSaveTemplateDialog(suggestedName); if (savePath == null) { return; } RecentMenuManager.AddFileNameToRecentList(this.RecentFiles, savePath); this.SaveTemplateByPath(savePath); }
/// <summary> /// Loads template by specified path /// </summary> /// <param name="file">Path to template file</param> private void LoadTemplateFromFile(string file) { // return if there is active tabs and action was cancelled if (!this.CloseActiveTemplateTab()) { return; } if (!File.Exists(file)) { DialogManager.ShowErrorDialog("Failed to find file " + file + "."); return; } string directory = Path.GetDirectoryName(file); if (string.IsNullOrEmpty(directory)) { DialogManager.ShowErrorDialog("Failed to load template image."); return; } string templateName = Path.GetFileNameWithoutExtension(file); // find files with image extension and template name in the same directory List <string> imageFiles = DialogManager.GetImageFilesFromDirectory(directory) .Where(x => Path.GetFileNameWithoutExtension(x).Equals(templateName)).ToList(); if (imageFiles.Count < 1) { DialogManager.ShowErrorDialog("Failed to find template image."); return; } if (imageFiles.Count > 1) { DialogManager.ShowErrorDialog("Failed to load template image. Found several files with name: " + Path.GetFileNameWithoutExtension(file) + "."); return; } // load and deserialize template data try { string jsonString = File.ReadAllText(file); TemplateViewModel templateViewModel = TemplateSerializer.JsonToTemplate(jsonString); // if no name in template, use name of the file if (string.IsNullOrEmpty(templateViewModel.TemplateName)) { templateViewModel.TemplateName = Path.GetFileNameWithoutExtension(file); } // load image and check if it was loaded bool imageLoaded = templateViewModel.LoadTemplateImageFromFile(imageFiles[0]); if (!imageLoaded) { return; } templateViewModel.LoadedPath = file; templateViewModel.IsDirty = false; this.CloseActiveTemplateTab(); this.AddTab(templateViewModel); RecentMenuManager.AddFileNameToRecentList(this.RecentFiles, file); } catch (SerializationException e) { DialogManager.ShowErrorDialog("Failed to read or deserialize the template.\nReason: " + e.Message); return; } catch (Exception e) { DialogManager.ShowErrorDialog("Unknown error while loading the template.\nError details: " + e.Message); return; } }