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

Last change on this file was 829, checked in by イグトランス (egtra), 12 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/plain; charset=Shift_JIS
File size: 11.2 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,const 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 for(i3=0;i3<MdiInfo.size();i3++){
182 if(MdiInfo[i3]->hwnd){
183 if(lstrcmpi(temporary,MdiInfo[i3]->path.c_str())==0) break;
184 }
185 }
186 if(i3==MdiInfo.size()){
187 //ファイルから開く
188 ATL::CHandle fh(CreateFile(temporary,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL));
189 if(fh==INVALID_HANDLE_VALUE){
190 fh.Detach();
191 goto finish;
192 }
193
194 FileSize=GetFileSize(fh,NULL);
195
196 temp3=(char *)HeapAlloc(hHeap,0,FileSize+MEM_SPACE);
197 ReadFile(fh,temp3,FileSize,&AccBytes,NULL);
198 temp3[FileSize]=0;
199
200 }
201 else{
202 //エディタから読み取る
203 FileSize=lstrlen(MdiInfo[i3]->pMdiTextEdit->buffer);
204
205 temp3=(char *)HeapAlloc(hHeap,0,FileSize+MEM_SPACE);
206 memcpy(temp3,MdiInfo[i3]->pMdiTextEdit->buffer,FileSize);
207 temp3[FileSize]=0;
208 }
209
210 //新しい参照ディレクトリを取得
211 char DefaultDir[MAX_PATH+1024];
212 _splitpath(temporary,DefaultDir,temp2,0,0);
213 lstrcat(DefaultDir,temp2);
214
215 //インクルードの再帰呼び出し
216 temp3=reflexive_Include(temp3,&ppFilePath,&FileNum,DefaultDir);
217 FileSize=lstrlen(temp3);
218
219 i4=lstrlen(buffer)+FileSize-(i2-i);
220 if(FileSize>(i2-i)) buffer=(char *)HeapReAlloc(hHeap,0,buffer,i4+1+MEM_SPACE);
221 SlideString(buffer+i2,FileSize-(i2-i));
222
223 memcpy(buffer+i,temp3,FileSize);
224
225 HeapDefaultFree(temp3);
226
227 i--;
228 continue;
229 }
230
231 for(;;i++){
232 if(buffer[i]=='\0') break;
233 if(buffer[i]=='\r'&&buffer[i+1]=='\n'){
234 i++;
235 break;
236 }
237 }
238 if(buffer[i]=='\0') break;
239 }
240
241finish:
242
243 //重複チェック用
244 *pppFilePath=ppFilePath;
245 *pFileNum=FileNum;
246
247 return buffer;
248}
249
250char *IncludeFiles(char *buffer){
251 extern HANDLE hHeap;
252 int i;
253
254 //参照ディレクトリ
255 const char *pDefaultDir;
256 if( projectInfo.IsOpened() )
257 pDefaultDir=projectInfo.GetWorkDir().GetPath().c_str();
258 else pDefaultDir=pj_editor_Dir;
259
260 //重複チェック用
261 char **ppFilePath;
262 int FileNum;
263 ppFilePath=(char **)HeapAlloc(hHeap,0,1);
264 FileNum=0;
265
266 buffer=reflexive_Include(buffer,&ppFilePath,&FileNum,pDefaultDir);
267
268 for(i=0;i<FileNum;i++){
269 HeapDefaultFree(ppFilePath[i]);
270 }
271 HeapDefaultFree(ppFilePath);
272 return buffer;
273}
Note: See TracBrowser for help on using the repository browser.