2 * gtkcfg.c - the GTK-specific parts of the PuTTY configuration
13 static void about_handler(union control
*ctrl
, void *dlg
,
14 void *data
, int event
)
16 if (event
== EVENT_ACTION
) {
17 about_box(ctrl
->generic
.context
.p
);
21 void gtk_setup_config_box(struct controlbox
*b
, int midsession
, void *win
)
23 struct controlset
*s
, *s2
;
29 * Add the About button to the standard panel.
31 s
= ctrl_getset(b
, "", "", "");
32 c
= ctrl_pushbutton(s
, "About", 'a', HELPCTX(no_help
),
33 about_handler
, P(win
));
34 c
->generic
.column
= 0;
38 * GTK makes it rather easier to put the scrollbar on the left
41 s
= ctrl_getset(b
, "Window", "scrollback",
42 "Control the scrollback in the window");
43 ctrl_checkbox(s
, "Scrollbar on left", 'l',
45 dlg_stdcheckbox_handler
,
46 I(offsetof(Config
,scrollbar_on_left
)));
48 * Really this wants to go just after `Display scrollbar'. See
49 * if we can find that control, and do some shuffling.
51 for (i
= 0; i
< s
->ncontrols
; i
++) {
53 if (c
->generic
.type
== CTRL_CHECKBOX
&&
54 c
->generic
.context
.i
== offsetof(Config
,scrollbar
)) {
56 * Control i is the scrollbar checkbox.
57 * Control s->ncontrols-1 is the scrollbar-on-left one.
59 if (i
< s
->ncontrols
-2) {
60 c
= s
->ctrls
[s
->ncontrols
-1];
61 memmove(s
->ctrls
+i
+2, s
->ctrls
+i
+1,
62 (s
->ncontrols
-i
-2)*sizeof(union control
*));
70 * X requires three more fonts: bold, wide, and wide-bold; also
71 * we need the fiddly shadow-bold-offset control. This would
72 * make the Window/Appearance panel rather unwieldy and large,
73 * so I think the sensible thing here is to _move_ this
74 * controlset into a separate Window/Fonts panel!
76 s2
= ctrl_getset(b
, "Window/Appearance", "font",
78 /* Remove this controlset from b. */
79 for (i
= 0; i
< b
->nctrlsets
; i
++) {
80 if (b
->ctrlsets
[i
] == s2
) {
81 memmove(b
->ctrlsets
+i
, b
->ctrlsets
+i
+1,
82 (b
->nctrlsets
-i
-1) * sizeof(*b
->ctrlsets
));
87 ctrl_settitle(b
, "Window/Fonts", "Options controlling font usage");
88 s
= ctrl_getset(b
, "Window/Fonts", "font",
89 "Fonts for displaying non-bold text");
90 ctrl_fontsel(s
, "Font used for ordinary text", 'f',
92 dlg_stdfontsel_handler
, I(offsetof(Config
,font
)));
93 ctrl_fontsel(s
, "Font used for wide (CJK) text", 'w',
95 dlg_stdfontsel_handler
, I(offsetof(Config
,widefont
)));
96 s
= ctrl_getset(b
, "Window/Fonts", "fontbold",
97 "Fonts for displaying bolded text");
98 ctrl_fontsel(s
, "Font used for bolded text", 'b',
100 dlg_stdfontsel_handler
, I(offsetof(Config
,boldfont
)));
101 ctrl_fontsel(s
, "Font used for bold wide text", 'i',
103 dlg_stdfontsel_handler
, I(offsetof(Config
,wideboldfont
)));
104 ctrl_checkbox(s
, "Use shadow bold instead of bold fonts", 'u',
106 dlg_stdcheckbox_handler
,
107 I(offsetof(Config
,shadowbold
)));
108 ctrl_text(s
, "(Note that bold fonts or shadow bolding are only"
109 " used if you have not requested bolding to be done by"
110 " changing the text colour.)",
112 ctrl_editbox(s
, "Horizontal offset for shadow bold:", 'z', 20,
113 HELPCTX(no_help
), dlg_stdeditbox_handler
,
114 I(offsetof(Config
,shadowboldoffset
)), I(-1));
117 * Markus Kuhn feels, not totally unreasonably, that it's good
118 * for all applications to shift into UTF-8 mode if they notice
119 * that they've been started with a LANG setting dictating it,
120 * so that people don't have to keep remembering a separate
121 * UTF-8 option for every application they use. Therefore,
122 * here's an override option in the Translation panel.
124 s
= ctrl_getset(b
, "Window/Translation", "trans",
125 "Character set translation on received data");
126 ctrl_checkbox(s
, "Override with UTF-8 if locale says so", 'l',
127 HELPCTX(translation_utf8_override
),
128 dlg_stdcheckbox_handler
,
129 I(offsetof(Config
,utf8_override
)));