Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/teraterm/ttpmacro/ttmdlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3226 by maya, Tue Mar 24 09:37:20 2009 UTC revision 3227 by maya, Tue Mar 24 15:10:33 2009 UTC
# Line 1  Line 1 
1  /* Tera Term  /* Tera Term
2   Copyright(C) 1994-1998 T. Teranishi   Copyright(C) 1994-1998 T. Teranishi
3   All rights reserved. */   All rights reserved. */
4    
5  /* TTMACRO.EXE, dialog boxes */  /* TTMACRO.EXE, dialog boxes */
6    
7  #include "stdafx.h"  #include "stdafx.h"
8  #include "teraterm.h"  #include "teraterm.h"
9  #include <direct.h>  #include <direct.h>
10  #include "ttm_res.h"  #include "ttm_res.h"
11  #include "tttypes.h"  #include "tttypes.h"
12  #include "ttlib.h"  #include "ttlib.h"
13  #include <commdlg.h>  #include <commdlg.h>
14  #include "errdlg.h"  #include "errdlg.h"
15  #include "inpdlg.h"  #include "inpdlg.h"
16  #include "msgdlg.h"  #include "msgdlg.h"
17  #include "statdlg.h"  #include "statdlg.h"
18  #include "ttmlib.h"  #include "ttmlib.h"
19    
20  #define MaxStrLen 256  #define MaxStrLen 256
21    
22  extern "C" {  extern "C" {
23  char HomeDir[MAXPATHLEN];  char HomeDir[MAXPATHLEN];
24  char FileName[MAXPATHLEN];  char FileName[MAXPATHLEN];
25  char TopicName[11];  char TopicName[11];
26  char ShortName[MAXPATHLEN];  char ShortName[MAXPATHLEN];
27  char Param2[MAXPATHLEN];  char Param2[MAXPATHLEN];
28  char Param3[MAXPATHLEN];  char Param3[MAXPATHLEN];
29  char Param4[MAXPATHLEN];  char Param4[MAXPATHLEN];
30  char Param5[MAXPATHLEN];  char Param5[MAXPATHLEN];
31  char Param6[MAXPATHLEN];  char Param6[MAXPATHLEN];
32  char Param7[MAXPATHLEN];  char Param7[MAXPATHLEN];
33  char Param8[MAXPATHLEN];  char Param8[MAXPATHLEN];
34  char Param9[MAXPATHLEN];  char Param9[MAXPATHLEN];
35  BOOL SleepFlag;  BOOL SleepFlag;
36  }  }
37    
38  static int DlgPosX = -1000;  static int DlgPosX = -1000;
39  static int DlgPosY = 0;  static int DlgPosY = 0;
40    
41  static PStatDlg StatDlg = NULL;  static PStatDlg StatDlg = NULL;
42    
43  extern "C" {  extern "C" {
44  BOOL NextParam(PCHAR Param, int *i, PCHAR Buff, int BuffSize)  BOOL NextParam(PCHAR Param, int *i, PCHAR Buff, int BuffSize)
45  {  {
46          int j;          int j;
47          char c, q;          char c, q;
48          BOOL Quoted;          BOOL Quoted;
49    
50          if ( *i >= (int)strlen(Param)) {          if ( *i >= (int)strlen(Param)) {
51                  return FALSE;                  return FALSE;
52          }          }
53          j = 0;          j = 0;
54    
55          while (Param[*i]==' ') {          while (Param[*i]==' ') {
56                  (*i)++;                  (*i)++;
57          }          }
58    
59          c = Param[*i];          c = Param[*i];
60          Quoted = ((c=='"') || (c=='\''));          Quoted = ((c=='"') || (c=='\''));
61          q = 0;          q = 0;
62          if (Quoted) {          if (Quoted) {
63                  q = c;                  q = c;
64             (*i)++;             (*i)++;
65                  c = Param[*i];                  c = Param[*i];
66          }          }
67          (*i)++;          (*i)++;
68          while ((c!=0) && (c!=q) && (Quoted || (c!=' ')) &&          while ((c!=0) && (c!=q) && (Quoted || (c!=' ')) &&
69                 (Quoted || (c!=';')) && (j<BuffSize-1)) {                 (Quoted || (c!=';')) && (j<BuffSize-1)) {
70                  Buff[j] = c;                  Buff[j] = c;
71                  j++;                  j++;
72                  c = Param[*i];                  c = Param[*i];
73                  (*i)++;                  (*i)++;
74          }          }
75          if (! Quoted && (c==';')) {          if (! Quoted && (c==';')) {
76                  (*i)--;                  (*i)--;
77          }          }
78    
79          Buff[j] = 0;          Buff[j] = 0;
80          return (strlen(Buff)>0);          return (strlen(Buff)>0);
81  }  }
82  }  }
83    
84  extern "C" {  extern "C" {
85  void ParseParam(PBOOL IOption, PBOOL VOption)  void ParseParam(PBOOL IOption, PBOOL VOption)
86  {  {
87          int i, j, k;          int i, j, k;
88          char *Param;          char *Param;
89          char Temp[MAXPATHLEN];          char Temp[MAXPATHLEN];
90    
91          // Get home directory          // Get home directory
92          GetModuleFileName(AfxGetInstanceHandle(),FileName,sizeof(FileName));          GetModuleFileName(AfxGetInstanceHandle(),FileName,sizeof(FileName));
93          ExtractDirName(FileName,HomeDir);          ExtractDirName(FileName,HomeDir);
94          _chdir(HomeDir);          _chdir(HomeDir);
95    
96          // Get command line parameters          // Get command line parameters
97          FileName[0] = 0;          FileName[0] = 0;
98          TopicName[0] = 0;          TopicName[0] = 0;
99          Param2[0] = 0;          Param2[0] = 0;
100          Param3[0] = 0;          Param3[0] = 0;
101          Param4[0] = 0;          Param4[0] = 0;
102          Param5[0] = 0;          Param5[0] = 0;
103          Param6[0] = 0;          Param6[0] = 0;
104          Param7[0] = 0;          Param7[0] = 0;
105          Param8[0] = 0;          Param8[0] = 0;
106          Param9[0] = 0;          Param9[0] = 0;
107          SleepFlag = FALSE;          SleepFlag = FALSE;
108          *IOption = FALSE;          *IOption = FALSE;
109          *VOption = FALSE;          *VOption = FALSE;
110          // 256バイト以上のコマンドラインパラメータ指定があると、BOF(Buffer Over Flow)で          // 256バイト以上のコマンドラインパラメータ指定があると、BOF(Buffer Over Flow)で
111          // 落ちるバグを修正。(2007.5.25 yutaka)          // 落ちるバグを修正。(2007.5.25 yutaka)
112          Param = GetCommandLine();          Param = GetCommandLine();
113          i = 0;          i = 0;
114          // the first term shuld be executable filename of TTMACRO          // the first term shuld be executable filename of TTMACRO
115          NextParam(Param, &i, Temp, sizeof(Temp));          NextParam(Param, &i, Temp, sizeof(Temp));
116          j = 0;          j = 0;
117    
118          while (NextParam(Param, &i, Temp, sizeof(Temp))) {          while (NextParam(Param, &i, Temp, sizeof(Temp))) {
119                  if (_strnicmp(Temp,"/D=",3)==0) { // DDE option                  if (_strnicmp(Temp,"/D=",3)==0) { // DDE option
120                          strncpy_s(TopicName, sizeof(TopicName), &Temp[3], _TRUNCATE);  // BOF対策                          strncpy_s(TopicName, sizeof(TopicName), &Temp[3], _TRUNCATE);  // BOF対策
121                  }                  }
122                  else if (_strnicmp(Temp,"/I",2)==0) {                  else if (_strnicmp(Temp,"/I",2)==0) {
123                          *IOption = TRUE;                          *IOption = TRUE;
124                  }                  }
125                  else if (_strnicmp(Temp,"/S",2)==0) {                  else if (_strnicmp(Temp,"/S",2)==0) {
126                          SleepFlag = TRUE;                          SleepFlag = TRUE;
127                  }                  }
128                  else if (_strnicmp(Temp,"/V",2)==0) {                  else if (_strnicmp(Temp,"/V",2)==0) {
129                          *VOption = TRUE;                          *VOption = TRUE;
130                  }                  }
131                  else {                  else {
132                          j++;                          j++;
133                          if (j==1) {                          if (j==1) {
134                                  strncpy_s(FileName, sizeof(FileName),Temp, _TRUNCATE);                                  strncpy_s(FileName, sizeof(FileName),Temp, _TRUNCATE);
135                          }                          }
136                          else if (j==2) {                          else if (j==2) {
137                                  strncpy_s(Param2, sizeof(Param2),Temp, _TRUNCATE);                                  strncpy_s(Param2, sizeof(Param2),Temp, _TRUNCATE);
138                          }                          }
139                          else if (j==3) {                          else if (j==3) {
140                                  strncpy_s(Param3, sizeof(Param3),Temp, _TRUNCATE);                                  strncpy_s(Param3, sizeof(Param3),Temp, _TRUNCATE);
141                          }                          }
142                          else if (j==4) {                          else if (j==4) {
143                                  strncpy_s(Param4, sizeof(Param4),Temp, _TRUNCATE);                                  strncpy_s(Param4, sizeof(Param4),Temp, _TRUNCATE);
144                          }                          }
145                          else if (j==5) {                          else if (j==5) {
146                                  strncpy_s(Param5, sizeof(Param5),Temp, _TRUNCATE);                                  strncpy_s(Param5, sizeof(Param5),Temp, _TRUNCATE);
147                          }                          }
148                          else if (j==6) {                          else if (j==6) {
149                                  strncpy_s(Param6, sizeof(Param6),Temp, _TRUNCATE);                                  strncpy_s(Param6, sizeof(Param6),Temp, _TRUNCATE);
150                          }                          }
151                          else if (j==7) {                          else if (j==7) {
152                                  strncpy_s(Param7, sizeof(Param7),Temp, _TRUNCATE);                                  strncpy_s(Param7, sizeof(Param7),Temp, _TRUNCATE);
153                          }                          }
154                          else if (j==8) {                          else if (j==8) {
155                                  strncpy_s(Param8, sizeof(Param8),Temp, _TRUNCATE);                                  strncpy_s(Param8, sizeof(Param8),Temp, _TRUNCATE);
156                          }                          }
157                          else if (j==9) {                          else if (j==9) {
158                                  strncpy_s(Param9, sizeof(Param9),Temp, _TRUNCATE);                                  strncpy_s(Param9, sizeof(Param9),Temp, _TRUNCATE);
159                          }                          }
160                  }                  }
161          }          }
162    
163          if (FileName[0]=='*') {          if (FileName[0]=='*') {
164                  FileName[0] = 0;                  FileName[0] = 0;
165          }          }
166          else if (FileName[0]!=0) {          else if (FileName[0]!=0) {
167                  if (GetFileNamePos(FileName,&j,&k)) {                  if (GetFileNamePos(FileName,&j,&k)) {
168                          FitFileName(&FileName[k],sizeof(FileName)-k,".TTL");                          FitFileName(&FileName[k],sizeof(FileName)-k,".TTL");
169                          strncpy_s(ShortName, sizeof(ShortName),&FileName[k], _TRUNCATE);                          strncpy_s(ShortName, sizeof(ShortName),&FileName[k], _TRUNCATE);
170                          if (j==0) {                          if (j==0) {
171                                  strncpy_s(FileName, sizeof(FileName),HomeDir, _TRUNCATE);                                  strncpy_s(FileName, sizeof(FileName),HomeDir, _TRUNCATE);
172                                  AppendSlash(FileName,sizeof(FileName));                                  AppendSlash(FileName,sizeof(FileName));
173                                  strncat_s(FileName,sizeof(FileName),ShortName,_TRUNCATE);                                  strncat_s(FileName,sizeof(FileName),ShortName,_TRUNCATE);
174                          }                          }
175                  }                  }
176                  else {                  else {
177                          FileName[0] = 0;                          FileName[0] = 0;
178                  }                  }
179          }          }
180  }  }
181  }  }
182    
183  extern "C" {  extern "C" {
184  BOOL GetFileName(HWND HWin)  BOOL GetFileName(HWND HWin)
185  {  {
186          char FNFilter[31];          char FNFilter[31];
187          OPENFILENAME FNameRec;          OPENFILENAME FNameRec;
188          char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];          char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
189    
190          if (FileName[0]!=0) {          if (FileName[0]!=0) {
191                  return FALSE;                  return FALSE;
192          }          }
193    
194          memset(FNFilter, 0, sizeof(FNFilter));          memset(FNFilter, 0, sizeof(FNFilter));
195          memset(&FNameRec, 0, sizeof(OPENFILENAME));          memset(&FNameRec, 0, sizeof(OPENFILENAME));
196          get_lang_msg("FILEDLG_OPEN_MACRO_FILTER", uimsg, sizeof(uimsg), "Macro files (*.ttl)\\0*.ttl\\0\\0", UILanguageFile);          get_lang_msg("FILEDLG_OPEN_MACRO_FILTER", uimsg, sizeof(uimsg), "Macro files (*.ttl)\\0*.ttl\\0\\0", UILanguageFile);
197          memcpy(FNFilter, uimsg, sizeof(FNFilter));          memcpy(FNFilter, uimsg, sizeof(FNFilter));
198    
199          // sizeof(OPENFILENAME) では Windows98/NT で終了してしまうため (2006.8.14 maya)          // sizeof(OPENFILENAME) では Windows98/NT で終了してしまうため (2006.8.14 maya)
200          FNameRec.lStructSize = get_OPENFILENAME_SIZE();          FNameRec.lStructSize = get_OPENFILENAME_SIZE();
201          FNameRec.hwndOwner       = HWin;          FNameRec.hwndOwner       = HWin;
202          FNameRec.lpstrFilter     = FNFilter;          FNameRec.lpstrFilter     = FNFilter;
203          FNameRec.nFilterIndex  = 1;          FNameRec.nFilterIndex  = 1;
204          FNameRec.lpstrFile  = FileName;          FNameRec.lpstrFile  = FileName;
205          FNameRec.nMaxFile  = sizeof(FileName);          FNameRec.nMaxFile  = sizeof(FileName);
206          // 以前読み込んだ .ttl ファイルのパスを記憶できるように、初期ディレクトリを固定にしない。          // 以前読み込んだ .ttl ファイルのパスを記憶できるように、初期ディレクトリを固定にしない。
207          // (2008.4.7 yutaka)          // (2008.4.7 yutaka)
208  #if 0  #if 0
209          FNameRec.lpstrInitialDir = HomeDir;          FNameRec.lpstrInitialDir = HomeDir;
210  #endif  #endif
211          FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;          FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
212          FNameRec.lpstrDefExt = "TTL";          FNameRec.lpstrDefExt = "TTL";
213          get_lang_msg("FILEDLG_OPEN_MACRO_TITLE", uimsg2, sizeof(uimsg2), "MACRO: Open macro", UILanguageFile);          get_lang_msg("FILEDLG_OPEN_MACRO_TITLE", uimsg2, sizeof(uimsg2), "MACRO: Open macro", UILanguageFile);
214          FNameRec.lpstrTitle = uimsg2;          FNameRec.lpstrTitle = uimsg2;
215          if (GetOpenFileName(&FNameRec)) {          if (GetOpenFileName(&FNameRec)) {
216                  strncpy_s(ShortName, sizeof(ShortName), &(FileName[FNameRec.nFileOffset]), _TRUNCATE);                  strncpy_s(ShortName, sizeof(ShortName), &(FileName[FNameRec.nFileOffset]), _TRUNCATE);
217          }          }
218          else {          else {
219                  FileName[0] = 0;                  FileName[0] = 0;
220          }          }
221    
222          if (FileName[0]==0) {          if (FileName[0]==0) {
223                  ShortName[0] = 0;                  ShortName[0] = 0;
224                  return FALSE;                  return FALSE;
225          }          }
226          else {          else {
227                  return TRUE;                  return TRUE;
228          }          }
229  }  }
230  }  }
231    
232  extern "C" {  extern "C" {
233  void SetDlgPos(int x, int y)  void SetDlgPos(int x, int y)
234  {  {
235          DlgPosX = x;          DlgPosX = x;
236          DlgPosY = y;          DlgPosY = y;
237          if (StatDlg!=NULL) { // update status box position          if (StatDlg!=NULL) { // update status box position
238                  StatDlg->Update(NULL,NULL,TRUE,DlgPosX,DlgPosY);                  StatDlg->Update(NULL,NULL,TRUE,DlgPosX,DlgPosY);
239          }          }
240  }  }
241  }  }
242    
243  extern "C" {  extern "C" {
244  void OpenInpDlg(PCHAR Buff, PCHAR Text, PCHAR Caption,  void OpenInpDlg(PCHAR Buff, PCHAR Text, PCHAR Caption,
245                  PCHAR Default, BOOL Paswd, BOOL SPECIAL)                  PCHAR Default, BOOL Paswd, BOOL SPECIAL)
246  {  {
247          CInpDlg InpDlg(Buff,Text,Caption,Default,Paswd,SPECIAL,DlgPosX,DlgPosY);          CInpDlg InpDlg(Buff,Text,Caption,Default,Paswd,SPECIAL,DlgPosX,DlgPosY);
248          InpDlg.DoModal();          InpDlg.DoModal();
249  }  }
250  }  }
251    
252  extern "C" {  extern "C" {
253  int OpenErrDlg(PCHAR Msg, PCHAR Line)  int OpenErrDlg(PCHAR Msg, PCHAR Line)
254  {  {
255          CErrDlg ErrDlg(Msg,Line,DlgPosX,DlgPosY);          CErrDlg ErrDlg(Msg,Line,DlgPosX,DlgPosY);
256          return ErrDlg.DoModal();          return ErrDlg.DoModal();
257  }  }
258  }  }
259    
260  extern "C" {  extern "C" {
261  int OpenMsgDlg(PCHAR Text, PCHAR Caption, BOOL YesNo, BOOL SPECIAL)  int OpenMsgDlg(PCHAR Text, PCHAR Caption, BOOL YesNo, BOOL SPECIAL)
262  {  {
263          CMsgDlg MsgDlg(Text,Caption,YesNo,SPECIAL,DlgPosX,DlgPosY);          CMsgDlg MsgDlg(Text,Caption,YesNo,SPECIAL,DlgPosX,DlgPosY);
264          return MsgDlg.DoModal();          return MsgDlg.DoModal();
265  }  }
266  }  }
267    
268  extern "C" {  extern "C" {
269  void OpenStatDlg(PCHAR Text, PCHAR Caption, BOOL SPECIAL)  void OpenStatDlg(PCHAR Text, PCHAR Caption, BOOL SPECIAL)
270  {  {
271          if (StatDlg==NULL) {          if (StatDlg==NULL) {
272                  StatDlg = new CStatDlg();                  StatDlg = new CStatDlg();
273                  StatDlg->Create(Text,Caption,SPECIAL,DlgPosX,DlgPosY);                  StatDlg->Create(Text,Caption,SPECIAL,DlgPosX,DlgPosY);
274          }          }
275          else {// if status box already exists,          else {// if status box already exists,
276                  // update text and caption only.                  // update text and caption only.
277                  StatDlg->Update(Text,Caption,SPECIAL,32767,0);                  StatDlg->Update(Text,Caption,SPECIAL,32767,0);
278          }          }
279  }  }
280  }  }
281    
282  extern "C" {  extern "C" {
283  void CloseStatDlg()  void CloseStatDlg()
284  {  {
285          if (StatDlg==NULL) {          if (StatDlg==NULL) {
286                  return;                  return;
287          }          }
288          StatDlg->DestroyWindow();          StatDlg->DestroyWindow();
289          StatDlg = NULL;          StatDlg = NULL;
290  }  }
291  }  }

Legend:
Removed from v.3226  
changed lines
  Added in v.3227

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26