summaryrefslogtreecommitdiff
path: root/Source/DafnyMenu/DafnyMenuPackage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Source/DafnyMenu/DafnyMenuPackage.cs')
-rw-r--r--Source/DafnyMenu/DafnyMenuPackage.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/Source/DafnyMenu/DafnyMenuPackage.cs b/Source/DafnyMenu/DafnyMenuPackage.cs
index c0784955..3362f2b3 100644
--- a/Source/DafnyMenu/DafnyMenuPackage.cs
+++ b/Source/DafnyMenu/DafnyMenuPackage.cs
@@ -36,6 +36,8 @@ namespace DafnyLanguage.DafnyMenu
private OleMenuCommand compileCommand;
private OleMenuCommand menuCommand;
+ private OleMenuCommand runVerifierCommand;
+ private OleMenuCommand stopVerifierCommand;
/// <summary>
/// Default constructor of the package.
@@ -72,6 +74,18 @@ namespace DafnyLanguage.DafnyMenu
compileCommand.BeforeQueryStatus += compileCommand_BeforeQueryStatus;
mcs.AddCommand(compileCommand);
+ var runVerifierCommandID = new CommandID(GuidList.guidDafnyMenuCmdSet, (int)PkgCmdIDList.cmdidRunVerifier);
+ runVerifierCommand = new OleMenuCommand(RunVerifierCallback, runVerifierCommandID);
+ runVerifierCommand.Enabled = true;
+ runVerifierCommand.BeforeQueryStatus += runVerifierCommand_BeforeQueryStatus;
+ mcs.AddCommand(runVerifierCommand);
+
+ var stopVerifierCommandID = new CommandID(GuidList.guidDafnyMenuCmdSet, (int)PkgCmdIDList.cmdidStopVerifier);
+ stopVerifierCommand = new OleMenuCommand(StopVerifierCallback, stopVerifierCommandID);
+ stopVerifierCommand.Enabled = true;
+ stopVerifierCommand.BeforeQueryStatus += stopVerifierCommand_BeforeQueryStatus;
+ mcs.AddCommand(stopVerifierCommand);
+
var menuCommandID = new CommandID(GuidList.guidDafnyMenuPkgSet, (int)PkgCmdIDList.cmdidMenu);
menuCommand = new OleMenuCommand(new EventHandler((sender, e) => { }), menuCommandID);
menuCommand.BeforeQueryStatus += menuCommand_BeforeQueryStatus;
@@ -81,6 +95,28 @@ namespace DafnyLanguage.DafnyMenu
}
}
+ private void StopVerifierCallback(object sender, EventArgs e)
+ {
+ var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
+ DafnyLanguage.ProgressTagger tagger;
+ DafnyLanguage.ProgressTagger.ProgressTaggers.TryGetValue(dte.ActiveDocument.FullName, out tagger);
+ if (tagger != null)
+ {
+ tagger.StopVerification();
+ }
+ }
+
+ private void RunVerifierCallback(object sender, EventArgs e)
+ {
+ var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
+ DafnyLanguage.ProgressTagger tagger;
+ DafnyLanguage.ProgressTagger.ProgressTaggers.TryGetValue(dte.ActiveDocument.FullName, out tagger);
+ if (tagger != null)
+ {
+ tagger.StartVerification();
+ }
+ }
+
void menuCommand_BeforeQueryStatus(object sender, EventArgs e)
{
var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
@@ -89,6 +125,24 @@ namespace DafnyLanguage.DafnyMenu
menuCommand.Enabled = isActive;
}
+ void runVerifierCommand_BeforeQueryStatus(object sender, EventArgs e)
+ {
+ var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
+ DafnyLanguage.ProgressTagger tagger;
+ DafnyLanguage.ProgressTagger.ProgressTaggers.TryGetValue(dte.ActiveDocument.FullName, out tagger);
+ runVerifierCommand.Visible = tagger != null && tagger.VerificationDisabled;
+ runVerifierCommand.Enabled = tagger != null && tagger.VerificationDisabled;
+ }
+
+ void stopVerifierCommand_BeforeQueryStatus(object sender, EventArgs e)
+ {
+ var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
+ DafnyLanguage.ProgressTagger tagger;
+ DafnyLanguage.ProgressTagger.ProgressTaggers.TryGetValue(dte.ActiveDocument.FullName, out tagger);
+ stopVerifierCommand.Visible = !(tagger != null && tagger.VerificationDisabled);
+ stopVerifierCommand.Enabled = !(tagger != null && tagger.VerificationDisabled);
+ }
+
void compileCommand_BeforeQueryStatus(object sender, EventArgs e)
{
var dte = GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;