return true;\r
}\r
\r
+bool CAppUtils::LaunchRemoteSetting()\r
+{\r
+ CString proc=CPathUtils::GetAppDirectory();\r
+ proc += _T("TortoiseProc.exe /command:settings");\r
+ proc += _T(" /path:\"");\r
+ proc += g_Git.m_CurrentDir;\r
+ proc += _T("\" /page:remote");\r
+ return LaunchApplication(proc, IDS_ERR_EXTDIFFSTART, false);\r
+}\r
/**\r
* Launch the external blame viewer\r
*/\r
return answer;\r
}\r
\r
+bool CAppUtils::IsSSHPutty()\r
+{\r
+ CString sshclient=CRegString(_T("Software\\TortoiseGit\\SSH"));\r
+ sshclient=sshclient.MakeLower();\r
+ if(sshclient.Find(_T("plink.exe"),0)>=0)\r
+ {\r
+ return true;\r
+ }\r
+ return false;\r
+}\r
\r
static CString GetMergeTempFile(CString str,CTGitPath &merge);\r
static int StashApply(CString ref);\r
+\r
+ static bool IsSSHPutty();\r
+\r
+ static bool LaunchRemoteSetting();\r
+\r
private:\r
static CString PickDiffTool(const CTGitPath& file1, const CTGitPath& file2);\r
static bool GetMimeType(const CTGitPath& file, CString& mimetype);\r
#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
if(m_URL.IsEmpty())\r
m_URLCombo.SetCurSel(0);\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
END_MESSAGE_MAP()\r
\r
\r
CMessageBox::Show(NULL,_T("URL or Dir can't empty"),_T("TortiseGit"),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
afx_msg void OnEnChangeCloneDir();\r
CString m_Directory;\r
CHistoryCombo m_URLCombo;\r
+ CHistoryCombo m_PuttyKeyCombo;\r
+ CString m_strPuttyKeyFile;\r
CString m_URL;\r
+ BOOL m_bAutoloadPuttyKeyFile;\r
+ afx_msg void OnBnClickedPuttykeyfileBrowse();\r
+ afx_msg void OnBnClickedPuttykeyAutoload();\r
};\r
#include "TortoiseProc.h"\r
#include "PullFetchDlg.h"\r
#include "Git.h"\r
+#include "AppUtils.h"\r
\r
// CPullFetchDlg dialog\r
\r
: CResizableStandAloneDialog(CPullFetchDlg::IDD, pParent)\r
{\r
m_IsPull=TRUE;\r
+ m_bAutoLoad = CAppUtils::IsSSHPutty();\r
+ m_bAutoLoadEnable=true;\r
}\r
\r
CPullFetchDlg::~CPullFetchDlg()\r
DDX_Control(pDX, IDC_REMOTE_COMBO, this->m_Remote);\r
DDX_Control(pDX, IDC_OTHER, this->m_Other);\r
DDX_Control(pDX, IDC_REMOTE_BRANCH, this->m_RemoteBranch);\r
+ DDX_Control(pDX,IDC_REMOTE_MANAGE, this->m_RemoteManage);\r
+ DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD,m_bAutoLoad);\r
\r
}\r
\r
ON_BN_CLICKED(IDC_REMOTE_RD, &CPullFetchDlg::OnBnClickedRd)\r
ON_BN_CLICKED(IDC_OTHER_RD, &CPullFetchDlg::OnBnClickedRd)\r
ON_BN_CLICKED(IDOK, &CPullFetchDlg::OnBnClickedOk)\r
+ ON_STN_CLICKED(IDC_REMOTE_MANAGE, &CPullFetchDlg::OnStnClickedRemoteManage)\r
END_MESSAGE_MAP()\r
\r
BOOL CPullFetchDlg::OnInitDialog()\r
\r
AddAnchor(IDOK,BOTTOM_RIGHT);\r
AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_GROUPT_REMOTE,TOP_LEFT,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_PUTTYKEY_AUTOLOAD,BOTTOM_LEFT);\r
+ AddAnchor(IDC_REMOTE_MANAGE,BOTTOM_LEFT);\r
\r
- this->AddOthersToAnchor();\r
+ this->AddOthersToAnchor();\r
+\r
+ this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow(m_bAutoLoadEnable);\r
\r
CheckRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD,IDC_REMOTE_RD);\r
m_Remote.EnableWindow(TRUE);\r
m_Remote.AddString(list[i]);\r
}\r
EnableSaveRestore(_T("PullFetchDlg"));\r
+ this->m_RemoteManage.SetURL(CString());\r
return TRUE;\r
}\r
// CPullFetchDlg message handlers\r
m_RemoteBranch.SaveHistory();\r
this->OnOK();\r
}\r
+\r
+void CPullFetchDlg::OnStnClickedRemoteManage()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ CAppUtils::LaunchRemoteSetting();\r
+}\r
\r
#include "StandAloneDlg.h"\r
#include "HistoryCombo.h"\r
+#include "HyperLink.h"\r
// CPullFetchDlg dialog\r
\r
class CPullFetchDlg : public CResizableStandAloneDialog\r
\r
DECLARE_MESSAGE_MAP()\r
public:\r
- BOOL m_IsPull;\r
+ BOOL m_IsPull;\r
+ BOOL m_bAutoLoad;\r
+ BOOL m_bAutoLoadEnable;\r
+ CHyperLink m_RemoteManage;\r
+\r
afx_msg void OnBnClickedRd();\r
afx_msg void OnBnClickedOk();\r
CString m_RemoteURL;\r
CString m_RemoteBranchName;\r
+ afx_msg void OnStnClickedRemoteManage();\r
};\r
\r
#include "Git.h"\r
#include "registry.h"\r
+#include "AppUtils.h"\r
+\r
// CPushDlg dialog\r
\r
IMPLEMENT_DYNAMIC(CPushDlg, CResizableStandAloneDialog)\r
CPushDlg::CPushDlg(CWnd* pParent /*=NULL*/)\r
: CResizableStandAloneDialog(CPushDlg::IDD, pParent)\r
{\r
-\r
+ m_bAutoLoad = CAppUtils::IsSSHPutty();\r
}\r
\r
CPushDlg::~CPushDlg()\r
DDX_Check(pDX,IDC_FORCE,this->m_bForce);\r
DDX_Check(pDX,IDC_PACK,this->m_bPack);\r
DDX_Check(pDX,IDC_TAGS,this->m_bTags);\r
+ DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD,this->m_bAutoLoad);\r
\r
}\r
\r
ON_BN_CLICKED(IDC_RD_URL, &CPushDlg::OnBnClickedRd)\r
ON_CBN_SELCHANGE(IDC_BRANCH_SOURCE, &CPushDlg::OnCbnSelchangeBranchSource)\r
ON_BN_CLICKED(IDOK, &CPushDlg::OnBnClickedOk)\r
+ ON_BN_CLICKED(IDC_REMOTE_MANAGE, &CPushDlg::OnBnClickedRemoteManage)\r
END_MESSAGE_MAP()\r
\r
BOOL CPushDlg::OnInitDialog()\r
AddAnchor(IDC_FORCE, TOP_LEFT);\r
AddAnchor(IDC_PACK, TOP_LEFT);\r
AddAnchor(IDC_TAGS, TOP_LEFT);\r
+ AddAnchor(IDC_PUTTYKEY_AUTOLOAD,TOP_LEFT);\r
\r
+ AddAnchor(IDC_REMOTE_MANAGE,TOP_RIGHT);\r
\r
AddOthersToAnchor();\r
\r
+ this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow(m_bAutoLoad);\r
\r
EnableSaveRestore(_T("PushDlg"));\r
\r
\r
CResizableStandAloneDialog::OnOK();\r
}\r
+\r
+void CPushDlg::OnBnClickedRemoteManage()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ CAppUtils::LaunchRemoteSetting();\r
+}\r
BOOL m_bTags;\r
BOOL m_bForce;\r
BOOL m_bPack;\r
+ BOOL m_bAutoLoad;\r
\r
virtual BOOL OnInitDialog();\r
// Dialog Data\r
afx_msg void OnBnClickedRd();\r
afx_msg void OnCbnSelchangeBranchSource();\r
afx_msg void OnBnClickedOk();\r
+ afx_msg void OnBnClickedRemoteManage();\r
};\r
\r
void CHyperLink::OnClicked()\r
{\r
- GotoURL(m_strURL);\r
+ if(!m_strURL.IsEmpty())\r
+ {\r
+ GotoURL(m_strURL);\r
+ }\r
+ else\r
+ {\r
+ ::SendMessage(this->GetParent()->m_hWnd,WM_COMMAND,this->GetDlgCtrlID(),0);\r
+ }\r
}\r
\r
HBRUSH CHyperLink::CtlColor(CDC* pDC, UINT /*nCtlColor*/) \r