Exemplo n.º 1
0
        public void AddGeneratedFile(IVsProject project, VCFilter filter, string path, EnvDTE.Configuration config)
        {
            int  found;
            uint id;

            VSDOCUMENTPRIORITY[] priority = new VSDOCUMENTPRIORITY[1];
            project.IsDocumentInProject(path, out found, priority, out id);
            if (found == 0)
            {
                if (!Directory.Exists(Path.GetDirectoryName(path)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(path));
                }

                if (!File.Exists(path))
                {
                    File.Create(path).Dispose();
                }

                VCFile file = null;
                if (config == null)
                {
                    file = filter.AddFile(path);
                }
                else
                {
                    filter = FindOrCreateFilter(filter, config.PlatformName);
                    filter = FindOrCreateFilter(filter, config.ConfigurationName);
                    file   = filter.AddFile(path);
                    foreach (VCFileConfiguration c in file.FileConfigurations)
                    {
                        if (!c.ProjectConfiguration.ConfigurationName.Equals(config.ConfigurationName) ||
                            !c.ProjectConfiguration.Platform.Name.Equals(config.PlatformName))
                        {
                            c.ExcludedFromBuild = true;
                        }
                    }
                }

                try
                {
                    //
                    // Remove the file otherwise it will be considered up to date.
                    //
                    File.Delete(path);
                }
                catch (Exception)
                {
                }
            }
        }
Exemplo n.º 2
0
        public static VCFile AddRelativeFile(this VCFilter root, string relativepath, string fullpath)
        {
            VCFilter cur  = root;
            var      dirs = relativepath.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries).ToList();

            if (dirs.Count > 1)
            {
                for (int i = 0; i < dirs.Count - 1; i++)
                {
                    string idir = dirs[i];
                    if (cur != null)
                    {
                        VCFilter      next = null;
                        IVCCollection subs = cur.Filters;
                        foreach (VCFilter sub in subs)
                        {
                            if (sub.Name == idir)
                            {
                                next = sub;
                                break;
                            }
                        }
                        if (next != null)
                        {
                            next = cur.AddFilter(idir);
                            cur  = next;
                        }
                    }
                }
            }

            return(cur.AddFile(fullpath));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Add File to specified project
        /// </summary>
        /// <param name="path"></param>
        private void AddFileToProject(Project proj, string source, string destination, VCFilter filter)
        {
            VCFilter localFilter = filter;

            try
            {
                FileInfo fileInfo1 = new FileInfo(source);

                if (!File.Exists(System.IO.Path.Combine(destination, fileInfo1.Name)))
                {
                    File.Copy(source, System.IO.Path.Combine(destination, fileInfo1.Name));
                }

                if ((fileInfo1.Name != ".cproject") && (fileInfo1.Name != ".project"))
                {
                    if (localFilter == null)
                    {
                        if (proj.ProjectItems.Item(fileInfo1.Name) == null)
                        {
                            proj.ProjectItems.AddFromFileCopy(System.IO.Path.Combine(destination, fileInfo1.Name));
                            AddSummaryString("Project File Added: " + System.IO.Path.Combine(destination, fileInfo1.Name));
                        }
                        else
                        {
                            AddSummaryString("Duplicate File: " + System.IO.Path.Combine(destination, fileInfo1.Name));
                        }
                    }
                    else
                    {
                        IVCCollection tmpCollection;
                        tmpCollection = localFilter.Files;

                        if (tmpCollection.Item(fileInfo1.Name) == null)
                        {
                            localFilter.AddFile(System.IO.Path.Combine(destination, fileInfo1.Name));
                            AddSummaryString("Project File Added: " + System.IO.Path.Combine(destination, fileInfo1.Name));
                        }
                        else
                        {
                            AddSummaryString("Duplicate File: " + System.IO.Path.Combine(destination, fileInfo1.Name));
                        }
                    }
                }
                else
                {
                    AddSummaryString("File Skipped: " + System.IO.Path.Combine(destination, fileInfo1.Name));
                }
            }
            catch (Exception e)
            {
            }
        }
