7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Frameworks/Led/IdleManager.h"
13#include "Stroika/Frameworks/Led/Platform/ATL.h"
14#include "Stroika/Frameworks/Led/TextInteractor.h"
16#include "ActiveLedItConfig.h"
18#include "UserConfigCommands.h"
20#include "ActiveLedIt_h.h"
22class ATL_NO_VTABLE ActiveLedIt_IconButtonToolbarElement
23 :
public CComObjectRootEx<CComSingleThreadModel>,
24 public CComCoClass<ActiveLedIt_IconButtonToolbarElement>,
25 public IDispatchImpl<IALToolbarElement, &IID_IALToolbarElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
26 public IDispatchImpl<IALIconButtonToolbarElement, &IID_IALIconButtonToolbarElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
27 public CWindowImpl<ActiveLedIt_IconButtonToolbarElement> {
29 ActiveLedIt_IconButtonToolbarElement ();
30 virtual ~ActiveLedIt_IconButtonToolbarElement ();
33 DECLARE_NO_REGISTRY ()
36 DECLARE_WND_SUPERCLASS (NULL, _T("Button"))
37 BEGIN_MSG_MAP (ActiveLedIt_IconButtonToolbarElement)
38 MESSAGE_HANDLER (WM_LBUTTONDOWN, OnLButtonDown)
39 MESSAGE_HANDLER (WM_LBUTTONUP, OnLButtonUp)
40 MESSAGE_HANDLER (WM_MOUSEMOVE, OnMouseMove)
42 nonvirtual LRESULT OnCreate (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
43 nonvirtual LRESULT OnSetFocus (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
44 nonvirtual LRESULT OnLButtonDown (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
45 nonvirtual LRESULT OnLButtonUp (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
46 nonvirtual LRESULT OnMouseMove (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
49 BEGIN_COM_MAP (ActiveLedIt_IconButtonToolbarElement)
50 COM_INTERFACE_ENTRY (IALIconButtonToolbarElement)
51 COM_INTERFACE_ENTRY2 (IDispatch, IALIconButtonToolbarElement)
52 COM_INTERFACE_ENTRY2 (IALToolbarElement, IALIconButtonToolbarElement)
56 DECLARE_PROTECT_FINAL_CONSTRUCT ()
60 STDMETHOD (get_PreferredHeight)
62 STDMETHOD (get_PreferredWidth)
70 STDMETHOD (get_Height)
72 STDMETHOD (SetRectangle)
73 (
int X,
int Y, UINT width, UINT height);
74 STDMETHOD (NotifyOfOwningToolbar)
75 (IDispatch* owningToolbar, IDispatch* owningActiveLedIt);
76 STDMETHOD (UpdateEnableState)
81 STDMETHOD (get_ButtonImage)
83 STDMETHOD (put_ButtonImage)
85 STDMETHOD (get_Command)
87 STDMETHOD (put_Command)
89 STDMETHOD (get_ButtonStyle)
90 (IconButtonStyle* pVal);
91 STDMETHOD (put_ButtonStyle)
92 (IconButtonStyle val);
95 HRESULT FinalConstruct ();
99 nonvirtual
void UpdateButtonObj ();
100 nonvirtual
void CheckFixButtonStyle ();
104 bool fPressedOnClick;
105 CComQIPtr<IPicture> fButtonImage;
106 CComVariant fCommand;
107 IconButtonStyle fIconButtonStyle;
108 IDispatch* fOwningToolbar;
109 IDispatch* fOwningActiveLedIt;
113class ATL_NO_VTABLE ActiveLedIt_ComboBoxToolbarElement
114 : public CComObjectRootEx<CComSingleThreadModel>,
115 public CComCoClass<ActiveLedIt_ComboBoxToolbarElement>,
116 public IDispatchImpl<IALToolbarElement, &IID_IALToolbarElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
117 public IDispatchImpl<IALComboBoxToolbarElement, &IID_IALComboBoxToolbarElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
118 public CWindowImpl<ActiveLedIt_ComboBoxToolbarElement> {
120 ActiveLedIt_ComboBoxToolbarElement ();
121 virtual ~ActiveLedIt_ComboBoxToolbarElement ();
124 DECLARE_NO_REGISTRY ()
127 DECLARE_WND_CLASS (NULL)
128 BEGIN_MSG_MAP (ActiveLedIt_ComboBoxToolbarElement)
129 COMMAND_HANDLER (0, CBN_DROPDOWN, OnCBDropDown)
130 COMMAND_HANDLER (0, CBN_CLOSEUP, OnCBCloseUp)
131 COMMAND_HANDLER (0, CBN_SELCHANGE, OnCBSelChange)
133 nonvirtual LRESULT OnCBSelChange (USHORT uMsg, USHORT wParam, HWND ctlHandle, BOOL& bHandled);
134 nonvirtual LRESULT OnCBDropDown (USHORT uMsg, USHORT wParam, HWND ctlHandle, BOOL& bHandled);
135 nonvirtual LRESULT OnCBCloseUp (USHORT uMsg, USHORT wParam, HWND ctlHandle, BOOL& bHandled);
138 BEGIN_COM_MAP (ActiveLedIt_ComboBoxToolbarElement)
139 COM_INTERFACE_ENTRY2 (IDispatch, IALComboBoxToolbarElement)
140 COM_INTERFACE_ENTRY2 (IALToolbarElement, IALComboBoxToolbarElement)
141 COM_INTERFACE_ENTRY (IALComboBoxToolbarElement)
145 DECLARE_PROTECT_FINAL_CONSTRUCT ()
149 STDMETHOD (get_PreferredHeight)
151 STDMETHOD (get_PreferredWidth)
157 STDMETHOD (get_Width)
159 STDMETHOD (get_Height)
161 STDMETHOD (SetRectangle)
162 (
int X,
int Y, UINT width, UINT height);
163 STDMETHOD (NotifyOfOwningToolbar)
164 (IDispatch* owningToolbar, IDispatch* owningActiveLedIt);
165 STDMETHOD (UpdateEnableState)
170 STDMETHOD (get_CommandList)
172 STDMETHOD (put_CommandList)
177 DistanceType fPreferredWidth;
180 HRESULT FinalConstruct ();
181 void FinalRelease ();
184 nonvirtual
void UpdatePopupObj ();
185 nonvirtual
void CallInvalidateLayout ();
188 bool fDropDownActive;
189 CComPtr<IDispatch> fCommandList;
190 vector<CComPtr<IALCommand>> fCommandListCache;
193 bool fPressedOnClick;
194 IDispatch* fOwningToolbar;
195 IDispatch* fOwningActiveLedIt;
199class ATL_NO_VTABLE ActiveLedIt_SeparatorToolbarElement
200 : public CComObjectRootEx<CComSingleThreadModel>,
201 public CComCoClass<ActiveLedIt_SeparatorToolbarElement>,
202 public IDispatchImpl<IALToolbarElement, &IID_IALToolbarElement, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion> {
204 ActiveLedIt_SeparatorToolbarElement ();
205 virtual ~ActiveLedIt_SeparatorToolbarElement ();
208 DECLARE_NO_REGISTRY ()
211 BEGIN_COM_MAP (ActiveLedIt_SeparatorToolbarElement)
212 COM_INTERFACE_ENTRY (IALToolbarElement)
213 COM_INTERFACE_ENTRY (IDispatch)
217 DECLARE_PROTECT_FINAL_CONSTRUCT ()
221 STDMETHOD (get_PreferredHeight)
223 STDMETHOD (get_PreferredWidth)
229 STDMETHOD (get_Width)
231 STDMETHOD (get_Height)
233 STDMETHOD (SetRectangle)
234 (
int X,
int Y, UINT width, UINT height);
235 STDMETHOD (NotifyOfOwningToolbar)
236 (IDispatch* owningToolbar, IDispatch* owningActiveLedIt);
237 STDMETHOD (UpdateEnableState)
241 HRESULT FinalConstruct ();
242 void FinalRelease ();
248class ATL_NO_VTABLE ActiveLedIt_Toolbar
249 : public CComObjectRootEx<CComSingleThreadModel>,
250 public CComCoClass<ActiveLedIt_Toolbar>,
251 public IDispatchImpl<IALToolbar, &IID_IALToolbar, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
252 public CWindowImpl<ActiveLedIt_Toolbar>,
255 ActiveLedIt_Toolbar ();
256 virtual ~ActiveLedIt_Toolbar ();
259 DECLARE_NO_REGISTRY ()
262 DECLARE_WND_CLASS_EX (NULL, CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, COLOR_BTNFACE);
263 BEGIN_MSG_MAP (ActiveLedIt_Toolbar)
264 MESSAGE_HANDLER (WM_COMMAND, OnCommand)
267 nonvirtual LRESULT OnCommand (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
281 BEGIN_COM_MAP (ActiveLedIt_Toolbar)
282 COM_INTERFACE_ENTRY (IALToolbar)
283 COM_INTERFACE_ENTRY (IDispatch)
287 DECLARE_PROTECT_FINAL_CONSTRUCT ()
290 virtual
void OnEnterIdle () override;
293 STDMETHOD (get__NewEnum)
296 (
long Index, IDispatch** pVal);
297 STDMETHOD (get_Count)
300 (IDispatch* newElt, UINT atIndex = 0xffffffff);
302 (IDispatch* newElts, UINT afterElt = static_cast<UINT> (-1));
304 (VARIANT eltIntNameOrIndex);
309 STDMETHOD (get_PreferredHeight)
311 STDMETHOD (get_PreferredWidth)
313 STDMETHOD (NotifyOfOwningActiveLedIt)
314 (IDispatch* owningActiveLedIt, IDispatch* owningALToolbar);
315 STDMETHOD (SetRectangle)
316 (
int X,
int Y, UINT width, UINT height);
319 nonvirtual
void CallInvalidateLayout ();
320 nonvirtual
void DoLayout ();
323 HRESULT FinalConstruct ();
324 void FinalRelease ();
327 vector<CComPtr<IDispatch>> fToolbarItems;
328 IDispatch* fOwningActiveLedIt;
329 IDispatch* fOwningALToolbar;
333class ATL_NO_VTABLE ActiveLedIt_ToolbarList
334 : public CComObjectRootEx<CComSingleThreadModel>,
335 public CComCoClass<ActiveLedIt_ToolbarList>,
336 public IDispatchImpl<IALToolbarList, &IID_IALToolbarList, &LIBID_ACTIVELEDITLib, qActiveLedIt_MajorVersion, qActiveLedIt_MinorVersion>,
337 public CWindowImpl<ActiveLedIt_ToolbarList> {
339 ActiveLedIt_ToolbarList ();
340 virtual ~ActiveLedIt_ToolbarList ();
343 DECLARE_NO_REGISTRY ()
351 DECLARE_WND_CLASS_EX (NULL, CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, COLOR_BTNFACE);
352 BEGIN_MSG_MAP (ActiveLedIt_ToolbarList)
353 MESSAGE_HANDLER (WM_PAINT, OnPaint)
356 nonvirtual LRESULT OnPaint (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
359 BEGIN_COM_MAP (ActiveLedIt_ToolbarList)
360 COM_INTERFACE_ENTRY (IALToolbarList)
361 COM_INTERFACE_ENTRY (IDispatch)
365 DECLARE_PROTECT_FINAL_CONSTRUCT ()
368 STDMETHOD (get__NewEnum)
371 (
long Index, IDispatch** pVal);
372 STDMETHOD (get_Count)
375 (IDispatch* newElt, UINT atIndex = 0xffffffff);
377 (VARIANT eltIntNameOrIndex);
382 STDMETHOD (get_PreferredHeight)
384 STDMETHOD (get_PreferredWidth)
386 STDMETHOD (NotifyOfOwningActiveLedIt)
387 (IDispatch* owningActiveLedIt, HWND owningHWND);
388 STDMETHOD (SetRectangle)
389 (
int X,
int Y, UINT width, UINT height);
392 nonvirtual
void CallInvalidateLayout ();
393 nonvirtual
void DoLayout ();
396 HRESULT FinalConstruct ();
397 void FinalRelease ();
400 vector<CComPtr<IDispatch>> fToolbars;
401 IDispatch* fOwningActiveLedIt;