From 8d68f26a32002e37eb29dbe58d6549d3bd0ec2f7 Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 14 Feb 2005 07:41:41 +0000 Subject: [PATCH] Saw uxcfg.c in half down the middle, to separate out config changes that apply to all Unix-like systems from those which apply specifically to the GTK front end. git-svn-id: svn://svn.tartarus.org/sgt/putty@5292 cda61777-01e9-0310-a592-d414129be87e --- Recipe | 4 +- unix/gtkcfg.c | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ unix/gtkdlg.c | 1 + unix/unix.h | 3 ++ unix/uxcfg.c | 115 +-------------------------------------------------- 5 files changed, 137 insertions(+), 116 deletions(-) create mode 100644 unix/gtkcfg.c diff --git a/Recipe b/Recipe index 8fe9f351..ce9d052b 100644 --- a/Recipe +++ b/Recipe @@ -190,8 +190,8 @@ GUITERM = TERMINAL window windlg winctrls sizetip winucs winprint + winutils wincfg # Same thing on Unix. -UXTERM = TERMINAL gtkwin gtkdlg gtkcols gtkpanel uxcfg uxucs uxprint xkeysym - + timing +UXTERM = TERMINAL gtkwin gtkdlg gtkcols gtkpanel gtkcfg uxcfg uxucs uxprint + + xkeysym timing # Non-SSH back ends (putty, puttytel, plink). NONSSH = telnet raw rlogin ldisc pinger diff --git a/unix/gtkcfg.c b/unix/gtkcfg.c new file mode 100644 index 00000000..00e88b40 --- /dev/null +++ b/unix/gtkcfg.c @@ -0,0 +1,130 @@ +/* + * gtkcfg.c - the GTK-specific parts of the PuTTY configuration + * box. + */ + +#include +#include + +#include "putty.h" +#include "dialog.h" +#include "storage.h" + +static void about_handler(union control *ctrl, void *dlg, + void *data, int event) +{ + if (event == EVENT_ACTION) { + about_box(ctrl->generic.context.p); + } +} + +void gtk_setup_config_box(struct controlbox *b, int midsession, void *win) +{ + struct controlset *s, *s2; + 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; + } + + /* + * 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_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)); + + /* + * Markus Kuhn feels, not totally unreasonably, that it's good + * for all applications to shift into UTF-8 mode if they notice + * that they've been started with a LANG setting dictating it, + * so that people don't have to keep remembering a separate + * UTF-8 option for every application they use. Therefore, + * here's an override option in the Translation panel. + */ + s = ctrl_getset(b, "Window/Translation", "trans", + "Character set translation on received data"); + ctrl_checkbox(s, "Override with UTF-8 if locale says so", 'l', + HELPCTX(translation_utf8_override), + dlg_stdcheckbox_handler, + I(offsetof(Config,utf8_override))); +} diff --git a/unix/gtkdlg.c b/unix/gtkdlg.c index c774c8bc..7c6de2e0 100644 --- a/unix/gtkdlg.c +++ b/unix/gtkdlg.c @@ -1977,6 +1977,7 @@ int do_config_box(const char *title, Config *cfg, int midsession, ctrlbox = ctrl_new_box(); setup_config_box(ctrlbox, &sl, midsession, cfg->protocol, protcfginfo); unix_setup_config_box(ctrlbox, midsession, window); + gtk_setup_config_box(ctrlbox, midsession, window); gtk_window_set_title(GTK_WINDOW(window), title); hbox = gtk_hbox_new(FALSE, 4); diff --git a/unix/unix.h b/unix/unix.h index daf42e1c..4fb5662f 100644 --- a/unix/unix.h +++ b/unix/unix.h @@ -98,6 +98,9 @@ void uxsel_input_remove(int id); struct controlbox; void unix_setup_config_box(struct controlbox *b, int midsession, void *window); +/* gtkcfg.c */ +void gtk_setup_config_box(struct controlbox *b, int midsession, void *window); + /* * In the Unix Unicode layer, DEFAULT_CODEPAGE is a special value * which causes mb_to_wc and wc_to_mb to call _libc_ rather than diff --git a/unix/uxcfg.c b/unix/uxcfg.c index fff29680..6629bd94 100644 --- a/unix/uxcfg.c +++ b/unix/uxcfg.c @@ -10,29 +10,10 @@ #include "dialog.h" #include "storage.h" -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; + 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 @@ -51,100 +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_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)); - - /* - * Markus Kuhn feels, not totally unreasonably, that it's good - * for all applications to shift into UTF-8 mode if they notice - * that they've been started with a LANG setting dictating it, - * so that people don't have to keep remembering a separate - * UTF-8 option for every application they use. Therefore, - * here's an override option in the Translation panel. - */ - s = ctrl_getset(b, "Window/Translation", "trans", - "Character set translation on received data"); - ctrl_checkbox(s, "Override with UTF-8 if locale says so", 'l', - HELPCTX(translation_utf8_override), - dlg_stdcheckbox_handler, - I(offsetof(Config,utf8_override))); - - /* * Unix supports a local-command proxy. This also means we must * adjust the text on the `Telnet command' control. */ -- 2.11.0