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
);
81 this->AddOthersToAnchor();
83 m_cDir
.SetPathHistory(TRUE
);
84 m_cDir
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchURLS"), _T("path"));
88 g_Git
.GetBranchList(list
,NULL
,CGit::BRANCH_ALL
);
89 m_cSince
.SetMaxHistoryItems(list
.size());
90 m_cSince
.AddString(list
);
92 if(!m_Since
.IsEmpty())
93 m_cSince
.SetWindowText(m_Since
);
95 m_cFrom
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchFromURLS"), _T("ver"));
99 m_cFrom
.SetWindowText(m_From
);
101 m_cTo
.LoadHistory(_T("Software\\TortoiseGit\\History\\FormatPatchToURLS"), _T("ver"));
105 m_cTo
.SetWindowText(m_To
);
107 this->CheckRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
,this->m_Radio
);
111 EnableSaveRestore(_T("FormatPatchDlg"));
114 // CFormatPatchDlg message handlers
116 void CFormatPatchDlg::OnBnClickedButtonDir()
118 // TODO: Add your control notification handler code here
119 CBrowseFolder browseFolder
;
120 browseFolder
.m_style
= BIF_EDITBOX
| BIF_NEWDIALOGSTYLE
| BIF_RETURNFSANCESTORS
| BIF_RETURNONLYFSDIRS
;
121 CString strCloneDirectory
;
122 this->UpdateData(TRUE
);
123 strCloneDirectory
=m_Dir
;
124 if (browseFolder
.Show(GetSafeHwnd(), strCloneDirectory
) == CBrowseFolder::OK
)
126 m_Dir
=strCloneDirectory
;
127 this->UpdateData(FALSE
);
131 void CFormatPatchDlg::OnBnClickedButtonFrom()
134 // tell the dialog to use mode for selecting revisions
136 // only one revision must be selected however
137 dlg
.SingleSelection(true);
138 if ( dlg
.DoModal() == IDOK
)
140 // get selected hash if any
141 CString selectedHash
= dlg
.GetSelectedHash();
142 // load into window, do this even if empty so that it is clear that nothing has been selected
143 m_cFrom
.AddString(selectedHash
);
144 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_RANGE
);
149 void CFormatPatchDlg::OnBnClickedButtonTo()
152 // tell the dialog to use mode for selecting revisions
154 // only one revision must be selected however
155 dlg
.SingleSelection(true);
156 if ( dlg
.DoModal() == IDOK
)
158 // get selected hash if any
159 CString selectedHash
= dlg
.GetSelectedHash();
160 // load into window, do this even if empty so that it is clear that nothing has been selected
161 m_cTo
.AddString(selectedHash
);
162 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_RANGE
);
167 void CFormatPatchDlg::OnBnClickedOk()
169 // TODO: Add your control notification handler code here
171 m_cDir
.SaveHistory();
172 m_cFrom
.SaveHistory();
174 this->UpdateData(TRUE
);
175 this->m_Radio
=GetCheckedRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
);
177 m_regSendMail
=this->m_bSendMail
;
181 void CFormatPatchDlg::OnBnClickedRadio()
183 // TODO: Add your control notification handler code here
184 int radio
=this->GetCheckedRadioButton(IDC_RADIO_SINCE
,IDC_RADIO_RANGE
);
185 m_cSince
.EnableWindow(FALSE
);
186 m_cNum
.EnableWindow(FALSE
);
187 m_cFrom
.EnableWindow(FALSE
);
188 m_cTo
.EnableWindow(FALSE
);
191 case IDC_RADIO_SINCE
:
192 m_cSince
.EnableWindow(TRUE
);
195 m_cNum
.EnableWindow(TRUE
);
197 case IDC_RADIO_RANGE
:
198 m_cFrom
.EnableWindow(TRUE
);
199 m_cTo
.EnableWindow(TRUE
);
203 void CFormatPatchDlg::OnBnClickedButtonRef()
205 if(CBrowseRefsDlg::PickRefForCombo(&m_cSince
, gPickRef_NoTag
))
207 CheckRadioButton(IDC_RADIO_SINCE
, IDC_RADIO_RANGE
, IDC_RADIO_SINCE
);