OSDN Git Service

Enable GDI+
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / PushDlg.cpp
index 6330e55..7022c2a 100644 (file)
@@ -6,6 +6,9 @@
 #include "PushDlg.h"\r
 \r
 #include "Git.h"\r
+#include "registry.h"\r
+#include "AppUtils.h"\r
+\r
 // CPushDlg dialog\r
 \r
 IMPLEMENT_DYNAMIC(CPushDlg, CResizableStandAloneDialog)\r
@@ -13,7 +16,7 @@ IMPLEMENT_DYNAMIC(CPushDlg, CResizableStandAloneDialog)
 CPushDlg::CPushDlg(CWnd* pParent /*=NULL*/)\r
        : CResizableStandAloneDialog(CPushDlg::IDD, pParent)\r
 {\r
-\r
+    m_bAutoLoad = CAppUtils::IsSSHPutty();\r
 }\r
 \r
 CPushDlg::~CPushDlg()\r
@@ -30,6 +33,7 @@ void CPushDlg::DoDataExchange(CDataExchange* pDX)
        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
@@ -39,62 +43,90 @@ BEGIN_MESSAGE_MAP(CPushDlg, CResizableStandAloneDialog)
        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
 {\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_BRANCH_SOURCE, 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
-       m_RemoteURL.SetURLHistory(TRUE);\r
-       m_RemoteURL.LoadHistory(_T("Software\\TortoiseGit\\History\\PushURLS"), _T("url"));\r
-       m_RemoteURL.SetCurSel(0);\r
+    this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow(m_bAutoLoad);\r
+\r
+       EnableSaveRestore(_T("PushDlg"));\r
 \r
+       m_RemoteURL.SetURLHistory(TRUE);\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
-       CStringList list;\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
-               POSITION pos;\r
-               pos=list.GetHeadPosition();\r
-               while(pos)\r
+               for(unsigned int i=0;i<list.size();i++)\r
                {\r
-                       m_Remote.AddString(list.GetNext(pos));\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,&current))\r
        {\r
-               POSITION pos;\r
-               pos=list.GetHeadPosition();\r
-               while(pos)\r
-               {\r
-                       m_BranchSource.AddString(list.GetNext(pos));\r
-               }\r
+               for(unsigned int i=0;i<list.size();i++)\r
+                       m_BranchSource.AddString(list[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
+\r
+       \r
        return TRUE;\r
 }\r
 \r
@@ -142,5 +174,14 @@ void CPushDlg::OnBnClickedOk()
 \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