version 1.2, 2000/12/15 07:55:03 |
version 1.14, 2005/10/03 00:07:53 |
|
|
#include "asir32guiDoc.h" |
#include "asir32guiDoc.h" |
#include "asir32guiView.h" |
#include "asir32guiView.h" |
#include "FatalDialog.h" |
#include "FatalDialog.h" |
|
#include <direct.h> |
|
#include <io.h> |
|
|
#ifdef _DEBUG |
#ifdef _DEBUG |
#define new DEBUG_NEW |
#define new DEBUG_NEW |
|
|
static char THIS_FILE[] = __FILE__; |
static char THIS_FILE[] = __FILE__; |
#endif |
#endif |
|
|
const WindowHeight = 200; |
// const TextBufferSize = 32768; |
const WindowWidth = 400; |
const TextBufferSize = 16384; |
const TextBufferSize = 32768; |
|
|
|
CAsir32guiView *theView; |
CAsir32guiView *theView; |
|
|
Line 64 BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView) |
|
Line 65 BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView) |
|
ON_COMMAND(ID_ASIRHELP, OnAsirhelp) |
ON_COMMAND(ID_ASIRHELP, OnAsirhelp) |
ON_UPDATE_COMMAND_UI(ID_FILE_LOG, OnUpdateFileLog) |
ON_UPDATE_COMMAND_UI(ID_FILE_LOG, OnUpdateFileLog) |
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) |
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) |
|
ON_COMMAND(IDR_FONT, OnFont) |
|
ON_WM_CREATE() |
|
ON_COMMAND(ID_CONTRIBHELP, OnContribhelp) |
|
ON_WM_SIZE() |
|
ON_COMMAND(ID_DSOLV, OnDsolv) |
|
ON_COMMAND(ID_GNUPLOT, OnGnuplot) |
|
ON_COMMAND(ID_OKDIFF, OnOkdiff) |
|
ON_COMMAND(ID_OKDMODULE, OnOkdmodule) |
|
ON_COMMAND(ID_OM, OnOm) |
|
ON_COMMAND(ID_PFPCOH, OnPfpcoh) |
|
ON_COMMAND(ID_PLUCKER, OnPlucker) |
|
ON_COMMAND(ID_SM1, OnSm1) |
|
ON_COMMAND(ID_TIGERS, OnTigers) |
|
ON_COMMAND(ID_TODOPARAMETRIZE, OnTodoparametrize) |
//}}AFX_MSG_MAP |
//}}AFX_MSG_MAP |
// 標準印刷コマンド |
// 標準印刷コマンド |
// ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint) |
// ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint) |
Line 84 CAsir32guiView::CAsir32guiView() |
|
Line 99 CAsir32guiView::CAsir32guiView() |
|
read_input_history(); |
read_input_history(); |
DebugMode = 0; |
DebugMode = 0; |
DebugInMain = 0; |
DebugInMain = 0; |
MaxLineLength = 80; |
// MaxLineLength = 80; |
LogStart = 0; |
LogStart = 0; |
Logging = 0; |
Logging = 0; |
Logfp = NULL; |
Logfp = NULL; |
Line 163 CAsir32guiDoc* CAsir32guiView::GetDocument() // 非デバ |
|
Line 178 CAsir32guiDoc* CAsir32guiView::GetDocument() // 非デバ |
|
|
|
void CAsir32guiView::PutChar(int c) |
void CAsir32guiView::PutChar(int c) |
{ |
{ |
int i; |
int i,len; |
char buf[2]; |
char buf[2]; |
|
|
|
if ( EndPos >= sizeof(Buffer)-1 ) { |
|
Beep(); return; |
|
} |
for ( i = EndPos-1; i >= CurrentPos; i-- ) |
for ( i = EndPos-1; i >= CurrentPos; i-- ) |
Buffer[i+1] = Buffer[i]; |
Buffer[i+1] = Buffer[i]; |
Buffer[CurrentPos] = (char)c; |
Buffer[CurrentPos] = (char)c; |
buf[0] = (char)c; buf[1] = 0; |
// buf[0] = (char)c; buf[1] = 0; |
Insert(buf,FALSE); |
// Insert(buf,FALSE); |
|
len = GetWindowTextLength(); |
|
if ( len+1 >= TextBufferSize ) |
|
DeleteTop(); |
|
CEditView::OnChar(c, 1, 0); |
CurrentPos++; |
CurrentPos++; |
EndPos++; |
EndPos++; |
} |
} |
Line 235 void CAsir32guiView::DeleteTop() |
|
Line 257 void CAsir32guiView::DeleteTop() |
|
} |
} |
} |
} |
if ( Logging ) { |
if ( Logging ) { |
len1 = (len0 - len - LogStart); |
if ( len < LogStart ) |
if ( len1 > 0 ) { |
LogStart -= len; |
fwrite(buf+LogStart,1,len1,Logfp); |
else { |
LogStart = 0; |
fwrite(buf+LogStart,1,len-LogStart,Logfp); |
} else |
LogStart = 0; |
LogStart = -len1; |
} |
} |
} |
UnlockBuffer(); |
UnlockBuffer(); |
if ( q ) { |
if ( q ) { |
Line 278 void CAsir32guiView::Beep(void) { |
|
Line 300 void CAsir32guiView::Beep(void) { |
|
} |
} |
|
|
void CAsir32guiView::Paste(void) { |
void CAsir32guiView::Paste(void) { |
char buf[2*BUFSIZ]; |
char buf[2*BUFSIZ]; |
const char *src; |
const char *src; |
char c; |
char c; |
int i,j,l; |
int i,j,l; |
HGLOBAL hClip; |
HGLOBAL hClip; |
|
|
if ( asirgui_kind == ASIRGUI_MESSAGE ) { |
if ( asirgui_kind == ASIRGUI_MESSAGE ) { |
Beep(); return; |
Beep(); return; |
} |
} |
|
|
if ( OpenClipboard() == FALSE ) { |
if ( OpenClipboard() == FALSE ) { |
Beep(); return; |
Beep(); return; |
} |
} |
hClip = GetClipboardData(CF_TEXT); |
hClip = GetClipboardData(CF_TEXT); |
src = (const char *)::GlobalLock(hClip); |
src = (const char *)::GlobalLock(hClip); |
if ( !src || (l = strlen(src)) >= 2*BUFSIZ ) { |
if ( !src || (l=strlen(src)) >= sizeof(Buffer)-EndPos ) { |
::CloseClipboard(); |
::CloseClipboard(); |
Beep(); return; |
Beep(); return; |
} |
} |
for ( i = j = 0; i < l; i++ ) |
for ( i = j = 0; i < l; i++ ) |
if ( (c = src[i]) != '\n' && c != '\r' ) |
if ( (c = src[i]) != '\n' && c != '\r' ) |
buf[j++] = c; |
buf[j++] = c; |
buf[j] = 0; |
buf[j] = 0; |
::GlobalUnlock(hClip); |
::GlobalUnlock(hClip); |
::CloseClipboard(); |
::CloseClipboard(); |
GetEditCtrl().ReplaceSel(buf); |
GetEditCtrl().ReplaceSel(buf); |
strncpy(Buffer+EndPos,buf,j); |
l = strlen(buf); |
EndPos += j; CurrentPos = EndPos; |
for ( i = EndPos-1; i >= CurrentPos; i-- ) |
|
Buffer[i+l] = Buffer[i]; |
|
for ( j = 0, i = CurrentPos; j < l; j++, i++ ) |
|
Buffer[i] = buf[j]; |
|
EndPos += l; CurrentPos += l; |
} |
} |
|
|
#define CTRL(c) (c)&0x1f |
#define CTRL(c) (c)&0x1f |
Line 344 void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, |
|
Line 370 void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, |
|
{ |
{ |
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください |
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください |
char *exp_result; |
char *exp_result; |
|
char tmp[BUFSIZ]; |
|
|
if ( asirgui_kind == ASIRGUI_MESSAGE ) { |
if ( asirgui_kind == ASIRGUI_MESSAGE ) { |
Beep(); return; |
Beep(); return; |
Line 404 void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, |
|
Line 431 void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, |
|
case CTRL('C'): |
case CTRL('C'): |
send_intr(); |
send_intr(); |
/* wake up the engine */ |
/* wake up the engine */ |
put_line(""); |
tmp[0] = 0; |
|
put_line(tmp); |
return; |
return; |
default : |
default : |
if ( nChar >= 0x20 && nChar < 0x7f ) |
if ( nChar >= 0x20 && nChar < 0x7f ) |
Line 436 void CAsir32guiView::OnFileOpen() |
|
Line 464 void CAsir32guiView::OnFileOpen() |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
char cmd[BUFSIZ*2]; // XXX |
char cmd[BUFSIZ*2]; // XXX |
char *p; |
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); |
CFileDialog fileDialog(TRUE); |
|
fileDialog.m_ofn.lpstrInitialDir = prevdir; |
if ( fileDialog.DoModal() == IDOK ) { |
if ( fileDialog.DoModal() == IDOK ) { |
CString pathName = fileDialog.GetPathName(); |
CString pathName = fileDialog.GetPathName(); |
sprintf(cmd,"load(\"%s\");",pathName); |
sprintf(cmd,"load(\"%s\");",pathName); |
Line 445 void CAsir32guiView::OnFileOpen() |
|
Line 482 void CAsir32guiView::OnFileOpen() |
|
if ( *p == '\\' ) |
if ( *p == '\\' ) |
*p = '/'; |
*p = '/'; |
put_line(cmd); |
put_line(cmd); |
|
p = strrchr(pathName,'\\'); |
|
if ( p ) { |
|
*p = 0; |
|
strcpy(prevdir,pathName); |
|
} |
} |
} |
} |
} |
|
|
Line 454 void CAsir32guiView::OnAsirhelp() |
|
Line 496 void CAsir32guiView::OnAsirhelp() |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
get_rootdir(root,sizeof(root),errmsg); |
get_rootdir(root,sizeof(root),errmsg); |
sprintf(helpfile,"%s\\bin\\asirhelp.chm",root); |
sprintf(helpfile,"%s\\help\\asirhelp.chm",root); |
HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
} |
} |
|
|
void CAsir32guiView::OnFileLog() |
void CAsir32guiView::OnFileLog() |
Line 494 void CAsir32guiView::OnEditPaste() |
|
Line 536 void CAsir32guiView::OnEditPaste() |
|
{ |
{ |
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
Paste(); |
Paste(); |
|
} |
|
|
|
void CAsir32guiView::UpdateMetrics() |
|
{ |
|
TEXTMETRIC tm; |
|
RECT r; |
|
|
|
GetEditCtrl().GetRect(&r); |
|
CDC *pDC = GetDC(); |
|
pDC->SelectObject(GetFont()); |
|
pDC->GetTextMetrics(&tm); |
|
MaxLineLength = (r.right-r.left)/tm.tmAveCharWidth-1; |
|
} |
|
|
|
void CAsir32guiView::OnFont() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
int ret; |
|
LOGFONT lf; |
|
|
|
GetFont()->GetLogFont(&lf); |
|
CFontDialog fd(&lf,CF_EFFECTS | CF_SCREENFONTS | CF_FIXEDPITCHONLY); |
|
static CFont *f = 0; |
|
|
|
ret = fd.DoModal(); |
|
if ( ret == IDOK ) { |
|
fd.GetCurrentFont(&lf); |
|
if ( f ) |
|
delete f; |
|
f = new CFont; |
|
f->CreateFontIndirect(&lf); |
|
SetFont(f); |
|
UpdateMetrics(); |
|
} |
|
} |
|
|
|
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); |
|
UpdateMetrics(); |
|
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\\help\\cmanhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
} |
|
|
|
void CAsir32guiView::OnSize(UINT nType, int cx, int cy) |
|
{ |
|
CEditView::OnSize(nType, cx, cy); |
|
|
|
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください |
|
UpdateMetrics(); |
|
} |
|
|
|
void CAsir32guiView::OnDsolv() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\dsolvhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
} |
|
|
|
void CAsir32guiView::OnGnuplot() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\gnuplothelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnOkdiff() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\ok_diffhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnOkdmodule() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\ok_dmodulehelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnOm() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\omhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnPfpcoh() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\pfpcohhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnPlucker() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\pluckerhelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnSm1() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\sm1help.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnTigers() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\tigershelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
|
} |
|
|
|
void CAsir32guiView::OnTodoparametrize() |
|
{ |
|
// TODO: この位置にコマンド ハンドラ用のコードを追加してください |
|
char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; |
|
|
|
get_rootdir(root,sizeof(root),errmsg); |
|
sprintf(helpfile,"%s\\help\\todo_parametrizehelp.chm",root); |
|
::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); |
|
|
} |
} |