OSDN Git Service

CommitDlg Basic work
[tortoisegit/TortoiseGitJp.git] / TortoiseProc / CommitDlg.cpp
index c871ecc..9318e29 100644 (file)
@@ -83,10 +83,10 @@ BEGIN_MESSAGE_MAP(CCommitDlg, CResizableStandAloneDialog)
 //     ON_BN_CLICKED(IDC_HISTORY, OnBnClickedHistory)\r
        ON_BN_CLICKED(IDC_BUGTRAQBUTTON, OnBnClickedBugtraqbutton)\r
        ON_EN_CHANGE(IDC_LOGMESSAGE, OnEnChangeLogmessage)\r
-//     ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ITEMCOUNTCHANGED, OnGitStatusListCtrlItemCountChanged)\r
-//     ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnGitStatusListCtrlNeedsRefresh)\r
-//     ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
-//     ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_CHECKCHANGED, &CCommitDlg::OnGitStatusListCtrlCheckChanged)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ITEMCOUNTCHANGED, OnGitStatusListCtrlItemCountChanged)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnGitStatusListCtrlNeedsRefresh)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
+       ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_CHECKCHANGED, &CCommitDlg::OnGitStatusListCtrlCheckChanged)\r
        ON_REGISTERED_MESSAGE(WM_AUTOLISTREADY, OnAutoListReady) \r
        ON_WM_TIMER()\r
     ON_WM_SIZE()\r
@@ -341,14 +341,19 @@ void CCommitDlg::OnOK()
        CTGitPathList itemsToRemove;\r
        bool bCheckedInExternal = false;\r
        bool bHasConflicted = false;\r
-       std::set<CString> checkedLists;\r
-       std::set<CString> uncheckedLists;\r
-#if 0\r
+       //std::set<CString> checkedLists;\r
+       //std::set<CString> uncheckedLists;\r
+\r
+       CString checkedfiles;\r
+       CString uncheckedfiles;\r
+\r
        for (int j=0; j<nListItems; j++)\r
        {\r
-               const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(j);\r
-               if (entry->IsChecked())\r
+               //const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(j);\r
+               CTGitPath *entry = (CTGitPath*)m_ListCtrl.GetItemData(j);\r
+               if (entry->m_Checked)\r
                {\r
+#if 0\r
                        if (entry->status == Git_wc_status_unversioned)\r
                        {\r
                                itemsToAdd.AddPath(entry->GetPath());\r
@@ -369,10 +374,15 @@ void CCommitDlg::OnOK()
                        {\r
                                bCheckedInExternal = true;\r
                        }\r
-                       checkedLists.insert(entry->GetChangeList());\r
+#endif\r
+                       //checkedLists.insert(entry->GetGitPathString());\r
+                       checkedfiles += _T("\"")+entry->GetGitPathString()+_T("\" ");\r
                }\r
                else\r
                {\r
+                       //uncheckedLists.insert(entry->GetGitPathString());\r
+                       uncheckedfiles += _T("\"")+entry->GetGitPathString()+_T("\" ");\r
+#if 0\r
                        if ((entry->status != Git_wc_status_unversioned)        &&\r
                                (entry->status != Git_wc_status_ignored))\r
                        {\r
@@ -395,9 +405,26 @@ void CCommitDlg::OnOK()
                                        }\r
                                }\r
                        }\r
+#endif\r
                }\r
        }\r
-#endif\r
+\r
+       CString cmd;\r
+       CString out;\r
+       if(uncheckedfiles.GetLength()>0)\r
+       {\r
+               cmd.Format(_T("git.cmd reset -- %s"),uncheckedfiles);\r
+               g_Git.Run(cmd,&out);\r
+       }\r
+\r
+       if(checkedfiles.GetLength()>0)\r
+       {\r
+               cmd.Format(_T("git.cmd update-index -- %s"),checkedfiles);\r
+               g_Git.Run(cmd,&out);\r
+       }\r
+\r
+       cmd.Format(_T("git.cmd commit -m \"%s\""), m_sLogMessage);\r
+       g_Git.Run(cmd,&out);\r
 \r
 #if 0\r
        if (m_pathwatcher.GetNumberOfChangedPaths() && m_bRecursive)\r
@@ -723,7 +750,7 @@ void CCommitDlg::OnBnClickedSelectall()
                state = BST_UNCHECKED;\r
                m_SelectAll.SetCheck(state);\r
        }\r
-//     m_ListCtrl.SelectAll(state == BST_CHECKED);\r
+       m_ListCtrl.SelectAll(state == BST_CHECKED);\r
 }\r
 \r
 BOOL CCommitDlg::PreTranslateMessage(MSG* pMsg)\r
@@ -987,6 +1014,11 @@ void CCommitDlg::GetAutocompletionList()
                if ((!m_bRunThread) || (GetTickCount() - starttime > timeoutvalue))\r
                        return;\r
 \r
+               CTGitPath *path = (CTGitPath*)m_ListCtrl.GetItemData(i);\r
+\r
+               CString sPartPath =path->GetGitPathString();\r
+               m_autolist.insert(sPartPath);\r
+\r
 //             const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(i);\r
 //             if (!entry)\r
 //                     continue;\r
@@ -995,7 +1027,7 @@ void CCommitDlg::GetAutocompletionList()
 //             CString sPartPath = entry->GetRelativeGitPath();\r
 //             m_autolist.insert(sPartPath);\r
 \r
-#if 0\r
+\r
                int pos = 0;\r
                int lastPos = 0;\r
                while ((pos = sPartPath.Find('/', pos)) >= 0)\r
@@ -1013,7 +1045,7 @@ void CCommitDlg::GetAutocompletionList()
                        if ((dotPos >= 0) && (dotPos > lastPos))\r
                                m_autolist.insert(sPartPath.Mid(lastPos, dotPos - lastPos));\r
                }\r
-\r
+#if 0\r
                if ((entry->status <= Git_wc_status_normal)||(entry->status == Git_wc_status_ignored))\r
                        continue;\r
 \r