예제 #1
0
        private void WriteProFile(ProFileContent content, string proFile, string priFileToInclude, bool openFile)
        {
            StreamWriter sw;

            if (File.Exists(proFile))
            {
                if (MessageBox.Show(SR.GetString("ExportProject_ExistsOverwriteQuestion", proFile),
                                    SR.GetString("ExportSolution"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }
            }

            try {
                sw = new StreamWriter(File.Create(proFile));
            } catch (Exception e) {
                Messages.DisplayErrorMessage(e);
                return;
            }

            if (!string.IsNullOrEmpty(priFileToInclude))
            {
                foreach (var option in content.Options)
                {
                    if (option.Name == "include" && !option.List.Contains(priFileToInclude))
                    {
                        var relativePriPath = HelperFunctions.GetRelativePath(Path.GetDirectoryName(proFile), priFileToInclude);
                        if (relativePriPath.StartsWith(".\\", StringComparison.Ordinal))
                        {
                            relativePriPath = relativePriPath.Substring(2);
                        }
                        relativePriPath = HelperFunctions.ChangePathFormat(relativePriPath);
                        option.List.Add(relativePriPath);
                        break;
                    }
                }
            }
            using (sw) {
                sw.WriteLine(Resources.exportPriHeader);
                WriteProFileOptions(sw, content.Options);
            }

            // open the file in vs
            if (openFile)
            {
                dteObject.OpenFile(Constants.vsViewKindTextView, proFile).Activate();
            }
        }
예제 #2
0
        private void WritePriFile(ProFileContent content, string priFile)
        {
            StreamWriter sw;

            try {
                sw = new StreamWriter(File.Create(priFile));
            } catch (Exception e) {
                Messages.DisplayErrorMessage(e);
                return;
            }

            using (sw) {
                sw.WriteLine(Resources.exportProHeader);
                WriteProFileOptions(sw, content.Options);
            }
        }
예제 #3
0
        private void WriteProSolution(ProSolution prosln, bool openFile)
        {
            var sln = prosln.ProjectSolution;

            if (string.IsNullOrEmpty(sln.FileName))
            {
                return;
            }

            var fi            = new FileInfo(sln.FullName);
            var slnDir        = fi.Directory;
            var createSlnFile = false;

            if ((slnDir != null) && (prosln.ProFiles.Count > 1))
            {
                if (MessageBox.Show(SR.GetString("ExportProject_SolutionProFileBuildIn", slnDir.FullName),
                                    SR.GetString("ExportSolution"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    createSlnFile = true;
                }
            }

            if (createSlnFile)
            {
                StreamWriter sw;
                var          slnName     = HelperFunctions.RemoveFileNameExtension(fi);
                var          slnFileName = slnDir.FullName + "\\" + slnName + ".pro";

                if (File.Exists(slnFileName))
                {
                    if (MessageBox.Show(SR.GetString("ExportProject_ExistsOverwriteQuestion", slnFileName),
                                        SR.GetString("ExportSolution"), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        return;
                    }
                }

                try {
                    sw = new StreamWriter(File.Create(slnFileName));
                } catch (Exception e) {
                    Messages.DisplayErrorMessage(e);
                    return;
                }

                var content = new ProFileContent(null);

                var option = new ProFileOption("TEMPLATE");
                option.NewOption    = null; // just one option...
                option.AssignSymbol = ProFileOption.AssignType.AT_Equals;
                content.Options.Add(option);
                option.List.Add("subdirs");

                option = new ProFileOption("SUBDIRS");
                option.ShortComment = "#Projects";
                content.Options.Add(option);

                string proFullName, relativePath;
                char[] trimChars = { '\\' };
                foreach (var profile in prosln.ProFiles)
                {
                    var fiProject       = new FileInfo(profile.Project.ProjectFile);
                    var projectBaseName = HelperFunctions.RemoveFileNameExtension(fiProject);
                    proFullName  = profile.Project.ProjectDirectory + projectBaseName + ".pro";
                    relativePath = HelperFunctions.GetRelativePath(slnDir.FullName, proFullName);
                    relativePath = relativePath.TrimEnd(trimChars);
                    relativePath = HelperFunctions.ChangePathFormat(relativePath.Remove(0, 2));
                    option.List.Add(relativePath);
                }

                using (sw) {
                    sw.WriteLine(Resources.exportSolutionHeader);
                    for (var i = 0; i < content.Options.Count; i++)
                    {
                        WriteProFileOption(sw, content.Options[i]);
                    }
                }

                if (openFile)
                {
                    dteObject.OpenFile(Constants.vsViewKindTextView, slnFileName).Activate();
                }
            }
        }
예제 #4
0
        private static ProFileContent CreatePriFileContent(Project project, string priFileDirectory)
        {
            ProFileOption option;
            var           qtPro     = QtProject.Create(project);
            var           content   = new ProFileContent(qtPro.VCProject);
            var           hasSpaces = false;

            // add the header files
            option = new ProFileOption("HEADERS");
            option.ShortComment   = "Header files";
            option.IncludeComment = false;
            content.Options.Add(option);
            option.List.AddRange(HelperFunctions.GetProjectFiles(project, FilesToList.FL_HFiles));
            MakeFilesRelativePath(qtPro.VCProject, option.List, priFileDirectory);
            hasSpaces |= ContainsFilesWithSpaces(option.List);

            // add the source files
            option = new ProFileOption("SOURCES");
            option.ShortComment   = "Source files";
            option.IncludeComment = false;
            content.Options.Add(option);
            option.List.AddRange(HelperFunctions.GetProjectFiles(project, FilesToList.FL_CppFiles));
            MakeFilesRelativePath(qtPro.VCProject, option.List, priFileDirectory);
            hasSpaces |= ContainsFilesWithSpaces(option.List);

            // add the form files
            option = new ProFileOption("FORMS");
            option.ShortComment   = "Forms";
            option.IncludeComment = false;
            content.Options.Add(option);
            option.List.AddRange(HelperFunctions.GetProjectFiles(project, FilesToList.FL_UiFiles));
            MakeFilesRelativePath(qtPro.VCProject, option.List, priFileDirectory);
            hasSpaces |= ContainsFilesWithSpaces(option.List);

            // add the translation files
            option                = new ProFileOption("TRANSLATIONS");
            option.Comment        = Resources.ec_Translations;
            option.ShortComment   = "Translation file(s)";
            option.IncludeComment = false;
            option.List.AddRange(HelperFunctions.GetProjectFiles(project, FilesToList.FL_Translation));
            MakeFilesRelativePath(qtPro.VCProject, option.List, priFileDirectory);
            hasSpaces |= ContainsFilesWithSpaces(option.List);
            content.Options.Add(option);

            // add the resource files
            option                = new ProFileOption("RESOURCES");
            option.Comment        = Resources.ec_Resources;
            option.ShortComment   = "Resource file(s)";
            option.IncludeComment = false;
            content.Options.Add(option);

            foreach (var resFile in qtPro.GetResourceFiles())
            {
                option.List.Add(resFile.RelativePath.Replace('\\', '/'));
            }

            if (hasSpaces)
            {
                Messages.DisplayWarningMessage(SR.GetString("ExportProject_PriFileContainsSpaces"));
            }

            return(content);
        }
예제 #5
0
        private static ProFileContent CreateProFileContent(Project project)
        {
            ProFileOption option;
            var           qtPro   = QtProject.Create(project);
            var           content = new ProFileContent(qtPro.VCProject);

            // hack to get active config
            var activeConfig   = project.ConfigurationManager.ActiveConfiguration.ConfigurationName;
            var activePlatform = project.ConfigurationManager.ActiveConfiguration.PlatformName;
            var config         = (VCConfiguration)((IVCCollection)qtPro.VCProject.Configurations).Item(activeConfig);
            var compiler       = CompilerToolWrapper.Create(config);
            var linker         = (VCLinkerTool)((IVCCollection)config.Tools).Item("VCLinkerTool");
            var libTool        = (VCLibrarianTool)((IVCCollection)config.Tools).Item("VCLibrarianTool");

            var outPut  = config.PrimaryOutput;
            var fi      = new FileInfo(outPut);
            var destdir = HelperFunctions.GetRelativePath(qtPro.VCProject.ProjectDirectory, fi.DirectoryName);

            destdir = HelperFunctions.ChangePathFormat(destdir);
            var target = qtPro.VCProject.Name;

            option              = new ProFileOption("TEMPLATE");
            option.Comment      = Resources.ec_Template;
            option.ShortComment = "Template";
            option.NewOption    = null; // just one option...
            option.AssignSymbol = ProFileOption.AssignType.AT_Equals;
            content.Options.Add(option);
            if (config.ConfigurationType == ConfigurationTypes.typeApplication)
            {
                option.List.Add("app");
            }
            else
            {
                option.List.Add("lib");
            }

            option              = new ProFileOption("TARGET");
            option.Comment      = Resources.ec_Target;
            option.ShortComment = "Target Name";
            option.NewOption    = null; // just one option...
            option.AssignSymbol = ProFileOption.AssignType.AT_Equals;
            content.Options.Add(option);
            option.List.Add(target);

            option              = new ProFileOption("DESTDIR");
            option.Comment      = Resources.ec_DestDir;
            option.ShortComment = "Destination Directory";
            option.NewOption    = null; // just one option...
            option.AssignSymbol = ProFileOption.AssignType.AT_Equals;
            content.Options.Add(option);
            option.List.Add(destdir);

            // add the qt option
            option = new ProFileOption("QT");
            var optionQT = option;

            option.Comment      = Resources.ec_Qt;
            option.ShortComment = "Qt Options";
            option.NewOption    = " "; // just space between the options...
            content.Options.Add(option);

            // add the config option
            option = new ProFileOption("CONFIG");
            var optionCONFIG = option;

            option.Comment      = Resources.ec_Config;
            option.ShortComment = "Config Options";
            option.NewOption    = " "; // just space between the options...
            content.Options.Add(option);

            AddModules(qtPro, optionQT, optionCONFIG);

            if (config.ConfigurationType == ConfigurationTypes.typeStaticLibrary)
            {
                option.List.Add("staticlib");
            }
            if (linker != null)
            {
                if (linker.GenerateDebugInformation)
                {
                    option.List.Add("debug");
                }
                else
                {
                    option.List.Add("release");
                }

                if (linker.SubSystem == subSystemOption.subSystemConsole)
                {
                    option.List.Add("console");
                }

                if (linker.AdditionalDependencies != null)
                {
                    if (linker.AdditionalDependencies.IndexOf("QAxServer", StringComparison.Ordinal) > -1)
                    {
                        option.List.Add("qaxserver");
                    }
                    else if (linker.AdditionalDependencies.IndexOf("QAxContainer", StringComparison.Ordinal) > -1)
                    {
                        option.List.Add("qaxcontainer");
                    }
                    else if (linker.AdditionalDependencies.IndexOf("QtHelp", StringComparison.Ordinal) > -1)
                    {
                        option.List.Add("help");
                    }
                }
            }

            if (qtPro.IsDesignerPluginProject())
            {
                option.List.Add("designer");
                option.List.Add("plugin");
            }

            // add defines
            option              = new ProFileOption("DEFINES");
            option.Comment      = Resources.ec_Defines;
            option.ShortComment = "Defines";
            option.NewOption    = " ";
            option.AssignSymbol = ProFileOption.AssignType.AT_PlusEquals;
            content.Options.Add(option);
            AddPreprocessorDefinitions(option, compiler.GetPreprocessorDefinitions());

            // add the include path option
            option              = new ProFileOption("INCLUDEPATH");
            option.Comment      = Resources.ec_IncludePath;
            option.ShortComment = "Include Path";
            content.Options.Add(option);
            AddIncludePaths(project, option, compiler.GetAdditionalIncludeDirectories());

            option              = new ProFileOption("LIBS");
            option.Comment      = Resources.ec_Libs;
            option.ShortComment = "Additional Libraries";
            content.Options.Add(option);
            if (linker != null)
            {
                AddLibraries(project, option, linker.AdditionalLibraryDirectories,
                             linker.AdditionalDependencies);
            }
            else if (libTool != null)
            {
                AddLibraries(project, option, libTool.AdditionalLibraryDirectories,
                             libTool.AdditionalDependencies);
            }

            option              = new ProFileOption("PRECOMPILED_HEADER");
            option.Comment      = Resources.ec_PrecompiledHeader;
            option.ShortComment = "Using Precompiled Headers";
            option.AssignSymbol = ProFileOption.AssignType.AT_Equals;
            content.Options.Add(option);

            if (qtPro.UsesPrecompiledHeaders())
            {
                option.List.Add(compiler.GetPrecompiledHeaderThrough());
            }

            // add the depend path option
            option              = new ProFileOption("DEPENDPATH");
            option.Comment      = Resources.ec_DependPath;
            option.ShortComment = "Depend Path";
            content.Options.Add(option);
            option.List.Add(".");

            var mocDir = QtVSIPSettings.GetMocDirectory(project, activeConfig.ToLower(), activePlatform.ToLower());

            mocDir              = mocDir.Replace('\\', '/');
            option              = new ProFileOption("MOC_DIR");
            option.Comment      = Resources.ec_MocDir;
            option.ShortComment = "Moc Directory";
            option.NewOption    = null; // just one option...
            content.Options.Add(option);
            option.List.Add(mocDir);

            option              = new ProFileOption("OBJECTS_DIR");
            option.Comment      = Resources.ec_ObjDir;
            option.ShortComment = "Objects Directory";
            option.NewOption    = null; // just one option...
            content.Options.Add(option);
            option.List.Add(config.ConfigurationName.ToLower());

            var uiDir = QtVSIPSettings.GetUicDirectory(project);

            uiDir               = uiDir.Replace('\\', '/');
            option              = new ProFileOption("UI_DIR");
            option.Comment      = Resources.ec_UiDir;
            option.ShortComment = "UI Directory";
            option.NewOption    = null; // just one option...
            content.Options.Add(option);
            option.List.Add(uiDir);

            var rccDir = QtVSIPSettings.GetRccDirectory(project);

            rccDir              = rccDir.Replace('\\', '/');
            option              = new ProFileOption("RCC_DIR");
            option.Comment      = Resources.ec_RccDir;
            option.ShortComment = "RCC Directory";
            option.NewOption    = null; // just one option...
            content.Options.Add(option);
            option.List.Add(rccDir);

            // add the include path option
            option                = new ProFileOption("include");
            option.Comment        = Resources.ec_Include;
            option.ShortComment   = "Include file(s)";
            option.IncludeComment = false; // print the comment in the output file
            option.AssignSymbol   = ProFileOption.AssignType.AT_Function;
            content.Options.Add(option);

            // add the translation files
            option                = new ProFileOption("TRANSLATIONS");
            option.Comment        = Resources.ec_Translations;
            option.ShortComment   = "Translation files";
            option.IncludeComment = false;
            content.Options.Add(option);
            option.List.AddRange(HelperFunctions.GetProjectFiles(project, FilesToList.FL_Translation));

            // add the rc file
            if (File.Exists(qtPro.VCProject.ProjectDirectory + "\\" + project.Name + ".rc"))
            {
                option                = new ProFileOption("win32:RC_FILE");
                option.Comment        = Resources.ec_rcFile;
                option.ShortComment   = "Windows resource file";
                option.IncludeComment = false;
                option.AssignSymbol   = ProFileOption.AssignType.AT_Equals;
                content.Options.Add(option);
                option.List.Add(project.Name + ".rc");
            }

            if (qtPro.IsDesignerPluginProject())
            {
                option = new ProFileOption("target.path");
                option.ShortComment   = "Install the plugin in the designer plugins directory.";
                option.IncludeComment = true;
                option.AssignSymbol   = ProFileOption.AssignType.AT_Equals;
                option.List.Add("$$[QT_INSTALL_PLUGINS]/designer");
                content.Options.Add(option);

                option = new ProFileOption("INSTALLS");
                option.IncludeComment = false;
                option.AssignSymbol   = ProFileOption.AssignType.AT_PlusEquals;
                option.List.Add("target");
                content.Options.Add(option);
            }

            return(content);
        }
예제 #6
0
 private void projListBox_SelectedIndexChanged(object sender, System.EventArgs e)
 {
     currentPro = proSln.ProFiles[projListBox.SelectedIndex];
     optionComboBox.DataSource = currentPro.Options;
 }