4 #include "BrowseRefsDlg.h"
\r
9 CString m_initialRefName;
\r
14 CHistoryCombo m_ChooseVersioinBranch;
\r
15 CHistoryCombo m_ChooseVersioinTags;
\r
16 CHistoryCombo m_ChooseVersioinVersion;
\r
18 //Notification when version changed. Can be implemented in derived classes.
\r
19 virtual void OnVersionChanged(){}
\r
21 afx_msg void OnBnClickedChooseRadio()
\r
23 this->m_ChooseVersioinTags.EnableWindow(FALSE);
\r
24 this->m_ChooseVersioinBranch.EnableWindow(FALSE);
\r
25 this->m_ChooseVersioinVersion.EnableWindow(FALSE);
\r
26 int radio=m_pWin->GetCheckedRadioButton(IDC_RADIO_HEAD,IDC_RADIO_VERSION);
\r
29 case IDC_RADIO_HEAD:
\r
31 case IDC_RADIO_BRANCH:
\r
32 this->m_ChooseVersioinBranch.EnableWindow(TRUE);
\r
34 case IDC_RADIO_TAGS:
\r
35 this->m_ChooseVersioinTags.EnableWindow(TRUE);
\r
37 case IDC_RADIO_VERSION:
\r
38 this->m_ChooseVersioinVersion.EnableWindow(TRUE);
\r
41 // enable version browse button if Version is selected
\r
42 m_pWin->GetDlgItem(IDC_BUTTON_SHOW)->EnableWindow(radio == IDC_RADIO_VERSION);
\r
46 void OnBnClickedChooseVersion()
\r
48 // use the git log to allow selection of a version
\r
50 // tell the dialog to use mode for selecting revisions
\r
51 dlg.SetSelect(true);
\r
52 // only one revision must be selected however
\r
53 dlg.SingleSelection(true);
\r
54 if ( dlg.DoModal() == IDOK )
\r
56 // get selected hash if any
\r
57 CString selectedHash = dlg.GetSelectedHash();
\r
58 // load into window, do this even if empty so that it is clear that nothing has been selected
\r
59 m_ChooseVersioinVersion.SetWindowText( selectedHash );
\r
64 void UpdateRevsionName()
\r
66 int radio=m_pWin->GetCheckedRadioButton(IDC_RADIO_HEAD,IDC_RADIO_VERSION);
\r
69 case IDC_RADIO_HEAD:
\r
70 this->m_VersionName=_T("HEAD");
\r
72 case IDC_RADIO_BRANCH:
\r
73 this->m_VersionName=m_ChooseVersioinBranch.GetString();
\r
75 case IDC_RADIO_TAGS:
\r
76 this->m_VersionName=m_ChooseVersioinTags.GetString();
\r
78 case IDC_RADIO_VERSION:
\r
79 this->m_VersionName=m_ChooseVersioinVersion.GetString();
\r
83 void SetDefaultChoose(int id)
\r
85 m_pWin->CheckRadioButton(IDC_RADIO_HEAD,IDC_RADIO_VERSION,id);
\r
86 OnBnClickedChooseRadio();
\r
89 void OnBnClickedButtonBrowseRef()
\r
92 UpdateRevsionName();
\r
93 CString resultRef = CBrowseRefsDlg::PickRef(false, m_VersionName, gPickRef_All);
\r
94 if(resultRef.IsEmpty())
\r
96 SelectRef(resultRef, false);
\r
99 void SelectRef(CString refName, bool bRefNameIsPossiblyNotFullName = true)
\r
101 if(bRefNameIsPossiblyNotFullName)
\r
103 //Make sure refName is a full ref name first
\r
104 CString fullRefName = g_Git.GetFullRefName(refName);
\r
105 if(!fullRefName.IsEmpty())
\r
106 refName = fullRefName;
\r
109 if(wcsncmp(refName,L"refs/",5)==0)
\r
110 refName = refName.Mid(5);
\r
111 if(wcsncmp(refName,L"heads/",6)==0)
\r
113 refName = refName.Mid(6);
\r
114 SetDefaultChoose(IDC_RADIO_BRANCH);
\r
115 m_ChooseVersioinBranch.SetCurSel(
\r
116 m_ChooseVersioinBranch.FindStringExact(-1, refName));
\r
118 else if(wcsncmp(refName,L"remotes/",8)==0)
\r
120 SetDefaultChoose(IDC_RADIO_BRANCH);
\r
121 m_ChooseVersioinBranch.SetCurSel(
\r
122 m_ChooseVersioinBranch.FindStringExact(-1, refName));
\r
124 else if(wcsncmp(refName,L"tags/",5)==0)
\r
126 refName = refName.Mid(5);
\r
127 SetDefaultChoose(IDC_RADIO_TAGS);
\r
128 m_ChooseVersioinTags.SetCurSel(
\r
129 m_ChooseVersioinTags.FindStringExact(-1, refName));
\r
131 OnVersionChanged();
\r
137 m_ChooseVersioinBranch.SetMaxHistoryItems(0x7FFFFFFF);
\r
138 m_ChooseVersioinTags.SetMaxHistoryItems(0x7FFFFFFF);
\r
140 STRING_VECTOR list;
\r
141 g_Git.GetTagList(list);
\r
142 m_ChooseVersioinTags.AddString(list);
\r
146 g_Git.GetBranchList(list,¤t,CGit::BRANCH_ALL);
\r
147 m_ChooseVersioinBranch.AddString(list);
\r
148 m_ChooseVersioinBranch.SetCurSel(current);
\r
151 if(m_initialRefName.IsEmpty())
\r
152 OnVersionChanged();
\r
154 SelectRef(m_initialRefName);
\r
157 CString m_VersionName;
\r
158 CChooseVersion(CWnd *win)
\r
166 #define CHOOSE_VERSION_DDX \
\r
167 DDX_Control(pDX, IDC_COMBOBOXEX_BRANCH, m_ChooseVersioinBranch); \
\r
168 DDX_Control(pDX, IDC_COMBOBOXEX_TAGS, m_ChooseVersioinTags); \
\r
169 DDX_Control(pDX, IDC_COMBOBOXEX_VERSION, m_ChooseVersioinVersion);
\r
171 #define CHOOSE_VERSION_EVENT\
\r
172 ON_BN_CLICKED(IDC_RADIO_HEAD, OnBnClickedChooseRadioHost)\
\r
173 ON_BN_CLICKED(IDC_RADIO_BRANCH, OnBnClickedChooseRadioHost)\
\r
174 ON_BN_CLICKED(IDC_RADIO_TAGS, OnBnClickedChooseRadioHost)\
\r
175 ON_BN_CLICKED(IDC_BUTTON_SHOW, OnBnClickedShow)\
\r
176 ON_BN_CLICKED(IDC_RADIO_VERSION, OnBnClickedChooseRadioHost)\
\r
177 ON_BN_CLICKED(IDC_BUTTON_BROWSE_REF, OnBnClickedButtonBrowseRefHost)
\r
179 #define CHOOSE_VERSION_ADDANCHOR \
\r
181 AddAnchor(IDC_COMBOBOXEX_BRANCH, TOP_LEFT, TOP_RIGHT); \
\r
182 AddAnchor(IDC_COMBOBOXEX_TAGS, TOP_LEFT, TOP_RIGHT); \
\r
183 AddAnchor(IDC_COMBOBOXEX_VERSION, TOP_LEFT, TOP_RIGHT); \
\r
184 AddAnchor(IDC_GROUP_BASEON, TOP_LEFT, TOP_RIGHT); \
\r
185 AddAnchor(IDC_BUTTON_SHOW,TOP_RIGHT); \
\r
186 AddAnchor(IDC_BUTTON_BROWSE_REF,TOP_RIGHT); \
\r
189 #define CHOOSE_EVENT_RADIO() \
\r
190 afx_msg void OnBnClickedChooseRadioHost(){OnBnClickedChooseRadio();}\
\r
191 afx_msg void OnBnClickedShow(){OnBnClickedChooseVersion();}\
\r
192 afx_msg void OnBnClickedButtonBrowseRefHost(){OnBnClickedButtonBrowseRef();}
\r