1 /*
2  GtkLP
3   graphical Frontends for non-administrative CUPS users.
4 
5  Copyright (C) 1998-2004 Tobias Mueller
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License
9  as published by the Free Software Foundation; either version 2
10  of the License, or (at your option) any later version.
11 
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.
16 
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., 51 Franklin Street, Fifth Floor,
20  Boston, MA 02110-1301, USA
21 
22 */
23 
24 #include <config.h>
25 
26 #include "text.h"
27 
28 #include <stdlib.h>
29 #include <ctype.h>
30 #include <gtk/gtk.h>
31 
32 #include <gettext.h>
33 #include <defaults.h>
34 #include <libgtklp.h>
35 
36 #include "gtklp.h"
37 #include "gtklp_functions.h"
38 
39 GtkWidget *textTab;
40 GtkWidget *textSizesFrame;
41 GtkWidget *textCPIField, *textLPIField, *textCPPField;
42 GtkWidget *textLeftField, *textRightField, *textTopField, *textBottomField;
43 GtkWidget *textLeftField_I, *textRightField_I, *textTopField_I,
44     *textBottomField_I;
45 GtkWidget *textLeftField_C, *textRightField_C, *textTopField_C,
46     *textBottomField_C;
47 GtkWidget *textMarginsFrame;
48 GtkWidget *textPrettyFrame;
49 GtkWidget *prettyCheck, *wrapCheck;
50 
textTabSetDefaults(void)51 void textTabSetDefaults(void)
52 {
53 	char tmp[MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
54 		 MAX_MARGIN_DIGITS + 5];
55 
56 	if (DEBUG)
57 		printf("Get textTabDefaults\n");
58 
59 	/* Sizes */
60 	snprintf(tmp,
61 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
62 		 MAX_MARGIN_DIGITS + 4, "%u", cpivalue);
63 	gtk_entry_set_text(GTK_ENTRY(textCPIField), tmp);
64 	snprintf(tmp,
65 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
66 		 MAX_MARGIN_DIGITS + 4, "%u", lpivalue);
67 	gtk_entry_set_text(GTK_ENTRY(textLPIField), tmp);
68 	snprintf(tmp,
69 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
70 		 MAX_MARGIN_DIGITS + 4, "%u", cppvalue);
71 	gtk_entry_set_text(GTK_ENTRY(textCPPField), tmp);
72 
73 	/* Margins */
74 	snprintf(tmp,
75 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
76 		 MAX_MARGIN_DIGITS + 4, "%u", topmargin);
77 	gtk_entry_set_text(GTK_ENTRY(textTopField), tmp);
78 	snprintf(tmp,
79 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
80 		 MAX_MARGIN_DIGITS + 4, "%.3f", topmargin * 0.01389);
81 	gtk_label_set_text(GTK_LABEL(textTopField_I), tmp);
82 	snprintf(tmp,
83 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
84 		 MAX_MARGIN_DIGITS + 4, "%.2f", topmargin * 0.35);
85 	gtk_label_set_text(GTK_LABEL(textTopField_C), tmp);
86 
87 	snprintf(tmp,
88 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
89 		 MAX_MARGIN_DIGITS + 4, "%u", bottommargin);
90 	gtk_entry_set_text(GTK_ENTRY(textBottomField), tmp);
91 	snprintf(tmp,
92 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
93 		 MAX_MARGIN_DIGITS + 4, "%.3f", bottommargin * 0.01389);
94 	gtk_label_set_text(GTK_LABEL(textBottomField_I), tmp);
95 	snprintf(tmp,
96 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
97 		 MAX_MARGIN_DIGITS + 4, "%.2f", bottommargin * 0.35);
98 	gtk_label_set_text(GTK_LABEL(textBottomField_C), tmp);
99 
100 	snprintf(tmp,
101 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
102 		 MAX_MARGIN_DIGITS + 4, "%u", leftmargin);
103 	gtk_entry_set_text(GTK_ENTRY(textLeftField), tmp);
104 	snprintf(tmp,
105 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
106 		 MAX_MARGIN_DIGITS + 4, "%.3f", leftmargin * 0.01389);
107 	gtk_label_set_text(GTK_LABEL(textLeftField_I), tmp);
108 	snprintf(tmp,
109 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
110 		 MAX_MARGIN_DIGITS + 4, "%.2f", leftmargin * 0.35);
111 	gtk_label_set_text(GTK_LABEL(textLeftField_C), tmp);
112 
113 	snprintf(tmp,
114 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
115 		 MAX_MARGIN_DIGITS + 4, "%u", rightmargin);
116 	gtk_entry_set_text(GTK_ENTRY(textRightField), tmp);
117 	snprintf(tmp,
118 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
119 		 MAX_MARGIN_DIGITS + 4, "%.3f", rightmargin * 0.01389);
120 	gtk_label_set_text(GTK_LABEL(textRightField_I), tmp);
121 	snprintf(tmp,
122 		 (size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS +
123 		 MAX_MARGIN_DIGITS + 4, "%.2f", rightmargin * 0.35);
124 	gtk_label_set_text(GTK_LABEL(textRightField_C), tmp);
125 
126 	/* Pretty Print */
127 	if (prettyprint) {
128 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prettyCheck), 1);
129 	} else {
130 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prettyCheck), 0);
131 	}
132 
133 	/* Wrap Text */
134 	if (textwrap) {
135 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wrapCheck), 1);
136 	} else {
137 		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wrapCheck), 0);
138 	}
139 }
140 
textSizesChanged(GtkWidget * widget,gpointer data)141 void textSizesChanged(GtkWidget * widget, gpointer data)
142 {
143 	char tmp[MAX_CPI_DIGITS + MAX_LPI_DIGITS + MAX_CPP_DIGITS + 1];
144 	unsigned i1, flg = 0;
145 
146 	tmp[0] = (uintptr_t) NULL;
147 
148 	if (DEBUG)
149 		printf("textSizesChanged: %s->%s\n", (char *)data, tmp);
150 
151 	if (strcmp(data, "CPI") == 0) {
152 		strncpy(tmp,
153 			gtk_editable_get_chars(GTK_EDITABLE(textCPIField), 0,
154 					       -1),
155 			(size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS +
156 			MAX_CPP_DIGITS);
157 	} else if (strcmp(data, "LPI") == 0) {
158 		strncpy(tmp,
159 			gtk_editable_get_chars(GTK_EDITABLE(textLPIField), 0,
160 					       -1),
161 			(size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS +
162 			MAX_CPP_DIGITS);
163 	} else if (strcmp(data, "CPP") == 0) {
164 		strncpy(tmp,
165 			gtk_editable_get_chars(GTK_EDITABLE(textCPPField), 0,
166 					       -1),
167 			(size_t) MAX_CPI_DIGITS + MAX_LPI_DIGITS +
168 			MAX_CPP_DIGITS);
169 	} else {
170 		if (DEBUG)
171 			printf("PROG-ERROR: Unknwon Text-Size change: %s !\n",
172 			       (char *)data);
173 		emergency();
174 	}
175 
176 	for (i1 = 0; i1 < strlen(tmp); i1++) {
177 		if (isdigit(tmp[i1]) == 0) {
178 			if (strcmp(data, "CPI") == 0) {
179 				snprintf(tmp,
180 					 (size_t) MAX_CPI_DIGITS +
181 					 MAX_LPI_DIGITS + MAX_CPP_DIGITS, "%u",
182 					 cpivalue);
183 				gtk_entry_set_text(GTK_ENTRY(textCPIField),
184 						   tmp);
185 				gtk_editable_set_position(GTK_EDITABLE
186 							  (textCPIField), -1);
187 			} else if (strcmp(data, "LPI") == 0) {
188 				snprintf(tmp,
189 					 (size_t) MAX_CPI_DIGITS +
190 					 MAX_LPI_DIGITS + MAX_CPP_DIGITS, "%u",
191 					 lpivalue);
192 				gtk_entry_set_text(GTK_ENTRY(textLPIField),
193 						   tmp);
194 				gtk_editable_set_position(GTK_EDITABLE
195 							  (textLPIField), -1);
196 			} else if (strcmp(data, "CPP") == 0) {
197 				snprintf(tmp,
198 					 (size_t) MAX_CPI_DIGITS +
199 					 MAX_LPI_DIGITS + MAX_CPP_DIGITS, "%u",
200 					 cppvalue);
201 				gtk_entry_set_text(GTK_ENTRY(textCPPField),
202 						   tmp);
203 				gtk_editable_set_position(GTK_EDITABLE
204 							  (textCPPField), -1);
205 			}
206 			flg = 1;
207 			break;
208 		}
209 	}
210 
211 	if ((flg == 0) && tmp[0] != (uintptr_t) NULL) {
212 		if (strcmp(data, "CPI") == 0) {
213 			cpivalue = atoi(tmp);
214 		} else if (strcmp(data, "LPI") == 0) {
215 			lpivalue = atoi(tmp);
216 		} else if (strcmp(data, "CPP") == 0) {
217 			cppvalue = atoi(tmp);
218 		}
219 
220 		if (DEBUG)
221 			printf("textSizes: Value changed: %s\n", tmp);
222 	}
223 
224 }
225 
textSizes(GtkWidget * container)226 void textSizes(GtkWidget * container)
227 {
228 	GtkWidget *mainHBox, *vbox, *hbox1, *hbox2, *hbox3;
229 	GtkWidget *labelCPI, *buttonCPI1;
230 	GtkWidget *labelLPI, *buttonLPI1;
231 	GtkWidget *labelCPP, *buttonCPP1;
232 
233 	mainHBox = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
234 	gtk_box_pack_start(GTK_BOX(container), mainHBox, FALSE, FALSE,
235 			   FRAME_SPACING_V);
236 	gtk_widget_show(mainHBox);
237 
238 	textSizesFrame = gtk_frame_new(str2str(_("Sizes and Spacings")));
239 	gtk_box_pack_start(GTK_BOX(mainHBox), textSizesFrame, TRUE, TRUE,
240 			   FRAME_SPACING_V);
241 
242 	/* Box */
243 	vbox = gtk_vbox_new(FALSE, INFRAME_SPACING_V);
244 	gtk_container_set_border_width(GTK_CONTAINER(vbox), VBOX_BORDER);
245 	gtk_container_add(GTK_CONTAINER(textSizesFrame), vbox);
246 	gtk_widget_show(vbox);
247 
248 	/* Box */
249 	hbox1 = gtk_hbox_new(FALSE, 0);
250 	gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 0);
251 	gtk_widget_show(hbox1);
252 
253 	/* Label CPI */
254 	labelCPI = gtk_label_new(str2str(_("Chars per Inch")));
255 	gtk_misc_set_alignment(GTK_MISC(labelCPI), 0, 0.5);
256 	gtk_widget_set_size_request(GTK_WIDGET(labelCPI), TEXTSIZE_FIELDLENGTH,
257 				    -1);
258 	gtk_box_pack_start(GTK_BOX(hbox1), labelCPI, FALSE, FALSE, 0);
259 	gtk_widget_show(labelCPI);
260 
261 	/* TextBox CPI */
262 	textCPIField = gtk_entry_new_with_max_length(MAX_CPI_DIGITS);
263 	gtk_widget_set_size_request(textCPIField, MAXTEXTPERFIELDDIGITS, -1);
264 	gtk_entry_set_text(GTK_ENTRY(textCPIField), "");
265 	gtk_box_pack_start(GTK_BOX(hbox1), textCPIField, FALSE, FALSE,
266 			   INFRAME_SPACING_V);
267 	gtk_widget_show(textCPIField);
268 
269 	/* Buttons CPI */
270 	buttonCPI1 = gtk_button_new_with_label(str2str(_("Default")));
271 	button_pad(buttonCPI1);
272 	gtk_box_pack_end(GTK_BOX(hbox1), buttonCPI1, FALSE, FALSE, 0);
273 	gtk_widget_show(buttonCPI1);
274 
275 	/* Box */
276 	hbox2 = gtk_hbox_new(FALSE, 0);
277 	gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0);
278 	gtk_widget_show(hbox2);
279 
280 	/* Label LPI */
281 	labelLPI = gtk_label_new(str2str(_("Lines per Inch")));
282 	gtk_misc_set_alignment(GTK_MISC(labelLPI), 0, 0.5);
283 	gtk_widget_set_size_request(GTK_WIDGET(labelLPI), TEXTSIZE_FIELDLENGTH,
284 				    -1);
285 	gtk_box_pack_start(GTK_BOX(hbox2), labelLPI, FALSE, FALSE, 0);
286 	gtk_widget_show(labelLPI);
287 
288 	/* TextBox LPI */
289 	textLPIField = gtk_entry_new_with_max_length(MAX_LPI_DIGITS);
290 	gtk_widget_set_size_request(textLPIField, MAXTEXTPERFIELDDIGITS, -1);
291 	gtk_entry_set_text(GTK_ENTRY(textLPIField), "");
292 	gtk_box_pack_start(GTK_BOX(hbox2), textLPIField, FALSE, FALSE,
293 			   INFRAME_SPACING_V);
294 	gtk_widget_show(textLPIField);
295 
296 	/* Buttons LPI */
297 	buttonLPI1 = gtk_button_new_with_label(str2str(_("Default")));
298 	button_pad(buttonLPI1);
299 	gtk_box_pack_end(GTK_BOX(hbox2), buttonLPI1, FALSE, FALSE, 0);
300 	gtk_widget_show(buttonLPI1);
301 
302 	/* Box */
303 	hbox3 = gtk_hbox_new(FALSE, 0);
304 	gtk_box_pack_start(GTK_BOX(vbox), hbox3, FALSE, FALSE, 0);
305 	gtk_widget_show(hbox3);
306 
307 	/* Label CPP */
308 	labelCPP = gtk_label_new(str2str(_("Columns per Page")));
309 	gtk_misc_set_alignment(GTK_MISC(labelCPP), 0, 0.5);
310 	gtk_widget_set_size_request(GTK_WIDGET(labelCPP), TEXTSIZE_FIELDLENGTH,
311 				    -1);
312 	gtk_box_pack_start(GTK_BOX(hbox3), labelCPP, FALSE, FALSE, 0);
313 	gtk_widget_show(labelCPP);
314 
315 	/* TextBox CPP */
316 	textCPPField = gtk_entry_new_with_max_length(MAX_CPP_DIGITS);
317 	gtk_widget_set_size_request(textCPPField, MAXTEXTPERFIELDDIGITS, -1);
318 	gtk_entry_set_text(GTK_ENTRY(textCPPField), "");
319 	gtk_box_pack_start(GTK_BOX(hbox3), textCPPField, FALSE, FALSE,
320 			   INFRAME_SPACING_V);
321 	gtk_widget_show(textCPPField);
322 
323 	/* Buttons CPI */
324 	buttonCPP1 = gtk_button_new_with_label(str2str(_("Default")));
325 	button_pad(buttonCPP1);
326 	gtk_box_pack_end(GTK_BOX(hbox3), buttonCPP1, FALSE, FALSE, 0);
327 	gtk_widget_show(buttonCPP1);
328 
329 	/* Signals */
330 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textCPIField)), "changed",
331 			   GTK_SIGNAL_FUNC(textSizesChanged), "CPI");
332 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textLPIField)), "changed",
333 			   GTK_SIGNAL_FUNC(textSizesChanged), "LPI");
334 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textCPPField)), "changed",
335 			   GTK_SIGNAL_FUNC(textSizesChanged), "CPP");
336 	gtk_signal_connect(GTK_OBJECT(buttonCPI1), "pressed",
337 			   GTK_SIGNAL_FUNC(resetButton), "CPIDefault");
338 	gtk_signal_connect(GTK_OBJECT(buttonLPI1), "pressed",
339 			   GTK_SIGNAL_FUNC(resetButton), "LPIDefault");
340 	gtk_signal_connect(GTK_OBJECT(buttonCPP1), "pressed",
341 			   GTK_SIGNAL_FUNC(resetButton), "CPPDefault");
342 
343 }
344 
textMarginsChanged(GtkWidget * widget,gpointer data)345 void textMarginsChanged(GtkWidget * widget, gpointer data)
346 {
347 	char tmp[MAX_MARGIN_DIGITS + 5];
348 	unsigned i1, flg = 0;
349 
350 	tmp[0] = (uintptr_t) NULL;
351 
352 	if (DEBUG)
353 		printf("textMarginsChanged: %s->%s\n", (char *)data, tmp);
354 
355 	if (strcmp(data, "Top") == 0) {
356 		strncpy(tmp,
357 			gtk_editable_get_chars(GTK_EDITABLE(textTopField), 0,
358 					       -1),
359 			(size_t) MAX_MARGIN_DIGITS + 4);
360 	} else if (strcmp(data, "Bottom") == 0) {
361 		strncpy(tmp,
362 			gtk_editable_get_chars(GTK_EDITABLE(textBottomField), 0,
363 					       -1),
364 			(size_t) MAX_MARGIN_DIGITS + 4);
365 	} else if (strcmp(data, "Left") == 0) {
366 		strncpy(tmp,
367 			gtk_editable_get_chars(GTK_EDITABLE(textLeftField), 0,
368 					       -1),
369 			(size_t) MAX_MARGIN_DIGITS + 4);
370 	} else if (strcmp(data, "Right") == 0) {
371 		strncpy(tmp,
372 			gtk_editable_get_chars(GTK_EDITABLE(textRightField), 0,
373 					       -1),
374 			(size_t) MAX_MARGIN_DIGITS + 4);
375 	} else {
376 		if (DEBUG)
377 			printf
378 			    ("PROG-ERROR: Unknwon Text-Margins change: %s !\n",
379 			     (char *)data);
380 		emergency();
381 	}
382 
383 	for (i1 = 0; i1 < strlen(tmp); i1++) {
384 		if (isdigit(tmp[i1]) == 0) {
385 			if (strcmp(data, "Top") == 0) {
386 				snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4,
387 					 "%u", topmargin);
388 				gtk_entry_set_text(GTK_ENTRY(textTopField),
389 						   tmp);
390 				gtk_editable_set_position(GTK_EDITABLE
391 							  (textTopField), -1);
392 			} else if (strcmp(data, "Bottom") == 0) {
393 				snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4,
394 					 "%u", bottommargin);
395 				gtk_entry_set_text(GTK_ENTRY(textBottomField),
396 						   tmp);
397 				gtk_editable_set_position(GTK_EDITABLE
398 							  (textBottomField),
399 							  -1);
400 			} else if (strcmp(data, "Left") == 0) {
401 				snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4,
402 					 "%u", leftmargin);
403 				gtk_entry_set_text(GTK_ENTRY(textLeftField),
404 						   tmp);
405 				gtk_editable_set_position(GTK_EDITABLE
406 							  (textRightField), -1);
407 			} else if (strcmp(data, "Right") == 0) {
408 				snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4,
409 					 "%u", rightmargin);
410 				gtk_entry_set_text(GTK_ENTRY(textRightField),
411 						   tmp);
412 				gtk_editable_set_position(GTK_EDITABLE
413 							  (textRightField), -1);
414 			}
415 			flg = 1;
416 			break;
417 		}
418 	}
419 	if ((flg == 0) && tmp[0] != (uintptr_t) NULL) {
420 		if (strcmp(data, "Top") == 0) {
421 			topmargin = atoi(tmp);
422 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.3f",
423 				 topmargin * 0.01389);
424 			gtk_label_set_text(GTK_LABEL(textTopField_I), tmp);
425 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.2f",
426 				 topmargin * 0.35);
427 			gtk_label_set_text(GTK_LABEL(textTopField_C), tmp);
428 		} else if (strcmp(data, "Bottom") == 0) {
429 			bottommargin = atoi(tmp);
430 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.3f",
431 				 bottommargin * 0.01389);
432 			gtk_label_set_text(GTK_LABEL(textBottomField_I), tmp);
433 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.2f",
434 				 bottommargin * 0.35);
435 			gtk_label_set_text(GTK_LABEL(textBottomField_C), tmp);
436 		} else if (strcmp(data, "Left") == 0) {
437 			leftmargin = atoi(tmp);
438 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.3f",
439 				 leftmargin * 0.01389);
440 			gtk_label_set_text(GTK_LABEL(textLeftField_I), tmp);
441 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.2f",
442 				 leftmargin * 0.35);
443 			gtk_label_set_text(GTK_LABEL(textLeftField_C), tmp);
444 		} else if (strcmp(data, "Right") == 0) {
445 			rightmargin = atoi(tmp);
446 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.3f",
447 				 rightmargin * 0.01389);
448 			gtk_label_set_text(GTK_LABEL(textRightField_I), tmp);
449 			snprintf(tmp, (size_t) MAX_MARGIN_DIGITS + 4, "%.2f",
450 				 rightmargin * 0.35);
451 			gtk_label_set_text(GTK_LABEL(textRightField_C), tmp);
452 		}
453 
454 		if (DEBUG)
455 			printf("textMargins: Value changed: %s\n", tmp);
456 	}
457 }
458 
459 #define MARGIN_LABEL_SIZE 60
460 
marginSizes(GtkWidget * container)461 void marginSizes(GtkWidget * container)
462 {
463 	GtkWidget *mainHBox, *vbox, *hbox1, *hbox2, *hbox3, *hbox4;
464 	GtkWidget *labelTop, *labelBottom, *labelLeft, *labelRight;
465 	GtkWidget *labelTop_P, *labelBottom_P, *labelLeft_P, *labelRight_P;
466 	GtkWidget *labelTop_I, *labelBottom_I, *labelLeft_I, *labelRight_I;
467 	GtkWidget *labelTop_C, *labelBottom_C, *labelLeft_C, *labelRight_C;
468 
469 	mainHBox = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
470 	gtk_box_pack_start(GTK_BOX(container), mainHBox, FALSE, FALSE,
471 			   FRAME_SPACING_V);
472 	gtk_widget_show(mainHBox);
473 
474 	textMarginsFrame = gtk_frame_new(str2str(_("Margins")));
475 	gtk_box_pack_start(GTK_BOX(mainHBox), textMarginsFrame, TRUE, TRUE,
476 			   FRAME_SPACING_V);
477 
478 	/* Box */
479 	vbox = gtk_vbox_new(FALSE, INFRAME_SPACING_V);
480 	gtk_container_set_border_width(GTK_CONTAINER(vbox), VBOX_BORDER);
481 	gtk_container_add(GTK_CONTAINER(textMarginsFrame), vbox);
482 	gtk_widget_show(vbox);
483 
484 	/* Box */
485 	hbox1 = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
486 	gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 0);
487 	gtk_widget_show(hbox1);
488 
489 	/* Label Top */
490 	labelTop = gtk_label_new(str2str(_("Top")));
491 	gtk_misc_set_alignment(GTK_MISC(labelTop), 0, 0.5);
492 	gtk_widget_set_size_request(GTK_WIDGET(labelTop), MARGIN_LABEL_SIZE,
493 				    -1);
494 	gtk_box_pack_start(GTK_BOX(hbox1), labelTop, FALSE, FALSE, 0);
495 	gtk_widget_show(labelTop);
496 
497 	/* TextBox Top */
498 	textTopField = gtk_entry_new_with_max_length(MAX_MARGIN_DIGITS);
499 	gtk_widget_set_size_request(textTopField, MAXMARGIN_ENTRY_LENGTH, -1);
500 	gtk_entry_set_text(GTK_ENTRY(textTopField), "");
501 	gtk_box_pack_start(GTK_BOX(hbox1), textTopField, FALSE, FALSE,
502 			   INFRAME_SPACING_V);
503 	gtk_widget_show(textTopField);
504 
505 	/* Label Top-Points */
506 	labelTop_P = gtk_label_new(MARGINS_POINTS);
507 	gtk_misc_set_alignment(GTK_MISC(labelTop_P), 0, 0.5);
508 	gtk_box_pack_start(GTK_BOX(hbox1), labelTop_P, FALSE, FALSE, 0);
509 	gtk_widget_show(labelTop_P);
510 
511 	/* Label Top-inch1 */
512 	textTopField_I = gtk_label_new("");
513 	gtk_misc_set_alignment(GTK_MISC(textTopField_I), 0, 0.5);
514 	gtk_box_pack_start(GTK_BOX(hbox1), textTopField_I, FALSE, FALSE, 0);
515 	gtk_widget_show(textTopField_I);
516 
517 	/* Label Top-inch2 */
518 	labelTop_I = gtk_label_new(MARGINS_INCH);
519 	gtk_misc_set_alignment(GTK_MISC(labelTop_I), 0, 0.5);
520 	gtk_box_pack_start(GTK_BOX(hbox1), labelTop_I, FALSE, FALSE, 0);
521 	gtk_widget_show(labelTop_I);
522 
523 	/* Label Top-cm1 */
524 	textTopField_C = gtk_label_new("");
525 	gtk_misc_set_alignment(GTK_MISC(textTopField_C), 0, 0.5);
526 	gtk_box_pack_start(GTK_BOX(hbox1), textTopField_C, FALSE, FALSE, 0);
527 	gtk_widget_show(textTopField_C);
528 
529 	/* Label Top-cm2 */
530 	labelTop_C = gtk_label_new(MARGINS_MM);
531 	gtk_misc_set_alignment(GTK_MISC(labelTop_C), 0, 0.5);
532 	gtk_box_pack_start(GTK_BOX(hbox1), labelTop_C, FALSE, FALSE, 0);
533 	gtk_widget_show(labelTop_C);
534 
535 	/* Box */
536 	hbox2 = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
537 	gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0);
538 	gtk_widget_show(hbox2);
539 
540 	/* Label Bottom */
541 	labelBottom = gtk_label_new(str2str(_("Bottom")));
542 	gtk_misc_set_alignment(GTK_MISC(labelBottom), 0, 0.5);
543 	gtk_widget_set_size_request(GTK_WIDGET(labelBottom), MARGIN_LABEL_SIZE,
544 				    -1);
545 	gtk_box_pack_start(GTK_BOX(hbox2), labelBottom, FALSE, FALSE, 0);
546 	gtk_widget_show(labelBottom);
547 
548 	/* TextBox Bottom */
549 	textBottomField = gtk_entry_new_with_max_length(MAX_MARGIN_DIGITS);
550 	gtk_widget_set_size_request(textBottomField, MAXMARGIN_ENTRY_LENGTH,
551 				    -1);
552 	gtk_entry_set_text(GTK_ENTRY(textBottomField), "");
553 	gtk_box_pack_start(GTK_BOX(hbox2), textBottomField, FALSE, FALSE,
554 			   INFRAME_SPACING_V);
555 	gtk_widget_show(textBottomField);
556 
557 	/* Label Bottom-Points */
558 	labelBottom_P = gtk_label_new(MARGINS_POINTS);
559 	gtk_misc_set_alignment(GTK_MISC(labelBottom_P), 0, 0.5);
560 	gtk_box_pack_start(GTK_BOX(hbox2), labelBottom_P, FALSE, FALSE, 0);
561 	gtk_widget_show(labelBottom_P);
562 
563 	/* Label Bottom-inch1 */
564 	textBottomField_I = gtk_label_new("");
565 	gtk_misc_set_alignment(GTK_MISC(textBottomField_I), 0, 0.5);
566 	gtk_box_pack_start(GTK_BOX(hbox2), textBottomField_I, FALSE, FALSE, 0);
567 	gtk_widget_show(textBottomField_I);
568 
569 	/* Label Bottom-inch2 */
570 	labelBottom_I = gtk_label_new(MARGINS_INCH);
571 	gtk_misc_set_alignment(GTK_MISC(labelBottom_I), 0, 0.5);
572 	gtk_box_pack_start(GTK_BOX(hbox2), labelBottom_I, FALSE, FALSE, 0);
573 	gtk_widget_show(labelBottom_I);
574 
575 	/* Label Bottom-cm1 */
576 	textBottomField_C = gtk_label_new("");
577 	gtk_misc_set_alignment(GTK_MISC(textBottomField_C), 0, 0.5);
578 	gtk_box_pack_start(GTK_BOX(hbox2), textBottomField_C, FALSE, FALSE, 0);
579 	gtk_widget_show(textBottomField_C);
580 
581 	/* Label Bottom-cm2 */
582 	labelBottom_C = gtk_label_new(MARGINS_MM);
583 	gtk_misc_set_alignment(GTK_MISC(labelBottom_C), 0, 0.5);
584 	gtk_box_pack_start(GTK_BOX(hbox2), labelBottom_C, FALSE, FALSE, 0);
585 	gtk_widget_show(labelBottom_C);
586 
587 	/* Box */
588 	hbox3 = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
589 	gtk_box_pack_start(GTK_BOX(vbox), hbox3, FALSE, FALSE, 0);
590 	gtk_widget_show(hbox3);
591 
592 	/* Label Left */
593 	labelLeft = gtk_label_new(str2str(_("Left")));
594 	gtk_misc_set_alignment(GTK_MISC(labelLeft), 0, 0.5);
595 	gtk_widget_set_size_request(GTK_WIDGET(labelLeft), MARGIN_LABEL_SIZE,
596 				    -1);
597 	gtk_box_pack_start(GTK_BOX(hbox3), labelLeft, FALSE, FALSE, 0);
598 	gtk_widget_show(labelLeft);
599 
600 	/* TextBox Left */
601 	textLeftField = gtk_entry_new_with_max_length(MAX_MARGIN_DIGITS);
602 	gtk_widget_set_size_request(textLeftField, MAXMARGIN_ENTRY_LENGTH, -1);
603 	gtk_entry_set_text(GTK_ENTRY(textLeftField), "");
604 	gtk_box_pack_start(GTK_BOX(hbox3), textLeftField, FALSE, FALSE,
605 			   INFRAME_SPACING_V);
606 	gtk_widget_show(textLeftField);
607 
608 	/* Label Left-Points */
609 	labelLeft_P = gtk_label_new(MARGINS_POINTS);
610 	gtk_misc_set_alignment(GTK_MISC(labelLeft_P), 0, 0.5);
611 	gtk_box_pack_start(GTK_BOX(hbox3), labelLeft_P, FALSE, FALSE, 0);
612 	gtk_widget_show(labelLeft_P);
613 
614 	/* Label Left-inch1 */
615 	textLeftField_I = gtk_label_new("");
616 	gtk_misc_set_alignment(GTK_MISC(textLeftField_I), 0, 0.5);
617 	gtk_box_pack_start(GTK_BOX(hbox3), textLeftField_I, FALSE, FALSE, 0);
618 	gtk_widget_show(textLeftField_I);
619 
620 	/* Label Left-inch2 */
621 	labelLeft_I = gtk_label_new(MARGINS_INCH);
622 	gtk_misc_set_alignment(GTK_MISC(labelLeft_I), 0, 0.5);
623 	gtk_box_pack_start(GTK_BOX(hbox3), labelLeft_I, FALSE, FALSE, 0);
624 	gtk_widget_show(labelLeft_I);
625 
626 	/* Label Left-cm1 */
627 	textLeftField_C = gtk_label_new("");
628 	gtk_misc_set_alignment(GTK_MISC(textLeftField_C), 0, 0.5);
629 	gtk_box_pack_start(GTK_BOX(hbox3), textLeftField_C, FALSE, FALSE, 0);
630 	gtk_widget_show(textLeftField_C);
631 
632 	/* Label Left-cm2 */
633 	labelLeft_C = gtk_label_new(MARGINS_MM);
634 	gtk_misc_set_alignment(GTK_MISC(labelLeft_C), 0, 0.5);
635 	gtk_box_pack_start(GTK_BOX(hbox3), labelLeft_C, FALSE, FALSE, 0);
636 	gtk_widget_show(labelLeft_C);
637 
638 	/* Box */
639 	hbox3 = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
640 	gtk_box_pack_start(GTK_BOX(vbox), hbox3, FALSE, FALSE, 0);
641 	gtk_widget_show(hbox3);
642 
643 	/* Label Right */
644 	labelRight = gtk_label_new(str2str(_("Right")));
645 	gtk_misc_set_alignment(GTK_MISC(labelRight), 0, 0.5);
646 	gtk_widget_set_size_request(GTK_WIDGET(labelRight), MARGIN_LABEL_SIZE,
647 				    -1);
648 	gtk_box_pack_start(GTK_BOX(hbox3), labelRight, FALSE, FALSE, 0);
649 	gtk_widget_show(labelRight);
650 
651 	/* TextBox Right */
652 	textRightField = gtk_entry_new_with_max_length(MAX_MARGIN_DIGITS);
653 	gtk_widget_set_size_request(textRightField, MAXMARGIN_ENTRY_LENGTH, -1);
654 	gtk_entry_set_text(GTK_ENTRY(textRightField), "");
655 	gtk_box_pack_start(GTK_BOX(hbox3), textRightField, FALSE, FALSE,
656 			   INFRAME_SPACING_V);
657 	gtk_widget_show(textRightField);
658 
659 	/* Label Right-Points */
660 	labelRight_P = gtk_label_new(MARGINS_POINTS);
661 	gtk_misc_set_alignment(GTK_MISC(labelRight_P), 0, 0.5);
662 	gtk_box_pack_start(GTK_BOX(hbox3), labelRight_P, FALSE, FALSE, 0);
663 	gtk_widget_show(labelRight_P);
664 
665 	/* Label Right-inch1 */
666 	textRightField_I = gtk_label_new("");
667 	gtk_misc_set_alignment(GTK_MISC(textRightField_I), 0, 0.5);
668 	gtk_box_pack_start(GTK_BOX(hbox3), textRightField_I, FALSE, FALSE, 0);
669 	gtk_widget_show(textRightField_I);
670 
671 	/* Label Right-inch2 */
672 	labelRight_I = gtk_label_new(MARGINS_INCH);
673 	gtk_misc_set_alignment(GTK_MISC(labelRight_I), 0, 0.5);
674 	gtk_box_pack_start(GTK_BOX(hbox3), labelRight_I, FALSE, FALSE, 0);
675 	gtk_widget_show(labelRight_I);
676 
677 	/* Label Right-cm1 */
678 	textRightField_C = gtk_label_new("");
679 	gtk_misc_set_alignment(GTK_MISC(textRightField_C), 0, 0.5);
680 	gtk_box_pack_start(GTK_BOX(hbox3), textRightField_C, FALSE, FALSE, 0);
681 	gtk_widget_show(textRightField_C);
682 
683 	/* Label Right-cm2 */
684 	labelRight_C = gtk_label_new(MARGINS_MM);
685 	gtk_misc_set_alignment(GTK_MISC(labelRight_C), 0, 0.5);
686 	gtk_box_pack_start(GTK_BOX(hbox3), labelRight_C, FALSE, FALSE, 0);
687 	gtk_widget_show(labelRight_C);
688 
689 	/* Box */
690 	hbox4 = gtk_hbox_new(FALSE, 0);
691 	gtk_box_pack_start(GTK_BOX(vbox), hbox4, FALSE, FALSE, 0);
692 	gtk_widget_show(hbox4);
693 
694 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textTopField)), "changed",
695 			   GTK_SIGNAL_FUNC(textMarginsChanged), "Top");
696 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textBottomField)), "changed",
697 			   GTK_SIGNAL_FUNC(textMarginsChanged), "Bottom");
698 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textLeftField)), "changed",
699 			   GTK_SIGNAL_FUNC(textMarginsChanged), "Left");
700 	gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(textRightField)), "changed",
701 			   GTK_SIGNAL_FUNC(textMarginsChanged), "Right");
702 
703 }
704 
wantPrettyCheck(GtkWidget * widget,gpointer data)705 void wantPrettyCheck(GtkWidget * widget, gpointer data)
706 {
707 	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prettyCheck))) {
708 		prettyprint = 0;
709 	} else {
710 		prettyprint = 1;
711 	}
712 	if (DEBUG)
713 		printf("prettyprint changed: %u\n", prettyprint);
714 }
715 
wantWrapCheck(GtkWidget * widget,gpointer data)716 void wantWrapCheck(GtkWidget * widget, gpointer data)
717 {
718 	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wrapCheck))) {
719 		textwrap = 0;
720 	} else {
721 		textwrap = 1;
722 	}
723 	if (DEBUG)
724 		printf("textwrap changed: %u\n", textwrap);
725 }
726 
textForm(GtkWidget * container)727 void textForm(GtkWidget * container)
728 {
729 	GtkWidget *mainHBox, *vbox, *hbox;
730 
731 	mainHBox = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
732 	gtk_box_pack_start(GTK_BOX(container), mainHBox, FALSE, FALSE,
733 			   FRAME_SPACING_V);
734 	gtk_widget_show(mainHBox);
735 
736 	textPrettyFrame = gtk_frame_new(str2str(_("Text formatting")));
737 	gtk_box_pack_start(GTK_BOX(mainHBox), textPrettyFrame, TRUE, TRUE,
738 			   FRAME_SPACING_V);
739 
740 	/* Box */
741 	hbox = gtk_hbox_new(FALSE, INFRAME_SPACING_H);
742 	gtk_container_add(GTK_CONTAINER(textPrettyFrame), hbox);
743 	gtk_widget_show(hbox);
744 
745 	/* Box */
746 	vbox = gtk_vbox_new(FALSE, 0);
747 	gtk_container_set_border_width(GTK_CONTAINER(vbox), VBOX_BORDER);
748 	gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
749 	gtk_widget_show(vbox);
750 
751 	/* Check-Buttons */
752 	prettyCheck =
753 	    gtk_check_button_new_with_label(str2str(_("Use Pretty Print")));
754 	gtk_box_pack_start(GTK_BOX(vbox), prettyCheck, FALSE, FALSE, 0);
755 	gtk_widget_show(prettyCheck);
756 
757 	wrapCheck = gtk_check_button_new_with_label(str2str(_("Wrap text")));
758 	gtk_box_pack_start(GTK_BOX(vbox), wrapCheck, FALSE, FALSE, 0);
759 	gtk_widget_show(wrapCheck);
760 
761 	gtk_signal_connect(GTK_OBJECT(prettyCheck), "pressed",
762 			   GTK_SIGNAL_FUNC(wantPrettyCheck), NULL);
763 	gtk_signal_connect(GTK_OBJECT(wrapCheck), "pressed",
764 			   GTK_SIGNAL_FUNC(wantWrapCheck), NULL);
765 
766 }
767 
TextTab(void)768 void TextTab(void)
769 {
770 	textTab = gtk_vbox_new(FALSE, 0);
771 	gtk_container_set_border_width(GTK_CONTAINER(textTab), FRAME_BORDER);
772 	gtk_notebook_append_page(GTK_NOTEBOOK(tabs), textTab,
773 				 gtk_label_new(str2str(_("Text"))));
774 
775 	textSizes(textTab);
776 	marginSizes(textTab);
777 	textForm(textTab);
778 
779 }
780