changeset 105:2df4daf33fbd easyhg_kdiff3_simplifications

Some simplifications under SIMPLIFIED_KDIFF3 ifdef. * Remove progress dialog on startup * Remove Merge menu, Directory menu's merge functions, and merge columns if only two files/directories provided
author Chris Cannam
date Wed, 13 Apr 2011 17:05:13 +0100
parents 3d87e427431d
children 61d74c8be938
files kdiff3/src-QT4/directorymergewindow.cpp kdiff3/src-QT4/fileaccess.cpp kdiff3/src-QT4/kdiff3.cpp kdiff3/src-QT4/kdiff3.pro kdiff3/src-QT4/pdiff.cpp
diffstat 5 files changed, 207 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/kdiff3/src-QT4/directorymergewindow.cpp	Wed Apr 13 15:15:50 2011 +0000
+++ b/kdiff3/src-QT4/directorymergewindow.cpp	Wed Apr 13 17:05:13 2011 +0100
@@ -537,7 +537,7 @@
       m_pDirShowDifferentFiles->setChecked(true);
       m_pDirShowFilesOnlyInA->setChecked(true);
       m_pDirShowFilesOnlyInB->setChecked(true);
-      m_pDirShowFilesOnlyInC->setChecked(true);
+      if (m_pDirShowFilesOnlyInC) m_pDirShowFilesOnlyInC->setChecked(true);
    }
 
    // Check if all input directories exist and are valid. The dest dir is not tested now.
@@ -717,6 +717,13 @@
 
    QDir::setCurrent(origCurrentDirectory);
 
+#ifdef SIMPLIFIED_KDIFF3
+   if (!m_dirC.isValid()) {
+       setColumnHidden(s_OpCol, true);
+       setColumnHidden(s_OpStatusCol, true);
+   }
+#endif
+
    m_bScanning = false;
    statusBarMessage(i18n("Ready."));
 
@@ -2869,7 +2876,7 @@
    bool bShowDifferent = m_pDirShowDifferentFiles->isChecked();
    bool bShowOnlyInA   = m_pDirShowFilesOnlyInA->isChecked();
    bool bShowOnlyInB   = m_pDirShowFilesOnlyInB->isChecked();
-   bool bShowOnlyInC   = m_pDirShowFilesOnlyInC->isChecked();
+   bool bShowOnlyInC   = m_pDirShowFilesOnlyInC && m_pDirShowFilesOnlyInC->isChecked();
    bool bThreeDirs = m_dirC.isValid();
    m_pSelection1Item = 0;
    m_pSelection2Item = 0;
@@ -2956,21 +2963,75 @@
 #include "xpm/showfilesonlyinc.xpm"
    DirectoryMergeWindow* p = this;
 
