Example #1
0
 public override void ResetSettings()
 {
     SettingsHandler.CopySettingsProperties(SettingsProvider.ClangFormatSettings, new ClangFormatOptionsView());
     SaveSettingsToStorage();
     LoadSettingsFromStorage();
 }
        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // Switches to the UI thread in order to consume some services used in command initialization
            await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            await RegisterVsServicesAsync();

            mCommandController = new CommandController(this);
            CommandTestUtility.CommandController = mCommandController;

            var vsOutputWindow = VsServiceProvider.GetService(typeof(SVsOutputWindow)) as IVsOutputWindow;

            mOutputWindowController = new OutputWindowController();
            mOutputWindowController.Initialize(this, vsOutputWindow);

            mRunningDocTableEvents = new RunningDocTableEvents(this);
            mErrorWindowController = new ErrorWindowController(this);

            #region Get Pointer to IVsSolutionEvents

            if (VsServiceProvider.TryGetService(typeof(SVsSolution), out object vsSolutionService))
            {
                var vsSolution = vsSolutionService as IVsSolution;
                UnadviseSolutionEvents(vsSolution);
                AdviseSolutionEvents(vsSolution);
            }

            #endregion

            // Get the build and command events from DTE
            if (VsServiceProvider.TryGetService(typeof(DTE), out object dte))
            {
                var dte2 = dte as DTE2;
                mBuildEvents   = dte2.Events.BuildEvents;
                mCommandEvents = dte2.Events.CommandEvents;
                mDteEvents     = dte2.Events.DTEEvents;
            }

            DispatcherHandler.Initialize(dte as DTE2);
            SettingsProvider.Initialize(this);

            // Detect the first install
            if (string.IsNullOrWhiteSpace(SettingsProvider.GeneralSettings.Version))
            {
                ShowToolbare(); // Show the toolbar on the first install
            }
            if (string.IsNullOrWhiteSpace(SettingsProvider.GeneralSettings.Version) ||
                0 > string.Compare(SettingsProvider.GeneralSettings.Version, "5.0.0"))
            {
                System.Diagnostics.Process.Start(new ProcessStartInfo("https://clangpowertools.com/blog/future-of-clang-power-tools.html"));
            }

            var currentVersion = PackageUtility.GetVersion();
            if (!string.IsNullOrWhiteSpace(currentVersion) &&
                0 > string.Compare(SettingsProvider.GeneralSettings.Version, currentVersion))
            {
                mOutputWindowController.Clear();
                mOutputWindowController.Show();
                mOutputWindowController.Write($"🎉\tClang Power Tools was upgraded to v{currentVersion}\n" +
                                              $"\tCheck out what's new at http://www.clangpowertools.com/CHANGELOG");

                SettingsProvider.GeneralSettings.Version = currentVersion;
            }

            SettingsHandler.SaveGeneralSettings();

            await mCommandController.InitializeCommandsAsync(this);

            mLicenseController = new LicenseController();

            RegisterToEvents();
            await mLicenseController.CheckLicenseAsync();

            await base.InitializeAsync(cancellationToken, progress);
        }
Example #3
0
 public override void ResetSettings()
 {
     SettingsHandler.CopySettingsProperties(SettingsProvider.TidyCustomCheckes, new ClangTidyCustomChecksOptionsView());
     SaveSettingsToStorage();
     LoadSettingsFromStorage();
 }