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."); } }
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); }
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."); } }