-   m_pDirStartOperation = KDiff3::createAction< KAction >(i18n("Start/Continue Directory Merge"), KShortcut( Qt::Key_F7 ), p, SLOT(slotRunOperationForAllItems()), ac, "dir_start_operation");
-   m_pDirRunOperationForCurrentItem = KDiff3::createAction< KAction >(i18n("Run Operation for Current Item"), KShortcut( Qt::Key_F6 ), p, SLOT(slotRunOperationForCurrentItem()), ac, "dir_run_operation_for_current_item");
+   bool showMergeOptions = true;
+#ifdef SIMPLIFIED_KDIFF3
+   if (!m_dirC.isValid()) {
+       showMergeOptions = false;
+   }
+#endif
+
+   if (showMergeOptions) {
+       m_pDirStartOperation = KDiff3::createAction< KAction >(i18n("Start/Continue Directory Merge"), KShortcut( Qt::Key_F7 ), p, SLOT(slotRunOperationForAllItems()), ac, "dir_start_operation");
+       m_pDirRunOperationForCurrentItem = KDiff3::createAction< KAction >(i18n("Run Operation for Current Item"), KShortcut( Qt::Key_F6 ), p, SLOT(slotRunOperationForCurrentItem()), ac, "dir_run_operation_for_current_item");
+       m_pDirMergeCurrent = KDiff3::createAction< KAction >(i18n("Merge Current File"), QIcon(QPixmap(startmerge)), i18n("Merge\nFile"), pKDiff3App, SLOT(slotMergeCurrentFile()), ac, "merge_current");
+       m_pDirChooseAEverywhere = KDiff3::createAction< KAction >(i18n("Choose A for All Items"), p, SLOT(slotChooseAEverywhere()), ac, "dir_choose_a_everywhere");
+       m_pDirChooseBEverywhere = KDiff3::createAction< KAction >(i18n("Choose B for All Items"), p, SLOT(slotChooseBEverywhere()), ac, "dir_choose_b_everywhere");
+       m_pDirChooseCEverywhere = KDiff3::createAction< KAction >(i18n("Choose C for All Items"), p, SLOT(slotChooseCEverywhere()), ac, "dir_choose_c_everywhere");
+       m_pDirAutoChoiceEverywhere = KDiff3::createAction< KAction >(i18n("Auto-Choose Operation for All Items"), p, SLOT(slotAutoChooseEverywhere()), ac, "dir_autochoose_everywhere");
+       m_pDirDoNothingEverywhere = KDiff3::createAction< KAction >(i18n("No Operation for All Items"), p, SLOT(slotNoOpEverywhere()), ac, "dir_nothing_everywhere");
+       m_pDirShowFilesOnlyInC   = KDiff3::createAction< KToggleAction >(i18n("Show Files only in C"), QIcon(QPixmap(showfilesonlyinc)), i18n("Files\nonly in C"), this, SLOT(slotShowFilesOnlyInC()), ac, "dir_show_files_only_in_c");
+       m_pDirMergeExplicit = KDiff3::createAction< KAction >(i18n("Merge Explicitly Selected Files"), p, SLOT(slotMergeExplicitlySelectedFiles()), ac, "dir_merge_explicitly_selected_files");
+
+       m_pDirCurrentDoNothing = KDiff3::createAction< KAction >(i18n("Do Nothing"), p, SLOT(slotCurrentDoNothing()), ac, "dir_current_do_nothing");
+       m_pDirCurrentChooseA = KDiff3::createAction< KAction >(i18n("A"), p, SLOT(slotCurrentChooseA()), ac, "dir_current_choose_a");
+       m_pDirCurrentChooseB = KDiff3::createAction< KAction >(i18n("B"), p, SLOT(slotCurrentChooseB()), ac, "dir_current_choose_b");
+       m_pDirCurrentChooseC = KDiff3::createAction< KAction >(i18n("C"), p, SLOT(slotCurrentChooseC()), ac, "dir_current_choose_c");
+       m_pDirCurrentMerge   = KDiff3::createAction< KAction >(i18n("Merge"), p, SLOT(slotCurrentMerge()), ac, "dir_current_merge");
+       m_pDirCurrentDelete  = KDiff3::createAction< KAction >(i18n("Delete (if exists)"), p, SLOT(slotCurrentDelete()), ac, "dir_current_delete");
+
+       m_pDirCurrentSyncDoNothing = KDiff3::createAction< KAction >(i18n("Do Nothing"), p, SLOT(slotCurrentDoNothing()), ac, "dir_current_sync_do_nothing");
+       m_pDirCurrentSyncCopyAToB = KDiff3::createAction< KAction >(i18n("Copy A to B"), p, SLOT(slotCurrentCopyAToB()), ac, "dir_current_sync_copy_a_to_b" );
+       m_pDirCurrentSyncCopyBToA = KDiff3::createAction< KAction >(i18n("Copy B to A"), p, SLOT(slotCurrentCopyBToA()), ac, "dir_current_sync_copy_b_to_a" );
+       m_pDirCurrentSyncDeleteA  = KDiff3::createAction< KAction >(i18n("Delete A"), p, SLOT(slotCurrentDeleteA()), ac,"dir_current_sync_delete_a");
+       m_pDirCurrentSyncDeleteB  = KDiff3::createAction< KAction >(i18n("Delete B"), p, SLOT(slotCurrentDeleteB()), ac,"dir_current_sync_delete_b");
+       m_pDirCurrentSyncDeleteAAndB  = KDiff3::createAction< KAction >(i18n("Delete A && B"), p, SLOT(slotCurrentDeleteAAndB()), ac,"dir_current_sync_delete_a_and_b");
+       m_pDirCurrentSyncMergeToA   = KDiff3::createAction< KAction >(i18n("Merge to A"), p, SLOT(slotCurrentMergeToA()), ac,"dir_current_sync_merge_to_a");
+       m_pDirCurrentSyncMergeToB   = KDiff3::createAction< KAction >(i18n("Merge to B"), p, SLOT(slotCurrentMergeToB()), ac,"dir_current_sync_merge_to_b");
+       m_pDirCurrentSyncMergeToAAndB   = KDiff3::createAction< KAction >(i18n("Merge to A && B"), p, SLOT(slotCurrentMergeToAAndB()), ac,"dir_current_sync_merge_to_a_and_b");
+   } else {
+       m_pDirStartOperation = 0;
+       m_pDirRunOperationForCurrentItem = 0;
+       m_pDirMergeCurrent = 0;
+       m_pDirChooseAEverywhere = 0;
+       m_pDirChooseBEverywhere = 0;
+       m_pDirChooseCEverywhere = 0;
+       m_pDirAutoChoiceEverywhere = 0;
+       m_pDirDoNothingEverywhere = 0;
+       m_pDirShowFilesOnlyInC = 0;
+       m_pDirMergeExplicit = 0;
+       m_pDirCurrentDoNothing = 0;
+       m_pDirCurrentChooseA = 0;
+       m_pDirCurrentChooseB = 0;
+       m_pDirCurrentChooseC = 0;
+       m_pDirCurrentMerge = 0;
+       m_pDirCurrentDelete = 0;
+       m_pDirCurrentSyncDoNothing = 0;
+       m_pDirCurrentSyncCopyBToA = 0;
+       m_pDirCurrentSyncCopyAToB = 0;
+       m_pDirCurrentSyncDeleteA = 0;
+       m_pDirCurrentSyncDeleteB = 0;
+       m_pDirCurrentSyncDeleteAAndB = 0;
+       m_pDirCurrentSyncMergeToA = 0;
+       m_pDirCurrentSyncMergeToB = 0;
+       m_pDirCurrentSyncMergeToAAndB = 0;
+   }
+
    m_pDirCompareCurrent = KDiff3::createAction< KAction >(i18n("Compare Selected File"), p, SLOT(compareCurrentFile()), ac, "dir_compare_current");
