forked from chuongmep/CadPythonShell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAppContextMenu.cs
More file actions
101 lines (88 loc) · 3.6 KB
/
AppContextMenu.cs
File metadata and controls
101 lines (88 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//
// (C) Copyright 2004 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Windows;
using System;
namespace MgdDbg.App
{
/// <summary>
/// Simple derived MenuItem class to keep a command name so that we can have
/// a single generic callback function for the event.
/// </summary>
public class AppContextMenuItem : Autodesk.AutoCAD.Windows.MenuItem
{
private string m_cmdName;
public
AppContextMenuItem(string title, string cmdName)
: base(title)
{
m_cmdName = cmdName;
}
public string
CommandName
{
get { return m_cmdName; }
set { m_cmdName = value; }
}
}
/// <summary>
/// The AppContextMenu for our app.
/// </summary>
public class AppContextMenu
{
private static ContextMenuExtension m_appMenu = null;
public static void
AddContextMenu()
{
m_appMenu = new ContextMenuExtension();
m_appMenu.Title = "MgdDbg";
m_appMenu.MenuItems.Add(new AppContextMenuItem("Snoop Entities...", "SnoopEnts"));
m_appMenu.MenuItems.Add(new AppContextMenuItem("Snoop Entities (nested)...", "SnoopNEnts"));
m_appMenu.MenuItems.Add(new AppContextMenuItem("Snoop (by Handle)...", "SnoopByHandle"));
m_appMenu.MenuItems.Add(new AppContextMenuItem("Snoop Database...", "SnoopDB"));
m_appMenu.MenuItems.Add(new AppContextMenuItem("Snoop Editor...", "SnoopEd"));
m_appMenu.MenuItems.Add(new MenuItem("")); // separator
m_appMenu.MenuItems.Add(new AppContextMenuItem("Events...", "SnoopEvents"));
m_appMenu.MenuItems.Add(new MenuItem("")); // separator
m_appMenu.MenuItems.Add(new AppContextMenuItem("Test Framework...", "SnoopTests"));
foreach (MenuItem mnuItem in m_appMenu.MenuItems)
{
AppContextMenuItem appContextMnuItem = mnuItem as AppContextMenuItem;
if (appContextMnuItem != null)
appContextMnuItem.Click += new EventHandler(ExecuteCommand);
}
Application.AddDefaultContextMenuExtension(m_appMenu);
}
private static void
ExecuteCommand(Object o, EventArgs e)
{
AppContextMenuItem mnuItem = (AppContextMenuItem)o;
string fullCmdLine = string.Format("_{0}\n", mnuItem.CommandName);
Application.DocumentManager.MdiActiveDocument.SendStringToExecute(fullCmdLine, false, false, true);
}
public static void
RemoveContextMenu()
{
Application.RemoveDefaultContextMenuExtension(m_appMenu);
}
}
}