1 |
26 |
unneback |
//####COPYRIGHTBEGIN####
|
2 |
|
|
//
|
3 |
|
|
// ----------------------------------------------------------------------------
|
4 |
|
|
// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
|
5 |
|
|
//
|
6 |
|
|
// This program is part of the eCos host tools.
|
7 |
|
|
//
|
8 |
|
|
// This program is free software; you can redistribute it and/or modify it
|
9 |
|
|
// under the terms of the GNU General Public License as published by the Free
|
10 |
|
|
// Software Foundation; either version 2 of the License, or (at your option)
|
11 |
|
|
// any later version.
|
12 |
|
|
//
|
13 |
|
|
// This program is distributed in the hope that it will be useful, but WITHOUT
|
14 |
|
|
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
15 |
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
16 |
|
|
// more details.
|
17 |
|
|
//
|
18 |
|
|
// You should have received a copy of the GNU General Public License along with
|
19 |
|
|
// this program; if not, write to the Free Software Foundation, Inc.,
|
20 |
|
|
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
21 |
|
|
//
|
22 |
|
|
// ----------------------------------------------------------------------------
|
23 |
|
|
//
|
24 |
|
|
//####COPYRIGHTEND####
|
25 |
|
|
// ViewOptions.cpp : implementation file
|
26 |
|
|
//
|
27 |
|
|
//===========================================================================
|
28 |
|
|
//===========================================================================
|
29 |
|
|
//#####DESCRIPTIONBEGIN####
|
30 |
|
|
//
|
31 |
|
|
// Author(s): sdf
|
32 |
|
|
// Contact(s): sdf
|
33 |
|
|
// Date: 1998/08/11
|
34 |
|
|
// Version: 0.01
|
35 |
|
|
// Purpose:
|
36 |
|
|
// Description: This is the implementation of the Configuration -> Options View tab
|
37 |
|
|
// Requires:
|
38 |
|
|
// Provides:
|
39 |
|
|
// See also:
|
40 |
|
|
// Known bugs:
|
41 |
|
|
// Usage:
|
42 |
|
|
//
|
43 |
|
|
//####DESCRIPTIONEND####
|
44 |
|
|
//
|
45 |
|
|
//===========================================================================
|
46 |
|
|
|
47 |
|
|
#include "stdafx.h"
|
48 |
|
|
#include "ConfigTool.h"
|
49 |
|
|
#include "ViewOptions.h"
|
50 |
|
|
#include "ConfigToolDoc.h"
|
51 |
|
|
#include "CellView.h"
|
52 |
|
|
#include "CTUtils.h"
|
53 |
|
|
|
54 |
|
|
#ifdef _DEBUG
|
55 |
|
|
#define new DEBUG_NEW
|
56 |
|
|
#undef THIS_FILE
|
57 |
|
|
static char THIS_FILE[] = __FILE__;
|
58 |
|
|
#endif
|
59 |
|
|
|
60 |
|
|
/////////////////////////////////////////////////////////////////////////////
|
61 |
|
|
// CViewOptions property page
|
62 |
|
|
|
63 |
|
|
CViewOptions::CViewOptions()
|
64 |
|
|
: CeCosDialog(IDD, NULL)
|
65 |
|
|
{
|
66 |
|
|
//{{AFX_DATA_INIT(CViewOptions)
|
67 |
|
|
//}}AFX_DATA_INIT
|
68 |
|
|
m_FontChosen=CMainFrame::PaneTypeMax;
|
69 |
|
|
}
|
70 |
|
|
|
71 |
|
|
CViewOptions::~CViewOptions()
|
72 |
|
|
{
|
73 |
|
|
}
|
74 |
|
|
|
75 |
|
|
void CViewOptions::DoDataExchange(CDataExchange* pDX)
|
76 |
|
|
{
|
77 |
|
|
CeCosDialog::DoDataExchange(pDX);
|
78 |
|
|
//{{AFX_DATA_MAP(CViewOptions)
|
79 |
|
|
//}}AFX_DATA_MAP
|
80 |
|
|
}
|
81 |
|
|
|
82 |
|
|
|
83 |
|
|
BEGIN_MESSAGE_MAP(CViewOptions, CeCosDialog)
|
84 |
|
|
//{{AFX_MSG_MAP(CViewOptions)
|
85 |
|
|
ON_BN_CLICKED(IDC_RADIO_ASSOCIATED, OnRadioAssociated)
|
86 |
|
|
ON_BN_CLICKED(IDC_RADIO_CUSTOM, OnRadioCustom)
|
87 |
|
|
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
|
88 |
|
|
ON_BN_CLICKED(IDC_RADIO_INTERNAL_BROWSER, OnRadioInternalBrowser)
|
89 |
|
|
ON_BN_CLICKED(IDC_RADIO_ASSOCIATED_BROWSER, OnRadioAssociatedBrowser)
|
90 |
|
|
ON_BN_CLICKED(IDC_RADIO_CUSTOM_BROWSER, OnRadioCustomBrowser)
|
91 |
|
|
ON_BN_CLICKED(IDC_BROWSE_BROWSER, OnBrowseBrowser)
|
92 |
|
|
ON_BN_CLICKED(IDC_FONT, OnFont)
|
93 |
|
|
ON_CBN_SELCHANGE(IDC_PANECOMBO, OnSelchangePanecombo)
|
94 |
|
|
//}}AFX_MSG_MAP
|
95 |
|
|
END_MESSAGE_MAP()
|
96 |
|
|
|
97 |
|
|
/////////////////////////////////////////////////////////////////////////////
|
98 |
|
|
// CViewOptions message handlers
|
99 |
|
|
|
100 |
|
|
const CFileName CViewOptions::strHeaderfileAssociation=CViewOptions::HeaderFileAssociation();
|
101 |
|
|
|
102 |
|
|
void CViewOptions::OnOK()
|
103 |
|
|
{
|
104 |
|
|
|
105 |
|
|
UpdateData(TRUE);
|
106 |
|
|
CMainFrame *pMain=CConfigTool::GetMain();
|
107 |
|
|
if(CMainFrame::PaneTypeMax!=m_FontChosen){
|
108 |
|
|
pMain->SetPaneFont(m_FontChosen, m_lf);
|
109 |
|
|
}
|
110 |
|
|
|
111 |
|
|
CConfigToolDoc *pDoc=CConfigTool::GetConfigToolDoc();
|
112 |
|
|
|
113 |
|
|
|
114 |
|
|
if(((CButton *)GetDlgItem(IDC_RADIO_CUSTOM_BROWSER))->GetCheck()){
|
115 |
|
|
CFileName strBrowser;
|
116 |
|
|
GetDlgItemText(IDC_EDIT_BROWSER,strBrowser);
|
117 |
|
|
if(strBrowser.IsEmpty() || !strBrowser.Exists()){
|
118 |
|
|
CUtils::MessageBoxF(_T("If you wish to use a custom browser you must specify a valid executable"));
|
119 |
|
|
GetDlgItem(IDC_EDIT_BROWSER)->SetFocus();
|
120 |
|
|
|
121 |
|
|
return;
|
122 |
|
|
}
|
123 |
|
|
pDoc->m_strBrowser=strBrowser;
|
124 |
|
|
pDoc->m_eUseCustomBrowser=CConfigToolDoc::CustomExternal;
|
125 |
|
|
} else if (((CButton *)GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER))->GetCheck()){
|
126 |
|
|
pDoc->m_eUseCustomBrowser=CConfigToolDoc::AssociatedExternal;
|
127 |
|
|
} else {
|
128 |
|
|
pDoc->m_eUseCustomBrowser=CConfigToolDoc::Internal;
|
129 |
|
|
}
|
130 |
|
|
|
131 |
|
|
pDoc->m_bUseCustomViewer=((CButton *)GetDlgItem(IDC_RADIO_CUSTOM))->GetCheck();
|
132 |
|
|
if(pDoc->m_bUseCustomViewer){
|
133 |
|
|
CFileName strViewer;
|
134 |
|
|
GetDlgItemText(IDC_EDIT,strViewer);
|
135 |
|
|
if(strViewer.IsEmpty() || !strViewer.IsFile()){
|
136 |
|
|
CUtils::MessageBoxF(_T("If you wish to use a custom viewer you must specify a valid executable"));
|
137 |
|
|
GetDlgItem(IDC_EDIT)->SetFocus();
|
138 |
|
|
|
139 |
|
|
return;
|
140 |
|
|
}
|
141 |
|
|
pDoc->m_strViewer=strViewer;
|
142 |
|
|
}
|
143 |
|
|
|
144 |
|
|
bool bHex=((CButton *)GetDlgItem(IDC_RADIO_HEXADECIMAL))->GetCheck();
|
145 |
|
|
if(bHex!=pDoc->m_bHex){
|
146 |
|
|
pDoc->m_bHex=bHex;
|
147 |
|
|
pDoc->UpdateAllViews(0,CConfigToolDoc::IntFormatChanged);
|
148 |
|
|
}
|
149 |
|
|
|
150 |
|
|
bool bMacros=((CButton *)GetDlgItem(IDC_RADIO_MACRO_NAMES))->GetCheck();
|
151 |
|
|
if(bMacros!=pDoc->m_bMacroNames){
|
152 |
|
|
pDoc->m_bMacroNames=bMacros;
|
153 |
|
|
pDoc->UpdateAllViews(0,CConfigToolDoc::NameFormatChanged);
|
154 |
|
|
}
|
155 |
|
|
|
156 |
|
|
CeCosDialog::OnOK();
|
157 |
|
|
}
|
158 |
|
|
|
159 |
|
|
void CViewOptions::OnRadioAssociated()
|
160 |
|
|
{
|
161 |
|
|
|
162 |
|
|
GetDlgItem(IDC_EDIT)->EnableWindow(FALSE);
|
163 |
|
|
GetDlgItem(IDC_BROWSE)->EnableWindow(FALSE);
|
164 |
|
|
}
|
165 |
|
|
|
166 |
|
|
void CViewOptions::OnRadioCustom()
|
167 |
|
|
{
|
168 |
|
|
|
169 |
|
|
GetDlgItem(IDC_EDIT)->EnableWindow(TRUE);
|
170 |
|
|
GetDlgItem(IDC_BROWSE)->EnableWindow(TRUE);
|
171 |
|
|
}
|
172 |
|
|
|
173 |
|
|
void CViewOptions::OnBrowse()
|
174 |
|
|
{
|
175 |
|
|
CFileDialog dlg(TRUE, _T("exe"), _T(""), OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,
|
176 |
|
|
_T("Executables (*.exe;*.bat;*.com)|*.exe;*.bat;*.com"));
|
177 |
|
|
if(IDOK==dlg.DoModal()){
|
178 |
|
|
SetDlgItemText(IDC_EDIT,dlg.GetPathName());
|
179 |
|
|
}
|
180 |
|
|
}
|
181 |
|
|
|
182 |
|
|
BOOL CViewOptions::OnInitDialog()
|
183 |
|
|
{
|
184 |
|
|
CComboBox *pCombo=(CComboBox *)GetDlgItem(IDC_PANECOMBO);
|
185 |
|
|
CMainFrame *pMain=CConfigTool::GetMain();
|
186 |
|
|
for(int i=0;i<CMainFrame::PaneTypeMax;i++){
|
187 |
|
|
if(i==CMainFrame::Control || i==CMainFrame::Output || i==CMainFrame::ShortDesc){
|
188 |
|
|
int nIndex=pCombo->AddString(pMain->GetPaneName((CMainFrame::PaneType)i));
|
189 |
|
|
pCombo->SetItemData(nIndex,i);
|
190 |
|
|
}
|
191 |
|
|
}
|
192 |
|
|
pCombo->SetCurSel(0);
|
193 |
|
|
|
194 |
|
|
CeCosDialog::OnInitDialog();
|
195 |
|
|
|
196 |
|
|
if(!strHeaderfileAssociation.IsEmpty()){
|
197 |
|
|
CString str1;
|
198 |
|
|
str1.Format(_T("%s (%s)"),_T("Associated viewer"),strHeaderfileAssociation);
|
199 |
|
|
SetDlgItemText(IDC_RADIO_ASSOCIATED,str1);
|
200 |
|
|
} else {
|
201 |
|
|
SetDlgItemText(IDC_RADIO_ASSOCIATED,_T("Associated viewer"));
|
202 |
|
|
}
|
203 |
|
|
|
204 |
|
|
// Compute the association with doc (.htm) files
|
205 |
|
|
|
206 |
|
|
if(CConfigToolDoc::DefaultExternalBrowser().IsEmpty()){
|
207 |
|
|
SetDlgItemText(IDC_RADIO_ASSOCIATED_BROWSER,_T("Associated browser"));
|
208 |
|
|
} else {
|
209 |
|
|
CString str1;
|
210 |
|
|
str1.Format(_T("%s (%s)"),_T("Associated browser"),CConfigToolDoc::DefaultExternalBrowser().Tail());
|
211 |
|
|
SetDlgItemText(IDC_RADIO_ASSOCIATED_BROWSER,str1);
|
212 |
|
|
}
|
213 |
|
|
|
214 |
|
|
CConfigToolDoc*pDoc=CConfigTool::GetConfigToolDoc();
|
215 |
|
|
if(strHeaderfileAssociation.IsEmpty()){
|
216 |
|
|
GetDlgItem(IDC_RADIO_ASSOCIATED)->EnableWindow(FALSE);
|
217 |
|
|
GetDlgItem(IDC_BROWSE)->EnableWindow(TRUE);
|
218 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_CUSTOM))->SetCheck(TRUE);
|
219 |
|
|
} else {
|
220 |
|
|
((CButton *)GetDlgItem(pDoc->m_bUseCustomViewer?IDC_RADIO_CUSTOM:IDC_RADIO_ASSOCIATED))->SetCheck(TRUE);
|
221 |
|
|
GetDlgItem(IDC_EDIT)->EnableWindow(pDoc->m_bUseCustomViewer);
|
222 |
|
|
GetDlgItem(IDC_BROWSE)->EnableWindow(pDoc->m_bUseCustomViewer);
|
223 |
|
|
}
|
224 |
|
|
SetDlgItemText(IDC_EDIT,pDoc->m_strViewer);
|
225 |
|
|
|
226 |
|
|
if(CConfigToolDoc::DefaultExternalBrowser().IsEmpty()){
|
227 |
|
|
GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER)->EnableWindow(FALSE);
|
228 |
|
|
GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE);
|
229 |
|
|
if(CConfigToolDoc::AssociatedExternal==pDoc->m_eUseCustomBrowser){
|
230 |
|
|
pDoc->m_eUseCustomBrowser=CConfigToolDoc::CustomExternal;
|
231 |
|
|
}
|
232 |
|
|
}
|
233 |
|
|
|
234 |
|
|
switch(pDoc->m_eUseCustomBrowser){
|
235 |
|
|
case CConfigToolDoc::Internal:
|
236 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_INTERNAL_BROWSER))->SetCheck(TRUE);
|
237 |
|
|
break;
|
238 |
|
|
case CConfigToolDoc::AssociatedExternal:
|
239 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER))->SetCheck(TRUE);
|
240 |
|
|
break;
|
241 |
|
|
case CConfigToolDoc::CustomExternal:
|
242 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_CUSTOM_BROWSER))->SetCheck(TRUE);
|
243 |
|
|
GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(TRUE);
|
244 |
|
|
GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE);
|
245 |
|
|
break;
|
246 |
|
|
default:
|
247 |
|
|
ASSERT(FALSE);
|
248 |
|
|
}
|
249 |
|
|
|
250 |
|
|
SetDlgItemText(IDC_EDIT_BROWSER,pDoc->m_strBrowser);
|
251 |
|
|
|
252 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_DECIMAL))->SetCheck(!pDoc->m_bHex);
|
253 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_DESCRIPTIVE_NAMES))->SetCheck(!pDoc->m_bMacroNames);
|
254 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_HEXADECIMAL))->SetCheck(pDoc->m_bHex);
|
255 |
|
|
((CButton *)GetDlgItem(IDC_RADIO_MACRO_NAMES))->SetCheck(pDoc->m_bMacroNames);
|
256 |
|
|
|
257 |
|
|
UpdateData(FALSE);
|
258 |
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
259 |
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
260 |
|
|
}
|
261 |
|
|
|
262 |
|
|
void CViewOptions::OnRadioInternalBrowser()
|
263 |
|
|
{
|
264 |
|
|
|
265 |
|
|
GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(FALSE);
|
266 |
|
|
GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(FALSE);
|
267 |
|
|
}
|
268 |
|
|
|
269 |
|
|
void CViewOptions::OnRadioAssociatedBrowser()
|
270 |
|
|
{
|
271 |
|
|
|
272 |
|
|
GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(FALSE);
|
273 |
|
|
GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(FALSE);
|
274 |
|
|
}
|
275 |
|
|
|
276 |
|
|
void CViewOptions::OnRadioCustomBrowser()
|
277 |
|
|
{
|
278 |
|
|
|
279 |
|
|
GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(TRUE);
|
280 |
|
|
GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE);
|
281 |
|
|
}
|
282 |
|
|
|
283 |
|
|
void CViewOptions::OnBrowseBrowser()
|
284 |
|
|
{
|
285 |
|
|
CFileDialog dlg(TRUE, _T("exe"), _T(""), OFN_HIDEREADONLY | OFN_PATHMUSTEXIST,
|
286 |
|
|
_T("Executables (*.exe;*.bat;*.com)|*.exe;*.bat;*.com"));
|
287 |
|
|
if(IDOK==dlg.DoModal()){
|
288 |
|
|
SetDlgItemText(IDC_EDIT_BROWSER,dlg.GetPathName());
|
289 |
|
|
}
|
290 |
|
|
|
291 |
|
|
}
|
292 |
|
|
|
293 |
|
|
void CViewOptions::OnFont()
|
294 |
|
|
{
|
295 |
|
|
LOGFONT lf;
|
296 |
|
|
CMainFrame *pMain=CConfigTool::GetMain();
|
297 |
|
|
CComboBox *pCombo=(CComboBox *)GetDlgItem(IDC_PANECOMBO);
|
298 |
|
|
int nSel=pCombo->GetCurSel();
|
299 |
|
|
CMainFrame::PaneType pane=(CMainFrame::PaneType)pCombo->GetItemData(nSel);
|
300 |
|
|
pMain->GetPaneFont(pane).GetLogFont(&lf);
|
301 |
|
|
CFontDialog dlg(&lf);
|
302 |
|
|
if(IDOK==dlg.DoModal()){
|
303 |
|
|
|
304 |
|
|
m_FontChosen=pane;
|
305 |
|
|
memcpy(&m_lf,dlg.m_cf.lpLogFont, sizeof LOGFONT);
|
306 |
|
|
}
|
307 |
|
|
}
|
308 |
|
|
|
309 |
|
|
void CViewOptions::OnSelchangePanecombo()
|
310 |
|
|
{
|
311 |
|
|
if(CMainFrame::PaneTypeMax!=m_FontChosen){
|
312 |
|
|
CString str;
|
313 |
|
|
((CComboBox *)GetDlgItem(IDC_PANECOMBO))->GetLBText(m_FontChosen,str);
|
314 |
|
|
if(IDYES==CUtils::MessageBoxFT(MB_YESNO,_T("Apply font changes to %s pane?"),(LPCTSTR)str)){
|
315 |
|
|
CMainFrame *pMain=CConfigTool::GetMain();
|
316 |
|
|
pMain->SetPaneFont(m_FontChosen, m_lf);
|
317 |
|
|
}
|
318 |
|
|
m_FontChosen=CMainFrame::PaneTypeMax;
|
319 |
|
|
}
|
320 |
|
|
}
|
321 |
|
|
|
322 |
|
|
CFileName CViewOptions::HeaderFileAssociation()
|
323 |
|
|
{
|
324 |
|
|
// Compute the association with header (.h) files
|
325 |
|
|
const CFileName strFile(CFileName::GetTempPath()+_T("tmp.h"));
|
326 |
|
|
CFileName strExe;
|
327 |
|
|
CFile f;
|
328 |
|
|
if(f.Open(strFile,CFile::modeCreate|CFile::modeWrite)){
|
329 |
|
|
f.Close();
|
330 |
|
|
bool rc=((int)FindExecutable(strFile,_T("."),strExe.GetBuffer(MAX_PATH))>32);
|
331 |
|
|
strExe.ReleaseBuffer();
|
332 |
|
|
if(rc){
|
333 |
|
|
strExe=strExe.Tail();
|
334 |
|
|
} else {
|
335 |
|
|
strExe=_T("");
|
336 |
|
|
}
|
337 |
|
|
::DeleteFile(strFile);
|
338 |
|
|
}
|
339 |
|
|
return strExe;
|
340 |
|
|
|
341 |
|
|
}
|