-   m_pDirMergeCurrent = KDiff3::createAction< KAction >(i18n("Merge Current File"), QIcon(QPixmap(startmerge)), i18n("Merge\nFile"), pKDiff3App, SLOT(slotMergeCurrentFile()), ac, "merge_current");
    m_pDirFoldAll = KDiff3::createAction< KAction >(i18n("Fold All Subdirs"), p, SLOT(slotFoldAllSubdirs()), ac, "dir_fold_all");
    m_pDirUnfoldAll = KDiff3::createAction< KAction >(i18n("Unfold All Subdirs"), p, SLOT(slotUnfoldAllSubdirs()), ac, "dir_unfold_all");
    m_pDirRescan = KDiff3::createAction< KAction >(i18n("Rescan"), KShortcut( Qt::SHIFT+Qt::Key_F5 ), p, SLOT(reload()), ac, "dir_rescan");
    m_pDirSaveMergeState = 0; //KDiff3::createAction< KAction >(i18n("Save Directory Merge State ..."), 0, p, SLOT(slotSaveMergeState()), ac, "dir_save_merge_state");
    m_pDirLoadMergeState = 0; //KDiff3::createAction< KAction >(i18n("Load Directory Merge State ..."), 0, p, SLOT(slotLoadMergeState()), ac, "dir_load_merge_state");
