X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/2ce7b782b3f82f7616a547c4793284fcccb4bc9a..47061bb488400d53fd20deb52d51763d2caa056e:/unix/uxcfg.c diff --git a/unix/uxcfg.c b/unix/uxcfg.c index 582b45d9..e48a9b69 100644 --- a/unix/uxcfg.c +++ b/unix/uxcfg.c @@ -10,36 +10,17 @@ #include "dialog.h" #include "storage.h" -static void about_handler(union control *ctrl, void *dlg, - void *data, int event) +void unix_setup_config_box(struct controlbox *b, int midsession, int protocol) { - 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; + struct controlset *s; union control *c; - int i; - - 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(win)); - c->generic.column = 0; - } /* - * The Config structure contains two Unix-specific elements - * which are not configured in here: stamp_utmp and - * login_shell. This is because pterm does not put up a - * configuration box right at the start, which is the only time - * when these elements would be useful to configure. + * The Conf structure contains two Unix-specific elements which + * are not configured in here: stamp_utmp and login_shell. This + * is because pterm does not put up a configuration box right at + * the start, which is the only time when these elements would + * be useful to configure. */ /* @@ -51,82 +32,6 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win) s->ctrls[0]->editbox.has_list = 0; /* - * GTK makes it rather easier to put the scrollbar on the left - * than Windows does! - */ - s = ctrl_getset(b, "Window", "scrollback", - "Control the scrollback in the window"); - ctrl_checkbox(s, "Scrollbar on left", 'l', - HELPCTX(no_help), - dlg_stdcheckbox_handler, - I(offsetof(Config,scrollbar_on_left))); - /* - * Really this wants to go just after `Display scrollbar'. See - * if we can find that control, and do some shuffling. - */ - for (i = 0; i < s->ncontrols; i++) { - c = s->ctrls[i]; - if (c->generic.type == CTRL_CHECKBOX && - c->generic.context.i == offsetof(Config,scrollbar)) { - /* - * Control i is the scrollbar checkbox. - * Control s->ncontrols-1 is the scrollbar-on-left one. - */ - if (i < s->ncontrols-2) { - c = s->ctrls[s->ncontrols-1]; - memmove(s->ctrls+i+2, s->ctrls+i+1, - (s->ncontrols-i-2)*sizeof(union control *)); - s->ctrls[i+1] = c; - } - break; - } - } - - /* - * X requires three more fonts: bold, wide, and wide-bold; also - * we need the fiddly shadow-bold-offset control. This would - * make the Window/Appearance panel rather unwieldy and large, - * so I think the sensible thing here is to _move_ this - * controlset into a separate Window/Fonts panel! - */ - s2 = ctrl_getset(b, "Window/Appearance", "font", - "Font settings"); - /* Remove this controlset from b. */ - for (i = 0; i < b->nctrlsets; i++) { - if (b->ctrlsets[i] == s2) { - memmove(b->ctrlsets+i, b->ctrlsets+i+1, - (b->nctrlsets-i-1) * sizeof(*b->ctrlsets)); - b->nctrlsets--; - break; - } - } - ctrl_settitle(b, "Window/Fonts", "Options controlling font usage"); - s = ctrl_getset(b, "Window/Fonts", "font", - "Fonts for displaying non-bold text"); - ctrl_fontsel(s, "Font used for ordinary text", 'f', - HELPCTX(no_help), - dlg_stdfontsel_handler, I(offsetof(Config,font))); - ctrl_fontsel(s, "Font used for wide (CJK) text", 'w', - HELPCTX(no_help), - dlg_stdfontsel_handler, I(offsetof(Config,widefont))); - s = ctrl_getset(b, "Window/Fonts", "fontbold", - "Fonts for displaying bolded text"); - ctrl_fontsel(s, "Font used for bolded text", 'b', - HELPCTX(no_help), - dlg_stdfontsel_handler, I(offsetof(Config,boldfont))); - 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.", - 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. */ @@ -136,8 +41,8 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win) 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->generic.context.i == CONF_proxy_type) { + assert(c->generic.handler == conf_radiobutton_handler); c->radio.nbuttons++; c->radio.buttons = sresize(c->radio.buttons, c->radio.nbuttons, char *); @@ -153,9 +58,8 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win) 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); + c->generic.context.i == CONF_proxy_telnet_command) { + assert(c->generic.handler == conf_editbox_handler); sfree(c->generic.label); c->generic.label = dupstr("Telnet command, or local" " proxy command"); @@ -164,4 +68,12 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win) } } + /* + * Serial back end is available on Unix. However, we have to + * mask out a couple of the configuration options: mark and + * space parity are not conveniently supported, and neither is + * DSR/DTR flow control. + */ + if (!midsession || (protocol == PROT_SERIAL)) + ser_setup_config_box(b, midsession, 0x07, 0x07); }