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