Mercurial > flash_v2
comparison host/tools/testtool/win32/OutputEdit.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 |
comparison
equal
deleted
inserted
replaced
| 75:41bf073c0c32 | 76:435cced73e2f |
|---|---|
| 1 //####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 // OutputEdit.cpp : implementation file | |
| 26 // | |
| 27 | |
| 28 #include "stdafx.h" | |
| 29 #include "OutputEdit.h" | |
| 30 #include "TestToolRes.h" // main symbols | |
| 31 | |
| 32 #ifdef _DEBUG | |
| 33 #define new DEBUG_NEW | |
| 34 #undef THIS_FILE | |
| 35 static char THIS_FILE[] = __FILE__; | |
| 36 #endif | |
| 37 | |
| 38 ///////////////////////////////////////////////////////////////////////////// | |
| 39 // COutputEdit | |
| 40 | |
| 41 COutputEdit::COutputEdit() | |
| 42 { | |
| 43 } | |
| 44 | |
| 45 COutputEdit::~COutputEdit() | |
| 46 { | |
| 47 } | |
| 48 | |
| 49 | |
| 50 BEGIN_MESSAGE_MAP(COutputEdit, CEdit) | |
| 51 //{{AFX_MSG_MAP(COutputEdit) | |
| 52 ON_WM_CONTEXTMENU() | |
| 53 ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll) | |
| 54 ON_COMMAND(ID_EDIT_COPY, OnEditCopy) | |
| 55 ON_COMMAND(ID_EDIT_CLEAR, OnEditClear) | |
| 56 ON_WM_CHAR() | |
| 57 ON_WM_SETFOCUS() | |
| 58 ON_WM_KILLFOCUS() | |
| 59 ON_COMMAND(ID_TT_EDIT_SAVE, OnEditSave) | |
| 60 //}}AFX_MSG_MAP | |
| 61 END_MESSAGE_MAP() | |
| 62 | |
| 63 ///////////////////////////////////////////////////////////////////////////// | |
| 64 // COutputEdit message handlers | |
| 65 | |
| 66 void COutputEdit::OnContextMenu(CWnd* pWnd, CPoint point) | |
| 67 { | |
| 68 UNUSED_ALWAYS(pWnd); | |
| 69 if(GetWindowTextLength()>0){ | |
| 70 CMenu menu; | |
| 71 menu.LoadMenu(IDR_TT_CONTEXTMENU2); | |
| 72 | |
| 73 CMenu *pPopup=menu.GetSubMenu(0); | |
| 74 | |
| 75 int nBeg, nEnd; | |
| 76 | |
| 77 GetSel( nBeg, nEnd ); | |
| 78 | |
| 79 if(nBeg==nEnd ){ | |
| 80 pPopup->EnableMenuItem(ID_EDIT_COPY,MF_BYCOMMAND|MF_GRAYED); | |
| 81 } | |
| 82 pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, point.x,point.y,this); | |
| 83 } | |
| 84 } | |
| 85 | |
| 86 void COutputEdit::OnEditSelectAll() | |
| 87 { | |
| 88 SetSel(0,-1); | |
| 89 } | |
| 90 | |
| 91 void COutputEdit::OnEditCopy() | |
| 92 { | |
| 93 Copy(); | |
| 94 } | |
| 95 | |
| 96 void COutputEdit::OnEditClear() | |
| 97 { | |
| 98 SetWindowText(_T("")); | |
| 99 } | |
| 100 | |
| 101 void COutputEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) | |
| 102 { | |
| 103 switch(nChar){ | |
| 104 case 1: // ctrl+A | |
| 105 OnEditSelectAll(); | |
| 106 break; | |
| 107 case 3: // ctrl+C | |
| 108 OnEditCopy(); | |
| 109 break; | |
| 110 default: | |
| 111 CEdit::OnChar(nChar, nRepCnt, nFlags); | |
| 112 break; | |
| 113 } | |
| 114 } | |
| 115 | |
| 116 // Control gets sent WM_SETSEL (0,0xffffffff) when property page is selected | |
| 117 // I don't know why, but this works around it: | |
| 118 void COutputEdit::OnSetFocus(CWnd* pOldWnd) | |
| 119 { | |
| 120 CEdit::OnSetFocus(pOldWnd); | |
| 121 SetSel(m_dwSel); | |
| 122 | |
| 123 } | |
| 124 | |
| 125 void COutputEdit::OnKillFocus(CWnd* pNewWnd) | |
| 126 { | |
| 127 m_dwSel=GetSel(); | |
| 128 CEdit::OnKillFocus(pNewWnd); | |
| 129 } | |
| 130 | |
| 131 void COutputEdit::OnEditSave() | |
| 132 { | |
| 133 CFileDialog dlg( FALSE, _T("log"), _T("Output"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, | |
| 134 _T("Log Files (*.log)|*.log|All Files (*.*)|*.*||")); | |
| 135 if(IDOK==dlg.DoModal()){ | |
| 136 TRY | |
| 137 { | |
| 138 CStdioFile f( dlg.GetPathName(), CFile::modeCreate | CFile::modeWrite ); | |
| 139 CString str; | |
| 140 GetWindowText(str); | |
| 141 f.WriteString(str); | |
| 142 f.Close(); | |
| 143 } | |
| 144 CATCH( CFileException, e ) | |
| 145 { | |
| 146 MessageBox(_T("Failed to write file")); | |
| 147 } | |
| 148 END_CATCH | |
| 149 } | |
| 150 | |
| 151 } |
