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.
340 lines
13 KiB
C++
340 lines
13 KiB
C++
// XTPMarkupStackPanel.h: interface for the CXTPMarkupStackPanel class.
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO 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(__XTPMARKUPSTACKPANEL_H__)
|
|
#define __XTPMARKUPSTACKPANEL_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
//===========================================================================
|
|
// Summary: CXTPMarkupStackPanel is CXTPMarkupPanel derived class. It implements StackPanel XAML Tag
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPMarkupStackPanel : public CXTPMarkupPanel
|
|
{
|
|
DECLARE_MARKUPCLASS(CXTPMarkupStackPanel)
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPMarkupStackPanel object
|
|
//-----------------------------------------------------------------------
|
|
CXTPMarkupStackPanel();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPMarkupStackPanel object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPMarkupStackPanel();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set orientation of child elements inside StackPanel
|
|
// Parameters:
|
|
// orientation - xtpMarkupOrientationHorizontal to position elements horizontally; xtpMarkupOrientationVertical otherwise.
|
|
//-----------------------------------------------------------------------
|
|
void SetOrientation(XTPMarkupOrientation orientation);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to get current orientation of child elements inside StackPanel
|
|
// Returns:xtpMarkupOrientationHorizontal to position elements horizontally; xtpMarkupOrientationVertical otherwise.
|
|
//-----------------------------------------------------------------------
|
|
XTPMarkupOrientation GetOrientation() const;
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// Implementation
|
|
virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
|
|
virtual CSize ArrangeOverride(CSize szFinalSize);
|
|
|
|
public:
|
|
static CXTPMarkupDependencyProperty* m_pOrientationProperty;
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: CXTPMarkupWrapPanel is CXTPMarkupPanel derived class. It implements WrapPanel XAML Tag
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPMarkupWrapPanel : public CXTPMarkupPanel
|
|
{
|
|
DECLARE_MARKUPCLASS(CXTPMarkupWrapPanel)
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPMarkupWrapPanel object
|
|
//-----------------------------------------------------------------------
|
|
CXTPMarkupWrapPanel();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPMarkupWrapPanel object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPMarkupWrapPanel();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set orientation of child elements inside StackPanel
|
|
// Parameters:
|
|
// orientation - xtpMarkupOrientationHorizontal to position elements horizontally; xtpMarkupOrientationVertical otherwise.
|
|
//-----------------------------------------------------------------------
|
|
void SetOrientation(XTPMarkupOrientation orientation);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to get current orientation of child elements inside StackPanel
|
|
// Returns:xtpMarkupOrientationHorizontal to position elements horizontally; xtpMarkupOrientationVertical otherwise.
|
|
//-----------------------------------------------------------------------
|
|
XTPMarkupOrientation GetOrientation() const;
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// Implementation
|
|
|
|
virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
|
|
virtual CSize ArrangeOverride(CSize szFinalSize);
|
|
|
|
protected:
|
|
void ArrangeLine(int nPanelHeight, int nLineHeight, int nFirstElement, int nCount);
|
|
|
|
public:
|
|
static CXTPMarkupDependencyProperty* m_pOrientationProperty;
|
|
static CXTPMarkupDependencyProperty* m_pItemHeightProperty;
|
|
static CXTPMarkupDependencyProperty* m_pItemWidthProperty;
|
|
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
};
|
|
|
|
enum XTPMarkupDock
|
|
{
|
|
xtpMarkupDockLeft,
|
|
xtpMarkupDockTop,
|
|
xtpMarkupDockRight,
|
|
xtpMarkupDockBottom
|
|
};
|
|
|
|
//===========================================================================
|
|
// Summary: CXTPMarkupDockPanel is CXTPMarkupPanel derived class. It implements DockPanel XAML Tag
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPMarkupDockPanel : public CXTPMarkupPanel
|
|
{
|
|
DECLARE_MARKUPCLASS(CXTPMarkupDockPanel)
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPMarkupDockPanel object
|
|
//-----------------------------------------------------------------------
|
|
CXTPMarkupDockPanel();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPMarkupDockPanel object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPMarkupDockPanel();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set dock position of the child elements
|
|
// Parameters:
|
|
// pElement - Child element to set dock position to
|
|
// dock - Dock Position of element
|
|
//-----------------------------------------------------------------------
|
|
static void AFX_CDECL SetDock(CXTPMarkupUIElement* pElement, XTPMarkupDock dock);
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines dock position of the child elements
|
|
// Parameters:
|
|
// pElement - Child element to get dock position.
|
|
//-----------------------------------------------------------------------
|
|
static XTPMarkupDock AFX_CDECL GetDock(CXTPMarkupUIElement* pElement);
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to fill last child element inside whole client area of DockPanel.
|
|
// Parameters:
|
|
// bLastChildFill - TRUE to fill last child element inside client area.
|
|
//-----------------------------------------------------------------------
|
|
void SetLastChildFill(BOOL bLastChildFill);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines if last child element is filled inside whole client area of DockPanel.
|
|
// Returns:
|
|
// TRUE to fill last child element inside client area; FALSE otherwise
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetLastChildFill() const;
|
|
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// Implementation
|
|
virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
|
|
virtual CSize ArrangeOverride(CSize szFinalSize);
|
|
|
|
private:
|
|
static void AFX_CDECL OnDockChanged(CXTPMarkupObject* d, CXTPMarkupPropertyChangedEventArgs* e);
|
|
static CXTPMarkupObject* AFX_CDECL ConvertDock(CXTPMarkupBuilder* pBuilder, CXTPMarkupObject* pObject);
|
|
|
|
public:
|
|
static CXTPMarkupDependencyProperty* m_pLastChildFillProperty;
|
|
static CXTPMarkupDependencyProperty* m_pDockProperty;
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
|
|
};
|
|
|
|
|
|
//===========================================================================
|
|
// Summary: CXTPMarkupUniformGrid is CXTPMarkupPanel derived class. It implements UniformGrid XAML Tag
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPMarkupUniformGrid : public CXTPMarkupPanel
|
|
{
|
|
DECLARE_MARKUPCLASS(CXTPMarkupUniformGrid)
|
|
protected:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPMarkupUniformGrid object
|
|
//-----------------------------------------------------------------------
|
|
CXTPMarkupUniformGrid();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPMarkupUniformGrid object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPMarkupUniformGrid();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set columns number of the Grid
|
|
// Parameters:
|
|
// nColumns - Column count to set
|
|
//-----------------------------------------------------------------------
|
|
void SetColumns(int nColumns);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines number of columns of the Grid
|
|
// Returns:
|
|
// Number of columns of the Grid
|
|
//-----------------------------------------------------------------------
|
|
int GetColumns() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set rows number of the Grid
|
|
// Parameters:
|
|
// nRows - rows count to set
|
|
//-----------------------------------------------------------------------
|
|
void SetRows(int nRows);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines number of rows of the Grid
|
|
// Returns:
|
|
// Number of rows of the Grid
|
|
//-----------------------------------------------------------------------
|
|
int GetRows() const;
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this method to set first column for first row of the grid
|
|
// Parameters:
|
|
// nFirstColumn - First column position of first row
|
|
//-----------------------------------------------------------------------
|
|
void SetFirstColumn(int nFirstColumn);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Determines position of first column of first row
|
|
// Parameters:
|
|
// First column position of first row
|
|
//-----------------------------------------------------------------------
|
|
int GetFirstColumn() const;
|
|
|
|
protected:
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
// Implementation
|
|
virtual CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
|
|
virtual CSize ArrangeOverride(CSize szFinalSize);
|
|
|
|
private:
|
|
void UpdateComputedValues();
|
|
|
|
private:
|
|
int m_nColumns;
|
|
int m_nRows;
|
|
int m_nFirstColumn;
|
|
|
|
public:
|
|
static CXTPMarkupDependencyProperty* m_pFirstColumnProperty;
|
|
static CXTPMarkupDependencyProperty* m_pColumnsProperty;
|
|
static CXTPMarkupDependencyProperty* m_pRowsProperty;
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
AFX_INLINE void CXTPMarkupDockPanel::SetLastChildFill(BOOL bLastChildFill) {
|
|
SetValue(m_pLastChildFillProperty, CXTPMarkupBool::CreateValue(bLastChildFill));
|
|
}
|
|
AFX_INLINE BOOL CXTPMarkupDockPanel::GetLastChildFill() const {
|
|
CXTPMarkupBool* pLastChildFill = MARKUP_STATICCAST(CXTPMarkupBool, GetValue(m_pLastChildFillProperty));
|
|
return pLastChildFill != NULL ? (BOOL)*pLastChildFill : TRUE;
|
|
}
|
|
AFX_INLINE int CXTPMarkupUniformGrid::GetColumns() const {
|
|
CXTPMarkupInt* pColumns = MARKUP_STATICCAST(CXTPMarkupInt, GetValue(m_pColumnsProperty));
|
|
return pColumns != NULL ? (int)*pColumns : 0;
|
|
}
|
|
AFX_INLINE int CXTPMarkupUniformGrid::GetRows() const{
|
|
CXTPMarkupInt* pRows = MARKUP_STATICCAST(CXTPMarkupInt, GetValue(m_pRowsProperty));
|
|
return pRows != NULL ? (int)*pRows : 0;
|
|
}
|
|
AFX_INLINE int CXTPMarkupUniformGrid::GetFirstColumn() const {
|
|
CXTPMarkupInt* pFirstColumn = MARKUP_STATICCAST(CXTPMarkupInt, GetValue(m_pFirstColumnProperty));
|
|
return pFirstColumn != NULL ? (int)*pFirstColumn : 0;
|
|
}
|
|
AFX_INLINE void CXTPMarkupUniformGrid::SetFirstColumn(int nFirstColumn){
|
|
SetValue(m_pFirstColumnProperty, new CXTPMarkupInt(nFirstColumn));
|
|
}
|
|
AFX_INLINE void CXTPMarkupUniformGrid::SetColumns(int nColumns){
|
|
SetValue(m_pColumnsProperty, new CXTPMarkupInt(nColumns));
|
|
}
|
|
AFX_INLINE void CXTPMarkupUniformGrid::SetRows(int nRows){
|
|
SetValue(m_pRowsProperty, new CXTPMarkupInt(nRows));
|
|
}
|
|
|
|
|
|
#endif // !defined(__XTPMARKUPSTACKPANEL_H__)
|