xref: /vim-8.2.3635/src/VisVim/Commands.h (revision 071d4279)
1 // Commands.h : header file
2 //
3 
4 #if !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_)
5 #define AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_
6 
7 #include "vsvtypes.h"
8 
9 class CCommands :
10 	public   CComDualImpl < ICommands,
11 				 &IID_ICommands,
12 				 &LIBID_VisVim >,
13 	public   CComObjectRoot,
14 	public   CComCoClass < CCommands,
15 				 &CLSID_Commands >
16 {
17     protected:
18 	IApplication * m_pApplication;
19 
20     public:
21 	CCommands ();
22 	~CCommands ();
23 	void SetApplicationObject (IApplication * m_pApplication);
GetApplicationObject()24 	IApplication *GetApplicationObject ()
25 	{
26 		return m_pApplication;
27 	}
28 	void UnadviseFromEvents ();
29 
30 	BEGIN_COM_MAP (CCommands)
COM_INTERFACE_ENTRY(IDispatch)31 	COM_INTERFACE_ENTRY (IDispatch)
32 	COM_INTERFACE_ENTRY (ICommands)
33 	END_COM_MAP ()
34 	DECLARE_NOT_AGGREGATABLE (CCommands)
35 
36     protected:
37 	// This class template is used as the base class for the Application
38 	// event handler object and the Debugger event handler object,
39 	// which are declared below.
40 	template < class IEvents,
41 		const IID * piidEvents,
42 		const GUID * plibid,
43 		class XEvents,
44 		const CLSID * pClsidEvents >
45 		class XEventHandler :
46 		public	      CComDualImpl < IEvents,
47 			      piidEvents,
48 			      plibid >,
49 		public	      CComObjectRoot,
50 		public	      CComCoClass < XEvents,
51 			      pClsidEvents >
52 	{
53 	    public:
54 		BEGIN_COM_MAP (XEvents)
55 		COM_INTERFACE_ENTRY (IDispatch)
56 		COM_INTERFACE_ENTRY_IID (*piidEvents, IEvents)
57 		END_COM_MAP ()
58 		DECLARE_NOT_AGGREGATABLE (XEvents)
59 		void Connect (IUnknown * pUnk)
60 		{
61 			VERIFY (SUCCEEDED (AtlAdvise (pUnk, this, *piidEvents,
62 						      &m_dwAdvise)));
63 		}
64 		void Disconnect (IUnknown * pUnk)
65 		{
66 			AtlUnadvise (pUnk, *piidEvents, m_dwAdvise);
67 		}
68 
69 		CCommands *m_pCommands;
70 
71 	    protected:
72 		DWORD m_dwAdvise;
73 	};
74 
75 	// This object handles events fired by the Application object
76 	class XApplicationEvents : public XEventHandler < IApplicationEvents,
77 			&IID_IApplicationEvents,
78 			&LIBID_VisVim,
79 			XApplicationEvents,
80 			&CLSID_ApplicationEvents >
81 	{
82 	    public:
83 		// IApplicationEvents methods
84 		STDMETHOD (BeforeBuildStart) (THIS);
85 		STDMETHOD (BuildFinish) (THIS_ long nNumErrors, long nNumWarnings);
86 		STDMETHOD (BeforeApplicationShutDown) (THIS);
87 		STDMETHOD (DocumentOpen) (THIS_ IDispatch * theDocument);
88 		STDMETHOD (BeforeDocumentClose) (THIS_ IDispatch * theDocument);
89 		STDMETHOD (DocumentSave) (THIS_ IDispatch * theDocument);
90 		STDMETHOD (NewDocument) (THIS_ IDispatch * theDocument);
91 		STDMETHOD (WindowActivate) (THIS_ IDispatch * theWindow);
92 		STDMETHOD (WindowDeactivate) (THIS_ IDispatch * theWindow);
93 		STDMETHOD (WorkspaceOpen) (THIS);
94 		STDMETHOD (WorkspaceClose) (THIS);
95 		STDMETHOD (NewWorkspace) (THIS);
96 	};
97 	typedef CComObject < XApplicationEvents > XApplicationEventsObj;
98 	XApplicationEventsObj *m_pApplicationEventsObj;
99 
100 	// This object handles events fired by the Application object
101 	class XDebuggerEvents : public XEventHandler < IDebuggerEvents,
102 			&IID_IDebuggerEvents,
103 			&LIBID_VisVim,
104 			XDebuggerEvents,
105 			&CLSID_DebuggerEvents >
106 	{
107 	    public:
108 		// IDebuggerEvents method
109 		STDMETHOD (BreakpointHit) (THIS_ IDispatch * pBreakpoint);
110 	};
111 	typedef CComObject < XDebuggerEvents > XDebuggerEventsObj;
112 	XDebuggerEventsObj *m_pDebuggerEventsObj;
113 
114     public:
115 	// ICommands methods
116 	STDMETHOD (VisVimDialog) (THIS);
117 	STDMETHOD (VisVimEnable) (THIS);
118 	STDMETHOD (VisVimDisable) (THIS);
119 	STDMETHOD (VisVimToggle) (THIS);
120 	STDMETHOD (VisVimLoad) (THIS);
121 };
122 
123 typedef CComObject < CCommands > CCommandsObj;
124 
125 //{{AFX_INSERT_LOCATION}}
126 
127 #endif // !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED)
128