=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp,v retrieving revision 1.10 retrieving revision 1.30 diff -u -p -r1.10 -r1.30 --- OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2005/05/10 09:52:12 1.10 +++ OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2013/12/09 00:51:20 1.30 @@ -17,7 +17,7 @@ static char THIS_FILE[] = __FILE__; #endif // const TextBufferSize = 32768; -const TextBufferSize = 16384; +const int TextBufferSize = 16384; CAsir32guiView *theView; @@ -33,7 +33,8 @@ void loadfile(char *); void put_line(char *); void send_intr(void); void insert_to_theView(char *); -void get_rootdir(char *,int,char *); +BOOL get_rootdir(char *,int,char *); +const char *get_helpdir(); extern int bigfloat, prtime, prresult; extern char *asir_libdir; extern int asirgui_kind; @@ -68,8 +69,22 @@ BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView) ON_COMMAND(IDR_FONT, OnFont) ON_WM_CREATE() ON_COMMAND(ID_CONTRIBHELP, OnContribhelp) - ON_UPDATE_COMMAND_UI(ID_CONTRIBHELP, OnUpdateContribhelp) 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) + ON_COMMAND(ID_NOROMATRIX, OnNoromatrix) + ON_COMMAND(ID_NOROMWL, OnNoromwl) + ON_COMMAND(ID_NNNDBF, OnNnndbf) + ON_COMMAND(ID_NOROPD, OnNoropd) + ON_COMMAND(ID_NSTWLG, OnNstwistedlog) //}}AFX_MSG_MAP // 標準印刷コマンド // ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint) @@ -84,7 +99,6 @@ CAsir32guiView::CAsir32guiView() { // TODO: この場所に構築用のコードを追加してください。 static int tmpView_created = 0; - char errmsg[BUFSIZ]; init_input_history(); read_input_history(); @@ -96,6 +110,10 @@ CAsir32guiView::CAsir32guiView() Logfp = NULL; ResetIndex(); theView = this; +#if _MSC_VER > 1300 + /* VS2003.NET or later */ + (AfxGetApp())->EnableHtmlHelp(); +#endif } CAsir32guiView::~CAsir32guiView() @@ -194,9 +212,7 @@ void CAsir32guiView::DeleteChar(int count) { if ( count > (EndPos-CurrentPos) ) count = EndPos - CurrentPos; - if ( count == 0 ) - Beep(); - else { + if ( count > 0 ) { EndPos -= count; for ( i = CurrentPos; i < EndPos; i++ ) Buffer[i] = Buffer[i+count]; @@ -235,7 +251,7 @@ void CAsir32guiView::DeleteTop() const char *p,*q; const char *buf; char null = 0; - int len,len0,len1; + int len,len0; buf = LockBuffer(); len0 = len = strlen(buf); @@ -361,6 +377,8 @@ void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, { // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください char *exp_result; + char tmp[BUFSIZ]; + int i; if ( asirgui_kind == ASIRGUI_MESSAGE ) { Beep(); return; @@ -421,8 +439,13 @@ void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, case CTRL('C'): send_intr(); /* wake up the engine */ - put_line(""); + tmp[0] = 0; + put_line(tmp); return; + case CTRL('Y'): + Paste(); return; + case CTRL('I'): + return; default : if ( nChar >= 0x20 && nChar < 0x7f ) PutChar(nChar); @@ -463,6 +486,7 @@ void CAsir32guiView::OnFileOpen() _chdir(prevdir); CFileDialog fileDialog(TRUE); + fileDialog.m_ofn.lpstrInitialDir = prevdir; if ( fileDialog.DoModal() == IDOK ) { CString pathName = fileDialog.GetPathName(); sprintf(cmd,"load(\"%s\");",pathName); @@ -470,22 +494,40 @@ void CAsir32guiView::OnFileOpen() if ( *p == '\\' ) *p = '/'; put_line(cmd); - p = strrchr(pathName,'\\'); + strcpy(cmd,pathName); + p = strrchr(cmd,'\\'); if ( p ) { *p = 0; - strcpy(prevdir,pathName); + strcpy(prevdir,cmd); } } } +void CAsir32guiView::viewHtmlHelp(char *help) +{ + char *helpfile; + char fmt[] = "%s\\%shelp.chm"; + const char *dir = get_helpdir(); + helpfile = (char *)malloc(sizeof(fmt) + strlen(dir) + strlen(help)); + sprintf(helpfile,fmt,dir,help); +#if _MSC_VER < 1300 + /* Visual C++ 6.0 */ + ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); +#else + CWinApp *top = AfxGetApp(); + top->SetHelpMode(AFX_HELP_TYPE::afxHTMLHelp); + if (top->m_pszHelpFilePath) { + free((void*)top->m_pszHelpFilePath); + } + top->m_pszHelpFilePath = helpfile; + HtmlHelp(HH_DISPLAY_TOPIC, 0); +#endif +} + void CAsir32guiView::OnAsirhelp() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\bin\\asirhelp.chm",root); - HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); + viewHtmlHelp("asir"); } void CAsir32guiView::OnFileLog() @@ -541,7 +583,7 @@ void CAsir32guiView::UpdateMetrics() void CAsir32guiView::OnFont() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - int ret; + INT_PTR ret; LOGFONT lf; GetFont()->GetLogFont(&lf); @@ -584,33 +626,133 @@ int CAsir32guiView::OnCreate(LPCREATESTRUCT lpCreateSt void CAsir32guiView::OnContribhelp() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; + viewHtmlHelp("cman"); +} - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\bin\\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::OnUpdateContribhelp(CCmdUI* pCmdUI) +void CAsir32guiView::OnDsolv() { - // TODO: この位置に command update UI ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("dsolv"); +} - 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 ); +void CAsir32guiView::OnGnuplot() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("gnuplot"); } -void CAsir32guiView::OnSize(UINT nType, int cx, int cy) +void CAsir32guiView::OnOkdiff() { - CEditView::OnSize(nType, cx, cy); + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("ok_diff"); +} + +void CAsir32guiView::OnOkdmodule() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("ok_dmodule"); +} + +void CAsir32guiView::OnOm() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("om"); +} + +void CAsir32guiView::OnPfpcoh() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("pfpcoh"); +} + +void CAsir32guiView::OnPlucker() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("plucker"); +} + +void CAsir32guiView::OnSm1() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("sm1"); +} + +void CAsir32guiView::OnTigers() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("tigers"); +} + +void CAsir32guiView::OnTodoparametrize() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("todo_parametrize"); +} + +void CAsir32guiView::OnNoromatrix() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("noro_matrix"); +} + +void CAsir32guiView::OnNoromwl() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("noro_mwl"); +} + +void CAsir32guiView::OnNoropd() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("noro_pd"); +} + +void CAsir32guiView::OnNnndbf() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("nn_ndbf"); +} + +void CAsir32guiView::OnNstwistedlog() +{ + // TODO: この位置にコマンド ハンドラ用のコードを追加してください + viewHtmlHelp("ns_twistedlog"); +} + +BOOL CAsir32guiView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) +{ + // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください - // TODO: この位置にメッセージ ハンドラ用のコードを追加してください - UpdateMetrics(); + BOOL ret = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); + FILE *fp = NULL; + char *temp; + char rootdir[BUFSIZ], errmsg[BUFSIZ], hndname[_MAX_PATH]; + + if ( asirgui_kind == ASIRGUI_MAIN ) { + if (get_rootdir(rootdir, BUFSIZ, errmsg)) { + sprintf(hndname, "%s\\bin\\asirgui.hnd", rootdir); + fp = fopen(hndname,"w"); + if ( fp ) { + fprintf(fp,"%d",(unsigned int)theView->m_hWnd); + fclose(fp); + } + } + if ( temp = getenv("TEMP") ) { + sprintf(hndname,"%s\\asirgui.hnd", temp); + fp = fopen(hndname,"w"); + if ( fp ) { + fprintf(fp,"%d",(unsigned int)theView->m_hWnd); + fclose(fp); + } + } + } + return ret; }