-   m_pDirChooseAEverywhere = KDiff3::createAction< KAction >(i18n("Choose A for All Items"), p, SLOT(slotChooseAEverywhere()), ac, "dir_choose_a_everywhere");
-   m_pDirChooseBEverywhere = KDiff3::createAction< KAction >(i18n("Choose B for All Items"), p, SLOT(slotChooseBEverywhere()), ac, "dir_choose_b_everywhere");
-   m_pDirChooseCEverywhere = KDiff3::createAction< KAction >(i18n("Choose C for All Items"), p, SLOT(slotChooseCEverywhere()), ac, "dir_choose_c_everywhere");
-   m_pDirAutoChoiceEverywhere = KDiff3::createAction< KAction >(i18n("Auto-Choose Operation for All Items"), p, SLOT(slotAutoChooseEverywhere()), ac, "dir_autochoose_everywhere");
-   m_pDirDoNothingEverywhere = KDiff3::createAction< KAction >(i18n("No Operation for All Items"), p, SLOT(slotNoOpEverywhere()), ac, "dir_nothing_everywhere");
-
 //   m_pDirSynchronizeDirectories = KDiff3::createAction< KToggleAction >(i18n("Synchronize Directories"), 0, this, SLOT(slotSynchronizeDirectories()), ac, "dir_synchronize_directories");
 //   m_pDirChooseNewerFiles = KDiff3::createAction< KToggleAction >(i18n("Copy Newer Files Instead of Merging"), 0, this, SLOT(slotChooseNewerFiles()), ac, "dir_choose_newer_files");
 
@@ -2978,53 +3039,36 @@
    m_pDirShowDifferentFiles = KDiff3::createAction< KToggleAction >(i18n("Show Different Files"), this, SLOT(slotShowDifferentFiles()), ac, "dir_show_different_files");
    m_pDirShowFilesOnlyInA   = KDiff3::createAction< KToggleAction >(i18n("Show Files only in A"), QIcon(QPixmap(showfilesonlyina)), i18n("Files\nonly in A"), this, SLOT(slotShowFilesOnlyInA()), ac, "dir_show_files_only_in_a");
    m_pDirShowFilesOnlyInB   = KDiff3::createAction< KToggleAction >(i18n("Show Files only in B"), QIcon(QPixmap(showfilesonlyinb)), i18n("Files\nonly in B"), this, SLOT(slotShowFilesOnlyInB()), ac, "dir_show_files_only_in_b");
-   m_pDirShowFilesOnlyInC   = KDiff3::createAction< KToggleAction >(i18n("Show Files only in C"), QIcon(QPixmap(showfilesonlyinc)), i18n("Files\nonly in C"), this, SLOT(slotShowFilesOnlyInC()), ac, "dir_show_files_only_in_c");
 
    m_pDirShowIdenticalFiles->setChecked( m_pOptions->m_bDmShowIdenticalFiles );
 
    m_pDirCompareExplicit = KDiff3::createAction< KAction >(i18n("Compare Explicitly Selected Files"), p, SLOT(slotCompareExplicitlySelectedFiles()), ac, "dir_compare_explicitly_selected_files");
