Esempio n. 1
0
        public static void ImportPriFile(EnvDTE.Project project, string fileName)
        {
            VCProject vcproj;

            if (!HelperFunctions.IsQtProject(project))
            {
                return;
            }

            vcproj = project.Object as VCProject;
            if (vcproj == null)
            {
                return;
            }

            QtVersionManager vm    = QtVersionManager.The();
            string           qtDir = vm.GetInstallPath(vm.GetDefaultVersion());

            if (qtDir == null)
            {
                Messages.DisplayErrorMessage(SR.GetString("CannotFindQMake"));
                return;
            }

            FileInfo priFileInfo = new FileInfo(fileName);

            QMakeWrapper qmake = new QMakeWrapper();

            qmake.setQtDir(qtDir);
            if (qmake.readFile(priFileInfo.FullName))
            {
                bool          flat      = qmake.isFlat();
                List <string> priFiles  = ResolveFilesFromQMake(qmake.sourceFiles(), project, priFileInfo.DirectoryName);
                List <string> projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_CppFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, flat, Filters.SourceFiles());

                priFiles  = ResolveFilesFromQMake(qmake.headerFiles(), project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_HFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, flat, Filters.HeaderFiles());

                priFiles  = ResolveFilesFromQMake(qmake.formFiles(), project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_UiFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, flat, Filters.FormFiles());

                priFiles  = ResolveFilesFromQMake(qmake.resourceFiles(), project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_Resources);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, flat, Filters.ResourceFiles());
            }
            else
            {
                Messages.PaneMessage(project.DTE, "--- (Importing .pri file) file: "
                                     + priFileInfo + " could not be read.");
            }
        }
Esempio n. 2
0
        public static bool RunlUpdate(VCFile vcFile, EnvDTE.Project pro)
        {
            if (!HelperFunctions.IsQtProject(pro))
            {
                return(false);
            }

            string cmdLine = "";
            string options = QtVSIPSettings.GetLUpdateOptions(pro);

            if (!string.IsNullOrEmpty(options))
            {
                cmdLine += options + " ";
            }
            List <string> headers = HelperFunctions.GetProjectFiles(pro, FilesToList.FL_HFiles);
            List <string> sources = HelperFunctions.GetProjectFiles(pro, FilesToList.FL_CppFiles);
            List <string> uifiles = HelperFunctions.GetProjectFiles(pro, FilesToList.FL_UiFiles);

            foreach (string file in headers)
            {
                cmdLine += file + " ";
            }

            foreach (string file in sources)
            {
                cmdLine += file + " ";
            }

            foreach (string file in uifiles)
            {
                cmdLine += file + " ";
            }

            cmdLine += "-ts " + vcFile.RelativePath;

            int    cmdLineLength    = cmdLine.Length + Resources.lupdateCommand.Length + 1;
            string temporaryProFile = null;

            if (cmdLineLength > HelperFunctions.GetMaximumCommandLineLength())
            {
                string codec = "";
                if (!string.IsNullOrEmpty(options))
                {
                    int cc4tr_location = options.IndexOf("-codecfortr", System.StringComparison.CurrentCultureIgnoreCase);
                    if (cc4tr_location != -1)
                    {
                        codec = options.Substring(cc4tr_location).Split(' ')[1];
                        string remove_this = options.Substring(cc4tr_location, "-codecfortr".Length + 1 + codec.Length);
                        options = options.Replace(remove_this, "");
                    }
                }
                VCProject vcPro = (VCProject)pro.Object;
                temporaryProFile = System.IO.Path.GetTempFileName();
                temporaryProFile = System.IO.Path.GetDirectoryName(temporaryProFile) + "\\" +
                                   System.IO.Path.GetFileNameWithoutExtension(temporaryProFile) + ".pro";
                if (System.IO.File.Exists(temporaryProFile))
                {
                    System.IO.File.Delete(temporaryProFile);
                }
                System.IO.StreamWriter sw = new System.IO.StreamWriter(temporaryProFile);
                writeFilesToPro(sw, "HEADERS",
                                ProjectExporter.ConvertFilesToFullPath(headers, vcPro.ProjectDirectory));
                writeFilesToPro(sw, "SOURCES",
                                ProjectExporter.ConvertFilesToFullPath(sources, vcPro.ProjectDirectory));
                writeFilesToPro(sw, "FORMS",
                                ProjectExporter.ConvertFilesToFullPath(uifiles, vcPro.ProjectDirectory));

                List <string> tsFiles = new List <string>(1);
                tsFiles.Add(vcFile.FullPath);
                writeFilesToPro(sw, "TRANSLATIONS", tsFiles);

                if (!string.IsNullOrEmpty(codec))
                {
                    sw.WriteLine("CODECFORTR = " + codec);
                }
                sw.Close();

                cmdLine = "";
                if (!string.IsNullOrEmpty(options))
                {
                    cmdLine += options + " ";
                }
                cmdLine += "\"" + temporaryProFile + "\"";
            }

            bool success = true;

            try
            {
                Messages.PaneMessage(pro.DTE, "--- (lupdate) file: " + vcFile.FullPath);

                HelperFunctions.StartExternalQtApplication(Resources.lupdateCommand, cmdLine,
                                                           ((VCProject)vcFile.project).ProjectDirectory, pro, true, null);
            }
            catch (QtVSException e)
            {
                success = false;
                Messages.DisplayErrorMessage(e.Message);
            }

            if (temporaryProFile != null && System.IO.File.Exists(temporaryProFile))
            {
                System.IO.File.Delete(temporaryProFile);
                temporaryProFile  = temporaryProFile.Substring(0, temporaryProFile.Length - 3);
                temporaryProFile += "TMP";
                if (System.IO.File.Exists(temporaryProFile))
                {
                    System.IO.File.Delete(temporaryProFile);
                }
            }

            return(success);
        }
