Config *cfg = (Config *)data;
if (event == EVENT_REFRESH) {
int i;
- const char *cp;
+ const char *cp, *thiscp;
dlg_update_start(ctrl, dlg);
- strcpy(cfg->line_codepage,
- cp_name(decode_codepage(cfg->line_codepage)));
+ thiscp = cp_name(decode_codepage(cfg->line_codepage));
dlg_listbox_clear(ctrl, dlg);
for (i = 0; (cp = cp_enumerate(i)) != NULL; i++)
dlg_listbox_add(ctrl, dlg, cp);
- dlg_editbox_set(ctrl, dlg, cfg->line_codepage);
+ dlg_editbox_set(ctrl, dlg, thiscp);
+ strcpy(cfg->line_codepage, thiscp);
dlg_update_done(ctrl, dlg);
} else if (event == EVENT_VALCHANGE) {
dlg_editbox_get(ctrl, dlg, cfg->line_codepage,
*p = '\0';
p = cfg->portfwd;
while (*p) {
+ if (strcmp(p,str) == 0) {
+ dlg_error_msg(dlg, "Specified forwarding already exists");
+ break;
+ }
while (*p)
p++;
p++;
}
- if ((p - cfg->portfwd) + strlen(str) + 2 <=
- sizeof(cfg->portfwd)) {
- strcpy(p, str);
- p[strlen(str) + 1] = '\0';
- dlg_listbox_add(pfd->listbox, dlg, str);
- dlg_editbox_set(pfd->sourcebox, dlg, "");
- dlg_editbox_set(pfd->destbox, dlg, "");
- } else {
- dlg_error_msg(dlg, "Too many forwardings");
+ if (!*p) {
+ if ((p - cfg->portfwd) + strlen(str) + 2 <=
+ sizeof(cfg->portfwd)) {
+ strcpy(p, str);
+ p[strlen(str) + 1] = '\0';
+ dlg_listbox_add(pfd->listbox, dlg, str);
+ dlg_editbox_set(pfd->sourcebox, dlg, "");
+ dlg_editbox_set(pfd->destbox, dlg, "");
+ } else {
+ dlg_error_msg(dlg, "Too many forwardings");
+ }
}
} else if (ctrl == pfd->rembutton) {
int i = dlg_listbox_index(pfd->listbox, dlg);
ctrl_radiobuttons(s, "Connection type:", NO_SHORTCUT, 3,
HELPCTX(session_hostname),
config_protocolbuttons_handler, P(hp),
- "Raw", 'r', I(PROT_RAW),
+ "Raw", 'w', I(PROT_RAW),
"Telnet", 't', I(PROT_TELNET),
"Rlogin", 'i', I(PROT_RLOGIN),
NULL);
ctrl_radiobuttons(s, "Connection type:", NO_SHORTCUT, 4,
HELPCTX(session_hostname),
config_protocolbuttons_handler, P(hp),
- "Raw", 'r', I(PROT_RAW),
+ "Raw", 'w', I(PROT_RAW),
"Telnet", 't', I(PROT_TELNET),
"Rlogin", 'i', I(PROT_RLOGIN),
"SSH", 's', I(PROT_SSH),
ctrl_columns(s, 1, 100);
s = ctrl_getset(b, "Session", "otheropts", NULL);
- c = ctrl_radiobuttons(s, "Close window on exit:", 'w', 4,
+ c = ctrl_radiobuttons(s, "Close window on exit:", 'x', 4,
HELPCTX(session_coe),
dlg_stdradiobutton_handler,
I(offsetof(Config, close_on_exit)),
"Options controlling character set translation");
s = ctrl_getset(b, "Window/Translation", "trans",
- "Character set translation on received data");
- ctrl_combobox(s, "Received data assumed to be in which character set:",
+ "Character set translation");
+ ctrl_combobox(s, "Remote character set:",
'r', 100, HELPCTX(translation_codepage),
codepage_handler, P(NULL), P(NULL));
NULL);
#endif
- s = ctrl_getset(b, "Connection", "identity",
- "Logical name of remote host");
- ctrl_editbox(s, "Logical name of remote host (e.g. for SSH key lookup):",
- 'm', 100,
- HELPCTX(connection_loghost),
- dlg_stdeditbox_handler, I(offsetof(Config,loghost)),
- I(sizeof(((Config *)0)->loghost)));
+ {
+ char *label = backend_from_proto(PROT_SSH) ?
+ "Logical name of remote host (e.g. for SSH key lookup):" :
+ "Logical name of remote host:";
+ s = ctrl_getset(b, "Connection", "identity",
+ "Logical name of remote host");
+ ctrl_editbox(s, label, 'm', 100,
+ HELPCTX(connection_loghost),
+ dlg_stdeditbox_handler, I(offsetof(Config,loghost)),
+ I(sizeof(((Config *)0)->loghost)));
+ }
}
/*
HELPCTX(connection_username),
dlg_stdeditbox_handler, I(offsetof(Config,username)),
I(sizeof(((Config *)0)->username)));
+ {
+ /* We assume the local username is sufficiently stable
+ * to include on the dialog box. */
+ char *user = get_username();
+ char *userlabel = dupprintf("Use system username (%s)",
+ user ? user : "");
+ sfree(user);
+ ctrl_radiobuttons(s, "When username is not specified:", 'n', 4,
+ HELPCTX(connection_username_from_env),
+ dlg_stdradiobutton_handler,
+ I(offsetof(Config, username_from_env)),
+ "Prompt", I(FALSE),
+ userlabel, I(TRUE),
+ NULL);
+ sfree(userlabel);
+ }
s = ctrl_getset(b, "Connection/Data", "term",
"Terminal details");