-   m_pDirMergeExplicit = KDiff3::createAction< KAction >(i18n("Merge Explicitly Selected Files"), p, SLOT(slotMergeExplicitlySelectedFiles()), ac, "dir_merge_explicitly_selected_files");
-
-   m_pDirCurrentDoNothing = KDiff3::createAction< KAction >(i18n("Do Nothing"), p, SLOT(slotCurrentDoNothing()), ac, "dir_current_do_nothing");
-   m_pDirCurrentChooseA = KDiff3::createAction< KAction >(i18n("A"), p, SLOT(slotCurrentChooseA()), ac, "dir_current_choose_a");
-   m_pDirCurrentChooseB = KDiff3::createAction< KAction >(i18n("B"), p, SLOT(slotCurrentChooseB()), ac, "dir_current_choose_b");
-   m_pDirCurrentChooseC = KDiff3::createAction< KAction >(i18n("C"), p, SLOT(slotCurrentChooseC()), ac, "dir_current_choose_c");
-   m_pDirCurrentMerge   = KDiff3::createAction< KAction >(i18n("Merge"), p, SLOT(slotCurrentMerge()), ac, "dir_current_merge");
-   m_pDirCurrentDelete  = KDiff3::createAction< KAction >(i18n("Delete (if exists)"), p, SLOT(slotCurrentDelete()), ac, "dir_current_delete");
-
-   m_pDirCurrentSyncDoNothing = KDiff3::createAction< KAction >(i18n("Do Nothing"), p, SLOT(slotCurrentDoNothing()), ac, "dir_current_sync_do_nothing");
-   m_pDirCurrentSyncCopyAToB = KDiff3::createAction< KAction >(i18n("Copy A to B"), p, SLOT(slotCurrentCopyAToB()), ac, "dir_current_sync_copy_a_to_b" );
-   m_pDirCurrentSyncCopyBToA = KDiff3::createAction< KAction >(i18n("Copy B to A"), p, SLOT(slotCurrentCopyBToA()), ac, "dir_current_sync_copy_b_to_a" );
-   m_pDirCurrentSyncDeleteA  = KDiff3::createAction< KAction >(i18n("Delete A"), p, SLOT(slotCurrentDeleteA()), ac,"dir_current_sync_delete_a");
-   m_pDirCurrentSyncDeleteB  = KDiff3::createAction< KAction >(i18n("Delete B"), p, SLOT(slotCurrentDeleteB()), ac,"dir_current_sync_delete_b");
-   m_pDirCurrentSyncDeleteAAndB  = KDiff3::createAction< KAction >(i18n("Delete A && B"), p, SLOT(slotCurrentDeleteAAndB()), ac,"dir_current_sync_delete_a_and_b");
-   m_pDirCurrentSyncMergeToA   = KDiff3::createAction< KAction >(i18n("Merge to A"), p, SLOT(slotCurrentMergeToA()), ac,"dir_current_sync_merge_to_a");
-   m_pDirCurrentSyncMergeToB   = KDiff3::createAction< KAction >(i18n("Merge to B"), p, SLOT(slotCurrentMergeToB()), ac,"dir_current_sync_merge_to_b");
-   m_pDirCurrentSyncMergeToAAndB   = KDiff3::createAction< KAction >(i18n("Merge to A && B"), p, SLOT(slotCurrentMergeToAAndB()), ac,"dir_current_sync_merge_to_a_and_b");
 }
 
 
 void DirectoryMergeWindow::updateAvailabilities( bool bDirCompare, bool bDiffWindowVisible,
    KToggleAction* chooseA, KToggleAction* chooseB, KToggleAction* chooseC )
 {
-   m_pDirStartOperation->setEnabled( bDirCompare );
-   m_pDirRunOperationForCurrentItem->setEnabled( bDirCompare );
-   m_pDirFoldAll->setEnabled( bDirCompare );
-   m_pDirUnfoldAll->setEnabled( bDirCompare );
-
-   m_pDirCompareCurrent->setEnabled( bDirCompare  &&  isVisible()  &&  isFileSelected() );
-
-   m_pDirMergeCurrent->setEnabled( (bDirCompare  &&  isVisible()  &&  isFileSelected())
-                                || bDiffWindowVisible );
+    if (m_pDirStartOperation) m_pDirStartOperation->setEnabled( bDirCompare );
+    if (m_pDirRunOperationForCurrentItem) m_pDirRunOperationForCurrentItem->setEnabled( bDirCompare );
+    m_pDirFoldAll->setEnabled( bDirCompare );
+    m_pDirUnfoldAll->setEnabled( bDirCompare );
+
+    m_pDirCompareCurrent->setEnabled( bDirCompare  &&  isVisible()  &&  isFileSelected() );
+
+    if (m_pDirMergeCurrent) {
+	m_pDirMergeCurrent->setEnabled( (bDirCompare  &&  isVisible()  &&  isFileSelected())
+					|| bDiffWindowVisible );
+
+	m_pDirAutoChoiceEverywhere->setEnabled( bDirCompare &&  isVisible() );
+	m_pDirDoNothingEverywhere->setEnabled( bDirCompare &&  isVisible() );
+	m_pDirChooseAEverywhere->setEnabled( bDirCompare &&  isVisible() );
+	m_pDirChooseBEverywhere->setEnabled( bDirCompare &&  isVisible() );
+	m_pDirChooseCEverywhere->setEnabled( bDirCompare &&  isVisible() );
+    }
 
    m_pDirRescan->setEnabled( bDirCompare );
 
-   m_pDirAutoChoiceEverywhere->setEnabled( bDirCompare &&  isVisible() );
-   m_pDirDoNothingEverywhere->setEnabled( bDirCompare &&  isVisible() );
-   m_pDirChooseAEverywhere->setEnabled( bDirCompare &&  isVisible() );
-   m_pDirChooseBEverywhere->setEnabled( bDirCompare &&  isVisible() );
-   m_pDirChooseCEverywhere->setEnabled( bDirCompare &&  isVisible() );
-
    bool bThreeDirs = m_dirC.isValid();
 
    QTreeWidgetItem* lvi = currentItem();
@@ -3041,36 +3085,41 @@
    m_pDirShowDifferentFiles->setEnabled( bDirCompare &&  isVisible() );
    m_pDirShowFilesOnlyInA->setEnabled( bDirCompare &&  isVisible() );
    m_pDirShowFilesOnlyInB->setEnabled( bDirCompare &&  isVisible() );
-   m_pDirShowFilesOnlyInC->setEnabled( bDirCompare &&  isVisible() && bThreeDirs );
+
+   if (m_pDirShowFilesOnlyInC) m_pDirShowFilesOnlyInC->setEnabled( bDirCompare &&  isVisible() && bThreeDirs );
 
    m_pDirCompareExplicit->setEnabled( bDirCompare &&  isVisible() && m_pSelection2Item!=0 );
-   m_pDirMergeExplicit->setEnabled( bDirCompare &&  isVisible() && m_pSelection2Item!=0 );
-
-   m_pDirCurrentDoNothing->setEnabled( bItemActive && bMergeMode );
-   m_pDirCurrentChooseA->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInA );
-   m_pDirCurrentChooseB->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInB );
-   m_pDirCurrentChooseC->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInC );
-   m_pDirCurrentMerge->setEnabled( bItemActive && bMergeMode && !bFTConflict );
-   m_pDirCurrentDelete->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 );
+
+   if (m_pDirMergeExplicit) {
+       m_pDirMergeExplicit->setEnabled( bDirCompare &&  isVisible() && m_pSelection2Item!=0 );
+
+       m_pDirCurrentDoNothing->setEnabled( bItemActive && bMergeMode );
+       m_pDirCurrentChooseA->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInA );
+       m_pDirCurrentChooseB->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInB );
+       m_pDirCurrentChooseC->setEnabled( bItemActive && bMergeMode && pMFI->m_bExistsInC );
+       m_pDirCurrentMerge->setEnabled( bItemActive && bMergeMode && !bFTConflict );
+       m_pDirCurrentDelete->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 );
+       }
+
+       m_pDirCurrentSyncDoNothing->setEnabled( bItemActive && !bMergeMode );
+       m_pDirCurrentSyncCopyAToB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInA );
+       m_pDirCurrentSyncCopyBToA->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB );
+       m_pDirCurrentSyncDeleteA->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInA );
+       m_pDirCurrentSyncDeleteB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB );
+       m_pDirCurrentSyncDeleteAAndB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB && pMFI->m_bExistsInB );
+       m_pDirCurrentSyncMergeToA->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
+       m_pDirCurrentSyncMergeToB->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
+       m_pDirCurrentSyncMergeToAAndB->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
    }
