Added saved sessions submenu from system menu.
authorowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Thu, 28 Oct 1999 16:07:25 +0000 (16:07 +0000)
committerowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Thu, 28 Oct 1999 16:07:25 +0000 (16:07 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@263 cda61777-01e9-0310-a592-d414129be87e

putty.h
windlg.c
window.c

diff --git a/putty.h b/putty.h
index 1a623ac..5628f9d 100644 (file)
--- 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.
index 79faca3..8a200e9 100644 (file)
--- 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];
index 6b0f1db..4adb682 100644 (file)
--- a/window.c
+++ b/window.c
 #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;