X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/927d4fc5c6d3169ba46d4f1ee834a17760316ddb..7591b9ff09c8700ce2f8c03ed33d3801668bae02:/windlg.c diff --git a/windlg.c b/windlg.c index 20add6c7..e012b3d0 100644 --- a/windlg.c +++ b/windlg.c @@ -945,6 +945,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_CIPHER3DES, IDC_CIPHERBLOWF, IDC_CIPHERDES, + IDC_BUGGYMAC, IDC_AUTHTIS, IDC_PKSTATIC, IDC_PKEDIT, @@ -997,6 +998,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_NOXLAT, IDC_KOI8WIN1251, IDC_88592WIN1250, + IDC_88592CP852, IDC_CAPSLOCKCYR, IDC_VTSTATIC, IDC_VTXWINDOWS, @@ -1046,9 +1048,6 @@ static void init_dlg_ctrls(HWND hwnd) { SetDlgItemText (hwnd, IDC_HOST, cfg.host); SetDlgItemText (hwnd, IDC_SESSEDIT, savedsession); SetDlgItemInt (hwnd, IDC_PORT, cfg.port, FALSE); - for (i = 0; i < nsessions; i++) - SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING, - 0, (LPARAM) (sessions[i])); CheckRadioButton (hwnd, IDC_PROTRAW, IDC_PROTSSH, cfg.protocol==PROT_SSH ? IDC_PROTSSH : cfg.protocol==PROT_TELNET ? IDC_PROTTELNET : IDC_PROTRAW ); @@ -1058,7 +1057,7 @@ static void init_dlg_ctrls(HWND hwnd) { cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008); CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT, cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE); - CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCXTERM, + CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCVT400, cfg.funky_type == 0 ? IDC_FUNCTILDE : cfg.funky_type == 1 ? IDC_FUNCLINUX : cfg.funky_type == 2 ? IDC_FUNCXTERM : @@ -1111,6 +1110,7 @@ static void init_dlg_ctrls(HWND hwnd) { SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype); SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username); CheckDlgButton (hwnd, IDC_NOPTY, cfg.nopty); + CheckDlgButton (hwnd, IDC_BUGGYMAC, cfg.buggymac); CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd); CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES, cfg.cipher == CIPHER_BLOWFISH ? IDC_CIPHERBLOWF : @@ -1152,8 +1152,9 @@ static void init_dlg_ctrls(HWND hwnd) { SetDlgItemInt (hwnd, IDC_GVALUE, cfg.colours[0][1], FALSE); SetDlgItemInt (hwnd, IDC_BVALUE, cfg.colours[0][2], FALSE); - CheckRadioButton (hwnd, IDC_NOXLAT, IDC_88592WIN1250, + CheckRadioButton (hwnd, IDC_NOXLAT, IDC_88592CP852, cfg.xlat_88592w1250 ? IDC_88592WIN1250 : + cfg.xlat_88592cp852 ? IDC_88592CP852 : cfg.xlat_enablekoiwin ? IDC_KOI8WIN1251 : IDC_NOXLAT); CheckDlgButton (hwnd, IDC_CAPSLOCKCYR, cfg.xlat_capslockcyr); @@ -1186,8 +1187,13 @@ static HTREEITEM treeview_insert(struct treeview_faff *faff, HTREEITEM newitem; ins.hParent = (level > 0 ? faff->lastat[level-1] : TVI_ROOT); ins.hInsertAfter = faff->lastat[level]; - ins.DUMMYUNIONNAME.item.mask = TVIF_TEXT; - ins.DUMMYUNIONNAME.item.pszText = text; +#if _WIN32_IE >= 0x0400 && defined NONAMELESSUNION +#define INSITEM DUMMYUNIONNAME.item +#else +#define INSITEM item +#endif + ins.INSITEM.mask = TVIF_TEXT; + ins.INSITEM.pszText = text; newitem = TreeView_InsertItem(faff->treeview, &ins); if (level > 0) TreeView_Expand(faff->treeview, faff->lastat[level-1], TVE_EXPAND); @@ -1360,7 +1366,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, "&Standard", IDC_HOMETILDE, "&rxvt", IDC_HOMERXVT, NULL); radioline(&cp, "The Function keys and keypad", IDC_FUNCSTATIC, 4, - "&VT400", IDC_FUNCTILDE, + "ESC[n&~", IDC_FUNCTILDE, "&Linux", IDC_FUNCLINUX, "&Xterm R6", IDC_FUNCXTERM, "&VT400", IDC_FUNCVT400, NULL); @@ -1435,7 +1441,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, "Character set translation:", IDC_XLATSTATIC, "&None", IDC_NOXLAT, "&KOI8 / Win-1251", IDC_KOI8WIN1251, - "&ISO-8859-2 / Win-1250", IDC_88592WIN1250, NULL); + "&ISO-8859-2 / Win-1250", IDC_88592WIN1250, + "&ISO-8859-2 / CP852", IDC_88592CP852, NULL); endbox(&cp); beginbox(&cp, "Enable character set translation on input data", IDC_BOX_TRANSLATION3, IDC_BOXT_TRANSLATION3); @@ -1541,7 +1548,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, } /* The SSH panel. Accelerators used: [acgo] rmakwp123bd */ - { + if (backends[2].backend != NULL) { struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -1570,6 +1577,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, "&3DES", IDC_CIPHER3DES, "&Blowfish", IDC_CIPHERBLOWF, "&DES", IDC_CIPHERDES, NULL); + checkbox(&cp, "Imitate SSH 2 MAC bug in commercial <= v2.3.x", + IDC_BUGGYMAC); endbox(&cp); treeview_insert(&tvfaff, 1, "SSH"); @@ -1577,6 +1586,9 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, } init_dlg_ctrls(hwnd); + for (i = 0; i < nsessions; i++) + SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_ADDSTRING, + 0, (LPARAM) (sessions[i])); /* * Hide all the controls to start with. @@ -1735,14 +1747,16 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, { int n = SendDlgItemMessage (hwnd, IDC_SESSLIST, LB_GETCURSEL, 0, 0); + int isdef; if (n == LB_ERR) { MessageBeep(0); break; } - load_settings (sessions[n], - !!strcmp(sessions[n], "Default Settings"), - &cfg); + isdef = !strcmp(sessions[n], "Default Settings"); + load_settings (sessions[n], !isdef, &cfg); init_dlg_ctrls(hwnd); + if (!isdef) + SetDlgItemText(hwnd, IDC_SESSEDIT, sessions[n]); } if (LOWORD(wParam) == IDC_SESSLIST) { /* @@ -2049,6 +2063,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY); break; + case IDC_BUGGYMAC: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.buggymac = IsDlgButtonChecked (hwnd, IDC_BUGGYMAC); + break; case IDC_AGENTFWD: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) @@ -2216,10 +2235,13 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, case IDC_NOXLAT: case IDC_KOI8WIN1251: case IDC_88592WIN1250: + case IDC_88592CP852: cfg.xlat_enablekoiwin = IsDlgButtonChecked (hwnd, IDC_KOI8WIN1251); cfg.xlat_88592w1250 = IsDlgButtonChecked (hwnd, IDC_88592WIN1250); + cfg.xlat_88592cp852 = + IsDlgButtonChecked (hwnd, IDC_88592CP852); break; case IDC_CAPSLOCKCYR: if (HIWORD(wParam) == BN_CLICKED ||