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.
244 lines
8.4 KiB
C++
244 lines
8.4 KiB
C++
// XTPDockingPaneLayout.h : interface for the CXTPDockingPaneLayout class.
|
|
//
|
|
// This file is a part of the XTREME DOCKINGPANE 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(__XTPDOCKINGPANELAYOUT_H__)
|
|
#define __XTPDOCKINGPANELAYOUT_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
|
|
class CXTPDockingPaneBase;
|
|
class CXTPDockingPaneSplitterContainer;
|
|
class CXTPDockingPaneBase;
|
|
class CXTPDockingPaneAutoHidePanel;
|
|
class CXTPDockingPaneManager;
|
|
class CXTPPropExchange;
|
|
class CXTPDockingPaneTabbedContainer;
|
|
class CXTPDockingPaneSplitterWnd;
|
|
class CXTPDockingPaneClientContainer;
|
|
|
|
namespace XTPXML
|
|
{
|
|
struct IXMLDOMNode;
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// CXTPDockingPaneLayout is a stand alone class. It is used to manipulate
|
|
// a pane's layouts.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPDockingPaneLayout : public CXTPCmdTarget
|
|
{
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPDockingPaneLayout object.
|
|
// Parameters:
|
|
// pManager - Points to a CXTPDockingPaneManager object
|
|
// Returns:
|
|
// A CXTPDockingPaneLayout object.
|
|
//-----------------------------------------------------------------------
|
|
CXTPDockingPaneLayout(CXTPDockingPaneManager* pManager);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPDockingPaneLayout object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPDockingPaneLayout();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to copy one layout to another.
|
|
// Parameters:
|
|
// pLayout - Source Layout.
|
|
//-----------------------------------------------------------------------
|
|
void Copy(const CXTPDockingPaneLayout* pLayout);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to save the layout to the registry.
|
|
// Parameters:
|
|
// lpszSection - Registry section.
|
|
//-----------------------------------------------------------------------
|
|
void Save(LPCTSTR lpszSection);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to load the layout from the registry.
|
|
// Parameters:
|
|
// lpszSection - Registry section.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL Load(LPCTSTR lpszSection);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Retrieves list of layout's panes.
|
|
// Returns:
|
|
// A list of the layout's panes
|
|
// See Also:
|
|
// CXTPDockingPaneInfoList
|
|
//-----------------------------------------------------------------------
|
|
CXTPDockingPaneInfoList& GetPaneList() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Reads or writes this object from or to an archive.
|
|
// Parameters:
|
|
// ar - A CArchive object to serialize to or from.
|
|
//-----------------------------------------------------------------------
|
|
void Serialize(CArchive& ar);
|
|
|
|
#ifndef _XTP_EXCLUDE_XML
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to save the layout to the file.
|
|
// Parameters:
|
|
// lpszFileName - The full path and file name.
|
|
// lpszSection - Registry section.
|
|
//-----------------------------------------------------------------------
|
|
void SaveToFile(LPCTSTR lpszFileName, LPCTSTR lpszSection);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to load the layout from the file.
|
|
// Parameters:
|
|
// lpszFileName - The full path and file name.
|
|
// lpszSection - Registry section.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL LoadFromFile(LPCTSTR lpszFileName, LPCTSTR lpszSection);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to save the layout to the XML node.
|
|
// Parameters:
|
|
// xmlNode - XML node to save.
|
|
// lpszSection - Registry section.
|
|
//-----------------------------------------------------------------------
|
|
void SaveToNode(XTPXML::IXMLDOMNode* pNode, LPCTSTR lpszSection);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to load the layout from the XML node.
|
|
// Parameters:
|
|
// xmlNode - XML node to load.
|
|
// lpszSection - Registry section.
|
|
// Returns:
|
|
// TRUE if successful, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL LoadFromNode(XTPXML::IXMLDOMNode* pNode, LPCTSTR lpszSection);
|
|
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member to determine if it is a user created layout.
|
|
// Returns:
|
|
// TRUE if it is a user created layout.
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsUserLayout() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines if layout is valid.
|
|
// Returns:
|
|
// TRUE if Layout is valid
|
|
//-----------------------------------------------------------------------
|
|
BOOL IsValid() const;
|
|
|
|
public:
|
|
|
|
void DestroyPane(CXTPDockingPane* pPane);
|
|
|
|
CXTPDockingPane* FindPane(int nID) const;
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to save/restore the settings of the pane.
|
|
// Parameters:
|
|
// pPX - Points to a CXTPPropExchange object.
|
|
// Returns:
|
|
// TRUE if successful; otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL DoPropExchange(CXTPPropExchange* pPX);
|
|
|
|
private:
|
|
void Push(CXTPDockingPaneBase* pPane) { m_lstStack.AddTail(pPane); }
|
|
void HidePane(CXTPDockingPaneBase* pPane);
|
|
void OnSizeParent(CWnd* pParent, CRect rect, LPVOID lParam);
|
|
void Free();
|
|
void _FreeEmptyPanes();
|
|
XTPDockingPaneDirection _GetPaneDirection(const CXTPDockingPaneBase* pPane) const;
|
|
|
|
void _Save(CXTPPropExchange* pPX);
|
|
BOOL _Load(CXTPPropExchange* pPX);
|
|
BOOL _FindTabbedPaneToHide(CXTPDockingPaneAutoHidePanel* pPanel, CXTPDockingPaneBase* pPane);
|
|
void _AddPanesTo(CXTPDockingPaneTabbedContainer* pContainer, CXTPDockingPaneBaseList& lst, DWORD dwIgnoredOptions);
|
|
|
|
void MoveToTail(CXTPDockingPaneBase* pBase);
|
|
|
|
private:
|
|
CXTPDockingPaneSplitterContainer* m_pTopContainer;
|
|
CXTPDockingPaneBase* m_pClient;
|
|
|
|
CXTPDockingPaneInfoList m_lstPanes;
|
|
CXTPDockingPaneBaseList m_lstStack;
|
|
|
|
XTP_DOCKINGPANE_INFO* FindPaneInfo(CXTPDockingPane* pPane);
|
|
void RepositionMargins(CRect& rect, const CRect& lpszClientMargins);
|
|
|
|
CXTPDockingPaneAutoHidePanel* m_wndPanels[4];
|
|
CXTPDockingPaneSplitterWnd* m_wndMargins[4];
|
|
|
|
BOOL m_bUserLayout;
|
|
CXTPDockingPaneManager* m_pManager;
|
|
|
|
|
|
private:
|
|
friend class CXTPDockingPaneManager;
|
|
friend class CXTPDockingPaneBase;
|
|
friend class CXTPDockingPane;
|
|
friend class CXTPDockingPaneAutoHidePanel;
|
|
friend class CDockingPaneSite;
|
|
friend class CDockingPaneCtrl;
|
|
friend class CXTPDockingPaneSidePanel;
|
|
};
|
|
|
|
|
|
|
|
AFX_INLINE BOOL CXTPDockingPaneLayout::IsUserLayout() const {
|
|
return m_bUserLayout;
|
|
}
|
|
AFX_INLINE CXTPDockingPaneInfoList& CXTPDockingPaneLayout::GetPaneList() const {
|
|
return (CXTPDockingPaneInfoList&)m_lstPanes;
|
|
}
|
|
|
|
#endif // #if !defined(__XTPDOCKINGPANELAYOUT_H__)
|