public void OpenFile(string filename) { foreach (string s in filename.Split('\n')) { var fn = s.Trim(); var ext = Path.GetExtension(fn).ToLower(); if (ext == Properties.Resources.ObjectExtension.ToLower() || ext == Properties.Resources.ColorExtension.ToLower()) { OpenItemFromPath(fn); } else if (ext == Properties.Resources.ProjectExtension.ToLower()) { AssemblyNodeVM res = null; foreach (AssemblyNodeVM p in Projects) { if (Path.GetFullPath(p.AbsolutePath).Equals(Path.GetFullPath(fn), StringComparison.OrdinalIgnoreCase)) { res = p; res.IsExpanded = true; break; } } if (res != null) { continue; } if (File.Exists(fn)) { OpenProject openProject = OpenProjectSerializer.AddOpenProject(Path.GetFileNameWithoutExtension(fn), Path.GetDirectoryName(fn)); loadProject(openProject); } } } }
public MainWindowViewModel() { Properties.Settings.Default.Upgrade(); Properties.Settings.Default.StructureTemplates = Properties.Settings.Default.Properties["StructureTemplates"].DefaultValue.ToString(); if (Properties.Settings.Default.FirstStartup) { Properties.Settings.Default.StandardColorArray = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Appdata", "Local", "DominoPlanner", "colors" + Properties.Resources.ColorExtension); Properties.Settings.Default.StandardProjectPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Appdata", "Local", "DominoPlanner"); Properties.Settings.Default.OpenProjectList = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Appdata", "Local", "DominoPlanner", "OpenProjects.xml"); Directory.CreateDirectory(Path.GetDirectoryName(Properties.Settings.Default.StandardColorArray)); OpenProjectSerializer.Create(); Properties.Settings.Default.FirstStartup = false; } Properties.Settings.Default.Save(); while (!File.Exists(Properties.Settings.Default.StandardColorArray)) { Errorhandler.RaiseMessage("Please create a defaultcolortable.", "Missing Color Table", Errorhandler.MessageType.Info); new SetStandardV().ShowDialog(); } NewFieldStruct = new RelayCommand(o => { NewFieldStructure(); }); MenuSetStandard = new RelayCommand(o => { new SetStandardV().ShowDialog(); }); AddExistingProject = new RelayCommand(o => { AddProject_Exists(); }); AddExistingItem = new RelayCommand(o => { AddItem_Exists(); }); NewProject = new RelayCommand(o => { CreateNewProject(); }); SaveAll = new RelayCommand(o => { SaveAllOpen(); }); SaveCurrentOpen = new RelayCommand(o => { SaveCurrentOpenProject(); }); FileListClickCommand = new RelayCommand(o => { OpenItemFromPath(o); }); Tabs = new ObservableCollection <TabItem>(); Workspace.del = UpdateReference; loadProjectList(); }
private async void AddProject_Exists() { OpenFileDialog openFileDialog = new OpenFileDialog { Filters = new List <FileDialogFilter>() { new FileDialogFilter() { Extensions = new List <string> { Declares.ProjectExtension }, Name = Declares.ProjectExtension } }, Directory = UserSettings.Instance.StandardProjectPath }; //openFileDialog.RestoreDirectory = true; var result = await openFileDialog.ShowAsyncWithParent <MainWindow>(); if (result != null && result.Length == 1 && File.Exists(result[0])) { { OpenProject openProject = OpenProjectSerializer.AddOpenProject(Path.GetFileNameWithoutExtension(result[0]), Path.GetDirectoryName(result[0])); LoadProject(openProject); } } }
internal async void AfterStartupChecks() { if (FirstStartup) { UserSettings.Instance.StandardColorArray = Path.Combine(UserSettings.AppDataPath, "colors.DColor"); UserSettings.Instance.StandardProjectPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "DominoPlanner"); UserSettings.Instance.OpenProjectList = Path.Combine(UserSettings.AppDataPath, "OpenProjects.xml"); if (!File.Exists(UserSettings.Instance.OpenProjectList)) { File.Create(UserSettings.Instance.OpenProjectList).Close(); } UserSettings.Instance.StructureTemplates = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "Structures.xml"); Directory.CreateDirectory(UserSettings.Instance.StandardProjectPath); Directory.CreateDirectory(UserSettings.AppDataPath); OpenProjectSerializer.Create(); FirstStartup = false; } while (!File.Exists(UserSettings.Instance.StandardColorArray)) { await Errorhandler.RaiseMessage(_("Please create a default color table."), _("Missing Color Table"), Errorhandler.MessageType.Info); await new SetStandardV().ShowDialogWithParent <MainWindow>(); } LoadProjectList(); }
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 AddProject_Exists() { System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.Filter = $"project files (*{Properties.Resources.ProjectExtension})|*{Properties.Resources.ProjectExtension}"; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (File.Exists(openFileDialog.FileName)) { OpenProject openProject = OpenProjectSerializer.AddOpenProject(Path.GetFileNameWithoutExtension(openFileDialog.FileName), Path.GetDirectoryName(openFileDialog.FileName)); loadProject(openProject); } } }
private void CreateNewProject() { NewProjectVM curNPVM = new NewProjectVM(); new NewProject(curNPVM).ShowDialog(); if (curNPVM.Close == true) { OpenProject newProj = OpenProjectSerializer.AddOpenProject(curNPVM.ProjectName, string.Format(@"{0}\{1}", curNPVM.SelectedPath, curNPVM.ProjectName)); if (newProj == null) { Errorhandler.RaiseMessage("Could not create new Project!", "Error!", Errorhandler.MessageType.Error); return; } loadProject(newProj); } }
private async void CreateNewProject() { NewProjectVM curNPVM = new NewProjectVM(); await new NewProject(curNPVM).ShowDialogWithParent <MainWindow>(); if (curNPVM.Close == true) { OpenProject newProj = OpenProjectSerializer.AddOpenProject(curNPVM.ProjectName, string.Format(@"{0}/{1}", curNPVM.SelectedPath, curNPVM.ProjectName)); if (newProj == null) { await Errorhandler.RaiseMessage(_("Could not create new Project!"), _("Error!"), Errorhandler.MessageType.Error); return; } LoadProject(newProj); } }
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); } }
/// <summary> /// Projektliste laden /// </summary> private void loadProjectList() { Projects = new ObservableCollection <AssemblyNodeVM>(); List <OpenProject> OpenProjects = OpenProjectSerializer.GetOpenProjects(); if (OpenProjects != null) { foreach (OpenProject curOP in OpenProjects) { loadProject(curOP); } } else { Errorhandler.RaiseMessage("Error loading opened projects!", "Error", Errorhandler.MessageType.Error); OpenProjectSerializer.Create(); } }