Exemplo n.º 4
0
        public void AddGeneratedFiles(EnvDTE.Project dteProject, EnvDTE.Configuration config, string filterName,
                                      List <string> paths, bool generatedFilesPerConfiguration)
        {
            VCProject project = dteProject.Object as VCProject;

            VCFilter filter = FindOrCreateFilter(project, filterName);

            if (generatedFilesPerConfiguration)
            {
                filter = FindOrCreateFilter(filter, config.PlatformName);
                filter = FindOrCreateFilter(filter, config.ConfigurationName);
            }

            string configurationName = config.ConfigurationName;
            string platformName      = config.PlatformName;

            foreach (string path in paths)
            {
                if (!File.Exists(path))
                {
                    File.Create(path).Dispose();
                }

                VCFile file = filter.AddFile(path);

                try
                {
                    //
                    // Remove the file otherwise it will be considered up to date.
                    //
                    File.Delete(path);
                }
                catch (Exception)
                {
                }
                //
                // Exclude the file from all other configurations
                //
                if (generatedFilesPerConfiguration)
                {
                    foreach (VCFileConfiguration c in file.FileConfigurations)
                    {
                        if (!c.ProjectConfiguration.ConfigurationName.Equals(configurationName) ||
                            !c.ProjectConfiguration.Platform.Name.Equals(platformName))
                        {
                            c.ExcludedFromBuild = true;
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        public void SaveUnities()
        {
            try
            {
                VCFilter unityfilter = this.Filter.GetVCFilter();
                if (unityfilter == null)
                {
                    unityfilter = this.VCProject.AddFilter(this.Filter.Name) as VCFilter;
                }

                List <VCFile> oldfiles = new List <VCFile>();
                foreach (VCFile file in unityfilter.Files as IVCCollection)
                {
                    oldfiles.Add(file);
                }
                foreach (VCFile file in oldfiles)
                {
                    file.Remove();
                }

                IVCCollection    tools  = this.VCConfig.Tools as IVCCollection;
                VCCLCompilerTool vctool = tools.Item("VCCLCompilerTool") as VCCLCompilerTool;

                string pch = Connect.GetPCH(this.VCProject, this.VCConfig);

                foreach (Unity unity in this.Unities.Values)
                {
                    unity.Save(this.VCProject.ProjectDirectory, this.Filter.Path, pch);

                    VCFile file = unityfilter.AddFile(unity.FileName) as VCFile;

                    foreach (VCFileConfiguration fileconfig in file.FileConfigurations as IVCCollection)
                    {
                        vctool = fileconfig.Tool as VCCLCompilerTool;
                        if (vctool != null)
                        {
                            vctool.AdditionalIncludeDirectories = "\"$(ProjectDir)/\"";
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                Utils.ShowError("SaveUnities failed: " + ex.Message);
            }
        }
Exemplo n.º 6
0
        public void Generate()
        {
            string projectDir = project.ProjectDirectory;
            string headerName = suiteName + ".h";

            string suitePath = Path.Combine(projectDir, headerName);

            StreamWriter writer = File.CreateText(suitePath);

            WriteHeaderFileContent(writer, suitePath);
            writer.Close();

            VCFilter      testFilter = GetOrCreateTestFilter();
            VCProjectItem item       = (VCProjectItem)testFilter.AddFile(suitePath);

            suiteFile = project.GetChildWithName(item.ItemName);
        }
Exemplo n.º 7
0
        private void addNewFilterRecursive(VCFilter vcFilter, string dirName, string dir)
        {
            string   filterName = dirName.Substring(dir.Length + 1);
            VCFilter newFilter  = vcFilter.AddFilter(filterName);

            // add files
            string[] fileEntries = Directory.GetFiles(dirName);
            foreach (string file in fileEntries)
            {
                newFilter.AddFile(file);
            }

            // add directories as filter
            string[] dirEntries = Directory.GetDirectories(dirName);
            foreach (string d in dirEntries)
            {
                addNewFilterRecursive(newFilter, d, dirName);
            }
        }
Exemplo n.º 8
0
        public bool toVCFilter(VCFilter parent)
        {
            bool hasFiles = files.Count > 0;

            if (files.Count > 0 || folders.Count > 0)
            {
                VCFilter filter = parent.AddFilter(name);
                foreach (var file in files)
                {
                    filter.AddFile(Path.Combine(path, file));
                }
                foreach (var folder in folders)
                {
                    hasFiles |= folder.toVCFilter(filter);
                }
                if (!hasFiles)
                {
                    parent.RemoveFilter(filter);
                }
            }
            return(hasFiles);
        }
        public void AddToFilter(EnvDTE.Project dteProject, String name, String path)
        {
            VCProject project = dteProject.Object as VCProject;

            VCFilter filter = null;

            foreach (VCFilter f in project.Filters)
            {
                if (f.Name.Equals(name))
                {
                    filter = f;
                    break;
                }
            }

            if (filter != null)
            {
                filter.AddFile(path);
            }
            else
            {
                project.AddFile(path);
            }
        }
Exemplo n.º 10
0
        public void Execute(object Application,
                            int hwndOwner,
                            ref object[] contextParams,
                            ref object[] customParams,
                            ref EnvDTE.wizardResult retval)
        {
            try
            {
                _applicationObject = Application as DTE2;

                if (null == template_file_name_src)
                {
                    RegistryKey vs2010 = Registry.CurrentUser.OpenSubKey("software\\jstructtool");

                    app_folder = vs2010.GetValue("AppFolder").ToString();

                    template_file_name_src = app_folder + "\\inc\\template.jst";

                    vs2010.Close();
                }

                foreach (SelectedItem si in _applicationObject.SelectedItems)
                {
                    VCFilter  filter = si.ProjectItem.Object as VCFilter;
                    VCProject proj   = filter.project as VCProject;

                    template_file_name_dst = contextParams[4] as string;

                    template_file_name_dst += ".jst";

                    File.Copy(template_file_name_src, template_file_name_dst);

                    if (filter.CanAddFile(template_file_name_dst))
                    {
                        string text = null;

                        using (StreamReader sr = new StreamReader(template_file_name_dst))
                        {
                            text = sr.ReadToEnd();

                            text = text.Replace("%ns%", Path.GetFileNameWithoutExtension(template_file_name_dst));
                        }

                        using (StreamWriter sw = new StreamWriter(template_file_name_dst))
                        {
                            sw.Write(text);
                        }

                        filter.AddFile(template_file_name_dst);

                        if (null == add_output_file)
                        {
                            XmlDocument doc = new XmlDocument();

                            doc.Load(app_folder + "\\debugconf.xml");

                            XmlNode add_o_file = doc.SelectSingleNode("/debug/add_output_file");

                            add_output_file = add_o_file.InnerText;
                        }

                        if ("true" == add_output_file)
                        {
                            filter.AddFile(proj.ProjectDirectory + "\\mjst\\" + Path.GetFileNameWithoutExtension(template_file_name_dst) + ".h");
                        }

                        // open added file
                        _applicationObject.ItemOperations.OpenFile(template_file_name_dst);
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
        public void ProjectFinishedGenerating(Project project)
        {
            // --- FILTERS --- //

            VCProject vcproject = project as VCProject;

            // Retrieve filters

            _filterHeaderQuestion = null;
            _filterHeaderRead     = null;
            _filterHeaderWrite    = null;
            _filterSourceQuestion = null;
            _filterSourceRead     = null;
            _filterSourceWrite    = null;

            foreach (VCFilter filter in vcproject.Filters)
            {
                if (filter.Name == _filterStringHeaderQuestion)
                {
                    _filterHeaderQuestion = filter;
                }
                else if (filter.Name == _filterStringHeaderRead)
                {
                    _filterHeaderRead = filter;
                }
                else if (filter.Name == _filterStringHeaderWrite)
                {
                    _filterHeaderWrite = filter;
                }
                else if (filter.Name == _filterStringSourceQuestion)
                {
                    _filterSourceQuestion = filter;
                }
                else if (filter.Name == _filterStringSourceRead)
                {
                    _filterSourceRead = filter;
                }
                else if (filter.Name == _filterStringSourceWrite)
                {
                    _filterSourceWrite = filter;
                }
            }

            // If any filters didn't already exist, make them!

            if (_filterHeaderQuestion == null)
            {
                _filterHeaderQuestion = vcproject.AddFilter(_filterStringHeaderQuestion);
            }
            if (_filterHeaderRead == null)
            {
                _filterHeaderRead = vcproject.AddFilter(_filterStringHeaderRead);
            }
            if (_filterHeaderWrite == null)
            {
                _filterHeaderWrite = vcproject.AddFilter(_filterStringHeaderWrite);
            }
            if (_filterSourceQuestion == null)
            {
                _filterSourceQuestion = vcproject.AddFilter(_filterStringSourceQuestion);
            }
            if (_filterSourceRead == null)
            {
                _filterSourceRead = vcproject.AddFilter(_filterStringSourceRead);
            }
            if (_filterSourceWrite == null)
            {
                _filterSourceWrite = vcproject.AddFilter(_filterStringSourceWrite);
            }

            // Add files to filters

            _filterHeaderQuestion.AddFile(_mainHeaderFilePath);
            _filterHeaderRead.AddFile(_readHeaderFilePath);
            _filterHeaderWrite.AddFile(_writeHeaderFilePath);
            _filterSourceQuestion.AddFile(_mainSourceFilePath);
            _filterSourceRead.AddFile(_readSourceFilePath);
            _filterSourceWrite.AddFile(_writeSourceFilePath);
        }
Exemplo n.º 12
0
        public void Execute(object Application,
                            int hwndOwner,
                            ref object[] contextParams,
                            ref object[] customParams,
                            ref EnvDTE.wizardResult retval)
        {
            try
            {
                _applicationObject = Application as DTE2;

                if (null == template_file_name_src_jst || null == template_file_name_src_json)
                {
                    RegistryKey vs2010 = Registry.CurrentUser.OpenSubKey("software\\jstructtool");

                    template_file_name_src_jst  = vs2010.GetValue("AppFolder").ToString() + "\\inc\\template.jst";
                    template_file_name_src_json = vs2010.GetValue("AppFolder").ToString() + "\\inc\\template.json";

                    vs2010.Close();
                }

                foreach (SelectedItem si in _applicationObject.SelectedItems)
                {
                    VCFilter  filter = si.ProjectItem.Object as VCFilter;
                    VCProject proj   = filter.project as VCProject;

                    template_file_name_dst = contextParams[4] as string;

                    if (!template_file_name_dst.EndsWith(".json"))
                    {
                        template_file_name_dst += ".jst";

                        File.Copy(template_file_name_src_jst, template_file_name_dst);
                    }
                    else
                    {
                        File.Copy(template_file_name_src_json, template_file_name_dst);
                    }

                    if (filter.CanAddFile(template_file_name_dst))
                    {
                        if (template_file_name_dst.EndsWith(".jst"))
                        {
                            string text = null;

                            using (StreamReader sr = new StreamReader(template_file_name_dst))
                            {
                                text = sr.ReadToEnd();

                                text = text.Replace("%struct_name%", Path.GetFileNameWithoutExtension(template_file_name_dst));
                            }

                            using (StreamWriter sw = new StreamWriter(template_file_name_dst))
                            {
                                sw.Write(text);
                            }
                        }

                        filter.AddFile(template_file_name_dst);

                        // open added file
                        _applicationObject.ItemOperations.OpenFile(template_file_name_dst);

                        if (template_file_name_dst.EndsWith(".json"))
                        {
                            template_file_name_dst = template_file_name_dst.Remove(template_file_name_dst.LastIndexOf(".json")) + ".jst";

                            filter.AddFile(template_file_name_dst);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }