IDC_RESIZETERM,
IDC_RESIZEFONT,
IDC_RESIZENONE,
+ IDC_RESIZEEITHER,
IDC_SCROLLBAR,
IDC_SCROLLBARFULLSCREEN,
- IDC_CLOSEWARN,
IDC_SAVESTATIC,
IDC_SAVEEDIT,
+ IDC_SCROLLKEY,
+ IDC_SCROLLDISP,
+ windowpanelend,
+
+ behaviourpanelstart,
+ IDC_TITLE_BEHAVIOUR,
+ IDC_BOX_BEHAVIOUR1,
+ IDC_CLOSEWARN,
IDC_ALTF4,
IDC_ALTSPACE,
IDC_ALTONLY,
- IDC_SCROLLKEY,
- IDC_SCROLLDISP,
IDC_ALWAYSONTOP,
IDC_FULLSCREENONALTENTER,
- windowpanelend,
+ behaviourpanelend,
appearancepanelstart,
IDC_TITLE_APPEARANCE,
IDC_PKBUTTON,
IDC_AGENTFWD,
IDC_AUTHTIS,
+ IDC_AUTHKI,
sshauthpanelend,
selectionpanelstart,
CheckDlgButton(hwnd, IDC_BLINKCUR, cfg.blink_cur);
CheckDlgButton(hwnd, IDC_SCROLLBAR, cfg.scrollbar);
CheckDlgButton(hwnd, IDC_SCROLLBARFULLSCREEN, cfg.scrollbar_in_fullscreen);
- CheckRadioButton(hwnd, IDC_RESIZETERM, IDC_RESIZENONE,
+ CheckRadioButton(hwnd, IDC_RESIZETERM, IDC_RESIZEEITHER,
cfg.resize_action == RESIZE_TERM ? IDC_RESIZETERM :
cfg.resize_action == RESIZE_FONT ? IDC_RESIZEFONT :
+ cfg.resize_action == RESIZE_EITHER ? IDC_RESIZEEITHER :
IDC_RESIZENONE);
CheckRadioButton(hwnd, IDC_COEALWAYS, IDC_COENORMAL,
cfg.close_on_exit == COE_NORMAL ? IDC_COENORMAL :
CheckRadioButton(hwnd, IDC_SSHPROT1, IDC_SSHPROT2,
cfg.sshprot == 1 ? IDC_SSHPROT1 : IDC_SSHPROT2);
CheckDlgButton(hwnd, IDC_AUTHTIS, cfg.try_tis_auth);
+ CheckDlgButton(hwnd, IDC_AUTHKI, cfg.try_ki_auth);
SetDlgItemText(hwnd, IDC_PKEDIT, cfg.keyfile);
SetDlgItemText(hwnd, IDC_CMDEDIT, cfg.remote_cmd);
/* The Keyboard panel. Accelerators used: [acgo] bhf ruyntd */
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
- /*
- bartitle(&cp, "Options controlling the effects of keys",
- IDC_TITLE_KEYBOARD);
- */
+ bartitle(&cp, "Options controlling the effects of keys",
+ IDC_TITLE_KEYBOARD);
beginbox(&cp, "Change the sequences sent by:", IDC_BOX_KEYBOARD1);
radioline(&cp, "The &Backspace key", IDC_DELSTATIC, 2,
"Control-H", IDC_DEL008,
}
if (panel == windowpanelstart) {
- /* The Window panel. Accelerators used: [acgo] rmznb sdikp w4ylt f */
+ /* The Window panel. Accelerators used: [acgo] rmz sdikp */
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
bartitle(&cp, "Options controlling PuTTY's window",
multiedit(&cp,
"&Rows", IDC_ROWSSTATIC, IDC_ROWSEDIT, 50,
"Colu&mns", IDC_COLSSTATIC, IDC_COLSEDIT, 50, NULL);
- radioline(&cp, "Action when the window is resized:", IDC_RESIZESTATIC,
- 3, "Resi&ze terminal", IDC_RESIZETERM,
- "Change fo&nt", IDC_RESIZEFONT,
- "For&bid resizing", IDC_RESIZENONE, NULL);
+ radiobig(&cp, "When window is resi&zed:", IDC_RESIZESTATIC,
+ "Change the number of rows and columns", IDC_RESIZETERM,
+ "Change the size of the font", IDC_RESIZEFONT,
+ "Change font size only when maximised", IDC_RESIZEEITHER,
+ "Forbid resizing completely", IDC_RESIZENONE, NULL);
endbox(&cp);
beginbox(&cp, "Control the scrollback in the window",
IDC_BOX_WINDOW2);
checkbox(&cp, "Reset scrollback on dis&play activity",
IDC_SCROLLDISP);
endbox(&cp);
- beginbox(&cp, NULL, IDC_BOX_WINDOW3);
- checkbox(&cp, "&Warn before closing window", IDC_CLOSEWARN);
- checkbox(&cp, "Window closes on ALT-F&4", IDC_ALTF4);
- checkbox(&cp, "S&ystem menu appears on ALT-Space", IDC_ALTSPACE);
- checkbox(&cp, "System menu appears on A< alone", IDC_ALTONLY);
- checkbox(&cp, "Ensure window is always on &top", IDC_ALWAYSONTOP);
- checkbox(&cp, "&Full screen on Alt-Enter", IDC_FULLSCREENONALTENTER);
- endbox(&cp);
}
if (panel == appearancepanelstart) {
/* The Appearance panel. Accelerators used: [acgo] luvb h ti p s */
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
- /* bartitle(&cp, "Options controlling PuTTY's appearance",
- IDC_TITLE_APPEARANCE); */
+ bartitle(&cp, "Configure the appearance of PuTTY's window",
+ IDC_TITLE_APPEARANCE);
beginbox(&cp, "Adjust the use of the cursor", IDC_BOX_APPEARANCE1);
radioline(&cp, "Cursor appearance:", IDC_CURSORSTATIC, 3,
"B&lock", IDC_CURBLOCK,
endbox(&cp);
}
+ if (panel == behaviourpanelstart) {
+ /* The Behaviour panel. Accelerators used: [acgo] w4yltf */
+ struct ctlpos cp;
+ ctlposinit(&cp, hwnd, 80, 3, 13);
+ bartitle(&cp, "Configure the behaviour of PuTTY's window",
+ IDC_TITLE_WINDOW);
+ beginbox(&cp, NULL, IDC_BOX_BEHAVIOUR1);
+ checkbox(&cp, "&Warn before closing window", IDC_CLOSEWARN);
+ checkbox(&cp, "Window closes on ALT-F&4", IDC_ALTF4);
+ checkbox(&cp, "S&ystem menu appears on ALT-Space", IDC_ALTSPACE);
+ checkbox(&cp, "System menu appears on A< alone", IDC_ALTONLY);
+ checkbox(&cp, "Ensure window is always on &top", IDC_ALWAYSONTOP);
+ checkbox(&cp, "&Full screen on Alt-Enter", IDC_FULLSCREENONALTENTER);
+ endbox(&cp);
+ }
+
if (panel == translationpanelstart) {
/* The Translation panel. Accelerators used: [acgo] rxbepus */
struct ctlpos cp;
}
if (panel == sshauthpanelstart) {
- /* The SSH authentication panel. Accelerators used: [acgo] m fkw */
+ /* The SSH authentication panel. Accelerators used: [acgo] m fkiw */
struct ctlpos cp;
ctlposinit(&cp, hwnd, 80, 3, 13);
if (dlgtype == 0) {
IDC_TITLE_SSHAUTH);
beginbox(&cp, "Authentication methods",
IDC_BOX_SSHAUTH1);
- checkbox(&cp, "Atte&mpt TIS or CryptoCard authentication",
+ checkbox(&cp, "Atte&mpt TIS or CryptoCard authentication (SSH1)",
IDC_AUTHTIS);
+ checkbox(&cp, "Attempt \"keyboard-&interactive\" authentication"
+ " (SSH2)", IDC_AUTHKI);
endbox(&cp);
beginbox(&cp, "Authentication parameters",
IDC_BOX_SSHAUTH2);
treeview_insert(&tvfaff, 1, "Bell");
treeview_insert(&tvfaff, 0, "Window");
treeview_insert(&tvfaff, 1, "Appearance");
+ treeview_insert(&tvfaff, 1, "Behaviour");
treeview_insert(&tvfaff, 1, "Translation");
treeview_insert(&tvfaff, 1, "Selection");
treeview_insert(&tvfaff, 1, "Colours");
create_controls(hwnd, dlgtype, windowpanelstart);
if (!strcmp(buffer, "Appearance"))
create_controls(hwnd, dlgtype, appearancepanelstart);
+ if (!strcmp(buffer, "Behaviour"))
+ create_controls(hwnd, dlgtype, behaviourpanelstart);
if (!strcmp(buffer, "Tunnels"))
create_controls(hwnd, dlgtype, tunnelspanelstart);
if (!strcmp(buffer, "Connection"))
case IDC_RESIZETERM:
case IDC_RESIZEFONT:
case IDC_RESIZENONE:
+ case IDC_RESIZEEITHER:
if (HIWORD(wParam) == BN_CLICKED ||
HIWORD(wParam) == BN_DOUBLECLICKED) {
cfg.resize_action =
IDC_RESIZETERM) ? RESIZE_TERM :
IsDlgButtonChecked(hwnd,
IDC_RESIZEFONT) ? RESIZE_FONT :
+ IsDlgButtonChecked(hwnd,
+ IDC_RESIZEEITHER) ? RESIZE_EITHER :
RESIZE_DISABLED;
}
break;
cfg.try_tis_auth =
IsDlgButtonChecked(hwnd, IDC_AUTHTIS);
break;
+ case IDC_AUTHKI:
+ if (HIWORD(wParam) == BN_CLICKED ||
+ HIWORD(wParam) == BN_DOUBLECLICKED)
+ cfg.try_ki_auth =
+ IsDlgButtonChecked(hwnd, IDC_AUTHKI);
+ break;
case IDC_PKEDIT:
if (HIWORD(wParam) == EN_CHANGE)
GetDlgItemText(hwnd, IDC_PKEDIT, cfg.keyfile,
else
return 0;
}
+
+/*
+ * Warn about the obsolescent key file format.
+ */
+void old_keyfile_warning(void)
+{
+ static const char mbtitle[] = "PuTTY Key File Warning";
+ static const char message[] =
+ "You are loading an SSH 2 private key which has an\n"
+ "old version of the file format. This means your key\n"
+ "file is not fully tamperproof. Future versions of\n"
+ "PuTTY may stop supporting this private key format,\n"
+ "so we recommend you convert your key to the new\n"
+ "format.\n"
+ "\n"
+ "You can perform this conversion by loading the key\n"
+ "into PuTTYgen and then saving it again.";
+
+ MessageBox(NULL, message, mbtitle, MB_OK);
+}