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

Last change on this file since 613 was 613, checked in by dai_9181, 16 years ago

"extern PROJECTINFO ProjectInfo;" をすべて除去した。
PROJECTINFO構造体の定義位置を移動した。

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.name[0])
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.