private async void LoadProject(OpenProject newProject) { bool remove = true; string projectpath = Path.Combine(newProject.path, $"{newProject.name}.{Declares.ProjectExtension}"); if (File.Exists(projectpath)) { remove = false; AssemblyNodeVM node = null; try { AssemblyNode mainnode = new AssemblyNode(projectpath); // check if the file can be deserialized properly node = new AssemblyNodeVM(mainnode, OpenItem, RemoveNodeFromTabs, GetTab); if (node.BrokenFile || (node.Model as AssemblyNode).Obj.ColorListBroken) { remove = true; } } catch (Exception) { try { AssemblyNode restored = await AssemblyNodeVM.RestoreAssembly(projectpath); node = new AssemblyNodeVM(restored, OpenItem, RemoveNodeFromTabs, GetTab); } catch (FileNotFoundException) { remove = true; } catch { await Errorhandler.RaiseMessage(String.Format(_("The main project file of project {0} was damaged. An attempt to restore the file has been unsuccessful. \nThe project will be removed from the list of opened projects."), projectpath), _("Damaged File"), Errorhandler.MessageType.Error); remove = true; } } if (!remove) { Projects.Add(node); } } if (remove) { await Errorhandler.RaiseMessage(string.Format(_("Unable to load project {0}. It might have been moved or damaged. \nPlease re-add it at its current location.\n\nThe project has been removed from the list of opened projects."), newProject.name), _("Error"), Errorhandler.MessageType.Error); OpenProjectSerializer.RemoveOpenProject(newProject.id); } }
private void loadProject(OpenProject newProject) { bool remove = true; string projectpath = Path.Combine(newProject.path, $"{newProject.name}{Properties.Resources.ProjectExtension}"); if (File.Exists(projectpath)) { remove = false; AssemblyNodeVM node = null; try { AssemblyNode mainnode = new AssemblyNode(projectpath); // check if the file can be deserialized properly node = new AssemblyNodeVM(mainnode, OpenItem, RemoveNodeFromTabs, GetTab); } catch { try { AssemblyNode restored = AssemblyNodeVM.RestoreAssembly(projectpath); node = new AssemblyNodeVM(restored, OpenItem, RemoveNodeFromTabs, GetTab); } catch (FileNotFoundException) { remove = true; } catch { Errorhandler.RaiseMessage($"The main project file of project {projectpath} was damaged. An attempt to restore the file has been unsuccessful. \nThe project will be removed from the list of opened projects.", "Damaged File", Errorhandler.MessageType.Error); remove = true; } } if (!remove) { Projects.Add(node); } } if (remove) { Errorhandler.RaiseMessage($"Unable to load project {newProject.name}. It might have been moved or damaged. \nPlease re-add it at its current location.\n\nThe project has been removed from the list of opened projects.", "Error!", Errorhandler.MessageType.Error); OpenProjectSerializer.RemoveOpenProject(newProject.id); } }