From 0a4aa9846f76ae9aeb34ea1a33862890b1797a75 Mon Sep 17 00:00:00 2001 From: owen Date: Thu, 28 Oct 1999 16:07:25 +0000 Subject: [PATCH] Added saved sessions submenu from system menu. git-svn-id: svn://svn.tartarus.org/sgt/putty@263 cda61777-01e9-0310-a592-d414129be87e --- putty.h | 4 ++++ windlg.c | 7 +------ window.c | 24 +++++++++++++++++++++--- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/putty.h b/putty.h index 1a623ac2..5628f9d6 100644 --- a/putty.h +++ b/putty.h @@ -182,6 +182,10 @@ void lognegot (char *); void shownegot (HWND); void showabout (HWND); void verify_ssh_host_key(char *host, struct RSAKey *key); +void get_sesslist(int allocate); + +int nsessions; +char **sessions; /* * Exports from terminal.c. diff --git a/windlg.c b/windlg.c index 79faca3a..8a200e91 100644 --- a/windlg.c +++ b/windlg.c @@ -15,8 +15,6 @@ static const char *const puttystr = PUTTY_REG_POS "\\Sessions"; -static void get_sesslist(int allocate); - static char **negots = NULL; static int nnegots = 0, negsize = 0; static HWND logbox = NULL, abtbox = NULL; @@ -95,9 +93,6 @@ static void gppi(HKEY key, LPCTSTR name, int def, int *i) { static HINSTANCE hinst; -static char **sessions; -static int nsessions; - static int readytogo; static void save_settings (char *section, int do_host) { @@ -1225,7 +1220,7 @@ static int CALLBACK ReconfDlgProc (HWND hwnd, UINT msg, RECONF_NPANELS, reconfp, &page); } -static void get_sesslist(int allocate) { +void get_sesslist(int allocate) { static char *buffer; int buflen, bufsize, i, ret; char otherbuf[2048]; diff --git a/window.c b/window.c index 6b0f1dba..4adb682b 100644 --- a/window.c +++ b/window.c @@ -28,6 +28,10 @@ #define IDM_TEL_EOR 518 #define IDM_TEL_EOF 519 #define IDM_ABOUT 520 +#define IDM_SAVEDSESS 521 + +#define IDM_SAVED_MIN 4096 +#define IDM_SAVED_MAX 8192 #define WM_IGNORE_SIZE (WM_USER + 2) #define WM_IGNORE_CLIP (WM_USER + 3) @@ -311,7 +315,8 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) { */ { HMENU m = GetSystemMenu (hwnd, FALSE); - HMENU p; + HMENU p,s; + int i; AppendMenu (m, MF_SEPARATOR, 0, 0); if (cfg.protocol == PROT_TELNET) { @@ -338,6 +343,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) { } AppendMenu (m, MF_ENABLED, IDM_NEWSESS, "New Session"); AppendMenu (m, MF_ENABLED, IDM_DUPSESS, "Duplicate Session"); + s = CreateMenu(); + get_sesslist(TRUE); + for (i = 1 ; i < ((nsessions < 256) ? nsessions : 256) ; i++) + AppendMenu (s, MF_ENABLED, IDM_SAVED_MIN + (16 * i) , sessions[i]); + AppendMenu (m, MF_POPUP | MF_ENABLED, (UINT) s, "Saved Sessions"); AppendMenu (m, MF_ENABLED, IDM_RECONF, "Change Settings"); AppendMenu (m, MF_SEPARATOR, 0, 0); AppendMenu (m, MF_ENABLED, IDM_CLRSB, "Clear Scrollback"); @@ -605,13 +615,14 @@ static int WINAPI WndProc (HWND hwnd, UINT message, case WM_DESTROY: PostQuitMessage (0); return 0; - case WM_SYSCOMMAND: + case WM_SYSCOMMAND: switch (wParam) { case IDM_SHOWLOG: shownegot(hwnd); break; case IDM_NEWSESS: case IDM_DUPSESS: + case IDM_SAVEDSESS: { char b[2048]; char c[30], *cl; @@ -647,8 +658,11 @@ static int WINAPI WndProc (HWND hwnd, UINT message, } sprintf(c, "putty &%08x", filemap); cl = c; + } else if (wParam == IDM_SAVEDSESS) { + sprintf(c, "putty @%s", sessions[(lParam - IDM_SAVED_MIN) / 16]); + cl = c; } else - cl = NULL; + cl = NULL; GetModuleFileName (NULL, b, sizeof(b)-1); si.cb = sizeof(si); @@ -719,6 +733,10 @@ static int WINAPI WndProc (HWND hwnd, UINT message, case IDM_ABOUT: showabout (hwnd); break; + default: + if (wParam >= IDM_SAVED_MIN && wParam <= IDM_SAVED_MAX) { + SendMessage(hwnd, WM_SYSCOMMAND, IDM_SAVEDSESS, wParam); + } } break; -- 2.11.0