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.
252 lines
10 KiB
C
252 lines
10 KiB
C
2 years ago
|
// XTPRibbonGroups.h: interface for the CXTPRibbonGroups 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(__XTPRIBBONGROUPS_H__)
|
||
|
#define __XTPRIBBONGROUPS_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPRibbonGroup;
|
||
|
class CXTPRibbonTab;
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Represents a collection of CXTPRibbonGroup objects.
|
||
|
// Remarks:
|
||
|
// A CXTPRibbonTab uses the CXTPRibbonGroups object for its Groups Collection
|
||
|
// to store all of the RibbonGroup objects that have been added to the
|
||
|
// RibbonTab. A CXTPRibbonGroup is used to hold items such as buttons,
|
||
|
// popups, edit controls, etc.
|
||
|
//
|
||
|
// Groups are added to the Groups Collection using the Add
|
||
|
// and InsertAt methods.
|
||
|
// See Also: Add, InsertAt
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPRibbonGroups : public CXTPCmdTarget
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPRibbonGroups object
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroups();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys a CXTPRibbonGroups object, handles cleanup and deallocation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPRibbonGroups();
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Copies all groups
|
||
|
// Parameters:
|
||
|
// pGroups - Groups to copy from
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Copy(CXTPRibbonGroups* pGroups);
|
||
|
|
||
|
//-------------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Removes all groups.
|
||
|
// See Also: InsertAt, Remove, GetCount, GetAt, Add
|
||
|
//-------------------------------------------------------------------------
|
||
|
void RemoveAll();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Removes the group at the specified index.
|
||
|
// Parameters:
|
||
|
// nIndex - Index of the group to be removed.
|
||
|
// See Also: InsertAt, Add, GetCount, GetAt, RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Remove(int nIndex);
|
||
|
void Remove(CXTPRibbonGroup* pGroup);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Adds a CXTPRibbonGroup to a CXTPRibbonTab at a specific location.
|
||
|
// Parameters:
|
||
|
// nIndex - Position within the tab's Groups Collection to
|
||
|
// insert the new CXTPRibbonGroup.
|
||
|
// lpszCaption - Text to display in the group title bar.
|
||
|
// This in the group's caption.
|
||
|
// nId - Identifier of new group
|
||
|
// pGroup - New group to insert
|
||
|
// Remarks:
|
||
|
// InsertAt adds a group at a specific location within the tab's
|
||
|
// Groups Collection. Groups will be displayed in the order they
|
||
|
// are added. This means the group with an Index of zero (0) will
|
||
|
// be displayed first to the far left, then to the immediate right
|
||
|
// will be the group with an Index of one (1), etc...
|
||
|
// Returns:
|
||
|
// Pointer to the CXTPRibbonGroup object added to the CXTPRibbonTab
|
||
|
// Groups Collection.
|
||
|
// See Also: Add, Remove, GetCount, GetAt, RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroup* InsertAt(int nIndex, LPCTSTR lpszCaption, int nId = -1);
|
||
|
CXTPRibbonGroup* InsertAt(int nIndex, CXTPRibbonGroup* pGroup); // <combine CXTPRibbonGroups::InsertAt@int@LPCTSTR@int>
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Adds a CXTPRibbonGroup to a CXTPRibbonTab.
|
||
|
// Parameters:
|
||
|
// lpszCaption - Text to display in the group title bar.
|
||
|
// This is the group's caption.
|
||
|
// nId - Identifier of new group
|
||
|
// Remarks:
|
||
|
// Tabs in the Ribbon Bar contain one or more CXTPRibbonGroup objects.
|
||
|
// Buttons, Popups, etc can then be added to the groups.
|
||
|
// Returns:
|
||
|
// Pointer to the CXTPRibbonGroup object added to the CXTPRibbonTab Groups Collection.
|
||
|
// See Also: InsertAt, Remove, GetCount, GetAt, RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroup* Add(LPCTSTR lpszCaption, int nId = -1);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Total number of CXTPRibbonGroup objects that have been added to a CXTPRibbonTab.
|
||
|
// Returns:
|
||
|
// Integer containing the total number of CXTPRibbonGroup objects that
|
||
|
// have been added to a CXTPRibbonTab.
|
||
|
// See Also: InsertAt, Remove, Add, GetAt, RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCount() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Gets a CXTPRibbonGroup object that has been added to the CXTPRibbonTab
|
||
|
// at the specified index.
|
||
|
// Parameters:
|
||
|
// nIndex - Index of the group to retrieve within the
|
||
|
// collection of groups.
|
||
|
// Remarks:
|
||
|
// GetAt retrieves the CXTPRibbonGroup from the m_arrGroups groups collection
|
||
|
// that contains all of the CXTPRibbonGroup objects that have been added
|
||
|
// to the CXTPRibbonTab.
|
||
|
// Returns:
|
||
|
// The CXTPRibbonGroup at the specified index.
|
||
|
// See Also: InsertAt, Remove, GetCount, Add, RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonGroup* GetAt(int nIndex) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// 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* HitTest(CPoint point) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// The CXTPRibbonBar object the CXTPRibbonGroup belongs to.
|
||
|
// Returns:
|
||
|
// A pointer to the CXTPRibbonBar object the CXTPRibbonGroup belongs to.
|
||
|
// This is the RibbonBar that the group is displayed in.
|
||
|
// See Also: CXTPRibbonBar
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonBar* GetRibbonBar() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// The CXTPRibbonTab object the CXTPRibbonGroup belongs to.
|
||
|
// Returns:
|
||
|
// A pointer to the CXTPRibbonTab object the CXTPRibbonGroup belongs to.
|
||
|
// This is the tab that the group is displayed in.
|
||
|
// See Also: CXTPRibbonTab
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPRibbonTab* GetParentTab() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called internally to reposition groups and controls.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to a valid device context
|
||
|
// nLength - Length of the parent bar.
|
||
|
// dwMode - Mode of the parent bar.
|
||
|
// rcBorder - Border to be set.
|
||
|
// See Also: CXTPRibbonBar::RepositionGroups
|
||
|
//-----------------------------------------------------------------------
|
||
|
void CalcDynamicSize(CDC* pDC, int nLength, DWORD dwMode, const CRect& rcBorder);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Reads or writes this object from or to an archive.
|
||
|
// Parameters:
|
||
|
// pPX - A CXTPPropExchange object to serialize to or from.
|
||
|
//----------------------------------------------------------------------
|
||
|
virtual void DoPropExchange(CXTPPropExchange* pPX);
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary: Call this method to get group scroll position
|
||
|
// Returns: Position of scroll offset
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetScrollPos() const;
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
int _CalcSmartLayoutToolBar(int* pWidth);
|
||
|
void _ReduceSmartLayoutToolBar(CDC* pDC, int* pWidth, int nWidth);
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
private:
|
||
|
void RefreshIndexes();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
protected:
|
||
|
CArray<CXTPRibbonGroup*, CXTPRibbonGroup*> m_arrGroups; // Collection of groups.
|
||
|
CXTPRibbonTab* m_pParentTab; // A pointer to the CXTPRibbonTab object the CXTPRibbonGroup belongs to.
|
||
|
// This is the tab that the group is displayed in.
|
||
|
int m_nGroupsScrollPos; // Scroll position
|
||
|
friend class CXTPRibbonTab;
|
||
|
friend class CXTPRibbonBar;
|
||
|
};
|
||
|
|
||
|
AFX_INLINE int CXTPRibbonGroups::GetCount() const {
|
||
|
return (int)m_arrGroups.GetSize();
|
||
|
}
|
||
|
AFX_INLINE CXTPRibbonGroup* CXTPRibbonGroups::GetAt(int nIndex) const {
|
||
|
ASSERT(nIndex < m_arrGroups.GetSize());
|
||
|
return (nIndex >= 0 && nIndex < m_arrGroups.GetSize()) ? m_arrGroups.GetAt(nIndex) : NULL;
|
||
|
}
|
||
|
AFX_INLINE CXTPRibbonTab* CXTPRibbonGroups::GetParentTab() const {
|
||
|
return m_pParentTab;
|
||
|
}
|
||
|
AFX_INLINE int CXTPRibbonGroups::GetScrollPos() const {
|
||
|
return m_nGroupsScrollPos;
|
||
|
}
|
||
|
|
||
|
#endif // !defined(__XTPRIBBONGROUPS_H__)
|