OSDN Git Service

Add Compare Statistics dialog for 3-way folder compare
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 23 Jan 2016 12:27:30 +0000 (21:27 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sat, 23 Jan 2016 12:27:30 +0000 (21:27 +0900)
Src/CompareStatisticsDlg.cpp
Src/CompareStatisticsDlg.h
Src/CompareStats.cpp
Src/CompareStats.h
Src/DirView.cpp
Src/Merge.rc
Src/resource.h

index e667347..dd637a2 100644 (file)
 static char THIS_FILE[] = __FILE__;
 #endif
 
-
-/** @brief Icon size in the dialog. */
-static const CSize IconSize(16, 16);
-
 /////////////////////////////////////////////////////////////////////////////
 // SaveClosingDlg dialog
 
 IMPLEMENT_DYNAMIC(CompareStatisticsDlg, CDialog)
 
-CompareStatisticsDlg::CompareStatisticsDlg(CWnd* pParent /*=NULL*/)
-       : CDialog(CompareStatisticsDlg::IDD, pParent)
-, m_pCompareStats(NULL)
+CompareStatisticsDlg::CompareStatisticsDlg(const CompareStats* pStats, CWnd* pParent /*=NULL*/) :
+       m_pCompareStats(pStats),
+       CDialog(pStats->GetCompareDirs() < 3 ? IDD_COMPARE_STATISTICS : IDD_COMPARE_STATISTICS3, pParent)
 {
        //{{AFX_DATA_INIT(CompareStatisticsDlg)
        //}}AFX_DATA_INIT
@@ -66,115 +62,82 @@ BOOL CompareStatisticsDlg::OnInitDialog()
        CDialog::OnInitDialog();
        int totalFiles = 0;
        int totalFolders = 0;
-
-       // Identicals
-       int count = m_pCompareStats->GetCount(CompareStats::RESULT_DIR);
-       totalFolders += count;
-       SetDlgItemInt(IDC_STAT_IDENTICFOLDER, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_SAME);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_IDENTICFILE, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_BINSAME);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_IDENTICBINARY, count);
-
-       // Different
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_DIFF);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_DIFFFILE, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_BINDIFF);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_DIFFBINARY, count);
-
-       // Unique
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_LDIRUNIQUE);
-       totalFolders += count;
-       SetDlgItemInt(IDC_STAT_LUNIQFOLDER, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_LUNIQUE);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_LUNIQFILE, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_MDIRUNIQUE);
-       totalFolders += count;
-       SetDlgItemInt(IDC_STAT_MUNIQFOLDER, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_MUNIQUE);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_MUNIQFILE, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_RDIRUNIQUE);
-       totalFolders += count;
-       SetDlgItemInt(IDC_STAT_RUNIQFOLDER, count);
-       count = m_pCompareStats->GetCount(CompareStats::RESULT_RUNIQUE);
-       totalFiles += count;
-       SetDlgItemInt(IDC_STAT_RUNIQFILE, count);
+       const int iconCX = []() {
+               const int cx = GetSystemMetrics(SM_CXSMICON);
+               if (cx < 24)
+                       return 16;
+               if (cx < 32)
+                       return 24;
+               return 32;
+       }();
+       const int iconCY = iconCX;
+
+       static const struct { int ctlID; CompareStats::RESULT resultType; bool isDir; } ctlResultTypeMap[] =
+       {
+               { IDC_STAT_IDENTICFOLDER,  CompareStats::RESULT_DIR,         true },
+               { IDC_STAT_IDENTICFILE,    CompareStats::RESULT_SAME,        false },
+               { IDC_STAT_IDENTICBINARY,  CompareStats::RESULT_BINSAME,     false },
+               { IDC_STAT_DIFFFILE,       CompareStats::RESULT_DIFF,        false },
+               { IDC_STAT_DIFFBINARY,     CompareStats::RESULT_BINDIFF,     false },
+               { IDC_STAT_LUNIQFOLDER,    CompareStats::RESULT_LDIRUNIQUE,  true },
+               { IDC_STAT_LUNIQFILE,      CompareStats::RESULT_LUNIQUE,     false },
+               { IDC_STAT_MUNIQFOLDER,    CompareStats::RESULT_MDIRUNIQUE,  true },
+               { IDC_STAT_MUNIQFILE,      CompareStats::RESULT_MUNIQUE,     false },
+               { IDC_STAT_RUNIQFOLDER,    CompareStats::RESULT_RDIRUNIQUE,  true },
+               { IDC_STAT_RUNIQFILE,      CompareStats::RESULT_RUNIQUE,     false },
+               { IDC_STAT_LMISSINGFOLDER, CompareStats::RESULT_LDIRMISSING, true },
+               { IDC_STAT_LMISSINGFILE,   CompareStats::RESULT_LMISSING,    false },
+               { IDC_STAT_MMISSINGFOLDER, CompareStats::RESULT_MDIRMISSING, true },
+               { IDC_STAT_MMISSINGFILE,   CompareStats::RESULT_MMISSING,    false },
+               { IDC_STAT_RMISSINGFOLDER, CompareStats::RESULT_RDIRMISSING, true },
+               { IDC_STAT_RMISSINGFILE,   CompareStats::RESULT_RMISSING,    false },
+       };
+       for (auto&& map : ctlResultTypeMap)
+       {
+               int count = m_pCompareStats->GetCount(map.resultType);
+               if (!map.isDir)
+                       totalFiles += count;
+               else
+                       totalFolders += count;
+               SetDlgItemInt(map.ctlID, count);
+       }
 
        // Total
        SetDlgItemInt(IDC_STAT_TOTALFOLDER, totalFolders);
        SetDlgItemInt(IDC_STAT_TOTALFILE, totalFiles);
 
        // Load small folder icons
