#include "CloneDlg.h"\r
#include "BrowseFolder.h"\r
#include "MessageBox.h"\r
-\r
+#include "AppUtils.h"\r
// CCloneDlg dialog\r
\r
IMPLEMENT_DYNCREATE(CCloneDlg, CResizableStandAloneDialog)\r
: CResizableStandAloneDialog(CCloneDlg::IDD, pParent)\r
, m_Directory(_T(""))\r
{\r
-\r
+ m_bAutoloadPuttyKeyFile = CAppUtils::IsSSHPutty();\r
}\r
\r
CCloneDlg::~CCloneDlg()\r
{\r
CResizableStandAloneDialog::DoDataExchange(pDX);\r
DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
+ DDX_Control(pDX, IDC_PUTTYKEYFILE, m_PuttyKeyCombo);\r
DDX_Text(pDX, IDC_CLONE_DIR, m_Directory);\r
+ DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD, m_bAutoloadPuttyKeyFile);\r
+\r
}\r
\r
BOOL CCloneDlg::OnInitDialog()\r
AddAnchor(IDOK,BOTTOM_RIGHT);\r
AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
\r
+ AddAnchor(IDC_GROUP_CLONE,TOP_LEFT,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_PUTTYKEYFILE_BROWSE,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_PUTTYKEY_AUTOLOAD,BOTTOM_LEFT);\r
+ AddAnchor(IDC_PUTTYKEYFILE,BOTTOM_LEFT,BOTTOM_RIGHT);\r
+\r
this->AddOthersToAnchor();\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
+ {\r
+ CString str=CAppUtils::GetClipboardLink();\r
+ if(str.IsEmpty())\r
+ m_URLCombo.SetCurSel(0);\r
+ else\r
+ m_URLCombo.SetWindowText(str);\r
+ }\r
else\r
- m_URLCombo.SetWindowTextW(m_URL);\r
+ m_URLCombo.SetWindowText(m_URL);\r
\r
CWnd *window=this->GetDlgItem(IDC_CLONE_DIR);\r
if(window)\r
SHAutoComplete(window->m_hWnd, SHACF_FILESYSTEM);\r
\r
- EnableSaveRestore(_T("CloneDlg"));\r
+ m_PuttyKeyCombo.SetPathHistory(TRUE);\r
+ m_PuttyKeyCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\puttykey"), _T("key"));\r
+ m_PuttyKeyCombo.SetCurSel(0);\r
+\r
+ this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow( CAppUtils::IsSSHPutty() );\r
+ this->GetDlgItem(IDC_PUTTYKEYFILE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
+ this->GetDlgItem(IDC_PUTTYKEYFILE_BROWSE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
+ \r
+ EnableSaveRestore(_T("CloneDlg"));\r
return TRUE; // return TRUE unless you set the focus to a control\r
}\r
\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
+ ON_BN_CLICKED(IDC_PUTTYKEYFILE_BROWSE, &CCloneDlg::OnBnClickedPuttykeyfileBrowse)\r
+ ON_BN_CLICKED(IDC_PUTTYKEY_AUTOLOAD, &CCloneDlg::OnBnClickedPuttykeyAutoload)\r
+ ON_CBN_SELCHANGE(IDC_URLCOMBO, &CCloneDlg::OnCbnSelchangeUrlcombo)\r
+ ON_NOTIFY(CBEN_BEGINEDIT, IDC_URLCOMBO, &CCloneDlg::OnCbenBegineditUrlcombo)\r
+ ON_NOTIFY(CBEN_ENDEDIT, IDC_URLCOMBO, &CCloneDlg::OnCbenEndeditUrlcombo)\r
+ ON_CBN_EDITCHANGE(IDC_URLCOMBO, &CCloneDlg::OnCbnEditchangeUrlcombo)\r
END_MESSAGE_MAP()\r
\r
\r
this->m_URLCombo.GetWindowTextW(m_URL);\r
m_URL.Trim();\r
UpdateData(TRUE);\r
- if(m_URL.IsEmpty()||m_Directory.IsEmpty())\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
+ CMessageBox::Show(NULL, _T("URL or Directory can't be empty"), _T("TortoiseGit"), MB_OK);\r
return;\r
}\r
+\r
m_URLCombo.SaveHistory();\r
+ m_PuttyKeyCombo.SaveHistory();\r
+\r
+ this->m_PuttyKeyCombo.GetWindowText(m_strPuttyKeyFile);\r
CResizableDialog::OnOK();\r
\r
}\r
\r
// TODO: Add your control notification handler code here\r
}\r
+\r
+void CCloneDlg::OnBnClickedPuttykeyfileBrowse()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ CFileDialog dlg(TRUE,NULL,\r
+ NULL,\r
+ OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,\r
+ _T("Putty Private Key(*.ppk)|*.ppk|All Files(*.*)|*.*||"));\r
+ \r
+ this->UpdateData();\r
+ if(dlg.DoModal()==IDOK)\r
+ {\r
+ this->m_PuttyKeyCombo.SetWindowText( dlg.GetPathName() );\r
+ }\r
+\r
+}\r
+\r
+void CCloneDlg::OnBnClickedPuttykeyAutoload()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ this->UpdateData();\r
+ this->GetDlgItem(IDC_PUTTYKEYFILE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
+ this->GetDlgItem(IDC_PUTTYKEYFILE_BROWSE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
+\r
+}\r
+\r
+void CCloneDlg::OnCbnSelchangeUrlcombo()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+}\r
+\r
+void CCloneDlg::OnCbenBegineditUrlcombo(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ *pResult = 0;\r
+}\r
+\r
+void CCloneDlg::OnCbenEndeditUrlcombo(NMHDR *pNMHDR, LRESULT *pResult)\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ *pResult = 0;\r
+}\r
+\r
+void CCloneDlg::OnCbnEditchangeUrlcombo()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ this->UpdateData();\r
+ CString url;\r
+ m_URLCombo.GetWindowText(url);\r
+ if(m_OldURL == url )\r
+ return;\r
+\r
+ m_OldURL=url;\r
+\r
+ //if(url.IsEmpty())\r
+ // return;\r
+\r
+ CString old;\r
+ old=m_ModuleName;\r
+\r
+ url.Replace(_T('\\'),_T('/'));\r
+ int start=url.ReverseFind(_T('/'));\r
+ if(start<0)\r
+ {\r
+ start = url.ReverseFind(_T(':'));\r
+ if(start <0)\r
+ start = url.ReverseFind(_T('@'));\r
+\r
+ if(start<0)\r
+ start = 0;\r
+ }\r
+ CString temp;\r
+ temp=url.Mid(start+1);\r
+ \r
+ temp=temp.MakeLower();\r
+\r
+ int end;\r
+ end=temp.Find(_T(".git"));\r
+ if(end<0)\r
+ end=temp.GetLength();\r
+\r
+ //CString modulename;\r
+ m_ModuleName=url.Mid(start+1,end);\r
+ \r
+ start = m_Directory.ReverseFind(_T('\\'));\r
+ if(start <0 )\r
+ start = m_Directory.ReverseFind(_T('/'));\r
+ if(start <0 )\r
+ start =0;\r
+\r
+ int dirstart=m_Directory.Find(old,start);\r
+ if(dirstart>=0 && (dirstart+old.GetLength() == m_Directory.GetLength()) )\r
+ {\r
+ m_Directory=m_Directory.Left(dirstart);\r
+ m_Directory+=m_ModuleName;\r
+\r
+ }else\r
+ {\r
+ if(m_Directory.GetLength()>0 && \r
+ (m_Directory[m_Directory.GetLength()-1] != _T('\\') ||\r
+ m_Directory[m_Directory.GetLength()-1] != _T('/') ) )\r
+ {\r
+ m_Directory+=_T('\\');\r
+ }\r
+ m_Directory += m_ModuleName;\r
+ }\r
+\r
+ if(m_Directory.GetLength()>0)\r
+ {\r
+ if( m_Directory[m_Directory.GetLength()-1] == _T('\\') ||\r
+ m_Directory[m_Directory.GetLength()-1] == _T('/')\r
+ )\r
+ {\r
+ m_Directory=m_Directory.Left(m_Directory.GetLength()-1);\r
+ }\r
+\r
+ }\r
+ this->UpdateData(FALSE);\r
+}\r