Esempio n. 1
0
void CXTPRibbonGroup::OnGroupAdded()
{
    CXTPControl* pGroupOption = GetControlGroupOption();

    m_pParent->GetControls()->Add(pGroupOption);
    pGroupOption->InternalAddRef();

    pGroupOption->SetHideFlag(xtpHideRibbonTab, !IsVisible());


    pGroupOption->SetID(GetID());

    CXTPControl* pGroupPopup = (CXTPControl*)GetControlGroupPopup();
    m_pParent->GetControls()->Add(pGroupPopup);
    pGroupPopup->SetCaption(GetCaption());
    pGroupPopup->SetDescription(NULL);

    pGroupPopup->InternalAddRef();

    pGroupPopup->SetHideFlag(xtpHideRibbonTab, !IsVisible());

    CXTPCommandBars* pCommandBars = m_pRibbonBar->GetCommandBars();
    ASSERT(pCommandBars);

    if (pCommandBars && pCommandBars->IsActionsEnabled())
    {
        CXTPControlAction* pAction = pCommandBars->CreateAction(GetID());
        if (pAction->GetCaption().IsEmpty()) pAction->SetCaption(GetCaption());

        pGroupPopup->SetAction(pAction);
        pGroupOption->SetAction(pAction);
    }
}
BOOL CXTPRibbonBuilder::BuildMainButtonPopupBar(CXTPPropExchange* pPX, CXTPRibbonBar* pRibbonBar)
{
	if (!pRibbonBar->GetSystemButton())
		return FALSE;

	CXTPCommandBar* pPopupBar = pRibbonBar->GetSystemButton()->GetCommandBar();


	CString strElementName;
	PX_String(pPX, _T("ELEMENT_NAME"), strElementName);

	if (strElementName != _T("Category_Main"))
		return FALSE;

	CString strCaption;
	PX_String(pPX, _T("NAME"), strCaption);

	pRibbonBar->GetSystemButton()->SetCaption(strCaption);


	pPopupBar->SetIconSize(CSize(32, 32));

	m_arrImageLarge.RemoveAll();
	m_arrImageSmall.RemoveAll();

	CXTPPropExchangeSection pxElements(pPX->GetSection(_T("ELEMENTS")));

	CXTPPropExchangeEnumeratorPtr pEnumerator(pxElements->GetEnumerator(_T("ELEMENT")));

	BOOL bBeginGroup = FALSE;

	POSITION pos = pEnumerator->GetPosition(0);
	while (pos)
	{
		CXTPPropExchangeSection pxControl(pEnumerator->GetNext(pos));

		CString strElementName;
		PX_String(&pxControl, _T("ELEMENT_NAME"), strElementName);

		if (strElementName == _T("Separator"))
		{
			bBeginGroup = TRUE;
			continue;
		}


		CCmdTarget* pElement = CreateElement(strElementName);
		if (pElement == NULL)
			continue;

		CXTPControl* pControl = DYNAMIC_DOWNCAST(CXTPControl, pElement);

		if (!pControl)
		{
			delete pElement;
			continue;
		}

		CXTPPropExchangeSection pxElements(pxControl->GetSection(_T("ELEMENTS")));
		BuildControlPopupBar(&pxElements, pControl, RUNTIME_CLASS(CXTPRibbonSystemPopupBarPage));

		BuildControl(&pxControl, pControl);

		pPopupBar->GetControls()->Add(pControl, pControl->GetID());

		pControl->SetBeginGroup(bBeginGroup);
		bBeginGroup = FALSE;

	}

	CXTPPropExchangeSection pxRecentFileList(pPX->GetSection(_T("RECENT_FILE_LIST")));

	CString strEnabled;
	PX_String(&pxRecentFileList, _T("ENABLE"), strEnabled);
	if (strEnabled == _T("TRUE"))
	{
		CXTPControl* pControl = pPopupBar->GetControls()->Add(new CXTPRibbonControlSystemRecentFileList());

		CString strLabel;
		PX_String(&pxRecentFileList, _T("LABEL"), strLabel);
		pControl->SetCaption(strLabel);
	}


	LoadIcons(pPX);


	return TRUE;
}