// CommandBarsDesignerDesignerView.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 "commandbarsdesigner.h" #include "commandbarsdesignerDoc.h" #include "CommandBarsDesignerDesignerView.h" #include "IPCData.h" #include "IPCChannel.h" #include "EmbeddedFrame.h" #include "CommandBarsDesignerPreviewView.h" #include "MainFrm.h" #include "DialogResourceSymbols.h" #include "DialogMenuGrabber.h" #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView IMPLEMENT_DYNCREATE(CCommandBarsDesignerDesignerView, CView) BEGIN_MESSAGE_MAP(CCommandBarsDesignerDesignerView, CView) //{{AFX_MSG_MAP(CCommandBarsDesignerDesignerView) ON_WM_SETCURSOR() ON_WM_LBUTTONDOWN() ON_WM_CREATE() ON_COMMAND(ID_COMMANDBARS_RESOURCESYMBOLS, OnCommandbarsResourcesymbols) ON_COMMAND(ID_FILE_EXPORT_XMLDOCUMENT, OnFileExportXmldocument) ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT_XMLDOCUMENT, OnUpdateFileExportXmldocument) ON_COMMAND(ID_COMMANDBARS_MENUGRABBER, OnCommandbarsMenugrabber) //}}AFX_MSG_MAP // Standard printing commands 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(ID_EDIT_CUT, OnEditCut) ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView construction/destruction CCommandBarsDesignerDesignerView::CCommandBarsDesignerDesignerView() { m_pFrame = NULL; m_pPreview = NULL; } CCommandBarsDesignerDesignerView::~CCommandBarsDesignerDesignerView() { } BOOL CCommandBarsDesignerDesignerView::PreCreateWindow(CREATESTRUCT& cs) { cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS; return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView drawing void CCommandBarsDesignerDesignerView::OnDraw(CDC* pDC) { ASSERT_VALID(pDC); CXTPClientRect rc(this); pDC->FillSolidRect(&rc, XTPPaintManager()->GetXtremeColor(COLOR_WINDOW)); m_rectTracker.Draw(pDC); } ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView printing BOOL CCommandBarsDesignerDesignerView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CCommandBarsDesignerDesignerView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CCommandBarsDesignerDesignerView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView diagnostics #ifdef _DEBUG void CCommandBarsDesignerDesignerView::AssertValid() const { CView::AssertValid(); } void CCommandBarsDesignerDesignerView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CCommandBarsDesignerDoc* CCommandBarsDesignerDesignerView::GetDocument() // non-debug version is // inline { _ASSERTE(m_pDocument->IsKindOf(RUNTIME_CLASS(CCommandBarsDesignerDoc))); return (CCommandBarsDesignerDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CCommandBarsDesignerDesignerView message handlers int CCommandBarsDesignerDesignerView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; if (m_pFrame == NULL) { m_pFrame = new CEmbeddedFrame(); VERIFY(m_pFrame->LoadFrame(IDR_EMBEDDEDFRAME, WS_CHILD | WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, AfxGetMainWnd(), NULL)); m_pFrame->m_pHostView = this; GetDocument()->SetFrame(m_pFrame); } return 0; } void CCommandBarsDesignerDesignerView::OnInitialUpdate() { CView::OnInitialUpdate(); _ASSERTE(m_pFrame); m_pFrame->SetParent(this); CRect rc(m_rectTracker.m_rect); m_pFrame->SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW | SWP_NOZORDER | SWP_NOACTIVATE); OnUpdateFrameTitle(); } void CCommandBarsDesignerDesignerView::OnUpdateFrameTitle() { const CString& strTitle = GetDocument()->GetTitle(); m_pFrame->SetWindowText(strTitle); if (NULL != m_pPreview) { m_pPreview->OnTitleUpdated(strTitle); } } BOOL CCommandBarsDesignerDesignerView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // convert cursor position to client co-ordinates CPoint point; GetCursorPos(&point); pWnd->ScreenToClient(&point); int nHit = m_rectTracker.HitTest(point); switch (nHit) { case CRectTracker::hitRight: ::SetCursor(::LoadCursor(0, IDC_SIZEWE)); return TRUE; case CRectTracker::hitBottom: ::SetCursor(::LoadCursor(0, IDC_SIZENS)); return TRUE; case CRectTracker::hitBottomRight: ::SetCursor(::LoadCursor(0, IDC_SIZENWSE)); return TRUE; } return CView::OnSetCursor(pWnd, nHitTest, message); } void CCommandBarsDesignerDesignerView::OnLButtonDown(UINT nFlags, CPoint point) { int nHit = m_rectTracker.HitTest(point); if (nHit != CRectTracker::hitMiddle) { _ASSERTE(m_pFrame); if (m_rectTracker.Track(this, point)) { CRect rc(m_rectTracker.m_rect); m_pFrame->SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER); Invalidate(TRUE); } } CView::OnLButtonDown(nFlags, point); } void CCommandBarsDesignerDesignerView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class CView::OnActivateView(bActivate, pActivateView, pDeactiveView); IEmbeddedFramePreview* pPreview = GetEmbeddedFramePreview(); if (NULL != pPreview) { m_pFrame->SetPreview(pPreview); OnUpdateFrameTitle(); } ((CMainFrame*)AfxGetMainWnd())->RefreshPanes(); } void CCommandBarsDesignerDesignerView::OnCommandbarsResourcesymbols() { CDialogResourceSymbols ds(m_pFrame); ds.DoModal(); } void CCommandBarsDesignerDesignerView::OnFileExportXmldocument() { CString strFilter = _T("XML Document(*.xml)|*.xml|All files (*.*)|*.*||"); CFileDialog fd(FALSE, _T("xml"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFilter); if (fd.DoModal() != IDOK) return; CXTPPropExchangeXMLNode px(FALSE, 0, _T("DesignerFile")); m_pFrame->DoPropExchange(&px); px.SaveToFile(fd.GetPathName()); } void CCommandBarsDesignerDesignerView::OnUpdateFileExportXmldocument(CCmdUI* pCmdUI) { pCmdUI->Enable(IsXMLEngineAvailable()); } void CCommandBarsDesignerDesignerView::OnCommandbarsMenugrabber() { CXTPCommandBars* pCommandBars = m_pFrame->GetCommandBars(); if (!pCommandBars) return; BOOL bCustomizeMode = pCommandBars->IsCustomizeMode(); pCommandBars->SetCustomizeMode(FALSE); CDialogMenuGrabber ds(m_pFrame); if (ds.DoModal() == IDOK) { if (ds.m_wndMenuBar.GetControls()->GetCount() > 0) { CXTPMenuBar* pMenuBar = pCommandBars->GetMenuBar(); if (!pMenuBar) return; pMenuBar->GetControls()->RemoveAll(); pMenuBar->GetControls()->Copy(ds.m_wndMenuBar.GetControls()); } } pCommandBars->SetCustomizeMode(bCustomizeMode); } void CCommandBarsDesignerDesignerView::OnEditCut() { CXTPCommandBars* pCommandBars = m_pFrame->GetCommandBars(); if (!pCommandBars) return; CCmdTarget* pDragContrl = pCommandBars->GetDragControl(); if (!pDragContrl) return; CXTPControl* pControl = DYNAMIC_DOWNCAST(CXTPControl, pDragContrl); if (pControl) { if (pControl->IsCustomizeMovable()) { pControl->GetControls()->Remove(pControl); pCommandBars->SetDragControl(NULL); } return; } CXTPRibbonGroup* pRibbonGroup = DYNAMIC_DOWNCAST(CXTPRibbonGroup, pDragContrl); if (pRibbonGroup) { pRibbonGroup->GetGroups()->Remove(pRibbonGroup); pCommandBars->SetDragControl(NULL); return; } CXTPRibbonTab* pRibbonTab = DYNAMIC_DOWNCAST(CXTPRibbonTab, pDragContrl); if (pRibbonTab) { pRibbonTab->Remove(); pCommandBars->SetDragControl(NULL); return; } } void CCommandBarsDesignerDesignerView::OnUpdateEditCut(CCmdUI* pCmdUI) { CXTPCommandBars* pCommandBars = m_pFrame->GetCommandBars(); if (!pCommandBars) return; CCmdTarget* pDragContrl = pCommandBars->GetDragControl(); if (!pDragContrl) { pCmdUI->Enable(FALSE); return; } CXTPControl* pControl = DYNAMIC_DOWNCAST(CXTPControl, pDragContrl); if (pControl) { if (pControl->GetFlags() & xtpFlagNoMovable) { pCmdUI->Enable(FALSE); return; } } pCmdUI->Enable(TRUE); } IEmbeddedFramePreview* CCommandBarsDesignerDesignerView::GetEmbeddedFramePreview() { if (NULL == m_pPreview) { POSITION pos = GetDocument()->GetFirstViewPosition(); while (NULL != pos) { m_pPreview = DYNAMIC_DOWNCAST(CCommandBarsDesignerPreviewView, GetDocument()->GetNextView(pos)); if (NULL != m_pPreview) { break; } } } return m_pPreview; }