From ca47896204482bf4a6979e3838bf7f09f61cebeb Mon Sep 17 00:00:00 2001
From: giy <giy@omp-system.ru>
Date: Fri, 02 Sep 2022 14:16:56 +0300
Subject: [PATCH] Обновление до версии 2.9.0
---
QtVsTools.Core/QtVSIPSettings.cs | 477 +++-------------------------------------------------------
1 files changed, 31 insertions(+), 446 deletions(-)
diff --git a/QtVsTools.Core/QtVSIPSettings.cs b/QtVsTools.Core/QtVSIPSettings.cs
index bbd3a45..7eb4146 100644
--- a/QtVsTools.Core/QtVSIPSettings.cs
+++ b/QtVsTools.Core/QtVSIPSettings.cs
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt VS Tools.
@@ -26,11 +26,9 @@
**
****************************************************************************/
+using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.VCProjectEngine;
-using Microsoft.Win32;
-using QtVsTools.Core.QtMsBuild;
-using System;
-using System.Collections;
+using QtVsTools.Common;
namespace QtVsTools.Core
{
@@ -46,41 +44,26 @@
{
public static IQtVsToolsOptions Options { get; set; }
- static Hashtable mocDirCache = new Hashtable();
- static Hashtable uicDirCache = new Hashtable();
- static Hashtable rccDirCache = new Hashtable();
-
public static bool GetDisableAutoMocStepsUpdate()
{
- return GetBoolValue(Resources.disableAutoMocStepsUpdateKeyword, false);
- }
-
- public static void SaveDisableAutoMocStepsUpdate(bool b)
- {
- SetBoolValue(Resources.disableAutoMocStepsUpdateKeyword, b);
+ return QtVSIPSettingsShared.GetBoolValue(Resources.disableAutoMocStepsUpdateKeyword, false);
}
public static string GetUicDirectory(EnvDTE.Project project)
{
- return GetDirectory(project, Resources.uicDirKeyword);
- }
-
- public static void SaveUicDirectory(EnvDTE.Project project, string directory)
- {
- if (directory == null)
- SaveDirectory(project, Resources.uicDirKeyword, GetDirectory(project, Resources.uicDirKeyword));
- else
- SaveDirectory(project, Resources.uicDirKeyword, directory);
+ ThreadHelper.ThrowIfNotOnUIThread();
+ return QtVSIPSettingsShared.GetDirectory(project, Resources.uicDirKeyword);
}
public static string GetMocDirectory()
{
- return GetDirectory(Resources.mocDirKeyword);
+ return QtVSIPSettingsShared.GetDirectory(Resources.mocDirKeyword);
}
public static string GetMocDirectory(EnvDTE.Project project)
{
- return GetDirectory(project, Resources.mocDirKeyword);
+ ThreadHelper.ThrowIfNotOnUIThread();
+ return QtVSIPSettingsShared.GetDirectory(project, Resources.mocDirKeyword);
}
public static string GetMocDirectory(
@@ -88,6 +71,8 @@
string configName,
string platformName, VCFile vCFile)
{
+ ThreadHelper.ThrowIfNotOnUIThread();
+
string filePath = null;
if (vCFile != null)
filePath = vCFile.FullPath;
@@ -100,7 +85,9 @@
string platformName,
string filePath = null)
{
- var dir = GetDirectory(project, Resources.mocDirKeyword);
+ ThreadHelper.ThrowIfNotOnUIThread();
+
+ var dir = QtVSIPSettingsShared.GetDirectory(project, Resources.mocDirKeyword);
if (!string.IsNullOrEmpty(configName)
&& !string.IsNullOrEmpty(platformName))
HelperFunctions.ExpandString(ref dir, project, configName, platformName, filePath);
@@ -109,458 +96,56 @@
public static bool HasDifferentMocFilePerConfig(EnvDTE.Project project)
{
+ ThreadHelper.ThrowIfNotOnUIThread();
+
var mocDir = GetMocDirectory(project);
return mocDir.Contains("$(ConfigurationName)");
}
public static bool HasDifferentMocFilePerPlatform(EnvDTE.Project project)
{
+ ThreadHelper.ThrowIfNotOnUIThread();
+
var mocDir = GetMocDirectory(project);
return mocDir.Contains("$(PlatformName)");
}
- public static string GetMocOptions()
- {
- return GetOption(Resources.mocOptionsKeyword);
- }
-
public static string GetMocOptions(EnvDTE.Project project)
{
- return GetOption(project, Resources.mocOptionsKeyword);
+ ThreadHelper.ThrowIfNotOnUIThread();
+ return QtVSIPSettingsShared.GetOption(project, Resources.mocOptionsKeyword);
}
public static bool GetLUpdateOnBuild(EnvDTE.Project project)
{
- if (GetProjectQtSetting(project, "QtRunLUpdateOnBuild") == "true")
+ ThreadHelper.ThrowIfNotOnUIThread();
+
+ if (QtVSIPSettingsShared.GetProjectQtSetting(project, "QtRunLUpdateOnBuild") == "true")
return true;
- return GetBoolValue(project, Resources.lupdateKeyword);
- }
-
- public static string GetLUpdateOptions()
- {
- return GetOption(Resources.lupdateOptionsKeyword);
- }
-
- static string GetProjectQtSetting(EnvDTE.Project project, string propertyName)
- {
- var vcProject = project.Object as VCProject;
- if (vcProject == null)
- return null;
-
- var vcConfigs = vcProject.Configurations as IVCCollection;
- if (vcConfigs == null)
- return null;
-
- var activeConfig = project.ConfigurationManager.ActiveConfiguration;
- if (activeConfig == null)
- return null;
-
- var activeConfigId = string.Format("{0}|{1}",
- activeConfig.ConfigurationName, activeConfig.PlatformName);
-
- var props = vcProject as IVCBuildPropertyStorage;
- if (props == null)
- return null;
-
- try {
- return props.GetPropertyValue(propertyName, activeConfigId, "ProjectFile");
- } catch {
- return null;
- }
- }
-
- public static string GetLUpdateOptions(EnvDTE.Project project)
- {
- string qtLUpdateOptions = GetProjectQtSetting(project, "QtLUpdateOptions");
- if (!string.IsNullOrEmpty(qtLUpdateOptions))
- return qtLUpdateOptions;
- return GetOption(project, Resources.lupdateOptionsKeyword);
- }
-
- public static string GetLReleaseOptions()
- {
- return GetOption(Resources.lreleaseOptionsKeyword);
- }
-
- public static string GetLReleaseOptions(EnvDTE.Project project)
- {
- string qtLReleaseOptions = GetProjectQtSetting(project, "QtLReleaseOptions");
- if (!string.IsNullOrEmpty(qtLReleaseOptions))
- return qtLReleaseOptions;
- return GetOption(project, Resources.lreleaseOptionsKeyword);
- }
-
- public static bool GetAskBeforeCheckoutFile()
- {
- return GetBoolValue(Resources.askBeforeCheckoutFileKeyword, true);
- }
-
- public static void SaveAskBeforeCheckoutFile(bool value)
- {
- SetBoolValue(Resources.askBeforeCheckoutFileKeyword, value);
- }
-
- public static bool GetDisableCheckoutFiles()
- {
- return GetBoolValue(Resources.disableCheckoutFilesKeyword, false);
- }
-
- public static void SaveDisableCheckoutFiles(bool value)
- {
- SetBoolValue(Resources.disableCheckoutFilesKeyword, value);
- }
-
- public static void SaveMocDirectory(EnvDTE.Project project, string directory)
- {
- if (directory == null)
- SaveDirectory(project, Resources.mocDirKeyword, GetDirectory(project, Resources.mocDirKeyword));
- else
- SaveDirectory(project, Resources.mocDirKeyword, directory);
- }
-
- public static void SaveMocOptions(EnvDTE.Project project, string options)
- {
- if (options == null)
- options = GetMocOptions();
- SaveOption(project, Resources.mocOptionsKeyword, options);
- }
-
- public static void SaveMocOptions(string options)
- {
- SaveOption(Resources.mocOptionsKeyword, options);
- }
-
- public static void SaveLUpdateOnBuild(EnvDTE.Project project)
- {
- SetBoolValue(project, Resources.lupdateKeyword, GetLUpdateOnBuild());
- }
-
- public static void SaveLUpdateOnBuild(EnvDTE.Project project, bool value)
- {
- SetBoolValue(project, Resources.lupdateKeyword, value);
- }
-
- public static void SaveLUpdateOptions(EnvDTE.Project project, string options)
- {
- if (options == null)
- options = GetLUpdateOptions();
-
- SaveOption(project, Resources.lupdateOptionsKeyword, options);
- }
-
- public static void SaveLUpdateOptions(string options)
- {
- SaveOption(Resources.lupdateOptionsKeyword, options);
- }
-
- public static void SaveLReleaseOptions(EnvDTE.Project project, string options)
- {
- if (options == null)
- options = GetLReleaseOptions();
- SaveOption(project, Resources.lreleaseOptionsKeyword, options);
- }
-
- public static void SaveLReleaseOptions(string options)
- {
- SaveOption(Resources.lreleaseOptionsKeyword, options);
+ return QtVSIPSettingsShared.GetBoolValue(project, Resources.lupdateKeyword);
}
public static string GetRccDirectory(EnvDTE.Project project)
{
- return GetDirectory(project, Resources.rccDirKeyword);
- }
-
- public static void SaveRccDirectory(string dir)
- {
- SaveDirectory(Resources.rccDirKeyword, dir);
- }
-
- public static void SaveRccDirectory(EnvDTE.Project project, string directory)
- {
- if (directory == null)
- SaveDirectory(project, Resources.rccDirKeyword, GetDirectory(project, Resources.rccDirKeyword));
- else
- SaveDirectory(project, Resources.rccDirKeyword, directory);
- }
-
- private static string GetDirectory(string type)
- {
- try {
- var key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (key != null) {
- var path = (string)key.GetValue(type, null);
- if (path != null)
- return HelperFunctions.NormalizeRelativeFilePath(path);
- }
- } catch { }
- if (type == Resources.mocDirKeyword)
- return Resources.generatedFilesDir + "\\$(ConfigurationName)";
- return Resources.generatedFilesDir;
- }
-
- private static string GetOption(string type)
- {
- try {
- var key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (key != null) {
- var opt = (string)key.GetValue(type, null);
- if (opt != null)
- return opt;
- }
- } catch { }
- return null;
- }
-
- public static bool GetLUpdateOnBuild()
- {
- return GetBoolValue(Resources.lupdateKeyword, false);
+ ThreadHelper.ThrowIfNotOnUIThread();
+ return QtVSIPSettingsShared.GetDirectory(project, Resources.rccDirKeyword);
}
public static string GetRccDirectory()
{
- return GetDirectory(Resources.rccDirKeyword);
+ return QtVSIPSettingsShared.GetDirectory(Resources.rccDirKeyword);
}
public static string GetUicDirectory()
{
- return GetDirectory(Resources.uicDirKeyword);
- }
-
- private static string GetDirectory(EnvDTE.Project project, string type)
- {
- // check for directory in following order:
- // - stored in project
- // - stored in cache
- // - retrieve from moc/uic steps
- // - globally defined default directory
- // - fallback on hardcoded directory
- if (project != null) {
- if (project.Globals.get_VariablePersists(type))
- return HelperFunctions.NormalizeRelativeFilePath((string)project.Globals[type]);
-
- try {
- if (type == Resources.mocDirKeyword && mocDirCache.Contains(project.FullName))
- return (string)mocDirCache[project.FullName];
- if (type == Resources.uicDirKeyword && uicDirCache.Contains(project.FullName))
- return (string)uicDirCache[project.FullName];
- if (type == Resources.rccDirKeyword && rccDirCache.Contains(project.FullName))
- return (string)rccDirCache[project.FullName];
-
- QtCustomBuildTool tool = null;
- string configName = null;
- string platformName = null;
- var vcpro = (VCProject)project.Object;
- foreach (VCFile vcfile in (IVCCollection)vcpro.Files) {
- var name = vcfile.Name;
- if ((type == Resources.mocDirKeyword && HelperFunctions.IsHeaderFile(name))
- || (type == Resources.mocDirKeyword && HelperFunctions.IsMocFile(name))
- || (type == Resources.uicDirKeyword && HelperFunctions.IsUicFile(name))
- || (type == Resources.rccDirKeyword && HelperFunctions.IsQrcFile(name))) {
- foreach (VCFileConfiguration config in (IVCCollection)vcfile.FileConfigurations) {
- tool = new QtCustomBuildTool(config);
- configName = config.Name.Remove(config.Name.IndexOf('|'));
- var vcConfig = config.ProjectConfiguration as VCConfiguration;
- var platform = vcConfig.Platform as VCPlatform;
- platformName = platform.Name;
- if (tool != null && (tool.CommandLine.IndexOf("moc.exe", StringComparison.OrdinalIgnoreCase) != -1
- || (tool.CommandLine.IndexOf("uic.exe", StringComparison.OrdinalIgnoreCase) != -1)
- || (tool.CommandLine.IndexOf("rcc.exe", StringComparison.OrdinalIgnoreCase) != -1)))
- break;
- tool = null;
- }
-
- if (tool != null)
- break;
- }
- }
-
- if (tool != null) {
- string dir = null;
- var lastindex = tool.Outputs.LastIndexOf('\\');
- if (tool.Outputs.LastIndexOf('/') > lastindex)
- lastindex = tool.Outputs.LastIndexOf('/');
-
- if (lastindex == -1)
- dir = ".";
- else
- dir = tool.Outputs.Substring(0, lastindex);
- dir = dir.Replace("\"", "");
-
- if (type == Resources.mocDirKeyword) {
- int index;
- if ((index = dir.IndexOf(configName, StringComparison.OrdinalIgnoreCase)) != -1)
- dir = dir.Replace(dir.Substring(index, configName.Length), "$(ConfigurationName)");
- if ((index = dir.IndexOf(platformName, StringComparison.OrdinalIgnoreCase)) != -1)
- dir = dir.Replace(dir.Substring(index, platformName.Length), "$(PlatformName)");
-
- mocDirCache.Add(project.FullName, HelperFunctions.NormalizeRelativeFilePath(dir));
- } else if (type == Resources.uicDirKeyword)
- uicDirCache.Add(project.FullName, HelperFunctions.NormalizeRelativeFilePath(dir));
- else if (type == Resources.rccDirKeyword)
- rccDirCache.Add(project.FullName, HelperFunctions.NormalizeRelativeFilePath(dir));
-
- cleanUpCache(project);
-
- return HelperFunctions.NormalizeRelativeFilePath(dir);
- }
- } catch { }
- }
-
- return GetDirectory(type);
- }
-
- private static string GetOption(EnvDTE.Project project, string type)
- {
- // check for directory in following order:
- // - stored in project
- // - globally defined default option
- // - empty options
- if (project != null && project.Globals.get_VariablePersists(type))
- return (string)project.Globals[type];
- return GetOption(type);
- }
-
- private static bool GetBoolValue(EnvDTE.Project project, string type)
- {
- // check for directory in following order:
- // - stored in project
- // - globally defined default option
- // - empty options
- if (project != null && project.Globals.get_VariablePersists(type))
- return Convert.ToInt32(project.Globals[type] as string) > 0;
- return GetBoolValue(type, false);
- }
-
- private static void SaveDirectory(EnvDTE.Project project, string type, string dir)
- {
- dir = HelperFunctions.NormalizeRelativeFilePath(dir);
- project.Globals[type] = dir;
- if (!project.Globals.get_VariablePersists(type))
- project.Globals.set_VariablePersists(type, true);
-
- cleanUpCache(project);
- }
-
- private static void SaveOption(EnvDTE.Project project, string type, string option)
- {
- project.Globals[type] = option;
- if (!project.Globals.get_VariablePersists(type))
- project.Globals.set_VariablePersists(type, true);
- }
-
- private static void SetBoolValue(EnvDTE.Project project, string type, bool value)
- {
- project.Globals[type] = Convert.ToInt32(value).ToString();
- if (!project.Globals.get_VariablePersists(type))
- project.Globals.set_VariablePersists(type, true);
- }
-
- public static void SaveUicDirectory(string dir)
- {
- SaveDirectory(Resources.uicDirKeyword, dir);
- }
-
- public static void SaveMocDirectory(string dir)
- {
- SaveDirectory(Resources.mocDirKeyword, dir);
- }
-
- public static void SaveLUpdateOnBuild(bool val)
- {
- SetBoolValue(Resources.lupdateKeyword, val);
- }
-
- public static void cleanUpCache(EnvDTE.Project project)
- {
- try {
- var mocEnumerator = mocDirCache.GetEnumerator();
- while (mocEnumerator.MoveNext()) {
- if (!HelperFunctions.IsProjectInSolution(project.DTE, (string)mocEnumerator.Key)) {
- mocDirCache.Remove(mocEnumerator.Key);
- mocEnumerator = mocDirCache.GetEnumerator();
- }
- }
-
- var uicEnumerator = uicDirCache.GetEnumerator();
- while (uicEnumerator.MoveNext()) {
- if (!HelperFunctions.IsProjectInSolution(project.DTE, (string)uicEnumerator.Key)) {
- uicDirCache.Remove(uicEnumerator.Key);
- uicEnumerator = uicDirCache.GetEnumerator();
- }
- }
-
- var rccEnumerator = rccDirCache.GetEnumerator();
- while (rccEnumerator.MoveNext()) {
- if (!HelperFunctions.IsProjectInSolution(project.DTE, (string)rccEnumerator.Key)) {
- rccDirCache.Remove(rccEnumerator.Key);
- rccEnumerator = rccDirCache.GetEnumerator();
- }
- }
- } catch { }
- }
-
- private static void SaveDirectory(string type, string dir)
- {
- dir = HelperFunctions.NormalizeRelativeFilePath(dir);
- var key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (key == null)
- return;
- key.SetValue(type, dir);
- }
-
- private static void SaveOption(string type, string option)
- {
- var key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (key == null)
- return;
- if (option == null)
- option = "";
- key.SetValue(type, option);
+ return QtVSIPSettingsShared.GetDirectory(Resources.uicDirKeyword);
}
public static bool AutoUpdateUicSteps()
{
- if (ValueExists("AutoUpdateUicSteps"))
- return GetBoolValue("AutoUpdateUicSteps", true);
- return GetBoolValue("AutoUpdateBuildSteps", true);
- }
-
- private static bool GetBoolValue(string key, bool defaultValue)
- {
- var regKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (regKey == null)
- return defaultValue;
- return ((int)regKey.GetValue(key, defaultValue ? 1 : 0)) > 0;
- }
-
- private static bool ValueExists(string key)
- {
- var regKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (regKey != null) {
- foreach (var s in regKey.GetValueNames()) {
- if (s == key)
- return true;
- }
- }
- return false;
- }
-
- private static void SetBoolValue(string key, bool val)
- {
- var regKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\" + Resources.registryPackagePath);
- if (regKey == null)
- return;
- regKey.SetValue(key, val ? 1 : 0);
- }
-
- public static bool GetQmlDebug(EnvDTE.Project project)
- {
- return QtProject.Create(project).QmlDebug;
- }
-
- public static void SaveQmlDebug(EnvDTE.Project project, bool enabled)
- {
- QtProject.Create(project).QmlDebug = enabled;
+ if (QtVSIPSettingsShared.ValueExists("AutoUpdateUicSteps"))
+ return QtVSIPSettingsShared.GetBoolValue("AutoUpdateUicSteps", true);
+ return QtVSIPSettingsShared.GetBoolValue("AutoUpdateBuildSteps", true);
}
}
}
--
Gitblit v1.9.1