1 // FormatPatch.cpp : implementation file
5 #include "TortoiseProc.h"
6 #include "FormatPatchDlg.h"
8 #include "BrowseFolder.h"
10 #include "BrowseRefsDlg.h"
11 // CFormatPatchDlg dialog
13 IMPLEMENT_DYNAMIC(CFormatPatchDlg
, CResizableStandAloneDialog
)
15 CFormatPatchDlg::CFormatPatchDlg(CWnd
* pParent
/*=NULL*/)
16 : CResizableStandAloneDialog(CFormatPatchDlg::IDD
, pParent
),
17 m_regSendMail(_T("Software\\TortoiseGit\\TortoiseProc\\FormatPatch\\SendMail"),0)
20 this->m_bSendMail
= m_regSendMail
;
21 this->m_Radio
= IDC_RADIO_SINCE
;
24 CFormatPatchDlg::~CFormatPatchDlg()
28 void CFormatPatchDlg::DoDataExchange(CDataExchange
* pDX
)
30 CDialog::DoDataExchange(pDX
);
31 DDX_Control(pDX
, IDC_COMBOBOXEX_DIR
, m_cDir
);
32 DDX_Control(pDX
, IDC_COMBOBOXEX_SINCE
, m_cSince
);
33 DDX_Control(pDX
, IDC_COMBOBOXEX_FROM
, m_cFrom
);
34 DDX_Control(pDX
, IDC_COMBOBOXEX_TO
, m_cTo
);
35 DDX_Control(pDX
, IDC_EDIT_NUM
, m_cNum
);
37 DDX_Text(pDX
,IDC_EDIT_NUM
,m_Num
);
39 DDX_Text(pDX
, IDC_COMBOBOXEX_DIR
, m_Dir
);
40 DDX_Text(pDX
, IDC_COMBOBOXEX_SINCE
, m_Since
);
41 DDX_Text(pDX
, IDC_COMBOBOXEX_FROM
, m_From
);
42 DDX_Text(pDX
, IDC_COMBOBOXEX_TO
, m_To
);
44 DDX_Check(pDX
, IDC_CHECK_SENDMAIL
, m_bSendMail
);
48 BEGIN_MESSAGE_MAP(CFormatPatchDlg
, CResizableStandAloneDialog
)
49 ON_BN_CLICKED(IDC_BUTTON_DIR
, &CFormatPatchDlg::OnBnClickedButtonDir
)
50 ON_BN_CLICKED(IDC_BUTTON_FROM
, &CFormatPatchDlg::OnBnClickedButtonFrom
)
51 ON_BN_CLICKED(IDC_BUTTON_TO
, &CFormatPatchDlg::OnBnClickedButtonTo
)
52 ON_BN_CLICKED(IDOK
, &CFormatPatchDlg::OnBnClickedOk
)
53 ON_BN_CLICKED(IDC_RADIO_SINCE
, &CFormatPatchDlg::OnBnClickedRadio
)
54 ON_BN_CLICKED(IDC_RADIO_NUM
, &CFormatPatchDlg::OnBnClickedRadio
)
55 ON_BN_CLICKED(IDC_RADIO_RANGE
, &CFormatPatchDlg::OnBnClickedRadio
)
56 ON_BN_CLICKED(IDC_BUTTON_REF
, &CFormatPatchDlg::OnBnClickedButtonRef
)
59 BOOL
CFormatPatchDlg::OnInitDialog()
61 CResizableStandAloneDialog::OnInitDialog();
63 AddAnchor(IDC_GROUP_DIR
, TOP_LEFT
, TOP_RIGHT
);
64 AddAnchor(IDC_COMBOBOXEX_DIR
,TOP_LEFT
, TOP_RIGHT
);
65 AddAnchor(IDC_BUTTON_DIR
, TOP_RIGHT
);
67 AddAnchor(IDC_GROUP_VERSION
, TOP_LEFT
, TOP_RIGHT
);
68 AddAnchor(IDC_COMBOBOXEX_SINCE
, TOP_LEFT
, TOP_RIGHT
);
69 AddAnchor(IDC_EDIT_NUM
, TOP_LEFT
, TOP_RIGHT
);
70 AddAnchor(IDC_SPIN_NUM
, TOP_RIGHT
);
72 AddAnchor(IDC_COMBOBOXEX_FROM
, TOP_LEFT
, TOP_RIGHT
);
73 AddAnchor(IDC_COMBOBOXEX_TO
, TOP_LEFT
, TOP_RIGHT
);
75 AddAnchor(IDC_BUTTON_FROM
, TOP_RIGHT
);
76 AddAnchor(IDC_BUTTON_TO
, TOP_RIGHT
);
77 AddAnchor(IDC_CHECK_SENDMAIL
,BOTTOM_LEFT
);
78 AddAnchor(IDOK
,BOTTOM_RIGHT
);
79 AddAnchor(IDCANCEL
,BOTTOM_RIGHT
);
80 AddAnchor(IDHELP
, BOTTOM_RIGHT
);
81 AddAnchor(IDC_BUTTON_REF
,TOP_RIGHT
);
83 this->AddOthersToAnchor();
85 m_cDir
.SetPathHistory(TRUE
);
86 m_cDir
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchURLS"), _T("path"));
90 g_Git
.GetBranchList(list
,NULL
,CGit::BRANCH_ALL
);
91 m_cSince
.SetMaxHistoryItems(list
.size());
92 m_cSince
.AddString(list
);
94 if(!m_Since
.IsEmpty())
95 m_cSince
.SetWindowText(m_Since
);
97 m_cFrom
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchFromURLS"), _T("ver"));
100 if(!m_From
.IsEmpty())
101 m_cFrom
.SetWindowText(m_From
);
103 m_cTo
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchToURLS"), _T("ver"));
107 m_cTo
.SetWindowText(m_To
);
109 this->CheckRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
,this->m_Radio
);
113 EnableSaveRestore(_T("FormatPatchDlg"));
116 // CFormatPatchDlg message handlers
118 void CFormatPatchDlg::OnBnClickedButtonDir()
120 // TODO: Add your control notification handler code here
121 CBrowseFolder browseFolder
;
122 browseFolder
.m_style
= BIF_EDITBOX
| BIF_NEWDIALOGSTYLE
| BIF_RETURNFSANCESTORS
| BIF_RETURNONLYFSDIRS
;
123 CString strCloneDirectory
;
124 this->UpdateData(TRUE
);
125 strCloneDirectory
=m_Dir
;
126 if (browseFolder
.Show(GetSafeHwnd(), strCloneDirectory
) == CBrowseFolder::OK
)
128 m_Dir
=strCloneDirectory
;
129 this->UpdateData(FALSE
);
133 void CFormatPatchDlg::OnBnClickedButtonFrom()
136 // tell the dialog to use mode for selecting revisions
138 // only one revision must be selected however
139 dlg
.SingleSelection(true);
140 if ( dlg
.DoModal() == IDOK
)
142 // get selected hash if any
143 CString selectedHash
= dlg
.GetSelectedHash();
144 // load into window, do this even if empty so that it is clear that nothing has been selected
145 m_cFrom
.AddString(selectedHash
);
146 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_RANGE
);
151 void CFormatPatchDlg::OnBnClickedButtonTo()
154 // tell the dialog to use mode for selecting revisions
156 // only one revision must be selected however
157 dlg
.SingleSelection(true);
158 if ( dlg
.DoModal() == IDOK
)
160 // get selected hash if any
161 CString selectedHash
= dlg
.GetSelectedHash();
162 // load into window, do this even if empty so that it is clear that nothing has been selected
163 m_cTo
.AddString(selectedHash
);
164 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_RANGE
);
169 void CFormatPatchDlg::OnBnClickedOk()
171 // TODO: Add your control notification handler code here
173 m_cDir
.SaveHistory();
174 m_cFrom
.SaveHistory();
176 this->UpdateData(TRUE
);
177 this->m_Radio
=GetCheckedRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
);
179 m_regSendMail
=this->m_bSendMail
;
183 void CFormatPatchDlg::OnBnClickedRadio()
185 // TODO: Add your control notification handler code here
186 int radio
=this->GetCheckedRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
);
187 m_cSince
.EnableWindow(FALSE
);
188 m_cNum
.EnableWindow(FALSE
);
189 m_cFrom
.EnableWindow(FALSE
);
190 m_cTo
.EnableWindow(FALSE
);
193 case IDC_RADIO_SINCE
:
194 m_cSince
.EnableWindow(TRUE
);
197 m_cNum
.EnableWindow(TRUE
);
199 case IDC_RADIO_RANGE
:
200 m_cFrom
.EnableWindow(TRUE
);
201 m_cTo
.EnableWindow(TRUE
);
205 void CFormatPatchDlg::OnBnClickedButtonRef()
207 if(CBrowseRefsDlg::PickRefForCombo(&m_cSince
, gPickRef_NoTag
))
209 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_SINCE
);