Mercurial > hg > easyhg-kdiff3
diff kdiff3/src/directorymergewindow.cpp @ 53:32d5cbf9db71
Corrections for 0.9.81:
- Fix for configure --enable-final
- Bugfixes
- First steps towards internationalisation
author | joachim99 |
---|---|
date | Tue, 20 Jan 2004 20:19:59 +0000 |
parents | c59d5a3a8ff3 |
children | 8af4bb9d9a5a |
line wrap: on
line diff
--- a/kdiff3/src/directorymergewindow.cpp Tue Dec 09 20:34:32 2003 +0000 +++ b/kdiff3/src/directorymergewindow.cpp Tue Jan 20 20:19:59 2004 +0000 @@ -365,6 +365,7 @@ clear(); + m_mergeItemList.clear(); m_currentItemForOperation = m_mergeItemList.end(); m_dirA = dirA; @@ -396,7 +397,7 @@ (m_dirDest.prettyAbsPath() == m_dirA.prettyAbsPath() || m_dirDest.prettyAbsPath()==m_dirB.prettyAbsPath() ) ) { KMessageBox::error(this, - i18n( "The destination directory must not be the same as A or B when" + i18n( "The destination directory must not be the same as A or B when " "three directories are merged.\nCheck again before continuing."), i18n("Parameter Warning")); return false; @@ -610,8 +611,8 @@ // Merge current item (merge mode) void DirectoryMergeWindow::slotCurrentDoNothing() { setMergeOperation(currentItem(), eNoOperation ); } -void DirectoryMergeWindow::slotCurrentChooseA() { setMergeOperation(currentItem(), eCopyAToDest ); } -void DirectoryMergeWindow::slotCurrentChooseB() { setMergeOperation(currentItem(), eCopyBToDest ); } +void DirectoryMergeWindow::slotCurrentChooseA() { setMergeOperation(currentItem(), m_bSyncMode ? eCopyAToB : eCopyAToDest ); } +void DirectoryMergeWindow::slotCurrentChooseB() { setMergeOperation(currentItem(), m_bSyncMode ? eCopyBToA : eCopyBToDest ); } void DirectoryMergeWindow::slotCurrentChooseC() { setMergeOperation(currentItem(), eCopyCToDest ); } void DirectoryMergeWindow::slotCurrentMerge() { @@ -677,6 +678,14 @@ QListView::keyPressEvent(e); } +void DirectoryMergeWindow::focusInEvent(QFocusEvent*) +{ + updateAvailabilities(); +} +void DirectoryMergeWindow::focusOutEvent(QFocusEvent*) +{ + updateAvailabilities(); +} void DirectoryMergeWindow::setAllMergeOperations( e_MergeOperation eDefaultOperation ) { @@ -1600,8 +1609,15 @@ if ( m_mergeItemList.empty() ) { QListViewItem* pBegin = currentItem(); + QListViewItem* pEnd = pBegin; + while ( pEnd!=0 && pEnd->nextSibling()==0 ) + { + pEnd = pEnd->parent(); + } + if ( pEnd!=0 ) + pEnd=pEnd->nextSibling(); - prepareMergeStart( pBegin, pBegin->nextSibling(), bVerbose ); + prepareMergeStart( pBegin, pEnd, bVerbose ); mergeContinue(true, bVerbose); } else @@ -1671,7 +1687,7 @@ // Count the number of completed items (for the progress bar). for( MergeItemList::iterator i = m_mergeItemList.begin(); i!=m_mergeItemList.end(); ++i ) { - DirMergeItem* pDMI = static_cast<DirMergeItem*>(*i); + DirMergeItem* pDMI = *i; ++nrOfItems; if ( pDMI->m_pMFI->m_bOperationComplete ) ++nrOfCompletedItems; @@ -2117,15 +2133,11 @@ } - - - DirectoryMergeInfo::DirectoryMergeInfo( QWidget* pParent ) : QFrame(pParent) { QVBoxLayout *topLayout = new QVBoxLayout( this ); - QGridLayout *grid = new QGridLayout( topLayout ); grid->setColStretch(1,10); @@ -2261,7 +2273,7 @@ dirMergeCurrent = new KAction(i18n("Merge Current File"), QIconSet(QPixmap(startmerge)), 0, pKDiff3App, SLOT(slotMergeCurrentFile()), ac, "merge_current"); dirFoldAll = new KAction(i18n("Fold All Subdirs"), 0, p, SLOT(slotFoldAllSubdirs()), ac, "dir_fold_all"); dirUnfoldAll = new KAction(i18n("Unfold All Subdirs"), 0, p, SLOT(slotUnfoldAllSubdirs()), ac, "dir_unfold_all"); - dirRescan = new KAction(i18n("Rescan"), 0, p, SLOT(reload()), ac, "dir_rescan"); + dirRescan = new KAction(i18n("Rescan"), SHIFT+Key_F5, p, SLOT(reload()), ac, "dir_rescan"); dirChooseAEverywhere = new KAction(i18n("Choose A for All Items"), 0, p, SLOT(slotChooseAEverywhere()), ac, "dir_choose_a_everywhere"); dirChooseBEverywhere = new KAction(i18n("Choose B for All Items"), 0, p, SLOT(slotChooseBEverywhere()), ac, "dir_choose_b_everywhere"); dirChooseCEverywhere = new KAction(i18n("Choose C for All Items"), 0, p, SLOT(slotChooseCEverywhere()), ac, "dir_choose_c_everywhere"); @@ -2287,7 +2299,8 @@ } -void DirectoryMergeWindow::updateAvailabilities( bool bDirCompare, bool bDiffWindowVisible ) +void DirectoryMergeWindow::updateAvailabilities( bool bDirCompare, bool bDiffWindowVisible, + KToggleAction* chooseA, KToggleAction* chooseB, KToggleAction* chooseC ) { dirStartOperation->setEnabled( bDirCompare ); dirRunOperationForCurrentItem->setEnabled( bDirCompare ); @@ -2317,13 +2330,24 @@ bool bMergeMode = bThreeDirs || !m_bSyncMode; bool bFTConflict = pMFI==0 ? false : conflictingFileTypes(*pMFI); + bool bDirWindowHasFocus = isVisible() && hasFocus(); + dirCurrentDoNothing->setEnabled( bItemActive && bMergeMode ); dirCurrentChooseA->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInA ); dirCurrentChooseB->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInB ); dirCurrentChooseC->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInC ); dirCurrentMerge->setEnabled( bItemActive && bMergeMode && !bFTConflict ); dirCurrentDelete->setEnabled( bItemActive && bMergeMode ); - + if ( bDirWindowHasFocus ) + { + chooseA->setEnabled( bItemActive && pMFI->m_bExistsInA ); + chooseB->setEnabled( bItemActive && pMFI->m_bExistsInB ); + chooseC->setEnabled( bItemActive && pMFI->m_bExistsInC ); + chooseA->setChecked( false ); + chooseB->setChecked( false ); + chooseC->setChecked( false ); + } + dirCurrentSyncDoNothing->setEnabled( bItemActive && !bMergeMode ); dirCurrentSyncCopyAToB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInA ); dirCurrentSyncCopyBToA->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB );