Beispiel #1
0
IComparison* Comparisons::NewEx(LPCTSTR originalDocId, LPCTSTR modifiedDocId, VARIANT &renderingSet, LONG comparisonMode, VARIANT_BOOL showSelectorDialog, BSTR originalDescription, BSTR modifiedDescription)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());
	AutomationInteractionSuppressor ais;

	CDeltaViewCommandLineInfo cmdInfo;
	cmdInfo.m_sOriginal = EnsureDocId(originalDocId);
	cmdInfo.m_sModified = EnsureDocId(modifiedDocId);
	cmdInfo.m_sOriginalDisplayName = originalDescription;
	cmdInfo.m_sModifiedDisplayName = modifiedDescription;
	cmdInfo.m_bShowSelector = showSelectorDialog != VARIANT_FALSE;
	CStdString selectedRenderingSet = RenderingSet::GetCurrentRenderingSet();
	_variant_t vrenderSet = renderingSet;
	if (vrenderSet.vt == VT_BSTR)
	{
		selectedRenderingSet = _bstr_t(vrenderSet);
	}
	RenderingSetOverride rso(selectedRenderingSet);

	cmdInfo.m_comparisonOption = comparisonMode;
	cmdInfo.m_bSilentMode = showSelectorDialog == VARIANT_FALSE;

	COptionsDlgSelector optSelector;
	if(optSelector.SetDlgInformation(cmdInfo) == S_FALSE)
		return FALSE;

	if( cmdInfo.ShouldShowDocumentSelectorDlg() )
	{		
		if( !optSelector.ShowDialog() )
		{
			// Dialog might have returned false because it was cancelled during a right-click op.
			// If so, don't display a 'unable to compare' error.  ST2085
			if( !optSelector.Cancelled() )
			{
				AfxThrowOleDispatchException(1105, L"Comparison failed.");
			}
			AfxThrowOleDispatchException(1106, L"Cancelled.");
		}
	}
	else
	{
		if (!optSelector.StartComparisons())
		{
			AfxThrowOleDispatchException(1105, L"Comparison failed.");
		}
	}

// TODO - can we get the frame in a better way
	CMDIFrameWnd* pMainFrame = DYNAMIC_DOWNCAST(CMDIFrameWnd, AfxGetMainWnd());
	CChildFrame *pFrame = DYNAMIC_DOWNCAST( CChildFrame, pMainFrame->MDIGetActive() );
	CDeltaVwDoc* pDoc = pFrame->GetDocument();
	UpdateOpenList();
	return FindComObject(pDoc);

}
Beispiel #2
0
IComparison* Comparisons::Open(LPCTSTR wdfDocId)
{
	AFX_MANAGE_STATE(AfxGetAppModuleState());
	AutomationInteractionSuppressor ais;


	CMDIFrameWnd* pMainFrame = DYNAMIC_DOWNCAST(CMDIFrameWnd, AfxGetMainWnd());
	GetApp()->RealFileNew();
// TODO - can we get the frame in a better way
	CChildFrame *pFrame = DYNAMIC_DOWNCAST( CChildFrame, pMainFrame->MDIGetActive() );

	if (pFrame)
	{
	// TODO - do we need this
		GetDVController(pFrame)->CloseDocument(true);
		GetDVController(pFrame)->CloseDocument(false);

		GetDVController(pFrame)->CloseCompositeDocument();
		GetDVController(pFrame)->GetComparisonDocController().CloseComparisonDocument();

		if( pFrame->GetCompositeBar() )
			pFrame->GetCompositeBar()->OnInitialUpdate();

		pFrame->ShowWindow(SW_SHOW);
		pFrame->BringWindowToTop();

		if (!GetDVController(pFrame)->LoadWDF(wdfDocId))
		{
			AfxThrowOleDispatchException(1102, L"File not found : " + CString(wdfDocId));
		}


		pFrame->GetDocument()->UpdateAllViews(NULL);
		UpdateOpenList();
		return FindComObject(pFrame->GetDocument());
	}
	AfxThrowOleDispatchException(1101, L"Internal Error");
	return NULL;
}
Beispiel #3
0
void CCompositeView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	CChildFrame* pFrame = DYNAMIC_DOWNCAST( CChildFrame, GetParentFrame() );
	if( !pFrame || !pFrame->IsWindowVisible() )
		return;

	if( !GetDVController() )
		return;

	// update the comparison doc detail sand frame
	CString csTitleBarText;
	CString csComparisonDoc = GetDVController()->GetComparisonDocController().GetComparisonDocumentTitle();
	if (pFrame && !csComparisonDoc.IsEmpty())
	{
		// do not keep setting the title text to the same stuff as it forces the tabctrl to relayout and repaint
		CString existingText;
		pFrame->GetWindowText(existingText);
		if (existingText != csComparisonDoc)
		{
			pFrame->GetDocument()->SetTitle(csComparisonDoc);

			if (csComparisonDoc.GetLength()>40)
			{
				csComparisonDoc = csComparisonDoc.Left(32);
				csComparisonDoc.TrimRight(L" ");
				csComparisonDoc += L"...";
			}
  			pFrame->SetWindowText(csComparisonDoc);
		}
	}
	else
	{
		// do not keep setting the title text to the same stuff as it forces the tabctrl to relayout and repaint
		CString existingText;
		pFrame->GetWindowText(existingText);
		if (existingText!= GetApplicationTitle())
			pFrame->SetWindowText(GetApplicationTitle());
	}
	
	try
	{
		if (GetDocObject())
			GetDocObject()->Repaint();
	}
	catch (...)
	{
		_ASSERTE(!_T("Catch ... How did we get here?"));
	}
	
	UpdateWindow();
}
Beispiel #4
0
void Comparisons::UpdateOpenList()
{
	CMainFrame* pMainFrame = DYNAMIC_DOWNCAST(CMainFrame, AfxGetMainWnd());
	CWnd* pChild = pMainFrame->MDIGetActive();

	while (pChild)
	{
		CChildFrame* pChildFrame = DYNAMIC_DOWNCAST(CChildFrame, pChild);
		if (pChildFrame != NULL)
		{
			UpdateOpenDoc(pChildFrame->GetDocument());
		}
		pChild = pChild->GetWindow( GW_HWNDNEXT );
	}
}