public VCProjectFile(string name, string general_name)
        {
            General          = name == general_name;
            Name             = name;
            ProjectDirectory = Path.Combine(Config.Global.IntermediatePath, "..", "VisualCode", general_name, name);
            if (!Directory.Exists(ProjectDirectory))
            {
                Directory.CreateDirectory(ProjectDirectory);
            }

            GenerateProject = new GenerateProjectFile();
            GenerateProject.RegisterProject(name);

            VCDirectory = Path.Combine(GenerateProject.ProjectPath[Name], ".vscode");
            if (!Directory.Exists(VCDirectory))
            {
                Directory.CreateDirectory(VCDirectory);
            }
        }
示例#2
0
        private void ClickedGenerateButton(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(ProjectName.Text))
            {
                MessageBox.Show("プロジェクト名を入力してください", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            if (string.IsNullOrWhiteSpace(ProjectFileLocation.Text))
            {
                MessageBox.Show("プロジェクト作成先を入力してください。", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            //プロジェクト名にファイル名として使用できない文字が含まれている場合
            if (!(ProjectName.Text.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) < 0))
            {
                MessageBox.Show("プロジェクト名に不正な文字が含まれています。\nプロジェクト名を変更してください。", "作成失敗", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            try
            {
                var cmd = new GenerateProjectFile();
                cmd.GeneratedProjectFileAbsolutePath = ProjectFileLocation.Text;
                cmd.ProjectName = ProjectName.Text;

                RecevierOfViewModel.CommandViewModelTo(cmd);

                //これが原因だぁーーーーーー!!!!!!!
                MaterialLicenseChecker.Views.CMainView.IReceiverCommandFromView ReceiverOfView = (MaterialLicenseChecker.Views.CMainView.IReceiverCommandFromView) this.Owner;
                MaterialLicenseChecker.Views.CMainView.LoadProjectFiles         ViewCmd        = new MaterialLicenseChecker.Views.CMainView.LoadProjectFiles();
                ViewCmd.LoadedProjectFileAbsolutePath = ProjectFileLocation.Text + "\\" + ProjectName.Text + "\\" + ProjectName.Text + ".projm";
                ViewCmd.ProjectName = ProjectName.Text;
                ReceiverOfView.CommandViewTo(ViewCmd);
                Close();
            }
            catch (MyException.SameNameProjectExistsException)
            {
                MessageBox.Show("既に同名のプロジェクトが存在します。\nプロジェクト名を変更してください。", "作成失敗", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        public static void CreateFilters(string File, string Project, string Out = null)
        {
            GenerateProjectFile GenerateProjectFile = new GenerateProjectFile();

            GenerateProjectFile.RegisterProject(Project);

            List <string> SourceFie     = new List <string>();
            List <string> IncludeFile   = new List <string>();
            List <string> ResourceFiles = new List <string>();


            GenerateProjectFile.GetResourceFile(Project, ref ResourceFiles);
            GenerateProjectFile.GetSource(Project, ref SourceFie);
            GenerateProjectFile.GetIncludeFile(Project, ref IncludeFile);

            Filters.Project filetrs = new Filters.Project();
            if (!filetrs.Load(File))
            {
                Console.WriteLine("Ошибка не удалось загрузить " + File);
            }
            foreach (Filters.ClCompile i in filetrs.itemGroup.ClCompilers)
            {
                List <string> list = new List <string>();
                foreach (string a in SourceFie)
                {
                    if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                    {
                        list.Add(a);
                    }
                }
                GetFile(ref list, ref i.Include);
            }
            for (int i = filetrs.itemGroup.ClCompilers.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.ClCompilers[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.ClCompilers.RemoveAt(i);
                }
            }
            foreach (Filters.ClInclude i in filetrs.itemGroup.ClIncludes)
            {
                List <string> list = new List <string>();
                foreach (string a in IncludeFile)
                {
                    if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                    {
                        list.Add(a);
                    }
                }
                GetFile(ref list, ref i.Include);
            }
            for (int i = filetrs.itemGroup.ClIncludes.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.ClIncludes[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.ClIncludes.RemoveAt(i);
                }
            }
            bool b1 = false, b2 = false;

            foreach (Filters.None i in filetrs.itemGroup.Nones)
            {
                if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(GenerateProjectFile.PathFileInfo[Project]).ToLower())
                {
                    List <string> list = new List <string>();
                    list.Add(GenerateProjectFile.PathFileInfo[Project]);
                    if (b1)
                    {
                        continue;
                    }
                    GetFile(ref list, ref i.Include);
                    b1 = true;
                }
                else
                if (ResourceFiles.Count != 0)
                {
                    foreach (string a in ResourceFiles)
                    {
                        if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                        {
                            List <string> list = new List <string>();
                            list.Add(a);
                            if (b2)
                            {
                                continue;
                            }
                            GetFile(ref list, ref i.Include);
                            b2 = true;
                        }
                        else
                        {
                            i.Include = " УДАЛИТЬ.УДАЛИТЬ";
                        }
                    }
                }
                else
                {
                    i.Include = " УДАЛИТЬ.УДАЛИТЬ";
                }
            }
            for (int i = filetrs.itemGroup.Nones.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.Nones[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.Nones.RemoveAt(i);
                }
            }
            string FiltersInProject = String.Empty;

            {
                string path = Path.GetDirectoryName(GenerateProjectFile.PathFileInfo[Project]);
                FiltersInProject = Path.Combine(path, Project + ".vcxproj.filters");
            }
            {
                Dictionary <string, bool> paths = new Dictionary <string, bool>();
                foreach (Filters.ClCompile i in filetrs.itemGroup.ClCompilers)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.ClInclude i in filetrs.itemGroup.ClIncludes)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.None i in filetrs.itemGroup.Nones)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.Filter i in filetrs.itemGroup.Filters)
                {
                    if (paths.ContainsKey(i.Include) == true)
                    {
                        int offset = i.Include.LastIndexOf('\\');
                        if (offset == -1)
                        {
                            continue;
                        }
                        string in_path = i.Include.Remove(offset);

                        if (paths.ContainsKey(in_path) == false)
                        {
                            paths.Add(in_path, true);
                        }
                    }
                }
                for (int i = filetrs.itemGroup.Filters.Count - 1; i >= 0; i--)
                {
                    if (paths.ContainsKey(filetrs.itemGroup.Filters[i].Include) == false)
                    {
                        filetrs.itemGroup.Filters.RemoveAt(i);
                    }
                }
            }
            filetrs.Save(Out != null? Out: FiltersInProject);
        }