OSDN Git Service

Add multi-thread protection and correct log info label
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CreateBranchTagDlg.cpp
1 // CreateBranchTagDlg.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 "CreateBranchTagDlg.h"\r
8 \r
9 #include "Messagebox.h"\r
10 \r
11 // CCreateBranchTagDlg dialog\r
12 \r
13 IMPLEMENT_DYNAMIC(CCreateBranchTagDlg, CResizableStandAloneDialog)\r
14 \r
15 CCreateBranchTagDlg::CCreateBranchTagDlg(CWnd* pParent /*=NULL*/)\r
16         : CResizableStandAloneDialog(CCreateBranchTagDlg::IDD, pParent),\r
17         CChooseVersion(this)\r
18 {\r
19         m_bIsTag=0;\r
20         m_bSwitch = 0;  // default switch to checkbox not selected\r
21         m_bTrack=0;\r
22 }\r
23 \r
24 CCreateBranchTagDlg::~CCreateBranchTagDlg()\r
25 {\r
26 }\r
27 \r
28 void CCreateBranchTagDlg::DoDataExchange(CDataExchange* pDX)\r
29 {\r
30         CDialog::DoDataExchange(pDX);\r
31 \r
32         CHOOSE_VERSION_DDX;\r
33 \r
34         DDX_Text(pDX, IDC_BRANCH_TAG, this->m_BranchTagName);\r
35         DDX_Check(pDX,IDC_CHECK_FORCE,this->m_bForce);\r
36         DDX_Check(pDX,IDC_CHECK_TRACK,this->m_bTrack);\r
37         DDX_Check(pDX,IDC_CHECK_SWITCH,this->m_bSwitch);\r
38 \r
39 }\r
40 \r
41 \r
42 BEGIN_MESSAGE_MAP(CCreateBranchTagDlg, CResizableStandAloneDialog)\r
43         CHOOSE_VERSION_EVENT\r
44         ON_BN_CLICKED(IDOK, &CCreateBranchTagDlg::OnBnClickedOk)\r
45         ON_CBN_SELCHANGE(IDC_COMBOBOXEX_BRANCH, &CCreateBranchTagDlg::OnCbnSelchangeComboboxexBranch)\r
46 //      ON_BN_CLICKED(IDC_BUTTON_BROWSE_REF, &CCreateBranchTagDlg::OnBnClickedButtonBrowseRef)\r
47 END_MESSAGE_MAP()\r
48 \r
49 BOOL CCreateBranchTagDlg::OnInitDialog()\r
50 {\r
51         CResizableStandAloneDialog::OnInitDialog();\r
52 \r
53         CHOOSE_VERSION_ADDANCHOR;\r
54 \r
55         AddAnchor(IDC_GROUP_BRANCH, TOP_LEFT, TOP_RIGHT);\r
56         \r
57         AddAnchor(IDC_GROUP_OPTION, TOP_LEFT, TOP_RIGHT);\r
58 \r
59         AddAnchor(IDOK,BOTTOM_RIGHT);\r
60         AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
61         AddAnchor(IDHELP, BOTTOM_RIGHT);\r
62 \r
63         this->AddOthersToAnchor();\r
64 \r
65         if(m_Base.IsEmpty())\r
66         {\r
67                 this->SetDefaultChoose(IDC_RADIO_HEAD);\r
68         \r
69         }else\r
70         {\r
71                 this->SetDefaultChoose(IDC_RADIO_VERSION);\r
72                 this->GetDlgItem(IDC_COMBOBOXEX_VERSION)->SetWindowTextW(m_Base);\r
73         }\r
74 \r
75         Init();\r
76 \r
77         this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
78 \r
79         if(this->m_bIsTag)\r
80         {\r
81                 this->SetWindowTextW(_T("Create Tag"));\r
82                 this->GetDlgItem(IDC_LABEL_BRANCH)->SetWindowTextW(_T("Tag"));\r
83         }\r
84         else\r
85         {\r
86                 this->SetWindowTextW(_T("Create Branch"));\r
87                 this->GetDlgItem(IDC_LABEL_BRANCH)->SetWindowTextW(_T("Branch"));\r
88         }\r
89         // show the switch checkbox if we are a create branch dialog\r
90         this->GetDlgItem(IDC_CHECK_SWITCH)->ShowWindow( !m_bIsTag );\r
91         CWnd* pHead = GetDlgItem(IDC_RADIO_HEAD);\r
92         CString HeadText;\r
93         pHead->GetWindowText( HeadText ); \r
94         pHead->SetWindowText( HeadText + " (" + g_Git.GetCurrentBranch() + ")");\r
95         EnableSaveRestore(_T("BranchTagDlg"));\r
96 \r
97         OnCbnSelchangeComboboxexBranch();\r
98         return TRUE;\r
99 \r
100 \r
101 }\r
102 // CCreateBranchTagDlg message handlers\r
103 \r
104 void CCreateBranchTagDlg::OnBnClickedOk()\r
105 {\r
106         // TODO: Add your control notification handler code here\r
107         this->UpdateData(TRUE);\r
108 \r
109         this->m_BranchTagName.Trim();\r
110         if(this->m_BranchTagName.IsEmpty()  ||  this->m_BranchTagName.Find(' ') >= 0 )\r
111         {\r
112                 CMessageBox::Show(NULL, IDS_B_T_NOTEMPTY, IDS_TORTOISEGIT, MB_OK);\r
113                 return;\r
114         }\r
115         this->UpdateRevsionName();\r
116         OnOK();\r
117 }\r
118 \r
119 void CCreateBranchTagDlg::OnCbnSelchangeComboboxexBranch()\r
120 {\r
121         // TODO: Add your control notification handler code here\r
122         \r
123         if(this->m_ChooseVersioinBranch.GetString().Left(8)==_T("remotes/"))\r
124                 this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(TRUE);\r
125         else\r
126                 this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
127 \r
128         if(this->m_bIsTag)\r
129                 this->GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
130 }\r
131 \r
132 void CCreateBranchTagDlg::OnVersionChanged()\r
133 {\r
134         int radio=GetCheckedRadioButton(IDC_RADIO_HEAD,IDC_RADIO_VERSION);\r
135         if (radio == IDC_RADIO_BRANCH)\r
136                 OnCbnSelchangeComboboxexBranch();\r
137         else\r
138                 GetDlgItem(IDC_CHECK_TRACK)->EnableWindow(FALSE);\r
139 }\r