Stroika Library 3.0d18
 
Loading...
Searching...
No Matches
UserConfigCommands.h
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#ifndef __UserConfigCommands_h__
5#define __UserConfigCommands_h__ 1
6
7#include "Stroika/Foundation/StroikaPreComp.h"
8
9#include <atlbase.h>
10#include <atlcom.h>
11
12#include "Stroika/Frameworks/Led/Platform/ATL.h"
13#include "Stroika/Frameworks/Led/TextInteractor.h"
14
15#include "ActiveLedItConfig.h"
16#include "Resource.h"
17
18#include "ActiveLedIt_h.h"
19
20using namespace Stroika::Foundation;
21using namespace Stroika::Frameworks;
22using namespace Stroika::Frameworks::Led;
23
24class UserCommandNameNumberRegistry {
25public:
26 static UserCommandNameNumberRegistry& Get ();
27
28private:
29 static UserCommandNameNumberRegistry* sThis;
30
31public:
32 UserCommandNameNumberRegistry ();
33
34public:
35 nonvirtual UINT Enter (const wstring& internalName);
36 nonvirtual bool Lookup (UINT cmdNum, wstring* internalName);
37 nonvirtual bool Lookup (const wstring& internalName, UINT* cmdNum);
38 nonvirtual wstring Lookup (UINT cmdNum);
39
40private:
41 map<wstring, UINT> fName2Num;
42 map<UINT, wstring> fNum2Name;
43 UINT fNextUserCmdNum;
44};
45
46struct BuiltinCmdSpec {
47 BuiltinCmdSpec (UINT cmdNum, const char* cmdName)
48 : fCmdNum (cmdNum)
49 , fCmdName (cmdName)
50 , fInternalCmdName (cmdName)
51 {
52 }
53 BuiltinCmdSpec (UINT cmdNum, const char* cmdName, const char* internalCmdName)
54 : fCmdNum (cmdNum)
55 , fCmdName (cmdName)
56 , fInternalCmdName (internalCmdName)
57 {
58 }
59
60 UINT fCmdNum;
61 const char* fCmdName;
62 const char* fInternalCmdName;
63};
64
65const BuiltinCmdSpec kCmd_Separator = BuiltinCmdSpec (0, "");
66const BuiltinCmdSpec kCmd_Undo = BuiltinCmdSpec (ID_EDIT_UNDO, "Undo");
67const BuiltinCmdSpec kCmd_Redo = BuiltinCmdSpec (ID_EDIT_REDO, "Redo");
68const BuiltinCmdSpec kCmd_Cut = BuiltinCmdSpec (ID_EDIT_CUT, "Cut");
69const BuiltinCmdSpec kCmd_Copy = BuiltinCmdSpec (ID_EDIT_COPY, "Copy");
70const BuiltinCmdSpec kCmd_Paste = BuiltinCmdSpec (ID_EDIT_PASTE, "Paste");
71const BuiltinCmdSpec kCmd_PasteText = BuiltinCmdSpec (kPasteFormatTextCmdID, "Paste Text");
72const BuiltinCmdSpec kCmd_Clear = BuiltinCmdSpec (ID_EDIT_CLEAR, "Clear");
73const BuiltinCmdSpec kCmd_SelectWord = BuiltinCmdSpec (kSelectWordCmd, "Select Word(s)");
74const BuiltinCmdSpec kCmd_SelectTextRow = BuiltinCmdSpec (kSelectTextRowCmd, "Select Text Row(s)");
75const BuiltinCmdSpec kCmd_SelectParagraph = BuiltinCmdSpec (kSelectParagraphCmd, "Select Paragraph(s)");
76const BuiltinCmdSpec kCmd_SelectTableIntraCellAll = BuiltinCmdSpec (kSelectTableIntraCellAllCmd, "Select All in Cell");
77const BuiltinCmdSpec kCmd_SelectTableCell = BuiltinCmdSpec (kSelectTableCellCmd, "Select Table Cell");
78const BuiltinCmdSpec kCmd_SelectTableRow = BuiltinCmdSpec (kSelectTableRowCmd, "Select Table Row(s)");
79const BuiltinCmdSpec kCmd_SelectTableColumn = BuiltinCmdSpec (kSelectTableColumnCmd, "Select Table Column(s)");
80const BuiltinCmdSpec kCmd_SelectTable = BuiltinCmdSpec (kSelectTableCmd, "Select Table");
81const BuiltinCmdSpec kCmd_SelectAll = BuiltinCmdSpec (ID_EDIT_SELECT_ALL, "Select All");
82const BuiltinCmdSpec kCmd_Find = BuiltinCmdSpec (kFindCmd, "Find...");
83const BuiltinCmdSpec kCmd_FindAgain = BuiltinCmdSpec (kFindAgainCmd, "Find Again");
84const BuiltinCmdSpec kCmd_EnterFindString = BuiltinCmdSpec (kEnterFindStringCmd, "Enter 'Find' String");
85const BuiltinCmdSpec kCmd_Replace = BuiltinCmdSpec (kReplaceCmd, "Replace...");
86const BuiltinCmdSpec kCmd_ReplaceAgain = BuiltinCmdSpec (kReplaceAgainCmd, "Replace Again");
87const BuiltinCmdSpec kCmd_CheckSpelling = BuiltinCmdSpec (kSpellCheckCmd, "Check Spelling...");
88const BuiltinCmdSpec kCmd_InsertTable = BuiltinCmdSpec (kInsertTableCmd, "Insert Table...");
89const BuiltinCmdSpec kCmd_InsertTableRowAbove = BuiltinCmdSpec (kInsertTableRowAboveCmd, "Insert Table Row Above");
90const BuiltinCmdSpec kCmd_InsertTableRowBelow = BuiltinCmdSpec (kInsertTableRowBelowCmd, "Insert Table Row Below");
91const BuiltinCmdSpec kCmd_InsertTableColBefore = BuiltinCmdSpec (kInsertTableColBeforeCmd, "Insert Table Column Before");
92const BuiltinCmdSpec kCmd_InsertTableColAfter = BuiltinCmdSpec (kInsertTableColAfterCmd, "Insert Table Column After");
93const BuiltinCmdSpec kCmd_InsertURL = BuiltinCmdSpec (kInsertURLCmd, "Insert URL...");
94const BuiltinCmdSpec kCmd_InsertSymbol = BuiltinCmdSpec (kInsertSymbolCmd, "Insert Symbol...");
95const BuiltinCmdSpec kCmd_RemoveTableRows = BuiltinCmdSpec (kRemoveTableRowsCmd, "Remove Rows");
96const BuiltinCmdSpec kCmd_RemoveTableColumns = BuiltinCmdSpec (kRemoveTableColumnsCmd, "Remove Columns");
97const BuiltinCmdSpec kCmd_FontStylePlain = BuiltinCmdSpec (kFontStylePlainCmd, "Plain");
98const BuiltinCmdSpec kCmd_FontStyleBold = BuiltinCmdSpec (kFontStyleBoldCmd, "Bold");
99const BuiltinCmdSpec kCmd_FontStyleItalic = BuiltinCmdSpec (kFontStyleItalicCmd, "Italic");
100const BuiltinCmdSpec kCmd_FontStyleUnderline = BuiltinCmdSpec (kFontStyleUnderlineCmd, "Underline");
101const BuiltinCmdSpec kCmd_FontStyleStrikeout = BuiltinCmdSpec (kFontStyleStrikeoutCmd, "Strikeout");
102const BuiltinCmdSpec kCmd_SubScript = BuiltinCmdSpec (kSubScriptCmd, "Subscript");
103const BuiltinCmdSpec kCmd_SuperScript = BuiltinCmdSpec (kSuperScriptCmd, "Superscript");
104const BuiltinCmdSpec kCmd_FontSize9 = BuiltinCmdSpec (kFontSize9Cmd, "9 pt");
105const BuiltinCmdSpec kCmd_FontSize10 = BuiltinCmdSpec (kFontSize10Cmd, "10 pt");
106const BuiltinCmdSpec kCmd_FontSize12 = BuiltinCmdSpec (kFontSize12Cmd, "12 pt");
107const BuiltinCmdSpec kCmd_FontSize14 = BuiltinCmdSpec (kFontSize14Cmd, "14 pt");
108const BuiltinCmdSpec kCmd_FontSize18 = BuiltinCmdSpec (kFontSize18Cmd, "18 pt");
109const BuiltinCmdSpec kCmd_FontSize24 = BuiltinCmdSpec (kFontSize24Cmd, "24 pt");
110const BuiltinCmdSpec kCmd_FontSize36 = BuiltinCmdSpec (kFontSize36Cmd, "36 pt");
111const BuiltinCmdSpec kCmd_FontSize48 = BuiltinCmdSpec (kFontSize48Cmd, "48 pt");
112const BuiltinCmdSpec kCmd_FontSize72 = BuiltinCmdSpec (kFontSize72Cmd, "72 pt");
113const BuiltinCmdSpec kCmd_FontSizeSmaller = BuiltinCmdSpec (kFontSizeSmallerCmd, "Smaller");
114const BuiltinCmdSpec kCmd_FontSizeLarger = BuiltinCmdSpec (kFontSizeLargerCmd, "Larger");
115const BuiltinCmdSpec kCmd_FontSizeOther = BuiltinCmdSpec (kFontSizeOtherCmd, "Other...", "FontSizeOther");
116const BuiltinCmdSpec kCmd_BlackColor = BuiltinCmdSpec (kBlackColorCmd, "Black");
117const BuiltinCmdSpec kCmd_MaroonColor = BuiltinCmdSpec (kMaroonColorCmd, "Maroon");
118const BuiltinCmdSpec kCmd_GreenColor = BuiltinCmdSpec (kGreenColorCmd, "Green");
119const BuiltinCmdSpec kCmd_OliveColor = BuiltinCmdSpec (kOliveColorCmd, "Olive");
120const BuiltinCmdSpec kCmd_NavyColor = BuiltinCmdSpec (kNavyColorCmd, "Navy");
121const BuiltinCmdSpec kCmd_PurpleColor = BuiltinCmdSpec (kPurpleColorCmd, "Purple");
122const BuiltinCmdSpec kCmd_TealColor = BuiltinCmdSpec (kTealColorCmd, "Teal");
123const BuiltinCmdSpec kCmd_GrayColor = BuiltinCmdSpec (kGrayColorCmd, "Gray");
124const BuiltinCmdSpec kCmd_SilverColor = BuiltinCmdSpec (kSilverColorCmd, "Silver");
125const BuiltinCmdSpec kCmd_RedColor = BuiltinCmdSpec (kRedColorCmd, "Red");
126const BuiltinCmdSpec kCmd_LimeColor = BuiltinCmdSpec (kLimeColorCmd, "Lime");
127const BuiltinCmdSpec kCmd_YellowColor = BuiltinCmdSpec (kYellowColorCmd, "Yellow");
128const BuiltinCmdSpec kCmd_BlueColor = BuiltinCmdSpec (kBlueColorCmd, "Blue");
129const BuiltinCmdSpec kCmd_FuchsiaColor = BuiltinCmdSpec (kFuchsiaColorCmd, "Fuchsia");
130const BuiltinCmdSpec kCmd_AquaColor = BuiltinCmdSpec (kAquaColorCmd, "Aqua");
131const BuiltinCmdSpec kCmd_WhiteColor = BuiltinCmdSpec (kWhiteColorCmd, "White");
132const BuiltinCmdSpec kCmd_OtherColor = BuiltinCmdSpec (kFontColorOtherCmd, "Other...", "FontColorOther");
133const BuiltinCmdSpec kCmd_ChooseFontDialog = BuiltinCmdSpec (kChooseFontDialogCmd, "Choose Font Dialog...");
134const BuiltinCmdSpec kCmd_JustifyLeft = BuiltinCmdSpec (kJustifyLeftCmd, "Left", "JustifyLeft");
135const BuiltinCmdSpec kCmd_JustifyCenter = BuiltinCmdSpec (kJustifyCenterCmd, "Center", "JustifyCenter");
136const BuiltinCmdSpec kCmd_JustifyRight = BuiltinCmdSpec (kJustifyRightCmd, "Right", "JustifyRight");
137const BuiltinCmdSpec kCmd_JustifyFull = BuiltinCmdSpec (kJustifyFullCmd, "Full", "JustifyFull");
138const BuiltinCmdSpec kCmd_ParagraphIndents = BuiltinCmdSpec (kParagraphIndentsCmd, "Paragraph Indents...");
139const BuiltinCmdSpec kCmd_ParagraphSpacing = BuiltinCmdSpec (kParagraphSpacingCmd, "Paragraph Spacing...");
140const BuiltinCmdSpec kCmd_ListStyle_None = BuiltinCmdSpec (kListStyle_NoneCmd, "None", "ListStyle_None");
141const BuiltinCmdSpec kCmd_ListStyle_Bullet = BuiltinCmdSpec (kListStyle_BulletCmd, "Bullet", "ListStyle_Bullet");
142const BuiltinCmdSpec kCmd_IncreaseIndent = BuiltinCmdSpec (kIncreaseIndentCmd, "Increase List Indent");
143const BuiltinCmdSpec kCmd_DescreaseIndent = BuiltinCmdSpec (kDecreaseIndentCmd, "Decrease List Indent");
144const BuiltinCmdSpec kCmd_PropertiesForSelection = BuiltinCmdSpec (kPropertiesForSelectionCmd, "Properties");
145const BuiltinCmdSpec kCmd_OpenEmbedding = BuiltinCmdSpec (kFirstPrivateEmbeddingCmd, "Open Embedding");
146const BuiltinCmdSpec kCmd_Print = BuiltinCmdSpec (ID_FILE_PRINT, "Print...");
147const BuiltinCmdSpec kCmd_PrintSetup = BuiltinCmdSpec (ID_FILE_PRINT_SETUP, "Print Setup...");
148const BuiltinCmdSpec kCmd_BrowseOnlineHelp = BuiltinCmdSpec (ID_HELP_FINDER, "Browse Online Help");
149const BuiltinCmdSpec kCmd_CheckForUpdatesOnWeb = BuiltinCmdSpec (kCheckForUpdatesWebPageCmdID, "Check for ActiveLedIt! Web Updates");
150const BuiltinCmdSpec kCmd_About = BuiltinCmdSpec (ID_APP_ABOUT, "About ActiveLedIt!...");
151const BuiltinCmdSpec kCmd_Help = BuiltinCmdSpec (ID_HELP, "Help");
152const BuiltinCmdSpec kCmd_ContextHelp = BuiltinCmdSpec (ID_CONTEXT_HELP, "Context Help");
153
154const BuiltinCmdSpec kAllCmds[] = {
155 kCmd_Undo,
156 kCmd_Redo,
157 kCmd_Cut,
158 kCmd_Copy,
159 kCmd_Paste,
160 kCmd_PasteText,
161 kCmd_Clear,
162 kCmd_SelectWord,
163 kCmd_SelectTextRow,
164 kCmd_SelectParagraph,
165 kCmd_SelectTableIntraCellAll,
166 kCmd_SelectTableCell,
167 kCmd_SelectTableRow,
168 kCmd_SelectTableColumn,
169 kCmd_SelectTable,
170 kCmd_SelectAll,
171 kCmd_Find,
172 kCmd_FindAgain,
173 kCmd_EnterFindString,
174 kCmd_Replace,
175 kCmd_ReplaceAgain,
176 kCmd_CheckSpelling,
177 kCmd_InsertTable,
178 kCmd_InsertTableRowAbove,
179 kCmd_InsertTableRowBelow,
180 kCmd_InsertTableColBefore,
181 kCmd_InsertTableColAfter,
182 kCmd_InsertURL,
183 kCmd_InsertSymbol,
184 kCmd_RemoveTableRows,
185 kCmd_RemoveTableColumns,
186 kCmd_FontStylePlain,
187 kCmd_FontStyleBold,
188 kCmd_FontStyleItalic,
189 kCmd_FontStyleUnderline,
190 kCmd_FontStyleStrikeout,
191 kCmd_SubScript,
192 kCmd_SuperScript,
193 kCmd_FontSize9,
194 kCmd_FontSize10,
195 kCmd_FontSize12,
196 kCmd_FontSize14,
197 kCmd_FontSize18,
198 kCmd_FontSize24,
199 kCmd_FontSize36,
200 kCmd_FontSize48,
201 kCmd_FontSize72,
202 kCmd_FontSizeSmaller,
203 kCmd_FontSizeLarger,
204 kCmd_FontSizeOther,
205 kCmd_BlackColor,
206 kCmd_MaroonColor,
207 kCmd_GreenColor,
208 kCmd_OliveColor,
209 kCmd_NavyColor,
210 kCmd_PurpleColor,
211 kCmd_TealColor,
212 kCmd_GrayColor,
213 kCmd_SilverColor,
214 kCmd_RedColor,
215 kCmd_LimeColor,
216 kCmd_YellowColor,
217 kCmd_BlueColor,
218 kCmd_FuchsiaColor,
219 kCmd_AquaColor,
220 kCmd_WhiteColor,
221 kCmd_OtherColor,
222 kCmd_ChooseFontDialog,
223 kCmd_JustifyLeft,
224 kCmd_JustifyCenter,
225 kCmd_JustifyRight,
226 kCmd_JustifyFull,
227 kCmd_ParagraphIndents,
228 kCmd_ParagraphSpacing,
229 kCmd_ListStyle_None,
230 kCmd_ListStyle_Bullet,
231 kCmd_IncreaseIndent,
232 kCmd_DescreaseIndent,
233 kCmd_PropertiesForSelection,
234 kCmd_OpenEmbedding,
235 kCmd_Print,
236 kCmd_PrintSetup,
237 kCmd_BrowseOnlineHelp,
238 kCmd_CheckForUpdatesOnWeb,
239 kCmd_About,
240 kCmd_Help,
241 kCmd_ContextHelp,
242};
243
244class ATL_NO_VTABLE ActiveLedIt_CurrentEventArguments
245 : public CComObjectRootEx<CComSingleThreadModel>,
246 public CComCoClass<ActiveLedIt_CurrentEventArguments>,
247 public IDispatchImpl<IALCurrentEventArguments, &IID_IALCurrentEventArguments, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
248public:
249 ActiveLedIt_CurrentEventArguments ();
250 virtual ~ActiveLedIt_CurrentEventArguments ();
251
252public:
253 DECLARE_NO_REGISTRY ()
254
255public:
256 BEGIN_COM_MAP (ActiveLedIt_CurrentEventArguments)
257 COM_INTERFACE_ENTRY (IALCurrentEventArguments)
258 COM_INTERFACE_ENTRY (IDispatch)
259 END_COM_MAP ()
260
261public:
262 STDMETHOD (get_InternalCommandName)
263 (BSTR* pVal);
264 STDMETHOD (put_InternalCommandName)
265 (BSTR val);
266 STDMETHOD (get_Enabled)
267 (VARIANT_BOOL* pVal);
268 STDMETHOD (put_Enabled)
269 (VARIANT_BOOL val);
270 STDMETHOD (get_Checked)
271 (VARIANT_BOOL* pVal);
272 STDMETHOD (put_Checked)
273 (VARIANT_BOOL val);
274 STDMETHOD (get_Name)
275 (BSTR* pVal);
276 STDMETHOD (put_Name)
277 (BSTR val);
278
279public:
280 DECLARE_PROTECT_FINAL_CONSTRUCT ()
281
282public:
283 HRESULT FinalConstruct ();
284 void FinalRelease ();
285
286public:
287 wstring fInternalName;
288 bool fEnabled;
289 bool fChecked;
290 wstring fName;
291};
292
293class ATL_NO_VTABLE AL_CommandHelper
294 : public IDispatchImpl<IALCommand, &IID_IALCommand, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
295public:
296 AL_CommandHelper ();
297 virtual ~AL_CommandHelper ();
298
299public:
300 STDMETHOD (get_Name)
301 (BSTR* pVal);
302 STDMETHOD (get_InternalName)
303 (BSTR* pVal);
304 STDMETHOD (AppendSelfToMenu)
305 (HMENU menu, IDispatch* acceleratorTable);
306
307protected:
308 wstring fName;
309 wstring fInternalName;
310 UINT fCommandNumber;
311};
312
313class ATL_NO_VTABLE AL_UserCommandHelper
314 : public IDispatchImpl<IALUserCommand, &IID_IALUserCommand, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
315 public AL_CommandHelper {
316public:
317 AL_UserCommandHelper ();
318 virtual ~AL_UserCommandHelper ();
319
320public:
321 STDMETHOD (put_Name)
322 (BSTR val);
323 STDMETHOD (put_InternalName)
324 (BSTR val);
325
326 // Not sure these needed/effective - maybe have to be in final class???
327 // disambiguate mixins
328public:
329 STDMETHOD (get_Name)
330 (BSTR* pVal)
331 {
332 return AL_CommandHelper::get_Name (pVal);
333 }
334 STDMETHOD (get_InternalName)
335 (BSTR* pVal)
336 {
337 return AL_CommandHelper::get_InternalName (pVal);
338 }
339 STDMETHOD (AppendSelfToMenu)
340 (HMENU menu, IDispatch* acceleratorTable)
341 {
342 return AL_CommandHelper::AppendSelfToMenu (menu, acceleratorTable);
343 }
344};
345
346class ATL_NO_VTABLE AL_CommandListHelper
347 : public IDispatchImpl<IALCommandList, &IID_IALCommandList, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
348public:
349 AL_CommandListHelper ();
350 virtual ~AL_CommandListHelper ();
351
352public:
353 STDMETHOD (GeneratePopupMenu)
354 (IDispatch* acceleratorTable, HMENU* val);
355 STDMETHOD (LookupCommand)
356 (BSTR internalName, IDispatch** val);
357 STDMETHOD (IndexOf)
358 (VARIANT internalNameOrObject, UINT* val);
359 STDMETHOD (get__NewEnum)
360 (IUnknown** ppUnk);
361 STDMETHOD (get_Item)
362 (long Index, IDispatch** pVal);
363 STDMETHOD (get_Count)
364 (long* pVal);
365
366public:
367 nonvirtual void AppendBuiltinCmd (const BuiltinCmdSpec& cmdSpec);
368 nonvirtual void AppendBuiltinCmds (const BuiltinCmdSpec* cmdSpecsStart, const BuiltinCmdSpec* cmdSpecsEnd);
369
370protected:
371 vector<CComPtr<IDispatch>> fOwnedItems;
372};
373
374class ATL_NO_VTABLE AL_UserCommandListHelper
375 : public AL_CommandListHelper,
376 public IDispatchImpl<IALUserCommandList, &IID_IALUserCommandList, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
377public:
378 AL_UserCommandListHelper ();
379 virtual ~AL_UserCommandListHelper ();
380
381 // disambiguate mixins
382public:
383 STDMETHOD (GeneratePopupMenu)
384 (IDispatch* acceleratorTable, HMENU* val)
385 {
386 return AL_CommandListHelper::GeneratePopupMenu (acceleratorTable, val);
387 }
388 STDMETHOD (LookupCommand)
389 (BSTR internalName, IDispatch** val)
390 {
391 return AL_CommandListHelper::LookupCommand (internalName, val);
392 }
393 STDMETHOD (IndexOf)
394 (VARIANT internalNameOrObject, UINT* val)
395 {
396 return AL_CommandListHelper::IndexOf (internalNameOrObject, val);
397 }
398 STDMETHOD (get__NewEnum)
399 (IUnknown** ppUnk)
400 {
401 return AL_CommandListHelper::get__NewEnum (ppUnk);
402 }
403 STDMETHOD (get_Item)
404 (long Index, IDispatch** pVal)
405 {
406 return AL_CommandListHelper::get_Item (Index, pVal);
407 }
408 STDMETHOD (get_Count)
409 (long* pVal)
410 {
411 return AL_CommandListHelper::get_Count (pVal);
412 }
413
414public:
415 STDMETHOD (Insert)
416 (IDispatch* newElt, UINT afterElt = static_cast<UINT> (-1));
417 STDMETHOD (Remove)
418 (VARIANT eltIntNameOrIndex);
419 STDMETHOD (Clear)
420 ();
421};
422
423// read-only command object (unmodifyable) - but still seen/use externally as a COM object
424class ATL_NO_VTABLE ActiveLedIt_BuiltinCommand : public CComObjectRootEx<CComSingleThreadModel>,
425 public CComCoClass<ActiveLedIt_BuiltinCommand>,
426 public AL_CommandHelper {
427public:
428 ActiveLedIt_BuiltinCommand ();
429 virtual ~ActiveLedIt_BuiltinCommand ();
430
431public:
432 static ActiveLedIt_BuiltinCommand* mk (const BuiltinCmdSpec& cmdSpec);
433 void SetName (const wstring& name)
434 {
435 fName = name;
436 }
437
438public:
439 DECLARE_NO_REGISTRY ()
440
441public:
442 BEGIN_COM_MAP (ActiveLedIt_BuiltinCommand)
443 COM_INTERFACE_ENTRY (IALCommand)
444 COM_INTERFACE_ENTRY (IDispatch)
445 END_COM_MAP ()
446
447public:
448 DECLARE_PROTECT_FINAL_CONSTRUCT ()
449
450public:
451 HRESULT FinalConstruct ();
452 void FinalRelease ();
453};
454
455class ATL_NO_VTABLE ActiveLedIt_UserCommand
456 : public CComObjectRootEx<CComSingleThreadModel>,
457 public CComCoClass<ActiveLedIt_BuiltinCommand>,
458 public IDispatchImpl<IALUserCommand, &IID_IALUserCommand, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
459 public AL_CommandHelper {
460public:
461 ActiveLedIt_UserCommand ();
462 virtual ~ActiveLedIt_UserCommand ();
463
464public:
465 DECLARE_NO_REGISTRY ()
466
467public:
468 BEGIN_COM_MAP (ActiveLedIt_UserCommand)
469 COM_INTERFACE_ENTRY (IALUserCommand)
470 COM_INTERFACE_ENTRY2 (IALCommand, AL_CommandHelper)
471 COM_INTERFACE_ENTRY2 (IDispatch, IALUserCommand)
472 END_COM_MAP ()
473
474public:
475 STDMETHOD (get_Name)
476 (BSTR* pVal)
477 {
478 return AL_CommandHelper::get_Name (pVal);
479 }
480 STDMETHOD (get_InternalName)
481 (BSTR* pVal)
482 {
483 return AL_CommandHelper::get_InternalName (pVal);
484 }
485 STDMETHOD (AppendSelfToMenu)
486 (HMENU menu, IDispatch* acceleratorTable)
487 {
488 return AL_CommandHelper::AppendSelfToMenu (menu, acceleratorTable);
489 }
490
491public:
492 STDMETHOD (put_Name)
493 (BSTR val);
494 STDMETHOD (put_InternalName)
495 (BSTR val);
496
497public:
498 DECLARE_PROTECT_FINAL_CONSTRUCT ()
499
500public:
501 HRESULT FinalConstruct ();
502 void FinalRelease ();
503};
504
505class ATL_NO_VTABLE ActiveLedIt_AcceleratorElement
506 : public CComObjectRootEx<CComSingleThreadModel>,
507 public CComCoClass<ActiveLedIt_AcceleratorElement>,
508 public IDispatchImpl<IALAcceleratorElement, &IID_IALAcceleratorElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
509public:
510 ActiveLedIt_AcceleratorElement ();
511 virtual ~ActiveLedIt_AcceleratorElement () = default;
512
513public:
514 DECLARE_NO_REGISTRY ()
515
516public:
517 BEGIN_COM_MAP (ActiveLedIt_AcceleratorElement)
518 COM_INTERFACE_ENTRY (IALAcceleratorElement)
519 COM_INTERFACE_ENTRY (IDispatch)
520 END_COM_MAP ()
521
522public:
523 DECLARE_PROTECT_FINAL_CONSTRUCT ()
524
525public:
526 STDMETHOD (get_CommandInternalName)
527 (BSTR* pVal);
528 STDMETHOD (put_CommandInternalName)
529 (BSTR val);
530 STDMETHOD (get_ModifierFlag)
531 (AcceleratorModifierFlag* pVal);
532 STDMETHOD (put_ModifierFlag)
533 (AcceleratorModifierFlag val);
534 STDMETHOD (get_Key)
535 (WORD* pVal);
536 STDMETHOD (put_Key)
537 (WORD val);
538
539public:
540 HRESULT FinalConstruct ();
541 void FinalRelease ();
542
543private:
544 wstring fCommandInternalName;
545 AcceleratorModifierFlag fAcceleratorModifierFlag;
546 WORD fKey;
547};
548
549class ATL_NO_VTABLE ActiveLedIt_AcceleratorTable
550 : public CComObjectRootEx<CComSingleThreadModel>,
551 public CComCoClass<ActiveLedIt_AcceleratorTable>,
552 public IDispatchImpl<IALAcceleratorTable, &IID_IALAcceleratorTable, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
553public:
554 ActiveLedIt_AcceleratorTable ();
555 virtual ~ActiveLedIt_AcceleratorTable ();
556
557public:
558 DECLARE_NO_REGISTRY ()
559
560public:
561 BEGIN_COM_MAP (ActiveLedIt_AcceleratorTable)
562 COM_INTERFACE_ENTRY (IALAcceleratorTable)
563 COM_INTERFACE_ENTRY (IDispatch)
564 END_COM_MAP ()
565
566public:
567 DECLARE_PROTECT_FINAL_CONSTRUCT ()
568
569public:
570 nonvirtual void AppendACCEL (const char* internalCmdName, AcceleratorModifierFlag modifierFlag, WORD key);
571
572public:
573 STDMETHOD (get__NewEnum)
574 (IUnknown** ppUnk);
575 STDMETHOD (get_Item)
576 (long Index, IDispatch** pVal);
577 STDMETHOD (get_Count)
578 (long* pVal);
579 STDMETHOD (Lookup)
580 (BSTR cmdInternalName, IDispatch** pVal);
581 STDMETHOD (Add)
582 (IDispatch* newElt, UINT atIndex = 0xffffffff);
583 STDMETHOD (Remove)
584 (VARIANT eltIntNameOrIndex);
585 STDMETHOD (Clear)
586 ();
587 STDMETHOD (GenerateWin32AcceleratorTable)
588 (HACCEL* pVal);
589
590public:
591 HRESULT FinalConstruct ();
592 void FinalRelease ();
593
594private:
595 vector<CComPtr<IDispatch>> fAccelerators;
596};
597
598// A static - unchangable (by users) command list object
599class ATL_NO_VTABLE ActiveLedIt_StaticCommandList : public CComObjectRootEx<CComSingleThreadModel>,
600 public CComCoClass<ActiveLedIt_StaticCommandList>,
601 public AL_CommandListHelper {
602public:
603 ActiveLedIt_StaticCommandList ();
604 virtual ~ActiveLedIt_StaticCommandList ();
605
606public:
607 DECLARE_NO_REGISTRY ()
608
609public:
610 BEGIN_COM_MAP (ActiveLedIt_StaticCommandList)
611 COM_INTERFACE_ENTRY (IALCommandList)
612 COM_INTERFACE_ENTRY (IDispatch)
613 END_COM_MAP ()
614
615public:
616 DECLARE_PROTECT_FINAL_CONSTRUCT ()
617
618public:
619 nonvirtual void Append (IDispatch* p);
620
621public:
622 HRESULT FinalConstruct ();
623 void FinalRelease ();
624};
625
626// A command list that can be modified arbitrarily by users (callers)
627class ATL_NO_VTABLE ActiveLedIt_UserCommandList : public CComObjectRootEx<CComSingleThreadModel>,
628 public CComCoClass<ActiveLedIt_UserCommandList>,
629 public AL_UserCommandListHelper {
630public:
631 ActiveLedIt_UserCommandList ();
632 virtual ~ActiveLedIt_UserCommandList ();
633
634public:
635 DECLARE_NO_REGISTRY ()
636
637public:
638 BEGIN_COM_MAP (ActiveLedIt_UserCommandList)
639 COM_INTERFACE_ENTRY (IALUserCommandList)
640 COM_INTERFACE_ENTRY2 (IALCommandList, IALUserCommandList)
641 COM_INTERFACE_ENTRY2 (IDispatch, IALUserCommandList)
642 END_COM_MAP ()
643
644public:
645 DECLARE_PROTECT_FINAL_CONSTRUCT ()
646
647 // disambiguate mixins
648public:
649 STDMETHOD (GeneratePopupMenu)
650 (IDispatch* acceleratorTable, HMENU* val)
651 {
652 return AL_UserCommandListHelper::GeneratePopupMenu (acceleratorTable, val);
653 }
654 STDMETHOD (LookupCommand)
655 (BSTR internalName, IDispatch** val)
656 {
657 return AL_UserCommandListHelper::LookupCommand (internalName, val);
658 }
659 STDMETHOD (IndexOf)
660 (VARIANT internalNameOrObject, UINT* val)
661 {
662 return AL_UserCommandListHelper::IndexOf (internalNameOrObject, val);
663 }
664 STDMETHOD (get__NewEnum)
665 (IUnknown** ppUnk)
666 {
667 return AL_UserCommandListHelper::get__NewEnum (ppUnk);
668 }
669 STDMETHOD (get_Item)
670 (long Index, IDispatch** pVal)
671 {
672 return AL_UserCommandListHelper::get_Item (Index, pVal);
673 }
674 STDMETHOD (get_Count)
675 (long* pVal)
676 {
677 return AL_UserCommandListHelper::get_Count (pVal);
678 }
679
680public:
681 HRESULT FinalConstruct ();
682 void FinalRelease ();
683};
684
685class ATL_NO_VTABLE ActiveLedIt_MenuItemPopup
686 : public CComObjectRootEx<CComSingleThreadModel>,
687 public CComCoClass<ActiveLedIt_MenuItemPopup, &CLSID_ActiveLedIt_MenuItemPopup>,
688 public IDispatchImpl<IALMenuItemPopup, &IID_IALMenuItemPopup, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
689 public AL_CommandListHelper,
690 public AL_UserCommandHelper {
691public:
692 ActiveLedIt_MenuItemPopup ();
693 virtual ~ActiveLedIt_MenuItemPopup ();
694
695public:
696 DECLARE_NO_REGISTRY ()
697
698 // disambiguate mixins
699public:
700 STDMETHOD (GeneratePopupMenu)
701 (IDispatch* acceleratorTable, HMENU* val)
702 {
703 return AL_CommandListHelper::GeneratePopupMenu (acceleratorTable, val);
704 }
705 STDMETHOD (LookupCommand)
706 (BSTR internalName, IDispatch** val)
707 {
708 return AL_CommandListHelper::LookupCommand (internalName, val);
709 }
710 STDMETHOD (IndexOf)
711 (VARIANT internalNameOrObject, UINT* val)
712 {
713 return AL_CommandListHelper::IndexOf (internalNameOrObject, val);
714 }
715 STDMETHOD (get__NewEnum)
716 (IUnknown** ppUnk)
717 {
718 return AL_CommandListHelper::get__NewEnum (ppUnk);
719 }
720 STDMETHOD (get_Item)
721 (long Index, IDispatch** pVal)
722 {
723 return AL_CommandListHelper::get_Item (Index, pVal);
724 }
725 STDMETHOD (get_Count)
726 (long* pVal)
727 {
728 return AL_CommandListHelper::get_Count (pVal);
729 }
730
731public:
732 STDMETHOD (get_Name)
733 (BSTR* pVal)
734 {
735 return AL_CommandHelper::get_Name (pVal);
736 }
737 STDMETHOD (get_InternalName)
738 (BSTR* pVal)
739 {
740 return AL_CommandHelper::get_InternalName (pVal);
741 }
742 STDMETHOD (AppendSelfToMenu)
743 (HMENU menu, IDispatch* acceleratorTable);
744
745public:
746 STDMETHOD (put_Name)
747 (BSTR val)
748 {
749 return AL_UserCommandHelper::put_Name (val);
750 }
751 STDMETHOD (put_InternalName)
752 (BSTR val)
753 {
754 return AL_UserCommandHelper::put_InternalName (val);
755 }
756
757public:
758 STDMETHOD (Insert)
759 (IDispatch*, UINT = static_cast<UINT> (-1));
760 STDMETHOD (Remove)
761 (VARIANT eltIntNameOrIndex);
762 STDMETHOD (Clear)
763 ();
764
765public:
766 BEGIN_COM_MAP (ActiveLedIt_MenuItemPopup)
767 COM_INTERFACE_ENTRY (IALMenuItemPopup)
768 COM_INTERFACE_ENTRY2 (IALCommandList, IALMenuItemPopup)
769 COM_INTERFACE_ENTRY (IALUserCommand)
770 COM_INTERFACE_ENTRY2 (IALCommand, AL_CommandHelper)
771 COM_INTERFACE_ENTRY2 (IDispatch, IALMenuItemPopup)
772 END_COM_MAP ()
773
774public:
775 DECLARE_PROTECT_FINAL_CONSTRUCT ()
776
777public:
778 HRESULT FinalConstruct ();
779 void FinalRelease ();
780};
781
782string mkFontNameCMDName (const SDKString& fName);
783
784CComPtr<IDispatch> GenerateBuiltinCommandsObject ();
785
786UINT CmdObjOrName2Num (const VARIANT& cmdObjOrName);
787wstring CmdNum2Name (UINT cmdNum);
788
789/*
790 ********************************************************************************
791 ***************************** Implementation Details ***************************
792 ********************************************************************************
793 */
794
795#endif /*__UserConfigCommands_h__*/