Mercurial > flash_v2
diff host/tools/configtool/standalone/win32/ViewOptions.cpp @ 76:435cced73e2f ecos-v1_3_1-release
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
| author | jlarmour |
|---|---|
| date | Tue, 28 Mar 2000 14:10:45 +0000 |
| parents | |
| children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/host/tools/configtool/standalone/win32/ViewOptions.cpp @@ -0,0 +1,341 @@ +//####COPYRIGHTBEGIN#### +// +// ---------------------------------------------------------------------------- +// Copyright (C) 1998, 1999, 2000 Red Hat, Inc. +// +// This program is part of the eCos host tools. +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 of the License, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +// +// You should have received a copy of the GNU General Public License along with +// this program; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// ---------------------------------------------------------------------------- +// +//####COPYRIGHTEND#### +// ViewOptions.cpp : implementation file +// +//=========================================================================== +//=========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): sdf +// Contact(s): sdf +// Date: 1998/08/11 +// Version: 0.01 +// Purpose: +// Description: This is the implementation of the Configuration -> Options View tab +// Requires: +// Provides: +// See also: +// Known bugs: +// Usage: +// +//####DESCRIPTIONEND#### +// +//=========================================================================== + +#include "stdafx.h" +#include "ConfigTool.h" +#include "ViewOptions.h" +#include "ConfigToolDoc.h" +#include "CellView.h" +#include "CTUtils.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CViewOptions property page + +CViewOptions::CViewOptions() + : CeCosDialog(IDD, NULL) +{ + //{{AFX_DATA_INIT(CViewOptions) + //}}AFX_DATA_INIT + m_FontChosen=CMainFrame::PaneTypeMax; +} + +CViewOptions::~CViewOptions() +{ +} + +void CViewOptions::DoDataExchange(CDataExchange* pDX) +{ + CeCosDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CViewOptions) + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CViewOptions, CeCosDialog) +//{{AFX_MSG_MAP(CViewOptions) +ON_BN_CLICKED(IDC_RADIO_ASSOCIATED, OnRadioAssociated) +ON_BN_CLICKED(IDC_RADIO_CUSTOM, OnRadioCustom) +ON_BN_CLICKED(IDC_BROWSE, OnBrowse) +ON_BN_CLICKED(IDC_RADIO_INTERNAL_BROWSER, OnRadioInternalBrowser) +ON_BN_CLICKED(IDC_RADIO_ASSOCIATED_BROWSER, OnRadioAssociatedBrowser) +ON_BN_CLICKED(IDC_RADIO_CUSTOM_BROWSER, OnRadioCustomBrowser) +ON_BN_CLICKED(IDC_BROWSE_BROWSER, OnBrowseBrowser) +ON_BN_CLICKED(IDC_FONT, OnFont) +ON_CBN_SELCHANGE(IDC_PANECOMBO, OnSelchangePanecombo) +//}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CViewOptions message handlers + +const CFileName CViewOptions::strHeaderfileAssociation=CViewOptions::HeaderFileAssociation(); + +void CViewOptions::OnOK() +{ + + UpdateData(TRUE); + CMainFrame *pMain=CConfigTool::GetMain(); + if(CMainFrame::PaneTypeMax!=m_FontChosen){ + pMain->SetPaneFont(m_FontChosen, m_lf); + } + + CConfigToolDoc *pDoc=CConfigTool::GetConfigToolDoc(); + + + if(((CButton *)GetDlgItem(IDC_RADIO_CUSTOM_BROWSER))->GetCheck()){ + CFileName strBrowser; + GetDlgItemText(IDC_EDIT_BROWSER,strBrowser); + if(strBrowser.IsEmpty() || !strBrowser.Exists()){ + CUtils::MessageBoxF(_T("If you wish to use a custom browser you must specify a valid executable")); + GetDlgItem(IDC_EDIT_BROWSER)->SetFocus(); + + return; + } + pDoc->m_strBrowser=strBrowser; + pDoc->m_eUseCustomBrowser=CConfigToolDoc::CustomExternal; + } else if (((CButton *)GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER))->GetCheck()){ + pDoc->m_eUseCustomBrowser=CConfigToolDoc::AssociatedExternal; + } else { + pDoc->m_eUseCustomBrowser=CConfigToolDoc::Internal; + } + + pDoc->m_bUseCustomViewer=((CButton *)GetDlgItem(IDC_RADIO_CUSTOM))->GetCheck(); + if(pDoc->m_bUseCustomViewer){ + CFileName strViewer; + GetDlgItemText(IDC_EDIT,strViewer); + if(strViewer.IsEmpty() || !strViewer.IsFile()){ + CUtils::MessageBoxF(_T("If you wish to use a custom viewer you must specify a valid executable")); + GetDlgItem(IDC_EDIT)->SetFocus(); + + return; + } + pDoc->m_strViewer=strViewer; + } + + bool bHex=((CButton *)GetDlgItem(IDC_RADIO_HEXADECIMAL))->GetCheck(); + if(bHex!=pDoc->m_bHex){ + pDoc->m_bHex=bHex; + pDoc->UpdateAllViews(0,CConfigToolDoc::IntFormatChanged); + } + + bool bMacros=((CButton *)GetDlgItem(IDC_RADIO_MACRO_NAMES))->GetCheck(); + if(bMacros!=pDoc->m_bMacroNames){ + pDoc->m_bMacroNames=bMacros; + pDoc->UpdateAllViews(0,CConfigToolDoc::NameFormatChanged); + } + + CeCosDialog::OnOK(); +} + +void CViewOptions::OnRadioAssociated() +{ + + GetDlgItem(IDC_EDIT)->EnableWindow(FALSE); + GetDlgItem(IDC_BROWSE)->EnableWindow(FALSE); +} + +void CViewOptions::OnRadioCustom() +{ + + GetDlgItem(IDC_EDIT)->EnableWindow(TRUE); + GetDlgItem(IDC_BROWSE)->EnableWindow(TRUE); +} + +void CViewOptions::OnBrowse() +{ + CFileDialog dlg(TRUE, _T("exe"), _T(""), OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, + _T("Executables (*.exe;*.bat;*.com)|*.exe;*.bat;*.com")); + if(IDOK==dlg.DoModal()){ + SetDlgItemText(IDC_EDIT,dlg.GetPathName()); + } +} + +BOOL CViewOptions::OnInitDialog() +{ + CComboBox *pCombo=(CComboBox *)GetDlgItem(IDC_PANECOMBO); + CMainFrame *pMain=CConfigTool::GetMain(); + for(int i=0;i<CMainFrame::PaneTypeMax;i++){ + if(i==CMainFrame::Control || i==CMainFrame::Output || i==CMainFrame::ShortDesc){ + int nIndex=pCombo->AddString(pMain->GetPaneName((CMainFrame::PaneType)i)); + pCombo->SetItemData(nIndex,i); + } + } + pCombo->SetCurSel(0); + + CeCosDialog::OnInitDialog(); + + if(!strHeaderfileAssociation.IsEmpty()){ + CString str1; + str1.Format(_T("%s (%s)"),_T("Associated viewer"),strHeaderfileAssociation); + SetDlgItemText(IDC_RADIO_ASSOCIATED,str1); + } else { + SetDlgItemText(IDC_RADIO_ASSOCIATED,_T("Associated viewer")); + } + + // Compute the association with doc (.htm) files + + if(CConfigToolDoc::DefaultExternalBrowser().IsEmpty()){ + SetDlgItemText(IDC_RADIO_ASSOCIATED_BROWSER,_T("Associated browser")); + } else { + CString str1; + str1.Format(_T("%s (%s)"),_T("Associated browser"),CConfigToolDoc::DefaultExternalBrowser().Tail()); + SetDlgItemText(IDC_RADIO_ASSOCIATED_BROWSER,str1); + } + + CConfigToolDoc*pDoc=CConfigTool::GetConfigToolDoc(); + if(strHeaderfileAssociation.IsEmpty()){ + GetDlgItem(IDC_RADIO_ASSOCIATED)->EnableWindow(FALSE); + GetDlgItem(IDC_BROWSE)->EnableWindow(TRUE); + ((CButton *)GetDlgItem(IDC_RADIO_CUSTOM))->SetCheck(TRUE); + } else { + ((CButton *)GetDlgItem(pDoc->m_bUseCustomViewer?IDC_RADIO_CUSTOM:IDC_RADIO_ASSOCIATED))->SetCheck(TRUE); + GetDlgItem(IDC_EDIT)->EnableWindow(pDoc->m_bUseCustomViewer); + GetDlgItem(IDC_BROWSE)->EnableWindow(pDoc->m_bUseCustomViewer); + } + SetDlgItemText(IDC_EDIT,pDoc->m_strViewer); + + if(CConfigToolDoc::DefaultExternalBrowser().IsEmpty()){ + GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER)->EnableWindow(FALSE); + GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE); + if(CConfigToolDoc::AssociatedExternal==pDoc->m_eUseCustomBrowser){ + pDoc->m_eUseCustomBrowser=CConfigToolDoc::CustomExternal; + } + } + + switch(pDoc->m_eUseCustomBrowser){ + case CConfigToolDoc::Internal: + ((CButton *)GetDlgItem(IDC_RADIO_INTERNAL_BROWSER))->SetCheck(TRUE); + break; + case CConfigToolDoc::AssociatedExternal: + ((CButton *)GetDlgItem(IDC_RADIO_ASSOCIATED_BROWSER))->SetCheck(TRUE); + break; + case CConfigToolDoc::CustomExternal: + ((CButton *)GetDlgItem(IDC_RADIO_CUSTOM_BROWSER))->SetCheck(TRUE); + GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(TRUE); + GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE); + break; + default: + ASSERT(FALSE); + } + + SetDlgItemText(IDC_EDIT_BROWSER,pDoc->m_strBrowser); + + ((CButton *)GetDlgItem(IDC_RADIO_DECIMAL))->SetCheck(!pDoc->m_bHex); + ((CButton *)GetDlgItem(IDC_RADIO_DESCRIPTIVE_NAMES))->SetCheck(!pDoc->m_bMacroNames); + ((CButton *)GetDlgItem(IDC_RADIO_HEXADECIMAL))->SetCheck(pDoc->m_bHex); + ((CButton *)GetDlgItem(IDC_RADIO_MACRO_NAMES))->SetCheck(pDoc->m_bMacroNames); + + UpdateData(FALSE); + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void CViewOptions::OnRadioInternalBrowser() +{ + + GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(FALSE); + GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(FALSE); +} + +void CViewOptions::OnRadioAssociatedBrowser() +{ + + GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(FALSE); + GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(FALSE); +} + +void CViewOptions::OnRadioCustomBrowser() +{ + + GetDlgItem(IDC_EDIT_BROWSER)->EnableWindow(TRUE); + GetDlgItem(IDC_BROWSE_BROWSER)->EnableWindow(TRUE); +} + +void CViewOptions::OnBrowseBrowser() +{ + CFileDialog dlg(TRUE, _T("exe"), _T(""), OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, + _T("Executables (*.exe;*.bat;*.com)|*.exe;*.bat;*.com")); + if(IDOK==dlg.DoModal()){ + SetDlgItemText(IDC_EDIT_BROWSER,dlg.GetPathName()); + } + +} + +void CViewOptions::OnFont() +{ + LOGFONT lf; + CMainFrame *pMain=CConfigTool::GetMain(); + CComboBox *pCombo=(CComboBox *)GetDlgItem(IDC_PANECOMBO); + int nSel=pCombo->GetCurSel(); + CMainFrame::PaneType pane=(CMainFrame::PaneType)pCombo->GetItemData(nSel); + pMain->GetPaneFont(pane).GetLogFont(&lf); + CFontDialog dlg(&lf); + if(IDOK==dlg.DoModal()){ + + m_FontChosen=pane; + memcpy(&m_lf,dlg.m_cf.lpLogFont, sizeof LOGFONT); + } +} + +void CViewOptions::OnSelchangePanecombo() +{ + if(CMainFrame::PaneTypeMax!=m_FontChosen){ + CString str; + ((CComboBox *)GetDlgItem(IDC_PANECOMBO))->GetLBText(m_FontChosen,str); + if(IDYES==CUtils::MessageBoxFT(MB_YESNO,_T("Apply font changes to %s pane?"),(LPCTSTR)str)){ + CMainFrame *pMain=CConfigTool::GetMain(); + pMain->SetPaneFont(m_FontChosen, m_lf); + } + m_FontChosen=CMainFrame::PaneTypeMax; + } +} + +CFileName CViewOptions::HeaderFileAssociation() +{ + // Compute the association with header (.h) files + const CFileName strFile(CFileName::GetTempPath()+_T("tmp.h")); + CFileName strExe; + CFile f; + if(f.Open(strFile,CFile::modeCreate|CFile::modeWrite)){ + f.Close(); + bool rc=((int)FindExecutable(strFile,_T("."),strExe.GetBuffer(MAX_PATH))>32); + strExe.ReleaseBuffer(); + if(rc){ + strExe=strExe.Tail(); + } else { + strExe=_T(""); + } + ::DeleteFile(strFile); + } + return strExe; + +}