Esempio n. 3
0
        public static void ImportPriFile(EnvDTE.Project project, string fileName)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            if (project == null)
            {
                return;
            }

            if (!HelperFunctions.IsQtProject(project))
            {
                return;
            }

            var vcproj = project.Object as VCProject;

            if (vcproj == null)
            {
                return;
            }

            var vm    = QtVersionManager.The();
            var qtDir = vm.GetInstallPath(vm.GetDefaultVersion());

            if (qtDir == null)
            {
                Messages.DisplayErrorMessage(SR.GetString("CannotFindQMake"));
                return;
            }

            var qmake = new QMakeWrapper {
                QtDir = qtDir
            };
            var priFileInfo = new FileInfo(fileName);

            if (qmake.ReadFile(priFileInfo.FullName))
            {
                var priFiles  = ResolveFilesFromQMake(qmake.SourceFiles, project, priFileInfo.DirectoryName);
                var projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_CppFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, qmake.IsFlat, Filters.SourceFiles());

                priFiles  = ResolveFilesFromQMake(qmake.HeaderFiles, project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_HFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, qmake.IsFlat, Filters.HeaderFiles());

                priFiles  = ResolveFilesFromQMake(qmake.FormFiles, project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_UiFiles);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, qmake.IsFlat, Filters.FormFiles());

                priFiles  = ResolveFilesFromQMake(qmake.ResourceFiles, project, priFileInfo.DirectoryName);
                projFiles = HelperFunctions.GetProjectFiles(project, FilesToList.FL_Resources);
                projFiles = ProjectExporter.ConvertFilesToFullPath(projFiles, vcproj.ProjectDirectory);
                ProjectExporter.SyncIncludeFiles(vcproj, priFiles, projFiles, project.DTE, qmake.IsFlat, Filters.ResourceFiles());
            }
            else
            {
                Messages.Print("--- (Importing .pri file) file: "
                               + priFileInfo + " could not be read.");
            }
        }