From 5af3a3b6675c5fa7981f068f009e7c8e7e2e495b Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Sep 2000 08:43:06 +0000 Subject: [PATCH] Add the About and Licence boxes to Pageant git-svn-id: svn://svn.tartarus.org/sgt/putty@648 cda61777-01e9-0310-a592-d414129be87e --- pageant.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- pageant.rc | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 2 deletions(-) diff --git a/pageant.c b/pageant.c index c3a2a8aa..0c341ea6 100644 --- 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" @@ -36,9 +37,12 @@ #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"); } diff --git a/pageant.rc b/pageant.rc index e17cbcb5..13495daa 100644 --- a/pageant.rc +++ b/pageant.rc @@ -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 -- 2.11.0