Add the About and Licence boxes to Pageant
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 29 Sep 2000 08:43:06 +0000 (08:43 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 29 Sep 2000 08:43:06 +0000 (08:43 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@648 cda61777-01e9-0310-a592-d414129be87e

pageant.c
pageant.rc

index c3a2a8a..0c341ea 100644 (file)
--- a/pageant.c
+++ b/pageant.c
@@ -24,6 +24,7 @@
 
 #define IDM_CLOSE    0x0010
 #define IDM_VIEWKEYS 0x0020
+#define IDM_ABOUT    0x0030
 
 #define APPNAME "Pageant"
 
 #define SSH_AGENTC_ADD_RSA_IDENTITY          7
 #define SSH_AGENTC_REMOVE_RSA_IDENTITY       8
 
+extern char ver[];
+
 HINSTANCE instance;
 HWND hwnd;
 HWND keylist;
+HWND aboutbox;
 HMENU systray_menu;
 
 tree234 *rsakeys;
@@ -91,6 +95,59 @@ struct PassphraseProcStruct {
 };
 
 /*
+ * Dialog-box function for the Licence box.
+ */
+static int CALLBACK LicenceProc (HWND hwnd, UINT msg,
+                                WPARAM wParam, LPARAM lParam) {
+    switch (msg) {
+      case WM_INITDIALOG:
+       return 1;
+      case WM_COMMAND:
+       switch (LOWORD(wParam)) {
+         case IDOK:
+            EndDialog(hwnd, 1);
+           return 0;
+       }
+       return 0;
+      case WM_CLOSE:
+       EndDialog(hwnd, 1);
+       return 0;
+    }
+    return 0;
+}
+
+/*
+ * Dialog-box function for the About box.
+ */
+static int CALLBACK AboutProc (HWND hwnd, UINT msg,
+                              WPARAM wParam, LPARAM lParam) {
+    switch (msg) {
+      case WM_INITDIALOG:
+        SetDlgItemText (hwnd, 100, ver);
+       return 1;
+      case WM_COMMAND:
+       switch (LOWORD(wParam)) {
+         case IDOK:
+           aboutbox = NULL;
+           DestroyWindow (hwnd);
+           return 0;
+         case 101:
+           EnableWindow(hwnd, 0);
+           DialogBox (instance, MAKEINTRESOURCE(214), NULL, LicenceProc);
+           EnableWindow(hwnd, 1);
+            SetActiveWindow(hwnd);
+           return 0;
+       }
+       return 0;
+      case WM_CLOSE:
+       aboutbox = NULL;
+       DestroyWindow (hwnd);
+       return 0;
+    }
+    return 0;
+}
+
+/*
  * Dialog-box function for the passphrase box.
  */
 static int CALLBACK PassphraseProc(HWND hwnd, UINT msg,
@@ -192,7 +249,7 @@ void add_keyfile(char *filename) {
     } while (ret == -1);
     if (comment) free(comment);
     if (ret == 0) {
-        MessageBox(NULL, "Couldn't load public key.", APPNAME,
+        MessageBox(NULL, "Couldn't load private key.", APPNAME,
                    MB_OK | MB_ICONERROR);
         free(key);
         return;
@@ -453,7 +510,7 @@ static int CALLBACK KeyListProc(HWND hwnd, UINT msg,
                 of.nMaxFile = sizeof(filename);
                 of.lpstrFileTitle = NULL;
                 of.lpstrInitialDir = NULL;
-                of.lpstrTitle = "Select Public Key File";
+                of.lpstrTitle = "Select Private Key File";
                 of.Flags = 0;
                 if (GetOpenFileName(&of)) {
                     add_keyfile(filename);
@@ -534,6 +591,20 @@ static LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
                               SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
             }
             break;
+          case IDM_ABOUT:
+            if (!aboutbox) {
+                aboutbox = CreateDialog (instance, MAKEINTRESOURCE(213),
+                                         NULL, AboutProc);
+                ShowWindow (aboutbox, SW_SHOWNORMAL);
+                /* 
+                 * Sometimes the window comes up minimised / hidden
+                 * for no obvious reason. Prevent this.
+                 */
+                SetForegroundWindow(aboutbox);
+                SetWindowPos (aboutbox, HWND_TOP, 0, 0, 0, 0,
+                              SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
+            }
+            break;
         }
         break;
       case WM_DESTROY:
@@ -717,7 +788,9 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
             DestroyIcon(hicon); 
 
         systray_menu = CreatePopupMenu();
+        /* accelerators used: vxa */
         AppendMenu (systray_menu, MF_ENABLED, IDM_VIEWKEYS, "&View Keys");
+        AppendMenu (systray_menu, MF_ENABLED, IDM_ABOUT, "&About");
         AppendMenu (systray_menu, MF_ENABLED, IDM_CLOSE, "E&xit");
     }
 
index e17cbcb..13495da 100644 (file)
@@ -29,3 +29,51 @@ BEGIN
     PUSHBUTTON "&Remove Key", 102, 180, 162, 60, 14
     DEFPUSHBUTTON "&Close", IDOK, 240, 182, 50, 14
 END
+
+/* Accelerators used: cl */
+213 DIALOG DISCARDABLE 140, 40, 136, 70
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About Pageant"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON "&Close", IDOK, 82, 52, 48, 14
+    PUSHBUTTON "View &Licence", 101, 6, 52, 70, 14
+    CTEXT "Pageant", 102, 10, 6, 120, 8
+    CTEXT "", 100, 10, 16, 120, 16
+    CTEXT "\251 1997-2000 Simon Tatham. All rights reserved.",
+          103, 10, 34, 120, 16
+END
+
+/* No accelerators used */
+214 DIALOG DISCARDABLE 50, 50, 226, 223
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Pageant Licence"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON "OK", IDOK, 98, 203, 44, 14
+
+    LTEXT "Copyright \251 1997-2000 Simon Tatham", 1000, 10, 10, 206, 8
+
+    LTEXT "Permission is hereby granted, free of charge, to any person", 1002, 10, 26, 206, 8
+    LTEXT "obtaining a copy of this software and associated documentation", 1003, 10, 34, 206, 8
+    LTEXT "files (the ""Software""), to deal in the Software without restriction,", 1004, 10, 42, 206, 8
+    LTEXT "including without limitation the rights to use, copy, modify, merge,", 1005, 10, 50, 206, 8
+    LTEXT "publish, distribute, sublicense, and/or sell copies of the Software,", 1006, 10, 58, 206, 8
+    LTEXT "and to permit persons to whom the Software is furnished to do so,", 1007, 10, 66, 206, 8
+    LTEXT "subject to the following conditions:", 1008, 10, 74, 206, 8
+
+    LTEXT "The above copyright notice and this permission notice shall be", 1010, 10, 90, 206, 8
+    LTEXT "included in all copies or substantial portions of the Software.", 1011, 10, 98, 206, 8
+
+    LTEXT "THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT", 1013, 10, 114, 206, 8
+    LTEXT "WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,", 1014, 10, 122, 206, 8
+    LTEXT "INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF", 1015, 10, 130, 206, 8
+    LTEXT "MERCHANTABILITY, FITNESS FOR A PARTICULAR", 1016, 10, 138, 206, 8
+    LTEXT "PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL", 1017, 10, 146, 206, 8
+    LTEXT "SIMON TATHAM BE LIABLE FOR ANY CLAIM, DAMAGES OR", 1018, 10, 154, 206, 8
+    LTEXT "OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,", 1019, 10, 162, 206, 8
+    LTEXT "TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN", 1020, 10, 170, 206, 8
+    LTEXT "CONNECTION WITH THE SOFTWARE OR THE USE OR", 1021, 10, 178, 206, 8
+    LTEXT "OTHER DEALINGS IN THE SOFTWARE.", 1022, 10, 186, 206, 8
+
+END