405 lines
12 KiB
C++
405 lines
12 KiB
C++
// PageLookAndBehaviour.cpp : implementation file
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
|
// (c)1998-2008 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
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "ToolBox.h"
|
|
#include "PageLookAndBehaviour.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#if (_MSC_VER <= 1100)
|
|
|
|
void DDX_Slider(CDataExchange* pDX, int nIDC, int& value)
|
|
{
|
|
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
|
|
if (pDX->m_bSaveAndValidate)
|
|
value = (int) ::SendMessage(hWndCtrl, TBM_GETPOS, 0, 0l);
|
|
else
|
|
::SendMessage(hWndCtrl, TBM_SETPOS, TRUE, value);
|
|
}
|
|
#endif
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPageLookAndBehaviour property page
|
|
|
|
CPageLookAndBehaviour::CPageLookAndBehaviour() : CPropertyPage(CPageLookAndBehaviour::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CPageLookAndBehaviour)
|
|
m_bLargeIcons = FALSE;
|
|
m_bDrawFocusRect = TRUE;
|
|
m_bSelectOnFocus = TRUE;
|
|
m_bToggleButtons = FALSE;
|
|
m_nControlMargins = 0;
|
|
m_nGroupInnerMargins = 50;
|
|
m_nGroupOuterMargins = 0;
|
|
m_nItemsMargins = 0;
|
|
m_bDefaultMargins = TRUE;
|
|
m_bAllowDrag = TRUE;
|
|
m_bShowGroupIcons = FALSE;
|
|
m_bSmallGroupIcons = FALSE;
|
|
m_bEnableAnimation = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
CPageLookAndBehaviour::~CPageLookAndBehaviour()
|
|
{
|
|
}
|
|
|
|
|
|
void CPageLookAndBehaviour::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPageLookAndBehaviour)
|
|
DDX_Control(pDX, IDC_COMBO_THEME, m_comboTheme);
|
|
DDX_Control(pDX, IDC_COMBO_LAYOUT, m_comboLayout);
|
|
DDX_Control(pDX, IDC_COMBO_HOTTRACK, m_comboHotTrack);
|
|
DDX_Control(pDX, IDC_COMBO_BEHAVIOUR, m_comboBehaviour);
|
|
DDX_Check(pDX, IDC_CHECK_LARGEICONS, m_bLargeIcons);
|
|
DDX_Check(pDX, IDC_CHECK_DRAWFOCUSRECT, m_bDrawFocusRect);
|
|
DDX_Check(pDX, IDC_CHECK_SELECTONFOCUS, m_bSelectOnFocus);
|
|
DDX_Check(pDX, IDC_CHECK_TOGGLEBUTTONS, m_bToggleButtons);
|
|
DDX_Slider(pDX, IDC_SLIDER_CONTROL, m_nControlMargins);
|
|
DDX_Slider(pDX, IDC_SLIDER_GROUPINNER, m_nGroupInnerMargins);
|
|
DDX_Slider(pDX, IDC_SLIDER_GROUPOUTER, m_nGroupOuterMargins);
|
|
DDX_Slider(pDX, IDC_SLIDER_ITEMS, m_nItemsMargins);
|
|
DDX_Check(pDX, IDC_CHECK_DEFAULTMARGINS, m_bDefaultMargins);
|
|
DDX_Check(pDX, IDC_CHECK_ALLOWDRAG, m_bAllowDrag);
|
|
DDX_Check(pDX, IDC_CHECK_SHOWGROUPICONS, m_bShowGroupIcons);
|
|
DDX_Check(pDX, IDC_CHECK_SMALLGROUPICONS, m_bSmallGroupIcons);
|
|
DDX_Check(pDX, IDC_CHECK_ANIMATION, m_bEnableAnimation);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPageLookAndBehaviour, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CPageLookAndBehaviour)
|
|
ON_WM_CREATE()
|
|
ON_CBN_SELCHANGE(IDC_COMBO_BEHAVIOUR, OnSelchangeComboBehaviour)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_THEME, OnSelchangeComboTheme)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_LAYOUT, OnSelchangeComboLayout)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_HOTTRACK, OnSelchangeComboHottrack)
|
|
ON_BN_CLICKED(IDC_CHECK_LARGEICONS, OnCheckLargeicons)
|
|
ON_BN_CLICKED(IDC_CHECK_DRAWFOCUSRECT, OnCheckDrawfocusrect)
|
|
ON_BN_CLICKED(IDC_CHECK_SELECTONFOCUS, OnCheckSelectonfocus)
|
|
ON_BN_CLICKED(IDC_CHECK_TOGGLEBUTTONS, OnCheckTogglebuttons)
|
|
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_CONTROL, OnReleasedcaptureSliderControl)
|
|
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_GROUPINNER, OnReleasedcaptureSliderGroupinner)
|
|
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_GROUPOUTER, OnReleasedcaptureSliderGroupouter)
|
|
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_ITEMS, OnReleasedcaptureSliderItems)
|
|
ON_BN_CLICKED(IDC_CHECK_DEFAULTMARGINS, OnCheckDefaultmargins)
|
|
ON_BN_CLICKED(IDC_CHECK_ALLOWDRAG, OnCheckAllowDrag)
|
|
ON_BN_CLICKED(IDC_CHECK_ANIMATION, OnCheckAnimation)
|
|
ON_BN_CLICKED(IDC_CHECK_SHOWGROUPICONS, OnCheckShowGroupIcons)
|
|
ON_BN_CLICKED(IDC_CHECK_SMALLGROUPICONS, OnCheckSmallGroupIcons)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPageLookAndBehaviour message handlers
|
|
|
|
|
|
int CPageLookAndBehaviour::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CPropertyPage::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
CXTPTaskPanel* CPageLookAndBehaviour::GetTaskPanel()
|
|
{
|
|
CWnd* pSplitterWnd = GetParentFrame()->GetDlgItem(AFX_IDW_PANE_FIRST);
|
|
ASSERT_KINDOF(CSplitterWnd, pSplitterWnd);
|
|
|
|
return (CXTPTaskPanel*)pSplitterWnd->GetDlgItem(AFX_IDW_PANE_FIRST);
|
|
}
|
|
|
|
|
|
BOOL CPageLookAndBehaviour::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
m_comboLayout.AddString(_T("xtpTaskItemLayoutDefault"));
|
|
m_comboLayout.AddString(_T("xtpTaskItemLayoutImages"));
|
|
m_comboLayout.AddString(_T("xtpTaskItemLayoutImagesWithText"));
|
|
m_comboLayout.AddString(_T("xtpTaskItemLayoutImagesWithTextBelow"));
|
|
m_comboLayout.SetCurSel(0);
|
|
|
|
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightDefault"));
|
|
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightText"));
|
|
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightImage"));
|
|
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightItem"));
|
|
m_comboHotTrack.AddString(_T("xtpTaskPanelHighlightNone"));
|
|
m_comboHotTrack.SetCurSel(0);
|
|
|
|
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourExplorer"));
|
|
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourList"));
|
|
m_comboBehaviour.AddString(_T("xtpTaskPanelBehaviourToolbox"));
|
|
m_comboBehaviour.SetCurSel(2);
|
|
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2000"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2003"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeNativeWinXP"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2000Plain"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeOfficeXPPlain"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeOffice2003Plain"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeNativeWinXPPlain"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeToolbox"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeToolboxWhidbey"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeListView"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeListViewOfficeXP"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeListViewOffice2003"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeShortcutBarOffice2003"));
|
|
m_comboTheme.AddString(_T("xtpTaskPanelThemeShortcutBarOffice2007"));
|
|
m_comboTheme.SetCurSel(7);
|
|
|
|
GetDlgItem(IDC_CHECK_TOGGLEBUTTONS)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_CHECK_SMALLGROUPICONS)->EnableWindow(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnSelchangeComboBehaviour()
|
|
{
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetBehaviour((XTPTaskPanelBehaviour)m_comboBehaviour.GetCurSel());
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnSelchangeComboTheme()
|
|
{
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
XTPTaskPanelPaintTheme themeCurrent = (XTPTaskPanelPaintTheme) m_comboTheme.GetCurSel();
|
|
pTaskPanel->SetTheme(themeCurrent);
|
|
pTaskPanel->Reposition();
|
|
|
|
OnThemeChanged();
|
|
|
|
CXTPCommandBars* pCommandBars = ((CXTPFrameWnd*)AfxGetMainWnd())->GetCommandBars();
|
|
CXTPPaintManager::SetTheme(
|
|
themeCurrent == xtpTaskPanelThemeOffice2000? xtpThemeOffice2000:
|
|
themeCurrent ==xtpTaskPanelThemeNativeWinXP? xtpThemeNativeWinXP:
|
|
themeCurrent ==xtpTaskPanelThemeOffice2000Plain? xtpThemeOffice2000:
|
|
themeCurrent ==xtpTaskPanelThemeOfficeXPPlain? xtpThemeOfficeXP:
|
|
themeCurrent ==xtpTaskPanelThemeNativeWinXPPlain? xtpThemeNativeWinXP:
|
|
themeCurrent ==xtpTaskPanelThemeToolbox? xtpThemeOfficeXP:
|
|
themeCurrent ==xtpTaskPanelThemeToolboxWhidbey? xtpThemeOfficeXP:
|
|
themeCurrent ==xtpTaskPanelThemeListView? xtpThemeOffice2000:
|
|
themeCurrent ==xtpTaskPanelThemeListViewOfficeXP? xtpThemeOfficeXP:
|
|
themeCurrent ==xtpTaskPanelThemeShortcutBarOffice2003? xtpThemeOffice2003:
|
|
themeCurrent ==xtpTaskPanelThemeShortcutBarOffice2007? xtpThemeRibbon:
|
|
xtpThemeOffice2003);
|
|
pCommandBars->RedrawCommandBars();
|
|
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnSelchangeComboLayout()
|
|
{
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetItemLayout((XTPTaskPanelItemLayout)m_comboLayout.GetCurSel());
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnSelchangeComboHottrack()
|
|
{
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetHotTrackStyle((XTPTaskPanelHotTrackStyle)m_comboHotTrack.GetCurSel());
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckLargeicons()
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetIconSize(m_bLargeIcons? CSize(32, 32): CSize(16, 16));
|
|
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckDrawfocusrect()
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->DrawFocusRect(m_bDrawFocusRect);
|
|
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckSelectonfocus()
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetSelectItemOnFocus(m_bSelectOnFocus);
|
|
|
|
if (m_bSelectOnFocus)
|
|
{
|
|
m_bToggleButtons = FALSE;
|
|
UpdateData(FALSE);
|
|
}
|
|
GetDlgItem(IDC_CHECK_TOGGLEBUTTONS)->EnableWindow(!m_bSelectOnFocus);
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckTogglebuttons()
|
|
{
|
|
UpdateData();
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnReleasedcaptureSliderControl(NMHDR* /*pNMHDR*/, LRESULT* pResult)
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
int nMargin = 0 + m_nControlMargins * 12 / 100;
|
|
int nGroupSpacing = 0 + m_nControlMargins * 15 / 100;
|
|
pTaskPanel->SetMargins(nMargin, nMargin, nMargin, nMargin, nGroupSpacing);
|
|
|
|
m_bDefaultMargins = FALSE;
|
|
UpdateData(FALSE);
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnReleasedcaptureSliderGroupinner(NMHDR* /*pNMHDR*/, LRESULT* pResult)
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
int nMargin = 0 + m_nGroupInnerMargins * 20 / 100;
|
|
pTaskPanel->GetPaintManager()->m_rcGroupInnerMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
|
|
pTaskPanel->Reposition();
|
|
|
|
m_bDefaultMargins = FALSE;
|
|
UpdateData(FALSE);
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnReleasedcaptureSliderGroupouter(NMHDR* /*pNMHDR*/, LRESULT* pResult)
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
int nMargin = 0 + m_nGroupOuterMargins * 13 / 100;
|
|
pTaskPanel->GetPaintManager()->m_rcGroupOuterMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
|
|
pTaskPanel->Reposition();
|
|
|
|
m_bDefaultMargins = FALSE;
|
|
UpdateData(FALSE);
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnReleasedcaptureSliderItems(NMHDR* /*pNMHDR*/, LRESULT* pResult)
|
|
{
|
|
UpdateData();
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
int nMargin = 3 + m_nItemsMargins * 15 / 100;
|
|
pTaskPanel->GetPaintManager()->m_rcItemOuterMargins.SetRect(nMargin, nMargin, nMargin, nMargin);
|
|
pTaskPanel->Reposition();
|
|
|
|
m_bDefaultMargins = FALSE;
|
|
UpdateData(FALSE);
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnThemeChanged()
|
|
{
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
m_nGroupInnerMargins = 50;
|
|
m_nGroupOuterMargins = 0;
|
|
m_nItemsMargins = 0;
|
|
|
|
m_nControlMargins = pTaskPanel->GetPaintManager()->GetControlMargins(pTaskPanel).left * 100 / 12;
|
|
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckDefaultmargins()
|
|
{
|
|
UpdateData();
|
|
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetTheme((XTPTaskPanelPaintTheme)m_comboTheme.GetCurSel());
|
|
pTaskPanel->SetMargins(CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT);
|
|
|
|
pTaskPanel->Reposition();
|
|
|
|
OnThemeChanged();
|
|
m_nControlMargins = pTaskPanel->GetPaintManager()->m_rcControlMargins.left * 100 / 12;
|
|
|
|
UpdateData(FALSE);
|
|
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckAnimation()
|
|
{
|
|
UpdateData();
|
|
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->EnableAnimation(m_bEnableAnimation);
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckAllowDrag()
|
|
{
|
|
UpdateData();
|
|
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->AllowDrag(m_bAllowDrag);
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckShowGroupIcons()
|
|
{
|
|
UpdateData();
|
|
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
if (m_bShowGroupIcons)
|
|
{
|
|
pTaskPanel->GetImageManager()->SetIcon(IDR_MAINFRAME, IDR_MAINFRAME);
|
|
}
|
|
else
|
|
{
|
|
pTaskPanel->GetImageManager()->RemoveIcon(IDR_MAINFRAME);
|
|
}
|
|
|
|
pTaskPanel->Reposition();
|
|
|
|
GetDlgItem(IDC_CHECK_SMALLGROUPICONS)->EnableWindow(m_bShowGroupIcons);
|
|
}
|
|
|
|
void CPageLookAndBehaviour::OnCheckSmallGroupIcons()
|
|
{
|
|
UpdateData();
|
|
|
|
CXTPTaskPanel* pTaskPanel = GetTaskPanel();
|
|
|
|
pTaskPanel->SetGroupIconSize(m_bSmallGroupIcons? CSize(16, 16): CSize(32, 32));
|
|
}
|