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();
        }
Exemple #3
0
        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);
                }
            }
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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);
            }
        }
Exemple #8
0
        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();
            }
        }