// RibbonControlsView.cpp // // (c)1998-2025 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 "RibbonControls.h" #include "RibbonControlsDoc.h" #include "RibbonControlsView.h" #include "MainFrm.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView IMPLEMENT_DYNCREATE(CRibbonControlsView, CView) BEGIN_MESSAGE_MAP(CRibbonControlsView, CView) //{{AFX_MSG_MAP(CRibbonControlsView) //}}AFX_MSG_MAP // Standard printing commands ON_WM_CREATE() ON_COMMAND(ID_EDIT_PASTE, OnEmptyCommand) ON_COMMAND(ID_EDIT_CUT, OnEmptyCommand) ON_COMMAND(ID_EDIT_COPY, OnEmptyCommand) ON_COMMAND(ID_EDIT_SELECT_ALL, OnEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEmptyCommand) ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) ON_COMMAND_RANGE(ID_BUTTONS_LARGE_SIMPLEBUTTON, ID_BUTTONS_LARGE_SPLITPOPUPBUTTON, OnEmptyCommand) ON_COMMAND_RANGE(ID_BUTTONS_SMALL_SIMPLEBUTTON, ID_BUTTONS_SMALL_SPLITPOPUPBUTTON, OnEmptyCommand) ON_COMMAND_RANGE(ID_BUTTONS_POPUP_OPTION1, ID_BUTTONS_POPUP_OPTION3, OnEmptyCommand) ON_COMMAND(ID_BUTTONS_LARGE_TOGGLEBUTTON, OnToggleButton) ON_UPDATE_COMMAND_UI(ID_BUTTONS_LARGE_TOGGLEBUTTON, OnUpdateToggleButton) ON_COMMAND_RANGE(ID_BUTTONS_CHECKBOX1, ID_BUTTONS_CHECKBOX3, OnCheckbox) ON_COMMAND_RANGE(ID_BUTTONS_RADIOBUTTON1, ID_BUTTONS_RADIOBUTTON3, OnRadioButton) ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTONS_CHECKBOX1, ID_BUTTONS_CHECKBOX3, OnUpdateCheckbox) ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTONS_RADIOBUTTON1, ID_BUTTONS_RADIOBUTTON3, OnUpdateRadioButton) ON_UPDATE_COMMAND_UI_RANGE(ID_EDITORS_EDIT, ID_EDITORS_COMBO2, OnEnableButton) ON_UPDATE_COMMAND_UI_RANGE(ID_EDITORSEX_EDIT, ID_EDITORSEX_COMBO2, OnEnableButton) ON_UPDATE_COMMAND_UI_RANGE(ID_EDITORS_GALLERY_FONT, ID_EDITORS_GALLERY_POPUP, OnEnableButton) ON_UPDATE_COMMAND_UI(ID_BUTTON_GALLERY_FONT_FACE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_BUTTON_GALLERY_STYLES, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_BUTTON_GALLERY_SHAPES, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_BUTTON_GALLERY_TABLE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_BUTTON_GALLERY_COLOR, OnUpdateGalleryTextColor) ON_UPDATE_COMMAND_UI(ID_SUBMENU_GALLERY, OnUpdateGalleryStyles) ON_UPDATE_COMMAND_UI(ID_SUBMENU_SAVESTYLE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_SUBMENU_APPLYSTYLE, OnUpdateEmptyCommand) ON_UPDATE_COMMAND_UI(ID_SUBMENU_SHAPES, OnUpdateGalleryShapes) ON_UPDATE_COMMAND_UI(ID_SUBMENU_FONT_COLOR, OnUpdateGalleryTextColor) ON_COMMAND(ID_SUBMENU_SAVESTYLE, OnEmptyCommand) ON_COMMAND(ID_SUBMENU_APPLYSTYLE, OnEmptyCommand) ON_XTP_EXECUTE(ID_SUBMENU_GALLERY, OnGalleryStyles) ON_XTP_EXECUTE(ID_SUBMENU_SHAPES, OnGalleryShapes) ON_XTP_EXECUTE(ID_SUBMENU_FONT_COLOR, OnGalleryTextColor) ON_COMMAND_RANGE(ID_BUTTON_REDUCTION_DISABLED, ID_BUTTON_REDUCTION_FULL_REDUCTION, OnRadioButtonReductionLevels) ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTON_REDUCTION_DISABLED, ID_BUTTON_REDUCTION_FULL_REDUCTION, OnUpdateRadioButtonReductionLevels) ON_UPDATE_COMMAND_UI_RANGE(ID_BUTTON_REDUCTION_1, ID_BUTTON_REDUCTION_12, OnEnableButton) ON_COMMAND_RANGE(ID_BUTTON_REDUCTION_1, ID_BUTTON_REDUCTION_12, OnEmptyCommand) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView construction/destruction CRibbonControlsView::CRibbonControlsView() { m_bCheckbox[0] = TRUE; m_bCheckbox[1] = FALSE; m_bCheckbox[2] = FALSE; m_nRadioButton = 1; m_bToggleButton = FALSE; m_nStyle = 0; m_nShape = 0; m_clr = COLOR_WINDOWTEXT; } CRibbonControlsView::~CRibbonControlsView() { } BOOL CRibbonControlsView::PreCreateWindow(CREATESTRUCT& cs) { if (!CView::PreCreateWindow(cs)) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.dwExStyle &= ~(WS_EX_CLIENTEDGE); return TRUE; } int CRibbonControlsView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) { TRACE(_T("ERROR: Unable to create application view.\n")); return -1; } ModifyStyleEx(WS_EX_CLIENTEDGE, 0); OnThemeChanged(); return 0; } void CRibbonControlsView::OnEmptyCommand() { AfxMessageBox(_T("TODO: Add your command handler")); } void CRibbonControlsView::OnEmptyCommand(UINT) { REPORT_NOT_IMPLEMENTED(); } void CRibbonControlsView::OnUpdateEmptyCommand(CCmdUI* pCmdUI) { _ASSERTE(NULL != pCmdUI); pCmdUI->Enable(TRUE); } CMainFrame* CRibbonControlsView::GetMainFrame() const { CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, AfxGetMainWnd()); ASSERT_VALID(pMainFrame); return pMainFrame; } void CRibbonControlsView::OnThemeChanged() { } ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView drawing void CRibbonControlsView::OnDraw(CDC* pDC) { UNREFERENCED_PARAMETER(pDC); CRibbonControlsDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); } ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView printing BOOL CRibbonControlsView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CRibbonControlsView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { } void CRibbonControlsView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { } ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView diagnostics #ifdef _DEBUG void CRibbonControlsView::AssertValid() const { CView::AssertValid(); } void CRibbonControlsView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CRibbonControlsDoc* CRibbonControlsView::GetDocument() const { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRibbonControlsDoc))); return (CRibbonControlsDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CRibbonControlsView message handlers void CRibbonControlsView::OnToggleButton() { m_bToggleButton ^= 1; } void CRibbonControlsView::OnUpdateToggleButton(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bToggleButton); } void CRibbonControlsView::OnCheckbox(UINT nID) { m_bCheckbox[nID - ID_BUTTONS_CHECKBOX1] ^= 1; } void CRibbonControlsView::OnRadioButton(UINT nID) { m_nRadioButton = nID - ID_BUTTONS_RADIOBUTTON1; } void CRibbonControlsView::OnUpdateCheckbox(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_bCheckbox[(int)pCmdUI->m_nID - ID_BUTTONS_CHECKBOX1]); } void CRibbonControlsView::OnUpdateRadioButton(CCmdUI* pCmdUI) { pCmdUI->SetCheck((int)pCmdUI->m_nID - ID_BUTTONS_RADIOBUTTON1 == m_nRadioButton); } void CRibbonControlsView::OnEnableButton(CCmdUI* pCmdUI) { pCmdUI->Enable(); } void CRibbonControlsView::OnGalleryStyles(NMHDR* pNMHDR, LRESULT* pResult) { NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR; CXTPControlGallery* pGallery = DYNAMIC_DOWNCAST(CXTPControlGallery, tagNMCONTROL->pControl); if (pGallery) { CXTPControlGalleryItem* pItem = pGallery->GetItem(pGallery->GetSelectedItem()); if (pItem) { m_nStyle = pItem->GetID(); REPORT_NOT_IMPLEMENTED(); } *pResult = TRUE; // Handled } } void CRibbonControlsView::OnUpdateGalleryStyles(CCmdUI* pCmdUI) { CXTPControlGallery* pGallery = DYNAMIC_DOWNCAST(CXTPControlGallery, CXTPControl::FromUI(pCmdUI)); if (pGallery) { if (pGallery->GetCheckedItem() != m_nStyle) { pGallery->SetCheckedItem(m_nStyle); pGallery->EnsureVisible(m_nStyle); } } pCmdUI->Enable(TRUE); } void CRibbonControlsView::OnGalleryShapes(NMHDR* pNMHDR, LRESULT* pResult) { NMXTPCONTROL* tagNMCONTROL = reinterpret_cast(pNMHDR); CXTPControlGallery* pGallery = DYNAMIC_DOWNCAST(CXTPControlGallery, tagNMCONTROL->pControl); if (pGallery) { CXTPControlGalleryItem* pItem = pGallery->GetItem(pGallery->GetSelectedItem()); if (pItem) { m_nShape = pItem->GetID(); REPORT_NOT_IMPLEMENTED(); } *pResult = TRUE; // Handled } } void CRibbonControlsView::OnUpdateGalleryShapes(CCmdUI* pCmdUI) { CXTPControlGallery* pGallery = DYNAMIC_DOWNCAST(CXTPControlGallery, CXTPControl::FromUI(pCmdUI)); if (pGallery) { pGallery->SetCheckedItem(m_nShape); } pCmdUI->Enable(TRUE); } void CRibbonControlsView::OnGalleryTextColor(NMHDR* pNMHDR, LRESULT* pResult) { NMXTPCONTROL* tagNMCONTROL = (NMXTPCONTROL*)pNMHDR; CXTPControlGallery* pControl = DYNAMIC_DOWNCAST(CXTPControlGallery, tagNMCONTROL->pControl); if (pControl) { CXTPControlGalleryItem* pItem = pControl->GetItem(pControl->GetSelectedItem()); if (pItem) { m_clr = (COLORREF)pItem->GetID(); REPORT_NOT_IMPLEMENTED(); } *pResult = TRUE; // Handled } *pResult = 1; } void CRibbonControlsView::OnUpdateGalleryTextColor(CCmdUI* pCmdUI) { CXTPControlGallery* pControl = DYNAMIC_DOWNCAST(CXTPControlGallery, CXTPControl::FromUI(pCmdUI)); if (pControl) { pControl->SetCheckedItem(m_clr); } pCmdUI->Enable(TRUE); } void CRibbonControlsView::OnRadioButtonReductionLevels(UINT nID) { switch (nID) { case ID_BUTTON_REDUCTION_DISABLED: GetMainFrame()->m_pReductionControls->AllowReduce(xtpRibbonGroupReductionDisabled); break; case ID_BUTTON_REDUCTION_FULL_CAPTION: GetMainFrame()->m_pReductionControls->AllowReduce(xtpRibbonGroupFullCaptionDontHide); break; case ID_BUTTON_REDUCTION_REDUCE_CAPTION: GetMainFrame()->m_pReductionControls->AllowReduce(xtpRibbonGroupReduceCaptionDontHide); break; case ID_BUTTON_REDUCTION_FULL_REDUCTION: GetMainFrame()->m_pReductionControls->AllowReduce(xtpRibbonGroupFullReduction); break; default: _ASSERTE(FALSE); break; } } void CRibbonControlsView::OnUpdateRadioButtonReductionLevels(CCmdUI* pCmdUI) { BOOL val = FALSE; int reduceLevel = GetMainFrame()->m_pReductionControls->GetAllowReduceLevel(); switch (pCmdUI->m_nID) { case ID_BUTTON_REDUCTION_DISABLED: val = (reduceLevel == xtpRibbonGroupReductionDisabled) ? TRUE : FALSE; break; case ID_BUTTON_REDUCTION_FULL_CAPTION: val = (reduceLevel == xtpRibbonGroupFullCaptionDontHide) ? TRUE : FALSE; break; case ID_BUTTON_REDUCTION_REDUCE_CAPTION: val = (reduceLevel == xtpRibbonGroupReduceCaptionDontHide) ? TRUE : FALSE; break; case ID_BUTTON_REDUCTION_FULL_REDUCTION: val = (reduceLevel == xtpRibbonGroupFullReduction) ? TRUE : FALSE; break; default: _ASSERTE(FALSE); break; } pCmdUI->SetCheck(val); }