1 /* Text.c- text/font settings
3 * WPrefs - Window Maker Preferences Program
5 * Copyright (c) 1998 Alfredo K. Kojima
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
26 typedef struct _Panel
{
32 CallbackRec callbacks
;
66 #define ICON_FILE "fonts"
72 changePage(WMWidget
*w
, void *data
)
74 _Panel
*panel
= (_Panel
*)data
;
77 sect
= WMGetPopUpButtonSelectedItem(w
);
80 WMMapWidget(panel
->alignF
);
82 WMUnmapWidget(panel
->alignF
);
87 WMSetTextFieldText(panel
->nameT
, panel
->windowFont
);
88 WMSetLabelFont(panel
->sampleL
, panel
->windowF
);
91 WMSetTextFieldText(panel
->nameT
, panel
->menuFont
);
92 WMSetLabelFont(panel
->sampleL
, panel
->menuF
);
95 WMSetTextFieldText(panel
->nameT
, panel
->itemFont
);
96 WMSetLabelFont(panel
->sampleL
, panel
->itemF
);
99 WMSetTextFieldText(panel
->nameT
, panel
->iconFont
);
100 WMSetLabelFont(panel
->sampleL
, panel
->iconF
);
103 WMSetTextFieldText(panel
->nameT
, panel
->clipFont
);
104 WMSetLabelFont(panel
->sampleL
, panel
->clipF
);
107 WMSetTextFieldText(panel
->nameT
, panel
->geoFont
);
108 WMSetLabelFont(panel
->sampleL
, panel
->geoF
);
115 showData(_Panel
*panel
)
117 WMScreen
*scr
= WMWidgetScreen(panel
->win
);
120 str
= GetStringForKey("WindowTitleFont");
122 str
= "-*-helvetica-bold-r-normal-*-12-*";
123 panel
->windowF
= WMCreateFont(scr
, str
);
124 panel
->windowFont
= wstrdup(str
);
126 str
= GetStringForKey("MenuTitleFont");
128 str
= "-*-helvetica-bold-r-normal-*-12-*";
129 panel
->menuF
= WMCreateFont(scr
, str
);
130 panel
->menuFont
= wstrdup(str
);
132 str
= GetStringForKey("MenuTextFont");
134 str
= "-*-helvetica-medium-r-normal-*-12-*";
135 panel
->itemF
= WMCreateFont(scr
, str
);
136 panel
->itemFont
= wstrdup(str
);
138 str
= GetStringForKey("IconTitleFont");
140 str
= "-*-helvetica-medium-r-normal-*-8-*";
141 panel
->iconF
= WMCreateFont(scr
, str
);
142 panel
->iconFont
= wstrdup(str
);
144 str
= GetStringForKey("ClipTitleFont");
146 str
= "-*-helvetica-medium-r-normal-*-10-*";
147 panel
->clipF
= WMCreateFont(scr
, str
);
148 panel
->clipFont
= wstrdup(str
);
150 str
= GetStringForKey("DisplayFont");
152 str
= "-*-helvetica-medium-r-normal-*-12-*";
153 panel
->geoF
= WMCreateFont(scr
, str
);
154 panel
->geoFont
= wstrdup(str
);
156 str
= GetStringForKey("TitleJustify");
157 if (strcasecmp(str
,"left")==0)
158 WMPerformButtonClick(panel
->leftB
);
159 else if (strcasecmp(str
,"center")==0)
160 WMPerformButtonClick(panel
->centerB
);
161 else if (strcasecmp(str
,"right")==0)
162 WMPerformButtonClick(panel
->rightB
);
164 changePage(panel
->secP
, panel
);
169 editedName(void *data
, WMNotification
*notification
)
171 _Panel
*panel
= (_Panel
*)data
;
173 if ((int)WMGetNotificationClientData(notification
)==WMReturnTextMovement
) {
178 name
= WMGetTextFieldText(panel
->nameT
);
179 font
= WMCreateFont(WMWidgetScreen(panel
->win
), name
);
181 sprintf(buffer
, _("Invalid font %s."), name
);
182 WMRunAlertPanel(WMWidgetScreen(panel
->win
), panel
->win
,
183 _("Error"), buffer
, _("OK"), NULL
, NULL
);
188 sect
= WMGetPopUpButtonSelectedItem(panel
->secP
);
192 if (panel
->windowFont
)
193 free(panel
->windowFont
);
194 panel
->windowFont
= name
;
196 WMReleaseFont(panel
->windowF
);
197 panel
->windowF
= font
;
201 free(panel
->menuFont
);
202 panel
->menuFont
= name
;
204 WMReleaseFont(panel
->menuF
);
209 free(panel
->itemFont
);
210 panel
->itemFont
= name
;
212 WMReleaseFont(panel
->itemF
);
217 free(panel
->iconFont
);
218 panel
->iconFont
= name
;
220 WMReleaseFont(panel
->iconF
);
225 free(panel
->clipFont
);
226 panel
->clipFont
= name
;
228 WMReleaseFont(panel
->clipF
);
233 free(panel
->geoFont
);
234 panel
->geoFont
= name
;
236 WMReleaseFont(panel
->geoF
);
240 changePage(panel
->secP
, panel
);
247 createPanel(Panel
*p
)
249 _Panel
*panel
= (_Panel
*)p
;
251 panel
->frame
= WMCreateFrame(panel
->win
);
252 WMResizeWidget(panel
->frame
, FRAME_WIDTH
, FRAME_HEIGHT
);
253 WMMoveWidget(panel
->frame
, FRAME_LEFT
, FRAME_TOP
);
255 panel
->setB
= WMCreateCommandButton(panel
->frame
);
256 WMResizeWidget(panel
->setB
, 145, 20);
257 WMMoveWidget(panel
->setB
, 50, 25);
258 WMSetButtonText(panel
->setB
, _("Set Font..."));
260 panel
->secP
= WMCreatePopUpButton(panel
->frame
);
261 WMResizeWidget(panel
->secP
, 260, 20);
262 WMMoveWidget(panel
->secP
, 205, 25);
263 WMSetPopUpButtonAction(panel
->secP
, changePage
, panel
);
264 WMAddPopUpButtonItem(panel
->secP
, _("Window Title Font"));
265 WMAddPopUpButtonItem(panel
->secP
, _("Menu Title Font"));
266 WMAddPopUpButtonItem(panel
->secP
, _("Menu Item Font"));
267 WMAddPopUpButtonItem(panel
->secP
, _("Icon Title Font"));
268 WMAddPopUpButtonItem(panel
->secP
, _("Clip Title Font"));
269 WMAddPopUpButtonItem(panel
->secP
, _("Geometry Display Font"));
270 WMSetPopUpButtonSelectedItem(panel
->secP
, 0);
272 panel
->nameT
= WMCreateTextField(panel
->frame
);
273 WMResizeWidget(panel
->nameT
, 285, 24);
274 WMMoveWidget(panel
->nameT
, 50, 80);
275 WMAddNotificationObserver(editedName
, panel
,
276 WMTextDidEndEditingNotification
, panel
->nameT
);
278 panel
->sampleL
= WMCreateLabel(panel
->frame
);
279 WMResizeWidget(panel
->sampleL
, 285, 85);
280 WMMoveWidget(panel
->sampleL
, 50, 135);
281 WMSetLabelRelief(panel
->sampleL
, WRSunken
);
282 WMSetLabelText(panel
->sampleL
, _("Sample Text\nabcdefghijklmnopqrstuvxywz\nABCDEFGHIJKLMNOPQRSTUVXYWZ\n0123456789"));
284 panel
->alignF
= WMCreateFrame(panel
->frame
);
285 WMResizeWidget(panel
->alignF
, 120, 160);
286 WMMoveWidget(panel
->alignF
, 345, 60);
287 WMSetFrameTitle(panel
->alignF
, _("Alignment"));
289 panel
->leftB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
290 WMResizeWidget(panel
->leftB
, 100, 24);
291 WMMoveWidget(panel
->leftB
, 10, 25);
292 WMSetButtonText(panel
->leftB
, _("Left"));
293 WMSetButtonTextAlignment(panel
->leftB
, WALeft
);
295 panel
->centerB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
296 WMResizeWidget(panel
->centerB
, 100, 24);
297 WMMoveWidget(panel
->centerB
, 10, 70);
298 WMSetButtonText(panel
->centerB
, _("Center"));
299 WMSetButtonTextAlignment(panel
->centerB
, WACenter
);
300 WMGroupButtons(panel
->leftB
, panel
->centerB
);
302 panel
->rightB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
303 WMResizeWidget(panel
->rightB
, 100, 24);
304 WMMoveWidget(panel
->rightB
, 10, 115);
305 WMSetButtonText(panel
->rightB
, _("Right"));
306 WMSetButtonTextAlignment(panel
->rightB
, WARight
);
307 WMGroupButtons(panel
->leftB
, panel
->rightB
);
309 WMMapSubwidgets(panel
->alignF
);
311 WMRealizeWidget(panel
->frame
);
312 WMMapSubwidgets(panel
->frame
);
320 InitText(WMScreen
*scr
, WMWindow
*win
)
324 panel
= wmalloc(sizeof(_Panel
));
325 memset(panel
, 0, sizeof(_Panel
));
327 panel
->sectionName
= _("Text Preferences");
328 /* panel->description =*/
332 panel
->callbacks
.createWidgets
= createPanel
;
334 AddSection(panel
, ICON_FILE
);