1 /* Text.c- text/font settings
3 * WPrefs - WindowMaker 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
{
30 CallbackRec callbacks
;
64 #define ICON_FILE "fonts"
70 changePage(WMWidget
*w
, void *data
)
72 _Panel
*panel
= (_Panel
*)data
;
75 sect
= WMGetPopUpButtonSelectedItem(w
);
78 WMMapWidget(panel
->alignF
);
80 WMUnmapWidget(panel
->alignF
);
85 WMSetTextFieldText(panel
->nameT
, panel
->windowFont
);
86 WMSetLabelFont(panel
->sampleL
, panel
->windowF
);
89 WMSetTextFieldText(panel
->nameT
, panel
->menuFont
);
90 WMSetLabelFont(panel
->sampleL
, panel
->menuF
);
93 WMSetTextFieldText(panel
->nameT
, panel
->itemFont
);
94 WMSetLabelFont(panel
->sampleL
, panel
->itemF
);
97 WMSetTextFieldText(panel
->nameT
, panel
->iconFont
);
98 WMSetLabelFont(panel
->sampleL
, panel
->iconF
);
101 WMSetTextFieldText(panel
->nameT
, panel
->clipFont
);
102 WMSetLabelFont(panel
->sampleL
, panel
->clipF
);
105 WMSetTextFieldText(panel
->nameT
, panel
->geoFont
);
106 WMSetLabelFont(panel
->sampleL
, panel
->geoF
);
113 showData(_Panel
*panel
)
115 WMScreen
*scr
= WMWidgetScreen(panel
->win
);
118 str
= GetStringForKey("WindowTitleFont");
120 str
= "-*-helvetica-bold-r-normal-*-12-*";
121 panel
->windowF
= WMCreateFont(scr
, str
);
122 panel
->windowFont
= wstrdup(str
);
124 str
= GetStringForKey("MenuTitleFont");
126 str
= "-*-helvetica-bold-r-normal-*-12-*";
127 panel
->menuF
= WMCreateFont(scr
, str
);
128 panel
->menuFont
= wstrdup(str
);
130 str
= GetStringForKey("MenuTextFont");
132 str
= "-*-helvetica-medium-r-normal-*-12-*";
133 panel
->itemF
= WMCreateFont(scr
, str
);
134 panel
->itemFont
= wstrdup(str
);
136 str
= GetStringForKey("IconTitleFont");
138 str
= "-*-helvetica-medium-r-normal-*-8-*";
139 panel
->iconF
= WMCreateFont(scr
, str
);
140 panel
->iconFont
= wstrdup(str
);
142 str
= GetStringForKey("ClipTitleFont");
144 str
= "-*-helvetica-medium-r-normal-*-10-*";
145 panel
->clipF
= WMCreateFont(scr
, str
);
146 panel
->clipFont
= wstrdup(str
);
148 str
= GetStringForKey("DisplayFont");
150 str
= "-*-helvetica-medium-r-normal-*-12-*";
151 panel
->geoF
= WMCreateFont(scr
, str
);
152 panel
->geoFont
= wstrdup(str
);
154 str
= GetStringForKey("TitleJustify");
155 if (strcasecmp(str
,"left")==0)
156 WMPerformButtonClick(panel
->leftB
);
157 else if (strcasecmp(str
,"center")==0)
158 WMPerformButtonClick(panel
->centerB
);
159 else if (strcasecmp(str
,"right")==0)
160 WMPerformButtonClick(panel
->rightB
);
162 changePage(panel
->secP
, panel
);
167 editedName(void *data
, WMNotification
*notification
)
169 _Panel
*panel
= (_Panel
*)data
;
171 if ((int)WMGetNotificationClientData(notification
)==WMReturnTextMovement
) {
176 name
= WMGetTextFieldText(panel
->nameT
);
177 font
= WMCreateFont(WMWidgetScreen(panel
->win
), name
);
179 sprintf(buffer
, _("Invalid font %s."), name
);
180 WMRunAlertPanel(WMWidgetScreen(panel
->win
), panel
->win
,
181 _("Error"), buffer
, _("OK"), NULL
, NULL
);
186 sect
= WMGetPopUpButtonSelectedItem(panel
->secP
);
190 if (panel
->windowFont
)
191 free(panel
->windowFont
);
192 panel
->windowFont
= name
;
194 WMReleaseFont(panel
->windowF
);
195 panel
->windowF
= font
;
199 free(panel
->menuFont
);
200 panel
->menuFont
= name
;
202 WMReleaseFont(panel
->menuF
);
207 free(panel
->itemFont
);
208 panel
->itemFont
= name
;
210 WMReleaseFont(panel
->itemF
);
215 free(panel
->iconFont
);
216 panel
->iconFont
= name
;
218 WMReleaseFont(panel
->iconF
);
223 free(panel
->clipFont
);
224 panel
->clipFont
= name
;
226 WMReleaseFont(panel
->clipF
);
231 free(panel
->geoFont
);
232 panel
->geoFont
= name
;
234 WMReleaseFont(panel
->geoF
);
238 changePage(panel
->secP
, panel
);
245 createPanel(Panel
*p
)
247 _Panel
*panel
= (_Panel
*)p
;
249 panel
->frame
= WMCreateFrame(panel
->win
);
250 WMResizeWidget(panel
->frame
, FRAME_WIDTH
, FRAME_HEIGHT
);
251 WMMoveWidget(panel
->frame
, FRAME_LEFT
, FRAME_TOP
);
253 panel
->setB
= WMCreateCommandButton(panel
->frame
);
254 WMResizeWidget(panel
->setB
, 145, 20);
255 WMMoveWidget(panel
->setB
, 50, 25);
256 WMSetButtonText(panel
->setB
, _("Set Font..."));
258 panel
->secP
= WMCreatePopUpButton(panel
->frame
);
259 WMResizeWidget(panel
->secP
, 260, 20);
260 WMMoveWidget(panel
->secP
, 205, 25);
261 WMSetPopUpButtonAction(panel
->secP
, changePage
, panel
);
262 WMAddPopUpButtonItem(panel
->secP
, _("Window Title Font"));
263 WMAddPopUpButtonItem(panel
->secP
, _("Menu Title Font"));
264 WMAddPopUpButtonItem(panel
->secP
, _("Menu Item Font"));
265 WMAddPopUpButtonItem(panel
->secP
, _("Icon Title Font"));
266 WMAddPopUpButtonItem(panel
->secP
, _("Clip Title Font"));
267 WMAddPopUpButtonItem(panel
->secP
, _("Geometry Display Font"));
268 WMSetPopUpButtonSelectedItem(panel
->secP
, 0);
270 panel
->nameT
= WMCreateTextField(panel
->frame
);
271 WMResizeWidget(panel
->nameT
, 285, 24);
272 WMMoveWidget(panel
->nameT
, 50, 80);
273 WMAddNotificationObserver(editedName
, panel
,
274 WMTextDidEndEditingNotification
, panel
->nameT
);
276 panel
->sampleL
= WMCreateLabel(panel
->frame
);
277 WMResizeWidget(panel
->sampleL
, 285, 85);
278 WMMoveWidget(panel
->sampleL
, 50, 135);
279 WMSetLabelRelief(panel
->sampleL
, WRSunken
);
280 WMSetLabelText(panel
->sampleL
, _("Sample Text\nabcdefghijklmnopqrstuvxywz\nABCDEFGHIJKLMNOPQRSTUVXYWZ\n0123456789"));
282 panel
->alignF
= WMCreateFrame(panel
->frame
);
283 WMResizeWidget(panel
->alignF
, 120, 160);
284 WMMoveWidget(panel
->alignF
, 345, 60);
285 WMSetFrameTitle(panel
->alignF
, _("Alignment"));
287 panel
->leftB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
288 WMResizeWidget(panel
->leftB
, 100, 24);
289 WMMoveWidget(panel
->leftB
, 10, 25);
290 WMSetButtonText(panel
->leftB
, _("Left"));
291 WMSetButtonTextAlignment(panel
->leftB
, WALeft
);
293 panel
->centerB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
294 WMResizeWidget(panel
->centerB
, 100, 24);
295 WMMoveWidget(panel
->centerB
, 10, 70);
296 WMSetButtonText(panel
->centerB
, _("Center"));
297 WMSetButtonTextAlignment(panel
->centerB
, WACenter
);
298 WMGroupButtons(panel
->leftB
, panel
->centerB
);
300 panel
->rightB
= WMCreateButton(panel
->alignF
, WBTOnOff
);
301 WMResizeWidget(panel
->rightB
, 100, 24);
302 WMMoveWidget(panel
->rightB
, 10, 115);
303 WMSetButtonText(panel
->rightB
, _("Right"));
304 WMSetButtonTextAlignment(panel
->rightB
, WARight
);
305 WMGroupButtons(panel
->leftB
, panel
->rightB
);
307 WMMapSubwidgets(panel
->alignF
);
309 WMRealizeWidget(panel
->frame
);
310 WMMapSubwidgets(panel
->frame
);
318 InitText(WMScreen
*scr
, WMWindow
*win
)
322 panel
= wmalloc(sizeof(_Panel
));
323 memset(panel
, 0, sizeof(_Panel
));
325 panel
->sectionName
= _("Text Preferences");
329 panel
->callbacks
.createWidgets
= createPanel
;
331 AddSection(panel
, ICON_FILE
);