-       CStatic * pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_ILUNIQFOLDER);
-       HICON hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_LFOLDER), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IMUNIQFOLDER);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_MFOLDER), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-       
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IRUNIQFOLDER);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_RFOLDER), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-       
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IIDENTICFOLDER);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_FOLDER), IMAGE_ICON, IconSize.cy, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
+       static const struct { int ctlID; int iconID; } ctlIconMap[] =
+       {
+               { IDC_STAT_ILUNIQFOLDER,    IDI_LFOLDER },
+               { IDC_STAT_IMUNIQFOLDER,    IDI_MFOLDER },
+               { IDC_STAT_IRUNIQFOLDER,    IDI_RFOLDER },
+               { IDC_STAT_ILMISSINGFOLDER, IDI_MRFOLDER },
+               { IDC_STAT_IMMISSINGFOLDER, IDI_LRFOLDER },
+               { IDC_STAT_IRMISSINGFOLDER, IDI_LMFOLDER },
+               { IDC_STAT_INOTEQUAL,       IDI_NOTEQUALFILE },
+               { IDC_STAT_IDIFFBINFILE,    IDI_BINARYDIFF },
+               { IDC_STAT_ILUNIQFILE,      IDI_LFILE },
+               { IDC_STAT_IMUNIQFILE,      IDI_MFILE },
+               { IDC_STAT_IRUNIQFILE,      IDI_RFILE },
+               { IDC_STAT_ILMISSINGFILE,   IDI_MRFILE },
+               { IDC_STAT_IMMISSINGFILE,   IDI_LRFILE },
+               { IDC_STAT_IRMISSINGFILE,   IDI_LMFILE },
+               { IDC_STAT_IEQUALFILE,      IDI_EQUALFILE },
+               { IDC_STAT_IEQUALBINFILE,   IDI_EQUALBINARY },
+       };
        
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_INOTEQUAL);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_NOTEQUALFILE), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IDIFFBINFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_BINARYDIFF), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_ILUNIQFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_LFILE), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IMUNIQFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_MFILE), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IRUNIQFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_RFILE), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IEQUALFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_EQUALFILE), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
-
-       pBitmapCtrl = (CStatic *) GetDlgItem(IDC_STAT_IEQUALBINFILE);
-       hIcon = (HICON) LoadImage(AfxGetInstanceHandle(),
-               MAKEINTRESOURCE(IDI_EQUALBINARY), IMAGE_ICON, IconSize.cx, IconSize.cy, LR_SHARED);
-       pBitmapCtrl->SetIcon(hIcon);
+       for (auto&& map : ctlIconMap)
+       {
+               CStatic * pBitmapCtrl = static_cast<CStatic *>(GetDlgItem(map.ctlID));
+               if (pBitmapCtrl)
+               {
+                       HICON hIcon = (HICON)LoadImage(AfxGetInstanceHandle(),
+                               MAKEINTRESOURCE(map.iconID), IMAGE_ICON, iconCX, iconCY, LR_SHARED);
+                       pBitmapCtrl->SetIcon(hIcon);
+               }
+       }
 
        return FALSE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
 }
