OSDN Git Service

Pick Ref: Implemented ref picking for push dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / PullFetchDlg.cpp
1 // PullFetchDlg.cpp : implementation file\r
2 //\r
3 \r
4 #include "stdafx.h"\r
5 #include "TortoiseProc.h"\r
6 #include "PullFetchDlg.h"\r
7 #include "Git.h"\r
8 #include "AppUtils.h"\r
9 \r
10 // CPullFetchDlg dialog\r
11 \r
12 IMPLEMENT_DYNAMIC(CPullFetchDlg, CResizableStandAloneDialog)\r
13 \r
14 CPullFetchDlg::CPullFetchDlg(CWnd* pParent /*=NULL*/)\r
15         : CResizableStandAloneDialog(CPullFetchDlg::IDD, pParent)\r
16 {\r
17         m_IsPull=TRUE;\r
18     m_bAutoLoad = CAppUtils::IsSSHPutty();\r
19     m_bAutoLoadEnable=true;\r
20 }\r
21 \r
22 CPullFetchDlg::~CPullFetchDlg()\r
23 {\r
24 }\r
25 \r
26 void CPullFetchDlg::DoDataExchange(CDataExchange* pDX)\r
27 {\r
28         CDialog::DoDataExchange(pDX);\r
29         DDX_Control(pDX, IDC_REMOTE_COMBO, this->m_Remote);\r
30         DDX_Control(pDX, IDC_OTHER, this->m_Other);\r
31         DDX_Control(pDX, IDC_REMOTE_BRANCH, this->m_RemoteBranch);\r
32     DDX_Control(pDX,IDC_REMOTE_MANAGE, this->m_RemoteManage);\r
33     DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD,m_bAutoLoad);\r
34 \r
35 }\r
36 \r
37 \r
38 BEGIN_MESSAGE_MAP(CPullFetchDlg,CResizableStandAloneDialog )\r
39         ON_BN_CLICKED(IDC_REMOTE_RD, &CPullFetchDlg::OnBnClickedRd)\r
40         ON_BN_CLICKED(IDC_OTHER_RD, &CPullFetchDlg::OnBnClickedRd)\r
41         ON_BN_CLICKED(IDOK, &CPullFetchDlg::OnBnClickedOk)\r
42     ON_STN_CLICKED(IDC_REMOTE_MANAGE, &CPullFetchDlg::OnStnClickedRemoteManage)\r
43 END_MESSAGE_MAP()\r
44 \r
45 BOOL CPullFetchDlg::OnInitDialog()\r
46 {\r
47         CResizableStandAloneDialog::OnInitDialog();\r
48         AddAnchor(IDC_REMOTE_COMBO, TOP_LEFT, TOP_RIGHT);\r
49         AddAnchor(IDC_OTHER, TOP_LEFT,TOP_RIGHT);\r
50 \r
51         AddAnchor(IDC_REMOTE_BRANCH, TOP_LEFT,TOP_RIGHT);\r
52         \r
53         AddAnchor(IDOK,BOTTOM_RIGHT);\r
54         AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
55     AddAnchor(IDC_GROUPT_REMOTE,TOP_LEFT,BOTTOM_RIGHT);\r
56     AddAnchor(IDC_PUTTYKEY_AUTOLOAD,BOTTOM_LEFT);\r
57     AddAnchor(IDC_REMOTE_MANAGE,BOTTOM_LEFT);\r
58 \r
59     this->AddOthersToAnchor();\r
60 \r
61     this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow(m_bAutoLoadEnable);\r
62 \r
63         CheckRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD,IDC_REMOTE_RD);\r
64         m_Remote.EnableWindow(TRUE);\r
65         m_Other.EnableWindow(FALSE);\r
66         m_RemoteBranch.EnableWindow(FALSE);\r
67 \r
68         m_Other.SetURLHistory(TRUE);\r
69         m_Other.LoadHistory(_T("Software\\TortoiseGit\\History\\PullURLS"), _T("url"));\r
70         CString clippath=CAppUtils::GetClipboardLink();\r
71         if(clippath.IsEmpty())\r
72                 m_Other.SetCurSel(0);\r
73         else\r
74                 m_Other.SetWindowText(clippath);\r
75 \r
76         m_RemoteBranch.LoadHistory(_T("Software\\TortoiseGit\\History\\PullRemoteBranch"), _T("br"));\r
77         m_RemoteBranch.SetCurSel(0);\r
78 \r
79         CString WorkingDir=g_Git.m_CurrentDir;\r
80 \r
81         if(m_IsPull)\r
82                 this->SetWindowTextW(CString(_T("Pull - "))+WorkingDir);\r
83         else\r
84                 this->SetWindowTextW(CString(_T("Fetch - "))+WorkingDir);\r
85 \r
86         STRING_VECTOR list;\r
87         \r
88         CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PullRemote\\")+WorkingDir));\r
89         m_RemoteReg = remote;\r
90         int sel=0;\r
91 \r
92         if(!g_Git.GetRemoteList(list))\r
93         {       \r
94                 for(unsigned int i=0;i<list.size();i++)\r
95                 {\r
96                         m_Remote.AddString(list[i]);\r
97                         if(list[i] == remote)\r
98                                 sel = i;\r
99                 }\r
100         }\r
101         m_Remote.SetCurSel(sel);\r
102 \r
103         EnableSaveRestore(_T("PullFetchDlg"));\r
104     this->m_RemoteManage.SetURL(CString());\r
105         return TRUE;\r
106 }\r
107 // CPullFetchDlg message handlers\r
108 \r
109 void CPullFetchDlg::OnBnClickedRd()\r
110 {\r
111 \r
112         // TODO: Add your control notification handler code here\r
113         if( GetCheckedRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD) == IDC_REMOTE_RD)\r
114         {\r
115                 m_Remote.EnableWindow(TRUE);\r
116                 m_Other.EnableWindow(FALSE);\r
117                 m_RemoteBranch.EnableWindow(FALSE);\r
118 \r
119         }\r
120         if( GetCheckedRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD) == IDC_OTHER_RD)\r
121         {\r
122                 m_Remote.EnableWindow(FALSE);\r
123                 m_Other.EnableWindow(TRUE);;\r
124                 m_RemoteBranch.EnableWindow(TRUE);\r
125         }\r
126         \r
127 \r
128 }\r
129 \r
130 void CPullFetchDlg::OnBnClickedOk()\r
131 {\r
132         // TODO: Add your control notification handler code here\r
133         if( GetCheckedRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD) == IDC_REMOTE_RD)\r
134         {\r
135                 m_RemoteURL=m_Remote.GetString();\r
136                 m_RemoteBranchName.Empty();\r
137                 \r
138         }\r
139         if( GetCheckedRadioButton(IDC_REMOTE_RD,IDC_OTHER_RD) == IDC_OTHER_RD)\r
140         {\r
141                 m_Other.GetWindowTextW(m_RemoteURL);\r
142                 m_RemoteBranchName=m_RemoteBranch.GetString();\r
143                 \r
144         }\r
145 \r
146         m_RemoteReg = m_Remote.GetString();\r
147 \r
148         m_Other.SaveHistory();\r
149         m_RemoteBranch.SaveHistory();\r
150         this->OnOK();\r
151 }\r
152 \r
153 void CPullFetchDlg::OnStnClickedRemoteManage()\r
154 {\r
155     // TODO: Add your control notification handler code here\r
156     CAppUtils::LaunchRemoteSetting();\r
157 }\r