Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/TTXKanjiMenu/ttxkanjimenu.c

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  /*  /*
2   * TTX KanjiMenu Plugin   * TTX KanjiMenu Plugin
3   *    Copyright (C) 2007 Sunao HARA (naoh@nagoya-u.jp)   *    Copyright (C) 2007 Sunao HARA (naoh@nagoya-u.jp)
4   *    Copyright (C) 2007-2009 TeraTerm Project.   *    Copyright (C) 2007-2009 TeraTerm Project.
5   */   */
6    
7  //// ORIGINAL SOURCE CODE: ttxtest.c  //// ORIGINAL SOURCE CODE: ttxtest.c
8    
9  /* Tera Term extension mechanism  /* Tera Term extension mechanism
10     Robert O'Callahan (roc+tt@cs.cmu.edu)     Robert O'Callahan (roc+tt@cs.cmu.edu)
11        
12     Tera Term by Takashi Teranishi (teranishi@rikaxp.riken.go.jp)     Tera Term by Takashi Teranishi (teranishi@rikaxp.riken.go.jp)
13  */  */
14    
15  #include "teraterm.h"  #include "teraterm.h"
16  #include "tttypes.h"  #include "tttypes.h"
17  #include "ttplugin.h"  #include "ttplugin.h"
18  #include "i18n.h"  #include "i18n.h"
19    
20  #include <stdlib.h>  #include <stdlib.h>
21  #include <stdio.h>  #include <stdio.h>
22  #include <string.h>  #include <string.h>
23    
24  #include "compat_w95.h"  #include "compat_w95.h"
25    
26  #define IniSection "TTXKanjiMenu"  #define IniSection "TTXKanjiMenu"
27  #define ORDER 5000  #define ORDER 5000
28    
29  #define UpdateRecvMenu(val)     \  #define UpdateRecvMenu(val)     \
30          CheckMenuRadioItem(pvar->hmEncode, \          CheckMenuRadioItem(pvar->hmEncode, \
31                             ID_MI_KANJIRECV + IdSJIS, \                             ID_MI_KANJIRECV + IdSJIS, \
32                             ID_MI_KANJIRECV + IdUTF8m, \                             ID_MI_KANJIRECV + IdUTF8m, \
33                             ID_MI_KANJIRECV + (val), \                             ID_MI_KANJIRECV + (val), \
34                             MF_BYCOMMAND)                             MF_BYCOMMAND)
35  #define UpdateSendMenu(val)     \  #define UpdateSendMenu(val)     \
36          CheckMenuRadioItem(pvar->hmEncode, \          CheckMenuRadioItem(pvar->hmEncode, \
37                             ID_MI_KANJISEND + IdSJIS, \                             ID_MI_KANJISEND + IdSJIS, \
38                             ID_MI_KANJISEND + IdUTF8, \                             ID_MI_KANJISEND + IdUTF8, \
39                             ID_MI_KANJISEND + (val), \                             ID_MI_KANJISEND + (val), \
40                             MF_BYCOMMAND)                             MF_BYCOMMAND)
41    
42  static HANDLE hInst; /* Instance handle of TTX*.DLL */  static HANDLE hInst; /* Instance handle of TTX*.DLL */
43    
44  typedef struct {  typedef struct {
45          PTTSet ts;          PTTSet ts;
46          PComVar cv;          PComVar cv;
47          HMENU hmEncode;          HMENU hmEncode;
48          PSetupTerminal origSetupTermDlg;          PSetupTerminal origSetupTermDlg;
49          PReadIniFile origReadIniFile;          PReadIniFile origReadIniFile;
50          PWriteIniFile origWriteIniFile;          PWriteIniFile origWriteIniFile;
51          BOOL UseOneSetting;          BOOL UseOneSetting;
52  } TInstVar;  } TInstVar;
53    
54  static TInstVar FAR * pvar;  static TInstVar FAR * pvar;
55    
56  /* WIN32 allows multiple instances of a DLL */  /* WIN32 allows multiple instances of a DLL */
57  static TInstVar InstVar;  static TInstVar InstVar;
58    
59  /*  /*
60   * This function is called when Tera Term starts up.   * This function is called when Tera Term starts up.
61   */   */
62  static void PASCAL FAR TTXInit(PTTSet ts, PComVar cv) {  static void PASCAL FAR TTXInit(PTTSet ts, PComVar cv) {
63          pvar->ts = ts;          pvar->ts = ts;
64          pvar->cv = cv;          pvar->cv = cv;
65          pvar->origReadIniFile = NULL;          pvar->origReadIniFile = NULL;
66          pvar->origWriteIniFile = NULL;          pvar->origWriteIniFile = NULL;
67          pvar->UseOneSetting = FALSE;          pvar->UseOneSetting = FALSE;
68  }  }
69    
70  static BOOL FAR PASCAL TTXKanjiMenuSetupTerminal(HWND parent, PTTSet ts) {  static BOOL FAR PASCAL TTXKanjiMenuSetupTerminal(HWND parent, PTTSet ts) {
71          WORD orgRecvCode, orgSendCode;          WORD orgRecvCode, orgSendCode;
72          BOOL ret;          BOOL ret;
73    
74          orgRecvCode = pvar->ts->KanjiCode;          orgRecvCode = pvar->ts->KanjiCode;
75          orgSendCode = pvar->ts->KanjiCodeSend;          orgSendCode = pvar->ts->KanjiCodeSend;
76    
77          ret = pvar->origSetupTermDlg(parent, ts);          ret = pvar->origSetupTermDlg(parent, ts);
78    
79          if (ret) {          if (ret) {
80                  if (orgRecvCode == pvar->ts->KanjiCode && orgSendCode != pvar->ts->KanjiCodeSend) {                  if (orgRecvCode == pvar->ts->KanjiCode && orgSendCode != pvar->ts->KanjiCodeSend) {
81                          // 送信コードのみ変更した場合は送信コードに合わせる                          // 送信コードのみ変更した場合は送信コードに合わせる
82                          // ただし、送信:UTF-8 && 受信: UTF-8mの場合は対象外                          // ただし、送信:UTF-8 && 受信: UTF-8mの場合は対象外
83                          if (pvar->ts->KanjiCodeSend != IdUTF8 || pvar->ts->KanjiCode != IdUTF8m) {                          if (pvar->ts->KanjiCodeSend != IdUTF8 || pvar->ts->KanjiCode != IdUTF8m) {
84                                  pvar->ts->KanjiCode = pvar->ts->KanjiCodeSend;                                  pvar->ts->KanjiCode = pvar->ts->KanjiCodeSend;
85                          }                          }
86                  }                  }
87                  else {                  else {
88                          // それ以外は受信コードに合わせる                          // それ以外は受信コードに合わせる
89                          if (pvar->ts->KanjiCode == IdUTF8m) {                          if (pvar->ts->KanjiCode == IdUTF8m) {
90                                  pvar->ts->KanjiCodeSend = IdUTF8;                                  pvar->ts->KanjiCodeSend = IdUTF8;
91                          }                          }
92                          else {                          else {
93                                  pvar->ts->KanjiCodeSend = pvar->ts->KanjiCode;                                  pvar->ts->KanjiCodeSend = pvar->ts->KanjiCode;
94                          }                          }
95                  }                  }
96          }          }
97    
98          return ret;          return ret;
99  }  }
100    
101  static void PASCAL FAR TTXGetUIHooks(TTXUIHooks FAR * hooks) {  static void PASCAL FAR TTXGetUIHooks(TTXUIHooks FAR * hooks) {
102          if (pvar->UseOneSetting) {          if (pvar->UseOneSetting) {
103                  pvar->origSetupTermDlg = *hooks->SetupTerminal;                  pvar->origSetupTermDlg = *hooks->SetupTerminal;
104                  *hooks->SetupTerminal = TTXKanjiMenuSetupTerminal;                  *hooks->SetupTerminal = TTXKanjiMenuSetupTerminal;
105          }          }
106  }  }
107    
108  static void PASCAL FAR TTXKanjiMenuReadIniFile(PCHAR fn, PTTSet ts) {  static void PASCAL FAR TTXKanjiMenuReadIniFile(PCHAR fn, PTTSet ts) {
109          char buff[20];          char buff[20];
110    
111          /* Call original ReadIniFile */          /* Call original ReadIniFile */
112          pvar->origReadIniFile(fn, ts);          pvar->origReadIniFile(fn, ts);
113    
114          GetPrivateProfileString(IniSection, "UseOneSetting", "Off", buff, sizeof(buff), fn);          GetPrivateProfileString(IniSection, "UseOneSetting", "Off", buff, sizeof(buff), fn);
115          if (_stricmp(buff, "on") == 0) {          if (_stricmp(buff, "on") == 0) {
116                  pvar->UseOneSetting = TRUE;                  pvar->UseOneSetting = TRUE;
117                  if (pvar->ts->KanjiCode == IdUTF8m) {                  if (pvar->ts->KanjiCode == IdUTF8m) {
118                          pvar->ts->KanjiCodeSend = IdUTF8;                          pvar->ts->KanjiCodeSend = IdUTF8;
119                  }                  }
120                  else {                  else {
121                          pvar->ts->KanjiCodeSend = pvar->ts->KanjiCode;                          pvar->ts->KanjiCodeSend = pvar->ts->KanjiCode;
122                  }                  }
123          }          }
124          return;          return;
125  }  }
126    
127  static void PASCAL FAR TTXKanjiMenuWriteIniFile(PCHAR fn, PTTSet ts) {  static void PASCAL FAR TTXKanjiMenuWriteIniFile(PCHAR fn, PTTSet ts) {
128          /* Call original WriteIniFile */          /* Call original WriteIniFile */
129          pvar->origWriteIniFile(fn, ts);          pvar->origWriteIniFile(fn, ts);
130    
131          WritePrivateProfileString(IniSection, "UseOneSetting", pvar->UseOneSetting?"On":"Off", fn);          WritePrivateProfileString(IniSection, "UseOneSetting", pvar->UseOneSetting?"On":"Off", fn);
132    
133          return;          return;
134  }  }
135    
136  static void PASCAL FAR TTXGetSetupHooks(TTXSetupHooks FAR *hooks) {  static void PASCAL FAR TTXGetSetupHooks(TTXSetupHooks FAR *hooks) {
137          pvar->origReadIniFile = *hooks->ReadIniFile;          pvar->origReadIniFile = *hooks->ReadIniFile;
138          *hooks->ReadIniFile = TTXKanjiMenuReadIniFile;          *hooks->ReadIniFile = TTXKanjiMenuReadIniFile;
139          pvar->origWriteIniFile = *hooks->WriteIniFile;          pvar->origWriteIniFile = *hooks->WriteIniFile;
140          *hooks->WriteIniFile = TTXKanjiMenuWriteIniFile;          *hooks->WriteIniFile = TTXKanjiMenuWriteIniFile;
141  }  }
142    
143  // #define ID_MI_KANJIMASK 0xFF00  // #define ID_MI_KANJIMASK 0xFF00
144  #define ID_MI_KANJIRECV 54009  #define ID_MI_KANJIRECV 54009
145  #define ID_MI_KANJISEND 54109  #define ID_MI_KANJISEND 54109
146  #define ID_MI_USEONESETTING 54200  #define ID_MI_USEONESETTING 54200
147    
148  static void PASCAL FAR InsertSendKcodeMenu(HMENU menu) {  static void PASCAL FAR InsertSendKcodeMenu(HMENU menu) {
149          UINT flag = MF_BYPOSITION | MF_STRING | MF_CHECKED;          UINT flag = MF_BYPOSITION | MF_STRING | MF_CHECKED;
150    
151          InsertMenu(menu, 5, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);          InsertMenu(menu, 5, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
152    
153          GetI18nStr(IniSection, "MENU_SEND_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),          GetI18nStr(IniSection, "MENU_SEND_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
154                     "Send: S&hift_JIS", pvar->ts->UILanguageFile);                     "Send: S&hift_JIS", pvar->ts->UILanguageFile);
155          InsertMenu(menu, 6, flag, ID_MI_KANJISEND+IdSJIS,  pvar->ts->UIMsg);          InsertMenu(menu, 6, flag, ID_MI_KANJISEND+IdSJIS,  pvar->ts->UIMsg);
156          GetI18nStr(IniSection, "MENU_SEND_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),          GetI18nStr(IniSection, "MENU_SEND_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
157                     "Send: EU&C-JP", pvar->ts->UILanguageFile);                     "Send: EU&C-JP", pvar->ts->UILanguageFile);
158          InsertMenu(menu, 7, flag, ID_MI_KANJISEND+IdEUC,   pvar->ts->UIMsg);          InsertMenu(menu, 7, flag, ID_MI_KANJISEND+IdEUC,   pvar->ts->UIMsg);
159          GetI18nStr(IniSection, "MENU_SEND_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),          GetI18nStr(IniSection, "MENU_SEND_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
160                     "Send: J&IS", pvar->ts->UILanguageFile);                     "Send: J&IS", pvar->ts->UILanguageFile);
161          InsertMenu(menu, 8, flag, ID_MI_KANJISEND+IdJIS,   pvar->ts->UIMsg);          InsertMenu(menu, 8, flag, ID_MI_KANJISEND+IdJIS,   pvar->ts->UIMsg);
162          GetI18nStr(IniSection, "MENU_SEND_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),          GetI18nStr(IniSection, "MENU_SEND_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
163                     "Send: U&TF-8", pvar->ts->UILanguageFile);                     "Send: U&TF-8", pvar->ts->UILanguageFile);
164          InsertMenu(menu, 9, flag, ID_MI_KANJISEND+IdUTF8,  pvar->ts->UIMsg);          InsertMenu(menu, 9, flag, ID_MI_KANJISEND+IdUTF8,  pvar->ts->UIMsg);
165  }  }
166    
167  static void PASCAL FAR DeleteSendKcodeMenu(HMENU menu) {  static void PASCAL FAR DeleteSendKcodeMenu(HMENU menu) {
168          DeleteMenu(menu, 5, MF_BYPOSITION);          DeleteMenu(menu, 5, MF_BYPOSITION);
169          DeleteMenu(menu, 5, MF_BYPOSITION);          DeleteMenu(menu, 5, MF_BYPOSITION);
170          DeleteMenu(menu, 5, MF_BYPOSITION);          DeleteMenu(menu, 5, MF_BYPOSITION);
171          DeleteMenu(menu, 5, MF_BYPOSITION);          DeleteMenu(menu, 5, MF_BYPOSITION);
172          DeleteMenu(menu, 5, MF_BYPOSITION);          DeleteMenu(menu, 5, MF_BYPOSITION);
173  }  }
174    
175  static void PASCAL FAR UpdateRecvMenuCaption(HMENU menu, BOOL UseOneSetting) {  static void PASCAL FAR UpdateRecvMenuCaption(HMENU menu, BOOL UseOneSetting) {
176          if (UseOneSetting) {          if (UseOneSetting) {
177                  GetI18nStr(IniSection, "MENU_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
178                             "Recv/Send: &Shift_JIS", pvar->ts->UILanguageFile);                             "Recv/Send: &Shift_JIS", pvar->ts->UILanguageFile);
179                  ModifyMenu(menu, ID_MI_KANJIRECV+IdSJIS,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdSJIS,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);
180                  GetI18nStr(IniSection, "MENU_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
181                             "Recv/Send: &EUC-JP", pvar->ts->UILanguageFile);                             "Recv/Send: &EUC-JP", pvar->ts->UILanguageFile);
182                  ModifyMenu(menu, ID_MI_KANJIRECV+IdEUC,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdEUC,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);
183                  GetI18nStr(IniSection, "MENU_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
184                             "Recv/Send: &JIS", pvar->ts->UILanguageFile);                             "Recv/Send: &JIS", pvar->ts->UILanguageFile);
185                  ModifyMenu(menu, ID_MI_KANJIRECV+IdJIS,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdJIS,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);
186                  GetI18nStr(IniSection, "MENU_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
187                             "Recv/Send: &UTF-8", pvar->ts->UILanguageFile);                             "Recv/Send: &UTF-8", pvar->ts->UILanguageFile);
188                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);
189                  GetI18nStr(IniSection, "MENU_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
190                             "Recv: UTF-8&m/Send: UTF-8", pvar->ts->UILanguageFile);                             "Recv: UTF-8&m/Send: UTF-8", pvar->ts->UILanguageFile);
191                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8m, MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8m, MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);
192          }          }
193          else {          else {
194                  GetI18nStr(IniSection, "MENU_RECV_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
195                             "Recv: &Shift_JIS", pvar->ts->UILanguageFile);                             "Recv: &Shift_JIS", pvar->ts->UILanguageFile);
196                  ModifyMenu(menu, ID_MI_KANJIRECV+IdSJIS,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdSJIS,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);
197                  GetI18nStr(IniSection, "MENU_RECV_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
198                             "Recv: &EUC-JP", pvar->ts->UILanguageFile);                             "Recv: &EUC-JP", pvar->ts->UILanguageFile);
199                  ModifyMenu(menu, ID_MI_KANJIRECV+IdEUC,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdEUC,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);
200                  GetI18nStr(IniSection, "MENU_RECV_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
201                             "Recv: &JIS", pvar->ts->UILanguageFile);                             "Recv: &JIS", pvar->ts->UILanguageFile);
202                  ModifyMenu(menu, ID_MI_KANJIRECV+IdJIS,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdJIS,   MF_BYCOMMAND, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);
203                  GetI18nStr(IniSection, "MENU_RECV_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
204                             "Recv: &UTF-8", pvar->ts->UILanguageFile);                             "Recv: &UTF-8", pvar->ts->UILanguageFile);
205                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8,  MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);
206                  GetI18nStr(IniSection, "MENU_RECV_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
207                             "Recv: UTF-8&m", pvar->ts->UILanguageFile);                             "Recv: UTF-8&m", pvar->ts->UILanguageFile);
208                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8m, MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);                  ModifyMenu(menu, ID_MI_KANJIRECV+IdUTF8m, MF_BYCOMMAND, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);
209          }          }
210  }  }
211    
212  /*  /*
213   * This function is called when Tera Term creates a new menu.   * This function is called when Tera Term creates a new menu.
214   */   */
215  static void PASCAL FAR TTXModifyMenu(HMENU menu) {  static void PASCAL FAR TTXModifyMenu(HMENU menu) {
216          UINT flag = MF_ENABLED;          UINT flag = MF_ENABLED;
217    
218          // 言語が日本語のときのみメニューに追加されるようにした。 (2007.7.14 maya)          // 言語が日本語のときのみメニューに追加されるようにした。 (2007.7.14 maya)
219          if (pvar->ts->Language != IdJapanese) {          if (pvar->ts->Language != IdJapanese) {
220                  return;                  return;
221          }          }
222    
223          {          {
224                  OSVERSIONINFO osvi;                  OSVERSIONINFO osvi;
225                  MENUITEMINFO mi;                  MENUITEMINFO mi;
226    
227                  pvar->hmEncode = CreateMenu();                  pvar->hmEncode = CreateMenu();
228    
229                  // Windows 95 でメニューが表示されないのでバージョンチェックを入れる (2009.2.18 maya)                  // Windows 95 でメニューが表示されないのでバージョンチェックを入れる (2009.2.18 maya)
230                  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);                  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
231                  GetVersionEx(&osvi);                  GetVersionEx(&osvi);
232                  if (osvi.dwMajorVersion >= 5) {                  if (osvi.dwMajorVersion >= 5) {
233                          memset(&mi, 0, sizeof(MENUITEMINFO));                          memset(&mi, 0, sizeof(MENUITEMINFO));
234                          mi.cbSize = sizeof(MENUITEMINFO);                          mi.cbSize = sizeof(MENUITEMINFO);
235                  }                  }
236                  else {                  else {
237                          memset(&mi, 0, sizeof(MENUITEMINFO)-sizeof(HBITMAP));                          memset(&mi, 0, sizeof(MENUITEMINFO)-sizeof(HBITMAP));
238                          mi.cbSize = sizeof(MENUITEMINFO)-sizeof(HBITMAP);                          mi.cbSize = sizeof(MENUITEMINFO)-sizeof(HBITMAP);
239                  }                  }
240                  mi.fMask  = MIIM_TYPE | MIIM_SUBMENU;                  mi.fMask  = MIIM_TYPE | MIIM_SUBMENU;
241                  mi.fType  = MFT_STRING;                  mi.fType  = MFT_STRING;
242                  mi.hSubMenu = pvar->hmEncode;                  mi.hSubMenu = pvar->hmEncode;
243                  GetI18nStr(IniSection, "MENU_KANJI", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_KANJI", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
244                             "&KanjiCode", pvar->ts->UILanguageFile);                             "&KanjiCode", pvar->ts->UILanguageFile);
245                  mi.dwTypeData = pvar->ts->UIMsg;                  mi.dwTypeData = pvar->ts->UIMsg;
246                  InsertMenuItem(menu, ID_HELPMENU, FALSE, &mi);                  InsertMenuItem(menu, ID_HELPMENU, FALSE, &mi);
247    
248                  flag = MF_STRING|MF_CHECKED;                  flag = MF_STRING|MF_CHECKED;
249                  GetI18nStr(IniSection, "MENU_RECV_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_SJIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
250                             "Recv: &Shift_JIS", pvar->ts->UILanguageFile);                             "Recv: &Shift_JIS", pvar->ts->UILanguageFile);
251                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdSJIS,  pvar->ts->UIMsg);
252                  GetI18nStr(IniSection, "MENU_RECV_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_EUCJP", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
253                             "Recv: &EUC-JP", pvar->ts->UILanguageFile);                             "Recv: &EUC-JP", pvar->ts->UILanguageFile);
254                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdEUC,   pvar->ts->UIMsg);
255                  GetI18nStr(IniSection, "MENU_RECV_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_JIS", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
256                             "Recv: &JIS", pvar->ts->UILanguageFile);                             "Recv: &JIS", pvar->ts->UILanguageFile);
257                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdJIS,   pvar->ts->UIMsg);
258                  GetI18nStr(IniSection, "MENU_RECV_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_UTF8", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
259                             "Recv: &UTF-8", pvar->ts->UILanguageFile);                             "Recv: &UTF-8", pvar->ts->UILanguageFile);
260                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdUTF8,  pvar->ts->UIMsg);
261                  GetI18nStr(IniSection, "MENU_RECV_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_RECV_UTF8m", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
262                             "Recv: UTF-8&m", pvar->ts->UILanguageFile);                             "Recv: UTF-8&m", pvar->ts->UILanguageFile);
263                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_KANJIRECV+IdUTF8m, pvar->ts->UIMsg);
264    
265                  if (!pvar->UseOneSetting) {                  if (!pvar->UseOneSetting) {
266                          InsertSendKcodeMenu(pvar->hmEncode);                          InsertSendKcodeMenu(pvar->hmEncode);
267                  }                  }
268                  else {                  else {
269                          UpdateRecvMenuCaption(pvar->hmEncode, pvar->UseOneSetting);                          UpdateRecvMenuCaption(pvar->hmEncode, pvar->UseOneSetting);
270                  }                  }
271    
272                  AppendMenu(pvar->hmEncode, MF_SEPARATOR, 0, NULL);                  AppendMenu(pvar->hmEncode, MF_SEPARATOR, 0, NULL);
273                  GetI18nStr(IniSection, "MENU_USE_ONE_SETTING", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),                  GetI18nStr(IniSection, "MENU_USE_ONE_SETTING", pvar->ts->UIMsg, sizeof(pvar->ts->UIMsg),
274                             "Use &one setting", pvar->ts->UILanguageFile);                             "Use &one setting", pvar->ts->UILanguageFile);
275                  AppendMenu(pvar->hmEncode, flag, ID_MI_USEONESETTING ,  pvar->ts->UIMsg);                  AppendMenu(pvar->hmEncode, flag, ID_MI_USEONESETTING ,  pvar->ts->UIMsg);
276    
277                  UpdateRecvMenu(pvar->ts->KanjiCode);                  UpdateRecvMenu(pvar->ts->KanjiCode);
278                  if (!pvar->UseOneSetting) {                  if (!pvar->UseOneSetting) {
279                          UpdateSendMenu(pvar->ts->KanjiCodeSend);                          UpdateSendMenu(pvar->ts->KanjiCodeSend);
280                  }                  }
281    
282                  CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | (pvar->UseOneSetting)?MF_CHECKED:0);                  CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | (pvar->UseOneSetting)?MF_CHECKED:0);
283          }          }
284  }  }
285    
286    
287  /*  /*
288   * This function is called when Tera Term pops up a submenu menu.   * This function is called when Tera Term pops up a submenu menu.
289   */   */
290  static void PASCAL FAR TTXModifyPopupMenu(HMENU menu) {  static void PASCAL FAR TTXModifyPopupMenu(HMENU menu) {
291          // メニューが呼び出されたら、最新の設定に更新する。(2007.5.25 yutaka)          // メニューが呼び出されたら、最新の設定に更新する。(2007.5.25 yutaka)
292          UpdateRecvMenu(pvar->ts->KanjiCode);          UpdateRecvMenu(pvar->ts->KanjiCode);
293          if (!pvar->UseOneSetting) {          if (!pvar->UseOneSetting) {
294                  UpdateSendMenu(pvar->ts->KanjiCodeSend);                  UpdateSendMenu(pvar->ts->KanjiCodeSend);
295          }          }
296          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | (pvar->UseOneSetting)?MF_CHECKED:0);          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | (pvar->UseOneSetting)?MF_CHECKED:0);
297  }  }
298    
299    
300  /*  /*
301   * This function is called when Tera Term receives a command message.   * This function is called when Tera Term receives a command message.
302   */   */
303  static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) {  static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) {
304          WORD val;          WORD val;
305    
306          if ((cmd > ID_MI_KANJIRECV) && (cmd <= ID_MI_KANJIRECV+IdUTF8m)) {          if ((cmd > ID_MI_KANJIRECV) && (cmd <= ID_MI_KANJIRECV+IdUTF8m)) {
307                  // 範囲チェックを追加                  // 範囲チェックを追加
308                  // TTProxyのバージョンダイアログを開くと、当該ハンドラが呼ばれ、誤動作していたのを修正。                  // TTProxyのバージョンダイアログを開くと、当該ハンドラが呼ばれ、誤動作していたのを修正。
309                  // (2007.7.13 yutaka)                  // (2007.7.13 yutaka)
310                  val = cmd - ID_MI_KANJIRECV;                  val = cmd - ID_MI_KANJIRECV;
311                  pvar->cv->KanjiCodeEcho = pvar->ts->KanjiCode = val;                  pvar->cv->KanjiCodeEcho = pvar->ts->KanjiCode = val;
312                  if (pvar->UseOneSetting) {                  if (pvar->UseOneSetting) {
313                          if (val == IdUTF8m) {                          if (val == IdUTF8m) {
314                                  val = IdUTF8;                                  val = IdUTF8;
315                          }                          }
316                          pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;                          pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;
317                  }                  }
318                  return UpdateRecvMenu(pvar->ts->KanjiCode)?1:0;                  return UpdateRecvMenu(pvar->ts->KanjiCode)?1:0;
319          }          }
320          else if ((cmd > ID_MI_KANJISEND) && (cmd <= ID_MI_KANJISEND+IdUTF8)) {          else if ((cmd > ID_MI_KANJISEND) && (cmd <= ID_MI_KANJISEND+IdUTF8)) {
321                  val = cmd - ID_MI_KANJISEND;                  val = cmd - ID_MI_KANJISEND;
322                  pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;                  pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;
323                  if (pvar->UseOneSetting) {                  if (pvar->UseOneSetting) {
324                          pvar->cv->KanjiCodeEcho = pvar->ts->KanjiCode = val;                          pvar->cv->KanjiCodeEcho = pvar->ts->KanjiCode = val;
325                          return UpdateRecvMenu(pvar->ts->KanjiCode)?1:0;                          return UpdateRecvMenu(pvar->ts->KanjiCode)?1:0;
326                  }                  }
327                  else {                  else {
328                          return UpdateSendMenu(pvar->ts->KanjiCodeSend)?1:0;                          return UpdateSendMenu(pvar->ts->KanjiCodeSend)?1:0;
329                  }                  }
330          }          }
331          else if (cmd == ID_MI_USEONESETTING) {          else if (cmd == ID_MI_USEONESETTING) {
332                  if (pvar->UseOneSetting) {                  if (pvar->UseOneSetting) {
333                          pvar->UseOneSetting = FALSE;                          pvar->UseOneSetting = FALSE;
334                          InsertSendKcodeMenu(pvar->hmEncode);                          InsertSendKcodeMenu(pvar->hmEncode);
335                          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND);                          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND);
336                  }                  }
337                  else {                  else {
338                          pvar->UseOneSetting = TRUE;                          pvar->UseOneSetting = TRUE;
339    
340                          if (pvar->ts->KanjiCode == IdUTF8m) {                          if (pvar->ts->KanjiCode == IdUTF8m) {
341                                  val = IdUTF8;                                  val = IdUTF8;
342                          }                          }
343                          else {                          else {
344                                  val = pvar->ts->KanjiCode;                                  val = pvar->ts->KanjiCode;
345                          }                          }
346                          pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;                          pvar->cv->KanjiCodeSend = pvar->ts->KanjiCodeSend = val;
347    
348                          DeleteSendKcodeMenu(pvar->hmEncode);                          DeleteSendKcodeMenu(pvar->hmEncode);
349                          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | MF_CHECKED);                          CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | MF_CHECKED);
350                  }                  }
351                  UpdateRecvMenuCaption(pvar->hmEncode, pvar->UseOneSetting);                  UpdateRecvMenuCaption(pvar->hmEncode, pvar->UseOneSetting);
352                  return 1;                  return 1;
353          }          }
354    
355          return 0;          return 0;
356  }  }
357    
358    
359  /*  /*
360   * This record contains all the information that the extension forwards to the   * This record contains all the information that the extension forwards to the
361   * main Tera Term code. It mostly consists of pointers to the above functions.   * main Tera Term code. It mostly consists of pointers to the above functions.
362   * Any of the function pointers can be replaced with NULL, in which case   * Any of the function pointers can be replaced with NULL, in which case
363   * Tera Term will just ignore that function and assume default behaviour, which   * Tera Term will just ignore that function and assume default behaviour, which
364   * means "do nothing".   * means "do nothing".
365   */   */
366  static TTXExports Exports = {  static TTXExports Exports = {
367  /* This must contain the size of the structure. See below for its usage. */  /* This must contain the size of the structure. See below for its usage. */
368          sizeof(TTXExports),          sizeof(TTXExports),
369    
370  /* This is the load order number of this DLL. */  /* This is the load order number of this DLL. */
371          ORDER,          ORDER,
372    
373  /* Now we just list the functions that we've implemented. */  /* Now we just list the functions that we've implemented. */
374          TTXInit,          TTXInit,
375          TTXGetUIHooks,          TTXGetUIHooks,
376          TTXGetSetupHooks,          TTXGetSetupHooks,
377          NULL, // TTXOpenTCP,          NULL, // TTXOpenTCP,
378          NULL, // TTXCloseTCP,          NULL, // TTXCloseTCP,
379          NULL, // TTXSetWinSize,          NULL, // TTXSetWinSize,
380          TTXModifyMenu,          TTXModifyMenu,
381          TTXModifyPopupMenu,          TTXModifyPopupMenu,
382          TTXProcessCommand,          TTXProcessCommand,
383          NULL, // TTXEnd,          NULL, // TTXEnd,
384          NULL  // TTXSetCommandLine          NULL  // TTXSetCommandLine
385  };  };
386    
387  BOOL __declspec(dllexport) PASCAL FAR TTXBind(WORD Version, TTXExports FAR * exports) {  BOOL __declspec(dllexport) PASCAL FAR TTXBind(WORD Version, TTXExports FAR * exports) {
388          int size = sizeof(Exports) - sizeof(exports->size);          int size = sizeof(Exports) - sizeof(exports->size);
389          /* do version checking if necessary */          /* do version checking if necessary */
390          /* if (Version!=TTVERSION) return FALSE; */          /* if (Version!=TTVERSION) return FALSE; */
391    
392          if (size > exports->size) {          if (size > exports->size) {
393                  size = exports->size;                  size = exports->size;
394          }          }
395          memcpy((char FAR *)exports + sizeof(exports->size),          memcpy((char FAR *)exports + sizeof(exports->size),
396                 (char FAR *)&Exports + sizeof(exports->size),                 (char FAR *)&Exports + sizeof(exports->size),
397                 size);                 size);
398          return TRUE;          return TRUE;
399  }  }
400    
401  BOOL WINAPI DllMain(HANDLE hInstance,  BOOL WINAPI DllMain(HANDLE hInstance,
402                      ULONG ul_reason_for_call,                      ULONG ul_reason_for_call,
403                      LPVOID lpReserved)                      LPVOID lpReserved)
404  {  {
405          switch( ul_reason_for_call ) {          switch( ul_reason_for_call ) {
406                  case DLL_THREAD_ATTACH:                  case DLL_THREAD_ATTACH:
407                          /* do thread initialization */                          /* do thread initialization */
408                          break;                          break;
409                  case DLL_THREAD_DETACH:                  case DLL_THREAD_DETACH:
410                          /* do thread cleanup */                          /* do thread cleanup */
411                          break;                          break;
412                  case DLL_PROCESS_ATTACH:                  case DLL_PROCESS_ATTACH:
413                          /* do process initialization */                          /* do process initialization */
414                          DoCover_IsDebuggerPresent();                          DoCover_IsDebuggerPresent();
415                          hInst = hInstance;                          hInst = hInstance;
416                          pvar = &InstVar;                          pvar = &InstVar;
417                          break;                          break;
418                  case DLL_PROCESS_DETACH:                  case DLL_PROCESS_DETACH:
419                          /* do process cleanup */                          /* do process cleanup */
420                          break;                          break;
421          }          }
422          return TRUE;          return TRUE;
423  }  }

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