diff --git a/windows/pageant-rc.h b/windows/pageant-rc.h new file mode 100755 index 00000000..9a60c95f --- /dev/null +++ b/windows/pageant-rc.h @@ -0,0 +1,31 @@ +/* + * Constant definitions for the Pageant resource file. + */ + +#define IDI_MAINICON 200 +#define IDI_TRAYICON 201 + +#define IDD_KEYLIST 211 +#define IDD_LOAD_PASSPHRASE 210 +#define IDD_ONDEMAND_PASSPHRASE 212 +#define IDD_ABOUT 213 +#define IDD_LICENCE 214 + +#define IDC_PASSPHRASE_STATIC1 100 +#define IDC_PASSPHRASE_FINGERPRINT 101 +#define IDC_PASSPHRASE_STATIC2 102 +#define IDC_PASSPHRASE_EDITBOX 103 + +#define IDC_KEYLIST_LISTBOX 100 +#define IDC_KEYLIST_ADDKEY 101 +#define IDC_KEYLIST_ADDKEY_ENC 110 +#define IDC_KEYLIST_REMOVE 102 +#define IDC_KEYLIST_HELP 103 +#define IDC_KEYLIST_FPTYPE_STATIC 104 +#define IDC_KEYLIST_FPTYPE 105 + +#define IDC_ABOUT_LICENCE 101 +#define IDC_ABOUT_WEBSITE 102 +#define IDC_ABOUT_TEXTBOX 1000 + +#define IDC_LICENCE_TEXTBOX 1000 diff --git a/windows/pageant.rc b/windows/pageant.rc index 84c31dda..3358656b 100644 --- a/windows/pageant.rc +++ b/windows/pageant.rc @@ -7,73 +7,81 @@ #define APPNAME "Pageant" #define APPDESC "PuTTY SSH authentication agent" +#include "pageant-rc.h" + #include "winhelp.rc2" -200 ICON "pageant.ico" -201 ICON "pageants.ico" +IDI_MAINICON ICON "pageant.ico" +IDI_TRAYICON ICON "pageants.ico" -210 DIALOG DISCARDABLE 0, 0, 140, 60 +IDD_LOAD_PASSPHRASE DIALOG DISCARDABLE 0, 0, 140, 60 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Pageant: Loading Encrypted Key" FONT 8, "MS Shell Dlg" BEGIN - CTEXT "Enter passphrase to load key", 100, 10, 6, 120, 8 - CTEXT "", 101, 10, 16, 120, 8 - EDITTEXT 102, 10, 26, 120, 12, ES_PASSWORD | ES_AUTOHSCROLL + CTEXT "Enter passphrase to load key", IDC_PASSPHRASE_STATIC1, 10, 6, 120, 8 + CTEXT "", IDC_PASSPHRASE_FINGERPRINT, 10, 16, 120, 8 + EDITTEXT IDC_PASSPHRASE_EDITBOX, 10, 26, 120, 12, + ES_PASSWORD | ES_AUTOHSCROLL DEFPUSHBUTTON "O&K", IDOK, 20, 42, 40, 14 PUSHBUTTON "&Cancel", IDCANCEL, 80, 42, 40, 14 END -212 DIALOG DISCARDABLE 0, 0, 250, 70 +IDD_ONDEMAND_PASSPHRASE DIALOG DISCARDABLE 0, 0, 250, 70 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Pageant: Decrypting Stored Key" FONT 8, "MS Shell Dlg" BEGIN - CTEXT "A client of Pageant wants to use the following encrypted key:", 100, 10, 6, 230, 8 - CTEXT "", 101, 10, 16, 230, 8 - CTEXT "If you intended this, enter the passphrase to decrypt the key.", 101, 10, 26, 230, 8 - EDITTEXT 102, 10, 36, 230, 12, ES_PASSWORD | ES_AUTOHSCROLL + CTEXT "A client of Pageant wants to use the following encrypted key:", + IDC_PASSPHRASE_STATIC1, 10, 6, 230, 8 + CTEXT "", IDC_PASSPHRASE_FINGERPRINT, 10, 16, 230, 8 + CTEXT "If you intended this, enter the passphrase to decrypt the key.", + IDC_PASSPHRASE_STATIC2, 10, 26, 230, 8 + EDITTEXT IDC_PASSPHRASE_EDITBOX, 10, 36, 230, 12, + ES_PASSWORD | ES_AUTOHSCROLL DEFPUSHBUTTON "O&K", IDOK, 75, 52, 40, 14 PUSHBUTTON "&Cancel", IDCANCEL, 135, 52, 40, 14 END -211 DIALOG DISCARDABLE 0, 0, 450, 211 +IDD_KEYLIST DIALOG DISCARDABLE 0, 0, 450, 211 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Pageant Key List" FONT 8, "MS Shell Dlg" BEGIN LISTBOX 100, 10, 10, 420, 155, LBS_EXTENDEDSEL | LBS_HASSTRINGS | LBS_USETABSTOPS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Add Key", 101, 75, 187, 60, 14 - PUSHBUTTON "Add Key (&encrypted)", 110, 150, 187, 100, 14 - PUSHBUTTON "&Remove Key", 102, 315, 187, 60, 14 - PUSHBUTTON "&Help", 103, 10, 187, 50, 14 + PUSHBUTTON "&Add Key", IDC_KEYLIST_ADDKEY, 75, 187, 60, 14 + PUSHBUTTON "Add Key (&encrypted)", IDC_KEYLIST_ADDKEY_ENC, 150, 187, 100, 14 + PUSHBUTTON "&Remove Key", IDC_KEYLIST_REMOVE, 315, 187, 60, 14 + PUSHBUTTON "&Help", IDC_KEYLIST_HELP, 10, 187, 50, 14 DEFPUSHBUTTON "&Close", IDOK, 390, 187, 50, 14 - LTEXT "&Fingerprint type:", 104, 10, 172, 60, 8 - COMBOBOX 105, 70, 170, 60, 12, CBS_DROPDOWNLIST + LTEXT "&Fingerprint type:", IDC_KEYLIST_FPTYPE_STATIC, 10, 172, 60, 8 + COMBOBOX IDC_KEYLIST_FPTYPE, 70, 170, 60, 12, CBS_DROPDOWNLIST END /* Accelerators used: cl */ -213 DIALOG DISCARDABLE 140, 40, 270, 136 +IDD_ABOUT DIALOG DISCARDABLE 140, 40, 270, 136 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About Pageant" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "&Close", IDOK, 216, 118, 48, 14 - PUSHBUTTON "View &Licence", 101, 6, 118, 70, 14 - PUSHBUTTON "Visit &Web Site", 102, 140, 118, 70, 14 - EDITTEXT 1000, 10, 6, 250, 110, ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE + PUSHBUTTON "View &Licence", IDC_ABOUT_LICENCE, 6, 118, 70, 14 + PUSHBUTTON "Visit &Web Site", IDC_ABOUT_WEBSITE, 140, 118, 70, 14 + EDITTEXT IDC_ABOUT_TEXTBOX, 10, 6, 250, 110, + ES_READONLY | ES_MULTILINE | ES_CENTER, WS_EX_STATICEDGE END /* No accelerators used */ -214 DIALOG DISCARDABLE 50, 50, 326, 239 +IDD_LICENCE DIALOG DISCARDABLE 50, 50, 326, 239 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "PuTTY Licence" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK", IDOK, 148, 219, 44, 14 - EDITTEXT 1000, 10, 10, 306, 200, ES_READONLY | ES_MULTILINE | ES_LEFT, WS_EX_STATICEDGE + EDITTEXT IDC_LICENCE_TEXTBOX, 10, 10, 306, 200, + ES_READONLY | ES_MULTILINE | ES_LEFT, WS_EX_STATICEDGE END #include "version.rc2" diff --git a/windows/winpgnt.c b/windows/winpgnt.c index b042ade9..edc06025 100644 --- a/windows/winpgnt.c +++ b/windows/winpgnt.c @@ -17,6 +17,7 @@ #include "wincapi.h" #include "pageant.h" #include "licence.h" +#include "pageant-rc.h" #include @@ -28,9 +29,6 @@ #endif #endif -#define IDI_MAINICON 200 -#define IDI_TRAYICON 201 - #define WM_SYSTRAY (WM_APP + 6) #define WM_SYSTRAY2 (WM_APP + 7) @@ -113,7 +111,7 @@ static INT_PTR CALLBACK LicenceProc(HWND hwnd, UINT msg, { switch (msg) { case WM_INITDIALOG: - SetDlgItemText(hwnd, 1000, LICENCE_TEXT("\r\n\r\n")); + SetDlgItemText(hwnd, IDC_LICENCE_TEXTBOX, LICENCE_TEXT("\r\n\r\n")); return 1; case WM_COMMAND: switch (LOWORD(wParam)) { @@ -144,7 +142,7 @@ static INT_PTR CALLBACK AboutProc(HWND hwnd, UINT msg, ver, buildinfo_text, "\251 " SHORT_COPYRIGHT_DETAILS ". All rights reserved."); sfree(buildinfo_text); - SetDlgItemText(hwnd, 1000, text); + SetDlgItemText(hwnd, IDC_ABOUT_TEXTBOX, text); sfree(text); return 1; } @@ -155,13 +153,13 @@ static INT_PTR CALLBACK AboutProc(HWND hwnd, UINT msg, aboutbox = NULL; DestroyWindow(hwnd); return 0; - case 101: + case IDC_ABOUT_LICENCE: EnableWindow(hwnd, 0); - DialogBox(hinst, MAKEINTRESOURCE(214), hwnd, LicenceProc); + DialogBox(hinst, MAKEINTRESOURCE(IDD_LICENCE), hwnd, LicenceProc); EnableWindow(hwnd, 1); SetActiveWindow(hwnd); return 0; - case 102: + case IDC_ABOUT_WEBSITE: /* Load web browser */ ShellExecute(hwnd, "open", "https://www.chiark.greenend.org.uk/~sgtatham/putty/", @@ -242,10 +240,10 @@ static INT_PTR CALLBACK PassphraseProc(HWND hwnd, UINT msg, if (!p->modal) SetActiveWindow(hwnd); /* this won't have happened automatically */ if (p->comment) - SetDlgItemText(hwnd, 101, p->comment); + SetDlgItemText(hwnd, IDC_PASSPHRASE_FINGERPRINT, p->comment); burnstr(p->passphrase); p->passphrase = dupstr(""); - SetDlgItemText(hwnd, 102, p->passphrase); + SetDlgItemText(hwnd, IDC_PASSPHRASE_EDITBOX, p->passphrase); return 0; } case WM_COMMAND: @@ -259,10 +257,11 @@ static INT_PTR CALLBACK PassphraseProc(HWND hwnd, UINT msg, case IDCANCEL: end_passphrase_dialog(hwnd, 0); return 0; - case 102: /* edit box */ + case IDC_PASSPHRASE_EDITBOX: if ((HIWORD(wParam) == EN_CHANGE) && p->passphrase) { burnstr(p->passphrase); - p->passphrase = GetDlgItemText_alloc(hwnd, 102); + p->passphrase = GetDlgItemText_alloc( + hwnd, IDC_PASSPHRASE_EDITBOX); } return 0; } @@ -369,7 +368,8 @@ static void keylist_update_callback( else if (ext_flags & LIST_EXTENDED_FLAG_HAS_ENCRYPTED_KEY_FILE) strbuf_catf(listentry, "\t(re-encryptable)"); - SendDlgItemMessage(keylist, 100, LB_ADDSTRING, 0, (LPARAM)listentry->s); + SendDlgItemMessage(keylist, IDC_KEYLIST_LISTBOX, + LB_ADDSTRING, 0, (LPARAM)listentry->s); strbuf_free(listentry); } @@ -379,14 +379,16 @@ static void keylist_update_callback( void keylist_update(void) { if (keylist) { - SendDlgItemMessage(keylist, 100, LB_RESETCONTENT, 0, 0); + SendDlgItemMessage(keylist, IDC_KEYLIST_LISTBOX, + LB_RESETCONTENT, 0, 0); char *errmsg; int status = pageant_enum_keys(keylist_update_callback, NULL, &errmsg); assert(status == PAGEANT_ACTION_OK); assert(!errmsg); - SendDlgItemMessage(keylist, 100, LB_SETCURSEL, (WPARAM) - 1, 0); + SendDlgItemMessage(keylist, IDC_KEYLIST_LISTBOX, + LB_SETCURSEL, (WPARAM) - 1, 0); } } @@ -418,8 +420,9 @@ static void win_add_keyfile(Filename *filename, bool encrypted) pps.dlgid = NULL; pps.passphrase = NULL; pps.comment = err; - dlgret = DialogBoxParam(hinst, MAKEINTRESOURCE(210), - NULL, PassphraseProc, (LPARAM) &pps); + dlgret = DialogBoxParam( + hinst, MAKEINTRESOURCE(IDD_LOAD_PASSPHRASE), + NULL, PassphraseProc, (LPARAM) &pps); modal_passphrase_hwnd = NULL; if (!dlgret) { @@ -533,7 +536,7 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_CONTEXTHELP); else { - HWND item = GetDlgItem(hwnd, 103); /* the Help button */ + HWND item = GetDlgItem(hwnd, IDC_KEYLIST_HELP); if (item) DestroyWindow(item); } @@ -541,19 +544,20 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, keylist = hwnd; { static int tabs[] = { 35, 75, 300 }; - SendDlgItemMessage(hwnd, 100, LB_SETTABSTOPS, + SendDlgItemMessage(hwnd, IDC_KEYLIST_LISTBOX, LB_SETTABSTOPS, sizeof(tabs) / sizeof(*tabs), (LPARAM) tabs); } int selection = 0; for (size_t i = 0; i < lenof(fptypes); i++) { - SendDlgItemMessage(hwnd, 105, CB_ADDSTRING, + SendDlgItemMessage(hwnd, IDC_KEYLIST_FPTYPE, CB_ADDSTRING, 0, (LPARAM)fptypes[i].name); if (fptype == fptypes[i].value) selection = (int)i; } - SendDlgItemMessage(hwnd, 105, CB_SETCURSEL, 0, selection); + SendDlgItemMessage(hwnd, IDC_KEYLIST_FPTYPE, + CB_SETCURSEL, 0, selection); keylist_update(); return 0; @@ -565,8 +569,8 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, keylist = NULL; DestroyWindow(hwnd); return 0; - case 101: /* add key */ - case 110: /* add key encrypted */ + case IDC_KEYLIST_ADDKEY: + case IDC_KEYLIST_ADDKEY_ENC: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { if (modal_passphrase_hwnd) { @@ -574,10 +578,10 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, SetForegroundWindow(modal_passphrase_hwnd); break; } - prompt_add_keyfile(LOWORD(wParam) == 110); + prompt_add_keyfile(LOWORD(wParam) == IDC_KEYLIST_ADDKEY_ENC); } return 0; - case 102: /* remove key */ + case IDC_KEYLIST_REMOVE: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { int i; @@ -588,8 +592,8 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, int itemNum; /* get the number of items selected in the list */ - int numSelected = - SendDlgItemMessage(hwnd, 100, LB_GETSELCOUNT, 0, 0); + int numSelected = SendDlgItemMessage( + hwnd, IDC_KEYLIST_LISTBOX, LB_GETSELCOUNT, 0, 0); /* none selected? that was silly */ if (numSelected == 0) { @@ -599,8 +603,8 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, /* get item indices in an array */ selectedArray = snewn(numSelected, int); - SendDlgItemMessage(hwnd, 100, LB_GETSELITEMS, - numSelected, (WPARAM)selectedArray); + SendDlgItemMessage(hwnd, IDC_KEYLIST_LISTBOX, LB_GETSELITEMS, + numSelected, (WPARAM)selectedArray); itemNum = numSelected - 1; rCount = pageant_count_ssh1_keys(); @@ -630,16 +634,16 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, keylist_update(); } return 0; - case 103: /* help */ + case IDC_KEYLIST_HELP: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { launch_help(hwnd, WINHELP_CTX_pageant_general); } return 0; - case 105: /* fingerprint type */ + case IDC_KEYLIST_FPTYPE: if (HIWORD(wParam) == CBN_SELCHANGE) { int selection = SendDlgItemMessage( - hwnd, 105, CB_GETCURSEL, 0, 0); + hwnd, IDC_KEYLIST_FPTYPE, CB_GETCURSEL, 0, 0); if (selection >= 0 && (size_t)selection < lenof(fptypes)) { fptype = fptypes[selection].value; keylist_update(); @@ -652,9 +656,9 @@ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, int id = ((LPHELPINFO)lParam)->iCtrlId; const char *topic = NULL; switch (id) { - case 100: topic = WINHELP_CTX_pageant_keylist; break; - case 101: topic = WINHELP_CTX_pageant_addkey; break; - case 102: topic = WINHELP_CTX_pageant_remkey; break; + case IDC_KEYLIST_LISTBOX: topic = WINHELP_CTX_pageant_keylist; break; + case IDC_KEYLIST_ADDKEY: topic = WINHELP_CTX_pageant_addkey; break; + case IDC_KEYLIST_REMOVE: topic = WINHELP_CTX_pageant_remkey; break; } if (topic) { launch_help(hwnd, topic); @@ -846,7 +850,8 @@ static bool ask_passphrase_common(PageantClientDialogId *dlgid, pps->comment = comment; nonmodal_passphrase_hwnd = CreateDialogParam( - hinst, MAKEINTRESOURCE(212), NULL, PassphraseProc, (LPARAM)pps); + hinst, MAKEINTRESOURCE(IDD_ONDEMAND_PASSPHRASE), + NULL, PassphraseProc, (LPARAM)pps); /* * Try to put this passphrase prompt into the foreground. @@ -1060,7 +1065,8 @@ static void create_keylist_window(void) if (keylist) return; - keylist = CreateDialog(hinst, MAKEINTRESOURCE(211), NULL, KeyListProc); + keylist = CreateDialog(hinst, MAKEINTRESOURCE(IDD_KEYLIST), + NULL, KeyListProc); ShowWindow(keylist, SW_SHOWNORMAL); } @@ -1154,7 +1160,7 @@ static LRESULT CALLBACK TrayWndProc(HWND hwnd, UINT message, break; case IDM_ABOUT: if (!aboutbox) { - aboutbox = CreateDialog(hinst, MAKEINTRESOURCE(213), + aboutbox = CreateDialog(hinst, MAKEINTRESOURCE(IDD_ABOUT), NULL, AboutProc); ShowWindow(aboutbox, SW_SHOWNORMAL); /*