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.Package/QtVsToolsPackage.cs | 82 ++++++++++++++++++++++++++---------------
1 files changed, 52 insertions(+), 30 deletions(-)
diff --git a/QtVsTools.Package/QtVsToolsPackage.cs b/QtVsTools.Package/QtVsToolsPackage.cs
index aad01be..93325f3 100644
--- a/QtVsTools.Package/QtVsToolsPackage.cs
+++ b/QtVsTools.Package/QtVsToolsPackage.cs
@@ -27,20 +27,14 @@
****************************************************************************/
using System;
-using System.ComponentModel.Design;
using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
-using Task = System.Threading.Tasks.Task;
-using System.Windows.Forms;
using Microsoft.VisualStudio;
-using Microsoft.VisualStudio.OLE.Interop;
using Microsoft.VisualStudio.Settings;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
@@ -49,13 +43,15 @@
using Microsoft.Win32;
using EnvDTE;
+using Task = System.Threading.Tasks.Task;
+
namespace QtVsTools
{
using Core;
using QtMsBuild;
- using SyntaxAnalysis;
- using static SyntaxAnalysis.RegExpr;
using VisualStudio;
+
+ using static SyntaxAnalysis.RegExpr;
[Guid(QtVsToolsPackage.PackageGuidString)]
[InstalledProductRegistration("#110", "#112", Version.PRODUCT_VERSION, IconResourceID = 400)]
@@ -97,7 +93,7 @@
"Qt", "Versions", 0, 0, true, Sort = 1)]
// Legacy options page
- [ProvideOptionPage(typeof(Options.QtLegacyOptionsPage),
+ [ProvideOptionPage(typeof(Legacy.QtOptionsPage),
"Qt", "Legacy Project Format", 0, 0, true, Sort = 2)]
public sealed class QtVsToolsPackage : AsyncPackage, IVsServiceProvider, IProjectTracker
@@ -109,13 +105,13 @@
public string PkgInstallPath { get; private set; }
public Options.QtOptionsPage Options
=> GetDialogPage(typeof(Options.QtOptionsPage)) as Options.QtOptionsPage;
- public Options.QtLegacyOptionsPage LegacyOptions
- => GetDialogPage(typeof(Options.QtLegacyOptionsPage)) as Options.QtLegacyOptionsPage;
+ public Legacy.QtOptionsPage LegacyOptions
+ => GetDialogPage(typeof(Legacy.QtOptionsPage)) as Legacy.QtOptionsPage;
public Editors.QtDesigner QtDesigner { get; private set; }
public Editors.QtLinguist QtLinguist { get; private set; }
- public Editors.QtResourceEditor QtResourceEditor { get; private set; }
+ private Editors.QtResourceEditor QtResourceEditor { get; set; }
- static EventWaitHandle initDone = new EventWaitHandle(false, EventResetMode.ManualReset);
+ static readonly EventWaitHandle initDone = new EventWaitHandle(false, EventResetMode.ManualReset);
static QtVsToolsPackage instance = null;
public static QtVsToolsPackage Instance
@@ -167,7 +163,6 @@
var timeInitBegin = initTimer.Elapsed;
VsServiceProvider.Instance = instance = this;
QtProject.ProjectTracker = this;
- Messages.JoinableTaskFactory = JoinableTaskFactory;
// determine the package installation directory
var uri = new Uri(System.Reflection.Assembly
@@ -180,7 +175,7 @@
await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
var timeUiThreadBegin = initTimer.Elapsed;
- if ((Dte = VsServiceProvider.GetService<DTE>()) == null)
+ if ((Dte = await VsServiceProvider.GetServiceAsync<DTE>()) == null)
throw new Exception("Unable to get service: DTE");
QtVSIPSettings.Options = Options;
@@ -188,14 +183,14 @@
eventHandler = new DteEventsHandler(Dte);
Qml.Debug.Launcher.Initialize();
- QtMainMenu.Initialize(this);
- QtSolutionContextMenu.Initialize(this);
- QtProjectContextMenu.Initialize(this);
- QtItemContextMenu.Initialize(this);
+ QtMainMenu.Initialize();
+ QtSolutionContextMenu.Initialize();
+ QtProjectContextMenu.Initialize();
+ QtItemContextMenu.Initialize();
RegisterEditorFactory(QtDesigner = new Editors.QtDesigner());
RegisterEditorFactory(QtLinguist = new Editors.QtLinguist());
RegisterEditorFactory(QtResourceEditor = new Editors.QtResourceEditor());
- QtHelp.Initialize(this);
+ QtHelp.Initialize();
if (!string.IsNullOrEmpty(VsShell.InstallRootDir))
HelperFunctions.VCPath = Path.Combine(VsShell.InstallRootDir, "VC");
@@ -209,9 +204,11 @@
var timeUiThreadEnd = initTimer.Elapsed;
var vm = QtVersionManager.The(initDone);
- var error = string.Empty;
- if (vm.HasInvalidVersions(out error))
+ if (vm.HasInvalidVersions(out string error, out bool defaultInvalid)) {
+ if (defaultInvalid)
+ vm.SetLatestQtVersionAsDefault();
Messages.Print(error);
+ }
///////////
// Install Qt/MSBuild files from package folder to standard location
@@ -306,9 +303,8 @@
================================================================",
urlDownloadQtIo, devRelease));
}
- } catch (Exception e) {
- Messages.Print(
- e.Message + "\r\n\r\nStacktrace:\r\n" + e.StackTrace);
+ } catch (Exception exception) {
+ exception.Log();
} finally {
initDone.Set();
initTimer.Stop();
@@ -326,11 +322,35 @@
eventHandler.SolutionEvents_Opened();
}
+ bool TestVersionInstalled()
+ {
+ bool newVersion = false;
+ string versionFile = Path.Combine(PkgInstallPath, "lastversion.txt");
+ if (File.Exists(versionFile)) {
+ string lastVersion = File.ReadAllText(versionFile);
+ newVersion = (lastVersion!= Version.PRODUCT_VERSION);
+ } else {
+ newVersion = true;
+ }
+ if (newVersion)
+ File.WriteAllText(versionFile, Version.PRODUCT_VERSION);
+ return newVersion;
+ }
+
+ public void VsMainWindowActivated()
+ {
+ if (QtVersionManager.The().GetVersions()?.Length == 0)
+ Notifications.NoQtVersion.Show();
+ if (Options.NotifyInstalled && TestVersionInstalled())
+ Notifications.NotifyInstall.Show();
+ }
+
protected override int QueryClose(out bool canClose)
{
- if (eventHandler != null) {
+ ThreadHelper.ThrowIfNotOnUIThread();
+
+ if (eventHandler != null)
eventHandler.Disconnect();
- }
return base.QueryClose(out canClose);
}
@@ -381,14 +401,15 @@
File.WriteAllText(Path.Combine(visualizersPath, natvisFile),
natvis, System.Text.Encoding.UTF8);
- } catch (Exception e) {
- Messages.Print(
- e.Message + "\r\n\r\nStacktrace:\r\n" + e.StackTrace);
+ } catch (Exception exception) {
+ exception.Log();
}
}
public string GetNatvisPath()
{
+ ThreadHelper.ThrowIfNotOnUIThread();
+
try {
using (var vsRootKey = Registry.CurrentUser.OpenSubKey(Dte.RegistryRoot)) {
if (vsRootKey.GetValue("VisualStudioLocation") is string vsLocation)
@@ -433,6 +454,7 @@
void IProjectTracker.AddProject(Project project)
{
+ ThreadHelper.ThrowIfNotOnUIThread();
QtProjectTracker.Add(project);
}
--
Gitblit v1.9.1