You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
346 lines
13 KiB
C
346 lines
13 KiB
C
2 years ago
|
// XTPRibbonBar.h: interface for the CXTPRibbonBar class.
|
||
|
//
|
||
|
// This file is a part of the XTREME RIBBON MFC class library.
|
||
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
||
|
//
|
||
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
||
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
||
|
// CONSENT OF CODEJOCK SOFTWARE.
|
||
|
//
|
||
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
||
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
||
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
||
|
// SINGLE COMPUTER.
|
||
|
//
|
||
|
// CONTACT INFORMATION:
|
||
|
// support@codejock.com
|
||
|
// http://www.codejock.com
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
#if !defined(__XTPRIBBONPOPUPS_H__)
|
||
|
#define __XTPRIBBONPOPUPS_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
|
||
|
class CXTPRibbonQuickAccessControls;
|
||
|
class CXTPRibbonTab;
|
||
|
class CXTPRibbonControlTab;
|
||
|
class CXTPTabPaintManager;
|
||
|
class CXTPRibbonBar;
|
||
|
class CXTPRibbonGroup;
|
||
|
class CXTPCommandBarsFrameHook;
|
||
|
class CXTPRibbonTabContextHeaders;
|
||
|
class CXTPRibbonGroups;
|
||
|
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
class CXTPRibbonScrollableBar
|
||
|
{
|
||
|
public:
|
||
|
CXTPRibbonScrollableBar();
|
||
|
private:
|
||
|
class CControlGroupsScroll;
|
||
|
|
||
|
protected:
|
||
|
void InitScrollableBar(CXTPCommandBar* pParent);
|
||
|
|
||
|
void ShowScrollableRect(CXTPRibbonGroups* pGroups, CRect rc);
|
||
|
|
||
|
public:
|
||
|
void EnableGroupsScroll(BOOL bScrollLeft, BOOL bScrollRight);
|
||
|
virtual void OnGroupsScroll(BOOL bScrollLeft) = 0;
|
||
|
virtual CRect GetGroupsRect() const = 0;
|
||
|
virtual CXTPRibbonGroup* HitTestGroup(CPoint point) const = 0;
|
||
|
|
||
|
void CreateGroupKeyboardTips(CXTPRibbonTab* pSelectedTab);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to get highlighted group
|
||
|
// Returns:
|
||
|
// CXTPRibbonGroup object under mouse cursor
|
||
|
// See Also: CXTPRibbonGroup
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroup* GetHighlightedGroup() const;
|
||
|
|
||
|
void HighlightGroup(CXTPRibbonGroup* pHighlightedGroup);
|
||
|
|
||
|
protected:
|
||
|
void CreateControlKeyboardTips(CXTPControl* pControl, LPCTSTR lpszPrefix, BOOL bVisible);
|
||
|
|
||
|
BOOL ProcessSpecialKey(XTPSpecialKey key);
|
||
|
CRect _GetBoundRect(CXTPControl* pControl, BOOL bSelected, XTPSpecialKey key);
|
||
|
|
||
|
|
||
|
public:
|
||
|
int m_nGroupsScrollPos; // Groups scroll position
|
||
|
|
||
|
protected:
|
||
|
CXTPCommandBar* m_pParent;
|
||
|
CXTPControl* m_pControlScrollGroupsLeft; // Control to draw left scroll
|
||
|
CXTPControl* m_pControlScrollGroupsRight; // Control to draw right scroll
|
||
|
CXTPRibbonGroup* m_pHighlightedGroup; // Currently highlighted group
|
||
|
};
|
||
|
|
||
|
CXTPRibbonScrollableBar* AFX_CDECL GetScrollableBar(CXTPCommandBar* pCommandBar);
|
||
|
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Implements popup when ribbon is in minimzed mode.
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPRibbonTabPopupToolBar : public CXTPPopupToolBar, public CXTPRibbonScrollableBar
|
||
|
{
|
||
|
DECLARE_DYNAMIC(CXTPRibbonTabPopupToolBar)
|
||
|
public:
|
||
|
|
||
|
// ----------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPRibbonTabPopupToolBar object
|
||
|
// Parameters:
|
||
|
// pRibbonTab : Ribbon tab the popup toolbar belongs to.
|
||
|
// ----------------------------------------------------------
|
||
|
CXTPRibbonTabPopupToolBar(CXTPRibbonTab* pRibbonTab);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPRibbonTabPopupToolBar object, handles cleanup and deallocation
|
||
|
//-----------------------------------------------------------------------
|
||
|
~CXTPRibbonTabPopupToolBar();
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves Groups bounding rectangle
|
||
|
// Returns:
|
||
|
// Groups bounding rectangle
|
||
|
//-----------------------------------------------------------------------
|
||
|
CRect GetGroupsRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// The framework calls this member function when the group popup is scrolled
|
||
|
// Parameters:
|
||
|
// bScrollLeft - TRUE when scrolling left, FALSE when scrolling right
|
||
|
//-----------------------------------------------------------------------
|
||
|
void OnGroupsScroll(BOOL bScrollLeft);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to be sure control is visible on ribbon bar
|
||
|
// Parameters:
|
||
|
// pControl - CXTPControl child that need to check
|
||
|
//-----------------------------------------------------------------------
|
||
|
void EnsureVisible(CXTPControl* pControl);
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to create keyboard tips collection for the ribbon
|
||
|
//-------------------------------------------------------------------------
|
||
|
void CreateKeyboardTips();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to get the size of the command bar.
|
||
|
// Parameters:
|
||
|
// nLength - The requested dimension of the control bar, either horizontal or vertical, depending on dwMode.
|
||
|
// nMode - see CControlBar::CalcDynamicLayout for list of supported flags.
|
||
|
// Returns:
|
||
|
// Size of the command bar.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CSize CalcDynamicLayout(int nLength, DWORD nMode);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to draw the command bar in the given context.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context
|
||
|
// rcClipBox - The rectangular area of the control that is invalid
|
||
|
//-----------------------------------------------------------------------
|
||
|
void DrawCommandBar(CDC* pDC, CRect rcClipBox);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this function to get the size of the command bar button.
|
||
|
// Returns:
|
||
|
// The width and height values of the command bar button.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CSize GetButtonSize() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get the size of the icon for a minimized group.
|
||
|
// Returns:
|
||
|
// Size of the icon
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CSize GetIconSize() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to calculate destination rectangle of popup bar
|
||
|
// Parameters:
|
||
|
// ptPopup - Point to display popup bar
|
||
|
// sz - Size of popup bar
|
||
|
// Returns:
|
||
|
// Rectangle where popup bar will be located.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CRect CalculatePopupRect(CPoint ptPopup, CSize sz);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function determines which ribbon group,
|
||
|
// if any, is at a specified position.
|
||
|
// Parameters:
|
||
|
// point - A CPoint that contains the coordinates of the point to test.
|
||
|
// Returns:
|
||
|
// The CXTPRibbonGroup that is at the specified point, if no group is
|
||
|
// at the point, then NULL is returned.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroup* HitTestGroup(CPoint point) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to change the tracking state.
|
||
|
// Parameters:
|
||
|
// bMode - TRUE to set the tracking mode; otherwise FALSE.
|
||
|
// bSelectFirst - TRUE to select the first item.
|
||
|
// bKeyboard - TRUE if the item is popuped by the keyboard.
|
||
|
// Returns:
|
||
|
// TRUE if the method was successful.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL SetTrackingMode(int bMode, BOOL bSelectFirst = TRUE, BOOL bKeyboard = FALSE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called when keyboard tip was found for the commandbar
|
||
|
// Parameters:
|
||
|
// pTip - Keyboard tip was found for commandbar
|
||
|
//-----------------------------------------------------------------------
|
||
|
void OnKeyboardTip(CXTPCommandBarKeyboardTip* pTip);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to determin if cues are visible
|
||
|
// Returns:
|
||
|
// True if visible, False otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsKeyboardCuesVisible() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// The framework calls this member function to determine whether a
|
||
|
// point is in the bounding rectangle of the specified tool.
|
||
|
// Parameters:
|
||
|
// point - Specifies the x- and y-coordinate of the cursor. These
|
||
|
// coordinates are always relative to the upper-left corner of the window
|
||
|
// pTI - A pointer to a TOOLINFO structure.
|
||
|
// Returns:
|
||
|
// If the tooltip control was found, the window control ID. If
|
||
|
// the tooltip control was not found, -1.
|
||
|
//-----------------------------------------------------------------------
|
||
|
INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
void OnMouseMove(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnMouseLeave();
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called to process special keys.
|
||
|
// Parameters:
|
||
|
// key - Special keys enumerator. Can be any of the values listed in the Remarks section.
|
||
|
// Remarks:
|
||
|
// CXTPCommandBar maps key passed as parameter of OnKeyDown to XTPSpecialKey enumerator and call ProcessSpecialKey.<p/>
|
||
|
// key parameter can be one of the following:
|
||
|
// * <b>xtpKeyNext</b> Indicates the RIGHT or DOWN key was pressed Next control must be selected
|
||
|
// * <b>xtpKeyPrev</b> Indicates the LEFT or UP key was pressed. Previous control must be selected.
|
||
|
// * <b>xtpKeyBack</b> Indicates the LEFT key was pressed for popup bar. Current submenu must be closed
|
||
|
// * <b>xtpKeyPopup</b> Indicates the RIGHT key was pressed for popup bar. Submenu must be opened.
|
||
|
// * <b>xtpKeyEscape</b> Indicates the ESCAPE key was pressed.
|
||
|
// * <b>xtpKeyReturn</b> Indicates the RETURN key was pressed
|
||
|
// * <b>xtpKeyHome</b> Indicates the HOME key was pressed. First control must be selected.
|
||
|
// * <b>xtpKeyEnd</b> Indicates the END key was pressed. Last control must be selected.
|
||
|
// Returns:
|
||
|
// TRUE if key handled, otherwise returns FALSE
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL ProcessSpecialKey(XTPSpecialKey key);
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
public:
|
||
|
CXTPRibbonTab* m_pRibbonTab; // Ribbon Bar tab the group belongs to.
|
||
|
CXTPRibbonBar* m_pRibbonBar; // The CXTPRibbonBar object the CXTPRibbonTab belongs to.
|
||
|
CRect m_rcGroups; // Groups bounding rectangle.
|
||
|
|
||
|
};
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
class CXTPRibbonBarMorePopupToolBar : public CXTPPopupToolBar
|
||
|
{
|
||
|
DECLARE_DYNAMIC(CXTPRibbonBarMorePopupToolBar)
|
||
|
|
||
|
public:
|
||
|
CXTPRibbonBarMorePopupToolBar(CXTPRibbonBar* pRibbonBar);
|
||
|
|
||
|
public:
|
||
|
void FillCommandBarEntry(CDC* pDC);
|
||
|
CSize GetIconSize() const;
|
||
|
CSize GetButtonSize() const;
|
||
|
|
||
|
public:
|
||
|
CXTPRibbonBar* m_pRibbonBar;
|
||
|
};
|
||
|
|
||
|
|
||
|
class CXTPRibbonGroupPopupToolBar : public CXTPPopupToolBar, public CXTPRibbonScrollableBar
|
||
|
{
|
||
|
DECLARE_XTP_COMMANDBAR(CXTPRibbonGroupPopupToolBar)
|
||
|
public:
|
||
|
CXTPRibbonGroupPopupToolBar(CXTPRibbonGroup* pRibbonGroup = NULL);
|
||
|
~CXTPRibbonGroupPopupToolBar();
|
||
|
|
||
|
public:
|
||
|
CSize CalcDynamicLayout(int, DWORD /*nMode*/);
|
||
|
void DrawCommandBar(CDC* pDC, CRect rcClipBox);
|
||
|
void CreateKeyboardTips();
|
||
|
CSize GetIconSize() const;
|
||
|
CSize GetButtonSize() const;
|
||
|
virtual void OnGroupsScroll(BOOL bScrollLeft);
|
||
|
virtual CRect GetGroupsRect() const;
|
||
|
virtual BOOL SetTrackingMode(int bMode, BOOL bSelectFirst = TRUE, BOOL bKeyboard = FALSE);
|
||
|
virtual CXTPRibbonGroup* HitTestGroup(CPoint point) const;
|
||
|
BOOL IsKeyboardCuesVisible() const;
|
||
|
protected:
|
||
|
void OnMouseMove(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnMouseLeave();
|
||
|
virtual BOOL ProcessSpecialKey(XTPSpecialKey key);
|
||
|
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
public:
|
||
|
CXTPRibbonGroup* m_pRibbonGroup;
|
||
|
CXTPRibbonBar* m_pRibbonBar;
|
||
|
|
||
|
CXTPRibbonGroup* m_pParentGroup;
|
||
|
};
|
||
|
|
||
|
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
#endif // !defined(__XTPRIBBONPOPUPS_H__)
|