mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using System;
|
|
using Microsoft.VisualStudio;
|
|
using Microsoft.VisualStudio.OLE.Interop;
|
|
using IServiceProvider = System.IServiceProvider;
|
|
|
|
namespace Cosmos.VS.DebugEngine.Commands
|
|
{
|
|
public delegate int DebugCommandExecute(uint nCmdExecOpt, IntPtr pvaIn, IntPtr pvaOut);
|
|
|
|
public class DebugCommandHandler
|
|
{
|
|
public DebugCommandHandler(IServiceProvider serviceProvider)
|
|
{
|
|
var launchCommand = new DebugLaunchCommand(serviceProvider);
|
|
OnDebugLaunch += launchCommand.Execute;
|
|
|
|
var logCommand = new DebugLogCommand(serviceProvider);
|
|
OnDebugLog += logCommand.Execute;
|
|
|
|
var execCommand = new DebugExecCommand(serviceProvider);
|
|
OnDebugExec += execCommand.Execute;
|
|
}
|
|
|
|
public event DebugCommandExecute OnDebugLaunch;
|
|
public event DebugCommandExecute OnDebugExec;
|
|
public event DebugCommandExecute OnDebugLog;
|
|
|
|
public int Execute(uint nCmdID, uint nCmdExecOpt, IntPtr pvaIn, IntPtr pvaOut)
|
|
{
|
|
switch (nCmdID)
|
|
{
|
|
case CmdIDList.DebugLaunchCmdID:
|
|
if (OnDebugLaunch != null)
|
|
{
|
|
return OnDebugLaunch(nCmdExecOpt, pvaIn, pvaOut);
|
|
}
|
|
break;
|
|
case CmdIDList.DebugExecCmdID:
|
|
if (OnDebugExec != null)
|
|
{
|
|
return OnDebugExec(nCmdExecOpt, pvaIn, pvaOut);
|
|
}
|
|
break;
|
|
case CmdIDList.DebugLogCmdID:
|
|
if (OnDebugLog != null)
|
|
{
|
|
return OnDebugLog(nCmdExecOpt, pvaIn, pvaOut);
|
|
}
|
|
break;
|
|
}
|
|
global::System.Diagnostics.Debug.Fail("Unknown command id");
|
|
return VSConstants.E_NOTIMPL;
|
|
}
|
|
|
|
public int Query(uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText)
|
|
{
|
|
switch (prgCmds[0].cmdID)
|
|
{
|
|
case CmdIDList.DebugLaunchCmdID:
|
|
case CmdIDList.DebugExecCmdID:
|
|
case CmdIDList.DebugLogCmdID:
|
|
prgCmds[0].cmdf |= (uint)(OLECMDF.OLECMDF_SUPPORTED | OLECMDF.OLECMDF_ENABLED | OLECMDF.OLECMDF_INVISIBLE);
|
|
return VSConstants.S_OK;
|
|
}
|
|
|
|
global::System.Diagnostics.Debug.Fail("Unknown command id");
|
|
return VSConstants.E_NOTIMPL;
|
|
}
|
|
}
|
|
}
|