#include "PushDlg.h"\r
\r
#include "Git.h"\r
+#include "registry.h"\r
+#include "AppUtils.h"\r
+#include "BrowseRefsDlg.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
+ ON_BN_CLICKED(IDC_BUTTON_BROWSE_SOURCE_BRANCH, &CPushDlg::OnBnClickedButtonBrowseSourceBranch)\r
+ ON_BN_CLICKED(IDC_BUTTON_BROWSE_DEST_BRANCH, &CPushDlg::OnBnClickedButtonBrowseDestBranch)\r
END_MESSAGE_MAP()\r
\r
BOOL CPushDlg::OnInitDialog()\r
{\r
CResizableStandAloneDialog::OnInitDialog();\r
\r
+ AddAnchor(IDOK,BOTTOM_RIGHT);\r
+ AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_BRANCH_GROUP, TOP_LEFT,TOP_RIGHT);\r
+ AddAnchor(IDC_STATIC_REMOTE, TOP_RIGHT);\r
+ AddAnchor(IDC_STATIC_SOURCE, TOP_LEFT);\r
+\r
AddAnchor(IDC_BRANCH_REMOTE, TOP_RIGHT);\r
+ AddAnchor(IDC_BUTTON_BROWSE_DEST_BRANCH, TOP_RIGHT);\r
AddAnchor(IDC_BRANCH_SOURCE, TOP_LEFT);\r
+ AddAnchor(IDC_BUTTON_BROWSE_SOURCE_BRANCH, TOP_LEFT);\r
+\r
+ AddAnchor(IDC_URL_GROUP, TOP_LEFT,TOP_RIGHT);\r
+ AddAnchor(IDC_RD_REMOTE, TOP_LEFT);\r
+ AddAnchor(IDC_RD_URL, TOP_LEFT);\r
\r
AddAnchor(IDC_REMOTE, TOP_LEFT, TOP_RIGHT);\r
+ \r
AddAnchor(IDC_URL, TOP_LEFT,TOP_RIGHT);\r
\r
- AddAnchor(IDC_URL_GROUP, TOP_LEFT,TOP_RIGHT);\r
AddAnchor(IDC_OPTION_GROUP, TOP_LEFT,TOP_RIGHT);\r
- AddAnchor(IDC_BRANCH_GROUP, TOP_LEFT,TOP_RIGHT);\r
+ \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_STATIC_REMOTE, TOP_RIGHT);\r
+ AddAnchor(IDC_REMOTE_MANAGE,TOP_RIGHT);\r
\r
- AddAnchor(IDOK,BOTTOM_RIGHT);\r
- AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+ AddOthersToAnchor();\r
+\r
+ this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow(m_bAutoLoad);\r
\r
EnableSaveRestore(_T("PushDlg"));\r
\r
m_RemoteURL.SetURLHistory(TRUE);\r
- m_RemoteURL.LoadHistory(_T("Software\\TortoiseGit\\History\\PushURLS"), _T("url"));\r
- m_RemoteURL.SetCurSel(0);\r
+ \r
+ CString WorkingDir=g_Git.m_CurrentDir;\r
+ WorkingDir.Replace(_T(':'),_T('_'));\r
+ m_RemoteURL.LoadHistory(CString(_T("Software\\TortoiseGit\\History\\PushURLS\\"))+WorkingDir, _T("url"));\r
+ CString clippath=CAppUtils::GetClipboardLink();\r
+ if(clippath.IsEmpty())\r
+ m_RemoteURL.SetCurSel(0);\r
+ else\r
+ m_RemoteURL.SetWindowText(clippath);\r
\r
m_RemoteURL.EnableWindow(FALSE);\r
CheckRadioButton(IDC_RD_REMOTE,IDC_RD_URL,IDC_RD_REMOTE);\r
\r
STRING_VECTOR list;\r
+ CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir));\r
+ m_RemoteReg = remote;\r
+ int sel=0;\r
\r
if(!g_Git.GetRemoteList(list))\r
{ \r
for(unsigned int i=0;i<list.size();i++)\r
+ {\r
m_Remote.AddString(list[i]);\r
+ if(list[i] == remote)\r
+ sel = i;\r
+ }\r
}\r
+ m_Remote.SetCurSel(sel);\r
\r
int current=0;\r
+ list.clear();\r
if(!g_Git.GetBranchList(list,¤t))\r
{\r
for(unsigned int i=0;i<list.size();i++)\r
}\r
m_BranchSource.SetCurSel(current);\r
\r
- m_BranchRemote.LoadHistory(_T("Software\\TortoiseGit\\History\\RemoteBranch"), _T("branch"));\r
+ m_BranchRemote.LoadHistory(CString(_T("Software\\TortoiseGit\\History\\RemoteBranch\\"))+WorkingDir, _T("branch"));\r
m_BranchRemote.SetCurSel(0);\r
\r
//m_BranchRemote.SetWindowTextW(m_BranchSource.GetString());\r
void CPushDlg::OnCbnSelchangeBranchSource()\r
{\r
// TODO: Add your control notification handler code here\r
- m_BranchRemote.SetWindowTextW(m_BranchSource.GetString());\r
+ m_BranchRemote.AddString(m_BranchSource.GetString());\r
}\r
\r
void CPushDlg::OnBnClickedOk()\r
\r
this->m_RemoteURL.SaveHistory();\r
this->m_BranchRemote.SaveHistory();\r
+ \r
+ m_RemoteReg = m_Remote.GetString();\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
+\r
+void CPushDlg::OnBnClickedButtonBrowseSourceBranch()\r
+{\r
+ if(CBrowseRefsDlg::PickRefForCombo(&m_BranchSource, gPickRef_Head))\r
+ OnCbnSelchangeBranchSource();\r
+}\r
+\r
+void CPushDlg::OnBnClickedButtonBrowseDestBranch()\r
+{\r
+ CString remoteBranchName;\r
+ CString remoteName;\r
+ m_BranchRemote.GetWindowText(remoteBranchName);\r
+ remoteName = m_Remote.GetString();\r
+ remoteBranchName = remoteName + '/' + remoteBranchName;\r
+ remoteBranchName = CBrowseRefsDlg::PickRef(false, remoteBranchName, gPickRef_Remote);\r
+ if(remoteBranchName.IsEmpty())\r
+ return; //Canceled\r
+ remoteBranchName = remoteBranchName.Mid(13);//Strip 'refs/remotes/'\r
+ int slashPlace = remoteBranchName.Find('/');\r
+ remoteName = remoteBranchName.Left(slashPlace);\r
+ remoteBranchName = remoteBranchName.Mid(slashPlace + 1); //Strip remote name (for example 'origin/')\r
+\r
+ //Select remote\r
+ int remoteSel = m_Remote.FindStringExact(0,remoteName);\r
+ if(remoteSel >= 0)\r
+ m_Remote.SetCurSel(remoteSel);\r
+\r
+ //Select branch\r
+ m_BranchRemote.AddString(remoteBranchName);\r
+}\r