OSDN Git Service

Use unified Version Choose Code
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CloneDlg.cpp
index f3d83d1..70f3243 100644 (file)
@@ -4,14 +4,16 @@
 #include "stdafx.h"\r
 #include "TortoiseProc.h"\r
 #include "CloneDlg.h"\r
-\r
+#include "BrowseFolder.h"\r
+#include "MessageBox.h"\r
 \r
 // CCloneDlg dialog\r
 \r
-IMPLEMENT_DYNCREATE(CCloneDlg, CDHtmlDialog)\r
+IMPLEMENT_DYNCREATE(CCloneDlg, CResizableStandAloneDialog)\r
 \r
 CCloneDlg::CCloneDlg(CWnd* pParent /*=NULL*/)\r
-       : CDHtmlDialog(CCloneDlg::IDD, CCloneDlg::IDH, pParent)\r
+       : CResizableStandAloneDialog(CCloneDlg::IDD, pParent)\r
+       , m_Directory(_T(""))\r
 {\r
 \r
 }\r
@@ -22,47 +24,97 @@ CCloneDlg::~CCloneDlg()
 \r
 void CCloneDlg::DoDataExchange(CDataExchange* pDX)\r
 {\r
-       CDHtmlDialog::DoDataExchange(pDX);\r
+       CResizableStandAloneDialog::DoDataExchange(pDX);\r
+       DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
+       DDX_Text(pDX, IDC_CLONE_DIR, m_Directory);\r
 }\r
 \r
 BOOL CCloneDlg::OnInitDialog()\r
 {\r
-       CDHtmlDialog::OnInitDialog();\r
+       CResizableStandAloneDialog::OnInitDialog();\r
+       AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT);\r
+       AddAnchor(IDC_CLONE_BROWSE_URL, TOP_RIGHT);\r
+       AddAnchor(IDC_CLONE_DIR, TOP_LEFT,TOP_RIGHT);\r
+       AddAnchor(IDC_CLONE_DIR_BROWSE, TOP_RIGHT);\r
+       AddAnchor(IDOK,BOTTOM_RIGHT);\r
+       AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+\r
+       m_URLCombo.SetURLHistory(TRUE);\r
+       m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS"), _T("url"));\r
+       if(m_URL.IsEmpty())\r
+               m_URLCombo.SetCurSel(0);\r
+       else\r
+               m_URLCombo.SetWindowTextW(m_URL);\r
+\r
+       CWnd *window=this->GetDlgItem(IDC_CLONE_DIR);\r
+       if(window)\r
+               SHAutoComplete(window->m_hWnd, SHACF_FILESYSTEM);\r
+       \r
        return TRUE;  // return TRUE  unless you set the focus to a control\r
 }\r
 \r
-BEGIN_MESSAGE_MAP(CCloneDlg, CDHtmlDialog)\r
+BEGIN_MESSAGE_MAP(CCloneDlg, CResizableStandAloneDialog)\r
        ON_BN_CLICKED(IDC_CLONE_BROWSE_URL, &CCloneDlg::OnBnClickedCloneBrowseUrl)\r
        ON_BN_CLICKED(IDC_CLONE_DIR_BROWSE, &CCloneDlg::OnBnClickedCloneDirBrowse)\r
 END_MESSAGE_MAP()\r
 \r
-BEGIN_DHTML_EVENT_MAP(CCloneDlg)\r
-       DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)\r
-       DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)\r
-END_DHTML_EVENT_MAP()\r
-\r
 \r
 \r
 // CCloneDlg message handlers\r
 \r
-HRESULT CCloneDlg::OnButtonOK(IHTMLElement* /*pElement*/)\r
+void CCloneDlg::OnOK()\r
 {\r
-       OnOK();\r
-       return S_OK;\r
+       this->m_URLCombo.GetWindowTextW(m_URL);\r
+       m_URL.Trim();\r
+       UpdateData(TRUE);\r
+       if(m_URL.IsEmpty()||m_Directory.IsEmpty())\r
+       {\r
+               CMessageBox::Show(NULL,_T("URL or Dir can't empty"),_T("TortiseGit"),MB_OK);\r
+               return;\r
+       }\r
+       m_URLCombo.SaveHistory();\r
+       CResizableDialog::OnOK();\r
+\r
 }\r
 \r
-HRESULT CCloneDlg::OnButtonCancel(IHTMLElement* /*pElement*/)\r
+void CCloneDlg::OnCancel()\r
 {\r
-       OnCancel();\r
-       return S_OK;\r
+       CResizableDialog::OnCancel();\r
 }\r
 \r
 void CCloneDlg::OnBnClickedCloneBrowseUrl()\r
 {\r
        // TODO: Add your control notification handler code here\r
+       CBrowseFolder browseFolder;\r
+       browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
+       CString strCloneDirectory;\r
+       this->m_URLCombo.GetWindowTextW(strCloneDirectory);\r
+       if (browseFolder.Show(GetSafeHwnd(), strCloneDirectory) == CBrowseFolder::OK) \r
+       {\r
+               this->m_URLCombo.SetWindowTextW(strCloneDirectory);\r
+       }\r
 }\r
 \r
 void CCloneDlg::OnBnClickedCloneDirBrowse()\r
 {\r
        // TODO: Add your control notification handler code here\r
+       CBrowseFolder browseFolder;\r
+       browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
+       CString strCloneDirectory = this->m_Directory;\r
+       if (browseFolder.Show(GetSafeHwnd(), strCloneDirectory) == CBrowseFolder::OK) \r
+       {\r
+               UpdateData(TRUE);\r
+               m_Directory = strCloneDirectory;\r
+               UpdateData(FALSE);\r
+       }\r
+}\r
+\r
+void CCloneDlg::OnEnChangeCloneDir()\r
+{\r
+       // TODO:  If this is a RICHEDIT control, the control will not\r
+       // send this notification unless you override the CDHtmlDialog::OnInitDialog()\r
+       // function and call CRichEditCtrl().SetEventMask()\r
+       // with the ENM_CHANGE flag ORed into the mask.\r
+\r
+       // TODO:  Add your control notification handler code here\r
 }\r