-
-/**
- * @brief Set compare stats for the dialog.
- * @param [in] pStats Pointer to the structure containing compare stats.
- */
-void CompareStatisticsDlg::SetCompareStats(const CompareStats * pStats)
-{
-       m_pCompareStats = pStats;
-}
index db964ef..2908d67 100644 (file)
@@ -33,8 +33,7 @@ class CompareStatisticsDlg : public CDialog
        DECLARE_DYNAMIC(CompareStatisticsDlg)
 
 public:
-       explicit CompareStatisticsDlg(CWnd* pParent = NULL);   // standard constructor
-       void SetCompareStats(const CompareStats * pStats);
+       CompareStatisticsDlg(const CompareStats * pStats, CWnd* pParent = NULL);   // standard constructor
 
 // Dialog Data
        //{{AFX_DATA(CompareStatisticsDlg)
index 9bda045..3af903f 100644 (file)
@@ -149,57 +149,32 @@ CompareStats::RESULT CompareStats::GetResultFromCode(unsigned diffcode) const
        if (di.isResultFiltered())
        {
                // skipped
-               if (di.isDirectory())
-               {
-                       return RESULT_DIRSKIP;
-               }
-               else
-               {
-                       return RESULT_SKIP;
-               }
+               return di.isDirectory() ? RESULT_DIRSKIP : RESULT_SKIP;
        }
        else if (di.isSideFirstOnly())
        {
                // left-only
-               if (di.isDirectory())
-               {
-                       return RESULT_LDIRUNIQUE;
-               }
-               else
-               {
-                       return RESULT_LUNIQUE;
-               }
+               return di.isDirectory() ? RESULT_LDIRUNIQUE : RESULT_LUNIQUE;
        }
        else if (di.isSideSecondOnly())
        {
                // right-only
                if (di.isDirectory())
-               {
-                       if (m_nDirs < 3)
-                               return RESULT_RDIRUNIQUE;
-                       else
-                               return RESULT_MDIRUNIQUE;
-               }
+                       return (m_nDirs < 3) ? RESULT_RDIRUNIQUE : RESULT_MDIRUNIQUE;
                else
-               {
-                       if (m_nDirs < 3)
-                               return RESULT_RUNIQUE;
-                       else
-                               return RESULT_MUNIQUE;
-               }
+                       return (m_nDirs < 3) ? RESULT_RUNIQUE : RESULT_MUNIQUE;
        }
        else if (di.isSideThirdOnly())
        {
                // right-only
-               if (di.isDirectory())
-               {
-                       return RESULT_RDIRUNIQUE;
-               }
-               else
-               {
-                       return RESULT_RUNIQUE;
-               }
+               return di.isDirectory() ? RESULT_RDIRUNIQUE : RESULT_RUNIQUE;
        }
