X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/406bf3848530979d9042870beb6a08f8b8b4f5f9..776792d730f2f0776222a28932d1306e96eec246:/unix/uxcfg.c diff --git a/unix/uxcfg.c b/unix/uxcfg.c index 97bcdc9b..813009ef 100644 --- a/unix/uxcfg.c +++ b/unix/uxcfg.c @@ -10,23 +10,29 @@ #include "dialog.h" #include "storage.h" -void unix_setup_config_box(struct controlbox *b, int midsession) +static void about_handler(union control *ctrl, void *dlg, + void *data, int event) +{ + if (event == EVENT_ACTION) { + about_box(ctrl->generic.context.p); + } +} + +void unix_setup_config_box(struct controlbox *b, int midsession, void *win) { struct controlset *s, *s2; union control *c; int i; -#ifdef FIXME if (!midsession) { /* * Add the About button to the standard panel. */ s = ctrl_getset(b, "", "", ""); c = ctrl_pushbutton(s, "About", 'a', HELPCTX(no_help), - about_handler, P(hwndp)); + about_handler, P(win)); c->generic.column = 0; } -#endif /* * The Config structure contains two Unix-specific elements @@ -37,6 +43,14 @@ void unix_setup_config_box(struct controlbox *b, int midsession) */ /* + * On Unix, we don't have a drop-down list for the printer + * control. + */ + s = ctrl_getset(b, "Terminal", "printing", "Remote-controlled printing"); + assert(s->ncontrols == 1 && s->ctrls[0]->generic.type == CTRL_EDITBOX); + s->ctrls[0]->editbox.has_list = 0; + + /* * GTK makes it rather easier to put the scrollbar on the left * than Windows does! */ @@ -103,12 +117,54 @@ void unix_setup_config_box(struct controlbox *b, int midsession) ctrl_fontsel(s, "Font used for bold wide text", 'i', HELPCTX(no_help), dlg_stdfontsel_handler, I(offsetof(Config,wideboldfont))); - ctrl_text(s, "If you leave the bold font selectors blank, bold text" - " will be displayed by overprinting (\"shadow bold\"). Note" - " that this only applies if you have not requested bolding" - " to be done by changing the text colour.", + ctrl_checkbox(s, "Use shadow bold instead of bold fonts", 'u', + HELPCTX(no_help), + dlg_stdcheckbox_handler, + I(offsetof(Config,shadowbold))); + ctrl_text(s, "(Note that bold fonts or shadow bolding are only" + " used if you have not requested bolding to be done by" + " changing the text colour.)", HELPCTX(no_help)); ctrl_editbox(s, "Horizontal offset for shadow bold:", 'z', 20, HELPCTX(no_help), dlg_stdeditbox_handler, I(offsetof(Config,shadowboldoffset)), I(-1)); + + /* + * Unix supports a local-command proxy. This also means we must + * adjust the text on the `Telnet command' control. + */ + if (!midsession) { + int i; + s = ctrl_getset(b, "Connection/Proxy", "basics", NULL); + for (i = 0; i < s->ncontrols; i++) { + c = s->ctrls[i]; + if (c->generic.type == CTRL_RADIO && + c->generic.context.i == offsetof(Config, proxy_type)) { + assert(c->generic.handler == dlg_stdradiobutton_handler); + c->radio.nbuttons++; + c->radio.buttons = + sresize(c->radio.buttons, c->radio.nbuttons, char *); + c->radio.buttons[c->radio.nbuttons-1] = + dupstr("Local"); + c->radio.buttondata = + sresize(c->radio.buttondata, c->radio.nbuttons, intorptr); + c->radio.buttondata[c->radio.nbuttons-1] = I(PROXY_CMD); + break; + } + } + + for (i = 0; i < s->ncontrols; i++) { + c = s->ctrls[i]; + if (c->generic.type == CTRL_EDITBOX && + c->generic.context.i == + offsetof(Config, proxy_telnet_command)) { + assert(c->generic.handler == dlg_stdeditbox_handler); + sfree(c->generic.label); + c->generic.label = dupstr("Telnet command, or local" + " proxy command"); + break; + } + } + } + }