public int OnAfterOpenSolution(object aPUnkReserved, int aFNewSolution) { try { mCommandsController = new CommandsController(this, mDte); InitializeCommands(); StatusBarHandler.Initialize(this); ErrorManager.Initialize(this); var generalOptions = (ClangGeneralOptionsView)this.GetDialogPage(typeof(ClangGeneralOptionsView)); var currentVersion = GetPackageVersion(); if (0 != string.Compare(generalOptions.Version, currentVersion)) { OutputManager outputManager = new OutputManager(mDte); outputManager.Show(); outputManager.AddMessage($"🎉\tClang Power Tools was upgraded to v{currentVersion}\n" + $"\tCheck out what's new at http://www.clangpowertools.com/CHANGELOG"); generalOptions.Version = currentVersion; generalOptions.SaveSettingsToStorage(); } mBuildEvents.OnBuildBegin += ErrorManager.Instance.OnBuildBegin; mBuildEvents.OnBuildBegin += mCommandsController.OnBuildBegin; mBuildEvents.OnBuildDone += mCommandsController.OnBuildDone; mBuildEvents.OnBuildDone += mCompileCmd.OnBuildDone; mCommandEvents.BeforeExecute += mCompileCmd.CommandEventsBeforeExecute; mCommandEvents.BeforeExecute += mTidyCmd.CommandEventsBeforeExecute; mRunningDocTableEvents.BeforeSave += mTidyCmd.OnBeforeSave; mRunningDocTableEvents.BeforeSave += mClangFormatCmd.OnBeforeSave; } catch (Exception) { } return(VSConstants.S_OK); }
protected void RunScript(string aCommandName, TidyOptions mTidyOptions = null, TidyChecks mTidyChecks = null) { mScriptBuilder = new ScriptBuiler(); mScriptBuilder.ConstructParameters(mGeneralOptions, mTidyOptions, mTidyChecks, DTEObj, VsEdition, VsVersion); string solutionPath = DTEObj.Solution.FullName; mOutputManager = new OutputManager(DTEObj); InitPowerShell(); ClearWindows(aCommandName); mOutputManager.AddMessage($"\n{OutputWindowConstants.kStart} {aCommandName}\n"); foreach (var item in mItemsCollector.GetItems) { var script = mScriptBuilder.GetScript(item, solutionPath); if (!mCommandsController.Running) { break; } var process = mPowerShell.Invoke(script); mRunningProcesses.Add(process); if (mOutputManager.MissingLlvm) { mOutputManager.AddMessage(ErrorParserConstants.kMissingLlvmMessage); break; } } if (!mOutputManager.EmptyBuffer) { mOutputManager.AddMessage(String.Join("\n", mOutputManager.Buffer)); } if (!mOutputManager.MissingLlvm) { mOutputManager.Show(); mOutputManager.AddMessage($"\n{OutputWindowConstants.kDone} {aCommandName}\n"); } if (mOutputManager.HasErrors) { mErrorsManager.AddErrors(mOutputManager.Errors); } }
public int OnAfterOpenSolution(object pUnkReserved, int fNewSolution) { //Load the rest of the commands when a solution is loaded if (null == mTidyCmd) { mTidyCmd = new TidyCommand(this, CommandSet, CommandIds.kTidyId); } if (null == mCompileCmd) { mCompileCmd = new CompileCommand(this, CommandSet, CommandIds.kCompileId); } if (null == mStopClang) { mStopClang = new StopClang(this, CommandSet, CommandIds.kStopClang); } var generalOptions = (GeneralOptions)this.GetDialogPage(typeof(GeneralOptions)); var currentVersion = GetPackageVersion(); if (0 != string.Compare(generalOptions.Version, currentVersion)) { var dte = GetService(typeof(DTE)) as DTE2; OutputManager outputManager = new OutputManager(dte); outputManager.Show(); outputManager.AddMessage($"🎉\tClang Power Tools was upgraded to v{currentVersion}\n" + $"\tCheck out what's new at http://www.clangpowertools.com/CHANGELOG"); generalOptions.Version = currentVersion; generalOptions.SaveSettingsToStorage(); } return(VSConstants.S_OK); }
/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { //mCommandsController.Running = true; System.Threading.Tasks.Task.Run(() => { GeneralOptions generalOptions = (GeneralOptions)mPackage.GetDialogPage(typeof(GeneralOptions)); TidyOptions tidyPage = (TidyOptions)mPackage.GetDialogPage(typeof(TidyOptions)); ScriptBuiler scriptBuilder = new ScriptBuiler(); scriptBuilder.ConstructParameters(generalOptions, tidyPage, mVsEdition, mVsVersion); mItemsCollector = new ItemsCollector(mPackage); mItemsCollector.CollectSelectedFiles(mDte); mOutputManager = new OutputManager(mDte); PowerShellWrapper powerShell = new PowerShellWrapper(); powerShell.DataHandler += mOutputManager.OutputDataReceived; powerShell.DataErrorHandler += mOutputManager.OutputDataErrorReceived; mFileWatcher = new FileChangerWatcher(); try { mDte.Documents.SaveAll(); if (kVs15Version == mVsVersion) { Vs15SolutionLoader solutionLoader = new Vs15SolutionLoader(mPackage); solutionLoader.EnsureSolutionProjectsAreLoaded(); } using (var guard = new SilentFileChangerGuard()) { if (tidyPage.Fix) { WatchFiles(); SilentFiles(guard); } mOutputManager.Clear(); mOutputManager.Show(); mOutputManager.AddMessage($"\n{OutputWindowConstants.kStart} {OutputWindowConstants.kTidyCodeCommand}\n"); foreach (var item in mItemsCollector.GetItems) { string script = scriptBuilder.GetScript(item.Item1, item.Item1.GetName()); powerShell.Invoke(script); if (mOutputManager.MissingLlvm) { mOutputManager.AddMessage(ErrorParserConstants.kMissingLlvmMessage); break; } } if (!mOutputManager.EmptyBuffer) { mOutputManager.AddMessage(String.Join("\n", mOutputManager.Buffer)); } if (!mOutputManager.MissingLlvm) { mOutputManager.Show(); mOutputManager.AddMessage($"\n{OutputWindowConstants.kDone} {OutputWindowConstants.kTidyCodeCommand}\n"); } if (mOutputManager.HasErrors) { mErrorsManager.AddErrors(mOutputManager.Errors); } } } catch (Exception exception) { VsShellUtilities.ShowMessageBox(mPackage, exception.Message, "Error", OLEMSGICON.OLEMSGICON_CRITICAL, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); } });//.ContinueWith(tsk => mCommandsController.AfterExecute()); ; }