1238 lines
33 KiB
C++
1238 lines
33 KiB
C++
|
|
// MainFrm.cpp : implementation of the CMainFrame class
|
||
|
|
//
|
||
|
|
// 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 "Pane.h"
|
||
|
|
|
||
|
|
#include "MainFrm.h"
|
||
|
|
|
||
|
|
//#define VISIO_EDIT_BACKGROUND
|
||
|
|
//#define VISIO_OFFICE2003_THEME
|
||
|
|
BOOL m_bMinMaxSample = FALSE;
|
||
|
|
|
||
|
|
#ifdef _DEBUG
|
||
|
|
#define new DEBUG_NEW
|
||
|
|
#endif
|
||
|
|
|
||
|
|
using namespace XTPDockingPanePaintThemes;
|
||
|
|
|
||
|
|
class CCustomTheme : public CXTPDockingPaneGripperedTheme
|
||
|
|
{
|
||
|
|
virtual void DrawCaption(CDC* pDC, CXTPDockingPaneTabbedContainer* pPane, CRect rc)
|
||
|
|
{
|
||
|
|
CRect rcCaption(0, 2, rc.right, m_nTitleHeight + 1);
|
||
|
|
|
||
|
|
// Drawing Frame
|
||
|
|
pDC->FillSolidRect(rcCaption, GetSysColor(COLOR_3DFACE));
|
||
|
|
pDC->Draw3dRect(1, rc.top + 1, rc.Width() -1, rcCaption.bottom + 1, GetSysColor(COLOR_WINDOW), GetSysColor(COLOR_WINDOW));
|
||
|
|
pDC->Draw3dRect(0, rc.top, rc.Width() - 1 , rcCaption.bottom + 2, GetSysColor(COLOR_3DSHADOW), GetSysColor(COLOR_3DSHADOW));
|
||
|
|
|
||
|
|
COLORREF clrText = GetSysColor(COLOR_BTNTEXT);
|
||
|
|
|
||
|
|
rcCaption.right -= 3;
|
||
|
|
DrawCaptionButtons(pDC, pPane->GetCaptionButtons(), rcCaption, clrText, 14, 2, FALSE);
|
||
|
|
|
||
|
|
// Drawing Title
|
||
|
|
if (pPane->GetSelected())
|
||
|
|
{
|
||
|
|
CRect rcText(rcCaption.left + 4, rcCaption.top + 1, rcCaption.right, rcCaption.bottom);
|
||
|
|
|
||
|
|
pDC->SetTextColor(clrText);
|
||
|
|
CXTPFontDC font(pDC, &m_fntTitle);
|
||
|
|
pDC->DrawText(pPane->GetSelected()->GetTitle(), rcText, DT_SINGLELINE|DT_END_ELLIPSIS|DT_VCENTER);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// CMainFrame
|
||
|
|
|
||
|
|
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
|
||
|
|
|
||
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
|
||
|
|
ON_WM_CREATE()
|
||
|
|
ON_COMMAND_RANGE(IDR_PANE1, IDR_PANE10, OnShowPane)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_THEME_DEFAULT, OnThemeDefault)
|
||
|
|
ON_COMMAND(ID_THEME_OFFICE, OnThemeOffice)
|
||
|
|
ON_COMMAND(ID_THEME_OFFICE2003, OnThemeOffice2003)
|
||
|
|
ON_COMMAND(ID_THEME_WINXP, OnThemeWinXP)
|
||
|
|
ON_COMMAND(ID_THEME_GRIPPERED, OnThemeGrippered)
|
||
|
|
ON_COMMAND(ID_THEME_WHIDBEY, OnThemeWhidbey)
|
||
|
|
ON_COMMAND(ID_THEME_SHORTCUTBAR2003, OnThemeShortcutBar2003)
|
||
|
|
ON_COMMAND(ID_THEME_EXPLORER, OnThemeExplorer)
|
||
|
|
ON_COMMAND(ID_THEME_OFFICE2007, OnThemeOffice2007)
|
||
|
|
ON_COMMAND(ID_THEME_WORD2007, OnThemeWord2007)
|
||
|
|
ON_UPDATE_COMMAND_UI_RANGE(ID_THEME_DEFAULT, ID_THEME_CUSTOM4, OnUpdateTheme)
|
||
|
|
|
||
|
|
ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify)
|
||
|
|
ON_COMMAND(ID_LAYOUT_EDITOR, OnLayoutEditor)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_LAYOUT_EDITOR, OnUpdateLayoutEditor)
|
||
|
|
ON_COMMAND(ID_LAYOUT_RUN, OnLayoutRun)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_LAYOUT_RUN, OnUpdateLayoutRun)
|
||
|
|
ON_WM_DESTROY()
|
||
|
|
|
||
|
|
ON_COMMAND(ID_THEME_VISIO_OFFICE2000, OnThemeVisio2000)
|
||
|
|
ON_COMMAND(ID_THEME_VISIO, OnThemeVisio)
|
||
|
|
ON_COMMAND(ID_THEME_VISIO_OFFICE2003, OnThemeVisio2003)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_THEME_CUSTOM, OnThemeCustom)
|
||
|
|
ON_COMMAND(ID_THEME_CUSTOM2, OnThemeCustom2)
|
||
|
|
ON_COMMAND(ID_THEME_CUSTOM3, OnThemeCustom3)
|
||
|
|
ON_COMMAND(ID_THEME_CUSTOM4, OnThemeCustom4)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_LAYOUT_LOADFROMFILE, OnLoadFromFile)
|
||
|
|
ON_COMMAND(ID_LAYOUT_SAVETOFILE, OnSaveToFile)
|
||
|
|
ON_COMMAND(ID_LAYOUT_LOADFROMRESOURCE, OnLoadFromResource)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_HIDECLIENT, OnHideClient)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_HIDECLIENT, OnUpdateHideClient)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_USESPLITTERTRACKER, OnUseSplitterTracker)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_USESPLITTERTRACKER, OnUpdateUseSplitterTracker)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_THEMEDFLOATINGFRAMES, OnThemedFloatingFrames)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_THEMEDFLOATINGFRAMES, OnUpdateThemedFloatingFrames)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGCONTEXT_ALPHACONTEXT, OnAlphaContext)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGCONTEXT_ALPHACONTEXT, OnUpdateAlphaContext)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGCONTEXT_DOCKINGSTICKERS, OnDockingStickers)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGCONTEXT_DOCKINGSTICKERS, OnUpdateDockingStickers)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_MINMAXSAMPLE, OnMinMaxSamlpe)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_MINMAXSAMPLE, OnUpdateMinMaxSamlpe)
|
||
|
|
ON_WM_GETMINMAXINFO()
|
||
|
|
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONBUTTONS_CLOSEBUTTON, OnCaptionButtonClose)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONBUTTONS_CLOSEBUTTON, OnUpdateCaptionButtonClose)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONBUTTONS_AUTOHIDEBUTTON, OnCaptionButtonAutoHide)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONBUTTONS_AUTOHIDEBUTTON, OnUpdateCaptionButtonAutoHide)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONBUTTONS_MENUBUTTON, OnCaptionButtonMenu)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONBUTTONS_MENUBUTTON, OnUpdateCaptionButtonMenu)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONBUTTONS_MAXIMIZERESTOREBUTTON, OnCaptionButtonMaximize)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONBUTTONS_MAXIMIZERESTOREBUTTON, OnUpdateCaptionButtonMaximize)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONS_VISIBLE, OnCaptionVisible)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONS_HORIZONTAL, OnCaptionHorizontal)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONS_VERTICAL, OnCaptionVertical)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONS_AUTOBYSIZE, OnCaptionAutoBySize)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CAPTIONS_AUTOBYPOSITION, OnCaptionAutoByPosition)
|
||
|
|
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONS_VISIBLE, OnUpdateCaptionVisible)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONS_HORIZONTAL, OnUpdateCaptionHorizontal)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONS_VERTICAL, OnUpdateCaptionVertical)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONS_AUTOBYSIZE, OnUpdateCaptionAutoBySize)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CAPTIONS_AUTOBYPOSITION, OnUpdateCaptionAutoByPosition)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_CLOSEBUTTONAFFECTS, OnCloseButtonAffects)
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_AUTOHIDEBUTTONAFFECTS, OnAutoHideButtonAffects)
|
||
|
|
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_CLOSEBUTTONAFFECTS, OnUpdateCloseButtonAffects)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_AUTOHIDEBUTTONAFFECTS, OnUpdateAutoHideButtonAffects)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGCONTEXT_SHOWWHILEDRAGGING, OnShowContentsWhileDragging)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGCONTEXT_SHOWWHILEDRAGGING, OnUpdateShowContentsWhileDragging)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_STICKYFLOATINGFRAMES, OnStickyFloatingFrames)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_STICKYFLOATINGFRAMES, OnUpdateStickyFloatingFrames)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGPANE_TRANSPARENTFLOATINGFRAMES, OnTransparentFloatingFrames)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGPANE_TRANSPARENTFLOATINGFRAMES, OnUpdateTransparentFloatingFrames)
|
||
|
|
|
||
|
|
ON_COMMAND(ID_DOCKINGCONTEXT_ENABLESIDEDOCKING, OnEnableSideDocking)
|
||
|
|
ON_UPDATE_COMMAND_UI(ID_DOCKINGCONTEXT_ENABLESIDEDOCKING, OnUpdateEnableSideDocking)
|
||
|
|
|
||
|
|
|
||
|
|
ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
|
||
|
|
ON_WM_CLOSE()
|
||
|
|
|
||
|
|
END_MESSAGE_MAP()
|
||
|
|
|
||
|
|
static UINT indicators[] =
|
||
|
|
{
|
||
|
|
ID_SEPARATOR, // status line indicator
|
||
|
|
ID_INDICATOR_CAPS,
|
||
|
|
ID_INDICATOR_NUM,
|
||
|
|
ID_INDICATOR_SCRL,
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
// CMainFrame construction/destruction
|
||
|
|
|
||
|
|
CMainFrame::CMainFrame()
|
||
|
|
: m_pEditorLayout(NULL)
|
||
|
|
, m_pRunLayout(NULL)
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
CMainFrame::~CMainFrame()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||
|
|
{
|
||
|
|
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
|
||
|
|
return -1;
|
||
|
|
|
||
|
|
LOGFONT lfIcon;
|
||
|
|
VERIFY( ::SystemParametersInfo( SPI_GETICONTITLELOGFONT, sizeof( lfIcon ), &lfIcon, 0 ) );
|
||
|
|
m_fntEdit.CreateFontIndirect(&lfIcon);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if (!m_wndStatusBar.Create(this) ||
|
||
|
|
!m_wndStatusBar.SetIndicators(indicators,
|
||
|
|
sizeof(indicators)/sizeof(UINT)))
|
||
|
|
{
|
||
|
|
TRACE0("Failed to create status bar\n");
|
||
|
|
return -1; // fail to create
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!InitCommandBars())
|
||
|
|
return -1;
|
||
|
|
|
||
|
|
XTPPaintManager()->SetTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
CXTPCommandBars* pCommandBars = GetCommandBars();
|
||
|
|
|
||
|
|
CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
|
||
|
|
pMenuBar->SetFlags(xtpFlagAddMDISysPopup);
|
||
|
|
|
||
|
|
|
||
|
|
CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
|
||
|
|
if (!pCommandBar ||
|
||
|
|
!pCommandBar->LoadToolBar(IDR_MAINFRAME))
|
||
|
|
{
|
||
|
|
TRACE0("Failed to create toolbar\n");
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Load the previous state for toolbars and menus.
|
||
|
|
LoadCommandBars(_T("CommandBars"));
|
||
|
|
|
||
|
|
|
||
|
|
// Initialize the docking pane manager and set the
|
||
|
|
// initial them for the docking panes. Do this only after all
|
||
|
|
// control bars objects have been created and docked.
|
||
|
|
m_paneManager.InstallDockingPanes(this);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeOffice2003);
|
||
|
|
m_paneManager.SetFloatingFrameCaption(_T("Panes"));
|
||
|
|
m_paneManager.SetStickyFloatingFrames(TRUE);
|
||
|
|
m_paneManager.SetThemedFloatingFrames(TRUE);
|
||
|
|
|
||
|
|
m_paneManager.SetSideDockingMargin(CRect(2, 2, 2, 2));
|
||
|
|
m_paneManager.EnableSideDocking();
|
||
|
|
|
||
|
|
m_paneManager.EnableKeyboardNavigate();
|
||
|
|
|
||
|
|
// Create docking panes.
|
||
|
|
CXTPDockingPane* pwndPane1 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE1, CRect(0, 0,200, 120), xtpPaneDockTop);
|
||
|
|
m_paneManager.CreatePane(
|
||
|
|
IDR_PANE2, CRect(0, 0,200, 120), xtpPaneDockLeft, pwndPane1);
|
||
|
|
CXTPDockingPane* pwndPane3 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE3, CRect(0, 0,200, 120), xtpPaneDockLeft);
|
||
|
|
CXTPDockingPane* pwndPane4 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE4, CRect(0, 0,200, 120), xtpPaneDockTop, pwndPane3);
|
||
|
|
CXTPDockingPane* pwndPane5 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE5, CRect(0, 0,200, 120), xtpPaneDockLeft, pwndPane4);
|
||
|
|
CXTPDockingPane* pwndPane6 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE6, CRect(0, 0,200, 120), xtpPaneDockTop, pwndPane5);
|
||
|
|
CXTPDockingPane* pwndPane7 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE7, CRect(0, 0,200, 120), xtpPaneDockTop, pwndPane6);
|
||
|
|
CXTPDockingPane* pwndPane8 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE8, CRect(0, 0,200, 120), xtpPaneDockRight);
|
||
|
|
CXTPDockingPane* pwndPane9 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE9, CRect(0, 0,200, 120), xtpPaneDockBottom, pwndPane8);
|
||
|
|
CXTPDockingPane* pwndPane10 = m_paneManager.CreatePane(
|
||
|
|
IDR_PANE10, CRect(0, 0,200, 120), xtpPaneDockBottom, pwndPane9);
|
||
|
|
|
||
|
|
// Create the layout manager for run mode. Layouts define how
|
||
|
|
// the panes will appear when docked, you can define multiple
|
||
|
|
// layouts.
|
||
|
|
|
||
|
|
// If "RunLayout" layout does not exist, save the current configuration
|
||
|
|
// as "RunLayout", otherwise load previous state.
|
||
|
|
m_pRunLayout = m_paneManager.CreateLayout();
|
||
|
|
if (!m_pRunLayout->Load(_T("RunLayout"))) {
|
||
|
|
m_paneManager.GetLayout(m_pRunLayout);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Initialize the default layout for "EditorLayout".
|
||
|
|
m_paneManager.AttachPane(
|
||
|
|
pwndPane9, pwndPane8);
|
||
|
|
m_paneManager.AttachPane(
|
||
|
|
pwndPane6, pwndPane1);
|
||
|
|
m_paneManager.AttachPane(
|
||
|
|
pwndPane4, pwndPane7);
|
||
|
|
m_paneManager.HidePane(
|
||
|
|
pwndPane7);
|
||
|
|
|
||
|
|
CXTPDockingPaneSidePanel* pPanel = m_paneManager.DockSidePane(pwndPane10, xtpPaneDockRight, CRect(0, 100, 120, 300));
|
||
|
|
pPanel->Collapse();
|
||
|
|
|
||
|
|
// If "EditorLayout" layout does not exist, save the current configuration
|
||
|
|
// as "EditorLayout", otherwise load previous state and set it as the active
|
||
|
|
// layout.
|
||
|
|
m_pEditorLayout = m_paneManager.CreateLayout();
|
||
|
|
|
||
|
|
if (m_pEditorLayout->Load(_T("EditorLayout"))) {
|
||
|
|
m_paneManager.SetLayout(m_pEditorLayout);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
m_paneManager.GetLayout(m_pEditorLayout);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Get a pointer to IDR_PANE1 and set the title.
|
||
|
|
CXTPDockingPane* pPane = m_paneManager.FindPane(IDR_PANE1);
|
||
|
|
ASSERT(pPane);
|
||
|
|
if (pPane) {
|
||
|
|
pPane->SetTitle(_T("Pane 1 - Long Title\nPane 1"));
|
||
|
|
}
|
||
|
|
|
||
|
|
// Get a pointer to IDR_PANE2 and set the title.
|
||
|
|
pPane = m_paneManager.FindPane(IDR_PANE2);
|
||
|
|
ASSERT(pPane);
|
||
|
|
if (pPane) {
|
||
|
|
pPane->SetTitle(_T("Pane 2 - No Closeable\nPane 2"));
|
||
|
|
pPane->SetOptions(xtpPaneNoCloseable);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Get a pointer to IDR_PANE3 and set the title.
|
||
|
|
pPane = m_paneManager.FindPane(IDR_PANE3);
|
||
|
|
ASSERT(pPane);
|
||
|
|
if (pPane) {
|
||
|
|
pPane->SetTitle(_T("Pane 3 - No Hideable\nPane 3"));
|
||
|
|
pPane->SetOptions(xtpPaneNoHideable);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
m_bEditor = TRUE;
|
||
|
|
|
||
|
|
// Set the icons for the docking pane tabs.
|
||
|
|
int nIDs1[] = {IDR_PANE1, IDR_PANE2, IDR_PANE3, IDR_PANE4, IDR_PANE5};
|
||
|
|
m_paneManager.SetIcons(IDB_BITMAP1, nIDs1, 5, RGB(0, 255, 0));
|
||
|
|
|
||
|
|
int nIDs2[] = {IDR_PANE6, IDR_PANE7, IDR_PANE8, IDR_PANE9, IDR_PANE10};
|
||
|
|
m_paneManager.SetIcons(IDB_BITMAP2, nIDs2, 5, RGB(0, 255, 0));
|
||
|
|
|
||
|
|
if (XTPOffice2007Images()->IsValid())
|
||
|
|
{
|
||
|
|
OnThemeOffice2007();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
OnThemeOffice2003();
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
||
|
|
{
|
||
|
|
if( !CMDIFrameWnd::PreCreateWindow(cs) )
|
||
|
|
return FALSE;
|
||
|
|
|
||
|
|
cs.lpszClass = _T("XTPMainFrame");
|
||
|
|
CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass,
|
||
|
|
CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
|
||
|
|
|
||
|
|
return TRUE;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// CMainFrame diagnostics
|
||
|
|
|
||
|
|
#ifdef _DEBUG
|
||
|
|
void CMainFrame::AssertValid() const
|
||
|
|
{
|
||
|
|
CMDIFrameWnd::AssertValid();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
||
|
|
{
|
||
|
|
CMDIFrameWnd::Dump(dc);
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif //_DEBUG
|
||
|
|
|
||
|
|
LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)
|
||
|
|
{
|
||
|
|
if (wParam == XTP_DPN_SHOWWINDOW)
|
||
|
|
{
|
||
|
|
// get a pointer to the docking pane being shown.
|
||
|
|
CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
|
||
|
|
if (!pPane->IsValid())
|
||
|
|
{
|
||
|
|
int nIndex = pPane->GetID() - IDR_PANE1;
|
||
|
|
ASSERT(nIndex >=0 && nIndex < sizeof(m_wndPanes) / sizeof(m_wndPanes[0]));
|
||
|
|
CEditPane& wndEdit = m_wndPanes[nIndex];
|
||
|
|
|
||
|
|
// create and attach the edit control for this pane.
|
||
|
|
if (!::IsWindow(wndEdit.m_hWnd))
|
||
|
|
{
|
||
|
|
if (!wndEdit.CreateEx(WS_EX_STATICEDGE, _T("EDIT"), _T(""),
|
||
|
|
WS_CHILD|ES_AUTOVSCROLL|ES_MULTILINE, CRect(0, 0,200, 120), this, pPane->GetID()))
|
||
|
|
{
|
||
|
|
TRACE0( "Error creating pane edit control.\n" );
|
||
|
|
}
|
||
|
|
wndEdit.SetFont(&m_fntEdit);
|
||
|
|
|
||
|
|
AdjustStyle(m_paneManager.GetCurrentTheme());
|
||
|
|
}
|
||
|
|
|
||
|
|
pPane->Attach(&wndEdit);
|
||
|
|
}
|
||
|
|
|
||
|
|
return TRUE; // handled
|
||
|
|
}
|
||
|
|
|
||
|
|
if (wParam == XTP_DPN_CONTEXTMENU)
|
||
|
|
{
|
||
|
|
XTP_DOCKINGPANE_CLICK* pClick = (XTP_DOCKINGPANE_CLICK*)lParam;
|
||
|
|
|
||
|
|
CMenu menu;
|
||
|
|
VERIFY(menu.LoadMenu(IDR_POPUP_PANES));
|
||
|
|
CMenu* pPopup = menu.GetSubMenu(0);
|
||
|
|
TrackPopupMenu(pPopup->GetSafeHmenu(), TPM_RIGHTBUTTON, pClick->pt.x, pClick->pt.y, 0, AfxGetMainWnd()->GetSafeHwnd(), 0);
|
||
|
|
|
||
|
|
return TRUE;
|
||
|
|
}
|
||
|
|
|
||
|
|
return FALSE;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::AdjustStyle(XTPDockingPanePaintTheme theme)
|
||
|
|
{
|
||
|
|
BOOL bBorder = FALSE, bStaticEdge = FALSE, bClientEdge = FALSE;
|
||
|
|
switch(theme)
|
||
|
|
{
|
||
|
|
case xtpPaneThemeOffice: bStaticEdge = TRUE; break;
|
||
|
|
case xtpPaneThemeDefault: bBorder = TRUE; break;
|
||
|
|
case xtpPaneThemeGrippered: bClientEdge = TRUE; break;
|
||
|
|
}
|
||
|
|
|
||
|
|
for (int i = 0; i < sizeof(m_wndPanes) / sizeof(m_wndPanes[0]); i++)
|
||
|
|
{
|
||
|
|
if (!m_wndPanes[i].m_hWnd)
|
||
|
|
{
|
||
|
|
if (!m_wndPanes[i].CreateEx(WS_EX_STATICEDGE, _T("EDIT"), _T(""),
|
||
|
|
WS_CHILD|ES_AUTOVSCROLL|ES_MULTILINE, CRect(0, 0,0, 0), this, IDR_PANE1 + i))
|
||
|
|
{
|
||
|
|
TRACE0( "Error creating pane edit control.\n" );
|
||
|
|
}
|
||
|
|
m_wndPanes[i].SetFont(&m_fntEdit);
|
||
|
|
|
||
|
|
}
|
||
|
|
m_wndPanes[i].ModifyStyle(bBorder? 0: WS_BORDER, bBorder? WS_BORDER: 0, SWP_FRAMECHANGED|SWP_DRAWFRAME);
|
||
|
|
m_wndPanes[i].ModifyStyleEx(bStaticEdge? 0: WS_EX_STATICEDGE, bStaticEdge? WS_EX_STATICEDGE: 0, SWP_FRAMECHANGED|SWP_DRAWFRAME );
|
||
|
|
m_wndPanes[i].ModifyStyleEx(bClientEdge? 0: WS_EX_CLIENTEDGE, bClientEdge? WS_EX_CLIENTEDGE: 0, SWP_FRAMECHANGED|SWP_DRAWFRAME );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// CMainFrame message handlers
|
||
|
|
|
||
|
|
void CMainFrame::OnShowPane(UINT nID)
|
||
|
|
{
|
||
|
|
m_paneManager.ShowPane(nID);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::SwitchLayout()
|
||
|
|
{
|
||
|
|
if (m_bMinMaxSample)
|
||
|
|
OnMinMaxSamlpe();
|
||
|
|
|
||
|
|
if (m_bEditor)
|
||
|
|
{
|
||
|
|
m_paneManager.GetLayout(m_pEditorLayout);
|
||
|
|
m_paneManager.SetLayout(m_pRunLayout);
|
||
|
|
} else
|
||
|
|
{
|
||
|
|
m_paneManager.GetLayout(m_pRunLayout);
|
||
|
|
m_paneManager.SetLayout(m_pEditorLayout);
|
||
|
|
}
|
||
|
|
m_bEditor = !m_bEditor;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnLayoutEditor()
|
||
|
|
{
|
||
|
|
if (!m_bEditor) SwitchLayout();
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnLayoutRun()
|
||
|
|
{
|
||
|
|
if (m_bEditor) SwitchLayout();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateLayoutEditor(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_bEditor);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateLayoutRun(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(!m_bEditor);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnDestroy()
|
||
|
|
{
|
||
|
|
if (m_bMinMaxSample)
|
||
|
|
{
|
||
|
|
OnMinMaxSamlpe();
|
||
|
|
}
|
||
|
|
|
||
|
|
CMDIFrameWnd::OnDestroy();
|
||
|
|
|
||
|
|
m_paneManager.GetLayout(m_bEditor? m_pEditorLayout: m_pRunLayout);
|
||
|
|
|
||
|
|
m_pEditorLayout->Save(_T("EditorLayout"));
|
||
|
|
m_pRunLayout->Save(_T("RunLayout"));
|
||
|
|
|
||
|
|
|
||
|
|
delete m_pEditorLayout;
|
||
|
|
delete m_pRunLayout;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeDefault()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeDefault);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeDefault);
|
||
|
|
m_nSelectedTheme = ID_THEME_DEFAULT;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2000);
|
||
|
|
}
|
||
|
|
void CMainFrame::OnThemeOffice()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeOffice);
|
||
|
|
m_nSelectedTheme = ID_THEME_OFFICE;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeWhidbey()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeVisualStudio2005);
|
||
|
|
m_nSelectedTheme = ID_THEME_WHIDBEY;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeWhidbey);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeExplorer()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeGrippered);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeExplorer);
|
||
|
|
m_nSelectedTheme = ID_THEME_EXPLORER;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeNativeWinXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::SetCommandBarsTheme(XTPPaintTheme paintTheme)
|
||
|
|
{
|
||
|
|
CXTPPaintManager::SetTheme(paintTheme);
|
||
|
|
|
||
|
|
EnableOffice2007Frame(paintTheme == xtpThemeRibbon ? GetCommandBars() : NULL);
|
||
|
|
|
||
|
|
GetCommandBars()->RedrawCommandBars();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeOffice2007()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeOffice2007);
|
||
|
|
m_nSelectedTheme = ID_THEME_OFFICE2007;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeRibbon);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeWord2007()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeWord2007);
|
||
|
|
m_nSelectedTheme = ID_THEME_WORD2007;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeRibbon);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeOffice2003()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeOffice2003);
|
||
|
|
m_nSelectedTheme = ID_THEME_OFFICE2003;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2003);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::SetDockingPaneTheme(XTPDockingPanePaintTheme theme)
|
||
|
|
{
|
||
|
|
m_paneManager.SetClientMargin(theme == xtpPaneThemeOffice2007 ? 3 : 0);
|
||
|
|
m_paneManager.SetTheme(theme);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeShortcutBar2003()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeShortcutBar2003);
|
||
|
|
m_nSelectedTheme = ID_THEME_SHORTCUTBAR2003;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2003);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeWinXP()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeGrippered);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeNativeWinXP);
|
||
|
|
m_nSelectedTheme = ID_THEME_WINXP;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeNativeWinXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeGrippered()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeGrippered);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeGrippered);
|
||
|
|
m_nSelectedTheme = ID_THEME_GRIPPERED;
|
||
|
|
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->m_clientFrame = xtpTabFrameBorder;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2000);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeVisio()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeVisio);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeVisio);
|
||
|
|
m_nSelectedTheme = ID_THEME_VISIO;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeVisio2003()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeVisio);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeOffice2003);
|
||
|
|
m_nSelectedTheme = ID_THEME_VISIO_OFFICE2003;
|
||
|
|
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->SetAppearance(xtpTabAppearanceVisio);
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->SetColor(xtpTabColorOffice2003);
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->m_bHotTracking = TRUE;
|
||
|
|
|
||
|
|
m_paneManager.GetPaintManager()->GetPanelPaintManager()->SetColor(xtpTabColorOffice2003);
|
||
|
|
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2003);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeVisio2000()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeVisio);
|
||
|
|
SetDockingPaneTheme(xtpPaneThemeDefault);
|
||
|
|
m_nSelectedTheme = ID_THEME_VISIO_OFFICE2000;
|
||
|
|
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->SetAppearance(xtpTabAppearanceVisio);
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2000);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeCustom()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeCustom);
|
||
|
|
m_paneManager.SetCustomTheme(new CCustomTheme());
|
||
|
|
m_nSelectedTheme = ID_THEME_CUSTOM;
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeCustom2()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeGrippered);
|
||
|
|
m_paneManager.SetCustomTheme(new CXTPDockingPaneDefaultTheme());
|
||
|
|
m_nSelectedTheme = ID_THEME_CUSTOM2;
|
||
|
|
|
||
|
|
CXTPTabPaintManager* pTabPaintManager = m_paneManager.GetPaintManager()->GetTabPaintManager();
|
||
|
|
|
||
|
|
pTabPaintManager->SetPosition(xtpTabPositionTop);
|
||
|
|
pTabPaintManager->m_clientFrame = xtpTabFrameBorder;
|
||
|
|
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOffice2000);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeCustom3()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeOffice);
|
||
|
|
m_nSelectedTheme = ID_THEME_CUSTOM3;
|
||
|
|
|
||
|
|
m_paneManager.SetCustomTheme(new CXTPDockingPaneOfficeTheme());
|
||
|
|
m_paneManager.GetPaintManager()->GetTabPaintManager()->SetAppearance(xtpTabAppearanceStateButtons);
|
||
|
|
m_paneManager.GetPaintManager()->GetPanelPaintManager()->SetAppearance(xtpTabAppearanceStateButtons);
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemeCustom4()
|
||
|
|
{
|
||
|
|
AdjustStyle(xtpPaneThemeVisio);
|
||
|
|
m_nSelectedTheme = ID_THEME_CUSTOM4;
|
||
|
|
|
||
|
|
m_paneManager.SetCustomTheme(new CXTPDockingPaneOfficeTheme());
|
||
|
|
|
||
|
|
CXTPTabPaintManager* pTabPaintManager = m_paneManager.GetPaintManager()->GetTabPaintManager();
|
||
|
|
pTabPaintManager->SetAppearance(xtpTabAppearanceExcel);
|
||
|
|
pTabPaintManager->m_clientFrame = xtpTabFrameBorder;
|
||
|
|
|
||
|
|
pTabPaintManager = m_paneManager.GetPaintManager()->GetPanelPaintManager();
|
||
|
|
pTabPaintManager->SetAppearance(xtpTabAppearanceExcel);
|
||
|
|
|
||
|
|
|
||
|
|
SetCommandBarsTheme(xtpThemeOfficeXP);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateTheme(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_nSelectedTheme == pCmdUI->m_nID);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnHideClient()
|
||
|
|
{
|
||
|
|
m_paneManager.HideClient(!m_paneManager.IsClientHidden());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateHideClient(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsClientHidden()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUseSplitterTracker()
|
||
|
|
{
|
||
|
|
m_paneManager.UseSplitterTracker(!m_paneManager.IsSplitterTrackerUsed());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateUseSplitterTracker(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsSplitterTrackerUsed()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnThemedFloatingFrames()
|
||
|
|
{
|
||
|
|
m_paneManager.SetThemedFloatingFrames(!m_paneManager.IsThemedFloatingFrames());
|
||
|
|
}
|
||
|
|
void CMainFrame::OnUpdateThemedFloatingFrames(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsThemedFloatingFrames()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnAlphaContext()
|
||
|
|
{
|
||
|
|
m_paneManager.SetAlphaDockingContext(!m_paneManager.IsAlphaDockingContext());
|
||
|
|
|
||
|
|
}
|
||
|
|
void CMainFrame::OnUpdateAlphaContext(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsAlphaDockingContext()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnDockingStickers()
|
||
|
|
{
|
||
|
|
m_paneManager.SetShowDockingContextStickers(!m_paneManager.IsShowDockingContextStickers());
|
||
|
|
}
|
||
|
|
void CMainFrame::OnUpdateDockingStickers(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
if (m_paneManager.IsAlphaDockingContext())
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsShowDockingContextStickers()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
pCmdUI->Enable(FALSE);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnMinMaxSamlpe()
|
||
|
|
{
|
||
|
|
m_bMinMaxSample = !m_bMinMaxSample;
|
||
|
|
|
||
|
|
if (m_bMinMaxSample)
|
||
|
|
{
|
||
|
|
CXTPDockingPane* pPane = m_paneManager.FindPane(IDR_PANE1);
|
||
|
|
ASSERT(pPane);
|
||
|
|
pPane->SetMinTrackSize(CSize(100, 100));
|
||
|
|
pPane->SetMaxTrackSize(CSize(150, 150));
|
||
|
|
|
||
|
|
pPane = m_paneManager.FindPane(IDR_PANE2);
|
||
|
|
ASSERT(pPane);
|
||
|
|
pPane->SetMinTrackSize(CSize(130, 130));
|
||
|
|
pPane->SetMaxTrackSize(CSize(130, 130));
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
CXTPDockingPane* pPane = m_paneManager.FindPane(IDR_PANE1);
|
||
|
|
ASSERT(pPane);
|
||
|
|
pPane->SetMinTrackSize(CSize(0, 0));
|
||
|
|
pPane->SetMaxTrackSize(CSize(32000, 32000));
|
||
|
|
|
||
|
|
pPane = m_paneManager.FindPane(IDR_PANE2);
|
||
|
|
ASSERT(pPane);
|
||
|
|
pPane->SetMinTrackSize(CSize(0, 0));
|
||
|
|
pPane->SetMaxTrackSize(CSize(32000, 32000));
|
||
|
|
}
|
||
|
|
|
||
|
|
for (int i = 0; i < sizeof(m_wndPanes) / sizeof(m_wndPanes[0]); i++)
|
||
|
|
{
|
||
|
|
if (m_wndPanes[i].m_hWnd)
|
||
|
|
{
|
||
|
|
m_wndPanes[i].OnSize(0, 0, 0);
|
||
|
|
m_wndPanes[i].RedrawWindow();
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
m_paneManager.RedrawPanes();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateMinMaxSamlpe(CCmdUI *pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_bMinMaxSample);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnLoadFromFile()
|
||
|
|
{
|
||
|
|
CXTPDockingPaneLayout* pLayout = m_bEditor? m_pEditorLayout: m_pRunLayout;
|
||
|
|
|
||
|
|
CString strFilter = _T("XML Document(*.xml)|*.xml|All files (*.*)|*.*||");
|
||
|
|
CFileDialog fd(TRUE, _T("xml"), NULL, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, strFilter);
|
||
|
|
if (fd.DoModal() == IDOK)
|
||
|
|
{
|
||
|
|
#ifndef _XTP_EXCLUDE_XML
|
||
|
|
if (pLayout->LoadFromFile(fd.GetPathName(), _T("Common")))
|
||
|
|
{
|
||
|
|
m_paneManager.SetLayout(pLayout);
|
||
|
|
}
|
||
|
|
#else
|
||
|
|
CFile file(fd.GetPathName(), CFile::modeRead);
|
||
|
|
CArchive ar(&file, CArchive::load);
|
||
|
|
|
||
|
|
pLayout->Serialize(ar);
|
||
|
|
if (pLayout->IsValid())
|
||
|
|
{
|
||
|
|
m_paneManager.SetLayout(pLayout);
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnSaveToFile()
|
||
|
|
{
|
||
|
|
CXTPDockingPaneLayout* pLayout = m_bEditor? m_pEditorLayout: m_pRunLayout;
|
||
|
|
|
||
|
|
CString strFilter = _T("XML Document(*.xml)|*.xml|All files (*.*)|*.*||");
|
||
|
|
CFileDialog fd(FALSE, _T("xml"), NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFilter);
|
||
|
|
if (fd.DoModal() == IDOK)
|
||
|
|
{
|
||
|
|
#ifndef _XTP_EXCLUDE_XML
|
||
|
|
|
||
|
|
m_paneManager.GetLayout(pLayout);
|
||
|
|
pLayout->SaveToFile(fd.GetPathName(), _T("Common"));
|
||
|
|
#else
|
||
|
|
m_paneManager.GetLayout(pLayout);
|
||
|
|
CFile file(fd.GetPathName(), CFile::modeCreate|CFile::modeWrite);
|
||
|
|
CArchive ar(&file, CArchive::store);
|
||
|
|
|
||
|
|
pLayout->Serialize(ar);
|
||
|
|
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnLoadFromResource()
|
||
|
|
{
|
||
|
|
|
||
|
|
#ifndef _XTP_EXCLUDE_XML
|
||
|
|
|
||
|
|
LPCTSTR lpszResourceName = MAKEINTRESOURCE(IDR_SPIRAL);
|
||
|
|
|
||
|
|
CXTPPropExchangeXMLNode px(TRUE, NULL, _T("DockingPaneLayouts"));
|
||
|
|
|
||
|
|
if (px.LoadFromResource(AfxGetInstanceHandle(), lpszResourceName, RT_HTML))
|
||
|
|
{
|
||
|
|
CXTPDockingPaneLayout* pLayout = m_bEditor? m_pEditorLayout: m_pRunLayout;
|
||
|
|
CXTPPropExchangeSection pxCommon(px.GetSection(_T("Common")));
|
||
|
|
|
||
|
|
if (pLayout->DoPropExchange(&pxCommon))
|
||
|
|
{
|
||
|
|
m_paneManager.SetLayout(pLayout);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnCustomize()
|
||
|
|
{
|
||
|
|
// Get a pointer to the command bars object.
|
||
|
|
CXTPCommandBars* pCommandBars = GetCommandBars();
|
||
|
|
if(pCommandBars != NULL)
|
||
|
|
{
|
||
|
|
// Instanciate the customize dialog object.
|
||
|
|
CXTPCustomizeSheet dlg(pCommandBars);
|
||
|
|
|
||
|
|
// Add the options page to the customize dialog.
|
||
|
|
CXTPCustomizeOptionsPage pageOptions(&dlg);
|
||
|
|
dlg.AddPage(&pageOptions);
|
||
|
|
|
||
|
|
// Add the commands page to the customize dialog.
|
||
|
|
CXTPCustomizeCommandsPage* pCommands = dlg.GetCommandsPage();
|
||
|
|
pCommands->AddCategories(IDR_PaneTYPE);
|
||
|
|
|
||
|
|
// Use the command bar manager to initialize the
|
||
|
|
// customize dialog.
|
||
|
|
pCommands->InsertAllCommandsCategory();
|
||
|
|
pCommands->InsertBuiltInMenus(IDR_PaneTYPE);
|
||
|
|
pCommands->InsertNewMenuCategory();
|
||
|
|
|
||
|
|
// Dispaly the dialog.
|
||
|
|
dlg.DoModal();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnClose()
|
||
|
|
{
|
||
|
|
// Save the current state for toolbars and menus.
|
||
|
|
SaveCommandBars(_T("CommandBars"));
|
||
|
|
CMDIFrameWnd::OnClose();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnGetMinMaxInfo(LPMINMAXINFO pMinMaxInfo)
|
||
|
|
{
|
||
|
|
CMDIFrameWnd::OnGetMinMaxInfo(pMinMaxInfo);
|
||
|
|
|
||
|
|
if (m_bMinMaxSample)
|
||
|
|
{
|
||
|
|
CXTPWindowRect rcWindow(this);
|
||
|
|
|
||
|
|
CRect rcTopPane= m_paneManager.GetTopPane()->GetPaneWindowRect();
|
||
|
|
|
||
|
|
CSize szBorder = rcWindow.Size() - rcTopPane.Size();
|
||
|
|
|
||
|
|
MINMAXINFO mmi;
|
||
|
|
m_paneManager.GetTopPane()->GetMinMaxInfo(&mmi);
|
||
|
|
|
||
|
|
pMinMaxInfo->ptMinTrackSize = CPoint(mmi.ptMinTrackSize) + szBorder;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//////////////////////////////////////////////////////////////////////////
|
||
|
|
// CEditPane
|
||
|
|
|
||
|
|
CEditPane::CEditPane()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
LRESULT CEditPane::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
||
|
|
{
|
||
|
|
if (message == WM_NCPAINT && GetExStyle() & WS_EX_STATICEDGE)
|
||
|
|
{
|
||
|
|
CRect rc;
|
||
|
|
GetWindowRect(&rc);
|
||
|
|
CWindowDC dc(this);
|
||
|
|
rc.OffsetRect(-rc.TopLeft());
|
||
|
|
|
||
|
|
COLORREF clrFrame = ((CMainFrame*)AfxGetMainWnd())->m_paneManager.GetPaintManager()->GetXtremeColor(XPCOLOR_FRAME);
|
||
|
|
|
||
|
|
dc.Draw3dRect(rc, clrFrame, clrFrame);
|
||
|
|
return TRUE;
|
||
|
|
}
|
||
|
|
return CXTPEdit::WindowProc(message, wParam, lParam);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
BEGIN_MESSAGE_MAP(CEditPane, CXTPEdit)
|
||
|
|
ON_WM_CTLCOLOR_REFLECT()
|
||
|
|
ON_WM_SIZE()
|
||
|
|
END_MESSAGE_MAP()
|
||
|
|
|
||
|
|
HBRUSH CEditPane::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
|
||
|
|
{
|
||
|
|
static CBrush brush(RGB(0xFF, 230, 191));
|
||
|
|
|
||
|
|
pDC->SetBkMode(TRANSPARENT);
|
||
|
|
|
||
|
|
if (!m_bMinMaxSample)
|
||
|
|
return GetSysColorBrush(COLOR_WINDOW);
|
||
|
|
|
||
|
|
CXTPDockingPaneManager& paneManager = ((CMainFrame*)AfxGetMainWnd())->m_paneManager;
|
||
|
|
|
||
|
|
CXTPDockingPane* pPane = paneManager.FindPane(GetDlgCtrlID());
|
||
|
|
|
||
|
|
if (pPane)
|
||
|
|
{
|
||
|
|
MINMAXINFO mmi;
|
||
|
|
pPane->GetMinMaxInfo(&mmi);
|
||
|
|
|
||
|
|
if (mmi.ptMinTrackSize.x > 0)
|
||
|
|
{
|
||
|
|
return brush;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return GetSysColorBrush(COLOR_WINDOW);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CEditPane::OnSize(UINT nType, int cx, int cy)
|
||
|
|
{
|
||
|
|
CEdit::OnSize(nType, cx, cy);
|
||
|
|
|
||
|
|
if (!m_bMinMaxSample || (cx == 0 && cy == 0))
|
||
|
|
return;
|
||
|
|
CXTPDockingPaneManager& paneManager = ((CMainFrame*)AfxGetMainWnd())->m_paneManager;
|
||
|
|
|
||
|
|
CXTPDockingPane* pPane = paneManager.FindPane(GetDlgCtrlID());
|
||
|
|
|
||
|
|
if (pPane)
|
||
|
|
{
|
||
|
|
MINMAXINFO mmi;
|
||
|
|
pPane->GetMinMaxInfo(&mmi);
|
||
|
|
|
||
|
|
CString strInfo;
|
||
|
|
|
||
|
|
if (mmi.ptMinTrackSize.x > 0)
|
||
|
|
{
|
||
|
|
CXTPWindowRect rc(this);
|
||
|
|
|
||
|
|
strInfo.Format(_T("Tracking Size:\r\nMin (%i, %i)\r\nMax (%i, %i)\r\nCurrent (%i, %i)"),
|
||
|
|
mmi.ptMinTrackSize.x, mmi.ptMinTrackSize.y, mmi.ptMaxTrackSize.x, mmi.ptMaxTrackSize.y, rc.Width(), rc.Height());
|
||
|
|
}
|
||
|
|
SetWindowText(strInfo);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState)
|
||
|
|
{
|
||
|
|
|
||
|
|
// Toggle CommandBars
|
||
|
|
GetCommandBars()->OnSetPreviewMode(bPreview);
|
||
|
|
|
||
|
|
|
||
|
|
// Toggle Docking Panes.
|
||
|
|
m_paneManager.OnSetPreviewMode(bPreview);
|
||
|
|
|
||
|
|
|
||
|
|
CMDIFrameWnd::OnSetPreviewMode(bPreview, pState);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::SwitchDefaultPaneOptions(XTPDockingPaneOptions dwOption)
|
||
|
|
{
|
||
|
|
DWORD dwOptions = m_paneManager.GetDefaultPaneOptions();
|
||
|
|
|
||
|
|
m_paneManager.SetDefaultPaneOptions(dwOptions & dwOption? dwOptions & ~dwOption: dwOptions | dwOption);
|
||
|
|
m_paneManager.RecalcFramesLayout();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionButtonClose()
|
||
|
|
{
|
||
|
|
SwitchDefaultPaneOptions(xtpPaneNoCloseable);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionButtonClose(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetDefaultPaneOptions() & xtpPaneNoCloseable? FALSE: TRUE);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionButtonAutoHide()
|
||
|
|
{
|
||
|
|
SwitchDefaultPaneOptions(xtpPaneNoHideable);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionButtonAutoHide(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetDefaultPaneOptions() & xtpPaneNoHideable? FALSE: TRUE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionButtonMenu()
|
||
|
|
{
|
||
|
|
SwitchDefaultPaneOptions(xtpPaneHasMenuButton);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionButtonMenu(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetDefaultPaneOptions() & xtpPaneHasMenuButton? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionButtonMaximize()
|
||
|
|
{
|
||
|
|
m_paneManager.ShowCaptionMaximizeButton(!m_paneManager.IsCaptionMaximizeButtonsVisible());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionButtonMaximize(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsCaptionMaximizeButtonsVisible()? TRUE: FALSE);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionVisible()
|
||
|
|
{
|
||
|
|
m_paneManager.GetPaintManager()->m_bShowCaption = !m_paneManager.GetPaintManager()->m_bShowCaption;
|
||
|
|
m_paneManager.RedrawPanes();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionHorizontal()
|
||
|
|
{
|
||
|
|
m_paneManager.SetCaptionDirection(xtpPaneCaptionHorizontal);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionVertical()
|
||
|
|
{
|
||
|
|
m_paneManager.SetCaptionDirection(xtpPaneCaptionVertical);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionAutoBySize()
|
||
|
|
{
|
||
|
|
m_paneManager.SetCaptionDirection(xtpPaneCaptionAutoBySize);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCaptionAutoByPosition()
|
||
|
|
{
|
||
|
|
m_paneManager.SetCaptionDirection(xtpPaneCaptionAutoByPosition);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionVisible(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetPaintManager()->m_bShowCaption? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionHorizontal(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetCaptionDirection() == xtpPaneCaptionHorizontal? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionVertical(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetCaptionDirection() == xtpPaneCaptionVertical? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionAutoBySize(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetCaptionDirection() == xtpPaneCaptionAutoBySize? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCaptionAutoByPosition(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetCaptionDirection() == xtpPaneCaptionAutoByPosition? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnCloseButtonAffects()
|
||
|
|
{
|
||
|
|
m_paneManager.m_bCloseGroupOnButtonClick = !m_paneManager.m_bCloseGroupOnButtonClick;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnAutoHideButtonAffects()
|
||
|
|
{
|
||
|
|
m_paneManager.m_bHideGroupOnButtonClick = !m_paneManager.m_bHideGroupOnButtonClick;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateCloseButtonAffects(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.m_bCloseGroupOnButtonClick? FALSE: TRUE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateAutoHideButtonAffects(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.m_bHideGroupOnButtonClick? FALSE: TRUE);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateShowContentsWhileDragging(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetShowContentsWhileDragging()? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnShowContentsWhileDragging()
|
||
|
|
{
|
||
|
|
m_paneManager.SetShowContentsWhileDragging(!m_paneManager.GetShowContentsWhileDragging());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnStickyFloatingFrames()
|
||
|
|
{
|
||
|
|
m_paneManager.SetStickyFloatingFrames(!m_paneManager.IsStickyFloatingFrames());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateStickyFloatingFrames(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsStickyFloatingFrames() ? TRUE: FALSE);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnTransparentFloatingFrames()
|
||
|
|
{
|
||
|
|
m_paneManager.SetFloatingFramesOpacity(m_paneManager.GetFloatingFramesOpacity() != 255 ? 255 : 200);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateTransparentFloatingFrames(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.GetFloatingFramesOpacity() != 255);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnEnableSideDocking()
|
||
|
|
{
|
||
|
|
m_paneManager.EnableSideDocking(!m_paneManager.IsSideDockingEnabled());
|
||
|
|
}
|
||
|
|
|
||
|
|
void CMainFrame::OnUpdateEnableSideDocking(CCmdUI* pCmdUI)
|
||
|
|
{
|
||
|
|
pCmdUI->SetCheck(m_paneManager.IsSideDockingEnabled());
|
||
|
|
}
|