source: dev/trunk/ab5.0/abdev/abdev/DocumentAdvice.cpp @ 619

Last change on this file since 619 was 619, checked in by dai_9181, 15 years ago

Projectクラスをリファクタリング中。

File size: 11.5 KB
Line 
1#include "stdafx.h"
2
3#include "Common.h"
4
5void MenuAdvice(WPARAM msg){
6    /////////////////////////////////////////////////////
7    // コマンド解説(ステータスバーに表示されるテキスト)
8    /////////////////////////////////////////////////////
9    extern char CmdMsg[255];
10
11#if defined(JPN)
12    //日本語
13    if(LOWORD(msg)==IDM_NEW) SetStatusText("新規にプロジェクトまたはドキュメントを作成します");
14    else if(LOWORD(msg)==IDM_OPEN) SetStatusText("既存のドキュメントを開きます");
15    else if(LOWORD(msg)==IDM_CLOSE) SetStatusText("作業中のファイルを閉じます");
16    else if(LOWORD(msg)==IDM_SAVE) SetStatusText("作業中のファイルを保存します");
17    else if(LOWORD(msg)==IDM_NEWSAVE) SetStatusText("作業中のファイルを新しい名前を付けて保存します");
18    else if(LOWORD(msg)==IDM_ALLSAVE) SetStatusText("開いているファイルをすべて保存します");
19    else if(LOWORD(msg)==IDM_PROJECT_OPEN) SetStatusText("既存のプロジェクトを開きます");
20    else if(LOWORD(msg)==IDM_PROJECT_SAVE) SetStatusText("作業中のプロジェクトを保存します");
21    else if(LOWORD(msg)==IDM_PROJECT_CLOSE) SetStatusText("作業中のプロジェクトを閉じます");
22    else if(LOWORD(msg)==IDM_EXIT) SetStatusText("アプリケーションの終了と内容の保存確認をします");
23    else if(LOWORD(msg)==IDM_UNDO) SetStatusText("直前の操作を元にもどします");
24    else if(LOWORD(msg)==IDM_REDO) SetStatusText("前の未完了操作を繰り返します");
25    else if(LOWORD(msg)==IDM_CUT) SetStatusText("選択範囲を切り取り、クリップボードへコピーします");
26    else if(LOWORD(msg)==IDM_COPY) SetStatusText("選択範囲をクリップボードへコピーします");
27    else if(LOWORD(msg)==IDM_PASTE) SetStatusText("挿入位置にクリップボードの内容を挿入します");
28    else if(LOWORD(msg)==IDM_DELETE) SetStatusText("選択範囲を削除します");
29    else if(LOWORD(msg)==IDM_ALLSELECT) SetStatusText("ファイル全体を選択します");
30    else if(LOWORD(msg)==IDM_FIND) SetStatusText("作業中のドキュメント内を検索します");
31    else if(LOWORD(msg)==IDM_PERMUTATION) SetStatusText("指定した文字列を他の文字列で置換します");
32
33#ifdef THETEXT
34    else if(LOWORD(msg)==IDM_STRING_COUNT) SetStatusText("作業中ドキュメントの文字数をカウントします");
35#endif
36
37    else if(LOWORD(msg)==IDM_PROJECTVIEW) SetStatusText("プロジェクトビューの表示/非表示を切り替えます");
38    else if(LOWORD(msg)==IDM_PROJECT_OPTION) SetStatusText("プロジェクトオプションの設定を行います");
39    else if(LOWORD(msg)==IDM_TOPMOST) SetStatusText("エディタの最前面表示ON/OFFを切り替えます");
40    else if(LOWORD(msg)==IDM_SET) SetStatusText("エディタオプションの設定を行います");
41    else if(LOWORD(msg)==IDM_DEBUG) SetStatusText("プログラムをデバッグ用にコンパイルし、デバッグ実行します");
42    else if(LOWORD(msg)==IDM_DEBUGCOMPILE) SetStatusText("プログラムをデバッグ用にコンパイルします");
43    else if(LOWORD(msg)==IDM_RELEASECOMPILE) SetStatusText("プログラムをリリース用にコンパイルします");
44    else if(LOWORD(msg)==IDM_TOPIC) SetStatusText("ヘルプファイルを開きます");
45    else if(LOWORD(msg)==IDM_ABOUT) SetStatusText("ActiveBasicのバージョン情報を表示します");
46    else SetStatusText(CmdMsg);
47#else
48    //英語
49    if(LOWORD(msg)==IDM_NEW) SetStatusText("Create a new document");
50    else if(LOWORD(msg)==IDM_OPEN) SetStatusText("Open an existing document");
51    else if(LOWORD(msg)==IDM_CLOSE) SetStatusText("Close the active document");
52    else if(LOWORD(msg)==IDM_SAVE) SetStatusText("Save the active document");
53    else if(LOWORD(msg)==IDM_NEWSAVE) SetStatusText("Save the active document with a new name");
54    else if(LOWORD(msg)==IDM_ALLSAVE) SetStatusText("Save all the modified documents");
55    else if(LOWORD(msg)==IDM_PROJECT_OPEN) SetStatusText("Open an existing project");
56    else if(LOWORD(msg)==IDM_PROJECT_SAVE) SetStatusText("Save the active project");
57    else if(LOWORD(msg)==IDM_PROJECT_CLOSE) SetStatusText("Close the active project");
58    else if(LOWORD(msg)==IDM_EXIT) SetStatusText("Quit the application, prompts you to save modified documents");
59    else if(LOWORD(msg)==IDM_UNDO) SetStatusText("Undo the last action");
60    else if(LOWORD(msg)==IDM_REDO) SetStatusText("Redo the previously undone action");
61    else if(LOWORD(msg)==IDM_CUT) SetStatusText("Cut the selection and puts it on the Clipboard");
62    else if(LOWORD(msg)==IDM_COPY) SetStatusText("Copy the selection and puts it on the Clipboard");
63    else if(LOWORD(msg)==IDM_PASTE) SetStatusText("Insert Clipboard contents");
64    else if(LOWORD(msg)==IDM_DELETE) SetStatusText("Erase the selection");
65    else if(LOWORD(msg)==IDM_ALLSELECT) SetStatusText("Select the entire document");
66    else if(LOWORD(msg)==IDM_FIND) SetStatusText("Search for text in the active document");
67    else if(LOWORD(msg)==IDM_PERMUTATION) SetStatusText("Replace occurrences of search std::string");
68    else if(LOWORD(msg)==IDM_PROJECTVIEW) SetStatusText("Show or hide ProjectView");
69    else if(LOWORD(msg)==IDM_PROJECT_OPTION) SetStatusText("Set project options");
70    else if(LOWORD(msg)==IDM_TOPMOST) SetStatusText("Mark ProjectEditor stay on top of the other applications");
71    else if(LOWORD(msg)==IDM_SET) SetStatusText("Set editor options");
72    else if(LOWORD(msg)==IDM_DEBUG) SetStatusText("Debug the program");
73    else if(LOWORD(msg)==IDM_DEBUGCOMPILE) SetStatusText("Compile the program for debugging");
74    else if(LOWORD(msg)==IDM_RELEASECOMPILE) SetStatusText("Compile the program for release");
75    else if(LOWORD(msg)==IDM_TOPIC) SetStatusText("Open the Help topics");
76    else if(LOWORD(msg)==IDM_ABOUT) SetStatusText("Display information about ActiveBasic");
77    else SetStatusText(CmdMsg);
78#endif
79}
80
81void ShowToolTipText(LPTOOLTIPTEXT TipText){
82    ////////////////////////////////////////////////////////////////////////////
83    // ツールチップ(ツールバーにポイントしたときにポップアップされるテキスト)
84    ////////////////////////////////////////////////////////////////////////////
85
86#if defined(JPN)
87    //日本語
88    if(TipText->hdr.idFrom==IDM_NEW) TipText->lpszText="新規作成 (Ctrl+N)";
89    else if(TipText->hdr.idFrom==IDM_OPEN) TipText->lpszText="開く (Ctrl+O)";
90    else if(TipText->hdr.idFrom==IDM_SAVE) TipText->lpszText="保存 (Ctrl+S)";
91    else if(TipText->hdr.idFrom==IDM_ALLSAVE) TipText->lpszText="すべて保存";
92    else if(TipText->hdr.idFrom==IDM_CUT) TipText->lpszText="切り取り (Ctrl+X)";
93    else if(TipText->hdr.idFrom==IDM_COPY) TipText->lpszText="コピー (Ctrl+C)";
94    else if(TipText->hdr.idFrom==IDM_PASTE) TipText->lpszText="貼り付け (Ctrl+V)";
95    else if(TipText->hdr.idFrom==IDM_UNDO) TipText->lpszText="元に戻す (Ctrl+Z)";
96    else if(TipText->hdr.idFrom==IDM_REDO) TipText->lpszText="やり直し (Ctrl+Y)";
97    else if(TipText->hdr.idFrom==IDM_FIND) TipText->lpszText="検索 (Ctrl+F)";
98    else if(TipText->hdr.idFrom==IDM_DEBUG) TipText->lpszText="デバッグ実行 (F5)";
99    else if(TipText->hdr.idFrom==IDM_DEBUGCOMPILE) TipText->lpszText="デバッグ ビルド (F7)";
100    else if(TipText->hdr.idFrom==IDM_RELEASECOMPILE) TipText->lpszText="リリース ビルド (F6)";
101#else
102    //英語
103    if(TipText->hdr.idFrom==IDM_NEW) TipText->lpszText="New Document (Ctrl+N)";
104    else if(TipText->hdr.idFrom==IDM_OPEN) TipText->lpszText="Open Document (Ctrl+O)";
105    else if(TipText->hdr.idFrom==IDM_SAVE) TipText->lpszText="Save Document (Ctrl+S)";
106    else if(TipText->hdr.idFrom==IDM_ALLSAVE) TipText->lpszText="Save All Document";
107    else if(TipText->hdr.idFrom==IDM_CUT) TipText->lpszText="Cut (Ctrl+X)";
108    else if(TipText->hdr.idFrom==IDM_COPY) TipText->lpszText="Copy (Ctrl+C)";
109    else if(TipText->hdr.idFrom==IDM_PASTE) TipText->lpszText="Paste (Ctrl+V)";
110    else if(TipText->hdr.idFrom==IDM_UNDO) TipText->lpszText="Undo (Ctrl+Z)";
111    else if(TipText->hdr.idFrom==IDM_REDO) TipText->lpszText="Redo (Ctrl+Y)";
112    else if(TipText->hdr.idFrom==IDM_FIND) TipText->lpszText="Find (Ctrl+F)";
113    else if(TipText->hdr.idFrom==IDM_DEBUG) TipText->lpszText="Run for Debugging (F2)";
114    else if(TipText->hdr.idFrom==IDM_DEBUGCOMPILE) TipText->lpszText="Compile for Debugging (F4)";
115    else if(TipText->hdr.idFrom==IDM_RELEASECOMPILE) TipText->lpszText="Compile for Release (F7)";
116#endif
117    MenuAdvice(TipText->hdr.idFrom);
118}
119
120char *reflexive_Include(char *buffer,char ***pppFilePath,int *pFileNum,char *pDefaultDir){
121    extern HANDLE hHeap;
122    int i,i2,i3,i4,sw1,sw2,FileSize;
123    char temporary[MAX_PATH],temp2[MAX_PATH+255],*temp3;
124    DWORD AccBytes;
125
126    //重複チェック用
127    char **ppFilePath;
128    int FileNum;
129    ppFilePath=*pppFilePath;
130    FileNum=*pFileNum;
131
132    for(i=0;;i++){
133        if( ( memcmp(buffer+i,"#include",8)==0 || memcmp(buffer+i,"#require",8)==0 )&&(!IsVariableChar(buffer[i+8]))){
134            i2=i+8;
135            while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
136            sw1=0;
137            if(buffer[i2]=='\"') i2++;
138            else if(buffer[i2]=='<'){
139                i2++;
140                sw1=1;
141            }
142            for(i3=0;;i2++,i3++){
143                if((buffer[i2]=='\"'&&sw1==0)||(buffer[i2]=='>'&&sw1==1)||(buffer[i2]=='\r'&&buffer[i2+1]=='\n')||buffer[i2]=='\0'){
144                    temporary[i3]=0;
145                    break;
146                }
147                temporary[i3]=buffer[i2];
148            }
149            while((!(buffer[i2]=='\r'&&buffer[i2+1]=='\n'))&&buffer[i2]!='\0') i2++;
150
151            if(sw1){
152                sprintf(temp2,"%sInclude\\%s",pj_editor_Dir,temporary);
153                lstrcpy(temporary,temp2);
154            }
155            else{
156                GetFullPath(temporary,pDefaultDir);
157            }
158
159
160            //////////////////
161            // 重複チェック
162            //////////////////
163            for(i3=0,sw2=0;i3<FileNum;i3++){
164                if(lstrcmpi(ppFilePath[i3],temporary)==0){
165                    //重複したとき
166                    sw2=1;
167                    break;
168                }
169            }
170            if(sw2){
171                //重複したときは無視する
172                i=i2;
173                continue;
174            }
175            ppFilePath=(char **)HeapReAlloc(hHeap,0,ppFilePath,(FileNum+1)*sizeof(char *));
176            ppFilePath[FileNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
177            lstrcpy(ppFilePath[FileNum],temporary);
178            FileNum++;
179
180#define MEM_SPACE 1024 //強制終了を防ぐためのゆとりスペース
181            extern MDIINFO MdiInfo[MAX_WNDNUM];
182            for(i3=0;i3<MAX_WNDNUM;i3++){
183                if(MdiInfo[i3].hwnd){
184                    if(lstrcmpi(temporary,MdiInfo[i3].path)==0) break;
185                }
186            }
187            if(i3==MAX_WNDNUM){
188                //ファイルから開く
189                HANDLE fh;
190                fh=CreateFile(temporary,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
191                if(fh==INVALID_HANDLE_VALUE){
192                    goto finish;
193                }
194
195                FileSize=GetFileSize(fh,NULL);
196
197                temp3=(char *)HeapAlloc(hHeap,0,FileSize+MEM_SPACE);
198                ReadFile(fh,temp3,FileSize,&AccBytes,NULL);
199                temp3[FileSize]=0;
200
201                CloseHandle(fh);
202            }
203            else{
204                //エディタから読み取る
205                FileSize=lstrlen(MdiInfo[i3].pMdiTextEdit->buffer);
206
207                temp3=(char *)HeapAlloc(hHeap,0,FileSize+MEM_SPACE);
208                memcpy(temp3,MdiInfo[i3].pMdiTextEdit->buffer,FileSize);
209                temp3[FileSize]=0;
210            }
211
212            //新しい参照ディレクトリを取得
213            char DefaultDir[MAX_PATH+1024];
214            _splitpath(temporary,DefaultDir,temp2,0,0);
215            lstrcat(DefaultDir,temp2);
216
217            //インクルードの再帰呼び出し
218            temp3=reflexive_Include(temp3,&ppFilePath,&FileNum,DefaultDir);
219            FileSize=lstrlen(temp3);
220
221            i4=lstrlen(buffer)+FileSize-(i2-i);
222            if(FileSize>(i2-i)) buffer=(char *)HeapReAlloc(hHeap,0,buffer,i4+1+MEM_SPACE);
223            SlideString(buffer+i2,FileSize-(i2-i));
224
225            memcpy(buffer+i,temp3,FileSize);
226
227            HeapDefaultFree(temp3);
228
229            i--;
230            continue;
231        }
232
233        for(;;i++){
234            if(buffer[i]=='\0') break;
235            if(buffer[i]=='\r'&&buffer[i+1]=='\n'){
236                i++;
237                break;
238            }
239        }
240        if(buffer[i]=='\0') break;
241    }
242
243finish:
244
245    //重複チェック用
246    *pppFilePath=ppFilePath;
247    *pFileNum=FileNum;
248
249    return buffer;
250}
251
252char *IncludeFiles(char *buffer){
253    extern HANDLE hHeap;
254    int i;
255
256    //参照ディレクトリ
257    char *pDefaultDir;
258    if( projectInfo.IsOpened() )
259        pDefaultDir=projectInfo.dir;
260    else pDefaultDir=pj_editor_Dir;
261
262    //重複チェック用
263    char **ppFilePath;
264    int FileNum;
265    ppFilePath=(char **)HeapAlloc(hHeap,0,1);
266    FileNum=0;
267
268    buffer=reflexive_Include(buffer,&ppFilePath,&FileNum,pDefaultDir);
269
270    for(i=0;i<FileNum;i++){
271        HeapDefaultFree(ppFilePath[i]);
272    }
273    HeapDefaultFree(ppFilePath);
274    return buffer;
275}
Note: See TracBrowser for help on using the repository browser.