-
-   m_pDirCurrentSyncDoNothing->setEnabled( bItemActive && !bMergeMode );
-   m_pDirCurrentSyncCopyAToB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInA );
-   m_pDirCurrentSyncCopyBToA->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB );
-   m_pDirCurrentSyncDeleteA->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInA );
-   m_pDirCurrentSyncDeleteB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB );
-   m_pDirCurrentSyncDeleteAAndB->setEnabled( bItemActive && !bMergeMode && pMFI->m_bExistsInB && pMFI->m_bExistsInB );
-   m_pDirCurrentSyncMergeToA->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
-   m_pDirCurrentSyncMergeToB->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
-   m_pDirCurrentSyncMergeToAAndB->setEnabled( bItemActive && !bMergeMode && !bFTConflict );
 }
 
 
--- a/kdiff3/src-QT4/fileaccess.cpp	Wed Apr 13 15:15:50 2011 +0000
+++ b/kdiff3/src-QT4/fileaccess.cpp	Wed Apr 13 17:05:13 2011 +0100
@@ -1758,6 +1758,51 @@
 }
 
 
+#ifdef SIMPLIFIED_KDIFF3
+
+ProgressProxy::ProgressProxy()
+{
+}
+
+ProgressProxy::~ProgressProxy()
+{
+}
+
+void ProgressProxy::setInformation( const QString& info, bool bRedrawUpdate )
+{
+}
+
+void ProgressProxy::setInformation( const QString& info, double dCurrent, bool bRedrawUpdate )
+{
+}
+
+void ProgressProxy::setCurrent( double dCurrent, bool bRedrawUpdate  )
+{
+}
+
+void ProgressProxy::step( bool bRedrawUpdate )
+{
+}
+
+void ProgressProxy::setMaxNofSteps( int maxNofSteps )
+{
+}
+
+bool ProgressProxy::wasCancelled()
+{
+    return false;
+}
+
+void ProgressProxy::setRangeTransformation( double dMin, double dMax )
+{
+}
+
+void ProgressProxy::setSubRangeTransformation( double dMin, double dMax )
+{
+}
+
+#else
+
 ProgressProxy::ProgressProxy()
 {
    g_pProgressDialog->push();
@@ -1808,7 +1853,7 @@
    g_pProgressDialog->setSubRangeTransformation( dMin, dMax );
 }
 
