Annotation of OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp, Revision 1.33
1.1 noro 1: // asir32guiView.cpp : CAsir32guiView クラスの動作の定義を行います。
2: //
3:
4: #include "stdafx.h"
5:
6: #include "asir32gui.h"
7: #include "asir32guiDoc.h"
8: #include "asir32guiView.h"
9: #include "FatalDialog.h"
1.3 noro 10: #include <direct.h>
1.6 noro 11: #include <io.h>
1.1 noro 12:
13: #ifdef _DEBUG
14: #define new DEBUG_NEW
15: #undef THIS_FILE
16: static char THIS_FILE[] = __FILE__;
17: #endif
18:
1.5 noro 19: // const TextBufferSize = 32768;
1.19 ohara 20: const int TextBufferSize = 16384;
1.1 noro 21:
22: CAsir32guiView *theView;
23:
24: extern "C"
25: {
26: char *prev_hist(void), *next_hist(void), *search_hist(char *p);
27: void read_input_history(),write_input_history();
28: void init_input_history();
29: void add_hist(char *p), reset_traverse(void);
30: void asir_terminate(void);
31: void Main(int,char*[]);
32: void loadfile(char *);
33: void put_line(char *);
34: void send_intr(void);
35: void insert_to_theView(char *);
1.26 ohara 36: BOOL get_rootdir(char *,int,char *);
1.32 ohara 37: const char *get_locale_lang_iso639();
1.29 ohara 38: const char *get_helpdir();
1.1 noro 39: extern int bigfloat, prtime, prresult;
40: extern char *asir_libdir;
1.2 noro 41: extern int asirgui_kind;
1.1 noro 42:
43: void insert_to_theView(char *str)
44: {
45: (void)theView->Insert(str);
46: }
47: void flush_log()
48: {
49: if ( theView->Logging )
50: theView->OnFileLog();
51: }
52: }
53:
54: /////////////////////////////////////////////////////////////////////////////
55: // CAsir32guiView
56:
57: IMPLEMENT_DYNCREATE(CAsir32guiView, CEditView)
58:
59: BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView)
60: //{{AFX_MSG_MAP(CAsir32guiView)
61: ON_WM_KEYDOWN()
62: ON_WM_CHAR()
63: ON_WM_LBUTTONUP()
64: ON_WM_RBUTTONDOWN()
65: ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
66: ON_COMMAND(ID_FILE_LOG, OnFileLog)
67: ON_COMMAND(ID_ASIRHELP, OnAsirhelp)
1.33 ! ohara 68: ON_COMMAND(ID_VISIT_SITE, OnVisitSite)
1.1 noro 69: ON_UPDATE_COMMAND_UI(ID_FILE_LOG, OnUpdateFileLog)
70: ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
1.3 noro 71: ON_COMMAND(IDR_FONT, OnFont)
72: ON_WM_CREATE()
1.6 noro 73: ON_COMMAND(ID_CONTRIBHELP, OnContribhelp)
1.9 noro 74: ON_WM_SIZE()
1.11 noro 75: ON_COMMAND(ID_DSOLV, OnDsolv)
76: ON_COMMAND(ID_GNUPLOT, OnGnuplot)
77: ON_COMMAND(ID_OKDIFF, OnOkdiff)
78: ON_COMMAND(ID_OKDMODULE, OnOkdmodule)
79: ON_COMMAND(ID_OM, OnOm)
80: ON_COMMAND(ID_PFPCOH, OnPfpcoh)
81: ON_COMMAND(ID_PLUCKER, OnPlucker)
82: ON_COMMAND(ID_SM1, OnSm1)
83: ON_COMMAND(ID_TIGERS, OnTigers)
84: ON_COMMAND(ID_TODOPARAMETRIZE, OnTodoparametrize)
1.24 noro 85: ON_COMMAND(ID_NOROMATRIX, OnNoromatrix)
86: ON_COMMAND(ID_NOROMWL, OnNoromwl)
87: ON_COMMAND(ID_NNNDBF, OnNnndbf)
1.25 noro 88: ON_COMMAND(ID_NOROPD, OnNoropd)
89: ON_COMMAND(ID_NSTWLG, OnNstwistedlog)
1.1 noro 90: //}}AFX_MSG_MAP
91: // 標準印刷コマンド
92: // ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
93: // ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
94: // ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
95: END_MESSAGE_MAP()
96:
97: /////////////////////////////////////////////////////////////////////////////
98: // CAsir32guiView クラスの構築/消滅
99:
100: CAsir32guiView::CAsir32guiView()
101: {
102: // TODO: この場所に構築用のコードを追加してください。
103: static int tmpView_created = 0;
104:
105: init_input_history();
106: read_input_history();
107: DebugMode = 0;
108: DebugInMain = 0;
1.9 noro 109: // MaxLineLength = 80;
1.1 noro 110: LogStart = 0;
111: Logging = 0;
112: Logfp = NULL;
113: ResetIndex();
114: theView = this;
1.23 ohara 115: #if _MSC_VER > 1300
116: /* VS2003.NET or later */
117: (AfxGetApp())->EnableHtmlHelp();
118: #endif
1.1 noro 119: }
120:
121: CAsir32guiView::~CAsir32guiView()
122: {
123: write_input_history();
124: }
125:
126: BOOL CAsir32guiView::PreCreateWindow(CREATESTRUCT& cs)
127: {
128: // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
129: // 修正してください。
130:
131: m_dwDefaultStyle = dwStyleDefault & ~ES_AUTOHSCROLL ;
132: m_dwDefaultStyle &= ~WS_HSCROLL;
133: return CCtrlView::PreCreateWindow(cs);
134: }
135:
136: /////////////////////////////////////////////////////////////////////////////
137: // CAsir32guiView クラスの描画
138:
139: void CAsir32guiView::OnDraw(CDC* pDC)
140: {
141: CAsir32guiDoc* pDoc = GetDocument();
142: ASSERT_VALID(pDoc);
143:
144: // TODO: この場所にネイティブ データ用の描画コードを追加します。
145: }
146:
147: /////////////////////////////////////////////////////////////////////////////
148: // CAsir32guiView クラスの印刷
149:
150: BOOL CAsir32guiView::OnPreparePrinting(CPrintInfo* pInfo)
151: {
152: // デフォルトの印刷準備
153: return DoPreparePrinting(pInfo);
154: }
155:
156: void CAsir32guiView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
157: {
158: // TODO: 印刷前の特別な初期化処理を追加してください。
159: }
160:
161: void CAsir32guiView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
162: {
163: // TODO: 印刷後の後処理を追加してください。
164: }
165:
166: /////////////////////////////////////////////////////////////////////////////
167: // CAsir32guiView クラスの診断
168:
169: #ifdef _DEBUG
170: void CAsir32guiView::AssertValid() const
171: {
172: CEditView::AssertValid();
173: }
174:
175: void CAsir32guiView::Dump(CDumpContext& dc) const
176: {
177: CEditView::Dump(dc);
178: }
179:
180: CAsir32guiDoc* CAsir32guiView::GetDocument() // 非デバッグ バージョンはインラインです。
181: {
182: ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAsir32guiDoc)));
183: return (CAsir32guiDoc*)m_pDocument;
184: }
185: #endif //_DEBUG
186:
187: /////////////////////////////////////////////////////////////////////////////
188: // CAsir32guiView クラスのメッセージ ハンドラ
189:
190: void CAsir32guiView::PutChar(int c)
191: {
1.8 noro 192: int i,len;
1.1 noro 193: char buf[2];
194:
1.8 noro 195: if ( EndPos >= sizeof(Buffer)-1 ) {
196: Beep(); return;
197: }
1.1 noro 198: for ( i = EndPos-1; i >= CurrentPos; i-- )
1.8 noro 199: Buffer[i+1] = Buffer[i];
1.1 noro 200: Buffer[CurrentPos] = (char)c;
1.8 noro 201: // buf[0] = (char)c; buf[1] = 0;
202: // Insert(buf,FALSE);
203: len = GetWindowTextLength();
204: if ( len+1 >= TextBufferSize )
205: DeleteTop();
206: CEditView::OnChar(c, 1, 0);
1.1 noro 207: CurrentPos++;
208: EndPos++;
209: }
210:
211: void CAsir32guiView::DeleteChar(int count) {
212: int i,s,e;
213: char null = 0;
214:
215: if ( count > (EndPos-CurrentPos) )
216: count = EndPos - CurrentPos;
1.15 noro 217: if ( count > 0 ) {
1.1 noro 218: EndPos -= count;
219: for ( i = CurrentPos; i < EndPos; i++ )
220: Buffer[i] = Buffer[i+count];
221: GetEditCtrl().GetSel(s,e);
222: GetEditCtrl().SetSel(s,s+count);
223: GetEditCtrl().ReplaceSel(&null);
224: }
225: }
226:
227: void CAsir32guiView::Insert(char *buf,BOOL wrap)
228: {
229: char t[BUFSIZ*4];
230: char *p,*q,c;
231: int len;
232: int i;
233:
234: if ( wrap ) {
235: i = GetEditCtrl().LineLength(-1);
236: for ( p = t, q = buf; (c = *p++ = *q++) != 0; )
237: if ( c == '\r' ) {
238: *p++ = *q++; i = 0;
239: } else if ( (*q != '\r') && (++i == MaxLineLength) ) {
240: *p++ = '\r'; *p++ = '\r'; *p++ = '\n'; i = 0;
241: }
242: p = t;
243: } else
244: p = buf;
245: len = GetWindowTextLength();
246: if ( strlen(p) + len >= TextBufferSize )
247: DeleteTop();
248: GetEditCtrl().ReplaceSel(p);
249: }
250:
251: void CAsir32guiView::DeleteTop()
252: {
253: const char *p,*q;
254: const char *buf;
255: char null = 0;
1.20 ohara 256: int len,len0;
1.1 noro 257:
258: buf = LockBuffer();
259: len0 = len = strlen(buf);
260: for ( p = buf; len >= TextBufferSize/2; ) {
261: q = strchr(p,'\n');
262: if ( !q ) {
263: len = 0; break;
264: } else {
265: q++; len -= (q-p); p = q;
266: }
267: }
268: if ( Logging ) {
1.4 noro 269: if ( len < LogStart )
270: LogStart -= len;
271: else {
272: fwrite(buf+LogStart,1,len-LogStart,Logfp);
273: LogStart = 0;
274: }
1.1 noro 275: }
276: UnlockBuffer();
277: if ( q ) {
278: GetEditCtrl().SetSel(0,len);
279: GetEditCtrl().ReplaceSel(&null);
280: }
281: UpdateCursor(EndPos);
282: }
283:
284: void CAsir32guiView::UpdateCursor(int pos)
285: {
286: int s;
287: int len;
288:
289: if ( pos < 0 || pos > EndPos )
290: Beep();
291: else {
292: len = GetWindowTextLength();
293: CurrentPos = pos;
294: s = len-EndPos+CurrentPos;
295: GetEditCtrl().SetSel(s,s);
296: }
297: }
298:
299: void CAsir32guiView::ReplaceString(char *str)
300: {
301: UpdateCursor(0); DeleteChar(EndPos);
302: Insert(str,FALSE);
303: strcpy(Buffer,str);
304: EndPos = CurrentPos = strlen(str);
305: }
306:
307: void CAsir32guiView::Beep(void) {
308: ::MessageBeep(0xffffffff);
309: }
310:
311: void CAsir32guiView::Paste(void) {
1.8 noro 312: char buf[2*BUFSIZ];
313: const char *src;
314: char c;
315: int i,j,l;
316: HGLOBAL hClip;
317:
318: if ( asirgui_kind == ASIRGUI_MESSAGE ) {
319: Beep(); return;
320: }
1.2 noro 321:
1.8 noro 322: if ( OpenClipboard() == FALSE ) {
323: Beep(); return;
1.1 noro 324: }
325: hClip = GetClipboardData(CF_TEXT);
326: src = (const char *)::GlobalLock(hClip);
1.10 noro 327: if ( !src || (l=strlen(src)) >= sizeof(Buffer)-EndPos ) {
1.1 noro 328: ::CloseClipboard();
329: Beep(); return;
330: }
1.8 noro 331: for ( i = j = 0; i < l; i++ )
332: if ( (c = src[i]) != '\n' && c != '\r' )
333: buf[j++] = c;
334: buf[j] = 0;
1.1 noro 335: ::GlobalUnlock(hClip);
336: ::CloseClipboard();
337: GetEditCtrl().ReplaceSel(buf);
1.10 noro 338: l = strlen(buf);
339: for ( i = EndPos-1; i >= CurrentPos; i-- )
340: Buffer[i+l] = Buffer[i];
341: for ( j = 0, i = CurrentPos; j < l; j++, i++ )
342: Buffer[i] = buf[j];
343: EndPos += l; CurrentPos += l;
1.1 noro 344: }
345:
346: #define CTRL(c) (c)&0x1f
347:
348: void CAsir32guiView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
349: {
350: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
351: char *exp_result;
352:
353: switch ( nChar ) {
354: case VK_LEFT:
355: UpdateCursor(CurrentPos-1); return;
356: case VK_RIGHT:
357: UpdateCursor(CurrentPos+1); return;
358: case VK_DELETE:
359: DeleteChar(1); return;
360: case VK_UP:
361: if ( (exp_result = prev_hist()) != 0 )
362: ReplaceString(exp_result);
363: else
364: Beep();
365: return;
366: case VK_DOWN:
367: if ( (exp_result = next_hist()) != 0 )
368: ReplaceString(exp_result);
369: else
370: Beep();
371: return;
372: default:
373: break;
374: }
375: CEditView::OnKeyDown(nChar, nRepCnt, nFlags);
376: }
377:
378: void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
379: {
380: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
381: char *exp_result;
1.13 noro 382: char tmp[BUFSIZ];
1.27 noro 383: int i;
1.1 noro 384:
1.2 noro 385: if ( asirgui_kind == ASIRGUI_MESSAGE ) {
386: Beep(); return;
387: }
388:
1.1 noro 389: switch ( nChar ) {
390: case CTRL('M'): case CTRL('J'):
391: UpdateCursor(EndPos);
392: Buffer[EndPos] = 0;
393: reset_traverse();
394: if ( Buffer[0] == '!' ) {
395: exp_result = search_hist(Buffer+1);
396: if ( exp_result )
397: ReplaceString(exp_result);
398: else {
399: UpdateCursor(0); DeleteChar(EndPos); Beep();
400: }
401: return;
402: } else {
403: add_hist(Buffer);
404: put_line(Buffer);
405: ResetIndex();
406: nChar = CTRL('M');
407: }
408: break;
409: case CTRL('N'):
410: if ( (exp_result = next_hist()) != 0 )
411: ReplaceString(exp_result);
412: else
413: Beep();
414: return;
415: case CTRL('P'):
416: if ( (exp_result = prev_hist()) != 0 )
417: ReplaceString(exp_result);
418: else
419: Beep();
420: return;
421: case CTRL('A'):
422: UpdateCursor(0); return;
423: case CTRL('E'):
424: UpdateCursor(EndPos); return;
425: case CTRL('F'):
426: UpdateCursor(CurrentPos+1); return;
427: case CTRL('B'):
428: UpdateCursor(CurrentPos-1); return;
429: case CTRL('K'):
430: DeleteChar(EndPos-CurrentPos); return;
431: case CTRL('U'):
432: UpdateCursor(0); DeleteChar(EndPos); return;
433: case CTRL('D'):
434: DeleteChar(1); return;
435: case CTRL('H'):
436: if ( CurrentPos > 0 ) {
437: UpdateCursor(CurrentPos-1); DeleteChar(1);
438: } else
439: Beep();
440: return;
441: case CTRL('C'):
442: send_intr();
443: /* wake up the engine */
1.13 noro 444: tmp[0] = 0;
445: put_line(tmp);
1.1 noro 446: return;
1.27 noro 447: case CTRL('Y'):
448: Paste(); return;
449: case CTRL('I'):
450: return;
1.1 noro 451: default :
452: if ( nChar >= 0x20 && nChar < 0x7f )
453: PutChar(nChar);
454: else
455: Beep();
456: return;
457: }
458: CEditView::OnChar(nChar, nRepCnt, nFlags);
459: }
460:
461: void CAsir32guiView::OnLButtonUp(UINT nFlags, CPoint point)
462: {
463: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
464: GetEditCtrl().Copy(); UpdateCursor(EndPos);
465: CEditView::OnLButtonUp(nFlags, point);
466: }
467:
468: void CAsir32guiView::OnRButtonDown(UINT nFlags, CPoint point)
469: {
470: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
471: Paste();
472:
473: // CEditView::OnRButtonDown(nFlags, point);
474: }
475:
476: void CAsir32guiView::OnFileOpen()
477: {
478: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
479: char cmd[BUFSIZ*2]; // XXX
480: char *p;
1.3 noro 481: static char errmsg[BUFSIZ];
482: static char prevdir[BUFSIZ];
1.1 noro 483:
1.3 noro 484: if ( !prevdir[0] ) {
485: get_rootdir(prevdir,sizeof(prevdir),errmsg);
486: strcat(prevdir,"\\lib");
487: }
488:
489: _chdir(prevdir);
1.1 noro 490: CFileDialog fileDialog(TRUE);
1.14 noro 491: fileDialog.m_ofn.lpstrInitialDir = prevdir;
1.1 noro 492: if ( fileDialog.DoModal() == IDOK ) {
493: CString pathName = fileDialog.GetPathName();
494: sprintf(cmd,"load(\"%s\");",pathName);
495: for ( p = cmd; *p; p++ )
496: if ( *p == '\\' )
497: *p = '/';
498: put_line(cmd);
1.20 ohara 499: strcpy(cmd,pathName);
500: p = strrchr(cmd,'\\');
1.3 noro 501: if ( p ) {
502: *p = 0;
1.20 ohara 503: strcpy(prevdir,cmd);
1.3 noro 504: }
1.1 noro 505: }
506: }
1.29 ohara 507:
1.21 ohara 508: void CAsir32guiView::viewHtmlHelp(char *help)
509: {
1.23 ohara 510: char *helpfile;
1.29 ohara 511: char fmt[] = "%s\\%shelp.chm";
512: const char *dir = get_helpdir();
513: helpfile = (char *)malloc(sizeof(fmt) + strlen(dir) + strlen(help));
514: sprintf(helpfile,fmt,dir,help);
1.21 ohara 515: #if _MSC_VER < 1300
516: /* Visual C++ 6.0 */
517: ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0);
1.23 ohara 518: #else
519: CWinApp *top = AfxGetApp();
520: top->SetHelpMode(AFX_HELP_TYPE::afxHTMLHelp);
521: if (top->m_pszHelpFilePath) {
522: free((void*)top->m_pszHelpFilePath);
523: }
524: top->m_pszHelpFilePath = helpfile;
525: HtmlHelp(HH_DISPLAY_TOPIC, 0);
1.21 ohara 526: #endif
527: }
1.1 noro 528:
1.33 ! ohara 529: void CAsir32guiView::viewWeb(char *url)
! 530: {
! 531: ShellExecute(NULL,"open",url,NULL,NULL,SW_SHOWNORMAL);
! 532: }
! 533:
1.32 ohara 534: void CAsir32guiView::viewWebHelp(char *key)
535: {
536: char *base="http://www.math.kobe-u.ac.jp/OpenXM/Current/doc/";
537: char *url = (char *)malloc(strlen(base)+strlen(key)+1);
538: sprintf(url,"%s%s",base,key);
1.33 ! ohara 539: viewWeb(url);
1.32 ohara 540: free(url);
541: }
542:
1.1 noro 543: void CAsir32guiView::OnAsirhelp()
544: {
1.32 ohara 545: const char *lang = get_locale_lang_iso639();
546: if(strcmp(lang,"ja")==0) {
1.33 ! ohara 547: viewWebHelp("index-doc-asir-ja.html");
1.32 ohara 548: }else {
1.33 ! ohara 549: viewWebHelp("index-doc-asir.html");
! 550: }
! 551: }
! 552:
! 553: void CAsir32guiView::OnVisitSite()
! 554: {
! 555: const char *lang = get_locale_lang_iso639();
! 556: if(strcmp(lang,"ja")==0) {
! 557: viewWeb("http://www.math.kobe-u.ac.jp/Asir/asir-ja.html");
! 558: }else {
! 559: viewWeb("http://www.math.kobe-u.ac.jp/Asir/");
1.32 ohara 560: }
1.1 noro 561: }
562:
563: void CAsir32guiView::OnFileLog()
564: {
565: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
566: if ( !Logging ) {
567: CFileDialog fileDialog(TRUE);
568: if ( fileDialog.DoModal() == IDOK ) {
569: CString logfile = fileDialog.GetPathName();
570: Logfp = fopen(logfile,"ab");
571: if ( Logfp ) {
572: LogStart = GetWindowTextLength();
573: Logging = 1;
574: }
575: }
576: } else {
577: const char *buf;
578: buf = LockBuffer();
579: fwrite(buf+LogStart,1,strlen(buf)-LogStart,Logfp);
580: UnlockBuffer();
581: fclose(Logfp);
582: Logging = 0;
583: }
584: }
585:
586: void CAsir32guiView::OnUpdateFileLog(CCmdUI* pCmdUI)
587: {
588: // TODO: この位置に command update UI ハンドラ用のコードを追加してください
589: if ( Logging )
590: pCmdUI->SetCheck(1);
591: else
592: pCmdUI->SetCheck(0);
593: }
594:
595: void CAsir32guiView::OnEditPaste()
596: {
597: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
598: Paste();
1.3 noro 599: }
600:
1.9 noro 601: void CAsir32guiView::UpdateMetrics()
602: {
603: TEXTMETRIC tm;
604: RECT r;
605:
606: GetEditCtrl().GetRect(&r);
607: CDC *pDC = GetDC();
608: pDC->SelectObject(GetFont());
609: pDC->GetTextMetrics(&tm);
610: MaxLineLength = (r.right-r.left)/tm.tmAveCharWidth-1;
611: }
612:
1.3 noro 613: void CAsir32guiView::OnFont()
614: {
615: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.26 ohara 616: INT_PTR ret;
1.9 noro 617: LOGFONT lf;
618:
619: GetFont()->GetLogFont(&lf);
620: CFontDialog fd(&lf,CF_EFFECTS | CF_SCREENFONTS | CF_FIXEDPITCHONLY);
1.3 noro 621: static CFont *f = 0;
622:
623: ret = fd.DoModal();
624: if ( ret == IDOK ) {
625: fd.GetCurrentFont(&lf);
626: if ( f )
627: delete f;
628: f = new CFont;
629: f->CreateFontIndirect(&lf);
630: SetFont(f);
1.9 noro 631: UpdateMetrics();
1.3 noro 632: }
633: }
634:
635: int CAsir32guiView::OnCreate(LPCREATESTRUCT lpCreateStruct)
636: {
637: if (CEditView::OnCreate(lpCreateStruct) == -1)
638: return -1;
639:
640: // TODO: この位置に固有の作成用コードを追加してください
1.9 noro 641:
1.3 noro 642: LOGFONT logFont; memset(&logFont, 0, sizeof(LOGFONT));
643: logFont.lfHeight = 20;
644: logFont.lfCharSet = DEFAULT_CHARSET;
645: strcpy(logFont.lfFaceName, "Terminal");
646: CFont *f = new CFont;
647: f->CreateFontIndirect(&logFont);
648: SetFont(f);
1.9 noro 649: UpdateMetrics();
1.3 noro 650: GetEditCtrl().LimitText(nMaxSize);
1.9 noro 651: GetEditCtrl().SetTabStops(m_nTabStops);
1.3 noro 652:
653: return 0;
1.6 noro 654: }
655:
656: void CAsir32guiView::OnContribhelp()
657: {
658: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 659: viewHtmlHelp("cman");
1.6 noro 660: }
661:
1.11 noro 662: void CAsir32guiView::OnSize(UINT nType, int cx, int cy)
663: {
664: CEditView::OnSize(nType, cx, cy);
665:
666: // TODO: この位置にメッセージ ハンドラ用のコードを追加してください
667: UpdateMetrics();
668: }
669:
670: void CAsir32guiView::OnDsolv()
671: {
672: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 673: viewHtmlHelp("dsolv");
1.11 noro 674: }
675:
676: void CAsir32guiView::OnGnuplot()
677: {
678: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 679: viewHtmlHelp("gnuplot");
1.11 noro 680: }
681:
682: void CAsir32guiView::OnOkdiff()
683: {
684: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 685: viewHtmlHelp("ok_diff");
1.11 noro 686: }
687:
688: void CAsir32guiView::OnOkdmodule()
689: {
690: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 691: viewHtmlHelp("ok_dmodule");
1.11 noro 692: }
693:
694: void CAsir32guiView::OnOm()
695: {
696: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 697: viewHtmlHelp("om");
1.11 noro 698: }
699:
700: void CAsir32guiView::OnPfpcoh()
701: {
702: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 703: viewHtmlHelp("pfpcoh");
1.11 noro 704: }
705:
706: void CAsir32guiView::OnPlucker()
707: {
708: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 709: viewHtmlHelp("plucker");
1.11 noro 710: }
711:
712: void CAsir32guiView::OnSm1()
713: {
714: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 715: viewHtmlHelp("sm1");
1.11 noro 716: }
717:
718: void CAsir32guiView::OnTigers()
1.6 noro 719: {
1.11 noro 720: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 721: viewHtmlHelp("tigers");
1.9 noro 722: }
723:
1.11 noro 724: void CAsir32guiView::OnTodoparametrize()
1.9 noro 725: {
1.11 noro 726: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ohara 727: viewHtmlHelp("todo_parametrize");
1.1 noro 728: }
1.16 noro 729:
1.24 noro 730: void CAsir32guiView::OnNoromatrix()
731: {
732: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
733: viewHtmlHelp("noro_matrix");
734: }
735:
736: void CAsir32guiView::OnNoromwl()
737: {
738: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
739: viewHtmlHelp("noro_mwl");
740: }
741:
1.25 noro 742: void CAsir32guiView::OnNoropd()
743: {
744: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
745: viewHtmlHelp("noro_pd");
746: }
747:
1.24 noro 748: void CAsir32guiView::OnNnndbf()
749: {
750: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
751: viewHtmlHelp("nn_ndbf");
752: }
753:
1.25 noro 754: void CAsir32guiView::OnNstwistedlog()
755: {
756: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
757: viewHtmlHelp("ns_twistedlog");
758: }
759:
1.16 noro 760: BOOL CAsir32guiView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
761: {
762: // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
763:
764: BOOL ret = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
1.26 ohara 765: FILE *fp = NULL;
1.17 noro 766: char *temp;
1.31 ohara 767: char hndname[_MAX_PATH];
1.17 noro 768:
1.30 noro 769: if ( asirgui_kind == ASIRGUI_MAIN ) {
770: if ( temp = getenv("TEMP") ) {
771: sprintf(hndname,"%s\\asirgui.hnd", temp);
772: fp = fopen(hndname,"w");
773: if ( fp ) {
774: fprintf(fp,"%d",(unsigned int)theView->m_hWnd);
775: fclose(fp);
776: }
1.28 ohara 777: }
778: }
1.16 noro 779: return ret;
780: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>