OSDN Git Service

Modify Git Clone Control Tab order
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CloneDlg.cpp
1 // CloneDlg.cpp : implementation file\r
2 //\r
3 \r
4 #include "stdafx.h"\r
5 #include "TortoiseProc.h"\r
6 #include "CloneDlg.h"\r
7 #include "BrowseFolder.h"\r
8 #include "MessageBox.h"\r
9 #include "AppUtils.h"\r
10 // CCloneDlg dialog\r
11 \r
12 IMPLEMENT_DYNCREATE(CCloneDlg, CResizableStandAloneDialog)\r
13 \r
14 CCloneDlg::CCloneDlg(CWnd* pParent /*=NULL*/)\r
15         : CResizableStandAloneDialog(CCloneDlg::IDD, pParent)\r
16         , m_Directory(_T(""))\r
17 {\r
18     m_bAutoloadPuttyKeyFile = CAppUtils::IsSSHPutty();\r
19 }\r
20 \r
21 CCloneDlg::~CCloneDlg()\r
22 {\r
23 }\r
24 \r
25 void CCloneDlg::DoDataExchange(CDataExchange* pDX)\r
26 {\r
27         CResizableStandAloneDialog::DoDataExchange(pDX);\r
28         DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
29     DDX_Control(pDX, IDC_PUTTYKEYFILE, m_PuttyKeyCombo);\r
30         DDX_Text(pDX, IDC_CLONE_DIR, m_Directory);\r
31     DDX_Check(pDX,IDC_PUTTYKEY_AUTOLOAD, m_bAutoloadPuttyKeyFile);\r
32 \r
33 }\r
34 \r
35 BOOL CCloneDlg::OnInitDialog()\r
36 {\r
37         CResizableStandAloneDialog::OnInitDialog();\r
38         AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT);\r
39         AddAnchor(IDC_CLONE_BROWSE_URL, TOP_RIGHT);\r
40         AddAnchor(IDC_CLONE_DIR, TOP_LEFT,TOP_RIGHT);\r
41         AddAnchor(IDC_CLONE_DIR_BROWSE, TOP_RIGHT);\r
42         AddAnchor(IDOK,BOTTOM_RIGHT);\r
43         AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
44 \r
45     AddAnchor(IDC_GROUP_CLONE,TOP_LEFT,BOTTOM_RIGHT);\r
46     AddAnchor(IDC_PUTTYKEYFILE_BROWSE,BOTTOM_RIGHT);\r
47     AddAnchor(IDC_PUTTYKEY_AUTOLOAD,BOTTOM_LEFT);\r
48     AddAnchor(IDC_PUTTYKEYFILE,BOTTOM_LEFT,BOTTOM_RIGHT);\r
49 \r
50         this->AddOthersToAnchor();\r
51 \r
52         m_URLCombo.SetURLHistory(TRUE);\r
53         m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS"), _T("url"));\r
54         if(m_URL.IsEmpty())\r
55                 m_URLCombo.SetCurSel(0);\r
56         else\r
57                 m_URLCombo.SetWindowText(m_URL);\r
58 \r
59         CWnd *window=this->GetDlgItem(IDC_CLONE_DIR);\r
60         if(window)\r
61                 SHAutoComplete(window->m_hWnd, SHACF_FILESYSTEM);\r
62 \r
63     m_PuttyKeyCombo.SetPathHistory(TRUE);\r
64     m_PuttyKeyCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\puttykey"), _T("key"));\r
65     m_PuttyKeyCombo.SetCurSel(0);\r
66 \r
67     this->GetDlgItem(IDC_PUTTYKEY_AUTOLOAD)->EnableWindow( CAppUtils::IsSSHPutty() );\r
68     this->GetDlgItem(IDC_PUTTYKEYFILE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
69     this->GetDlgItem(IDC_PUTTYKEYFILE_BROWSE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
70        \r
71     EnableSaveRestore(_T("CloneDlg"));\r
72         return TRUE;  // return TRUE  unless you set the focus to a control\r
73 }\r
74 \r
75 BEGIN_MESSAGE_MAP(CCloneDlg, CResizableStandAloneDialog)\r
76         ON_BN_CLICKED(IDC_CLONE_BROWSE_URL, &CCloneDlg::OnBnClickedCloneBrowseUrl)\r
77         ON_BN_CLICKED(IDC_CLONE_DIR_BROWSE, &CCloneDlg::OnBnClickedCloneDirBrowse)\r
78     ON_BN_CLICKED(IDC_PUTTYKEYFILE_BROWSE, &CCloneDlg::OnBnClickedPuttykeyfileBrowse)\r
79     ON_BN_CLICKED(IDC_PUTTYKEY_AUTOLOAD, &CCloneDlg::OnBnClickedPuttykeyAutoload)\r
80 END_MESSAGE_MAP()\r
81 \r
82 \r
83 \r
84 // CCloneDlg message handlers\r
85 \r
86 void CCloneDlg::OnOK()\r
87 {\r
88         this->m_URLCombo.GetWindowTextW(m_URL);\r
89         m_URL.Trim();\r
90         UpdateData(TRUE);\r
91         if(m_URL.IsEmpty()||m_Directory.IsEmpty())\r
92         {\r
93                 CMessageBox::Show(NULL,_T("URL or Dir can't empty"),_T("TortiseGit"),MB_OK);\r
94                 return;\r
95         }\r
96 \r
97         m_URLCombo.SaveHistory();\r
98     m_PuttyKeyCombo.SaveHistory();\r
99 \r
100     this->m_PuttyKeyCombo.GetWindowText(m_strPuttyKeyFile );\r
101         CResizableDialog::OnOK();\r
102 \r
103 }\r
104 \r
105 void CCloneDlg::OnCancel()\r
106 {\r
107         CResizableDialog::OnCancel();\r
108 }\r
109 \r
110 void CCloneDlg::OnBnClickedCloneBrowseUrl()\r
111 {\r
112         // TODO: Add your control notification handler code here\r
113         CBrowseFolder browseFolder;\r
114         browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
115         CString strCloneDirectory;\r
116         this->m_URLCombo.GetWindowTextW(strCloneDirectory);\r
117         if (browseFolder.Show(GetSafeHwnd(), strCloneDirectory) == CBrowseFolder::OK) \r
118         {\r
119                 this->m_URLCombo.SetWindowTextW(strCloneDirectory);\r
120         }\r
121 }\r
122 \r
123 void CCloneDlg::OnBnClickedCloneDirBrowse()\r
124 {\r
125         // TODO: Add your control notification handler code here\r
126         CBrowseFolder browseFolder;\r
127         browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
128         CString strCloneDirectory = this->m_Directory;\r
129         if (browseFolder.Show(GetSafeHwnd(), strCloneDirectory) == CBrowseFolder::OK) \r
130         {\r
131                 UpdateData(TRUE);\r
132                 m_Directory = strCloneDirectory;\r
133                 UpdateData(FALSE);\r
134         }\r
135 }\r
136 \r
137 void CCloneDlg::OnEnChangeCloneDir()\r
138 {\r
139         // TODO:  If this is a RICHEDIT control, the control will not\r
140         // send this notification unless you override the CDHtmlDialog::OnInitDialog()\r
141         // function and call CRichEditCtrl().SetEventMask()\r
142         // with the ENM_CHANGE flag ORed into the mask.\r
143 \r
144         // TODO:  Add your control notification handler code here\r
145 }\r
146 \r
147 void CCloneDlg::OnBnClickedPuttykeyfileBrowse()\r
148 {\r
149     // TODO: Add your control notification handler code here\r
150     CFileDialog dlg(TRUE,NULL,\r
151                                         NULL,\r
152                                         OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,\r
153                                         _T("Putty Private Key(*.ppk)|*.ppk|All Files(*.*)|*.*||"));\r
154         \r
155         this->UpdateData();\r
156         if(dlg.DoModal()==IDOK)\r
157         {\r
158         this->m_PuttyKeyCombo.SetWindowText( dlg.GetPathName() );\r
159         }\r
160 \r
161 }\r
162 \r
163 void CCloneDlg::OnBnClickedPuttykeyAutoload()\r
164 {\r
165     // TODO: Add your control notification handler code here\r
166     this->UpdateData();\r
167     this->GetDlgItem(IDC_PUTTYKEYFILE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
168     this->GetDlgItem(IDC_PUTTYKEYFILE_BROWSE)->EnableWindow(m_bAutoloadPuttyKeyFile);\r
169 \r
170 }\r