-
+#endif
 
 
 
--- a/kdiff3/src-QT4/kdiff3.cpp	Wed Apr 13 15:15:50 2011 +0000
+++ b/kdiff3/src-QT4/kdiff3.cpp	Wed Apr 13 17:05:13 2011 +0100
@@ -340,6 +340,26 @@
 {
    if (m_pKDiff3Shell!=0)
    {
+#ifdef SIMPLIFIED_KDIFF3
+       if (fn3.isEmpty()) {
+	   QWidget *w = m_pKDiff3Shell;
+	   if (w) {
+	       QMainWindow *mw = 0;
+	       while (!(mw = qobject_cast<QMainWindow *>(w))) {
+		   w = w->parentWidget();
+	       }
+	       if (mw) {
+		   foreach (QObject *o, mw->menuBar()->children()) {
+		       QMenu *m = qobject_cast<QMenu *>(o);
+		       if (m && m->title() == i18n("&Merge")) {
+			   delete m;
+		       }
+		   }
+	       }
+	   }
+       }
+#endif
+
       QSize size=m_pOptionDialog->m_geometry;
       QPoint pos=m_pOptionDialog->m_position;
       if(!size.isEmpty())
@@ -457,6 +477,7 @@
    {
       slotFileOpen();
    }
+
 }
 
 KDiff3App::~KDiff3App()
--- a/kdiff3/src-QT4/kdiff3.pro	Wed Apr 13 15:15:50 2011 +0000
+++ b/kdiff3/src-QT4/kdiff3.pro	Wed Apr 13 17:05:13 2011 +0100
@@ -1,4 +1,5 @@
 TEMPLATE = app
+DEFINES += SIMPLIFIED_KDIFF3
 # When unresolved items remain during linking: Try adding "shared" in the CONFIG.
 CONFIG  += qt warn_on thread precompile_header
 !os2:PRECOMPILED_HEADER = stable.h
--- a/kdiff3/src-QT4/pdiff.cpp	Wed Apr 13 15:15:50 2011 +0000
+++ b/kdiff3/src-QT4/pdiff.cpp	Wed Apr 13 17:05:13 2011 +0100
@@ -418,6 +418,24 @@
 
    m_bTripleDiff = ! m_sd3.isEmpty();
 
+#ifdef SIMPLIFIED_KDIFF3
+   if (!m_sd3.isValid()) {
+       QWidget *w = m_pMainWidget;
+       QMainWindow *mw = 0;
+       while (!(mw = qobject_cast<QMainWindow *>(w))) {
+	   w = w->parentWidget();
+       }
+       if (mw) {
+	   foreach (QObject *o, mw->menuBar()->children()) {
+	       QMenu *m = qobject_cast<QMenu *>(o);
+	       if (m && m->title() == i18n("&Merge")) {
+		   delete m;
+	       }
+	   }
+       }
+   }
+#endif
+
    m_pMergeResultWindowTitle->setEncodings( m_sd1.getEncoding(), m_sd2.getEncoding(), m_sd3.getEncoding() );
    if ( ! m_pOptionDialog->m_bAutoSelectOutEncoding )
       m_pMergeResultWindowTitle->setEncoding( m_pOptionDialog->m_pEncodingOut );