+       else if (m_nDirs > 2 && !di.exists(0) && di.exists(1) && di.exists(2))
+               return di.isDirectory() ? RESULT_LDIRMISSING : RESULT_LMISSING;
+       else if (m_nDirs > 2 && di.exists(0) && !di.exists(1) && di.exists(2))
+               return di.isDirectory() ? RESULT_MDIRMISSING : RESULT_MMISSING;
+       else if (m_nDirs > 2 && di.exists(0) && di.exists(1) && !di.exists(2))
+               return di.isDirectory() ? RESULT_RDIRMISSING : RESULT_RMISSING;
        else if (di.isResultError())
        {
                // could be directory error ?
@@ -209,14 +184,7 @@ CompareStats::RESULT CompareStats::GetResultFromCode(unsigned diffcode) const
        else if (di.isResultSame())
        {
                // same
-               if (di.isBin())
-               {
-                       return RESULT_BINSAME;
-               }
-               else
-               {
-                       return RESULT_SAME;
-               }
+               return di.isBin() ? RESULT_BINSAME : RESULT_SAME;
        }
        else
        {
@@ -227,14 +195,7 @@ CompareStats::RESULT CompareStats::GetResultFromCode(unsigned diffcode) const
                }
                else
                {
-                       if (di.isBin())
-                       {
-                               return RESULT_BINDIFF;
-                       }
-                       else
-                       {
-                               return RESULT_DIFF;
-                       }
+                       return di.isBin() ? RESULT_BINDIFF : RESULT_DIFF;
                }
        }
 }
index 49a0b46..378bfc4 100644 (file)
@@ -92,6 +92,7 @@ public:
        bool IsCompareDone() const { return m_bCompareDone; }
        CompareStats::RESULT GetResultFromCode(unsigned diffcode) const;
        void Swap(int idx1, int idx2);
+       int GetCompareDirs() const { return m_nDirs; }
 
 private:
        int m_counts[RESULT_COUNT]; /**< Table storing result counts */
index 2e4b7e3..f7cb8bd 100644 (file)
@@ -3172,8 +3172,7 @@ void CDirView::OnUpdateMergeCompare2(CCmdUI *pCmdUI)
 
 void CDirView::OnViewCompareStatistics()
 {
-       CompareStatisticsDlg dlg;
-       dlg.SetCompareStats(GetDocument()->GetCompareStats());
+       CompareStatisticsDlg dlg(GetDocument()->GetCompareStats());
        dlg.DoModal();
 }
 
index 83bf4c7..cbc2b35 100644 (file)
@@ -1660,7 +1660,48 @@ BEGIN
     RTEXT           "Binary:",IDC_STATIC,10,40,56,10
     ICON            "",IDC_STAT_IDIFFBINFILE, 131,37,16,16
     RTEXT           "Static",IDC_STAT_DIFFBINARY,146,38,38,10,SS_SUNKEN
-    GROUPBOX        "Unique",IDC_STATIC,7,55,186,53
+    GROUPBOX        "Unique",IDC_STATIC,7,55,186,40
+    RTEXT           "Left:",IDC_STATIC,11,66,56,10
+    ICON            "",IDC_STAT_ILUNIQFOLDER,72,64,16,16
+    RTEXT           "Static",IDC_STAT_LUNIQFOLDER,86,65,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_ILUNIQFILE,131,64,16,16
+    RTEXT           "Static",IDC_STAT_LUNIQFILE,146,65,38,10,SS_SUNKEN
+    RTEXT           "Right:",IDC_STATIC,11,79,56,10
+    ICON            "",IDC_STAT_IRUNIQFOLDER,72,77,16,16
+    RTEXT           "Static",IDC_STAT_RUNIQFOLDER,86,78,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_IRUNIQFILE,131,77,16,16
+    RTEXT           "Static",IDC_STAT_RUNIQFILE,146,78,38,10,SS_SUNKEN
+    GROUPBOX        "Identical",IDC_STATIC,7,95,186,40
+    ICON            "",IDC_STAT_IIDENTICFOLDER,72,104,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICFOLDER,86,105,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_IEQUALFILE,131,104,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICFILE,146,105,38,10,SS_SUNKEN
+    RTEXT           "Binary:",IDC_STATIC,10,119,56,10
+    ICON            "",IDC_STAT_IEQUALBINFILE,131,117,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICBINARY,146,118,38,10,SS_SUNKEN
+    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,140,186,1
+    RTEXT           "Total:",IDC_STATIC,13,148,56,10
+    RTEXT           "Static",IDC_STAT_TOTALFOLDER,86,147,38,10,SS_SUNKEN
+    RTEXT           "Static",IDC_STAT_TOTALFILE,146,147,38,10,SS_SUNKEN
+    DEFPUSHBUTTON   "Close",IDOK,200,146,50,14
+END
+
+IDD_COMPARE_STATISTICS3 DIALOGEX 0, 0, 257, 224
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
+    WS_SYSMENU
+CAPTION "Compare Statistics"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+    LTEXT           "Folders:",IDC_STATIC,72,7,38,10
+    LTEXT           "Files:",IDC_STATIC,131,7,39,10
+    GROUPBOX        "Different",IDC_STATIC,7,15,186,40
+    RTEXT           "Text:",IDC_STATIC,11,26,56,10
+    ICON            "",IDC_STAT_INOTEQUAL,131,24,16,16
+    RTEXT           "Static",IDC_STAT_DIFFFILE,146,25,38,10,SS_SUNKEN
+    RTEXT           "Binary:",IDC_STATIC,10,40,56,10
+    ICON            "",IDC_STAT_IDIFFBINFILE, 131,37,16,16
+    RTEXT           "Static",IDC_STAT_DIFFBINARY,146,38,38,10,SS_SUNKEN
+    GROUPBOX        "Unique",IDC_STATIC,7,55,186,90
     RTEXT           "Left:",IDC_STATIC,11,66,56,10
     ICON            "",IDC_STAT_ILUNIQFOLDER,72,64,16,16
     RTEXT           "Static",IDC_STAT_LUNIQFOLDER,86,65,38,10,SS_SUNKEN
