=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.7 diff -u -p -r1.1.1.1 -r1.7 --- OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2000/11/22 06:14:29 1.1.1.1 +++ OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2002/08/14 00:47:51 1.7 @@ -7,6 +7,8 @@ #include "asir32guiDoc.h" #include "asir32guiView.h" #include "FatalDialog.h" +#include +#include #ifdef _DEBUG #define new DEBUG_NEW @@ -14,9 +16,8 @@ static char THIS_FILE[] = __FILE__; #endif -const WindowHeight = 200; -const WindowWidth = 400; -const TextBufferSize = 32768; +// const TextBufferSize = 32768; +const TextBufferSize = 16384; CAsir32guiView *theView; @@ -35,6 +36,7 @@ void insert_to_theView(char *); void get_rootdir(char *,int,char *); extern int bigfloat, prtime, prresult; extern char *asir_libdir; +extern int asirgui_kind; void insert_to_theView(char *str) { @@ -63,6 +65,10 @@ BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView) ON_COMMAND(ID_ASIRHELP, OnAsirhelp) ON_UPDATE_COMMAND_UI(ID_FILE_LOG, OnUpdateFileLog) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) + ON_COMMAND(IDR_FONT, OnFont) + ON_WM_CREATE() + ON_COMMAND(ID_CONTRIBHELP, OnContribhelp) + ON_UPDATE_COMMAND_UI(ID_CONTRIBHELP, OnUpdateContribhelp) //}}AFX_MSG_MAP // 標準印刷コマンド // ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint) @@ -234,12 +240,12 @@ void CAsir32guiView::DeleteTop() } } if ( Logging ) { - len1 = (len0 - len - LogStart); - if ( len1 > 0 ) { - fwrite(buf+LogStart,1,len1,Logfp); - LogStart = 0; - } else - LogStart = -len1; + if ( len < LogStart ) + LogStart -= len; + else { + fwrite(buf+LogStart,1,len-LogStart,Logfp); + LogStart = 0; + } } UnlockBuffer(); if ( q ) { @@ -283,6 +289,10 @@ void CAsir32guiView::Paste(void) { int i,j,l; HGLOBAL hClip; + if ( asirgui_kind == ASIRGUI_MESSAGE ) { + Beep(); return; + } + if ( OpenClipboard() == FALSE ) { Beep(); return; } @@ -340,6 +350,10 @@ void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください char *exp_result; + if ( asirgui_kind == ASIRGUI_MESSAGE ) { + Beep(); return; + } + switch ( nChar ) { case CTRL('M'): case CTRL('J'): UpdateCursor(EndPos); @@ -427,7 +441,15 @@ void CAsir32guiView::OnFileOpen() // TODO: この位置にコマンド ハンドラ用のコードを追加してください char cmd[BUFSIZ*2]; // XXX char *p; + static char errmsg[BUFSIZ]; + static char prevdir[BUFSIZ]; + if ( !prevdir[0] ) { + get_rootdir(prevdir,sizeof(prevdir),errmsg); + strcat(prevdir,"\\lib"); + } + + _chdir(prevdir); CFileDialog fileDialog(TRUE); if ( fileDialog.DoModal() == IDOK ) { CString pathName = fileDialog.GetPathName(); @@ -436,6 +458,11 @@ void CAsir32guiView::OnFileOpen() if ( *p == '\\' ) *p = '/'; put_line(cmd); + p = strrchr(pathName,'\\'); + if ( p ) { + *p = 0; + strcpy(prevdir,pathName); + } } } @@ -485,4 +512,69 @@ void CAsir32guiView::OnEditPaste() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください Paste(); +} + +void CAsir32guiView::OnFont() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + int ret; + CFontDialog fd(NULL,CF_EFFECTS | CF_SCREENFONTS | CF_FIXEDPITCHONLY); + static CFont *f = 0; + LOGFONT lf; + + ret = fd.DoModal(); + if ( ret == IDOK ) { + fd.GetCurrentFont(&lf); + if ( f ) + delete f; + f = new CFont; + f->CreateFontIndirect(&lf); + SetFont(f); + } +} + +int CAsir32guiView::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CEditView::OnCreate(lpCreateStruct) == -1) + return -1; + + // TODO: この位置に固有の作成用コードを追加してください + + LOGFONT logFont; memset(&logFont, 0, sizeof(LOGFONT)); + logFont.lfHeight = 20; + logFont.lfCharSet = DEFAULT_CHARSET; + strcpy(logFont.lfFaceName, "Terminal"); + CFont *f = new CFont; + f->CreateFontIndirect(&logFont); + SetFont(f); + GetEditCtrl().LimitText(nMaxSize); + GetEditCtrl().SetTabStops(m_nTabStops); + + return 0; +} + +void CAsir32guiView::OnContribhelp() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; + + get_rootdir(root,sizeof(root),errmsg); + sprintf(helpfile,"%s\\bin\\cmanhelp.chm",root); + HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); +} + +void CAsir32guiView::OnUpdateContribhelp(CCmdUI* pCmdUI) +{ + // TODO: この位置に command update UI ハンドラ用のコードを追加してください + char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; + + if ( getenv("OpenXM_WIN_ROOT") ) { + get_rootdir(root,sizeof(root),errmsg); + sprintf(helpfile,"%s\\bin\\cmanhelp.chm",root); + if ( _access(helpfile,04) != -1 ) { + pCmdUI->Enable( TRUE ); + return; + } + } + pCmdUI->Enable( FALSE ); }