Exemple #1
0
// Gets the height of the specified view.
// nTab and nView are zero-based, nHeight is in %
int BDataViews::GetViewHeight(int nTab, int nView)
{
	ASSERT(nTab < GetTabCount());
	ASSERT(nView < GetViewCount(nTab));
	int nIndex = GetTabIndex(nTab) + nView;
	return m_avi[nIndex].m_lngViewHeight;
}
Exemple #2
0
// Sets the height of the specified view.
// nTab and nView are zero-based, nHeight is in %
BOOL BDataViews::SetViewHeight(int nTab, int nView, int nHeight)
{
	ASSERT(nTab < GetTabCount());
	ASSERT(nView < GetViewCount(nTab));
	int nIndex = GetTabIndex(nTab) + nView;
	m_avi[nIndex].m_lngViewHeight = nHeight;
	return TRUE;
}
Exemple #3
0
void WidgetBase::ForAllHiddenViews (boost::function <void (ViewNumber::Enum)> f)
{
    for (int i = GetViewCount (); i < ViewNumber::COUNT; ++i)
    {
	ViewNumber::Enum viewNumber = ViewNumber::FromSizeT (i);
	if (CALL_MEMBER (*this, m_isView)(viewNumber))
	    f (viewNumber);
    }
}
Exemple #4
0
void WidgetBase::ForAllViews (boost::function <void (ViewNumber::Enum)> f)
{
    for (size_t i = 0; i < GetViewCount (); ++i)
    {
	ViewNumber::Enum viewNumber = ViewNumber::FromSizeT (i);
	if (CALL_MEMBER (*this, m_isView)(viewNumber))
	    f (viewNumber);
    }
}
void CBottomView::UseViewFile(CBaseView * pwndView)
{
    if (!IsViewGood(pwndView))
        return;
    int nFirstViewLine = 0;
    int nLastViewLine = GetViewCount()-1;

    return UseBlock(pwndView, nFirstViewLine, nLastViewLine);
}
Exemple #6
0
void WidgetBase::addCopyMenu (
    QMenu* menu, const char* nameOp, 
    const boost::shared_ptr<QAction>* actionCopyOp) const
{
    
    QMenu* menuOp = menu->addMenu (nameOp);
    if (GetViewCount () > 1)
    {
	for (size_t i = 0; i < GetViewCount (); ++i)
	{
	    ViewNumber::Enum viewNumber = ViewNumber::Enum (i);
	    if (viewNumber == GetViewNumber ())
		continue;
	    menuOp->addAction (actionCopyOp[i].get ());
	}
    }
    if (GetViewCount () == 1)
        menuOp->setDisabled (true);
}
Exemple #7
0
void CLeftView::UseRightFile()
{
    int nFirstViewLine = 0;
    int nLastViewLine = GetViewCount()-1;

    if (!IsWritable())
        return;
    ClearSelection();
    return UseViewBlock(m_pwndRight, nFirstViewLine, nLastViewLine);
}
void CBottomView::UseBlock(CBaseView * pwndView, int nFirstViewLine, int nLastViewLine)
{
    if (!IsViewGood(pwndView))
        return;
    CUndo::GetInstance().BeginGrouping(); // start group undo

    for (int viewLine = nFirstViewLine; viewLine <= nLastViewLine; viewLine++)
    {
        viewdata lineData = pwndView->GetViewData(viewLine);
        if ((lineData.ending != EOL_NOENDING)||(viewLine < (GetViewCount()-1)))
            lineData.ending = m_lineendings;
        lineData.state = ResolveState(lineData.state);
        SetViewData(viewLine, lineData);
        SetModified();
    }

    // make sure previous (non empty) line have EOL set
    for (int nCheckViewLine = nFirstViewLine-1; nCheckViewLine > 0; nCheckViewLine--)
    {
        if (!IsViewLineEmpty(nCheckViewLine))
        {
            if (GetViewLineEnding(nCheckViewLine) == EOL_NOENDING)
            {
                SetViewLineEnding(nCheckViewLine, m_lineendings);
                SetModified();
            }
            break;
        }
    }

    int nRemovedLines = CleanEmptyLines();
    SaveUndoStep();
    UpdateViewLineNumbers();
    SaveUndoStep();

    CUndo::GetInstance().EndGrouping();

    // final clean up
    ClearSelection();
    SetupAllViewSelection(nFirstViewLine, nLastViewLine - nRemovedLines);
    BuildAllScreen2ViewVector();
    RefreshViews();
}
void CBottomView::UseBothBlocks(CBaseView * pwndFirst, CBaseView * pwndLast)
{
    if (!IsViewGood(pwndFirst) || !IsViewGood(pwndLast))
        return;
    int nFirstViewLine = 0; // first view line in selection
    int nLastViewLine  = 0; // last view line in selection

    if (!GetViewSelection(nFirstViewLine, nLastViewLine))
        return;

    int nNextViewLine = nLastViewLine + 1; // first view line after selected block

    CUndo::GetInstance().BeginGrouping(); // start group undo

    // use (copy) first block
    for (int viewLine = nFirstViewLine; viewLine <= nLastViewLine; viewLine++)
    {
        viewdata lineData = pwndFirst->GetViewData(viewLine);
        if ((lineData.ending != EOL_NOENDING)||(viewLine < (GetViewCount()-1)))
            lineData.ending = m_lineendings;
        lineData.state = ResolveState(lineData.state);
        SetViewData(viewLine, lineData);
        if (!IsStateEmpty(pwndFirst->GetViewState(viewLine)))
        {
            pwndFirst->SetViewState(viewLine, DIFFSTATE_YOURSADDED); // this is improper (may be DIFFSTATE_THEIRSADDED) but seems not to produce any visible bug
        }
    }
    // make sure previous (non empty) line have EOL set
    for (int nCheckViewLine = nFirstViewLine-1; nCheckViewLine > 0; nCheckViewLine--)
    {
        if (!IsViewLineEmpty(nCheckViewLine))
        {
            if (GetViewLineEnding(nCheckViewLine) == EOL_NOENDING)
            {
                SetViewLineEnding(nCheckViewLine, m_lineendings);
            }
            break;
        }
    }

    SaveUndoStep();

    // use (insert) last block
    int nViewIndex = nNextViewLine;
    for (int viewLine = nFirstViewLine; viewLine <= nLastViewLine; viewLine++, nViewIndex++)
    {
        viewdata lineData = pwndLast->GetViewData(viewLine);
        lineData.state = ResolveState(lineData.state);
        InsertViewData(nViewIndex, lineData);
        if (!IsStateEmpty(pwndLast->GetViewState(viewLine)))
        {
            pwndLast->SetViewState(viewLine, DIFFSTATE_THEIRSADDED); // this is improper but seems not to produce any visible bug
        }
    }
    SaveUndoStep();

    // adjust line numbers in target
    // we fix all line numbers to handle exotic cases
    UpdateViewLineNumbers();
    SaveUndoStep();

    // now insert an empty block in both first and last
    int nCount = nLastViewLine - nFirstViewLine + 1;
    pwndLast->InsertViewEmptyLines(nFirstViewLine, nCount);
    pwndFirst->InsertViewEmptyLines(nNextViewLine, nCount);
    SaveUndoStep();

    int nRemovedLines = CleanEmptyLines();
    SaveUndoStep();

    CUndo::GetInstance().EndGrouping();

    // final clean up
    ClearSelection();
    SetupAllViewSelection(nFirstViewLine, 2*nLastViewLine - nFirstViewLine - nRemovedLines + 1);
    BuildAllScreen2ViewVector();
    SetModified();
    RefreshViews();
}