@@ -1676,21 +1717,34 @@ BEGIN
     RTEXT           "Static",IDC_STAT_RUNIQFOLDER,86,91,38,10,SS_SUNKEN
     ICON            "",IDC_STAT_IRUNIQFILE,131,91,16,16
     RTEXT           "Static",IDC_STAT_RUNIQFILE,146,92,38,10,SS_SUNKEN
-    GROUPBOX        "Identical",IDC_STATIC,7,108,186,37
-    ICON            "",IDC_STAT_IIDENTICFOLDER,72,115,16,16
-    RTEXT           "Static",IDC_STAT_IDENTICFOLDER,86,116,38,10,SS_SUNKEN
-    ICON            "",IDC_STAT_IEQUALFILE,131,115,16,16
-    RTEXT           "Static",IDC_STAT_IDENTICFILE,146,116,38,10,SS_SUNKEN
-    RTEXT           "Binary:",IDC_STATIC,10,130,56,10
-    ICON            "",IDC_STAT_IEQUALBINFILE,131,128,16,16
-    RTEXT           "Static",IDC_STAT_IDENTICBINARY,146,129,38,10,SS_SUNKEN
-    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,149,186,1
-    RTEXT           "Total:",IDC_STATIC,13,155,56,10
-
-    RTEXT           "Static",IDC_STAT_TOTALFOLDER,86,154,38,10,SS_SUNKEN
-
-    RTEXT           "Static",IDC_STAT_TOTALFILE,146,154,38,10,SS_SUNKEN
-    DEFPUSHBUTTON   "Close",IDOK,200,153,50,14
+    RTEXT           "Missing Left:",IDC_STATIC,11,105,56,10
+    ICON            "",IDC_STAT_ILMISSINGFOLDER,72,103,16,16
+    RTEXT           "Static",IDC_STAT_LMISSINGFOLDER,86,104,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_ILMISSINGFILE,131,103,16,16
+    RTEXT           "Static",IDC_STAT_LMISSINGFILE,146,104,38,10,SS_SUNKEN
+    RTEXT           "Missing Middle:",IDC_STATIC,11,118,56,10
+    ICON            "",IDC_STAT_IMMISSINGFOLDER,72,116,16,16
+    RTEXT           "Static",IDC_STAT_MMISSINGFOLDER,86,117,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_IMMISSINGFILE,131,116,16,16
+    RTEXT           "Static",IDC_STAT_MMISSINGFILE,146,117,38,10,SS_SUNKEN
+    RTEXT           "Missing Right:",IDC_STATIC,11,131,56,10
+    ICON            "",IDC_STAT_IRMISSINGFOLDER,72,129,16,16
+    RTEXT           "Static",IDC_STAT_RMISSINGFOLDER,86,130,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_IRMISSINGFILE,131,129,16,16
+    RTEXT           "Static",IDC_STAT_RMISSINGFILE,146,130,38,10,SS_SUNKEN
+    GROUPBOX        "Identical",IDC_STATIC,7,147,186,37
+    ICON            "",IDC_STAT_IIDENTICFOLDER,72,155,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICFOLDER,86,156,38,10,SS_SUNKEN
+    ICON            "",IDC_STAT_IEQUALFILE,131,155,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICFILE,146,156,38,10,SS_SUNKEN
+    RTEXT           "Binary:",IDC_STATIC,10,170,56,10
+    ICON            "",IDC_STAT_IEQUALBINFILE,131,168,16,16
+    RTEXT           "Static",IDC_STAT_IDENTICBINARY,146,169,38,10,SS_SUNKEN
+    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,189,186,1
+    RTEXT           "Total:",IDC_STATIC,13,195,56,10
+    RTEXT           "Static",IDC_STAT_TOTALFOLDER,86,194,38,10,SS_SUNKEN
+    RTEXT           "Static",IDC_STAT_TOTALFILE,146,194,38,10,SS_SUNKEN
+    DEFPUSHBUTTON   "Close",IDOK,200,193,50,14
 END
 
 IDD_LOAD_SAVE_CODEPAGE DIALOGEX 0, 0, 278, 150
