OSDN Git Service

Add Clean Type Dialog
authorFrank Li <lznuaa@gmail.com>
Sat, 25 Jul 2009 09:19:00 +0000 (17:19 +0800)
committerFrank Li <lznuaa@gmail.com>
Sat, 25 Jul 2009 09:19:00 +0000 (17:19 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/CleanTypeDlg.cpp [new file with mode: 0644]
src/TortoiseProc/Commands/CleanupCommand.cpp
src/TortoiseProc/SyncDlg.cpp
src/TortoiseProc/TortoiseProc.vcproj
src/TortoiseProc/resource.h
src/TortoiseShell/resourceshell.rc

index df7911f..8877079 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
diff --git a/src/TortoiseProc/CleanTypeDlg.cpp b/src/TortoiseProc/CleanTypeDlg.cpp
new file mode 100644 (file)
index 0000000..bc235d1
--- /dev/null
@@ -0,0 +1,70 @@
+// CleanTypeDlg.cpp : implementation file\r
+//\r
+\r
+#include "stdafx.h"\r
+#include "TortoiseProc.h"\r
+#include "CleanTypeDlg.h"\r
+#include "git.h"\r
+\r
+// CCleanTypeDlg dialog\r
+\r
+IMPLEMENT_DYNAMIC(CCleanTypeDlg, CResizableStandAloneDialog)\r
+\r
+CCleanTypeDlg::CCleanTypeDlg(CWnd* pParent /*=NULL*/)\r
+       : CResizableStandAloneDialog(CCleanTypeDlg::IDD, pParent)\r
+       \r
+{\r
+       CString WorkingDir=g_Git.m_CurrentDir;\r
+       WorkingDir.Replace(_T(':'),_T('_'));\r
+       this->m_regDir  = CRegDWORD( CString(_T("Software\\TortoiseGit\\History\\CleanDir\\"))+WorkingDir, 1);\r
+       this->m_regType = CRegDWORD( CString(_T("Software\\TortoiseGit\\History\\CleanType\\"))+WorkingDir, 0);\r
+\r
+       this->m_bDir = this->m_regDir;\r
+       this->m_CleanType = this->m_regType;\r
+}\r
+\r
+CCleanTypeDlg::~CCleanTypeDlg()\r
+{\r
+}\r
+\r
+void CCleanTypeDlg::DoDataExchange(CDataExchange* pDX)\r
+{\r
+       CDialog::DoDataExchange(pDX);\r
+       DDX_Check(pDX, IDC_CHECK_DIR, m_bDir);\r
+       DDX_Radio(pDX, IDC_RADIO_CLEAN_ALL,m_CleanType);\r
+}\r
+\r
+\r
+BEGIN_MESSAGE_MAP(CCleanTypeDlg, CResizableStandAloneDialog)\r
+END_MESSAGE_MAP()\r
+\r
+\r
+// CCleanTypeDlg message handlers\r
+\r
+BOOL CCleanTypeDlg::OnInitDialog()\r
+{\r
+       CResizableStandAloneDialog::OnInitDialog();\r
+\r
+       this->AddAnchor(IDOK,BOTTOM_RIGHT);\r
+       this->AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+       this->AddAnchor(IDHELP,BOTTOM_RIGHT);\r
+\r
+       this->AddAnchor(IDC_GROUP_CLEAN_TYPE,TOP_LEFT,TOP_RIGHT);\r
+\r
+       this->AddOthersToAnchor();\r
+       // TODO:  Add extra initialization here\r
+\r
+       return TRUE;  // return TRUE unless you set the focus to a control\r
+       // EXCEPTION: OCX Property Pages should return FALSE\r
+}\r
+\r
+void CCleanTypeDlg::OnOK()\r
+{\r
+       // TODO: Add your specialized code here and/or call the base class\r
+       this->UpdateData();\r
+       \r
+       this->m_regDir = this->m_bDir;\r
+       this->m_regType = this->m_CleanType ;\r
+\r
+       CResizableStandAloneDialog::OnOK();\r
+}\r
index 89324fa..53920fa 100644 (file)
 #include "GitAdminDir.h"\r
 #include "DirFileEnum.h"\r
 #include "ShellUpdater.h"\r
+#include "CleanTypeDlg.h"\r
 \r
 bool CleanupCommand::Execute()\r
 {\r
        bool bRet = false;\r
-       CString temp;\r
-       temp.Format(_T("Are you sure clean all untracked files"));\r
-       if(CMessageBox::Show(NULL,temp,_T("TortoiseGit"),MB_YESNO)==IDYES)\r
-       {\r
+\r
+       CCleanTypeDlg dlg;\r
+       if( dlg.DoModal() == IDOK)\r
+       {       \r
                CProgressDlg progress;\r
-               progress.m_GitCmd.Format(_T("git clean -d -x -f "));\r
+               progress.m_GitCmd.Format(_T("git clean "));\r
+               if(dlg.m_bDir)\r
+                       progress.m_GitCmd += _T(" -d ");\r
+               switch(dlg.m_CleanType)\r
+               {\r
+               case 0:\r
+                       progress.m_GitCmd += _T(" -fx");\r
+                       break;\r
+               case 1:\r
+                       progress.m_GitCmd += _T(" -f");\r
+                       break;\r
+               case 2:\r
+                       progress.m_GitCmd += _T(" -fX");\r
+                       break;\r
+               }\r
                if(progress.DoModal()==IDOK)\r
                        return TRUE;\r
        }\r
index 342cfbb..f20a7e8 100644 (file)
@@ -293,6 +293,7 @@ void CSyncDlg::OnBnClickedButtonPush()
 {\r
        // TODO: Add your control notification handler code here\r
        this->UpdateData();\r
+       UpdateCombox();\r
 \r
        if(this->m_strURL.IsEmpty())\r
        {\r
@@ -312,7 +313,7 @@ void CSyncDlg::OnBnClickedButtonPush()
        CString force;\r
        CString all;\r
 \r
-       UpdateCombox();\r
+\r
 \r
        switch (m_ctrlPush.GetCurrentEntry())\r
        {\r
index 2bafd62..0ebbde6 100644 (file)
                                Name="Clean"\r
                                >\r
                                <File\r
+                                       RelativePath=".\CleanTypeDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\CleanTypeDlg.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\Commands\CleanupCommand.cpp"\r
                                        >\r
                                </File>\r
index 75b2de0..f79c778 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ
index 6c106c7..72dedc3 100644 (file)
@@ -211,7 +211,7 @@ BEGIN
     IDS_MENUCREATEREPOS     "Create repositor&y here"\r
     IDS_MENUADD             "&Add..."\r
     IDS_MENUREVERT          "Re&vert..."\r
-    IDS_MENUCLEANUP         "&Clean up"\r
+    IDS_MENUCLEANUP         "&Clean up..."\r
     IDS_MENURESOLVE         "Res&olved..."\r
 END\r
 \r