OSDN Git Service

Fix Issue 91: clone dialog generates bad directory name based on URL, ignores overrid
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitSwitchDlg.cpp
1 // GitSwitch.cpp : implementation file\r
2 //\r
3 \r
4 #include "stdafx.h"\r
5 #include "Git.h"\r
6 #include "TortoiseProc.h"\r
7 #include "GitSwitchDlg.h"\r
8 \r
9 \r
10 #include "Messagebox.h"\r
11 \r
12 // CGitSwitchDlg dialog\r
13 \r
14 IMPLEMENT_DYNAMIC(CGitSwitchDlg, CResizableStandAloneDialog)\r
15 \r
16 CGitSwitchDlg::CGitSwitchDlg(CWnd* pParent /*=NULL*/)\r
17         : CResizableStandAloneDialog(CGitSwitchDlg::IDD, pParent)\r
18         ,CChooseVersion(this)\r
19 {\r
20         m_bBranch=FALSE;\r
21         m_bTrack=FALSE;\r
22         m_bForce=FALSE;\r
23 }\r
24 \r
25 CGitSwitchDlg::~CGitSwitchDlg()\r
26 {\r
27 }\r
28 \r
29 void CGitSwitchDlg::DoDataExchange(CDataExchange* pDX)\r
30 {\r
31         CDialog::DoDataExchange(pDX);\r
32         CHOOSE_VERSION_DDX;\r
33                                 \r
34         DDX_Check(pDX,IDC_CHECK_FORCE,this->m_bForce);\r
35         DDX_Check(pDX,IDC_CHECK_TRACK,this->m_bTrack);\r
36         DDX_Check(pDX,IDC_CHECK_BRANCH,this->m_bBranch);\r
37 \r
38         DDX_Text(pDX,IDC_EDIT_BRANCH,this->m_NewBranch);\r
39 }\r
40 \r
41 \r
42 BEGIN_MESSAGE_MAP(CGitSwitchDlg, CResizableStandAloneDialog)\r
43 \r
44         CHOOSE_VERSION_EVENT\r
45         ON_BN_CLICKED(IDC_CHECK_BRANCH, &CGitSwitchDlg::OnBnClickedCheckBranch)\r
46         ON_BN_CLICKED(IDOK, &CGitSwitchDlg::OnBnClickedOk)\r
47         ON_CBN_SELCHANGE(IDC_COMBOBOXEX_BRANCH, &CGitSwitchDlg::OnCbnSelchangeComboboxexBranch)\r
48 END_MESSAGE_MAP()\r
49 \r
50 BOOL CGitSwitchDlg::OnInitDialog()\r
51 {\r
52         CResizableStandAloneDialog::OnInitDialog();\r
53 \r
54         AddAnchor(IDC_GROUP_OPTION, TOP_LEFT, TOP_RIGHT);\r
55 \r
56         AddAnchor(IDC_EDIT_BRANCH, TOP_LEFT, TOP_RIGHT);\r
57 \r
58         AddAnchor(IDOK,BOTTOM_RIGHT);\r
59         AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
60         \r
61         CHOOSE_VERSION_ADDANCHOR;\r
62         this->AddOthersToAnchor();\r
63 \r
64         EnableSaveRestore(_T("SwitchDlg"));\r
65 \r
66         Init();\r
67 \r
68         if(m_Base.IsEmpty())\r
69                 SetDefaultChoose(IDC_RADIO_BRANCH);\r
70         else\r
71         {\r
72                 this->GetDlgItem(IDC_COMBOBOXEX_VERSION)->SetWindowTextW(m_Base);\r
73                 SetDefaultChoose(IDC_RADIO_VERSION);\r
74         }\r
75 \r
76         OnBnClickedCheckBranch();\r
77         this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
78 \r
79         return TRUE;\r
80 \r
81 \r
82 }\r
83 // CCreateBranchTagDlg message handlers\r
84 \r
85 void CGitSwitchDlg::OnBnClickedChooseRadioHost()\r
86 {\r
87         // TODO: Add your control notification handler code here\r
88         OnBnClickedChooseRadio();\r
89         OnCbnSelchangeComboboxexBranch();\r
90         OnBnClickedCheckBranch();\r
91         \r
92 }\r
93 \r
94 void CGitSwitchDlg::OnBnClickedShow()\r
95 {\r
96         OnBnClickedChooseVersion();\r
97 }\r
98 \r
99 void CGitSwitchDlg::OnBnClickedOk()\r
100 {\r
101         this->UpdateData(TRUE);\r
102         \r
103         // make sure a valid branch has been entered if a new branch is required\r
104         if ( m_bBranch  &&  ( m_NewBranch.Trim().IsEmpty() ||  m_NewBranch.Find(' ') >= 0 ) )\r
105         {\r
106                 // new branch requested but name is empty or contains spaces\r
107                 CMessageBox::Show(NULL, IDS_B_T_NOTEMPTY, IDS_TORTOISEGIT, MB_OK);\r
108         }\r
109         else\r
110         {\r
111                 UpdateRevsionName();\r
112                 //this->m_Version.SaveHistory();\r
113                 OnOK();\r
114         }\r
115 }\r
116 void CGitSwitchDlg::OnBnClickedCheckBranch()\r
117 {\r
118         // TODO: Add your control notification handler code here\r
119         this->UpdateData(TRUE);\r
120         this->UpdateRevsionName();\r
121         GetDlgItem(IDC_EDIT_BRANCH)->SetWindowTextW(CString(_T("Branch_"))+this->m_VersionName);\r
122 \r
123 #if 0   \r
124         int radio=GetCheckedRadioButton(IDC_RADIO_BRANCH,IDC_RADIO_VERSION);\r
125         if(radio==IDC_RADIO_TAGS || radio==IDC_RADIO_VERSION)\r
126         {\r
127                 this->m_bBranch=TRUE;\r
128                 this->UpdateData(FALSE);\r
129                 this->UpdateRevsionName();\r
130                 \r
131         }else\r
132         {\r
133                 this->m_bBranch=FALSE;\r
134                 this->UpdateData(FALSE);\r
135         }\r
136 #endif\r
137         this->GetDlgItem(IDC_EDIT_BRANCH)->EnableWindow(this->m_bBranch);\r
138 }\r
139 \r
140 void CGitSwitchDlg::OnCbnSelchangeComboboxexBranch()\r
141 {\r
142         // TODO: Add your control notification handler code here\r
143         int radio=GetCheckedRadioButton(IDC_RADIO_BRANCH,IDC_RADIO_VERSION);\r
144         if(this->m_ChooseVersioinBranch.GetString().Left(6)==_T("origin") && radio==IDC_RADIO_BRANCH )\r
145                 this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(TRUE);\r
146         else\r
147                 this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
148 }\r