index ab998a6..6841a27 100644 (file)
@@ -47,6 +47,7 @@
 #define IDD_SHARED_FILTER               227
 #define IDD_PROP_ARCHIVE                228
 #define IDD_COMPARE_STATISTICS          229
+#define IDD_COMPARE_STATISTICS3         2291
 #define IDD_LOAD_SAVE_CODEPAGE          230
 #define IDD_TEST_FILTER                 231
 #define IDD_PROPPAGE_COLORS_TEXT        232
 #define IDC_STAT_RUNIQFILE              1213
 #define IDC_STAT_MUNIQFOLDER            21212
 #define IDC_STAT_MUNIQFILE              21213
+#define IDC_STAT_LMISSINGFOLDER         21214
+#define IDC_STAT_LMISSINGFILE           21215
+#define IDC_STAT_RMISSINGFOLDER         21216
+#define IDC_STAT_RMISSINGFILE           21217
+#define IDC_STAT_MMISSINGFOLDER         21218
+#define IDC_STAT_MMISSINGFILE           21219
 #define IDC_STAT_TOTALFOLDER            1214
 #define IDC_STAT_TOTALFILE              1215
 #define IDC_TREEOPT_IMPORT              1216
 #define IDC_TREEOPT_EXPORT              1217
 #define IDC_STAT_ILUNIQFOLDER           1218
 #define IDC_STAT_IRUNIQFOLDER           1219
-#define IDC_STAT_IMUNIQFOLDER           21219
+#define IDC_STAT_IMUNIQFOLDER           21220
+#define IDC_STAT_ILMISSINGFOLDER        21221
+#define IDC_STAT_IRMISSINGFOLDER        21222
+#define IDC_STAT_IMMISSINGFOLDER        21223
 #define IDC_STAT_IIDENTICFOLDER         1220
 #define IDC_STAT_INOTEQUAL              1221
 #define IDC_STAT_IDIFFBINFILE           1222
 #define IDC_STAT_ILUNIQFILE             1223
 #define IDC_STAT_IRUNIQFILE             1224
-#define IDC_STAT_IMUNIQFILE             21223
+#define IDC_STAT_IMUNIQFILE             21224
+#define IDC_STAT_ILMISSINGFILE          21225
+#define IDC_STAT_IRMISSINGFILE          21226
+#define IDC_STAT_IMMISSINGFILE          21227
 #define IDC_STAT_IEQUALFILE             1225
 #define IDC_STAT_IEQUALBINFILE          1226
 #define IDC_EDITOR_CHARLEVEL            1229