• R/O
  • SSH
  • HTTPS

ttxmacromenu: Commit


Commit MetaInfo

Revision9 (tree)
Time2013-06-01 14:34:46
Authorbibineko

Log Message

(empty log message)

Change Summary

Incremental Difference

--- trunk/TTXMacroMenu.c (revision 8)
+++ trunk/TTXMacroMenu.c (revision 9)
@@ -1,7 +1,10 @@
11 /**
22 * TTXMacroMenu.c
3+ *
4+ * Last Update : 2013/06/01
5+ * Author : chibiegg, bibineko
6+ * URL : http://sourceforge.jp/projects/ttxmacromenu/
37 *
4- *
58 */
69 #include "teraterm.h"
710 #include "tttypes.h"
@@ -19,7 +22,7 @@
1922 #define SECTION "TTXMacroMenu"
2023
2124 #define ID_MENUID_BASE 55101
22-#define MAX_MENU_ITEMS 10
25+#define MAX_MENU_ITEMS 99
2326
2427 static HANDLE hInst; /* Instance handle of TTX*.DLL */
2528
@@ -26,11 +29,12 @@
2629 typedef struct {
2730 PTTSet ts;
2831 PComVar cv;
29- HMENU ResizeMenu; /* Menu Hander for Menu Items */
32+ HMENU MacroMenu; /* Menu Hander for Menu Items */
3033 BOOL ReplaceTermDlg;
3134 PReadIniFile origReadIniFile;
3235 int MenuItems; /* Number of Menu Items */
3336 char MacroList[MAX_MENU_ITEMS][512];
37+ int MacroKeycode[MAX_MENU_ITEMS];
3438 } TInstVar;
3539
3640 static TInstVar FAR * pvar;
@@ -39,7 +43,6 @@
3943 static TInstVar InstVar;
4044
4145
42-
4346 /**
4447 * InitMenu
4548 */
@@ -47,21 +50,21 @@
4750 char *fname;
4851 int i;
4952
50- if (pvar->ResizeMenu != NULL) {
51- DestroyMenu(pvar->ResizeMenu);
53+ if (pvar->MacroMenu != NULL) {
54+ DestroyMenu(pvar->MacroMenu);
5255 }
5356
5457 if (pvar->MenuItems > 0) {
55- pvar->ResizeMenu = CreateMenu();
58+ pvar->MacroMenu = CreateMenu();
5659
5760 for (i=0; i < pvar->MenuItems; i++) {
5861 fname = pvar->MacroList[i];
5962
60- InsertMenu(pvar->ResizeMenu, -1, MF_BYPOSITION, ID_MENUID_BASE+i, fname);
63+ InsertMenu(pvar->MacroMenu, -1, MF_BYPOSITION, ID_MENUID_BASE+i, fname);
6164 }
6265 }
6366 else {
64- pvar->ResizeMenu = NULL;
67+ pvar->MacroMenu = NULL;
6568 }
6669 }
6770
@@ -69,7 +72,7 @@
6972 pvar->ts = ts;
7073 pvar->cv = cv;
7174 pvar->ReplaceTermDlg = FALSE;
72- pvar->ResizeMenu = NULL;
75+ pvar->MacroMenu = NULL;
7376 pvar->MenuItems = 0;
7477 }
7578
@@ -91,17 +94,35 @@
9194 * TTXMacroMenuReadIniFile
9295 */
9396 static void PASCAL FAR TTXMacroMenuReadIniFile(PCHAR fn, PTTSet ts) {
94- int i;
95- char Key[20], FileName[512];
97+ int i,itemnum;
98+ size_t k;
99+ char IniFileName[512];
100+ char Key[20], Temp[512], FileName[512];
101+ int keycode,keytype;
96102
103+
97104 (pvar->origReadIniFile)(fn, ts);
105+
106+ itemnum=0;
107+ for (i=0;i<NumOfUserKey;i++) {
108+ _snprintf_s(Key, sizeof(Key), _TRUNCATE, "User%d", i+1);
109+ memcpy(IniFileName,fn,strlen(fn)+1);
110+ for(k=strlen(IniFileName);k>0;k--){
111+ if(IniFileName[k] == '\\'){
112+ memcpy(&IniFileName[k+1],"KEYBOARD.CNF",13);
113+ break;
114+ }
115+ }
98116
99- for (i=0; i<MAX_MENU_ITEMS; i++) {
100- _snprintf_s(Key, sizeof(Key), _TRUNCATE, "TTL%d", i+1);
101- GetPrivateProfileString(SECTION, Key, "\n", FileName, sizeof(FileName), fn);
117+ GetPrivateProfileString("User keys", Key, "", Temp, sizeof(Temp),IniFileName);
102118
103- if ( (strlen(FileName) > 0) && PathFileExists(FileName) ) {
104- strcpy_s(pvar->MacroList[i],512, FileName);
119+ if ( (strlen(Temp) > 0) ) {
120+ sscanf_s(Temp,"%d,%d,%s",&keycode,&keytype,FileName);
121+ if( keytype==2 && PathFileExists(FileName)){
122+ strcpy_s(pvar->MacroList[itemnum],512, FileName);
123+ pvar->MacroKeycode[itemnum] = keycode;
124+ itemnum++;
125+ }
105126 }
106127 else {
107128 break;
@@ -108,7 +129,7 @@
108129 }
109130 }
110131
111- pvar->MenuItems = i;
132+ pvar->MenuItems = itemnum;
112133 }
113134
114135 static void PASCAL FAR TTXGetSetupHooks(TTXSetupHooks FAR * hooks) {
@@ -126,7 +147,7 @@
126147 mi.cbSize = sizeof(mi);
127148 mi.fMask = MIIM_TYPE | MIIM_SUBMENU;
128149 mi.fType = MFT_STRING;
129- mi.hSubMenu = pvar->ResizeMenu;
150+ mi.hSubMenu = pvar->MacroMenu;
130151 mi.dwTypeData = "TTXMM";
131152 InsertMenuItem(menu, ID_HELPMENU, FALSE, &mi);
132153 }
@@ -140,33 +161,13 @@
140161 */
141162 static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) {
142163 int num;
164+
143165 if (cmd >= ID_MENUID_BASE && cmd < ID_MENUID_BASE + pvar->MenuItems) {
144166 num = cmd - ID_MENUID_BASE;
145167
146- /*
147- if (pvar->ResizeList[num][0] > 0)
148- pvar->ts->TerminalWidth = pvar->ResizeList[num][0];
149- if (pvar->ResizeList[num][1] > 0)
150- pvar->ts->TerminalHeight = pvar->ResizeList[num][1];
151- pvar->ReplaceTermDlg = TRUE;
152- */
153-
154- // Call Setup-Terminal dialog
155- //SendMessage(hWin, WM_COMMAND, MAKELONG(ID_SETUP_TERMINAL, 0), 0);
156- //SendMessage(hWin, WM_KEYDOWN, VK_SPACE, MAKELPARAM(MAKEWORD(1,0),MAKEWORD(0,64)));
157- //SendMessage(hWin, WM_KEYUP, VK_SPACE, NULL);]
158- if(num==0){
159- //MessageBox(pvar->cv->HWin,"Exec","",0);
160- //PostMessage(hWin, WM_KEYDOWN, VK_CONTROL, 0);
161- PostMessage(hWin, WM_KEYDOWN, VK_F8, MAKELPARAM(MAKEWORD(1,0),MAKEWORD(0,64)));
162-
163- PostMessage(hWin, WM_KEYUP, VK_F8, 0);
164- //PostMessage(hWin, WM_KEYUP, VK_CONTROL, 0);
165-
166- /*
167- PostMessage(hWin, WM_KEYDOWN, MapVirtualKey(2,1), MAKELPARAM(MAKEWORD(1,0),MAKEWORD(0,64)) );
168- PostMessage(hWin, WM_KEYUP, MapVirtualKey(2,1), 0);
169- */
168+ if(num>=0 && num<pvar->MenuItems){
169+ PostMessage(hWin, WM_KEYDOWN, MapVirtualKey(pvar->MacroKeycode[num],1), MAKELPARAM(MAKEWORD(1,0),MAKEWORD(0,64)));
170+ PostMessage(hWin, WM_KEYUP, MapVirtualKey(pvar->MacroKeycode[num],1), 0);
170171 }
171172 return 1;
172173 }
Show on old repository browser