1 /*
2 Tux Paint Config UI file
3 Originally generated by Fast Light User Interface Designer (fluid) v. 1.0104
4
5 Torsten Giebl <wizard@turricane.org>
6 Jan Wynholds
7 Bill Kendrick <bill@newbreedsoftware.com>
8 Martin Fuhrer <mfuhrer@gmail.com>
9
10 http://www.tuxpaint.org/
11
12 November 12, 2002 - April 15, 2011
13 */
14
15 #include <libintl.h>
16 #include <math.h>
17 #include "tuxpaint-config2.h"
18 #include <FL/fl_ask.H>
19 #include <FL/fl_message.H>
20 #include <FL/Fl.H>
21 #include <FL/Fl_File_Chooser.H>
22 #include <FL/Fl_Slider.H>
23 #include <FL/Fl_Pack.H>
24 #include <stdlib.h>
25 #include <stdio.h>
26 #include <string.h>
27 #include <sys/stat.h>
28 #include <errno.h>
29 #if USE_PAPERSIZES
30 #include <paper.h>
31 #endif
32 #include "version.h"
33 #include "about.h"
34
35 /* Current build stuff doesn't deal with gettext; jdrake 2004-10-02 */
36 #ifdef __APPLE__
37 extern "C" {
38 #include "macosx_dialog.h"
39 }
40 #define gettext(text) text
41 #endif
42
43
44 /* Win32 specific stuff to help set the window icon */
45 #ifdef WIN32
46 #include "../visualc/resource.h" /* contains IDI_ICON1 */
47 #include "win32utils.h" /* Registry utilities */
48 extern HINSTANCE fl_display; /* hInstance on win32 platform */
49 #endif
50
51 /* dont think save_conf will work for win32...
52 need to redo with #IFDEF precompiler definitions and better writing */
53
54 bool status_chng=0;
55
56 char conf_filename[256];
57
58 const char * window_widths[NUM_WINDOW_WIDTHS] = {
59 "640",
60 "768",
61 "800",
62 "854",
63 "1024",
64 "1280",
65 "1400",
66 "1600",
67 "1680",
68 "1920",
69 "2048",
70 "2560"
71 };
72
73 const char * window_heights[NUM_WINDOW_HEIGHTS] = {
74 "480",
75 "576",
76 "600",
77 "720",
78 "768",
79 "800",
80 "960",
81 "1024",
82 "1050",
83 "1080",
84 "1200",
85 "1536",
86 "1600",
87 "2048"
88 };
89
90 #define NUM_LANGS 121
91 #define LANG_NAME 0
92 #define LANG_CODE 1
93
94 const char * langs[NUM_LANGS][2] = {
95 {gettext("(Use system's setting)"), "default"},
96 {"Acholi", "acholi"},
97 {"Afrikaans", "afrikaans"},
98 {"Akan", "akan"},
99 {"Albanian", "albanian"},
100 {"Amharic", "amharic"},
101 {"Arabic", "arabic"},
102 {"Aragonese", "aragones"},
103 {"Armenian", "armenian"},
104 {"Assamese", "assamese"},
105 {"Asturian", "asturian"},
106 {"Azerbaijani", "azerbaijani"},
107 {"Bambara", "bambara"},
108 {"Basque", "basque"},
109 {"Belarusian", "belarusian"},
110 {"Bosnian", "bosnian"},
111 {"Breton", "breton"},
112 {"Bulgarian", "bulgarian"},
113 {"Catalan", "catalan"},
114 {"Chinese (Simplified)", "simplified-chinese"},
115 {"Chinese (Traditional)", "traditional-chinese"},
116 {"Croatian", "croatian"},
117 {"Czech", "czech"},
118 {"Danish", "danish"},
119 {"Dutch", "dutch"},
120 {"English (USA)", "american-english"},
121 {"English (Australian)", "australian-english"},
122 {"English (Britain)", "british"},
123 {"English (Canadian)", "canadian-english"},
124 {"English (South Africa)", "southafrican-english"},
125 {"Esperanto", "esperanto"},
126 {"Estonian", "estonian"},
127 {"Faroese", "faroese"},
128 {"Finnish", "finnish"},
129 {"French", "french"},
130 {"Fulah", "fulah"},
131 {"Gaelic (Ireland)", "gaelic"},
132 {"Gaelic (Scotland)", "scottish"},
133 {"Galician", "galician"},
134 {"Georgian", "georgian"},
135 {"German", "german"},
136 {"Greek", "greek"},
137 {"Gronings", "gronings"},
138 {"Gujarati", "gujarati"},
139 {"Hebrew", "hebrew"},
140 {"Hindi", "hindi"},
141 {"Hungarian", "hungarian"},
142 {"Icelandic", "icelandic"},
143 {"Indonesian", "indonesian"},
144 {"Inuktitut", "inuktitut"},
145 {"Italian", "italian"},
146 {"Japanese", "japanese"},
147 {"Kannada", "kannada"},
148 {"Khmer", "khmer"},
149 {"Kiga", "kiga"},
150 {"Kinyarwanda", "kinyarwanda"},
151 {"Klingon", "klingon"},
152 {"Konkani (Devaganari)", "konkani-devaganari"},
153 {"Konkani (Roman)", "konkani-roman"},
154 {"Korean", "korean"},
155 {"Kurdish", "kurdish"},
156 {"Latvian", "latvian"},
157 {"Lithuanian", "lithuanian"},
158 {"Luganda", "luganda"},
159 {"Luxembourgish", "luxembourgish"},
160 {"Macedonian", "macedonian"},
161 {"Maithili", "maithili"},
162 {"Malay", "malay"},
163 {"Malayalam", "malayalam"},
164 {"Manipuri (Bengali)", "manipuri-bengali"},
165 {"Manipuri (Meitei Mayek)", "manipuri-meitei-mayek"},
166 {"Marathi", "marathi"},
167 {"Mongolian", "mongolian"},
168 {"Ndebele", "ndebele"},
169 {"Nepali", "nepali"},
170 {"Northern Sotho", "northern-sotho"},
171 {"Norwegian Bokm�l", "bokmal"},
172 {"Norwegian Nynorsk", "nynorsk"},
173 {"Occitan", "occitan"},
174 {"Ojibwe", "ojibwe"},
175 {"Oriya", "oriya"},
176 {"Persian", "persian"},
177 {"Polish", "polish"},
178 {"Portuguese (Portugal)", "portuguese"},
179 {"Portuguese (Brazilian)", "brazilian-portuguese"},
180 {"Punjabi", "punjabi"},
181 {"Romanian", "romanian"},
182 {"Russian", "russian"},
183 {"Sanskrit", "sanskrit"},
184 {"Santali (Devaganari)", "santali-devaganari"},
185 {"Santali (Ol-Chiki)", "santali-ol-chiki"},
186 {"Serbian (cyrillic)", "serbian"},
187 {"Serbian (latin)", "serbian-latin"},
188 {"Shuswap", "shuswap"},
189 {"Sinhala", "sinhala"},
190 {"Slovak", "slovak"},
191 {"Slovenian", "slovenian"},
192 {"Songhay", "songhay"},
193 {"Spanish (Mexico)", "mexican-spanish"},
194 {"Spanish (Spain)", "spanish"},
195 {"Sundanese", "sundanese"},
196 {"Swahili", "swahili"},
197 {"Swedish", "swedish"},
198 {"Tagalog", "tagalog"},
199 {"Tamil", "tamil"},
200 {"Telugu", "telugu"},
201 {"Thai", "thai"},
202 {"Tibetan", "tibetan"},
203 {"Turkish", "turkish"},
204 {"Twi", "twi"},
205 {"Ukrainian", "ukrainian"},
206 {"Valencian", "valencian"},
207 {"Venda", "venda"},
208 {"Venetian", "venetian"},
209 {"Vietnamese", "vietnamese"},
210 {"Walloon", "walloon"},
211 {"Welsh", "welsh"},
212 {"Wolof", "wolof"},
213 {"Xhosa", "xhosa"},
214 {"Zapotec (Miahuatlan)", "miahuatlan-zapotec"},
215 {"Zulu", "zulu"}
216 };
217
218 #define NUM_LAYOUTS 2
219 #define LAYOUT_NAME 0
220 const char * layouts[NUM_LAYOUTS][2] = {
221 {"abcde", "default.layout"},
222 {"qwerty", "qwerty.layout"}
223 };
224
225 #if USE_PAPERSIZES
226 int num_papersizes;
227 char * * papersizes;
228 #endif
229
set_change_status(int status)230 static void set_change_status(int status)
231 {
232 status_chng=status;
233 if (status_chng == 0) {
234 BUTTON_apply->deactivate();
235 BUTTON_reset->deactivate();
236 }
237 else
238 {
239 BUTTON_apply->activate();
240 BUTTON_reset->activate();
241 }
242 }
243
construct_conf_filename(int user)244 static void construct_conf_filename(int user)
245 {
246 strcpy(conf_filename, "tuxpaint.cfg"); /* default config file */
247 switch (user)
248 {
249 case (CURRENT_USER):
250 #if defined(WIN32)
251 {
252 char *savedir = 0;
253 savedir = GetDefaultSaveDir("TuxPaint"); /* FIXME */
254 snprintf(conf_filename, sizeof(conf_filename), "%s/tuxpaint.cfg", savedir);
255 free(savedir);
256 }
257 #elif defined(__BEOS__)
258 strcpy(conf_filename, "tuxpaint.cfg");
259 #elif defined(__APPLE__)
260 if (getenv("HOME") != NULL)
261 {
262 char mkdirCommand[256];
263 snprintf(mkdirCommand, sizeof(mkdirCommand),
264 "mkdir -p '%s/Library/Application Support/TuxPaint'", getenv("HOME"));
265 system(mkdirCommand);
266 snprintf(conf_filename, sizeof(conf_filename),
267 "%s/Library/Application Support/TuxPaint/tuxpaint.cfg", getenv("HOME"));
268 }
269 #else
270 /* Linux and other Unixes: Use 'rc' style (~/.tuxpaintrc) */
271 if (getenv("HOME") != NULL)
272 {
273 snprintf(conf_filename, sizeof(conf_filename),
274 "%s/.tuxpaintrc", getenv("HOME"));
275 }
276 #endif
277 break;
278
279 case (ALL_USERS):
280 #if defined(WIN32)
281 {
282 char *appdir = GetApplicationDir();
283 snprintf(conf_filename, sizeof(conf_filename), "%s/tuxpaint.cfg", appdir);
284 free(appdir);
285 }
286 #elif defined(__BEOS__)
287 strcpy(conf_filename, "tuxpaint.cfg");
288 #elif defined(__APPLE__)
289 system("mkdir -p '/Library/Application Support/TuxPaint'");
290 strcpy(conf_filename, "/Library/Application Support/TuxPaint/tuxpaint.cfg");
291 #else
292 snprintf(conf_filename, sizeof(conf_filename), "%s/tuxpaint.conf", CONFDIR);
293 #endif
294 break;
295 }
296 }
297
activate_widgets()298 static void activate_widgets()
299 {
300 /* Video & Sound: */
301 /* -------------- */
302
303 CHECKBUTTON_fullscreen->activate();
304 if (CHECKBUTTON_fullscreen->value()) {
305 CHECKBUTTON_native->activate();
306 }
307 CHOICE_windowwidth->activate();
308 CHOICE_windowheight->activate();
309 CHECKBUTTON_rotate->activate();
310 CHECKBUTTON_screensaver->activate();
311 CHECKBUTTON_soundeffects->activate();
312 CHECKBUTTON_usecolorfile->activate();
313 if (CHECKBUTTON_usecolorfile->value()) {
314 FILEINPUT_colorfile->activate();
315 BUTTON_browsecolorfile->activate();
316 }
317
318
319 /* Mouse & Keyboard: */
320 /* ----------------- */
321
322 CHECKBUTTON_fancycursorshapes->activate();
323 CHECKBUTTON_hidecursor->activate();
324 CHECKBUTTON_grabmousepointer->activate();
325 CHECKBUTTON_mousewheelsupport->activate();
326 CHECKBUTTON_nobuttondistinction->activate();
327 CHECKBUTTON_enablekbd->activate();
328
329 /* Simplification: */
330 /* --------------- */
331
332 CHECKBUTTON_disableshaperotation->activate();
333 CHECKBUTTON_simpleshapeoutlines->activate();
334 CHECKBUTTON_showuppercasetextonly->activate();
335 CHECKBUTTON_disablequitbutton->activate();
336 CHECKBUTTON_disablestampstool->activate();
337 CHECKBUTTON_disablestampcontrols->activate();
338 CHECKBUTTON_disablemagiccontrols->activate();
339 CHECKBUTTON_disablelabeltool->activate();
340 SLIDER_stampsize->activate();
341
342 /* Locale: */
343 /* ------- */
344
345 CHOICE_language->activate();
346 CHECKBUTTON_mirrorstamps->activate();
347 CHECKBUTTON_loadsystemfonts->activate();
348 CHECKBUTTON_alllocalefonts->activate();
349
350 /* Printing: */
351 /* --------- */
352
353 CHECKBUTTON_allowprinting->activate();
354 VALUEINPUT_printdelay->activate();
355 CHECKBUTTON_printcfg->activate();
356 CHECKBUTTON_usealtprintcmd->activate();
357 if (CHECKBUTTON_usealtprintcmd->value()) {
358 TEXTINPUT_printcmd->activate();
359 }
360 CHECKBUTTON_usealtprintdia->activate();
361 if (CHECKBUTTON_usealtprintdia->value()) {
362 TEXTINPUT_printdia->activate();
363 }
364 ROUNDBUTTON_printdialogmod->activate();
365 ROUNDBUTTON_printdialogalways->activate();
366 ROUNDBUTTON_printdialognever->activate();
367
368 #if USE_PAPERSIZES
369 CHOICE_papersize->activate();
370 #endif
371
372 /* Saving: */
373 /* ------- */
374
375 ROUNDBUTTON_askbeforeoverwriting->activate();
376 ROUNDBUTTON_alwaysoverwriteolderversion->activate();
377 ROUNDBUTTON_alwayssavenewpicture->activate();
378 CHECKBUTTON_usealternatesavedir->activate();
379 if (CHECKBUTTON_usealternatesavedir->value()) {
380 FILEINPUT_alternatesavedir->activate();
381 BUTTON_browsealternatesavedir->activate();
382 }
383 CHECKBUTTON_startblank->activate();
384 CHECKBUTTON_disablesavebutton->activate();
385 CHECKBUTTON_autosave->activate();
386
387 /* Data: */
388 /* ----- */
389
390 CHECKBUTTON_nolockfile->activate();
391 CHECKBUTTON_usealternatedatadir->activate();
392 if (CHECKBUTTON_usealternatedatadir->value()) {
393 FILEINPUT_alternatedatadir->activate();
394 BUTTON_browsealternatedatadir->activate();
395 }
396
397 /* Accessibility */
398 /* ------------- */
399
400 CHECKBUTTON_mouse_accessibility->activate();
401 CHECKBUTTON_keyboard_mouse->activate();
402 CHECKBUTTON_onscreen_keyboard->activate();
403 if (CHECKBUTTON_onscreen_keyboard->value() == 1)
404 {
405 CHOICE_onscreen_keyboard_layout->activate();
406 CHECKBUTTON_onscreen_keyboard_disable_change->activate();
407 }
408
409 /* Joystick */
410 /* -------- */
411
412 SPINNER_joystick_dev->activate();
413 SPINNER_joystick_slowness->activate();
414 SPINNER_joystick_threshold->activate();
415 SPINNER_joystick_maxsteps->activate();
416 SPINNER_joystick_hat_slowness->activate();
417 SPINNER_joystick_hat_timeout->activate();
418 CHECKBUTTON_joystick_buttons_ignore->activate();
419 if (CHECKBUTTON_joystick_buttons_ignore->value()) {
420 TEXTINPUT_joystick_buttons_ignore->activate();
421 }
422
423 SPINNER_joystick_btn_brush->activate();
424 SPINNER_joystick_btn_label->activate();
425 SPINNER_joystick_btn_new->activate();
426 SPINNER_joystick_btn_print->activate();
427 SPINNER_joystick_btn_shapes->activate();
428 SPINNER_joystick_btn_undo->activate();
429 SPINNER_joystick_btn_eraser->activate();
430 SPINNER_joystick_btn_lines->activate();
431 SPINNER_joystick_btn_open->activate();
432 SPINNER_joystick_btn_redo->activate();
433 SPINNER_joystick_btn_stamp->activate();
434 SPINNER_joystick_btn_escape->activate();
435 SPINNER_joystick_btn_magic->activate();
436 SPINNER_joystick_btn_pgsetup->activate();
437 SPINNER_joystick_btn_save->activate();
438 SPINNER_joystick_btn_text->activate();
439
440 }
441
deactivate_widgets()442 static void deactivate_widgets()
443 {
444 /* Video & Sound: */
445 /* -------------- */
446
447 CHECKBUTTON_fullscreen->deactivate();
448 CHECKBUTTON_native->deactivate();
449 CHOICE_windowwidth->deactivate();
450 CHOICE_windowheight->deactivate();
451 CHECKBUTTON_rotate->deactivate();
452 CHECKBUTTON_screensaver->deactivate();
453 CHECKBUTTON_soundeffects->deactivate();
454 CHECKBUTTON_usecolorfile->deactivate();
455 FILEINPUT_colorfile->deactivate();
456 BUTTON_browsecolorfile->deactivate();
457
458 /* Mouse & Keyboard: */
459 /* ----------------- */
460
461 CHECKBUTTON_fancycursorshapes->deactivate();
462 CHECKBUTTON_hidecursor->deactivate();
463 CHECKBUTTON_grabmousepointer->deactivate();
464 CHECKBUTTON_mousewheelsupport->deactivate();
465 CHECKBUTTON_nobuttondistinction->deactivate();
466 CHECKBUTTON_enablekbd->deactivate();
467
468 /* Simplification: */
469 /* --------------- */
470
471 CHECKBUTTON_disableshaperotation->deactivate();
472 CHECKBUTTON_simpleshapeoutlines->deactivate();
473 CHECKBUTTON_showuppercasetextonly->deactivate();
474 CHECKBUTTON_disablequitbutton->deactivate();
475 CHECKBUTTON_disablestampstool->deactivate();
476 CHECKBUTTON_disablestampcontrols->deactivate();
477 CHECKBUTTON_disablemagiccontrols->deactivate();
478 CHECKBUTTON_disablelabeltool->deactivate();
479 SLIDER_stampsize->deactivate();
480
481 /* Locale: */
482 /* ------- */
483
484 CHOICE_language->deactivate();
485 CHECKBUTTON_mirrorstamps->deactivate();
486 CHECKBUTTON_loadsystemfonts->deactivate();
487 CHECKBUTTON_alllocalefonts->deactivate();
488
489 /* Printing: */
490 /* --------- */
491
492 CHECKBUTTON_allowprinting->deactivate();
493 VALUEINPUT_printdelay->deactivate();
494 CHECKBUTTON_printcfg->deactivate();
495 TEXTINPUT_printcmd->deactivate();
496 CHECKBUTTON_usealtprintcmd->deactivate();
497 TEXTINPUT_printdia->deactivate();
498 CHECKBUTTON_usealtprintdia->deactivate();
499 ROUNDBUTTON_printdialogmod->deactivate();
500 ROUNDBUTTON_printdialogalways->deactivate();
501 ROUNDBUTTON_printdialognever->deactivate();
502 #if USE_PAPERSIZES
503 CHOICE_papersize->deactivate();
504 #endif
505
506 /* Saving: */
507 /* ------- */
508
509 ROUNDBUTTON_askbeforeoverwriting->deactivate();
510 ROUNDBUTTON_alwaysoverwriteolderversion->deactivate();
511 ROUNDBUTTON_alwayssavenewpicture->deactivate();
512 FILEINPUT_alternatesavedir->deactivate();
513 BUTTON_browsealternatesavedir->deactivate();
514 CHECKBUTTON_usealternatesavedir->deactivate();
515 CHECKBUTTON_startblank->deactivate();
516 CHECKBUTTON_disablesavebutton->deactivate();
517 CHECKBUTTON_autosave->deactivate();
518
519 /* Data: */
520 /* ----- */
521
522 FILEINPUT_alternatedatadir->deactivate();
523 BUTTON_browsealternatedatadir->deactivate();
524 CHECKBUTTON_usealternatedatadir->deactivate();
525
526 /* Accessibility */
527 /* ------------- */
528
529 CHECKBUTTON_mouse_accessibility->deactivate();
530 CHECKBUTTON_keyboard_mouse->deactivate();
531 CHECKBUTTON_onscreen_keyboard->deactivate();
532 CHOICE_onscreen_keyboard_layout->deactivate();
533 CHECKBUTTON_onscreen_keyboard_disable_change->deactivate();
534
535 /* Joystick */
536 /* -------- */
537
538 SPINNER_joystick_dev->deactivate();
539 SPINNER_joystick_slowness->deactivate();
540 SPINNER_joystick_threshold->deactivate();
541 SPINNER_joystick_maxsteps->deactivate();
542 SPINNER_joystick_hat_slowness->deactivate();
543 SPINNER_joystick_hat_timeout->deactivate();
544 TEXTINPUT_joystick_buttons_ignore->deactivate();
545 CHECKBUTTON_joystick_buttons_ignore->deactivate();
546
547 SPINNER_joystick_btn_brush->deactivate();
548 SPINNER_joystick_btn_label->deactivate();
549 SPINNER_joystick_btn_new->deactivate();
550 SPINNER_joystick_btn_print->deactivate();
551 SPINNER_joystick_btn_shapes->deactivate();
552 SPINNER_joystick_btn_undo->deactivate();
553 SPINNER_joystick_btn_eraser->deactivate();
554 SPINNER_joystick_btn_lines->deactivate();
555 SPINNER_joystick_btn_open->deactivate();
556 SPINNER_joystick_btn_redo->deactivate();
557 SPINNER_joystick_btn_stamp->deactivate();
558 SPINNER_joystick_btn_escape->deactivate();
559 SPINNER_joystick_btn_magic->deactivate();
560 SPINNER_joystick_btn_pgsetup->deactivate();
561 SPINNER_joystick_btn_save->deactivate();
562 SPINNER_joystick_btn_text->deactivate();
563
564 }
565
conf_file_exists(int user)566 static bool conf_file_exists(int user)
567 {
568 FILE *fd;
569 char *flg=(char*)"r";
570
571 construct_conf_filename(user);
572 fd = fopen(conf_filename,flg);
573 if (fd != NULL) {
574 fclose(fd);
575 return true;
576 }
577 return false;
578 }
579
580
save_conf(void)581 void save_conf(void)
582 {
583 FILE *fd;
584 char *flg=(char*)"w";
585
586 construct_conf_filename(CHOICE_settings->value());
587
588 fd = fopen(conf_filename,flg);
589
590 if (fd == NULL)
591 {
592 fl_message("Cannot write %s: %s",conf_filename, strerror(errno));
593 return;
594 }
595
596 fprintf(fd,"# Generated by tuxpaint-config version " VER_VERSION "\n");
597
598 /* Video & Sound: */
599 /* -------------- */
600
601 /* Video: */
602 if ((CHKBUT_fulls_isdef())==0)
603 {
604 if (CHECKBUTTON_native->value() == 0)
605 fprintf(fd,"fullscreen=yes\n");
606 else
607 fprintf(fd,"fullscreen=native\n");
608 }
609
610 if (CHECKBUTTON_native->value() == 1 &&
611 CHKBUT_fulls_isdef() == 1)
612 {
613 fprintf(fd, "native=yes\n"); /* keep track of native when fullscreen is disabled */
614 }
615
616 if (CHOICE_windowwidth->value() != DEF_WINDOW_WIDTH ||
617 CHOICE_windowheight->value() != DEF_WINDOW_HEIGHT)
618 fprintf(fd,"windowsize=%sx%s\n",
619 window_widths[CHOICE_windowwidth->value()],
620 window_heights[CHOICE_windowheight->value()]);
621
622 if (CHECKBUTTON_rotate->value() != 0)
623 fprintf(fd,"orient=portrait\n");
624
625 if (CHECKBUTTON_screensaver->value() != 0)
626 fprintf(fd,"allowscreensaver=yes\n");
627
628 /* Sound: */
629 if (CHECKBUTTON_soundeffects->value()==0)
630 fprintf(fd,"nosound=yes\n");
631
632 /* Color file: */
633 if (strlen(FILEINPUT_colorfile->value()) > 0)
634 {
635 if (CHECKBUTTON_usecolorfile->value()==1)
636 fprintf(fd,"colorfile=%s\n",FILEINPUT_colorfile->value());
637 else
638 fprintf(fd,"# colorfile=%s\n",FILEINPUT_colorfile->value());
639 }
640
641 /* Mouse & Keyboard: */
642 /* ----------------- */
643
644 /* Mouse: */
645 if ((CHKBUT_fancycursors_isdef())==0)
646 fprintf(fd,"nofancycursors=yes\n");
647 if (CHECKBUTTON_hidecursor->value()==1)
648 fprintf(fd,"hidecursor=yes\n");
649 if ((CHKBUT_grabmouse_isdef())==0)
650 fprintf(fd,"grab=yes\n");
651 if ((CHKBUT_mousewheelsup_isdef())==0)
652 fprintf(fd,"nowheelmouse=yes\n");
653 if (CHECKBUTTON_nobuttondistinction->value()==1)
654 fprintf(fd,"nobuttondistinction=yes\n");
655
656 /* Keyboard: */
657 if (CHECKBUTTON_enablekbd->value()==0)
658 fprintf(fd,"noshortcuts=yes\n");
659 // if ((CHKBUT_xxx_isdef())==0)
660 // fprintf(fd,"keyboard=yes\n");
661
662
663 /* Simplification: */
664 /* --------------- */
665
666 /* Interface: */
667 if (CHECKBUTTON_disableshaperotation->value()==1)
668 fprintf(fd,"simpleshapes=yes\n");
669 if ((CHKBUT_smploutlns_isdef())==0)
670 fprintf(fd,"outlines=yes\n");
671 if ((CHKBUT_showUConly_isdef())==0)
672 fprintf(fd,"uppercase=yes\n");
673
674 /* Control: */
675 if ((CHKBUT_disablequit_isdef())==0)
676 fprintf(fd,"noquit=yes\n");
677 if (CHECKBUTTON_disablestampstool->value()==1)
678 fprintf(fd,"nostamps=yes\n");
679 if (CHECKBUTTON_disablestampcontrols->value()==1)
680 fprintf(fd,"nostampcontrols=yes\n");
681 if (CHECKBUTTON_disablemagiccontrols->value()==1)
682 fprintf(fd,"nomagiccontrols=yes\n");
683 if (CHECKBUTTON_disablelabeltool->value()==1)
684 fprintf(fd,"nolabel=yes\n");
685
686 /* Stamp size */
687 if (SLIDER_stampsize->value() != -1)
688 fprintf(fd,"stampsize=%d\n", (int) floor(SLIDER_stampsize->value()));
689
690
691 /* Locale: */
692 /* ------- */
693
694 if(CHOICE_language->value()!=0)
695 fprintf(fd,"lang=%s\n",langs[CHOICE_language->value()][LANG_CODE]);
696 if ((CHKBUT_mirstamps_isdef())==0)
697 fprintf(fd,"mirrorstamps=yes\n");
698
699 if (CHECKBUTTON_loadsystemfonts->value()==1)
700 fprintf(fd,"sysfonts=yes\n");
701
702 if (CHECKBUTTON_alllocalefonts->value()==1)
703 fprintf(fd,"alllocalefonts=yes\n");
704
705
706 /* Printing: */
707 /* --------- */
708
709 /* Print Permissions: */
710 if ((CHKBUT_allowprint_isdef())==0)
711 fprintf(fd,"noprint=yes\n");
712 if ((VALINP_printdel_isdef())==0)
713 fprintf(fd,"printdelay=%d\n",(int) VALUEINPUT_printdelay->value());
714
715 /* Print configuration file use: */
716 if (CHECKBUTTON_printcfg->value() == 1)
717 fprintf(fd,"printcfg=yes\n");
718
719 /* Print Command: */
720 if (strlen(TEXTINPUT_printcmd->value()) > 0)
721 {
722 if (CHECKBUTTON_usealtprintcmd -> value() == 1)
723 fprintf(fd,"printcommand=%s\n",TEXTINPUT_printcmd->value());
724 else
725 fprintf(fd,"# printcommand=%s\n",TEXTINPUT_printcmd->value());
726 }
727
728 /* Print Dialog Alt. Command: */
729 if (strlen(TEXTINPUT_printdia->value()) > 0)
730 {
731 if (CHECKBUTTON_usealtprintdia -> value() == 1)
732 fprintf(fd,"altprintcommand=%s\n",TEXTINPUT_printdia->value());
733 else
734 fprintf(fd,"# altprintcommand=%s\n",TEXTINPUT_printdia->value());
735 }
736
737 /* Show print dialog? */
738 if (ROUNDBUTTON_printdialogalways->value()==1)
739 fprintf(fd,"altprint=always\n");
740 else if (ROUNDBUTTON_printdialognever->value()==1)
741 fprintf(fd,"altprint=never\n");
742
743 #if USE_PAPERSIZES
744 /* Specify a paper size? */
745 if (CHOICE_papersize->value() != 0)
746 fprintf(fd,"papersize=%s\n", papersizes[CHOICE_papersize->value()]);
747 #endif
748
749
750 /* Saving: */
751 /* ------- */
752
753 /* Save Over Earlier Work: */
754 if (ROUNDBUTTON_alwaysoverwriteolderversion->value()==1)
755 fprintf(fd,"saveover=yes\n");
756 else if (ROUNDBUTTON_alwayssavenewpicture->value()==1)
757 fprintf(fd,"saveover=new\n");
758
759 /* Save Directory: */
760 if (strlen(FILEINPUT_alternatesavedir->value()) > 0)
761 {
762 if ((CHKBUT_altsavedir_isdef())==0)
763 fprintf(fd,"savedir=%s\n",FILEINPUT_alternatesavedir->value());
764 else
765 fprintf(fd,"# savedir=%s\n",FILEINPUT_alternatesavedir->value());
766 }
767
768 /* Start blank? */
769 if (CHECKBUTTON_startblank->value() == 1)
770 fprintf(fd,"startblank=yes\n");
771
772 /* Disable saving: */
773 if (CHECKBUTTON_disablesavebutton->value()==1)
774 fprintf(fd,"nosave=yes\n");
775
776 /* Auto-save on quit? */
777 if (CHECKBUTTON_autosave->value()==1)
778 fprintf(fd,"autosave=yes\n");
779
780 /* Data: */
781 /* ----- */
782
783 /* Lockfile: */
784 if (CHECKBUTTON_nolockfile->value()==1)
785 fprintf(fd,"nolockfile=yes\n");
786
787 /* Data Directory: */
788 if (strlen(FILEINPUT_alternatedatadir->value()) > 0)
789 {
790 if ((CHKBUT_altdatadir_isdef())==0)
791 fprintf(fd,"datadir=%s\n",FILEINPUT_alternatedatadir->value());
792 else
793 fprintf(fd,"# datadir=%s\n",FILEINPUT_alternatedatadir->value());
794 }
795
796 /* Accessibility */
797 /* ------------- */
798
799 if (CHECKBUTTON_mouse_accessibility->value()==1)
800 fprintf(fd,"mouse-accessibility=yes\n");
801 if (CHECKBUTTON_keyboard_mouse->value()==1)
802 fprintf(fd,"keyboard=yes\n");
803 if (CHECKBUTTON_onscreen_keyboard->value()==1)
804 {
805 fprintf(fd,"onscreen-keyboard=yes\n");
806
807 if(CHOICE_onscreen_keyboard_layout->value()!=0)
808 fprintf(fd,"onscreen-keyboard-layout=%s\n",layouts[CHOICE_onscreen_keyboard_layout->value()][LANG_CODE]);
809
810 if (CHECKBUTTON_onscreen_keyboard_disable_change->value()==1)
811 fprintf(fd,"onscreen-keyboard-disable-change=yes\n");
812 }
813
814
815
816 /* Joystick */
817 /* -------- */
818
819 if (SPINNER_joystick_dev->value()!=0)
820 fprintf(fd,"joystick-dev=%d\n",(int) SPINNER_joystick_dev->value());
821
822 if (SPINNER_joystick_slowness->value()!=15)
823 fprintf(fd,"joystick-slowness=%d\n",(int) SPINNER_joystick_slowness->value());
824
825 if (SPINNER_joystick_threshold->value()!=3200)
826 fprintf(fd,"joystick-threshold=%d\n",(int) SPINNER_joystick_threshold->value());
827
828 if (SPINNER_joystick_maxsteps->value()!=7)
829 fprintf(fd,"joystick-maxsteps=%d\n",(int) SPINNER_joystick_maxsteps->value());
830
831 if (SPINNER_joystick_hat_slowness->value()!=15)
832 fprintf(fd,"joystick-hat-slowness=%d\n",(int) SPINNER_joystick_hat_slowness->value());
833
834 if (SPINNER_joystick_hat_timeout->value()!=1000)
835 fprintf(fd,"joystick-hat-timeout=%d\n",(int) SPINNER_joystick_hat_timeout->value());
836
837 /* Disable buttons: */
838 if (strlen(TEXTINPUT_joystick_buttons_ignore->value()) > 0)
839 {
840 if (CHECKBUTTON_joystick_buttons_ignore -> value() == 1)
841 fprintf(fd,"joystick-buttons-ignore=%s\n",TEXTINPUT_joystick_buttons_ignore->value());
842 else
843 fprintf(fd,"# joystick-buttons-ignore=%s\n",TEXTINPUT_joystick_buttons_ignore->value());
844 }
845
846 if (SPINNER_joystick_btn_brush->value()!=255)
847 fprintf(fd,"joystick-btn-brush=%d\n",(int) SPINNER_joystick_btn_brush->value());
848 if (SPINNER_joystick_btn_label->value()!=255)
849 fprintf(fd,"joystick-btn-label=%d\n",(int) SPINNER_joystick_btn_label->value());
850 if (SPINNER_joystick_btn_new->value()!=255)
851 fprintf(fd,"joystick-btn-new=%d\n",(int) SPINNER_joystick_btn_new->value());
852 if (SPINNER_joystick_btn_print->value()!=255)
853 fprintf(fd,"joystick-btn-print=%d\n",(int) SPINNER_joystick_btn_print->value());
854 if (SPINNER_joystick_btn_shapes->value()!=255)
855 fprintf(fd,"joystick-btn-shapes=%d\n",(int) SPINNER_joystick_btn_shapes->value());
856 if (SPINNER_joystick_btn_undo->value()!=255)
857 fprintf(fd,"joystick-btn-undo=%d\n",(int) SPINNER_joystick_btn_undo->value());
858 if (SPINNER_joystick_btn_eraser->value()!=255)
859 fprintf(fd,"joystick-btn-eraser=%d\n",(int) SPINNER_joystick_btn_eraser->value());
860 if (SPINNER_joystick_btn_lines->value()!=255)
861 fprintf(fd,"joystick-btn-lines=%d\n",(int) SPINNER_joystick_btn_lines->value());
862 if (SPINNER_joystick_btn_open->value()!=255)
863 fprintf(fd,"joystick-btn-open=%d\n",(int) SPINNER_joystick_btn_open->value());
864 if (SPINNER_joystick_btn_redo->value()!=255)
865 fprintf(fd,"joystick-btn-redo=%d\n",(int) SPINNER_joystick_btn_redo->value());
866 if (SPINNER_joystick_btn_stamp->value()!=255)
867 fprintf(fd,"joystick-btn-stamp=%d\n",(int) SPINNER_joystick_btn_stamp->value());
868 if (SPINNER_joystick_btn_escape->value()!=255)
869 fprintf(fd,"joystick-btn-escape=%d\n",(int) SPINNER_joystick_btn_escape->value());
870 if (SPINNER_joystick_btn_magic->value()!=255)
871 fprintf(fd,"joystick-btn-magic=%d\n",(int) SPINNER_joystick_btn_magic->value());
872 if (SPINNER_joystick_btn_pgsetup->value()!=255)
873 fprintf(fd,"joystick-btn-pgsetup=%d\n",(int) SPINNER_joystick_btn_pgsetup->value());
874 if (SPINNER_joystick_btn_save->value()!=255)
875 fprintf(fd,"joystick-btn-save=%d\n",(int) SPINNER_joystick_btn_save->value());
876 if (SPINNER_joystick_btn_text->value()!=255)
877 fprintf(fd,"joystick-btn-text=%d\n",(int) SPINNER_joystick_btn_text->value());
878
879
880
881
882
883
884
885 fclose(fd);
886
887 set_change_status(0);
888
889 /*
890 FIXME: Add "--keyboard" option to UI and save/load routines
891 */
892
893 }
894
895
896
load_conf(void)897 void load_conf(void)
898 {
899 FILE *fd;
900 char *flg=(char*)"r";
901 char line[256];
902 bool all_users_conf_file = conf_file_exists(ALL_USERS);
903
904 CB_SetAllTabsToDefaults ();
905
906 switch(CHOICE_settings->value())
907 {
908 case (CURRENT_USER):
909
910 CHECKBUTTON_usealluserssettings->show();
911 if (all_users_conf_file == false)
912 {
913 CHECKBUTTON_usealluserssettings->value(0);
914 CHECKBUTTON_usealluserssettings->deactivate();
915 activate_widgets();
916 }
917 else
918 {
919 bool cur_user_conf_file = conf_file_exists(CURRENT_USER);
920 CHECKBUTTON_usealluserssettings->activate();
921 if (cur_user_conf_file == true)
922 {
923 CHECKBUTTON_usealluserssettings->value(0);
924 activate_widgets();
925 }
926 else
927 {
928 CHECKBUTTON_usealluserssettings->value(1);
929 deactivate_widgets();
930 }
931 }
932 break;
933
934 case (ALL_USERS):
935 CHECKBUTTON_usealluserssettings->hide();
936 activate_widgets();
937 break;
938 }
939
940 construct_conf_filename( CHOICE_settings->value() );
941
942 fd = fopen(conf_filename,flg);
943
944 if (fd != NULL)
945 {
946 do
947 {
948 if (fgets(line, sizeof(line), fd) && !feof(fd))
949 {
950 /* Trim EOL char(s): */
951
952 while (strlen(line) > 0 &&
953 (line[strlen(line) - 1] == '\r' ||
954 line[strlen(line) - 1] == '\n'))
955 {
956 line[strlen(line) - 1] = '\0';
957 }
958
959
960 /* Determine what option it is, and if we should alter the UI
961 to correspond */
962
963 /* Video & Sound: */
964 if (strcmp(line, "fullscreen=yes") == 0)
965 CHECKBUTTON_fullscreen->value(1);
966
967 if (strcmp(line, "fullscreen=native") == 0)
968 {
969 CHECKBUTTON_fullscreen->value(1);
970 CHECKBUTTON_native->value(1);
971 }
972
973 if (strcmp(line, "native=yes") == 0)
974 {
975 CHECKBUTTON_native->value(1);
976 }
977
978 if (strstr(line, "windowsize=") == line)
979 {
980 int i;
981 char tmp[32];
982
983 for (i = 0; i < NUM_WINDOW_WIDTHS; i++)
984 {
985 sprintf(tmp, "windowsize=%sx", window_widths[i]);
986 if (strstr(line, tmp) == line)
987 CHOICE_windowwidth->value(i);
988 }
989
990 for (i = 0; i < NUM_WINDOW_WIDTHS; i++)
991 {
992 sprintf(tmp, "windowsize=%sx%s",
993 window_widths[CHOICE_windowwidth->value()], window_heights[i]);
994 if (strcmp(line, tmp) == 0)
995 CHOICE_windowheight->value(i);
996 }
997 }
998 else if (strcmp(line, "orient=portrait") == 0)
999 CHECKBUTTON_rotate->value(1);
1000 else if (strcmp(line, "allowscreensaver=yes") == 0)
1001 CHECKBUTTON_screensaver->value(1);
1002 else if (strcmp(line, "nosound=yes") == 0)
1003 CHECKBUTTON_soundeffects->value(0);
1004
1005 /* Mouse & Keyboard: */
1006 else if (strcmp(line, "nofancycursors=yes") == 0)
1007 CHECKBUTTON_fancycursorshapes->value(0);
1008 else if (strcmp(line, "hidecursor=yes") == 0)
1009 CHECKBUTTON_hidecursor->value(1);
1010 else if (strcmp(line, "grab=yes") == 0)
1011 CHECKBUTTON_grabmousepointer->value(1);
1012 else if (strcmp(line, "nowheelmouse=yes") == 0)
1013 CHECKBUTTON_mousewheelsupport->value(0);
1014 else if (strcmp(line, "nobuttondistinction=yes") == 0)
1015 CHECKBUTTON_nobuttondistinction->value(1);
1016 else if (strcmp(line, "noshortcuts=yes") == 0)
1017 CHECKBUTTON_enablekbd->value(0);
1018
1019 /* Simplifications: */
1020 else if (strcmp(line, "simpleshapes=yes") == 0)
1021 CHECKBUTTON_disableshaperotation->value(1);
1022 else if (strcmp(line, "outlines=yes") == 0)
1023 CHECKBUTTON_simpleshapeoutlines->value(1);
1024 else if (strcmp(line, "uppercase=yes") == 0)
1025 CHECKBUTTON_showuppercasetextonly->value(1);
1026 else if (strcmp(line, "noquit=yes") == 0)
1027 CHECKBUTTON_disablequitbutton->value(1);
1028 else if (strcmp(line, "nostamps=yes") == 0)
1029 CHECKBUTTON_disablestampstool->value(1);
1030 else if (strcmp(line, "nostampcontrols=yes") == 0)
1031 CHECKBUTTON_disablestampcontrols->value(1);
1032 else if (strcmp(line, "nomagiccontrols=yes") == 0)
1033 CHECKBUTTON_disablemagiccontrols->value(1);
1034 else if (strcmp(line, "nolabel=yes") == 0)
1035 CHECKBUTTON_disablelabeltool->value(1);
1036 else if (strstr(line, "stampsize=") == line)
1037 SLIDER_stampsize->value(atoi(line + 10));
1038
1039 /* Locale: */
1040 else if (strstr(line, "lang=") == line)
1041 {
1042 char * lang;
1043 int i;
1044
1045 lang = strstr(line, "lang=") + strlen("lang=");
1046
1047 for (i = 0; i < NUM_LANGS; i++)
1048 {
1049 if (strcmp(lang, langs[i][LANG_CODE]) == 0)
1050 CHOICE_language->value(i);
1051 }
1052 }
1053 else if (strcmp(line, "mirrorstamps=yes") == 0)
1054 CHECKBUTTON_mirrorstamps->value();
1055 else if (strcmp(line, "sysfonts=yes") == 0)
1056 CHECKBUTTON_loadsystemfonts->value(1);
1057 else if (strcmp(line, "alllocalefonts=yes") == 0)
1058 CHECKBUTTON_alllocalefonts->value(1);
1059
1060 /* Printing: */
1061 else if (strcmp(line, "noprint=yes") == 0)
1062 CHECKBUTTON_allowprinting->value(0);
1063 else if (strcmp(line, "printcfg=yes") == 0)
1064 CHECKBUTTON_printcfg->value(1);
1065 else if (strstr(line, "printdelay=") == line)
1066 {
1067 VALUEINPUT_printdelay->value(atoi(strstr(line, "printdelay=") +
1068 strlen("printdelay=")));
1069 }
1070 else if (strstr(line, "printcommand=") != NULL)
1071 {
1072 TEXTINPUT_printcmd->value(strstr(line, "printcommand=") +
1073 strlen("printcommand="));
1074
1075 if (strstr(line, "printcommand=") == line)
1076 {
1077 /* Active! */
1078
1079 CHECKBUTTON_usealtprintcmd->value(1);
1080 TEXTINPUT_printcmd->activate();
1081 }
1082 else
1083 {
1084 /* Inactive! */
1085
1086 CHECKBUTTON_usealtprintcmd->value(0);
1087 TEXTINPUT_printcmd->deactivate();
1088 }
1089 }
1090 else if (strstr(line, "altprintcommand=") != NULL)
1091 {
1092 TEXTINPUT_printcmd->value(strstr(line, "altprintcommand=") +
1093 strlen("altprintcommand="));
1094
1095 if (strstr(line, "altprintcommand=") == line)
1096 {
1097 /* Active! */
1098
1099 CHECKBUTTON_usealtprintdia->value(1);
1100 TEXTINPUT_printdia->activate();
1101 }
1102 else
1103 {
1104 /* Inactive! */
1105
1106 CHECKBUTTON_usealtprintdia->value(0);
1107 TEXTINPUT_printdia->deactivate();
1108 }
1109 }
1110
1111 /* Print Dialog: */
1112 else if (strcmp(line, "altprint=always") == 0)
1113 {
1114 ROUNDBUTTON_printdialogmod->value(0);
1115 ROUNDBUTTON_printdialogalways->value(1);
1116 ROUNDBUTTON_printdialognever->value(0);
1117 }
1118 else if (strcmp(line, "altprint=never") == 0)
1119 {
1120 ROUNDBUTTON_printdialogmod->value(0);
1121 ROUNDBUTTON_printdialogalways->value(0);
1122 ROUNDBUTTON_printdialognever->value(1);
1123 }
1124 else if (strcmp(line, "altprint=mod") == 0)
1125 {
1126 ROUNDBUTTON_printdialogmod->value(1);
1127 ROUNDBUTTON_printdialogalways->value(0);
1128 ROUNDBUTTON_printdialognever->value(0);
1129 }
1130
1131 #if USE_PAPERSIZES
1132 /* Paper Size: */
1133 else if (strstr(line, "papersize=") == line)
1134 {
1135 for (int i = 1; i < num_papersizes; i++)
1136 {
1137 if (strcmp(line + strlen("papersize="), papersizes[i]) == 0)
1138 CHOICE_papersize->value(i);
1139 }
1140 }
1141 #endif
1142
1143 /* Saving: */
1144 else if (strcmp(line, "saveover=ask") == 0)
1145 {
1146 ROUNDBUTTON_askbeforeoverwriting->value(1);
1147 ROUNDBUTTON_alwaysoverwriteolderversion->value(0);
1148 ROUNDBUTTON_alwayssavenewpicture->value(0);
1149 }
1150 else if (strcmp(line, "saveover=yes") == 0)
1151 {
1152 ROUNDBUTTON_askbeforeoverwriting->value(0);
1153 ROUNDBUTTON_alwaysoverwriteolderversion->value(1);
1154 ROUNDBUTTON_alwayssavenewpicture->value(0);
1155 }
1156 else if (strcmp(line, "saveover=new") == 0)
1157 {
1158 ROUNDBUTTON_askbeforeoverwriting->value(0);
1159 ROUNDBUTTON_alwaysoverwriteolderversion->value(0);
1160 ROUNDBUTTON_alwayssavenewpicture->value(1);
1161 }
1162 else if (strstr(line, "savedir=") != NULL)
1163 {
1164 FILEINPUT_alternatesavedir->value(strstr(line, "savedir=") +
1165 strlen("savedir="));
1166
1167 if (strstr(line, "savedir=") == line)
1168 {
1169 /* Active! */
1170
1171 CHECKBUTTON_usealternatesavedir->value(1);
1172 FILEINPUT_alternatesavedir->activate();
1173 BUTTON_browsealternatesavedir->activate();
1174 }
1175 else
1176 {
1177 /* Inactive! */
1178
1179 CHECKBUTTON_usealternatesavedir->value(0);
1180 FILEINPUT_alternatesavedir->deactivate();
1181 BUTTON_browsealternatesavedir->deactivate();
1182 }
1183 }
1184 else if (strstr(line, "datadir=") != NULL)
1185 {
1186 FILEINPUT_alternatedatadir->value(strstr(line, "datadir=") +
1187 strlen("datadir="));
1188
1189 if (strstr(line, "datadir=") == line)
1190 {
1191 /* Active! */
1192
1193 CHECKBUTTON_usealternatedatadir->value(1);
1194 FILEINPUT_alternatedatadir->activate();
1195 BUTTON_browsealternatedatadir->activate();
1196 }
1197 else
1198 {
1199 /* Inactive! */
1200
1201 CHECKBUTTON_usealternatedatadir->value(0);
1202 FILEINPUT_alternatedatadir->deactivate();
1203 BUTTON_browsealternatedatadir->deactivate();
1204 }
1205 }
1206 else if (strcmp(line, "nolockfile=yes") == 0 ||
1207 strcmp(line, "lockfile=no") == 0)
1208 {
1209 CHECKBUTTON_nolockfile->value(1);
1210 }
1211 else if (strstr(line, "colorfile=") != NULL)
1212 {
1213 FILEINPUT_colorfile->value(strstr(line, "colorfile=") +
1214 strlen("colorfile="));
1215
1216 if (strstr(line, "colorfile=") == line)
1217 {
1218 /* Active! */
1219
1220 CHECKBUTTON_usecolorfile->value(1);
1221 FILEINPUT_colorfile->activate();
1222 BUTTON_browsecolorfile->activate();
1223 }
1224 else
1225 {
1226 /* Inactive! */
1227
1228 CHECKBUTTON_usecolorfile->value(0);
1229 FILEINPUT_colorfile->deactivate();
1230 BUTTON_browsecolorfile->deactivate();
1231 }
1232 }
1233 else if (strcmp(line, "nosave=yes") == 0)
1234 CHECKBUTTON_disablesavebutton->value(1);
1235 else if (strcmp(line, "startblank=yes") == 0)
1236 /* Start blank? */
1237 CHECKBUTTON_startblank->value(1);
1238 else if (strcmp(line, "autosave=yes") == 0)
1239 /* Auto-save on quit? */
1240 CHECKBUTTON_autosave->value(1);
1241 /*Accessibility */
1242 else if (strcmp(line, "mouse-accessibility=yes") == 0)
1243 /* Mouse accessibility? */
1244 CHECKBUTTON_mouse_accessibility->value(1);
1245 else if (strcmp(line, "keyboard=yes") == 0)
1246 /* Keyboard mouse? */
1247 CHECKBUTTON_keyboard_mouse->value(1);
1248 else if (strcmp(line, "onscreen-keyboard=yes") == 0)
1249 /* Onscreen keyboard? */
1250 {
1251 CHECKBUTTON_onscreen_keyboard->value(1);
1252 CHOICE_onscreen_keyboard_layout->activate();
1253 CHECKBUTTON_onscreen_keyboard_disable_change->activate();
1254 }
1255 else if (strstr(line, "onscreen-keyboard-layout=") == line)
1256 {
1257 char * lay;
1258 int i;
1259
1260 lay = strstr(line, "onscreen-keyboard-layout=") + strlen("onscreen-keyboard-layout=");
1261
1262 for (i = 0; i < NUM_LAYOUTS; i++)
1263 {
1264 if (strcmp(lay, layouts[i][LANG_CODE]) == 0)
1265 CHOICE_onscreen_keyboard_layout->value(i);
1266 }
1267 }
1268
1269 else if (strcmp(line, "onscreen-keyboard-disable-change=yes") == 0)
1270 /* Onscreen keyboard? */
1271 CHECKBUTTON_onscreen_keyboard_disable_change->value(1);
1272
1273 /* joystick */
1274 else if (strstr(line, "joystick-dev=") == line)
1275 SPINNER_joystick_dev->value(atoi(strstr(line, "joystick-dev=") +
1276 strlen("joystick-dev=")));
1277 else if (strstr(line, "joystick-slowness=") == line)
1278 SPINNER_joystick_slowness->value(atoi(strstr(line, "joystick-slowness=") +
1279 strlen("joystick-slowness=")));
1280 else if (strstr(line, "joystick-threshold=") == line)
1281 SPINNER_joystick_threshold->value(atoi(strstr(line, "joystick-threshold=") +
1282 strlen("joystick-threshold=")));
1283 else if (strstr(line, "joystick-maxsteps=") == line)
1284 SPINNER_joystick_maxsteps->value(atoi(strstr(line, "joystick-maxsteps=") +
1285 strlen("joystick-maxsteps=")));
1286 else if (strstr(line, "joystick-hat-slowness=") == line)
1287 SPINNER_joystick_hat_slowness->value(atoi(strstr(line, "joystick-hat-slowness=") +
1288 strlen("joystick-hat-slowness=")));
1289 else if (strstr(line, "joystick-hat-timeout=") == line)
1290 SPINNER_joystick_hat_timeout->value(atoi(strstr(line, "joystick-hat-timeout=") +
1291 strlen("joystick-hat-timeout=")));
1292
1293 else if (strstr(line, "joystick-buttons-ignore=") != NULL)
1294 {
1295 TEXTINPUT_joystick_buttons_ignore->value(strstr(line, "joystick-buttons-ignore=") +
1296 strlen("joystick-buttons-ignore="));
1297 if (strstr(line, "joystick-buttons-ignore=") == line)
1298 {
1299 /* Active! */
1300
1301 CHECKBUTTON_joystick_buttons_ignore->value(1);
1302 TEXTINPUT_joystick_buttons_ignore->activate();
1303 }
1304 else
1305 {
1306 /* Inactive! */
1307
1308 CHECKBUTTON_joystick_buttons_ignore->value(0);
1309 TEXTINPUT_joystick_buttons_ignore->deactivate();
1310 }
1311 }
1312
1313 else if (strstr(line, "joystick-btn-brush=") == line)
1314 SPINNER_joystick_btn_brush->value(atoi(strstr(line, "joystick-btn-brush=") +
1315 strlen("joystick-btn-brush=")));
1316 else if (strstr(line, "joystick-btn-label=") == line)
1317 SPINNER_joystick_btn_label->value(atoi(strstr(line, "joystick-btn-label=") +
1318 strlen("joystick-btn-label=")));
1319 else if (strstr(line, "joystick-btn-new=") == line)
1320 SPINNER_joystick_btn_new->value(atoi(strstr(line, "joystick-btn-new=") +
1321 strlen("joystick-btn-new=")));
1322 else if (strstr(line, "joystick-btn-print=") == line)
1323 SPINNER_joystick_btn_print->value(atoi(strstr(line, "joystick-btn-print=") +
1324 strlen("joystick-btn-print=")));
1325 else if (strstr(line, "joystick-btn-shapes=") == line)
1326 SPINNER_joystick_btn_shapes->value(atoi(strstr(line, "joystick-btn-shapes=") +
1327 strlen("joystick-btn-shapes=")));
1328 else if (strstr(line, "joystick-btn-undo=") == line)
1329 SPINNER_joystick_btn_undo->value(atoi(strstr(line, "joystick-btn-undo=") +
1330 strlen("joystick-btn-undo=")));
1331 else if (strstr(line, "joystick-btn-eraser=") == line)
1332 SPINNER_joystick_btn_eraser->value(atoi(strstr(line, "joystick-btn-eraser=") +
1333 strlen("joystick-btn-eraser=")));
1334 else if (strstr(line, "joystick-btn-lines=") == line)
1335 SPINNER_joystick_btn_lines->value(atoi(strstr(line, "joystick-btn-lines=") +
1336 strlen("joystick-btn-lines=")));
1337 else if (strstr(line, "joystick-btn-open=") == line)
1338 SPINNER_joystick_btn_open->value(atoi(strstr(line, "joystick-btn-open=") +
1339 strlen("joystick-btn-open=")));
1340 else if (strstr(line, "joystick-btn-redo=") == line)
1341 SPINNER_joystick_btn_redo->value(atoi(strstr(line, "joystick-btn-redo=") +
1342 strlen("joystick-btn-redo=")));
1343 else if (strstr(line, "joystick-btn-stamp=") == line)
1344 SPINNER_joystick_btn_stamp->value(atoi(strstr(line, "joystick-btn-stamp=") +
1345 strlen("joystick-btn-stamp=")));
1346 else if (strstr(line, "joystick-btn-escape=") == line)
1347 SPINNER_joystick_btn_escape->value(atoi(strstr(line, "joystick-btn-escape=") +
1348 strlen("joystick-btn-escape=")));
1349 else if (strstr(line, "joystick-btn-magic=") == line)
1350 SPINNER_joystick_btn_magic->value(atoi(strstr(line, "joystick-btn-magic=") +
1351 strlen("joystick-btn-magic=")));
1352 else if (strstr(line, "joystick-btn-pgsetup=") == line)
1353 SPINNER_joystick_btn_pgsetup->value(atoi(strstr(line, "joystick-btn-pgsetup=") +
1354 strlen("joystick-btn-pgsetup=")));
1355 else if (strstr(line, "joystick-btn-save=") == line)
1356 SPINNER_joystick_btn_save->value(atoi(strstr(line, "joystick-btn-save=") +
1357 strlen("joystick-btn-save=")));
1358 else if (strstr(line, "joystick-btn-text=") == line)
1359 SPINNER_joystick_btn_text->value(atoi(strstr(line, "joystick-btn-text=") +
1360 strlen("joystick-btn-text=")));
1361
1362
1363
1364 }
1365 }
1366 while (!feof(fd));
1367 }
1368
1369 set_change_status(0);
1370 }
1371
apply_settings(void)1372 static void apply_settings(void)
1373 {
1374 if (CHECKBUTTON_usealluserssettings->visible() && CHECKBUTTON_usealluserssettings->value())
1375 {
1376 construct_conf_filename(CURRENT_USER);
1377 remove(conf_filename);
1378 set_change_status(0);
1379 }
1380 else
1381 {
1382 save_conf();
1383 }
1384 }
1385
1386 Fl_Double_Window *WINDOW_tpc=(Fl_Double_Window *)0;
1387 Fl_Tabs *TAB_alltabs=(Fl_Tabs *)0;
1388
1389 Fl_Group *TABE_about=(Fl_Group *)0;
1390 Fl_Group *GROUP_abouttpc=(Fl_Group *)0;
1391 Fl_Text_Display *TEXTOUTPUT_abouttext=(Fl_Text_Display *)0;
1392 Fl_Text_Buffer *TEXTBUFFER_abouttext = new Fl_Text_Buffer();
1393
1394 Fl_Group *TABE_videoandsound=(Fl_Group *)0;
1395
1396 Fl_Group *GROUP_video=(Fl_Group *)0;
1397 Fl_Check_Button *CHECKBUTTON_fullscreen=(Fl_Check_Button *)0;
1398 Fl_Check_Button *CHECKBUTTON_native=(Fl_Check_Button *)0;
1399 Fl_Check_Button *CHECKBUTTON_startblank=(Fl_Check_Button *)0;
1400 Fl_Group *GROUP_resolution=(Fl_Group *)0;
1401 Fl_Choice *CHOICE_windowwidth=(Fl_Choice *) DEF_WINDOW_WIDTH;
1402 Fl_Choice *CHOICE_windowheight=(Fl_Choice *) DEF_WINDOW_HEIGHT;
1403 Fl_Check_Button *CHECKBUTTON_rotate=(Fl_Check_Button *)0;
1404 Fl_Check_Button *CHECKBUTTON_screensaver=(Fl_Check_Button *)0;
1405
1406 Fl_Group *GROUP_sound=(Fl_Group *)0;
1407 Fl_Check_Button *CHECKBUTTON_soundeffects=(Fl_Check_Button *)0;
1408
1409 Fl_Group *TABE_mouseandkeyboard=(Fl_Group *)0;
1410 Fl_Group *GROUP_mouse=(Fl_Group *)0;
1411 Fl_Check_Button *CHECKBUTTON_fancycursorshapes=(Fl_Check_Button *)0;
1412 Fl_Check_Button *CHECKBUTTON_hidecursor=(Fl_Check_Button *)0;
1413 Fl_Check_Button *CHECKBUTTON_grabmousepointer=(Fl_Check_Button *)0;
1414 Fl_Check_Button *CHECKBUTTON_mousewheelsupport=(Fl_Check_Button *)0;
1415 Fl_Check_Button *CHECKBUTTON_nobuttondistinction=(Fl_Check_Button *)0;
1416
1417 Fl_Group *GROUP_keyboard=(Fl_Group *)0;
1418 Fl_Check_Button *CHECKBUTTON_enablekbd=(Fl_Check_Button *)0;
1419
1420 Fl_Group *TABE_simplification=(Fl_Group *)0;
1421 Fl_Group *GROUP_interfacesimpl=(Fl_Group *)0;
1422 Fl_Check_Button *CHECKBUTTON_disableshaperotation=(Fl_Check_Button *)0;
1423 Fl_Check_Button *CHECKBUTTON_simpleshapeoutlines=(Fl_Check_Button *)0;
1424 Fl_Check_Button *CHECKBUTTON_showuppercasetextonly=(Fl_Check_Button *)0;
1425 Fl_Group *GROUP_controlsimpl=(Fl_Group *)0;
1426 Fl_Check_Button *CHECKBUTTON_disablequitbutton=(Fl_Check_Button *)0;
1427 Fl_Check_Button *CHECKBUTTON_disablestampstool=(Fl_Check_Button *)0;
1428 Fl_Check_Button *CHECKBUTTON_disablestampcontrols=(Fl_Check_Button *)0;
1429 Fl_Check_Button *CHECKBUTTON_disablemagiccontrols=(Fl_Check_Button *)0;
1430 Fl_Check_Button *CHECKBUTTON_disablelabeltool=(Fl_Check_Button *)0;
1431 Fl_Slider *SLIDER_stampsize=(Fl_Slider *)0;
1432 Fl_Group *GROUP_stampsize=(Fl_Group *)0;
1433
1434 Fl_Group *TABE_locale=(Fl_Group *)0;
1435 Fl_Group *GROUP_locale=(Fl_Group *)0;
1436 Fl_Choice *CHOICE_language=(Fl_Choice *)0;
1437 Fl_Check_Button *CHECKBUTTON_mirrorstamps=(Fl_Check_Button *)0;
1438 Fl_Check_Button *CHECKBUTTON_loadsystemfonts=(Fl_Check_Button *)0;
1439 Fl_Check_Button *CHECKBUTTON_alllocalefonts=(Fl_Check_Button *)0;
1440
1441 Fl_Group *TABE_printing=(Fl_Group *)0;
1442 Fl_Group *GROUP_printperms=(Fl_Group *)0;
1443 Fl_Check_Button *CHECKBUTTON_allowprinting=(Fl_Check_Button *)0;
1444 Fl_Value_Input *VALUEINPUT_printdelay=(Fl_Value_Input *)0;
1445 Fl_Group *GROUP_printcfg=(Fl_Group *)0;
1446 Fl_Check_Button *CHECKBUTTON_printcfg=(Fl_Check_Button *)0;
1447 Fl_Box *LABEL_seconds=(Fl_Box *)0;
1448 Fl_Group *GROUP_printcmd=(Fl_Group *)0;
1449 Fl_Check_Button *CHECKBUTTON_usealtprintcmd=(Fl_Check_Button *)0;
1450 Fl_Group *GROUP_printdia=(Fl_Group *)0;
1451 Fl_Check_Button *CHECKBUTTON_usealtprintdia=(Fl_Check_Button *)0;
1452
1453 Fl_Group *GROUP_startblank=(Fl_Group *)0;
1454
1455 Fl_Group *TABE_accessibility=(Fl_Group *)0;
1456 Fl_Check_Button *CHECKBUTTON_mouse_accessibility=(Fl_Check_Button *)0;
1457 Fl_Check_Button *CHECKBUTTON_keyboard_mouse=(Fl_Check_Button *)0;
1458 Fl_Check_Button *CHECKBUTTON_onscreen_keyboard=(Fl_Check_Button *)0;
1459 Fl_Choice *CHOICE_onscreen_keyboard_layout=(Fl_Choice *)0;
1460 Fl_Check_Button *CHECKBUTTON_onscreen_keyboard_disable_change=(Fl_Check_Button *)0;
1461
1462 Fl_Scroll *TABE_joystick=(Fl_Scroll *)0;
1463 Fl_Spinner *SPINNER_joystick_dev=(Fl_Spinner *)0;
1464 Fl_Spinner *SPINNER_joystick_slowness=(Fl_Spinner *)0;
1465 Fl_Spinner *SPINNER_joystick_threshold=(Fl_Spinner *)0;
1466 Fl_Spinner *SPINNER_joystick_maxsteps=(Fl_Spinner *)0;
1467 Fl_Spinner *SPINNER_joystick_hat_slowness=(Fl_Spinner *)0;
1468 Fl_Spinner *SPINNER_joystick_hat_timeout=(Fl_Spinner *)0;
1469 Fl_Spinner *SPINNER_joystick_btn_brush=(Fl_Spinner *)0;
1470 Fl_Spinner *SPINNER_joystick_btn_label=(Fl_Spinner *)0;
1471 Fl_Spinner *SPINNER_joystick_btn_new=(Fl_Spinner *)0;
1472 Fl_Spinner *SPINNER_joystick_btn_print=(Fl_Spinner *)0;
1473 Fl_Spinner *SPINNER_joystick_btn_shapes=(Fl_Spinner *)0;
1474 Fl_Spinner *SPINNER_joystick_btn_undo=(Fl_Spinner *)0;
1475 Fl_Spinner *SPINNER_joystick_btn_eraser=(Fl_Spinner *)0;
1476 Fl_Spinner *SPINNER_joystick_btn_lines=(Fl_Spinner *)0;
1477 Fl_Spinner *SPINNER_joystick_btn_open=(Fl_Spinner *)0;
1478 Fl_Spinner *SPINNER_joystick_btn_redo=(Fl_Spinner *)0;
1479 Fl_Spinner *SPINNER_joystick_btn_stamp=(Fl_Spinner *)0;
1480 Fl_Spinner *SPINNER_joystick_btn_escape=(Fl_Spinner *)0;
1481 Fl_Spinner *SPINNER_joystick_btn_magic=(Fl_Spinner *)0;
1482 Fl_Spinner *SPINNER_joystick_btn_pgsetup=(Fl_Spinner *)0;
1483 Fl_Spinner *SPINNER_joystick_btn_save=(Fl_Spinner *)0;
1484 Fl_Spinner *SPINNER_joystick_btn_text=(Fl_Spinner *)0;
1485
cb_CHECKBUTTON_joystick_buttons_ignore(Fl_Check_Button *,void *)1486 static void cb_CHECKBUTTON_joystick_buttons_ignore(Fl_Check_Button*, void*)
1487 {
1488 if (CHECKBUTTON_joystick_buttons_ignore -> value () == 1)
1489 {
1490 TEXTINPUT_joystick_buttons_ignore -> activate ();
1491 }
1492 else
1493 {
1494 TEXTINPUT_joystick_buttons_ignore -> deactivate ();
1495 };
1496 set_change_status(1);
1497 }
cb_CHECKBUTTON_onscreen_keyboard(Fl_Check_Button *,void *)1498 static void cb_CHECKBUTTON_onscreen_keyboard(Fl_Check_Button*, void*)
1499 {
1500 if (CHECKBUTTON_onscreen_keyboard -> value () == 1)
1501 {
1502 CHOICE_onscreen_keyboard_layout->activate();
1503 CHECKBUTTON_onscreen_keyboard_disable_change->activate();
1504 }
1505 else
1506 {
1507 CHOICE_onscreen_keyboard_layout->deactivate();
1508 CHECKBUTTON_onscreen_keyboard_disable_change->deactivate();
1509 };
1510 set_change_status(1);
1511 }
1512
1513 Fl_Check_Button *CHECKBUTTON_joystick_buttons_ignore=(Fl_Check_Button *)0;
1514 Fl_Input *TEXTINPUT_joystick_buttons_ignore=(Fl_Input *)0;
1515
1516
1517
1518
1519
cb_SLIDER_stampsize(Fl_Slider *,void *)1520 static void cb_SLIDER_stampsize(Fl_Slider*, void*)
1521 {
1522 double val;
1523
1524 val = floor(SLIDER_stampsize->value());
1525 SLIDER_stampsize->value(val);
1526
1527 if (val == -1)
1528 SLIDER_stampsize->label(gettext("Default (no override)"));
1529 else if (val >= 0 && val <= 4)
1530 SLIDER_stampsize->label(gettext("Override: Small"));
1531 else if (val >= 4 && val < 8)
1532 SLIDER_stampsize->label(gettext("Override: Medium"));
1533 else if (val >= 8)
1534 SLIDER_stampsize->label(gettext("Override: Large"));
1535
1536 set_change_status(1);
1537 }
1538
cb_CHECKBUTTON_usefullscreen(Fl_Check_Button *,void *)1539 static void cb_CHECKBUTTON_usefullscreen(Fl_Check_Button*, void*)
1540 {
1541 if (CHECKBUTTON_fullscreen -> value() == 1)
1542 {
1543 CHECKBUTTON_native -> activate();
1544 }
1545 else
1546 {
1547 CHECKBUTTON_native -> deactivate();
1548 CHECKBUTTON_native -> value(0);
1549 }
1550 set_change_status(1);
1551 }
1552
1553
cb_CHECKBUTTON_usealtprintcmd(Fl_Check_Button *,void *)1554 static void cb_CHECKBUTTON_usealtprintcmd(Fl_Check_Button*, void*)
1555 {
1556 if (CHECKBUTTON_usealtprintcmd -> value () == 1)
1557 {
1558 TEXTINPUT_printcmd -> activate ();
1559 }
1560 else
1561 {
1562 TEXTINPUT_printcmd -> deactivate ();
1563 };
1564 set_change_status(1);
1565 }
1566
1567 Fl_Input *TEXTINPUT_printcmd=(Fl_Input *)0;
1568
cb_CHECKBUTTON_usealtprintdia(Fl_Check_Button *,void *)1569 static void cb_CHECKBUTTON_usealtprintdia(Fl_Check_Button*, void*)
1570 {
1571 if (CHECKBUTTON_usealtprintdia -> value () == 1)
1572 {
1573 TEXTINPUT_printdia -> activate ();
1574 }
1575 else
1576 {
1577 TEXTINPUT_printdia -> deactivate ();
1578 };
1579 set_change_status(1);
1580 }
1581
1582 Fl_Input *TEXTINPUT_printdia=(Fl_Input *)0;
1583
1584 Fl_Group *TABE_saving=(Fl_Group *)0;
1585
1586 Fl_Group *GROUP_saveover=(Fl_Group *)0;
1587 Fl_Round_Button *ROUNDBUTTON_askbeforeoverwriting=(Fl_Round_Button *)0;
1588 Fl_Round_Button *ROUNDBUTTON_alwaysoverwriteolderversion=(Fl_Round_Button *)0;
1589 Fl_Round_Button *ROUNDBUTTON_alwayssavenewpicture=(Fl_Round_Button *)0;
1590
1591 Fl_Round_Button *ROUNDBUTTON_printdialogmod=(Fl_Round_Button *)0;
1592 Fl_Round_Button *ROUNDBUTTON_printdialogalways=(Fl_Round_Button *)0;
1593 Fl_Round_Button *ROUNDBUTTON_printdialognever=(Fl_Round_Button *)0;
1594
1595 #if USE_PAPERSIZES
1596 Fl_Choice *CHOICE_papersize=(Fl_Choice *)0;
1597 #endif
1598
1599 Fl_Group *GROUP_savedir=(Fl_Group *)0;
1600 Fl_Check_Button *CHECKBUTTON_usealternatesavedir=(Fl_Check_Button *)0;
1601
1602 Fl_Group *TABE_data=(Fl_Group *)0;
1603
1604 Fl_Group *GROUP_lockfile=(Fl_Group *)0;
1605 Fl_Check_Button *CHECKBUTTON_nolockfile=(Fl_Check_Button *)0;
1606
1607 Fl_Group *GROUP_datadir=(Fl_Group *)0;
1608 Fl_Check_Button *CHECKBUTTON_usealternatedatadir=(Fl_Check_Button *)0;
1609
1610 Fl_Group *GROUP_colorfile=(Fl_Group *)0;
1611 Fl_Check_Button *CHECKBUTTON_usecolorfile=(Fl_Check_Button *)0;
1612
1613 Fl_Group *GROUP_nosave=(Fl_Group *)0;
1614 Fl_Check_Button *CHECKBUTTON_disablesavebutton=(Fl_Check_Button *)0;
1615
1616 Fl_Check_Button *CHECKBUTTON_autosave=(Fl_Check_Button *)0;
1617
cb_CHECKBUTTON_usealternatesavedir(Fl_Check_Button *,void *)1618 static void cb_CHECKBUTTON_usealternatesavedir(Fl_Check_Button*, void*) {
1619 if (CHECKBUTTON_usealternatesavedir -> value () == 1)
1620 {
1621 FILEINPUT_alternatesavedir -> activate ();
1622 BUTTON_browsealternatesavedir -> activate ();
1623 }
1624 else
1625 {
1626 FILEINPUT_alternatesavedir -> deactivate ();
1627 BUTTON_browsealternatesavedir -> deactivate ();
1628 }
1629 set_change_status(1);
1630 }
1631
1632 Fl_File_Input *FILEINPUT_alternatesavedir=(Fl_File_Input *)0;
1633
cb_BUTTON_browsealternatesavedir(Fl_Button *,void *)1634 static void cb_BUTTON_browsealternatesavedir(Fl_Button*, void*) {
1635 const char *dirname="\n";
1636 #ifdef __APPLE__
1637 dirname = choosePath(0, 1, 0);
1638 #else
1639 dirname = fl_dir_chooser(gettext("Save Directory?"),"");
1640 fl_file_chooser_callback(0);
1641 #endif
1642 if (dirname != NULL && strlen(dirname) > 0) {
1643 FILEINPUT_alternatesavedir->value(dirname);
1644 WINDOW_tpc->show();
1645 set_change_status(1);
1646 }
1647 }
1648
1649 Fl_Button *BUTTON_browsealternatesavedir=(Fl_Button *)0;
1650
1651
cb_CHECKBUTTON_usealternatedatadir(Fl_Check_Button *,void *)1652 static void cb_CHECKBUTTON_usealternatedatadir(Fl_Check_Button*, void*) {
1653 if (CHECKBUTTON_usealternatedatadir -> value () == 1)
1654 {
1655 FILEINPUT_alternatedatadir -> activate ();
1656 BUTTON_browsealternatedatadir -> activate ();
1657 }
1658 else
1659 {
1660 FILEINPUT_alternatedatadir -> deactivate ();
1661 BUTTON_browsealternatedatadir -> deactivate ();
1662 }
1663 set_change_status(1);
1664 }
1665
1666 Fl_File_Input *FILEINPUT_alternatedatadir=(Fl_File_Input *)0;
1667
cb_BUTTON_browsealternatedatadir(Fl_Button *,void *)1668 static void cb_BUTTON_browsealternatedatadir(Fl_Button*, void*) {
1669 const char *dirname="\n";
1670 #ifdef __APPLE__
1671 dirname = choosePath(0, 1, 0);
1672 #else
1673 dirname = fl_dir_chooser(gettext("Data Directory?"),"");
1674 fl_file_chooser_callback(0);
1675 #endif
1676 if (dirname != NULL && strlen(dirname) > 0) {
1677 FILEINPUT_alternatedatadir->value(dirname);
1678 WINDOW_tpc->show();
1679 set_change_status(1);
1680 }
1681 }
1682
1683 Fl_Button *BUTTON_browsealternatedatadir=(Fl_Button *)0;
1684
cb_CHECKBUTTON_usecolorfile(Fl_Check_Button *,void *)1685 static void cb_CHECKBUTTON_usecolorfile(Fl_Check_Button*, void*) {
1686 if (CHECKBUTTON_usecolorfile -> value () == 1)
1687 {
1688 FILEINPUT_colorfile -> activate ();
1689 BUTTON_browsecolorfile -> activate ();
1690 }
1691 else
1692 {
1693 FILEINPUT_colorfile -> deactivate ();
1694 BUTTON_browsecolorfile -> deactivate ();
1695 }
1696 set_change_status(1);
1697 }
1698
1699 Fl_File_Input *FILEINPUT_colorfile=(Fl_File_Input *)0;
1700
cb_BUTTON_browsecolorfile(Fl_Button *,void *)1701 static void cb_BUTTON_browsecolorfile(Fl_Button*, void*) {
1702 const char *filename="\n";
1703 #ifdef __APPLE__
1704 filename = choosePath(1, 0, "txt");
1705 #else
1706 filename = fl_file_chooser(gettext("Color Palette File?"),"*.txt","",0);
1707 fl_file_chooser_callback(0);
1708 #endif
1709 if (filename != NULL && strlen(filename) > 0) {
1710 FILEINPUT_colorfile->value(filename);
1711 WINDOW_tpc->show();
1712 set_change_status(1);
1713 }
1714 }
1715
1716 Fl_Button *BUTTON_browsecolorfile=(Fl_Button *)0;
1717
1718 Fl_Button *BUTTON_apply=(Fl_Button *)0;
1719
cb_BUTTON_apply(Fl_Button *,void *)1720 void cb_BUTTON_apply(Fl_Button*, void*) {
1721 apply_settings();
1722 }
1723
cb_BUTTON_reset(Fl_Button *,void *)1724 static void cb_BUTTON_reset(Fl_Button*, void*) {
1725 load_conf();
1726 }
1727
1728 Fl_Button *BUTTON_reset=(Fl_Button *)0;
1729
1730 Fl_Button *BUTTON_defaults=(Fl_Button *)0;
1731 Fl_Button *BUTTON_quit=(Fl_Button *)0;
1732
cb_BUTTON_defaults(Fl_Button *,void *)1733 static void cb_BUTTON_defaults(Fl_Button*, void*) {
1734 CB_SetActualTabToDefaults ();
1735 WINDOW_tpc -> show ();
1736 }
1737
cb_status_chng(Fl_Widget *,void *)1738 static void cb_status_chng(Fl_Widget*, void*) {
1739 set_change_status(1);
1740 }
1741
confirm_exit_cb(Fl_Widget *,void *)1742 void confirm_exit_cb(Fl_Widget *, void *) {
1743 if (status_chng)
1744 {
1745 if (fl_choice(gettext("Quit without applying changes?"),
1746 gettext("&No"), gettext("&Yes"), NULL))
1747 exit(0);
1748 }
1749 else
1750 {
1751 exit(0);
1752 }
1753 }
1754
1755 Fl_Choice *CHOICE_settings=(Fl_Choice *)0;
1756 Fl_Check_Button *CHECKBUTTON_usealluserssettings=(Fl_Check_Button *)0;
1757
cb_CHECKBUTTON_usealluserssettings(Fl_Check_Button *,void *)1758 static void cb_CHECKBUTTON_usealluserssettings(Fl_Check_Button*, void*)
1759 {
1760 if (CHECKBUTTON_usealluserssettings->value() == 0)
1761 {
1762 activate_widgets();
1763 }
1764 else
1765 {
1766 deactivate_widgets();
1767 }
1768 set_change_status(1);
1769 }
1770
cb_CHOICE_settings(Fl_Choice *,void *)1771 static void cb_CHOICE_settings(Fl_Choice*, void*)
1772 {
1773 if (status_chng)
1774 {
1775 const char* user = 0;
1776
1777 CHOICE_settings->value( !(CHOICE_settings->value()) );
1778
1779 switch(CHOICE_settings->value())
1780 {
1781 case (CURRENT_USER):
1782 user = gettext("current user");
1783 break;
1784 case (ALL_USERS):
1785 user = gettext("all users");
1786 break;
1787 }
1788
1789 if (fl_choice(gettext("Apply changes you made to %s?"),
1790 gettext("No"), gettext("Yes"), NULL, user))
1791 {
1792 apply_settings();
1793 }
1794
1795 CHOICE_settings->value( !(CHOICE_settings->value()) );
1796 }
1797
1798 load_conf();
1799 }
1800
Show_TPC_Window()1801 Fl_Double_Window* Show_TPC_Window() {
1802 int boxx, boxy;
1803 int width = 800; //originally was 690
1804 int whalf=width / 2 - 17; //12 whalf 4 whalf 18 = width
1805 Fl_Double_Window* w;
1806 {
1807 Fl_Double_Window* o;
1808 int y = 0;
1809 #ifdef __APPLE__
1810 o = WINDOW_tpc = new Fl_Double_Window(width, 450, gettext("Tux Paint Config v" VER_VERSION));
1811 y = 20; /* vertical offset to account for lack of menu bar at top of window */
1812 #else
1813 o = WINDOW_tpc = new Fl_Double_Window(width - 6, 450, gettext("Tux Paint Config v" VER_VERSION));
1814 #endif
1815 w = o;
1816 o->callback((Fl_Callback*)confirm_exit_cb);
1817
1818 {
1819 Fl_Tabs* o = TAB_alltabs = new Fl_Tabs(5, 30-y, width - 17, 370);
1820 o->box(FL_PLASTIC_UP_BOX);
1821 /* TAB: ABOUT */
1822 { Fl_Group* o = TABE_about = new Fl_Group(5, 64 - y, width - 17, 336, gettext("About"));
1823 o->box(FL_PLASTIC_UP_BOX);
1824 o->color((Fl_Color)132);
1825 o->selection_color((Fl_Color)92);
1826 o->align(37);
1827 boxx = 12;
1828 boxy = 70 - y;
1829 { Fl_Group* o = GROUP_abouttpc = new Fl_Group(boxx, boxy, width - 29, 324, gettext("About Tux Paint Config."));
1830 o->box(FL_PLASTIC_UP_BOX);
1831 o->labeltype(FL_EMBOSSED_LABEL);
1832 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
1833 TEXTOUTPUT_abouttext = new Fl_Text_Display(boxx + 25, boxy + 30, width - 72, 280);
1834 TEXTOUTPUT_abouttext->buffer(TEXTBUFFER_abouttext);
1835
1836 TEXTBUFFER_abouttext->text(gettext(about_text));
1837 TEXTOUTPUT_abouttext->wrap_mode(1, 0);
1838
1839 o->end();
1840 }
1841 o->end();
1842 }
1843
1844 /* TAB: VIDEO / SOUND */
1845 { Fl_Group* o = TABE_videoandsound = new Fl_Group(5, 64-y, width - 17, 336, gettext("Video/Sound"));
1846 o->box(FL_PLASTIC_UP_BOX);
1847 o->color((Fl_Color)1);
1848 o->selection_color((Fl_Color)1);
1849 o->align(37);
1850 boxx = 12;
1851 boxy = 70 - y;
1852 { Fl_Group* o = GROUP_video = new Fl_Group(boxx, boxy, whalf, 324, gettext("Video:"));
1853 o->box(FL_PLASTIC_UP_BOX);
1854 o->labeltype(FL_EMBOSSED_LABEL);
1855 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
1856 { Fl_Check_Button* o = CHECKBUTTON_fullscreen = new Fl_Check_Button(boxx + 12, boxy + 22, whalf - 23, 30, gettext("&Fullscreen"));
1857 o->down_box(FL_DOWN_BOX);
1858 o->shortcut(0x80066);
1859 o->callback((Fl_Callback*)cb_CHECKBUTTON_usefullscreen);
1860 }
1861 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 50, whalf - 23, 36, gettext("Run Tux Paint in fullscreen mode, rather than in a window."));
1862 o->labelfont(FL_ITALIC);
1863 o->labelsize(10);
1864 o->align(197|FL_ALIGN_INSIDE);
1865 }
1866
1867 { Fl_Check_Button* o = CHECKBUTTON_native = new Fl_Check_Button(boxx + 42, boxy + 77, whalf -53, 30, gettext("&Native"));
1868 o->down_box(FL_DOWN_BOX);
1869 o->callback((Fl_Callback*)cb_status_chng);
1870 }
1871 { Fl_Box* o = new Fl_Box(boxx + 42, boxy + 105, whalf - 23, 36, gettext("Use native screen resolution in fullscreen mode."));
1872 o->labelfont(FL_ITALIC);
1873 o->labelsize(10);
1874 o->align(197|FL_ALIGN_INSIDE);
1875 }
1876
1877 { Fl_Choice* o = CHOICE_windowwidth = new Fl_Choice(boxx + 12, boxy + 158, (whalf - 23) / 2, 32, gettext("Window size : "));
1878 o->down_box(FL_BORDER_BOX);
1879 o->align(FL_ALIGN_TOP_LEFT);
1880
1881 int i;
1882 for (i = 0; i < NUM_WINDOW_WIDTHS; i++)
1883 {
1884 o->add(window_widths[i], "", NULL, NULL, 0);
1885 }
1886
1887 o->callback((Fl_Callback*)cb_status_chng);
1888 }
1889 { Fl_Choice* o = CHOICE_windowheight = new Fl_Choice(boxx + whalf / 2, boxy + 158, (whalf - 23) / 2, 32, "");
1890 o->down_box(FL_BORDER_BOX);
1891 o->align(FL_ALIGN_TOP_LEFT);
1892
1893 int i;
1894 for (i = 0; i < NUM_WINDOW_HEIGHTS; i++)
1895 {
1896 o->add(window_heights[i], "", NULL, NULL, 0);
1897 }
1898
1899 o->callback((Fl_Callback*)cb_status_chng);
1900 }
1901 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 192, whalf - 24, 36, gettext("Size of the window, or the resolution in fullscreen."));
1902 o->labelfont(FL_ITALIC);
1903 o->labelsize(10);
1904 o->align(197|FL_ALIGN_INSIDE);
1905 }
1906
1907 { Fl_Check_Button* o = CHECKBUTTON_rotate = new Fl_Check_Button(boxx + 12, boxy + 206, whalf - 24, 32, gettext("&Rotate Orientation"));
1908 o->down_box(FL_DOWN_BOX);
1909 o->callback((Fl_Callback*)cb_status_chng);
1910 }
1911 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 232, whalf - 24, 36, gettext("Swap width and height, to rotate 90 degrees (useful for portrait-display on a tablet PC)"));
1912 o->labelfont(FL_ITALIC);
1913 o->labelsize(10);
1914 o->align(197|FL_ALIGN_INSIDE);
1915 }
1916
1917 { Fl_Check_Button* o = CHECKBUTTON_screensaver = new Fl_Check_Button(boxx + 12, boxy + 262, whalf - 24, 32, gettext("Allow S&creensaver"));
1918 o->down_box(FL_DOWN_BOX);
1919 o->callback((Fl_Callback*)cb_status_chng);
1920 }
1921 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 288, whalf - 24, 36, gettext("Don't disable your system's screensaver while Tux Paint is running."));
1922 o->labelfont(FL_ITALIC);
1923 o->labelsize(10);
1924 o->align(197|FL_ALIGN_INSIDE);
1925 }
1926 o->end();
1927 }
1928 boxx = whalf + 16;
1929 boxy = 70 - y;
1930 { Fl_Group* o = GROUP_sound = new Fl_Group(boxx, boxy, whalf, 150, gettext("Sound:"));
1931 o->box(FL_PLASTIC_UP_BOX);
1932 o->labeltype(FL_EMBOSSED_LABEL);
1933 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
1934 { Fl_Check_Button* o = CHECKBUTTON_soundeffects = new Fl_Check_Button(boxx + 12, boxy + 26, whalf - 23, 30, gettext("Enable &Sound Effects"));
1935 o->down_box(FL_DOWN_BOX);
1936 o->shortcut(0x80073);
1937 o->callback((Fl_Callback*)cb_status_chng);
1938 }
1939 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 56, whalf - 23, 36, gettext("Enable/disable sound effects."));
1940 o->labelfont(FL_ITALIC);
1941 o->labelsize(10);
1942 o->align(197|FL_ALIGN_INSIDE);
1943 }
1944 o->end();
1945 }
1946 // boxx = 344;
1947 boxy = 224 - y;
1948 { Fl_Group* o = GROUP_colorfile = new Fl_Group(boxx, boxy, whalf, 170, gettext("Color Palette File:"));
1949 o->box(FL_PLASTIC_UP_BOX);
1950 o->labeltype(FL_EMBOSSED_LABEL);
1951 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
1952 { Fl_Check_Button* o = CHECKBUTTON_usecolorfile = new Fl_Check_Button(boxx + 12, boxy + 26, whalf - 23, 28, gettext("Use &Alternative Color Palette"));
1953 o->down_box(FL_DOWN_BOX);
1954 o->shortcut(0x80061);
1955 o->callback((Fl_Callback*)cb_CHECKBUTTON_usecolorfile);
1956 }
1957 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 54, whalf - 23, 30, gettext("Don't use default color palette, use colors defined in the following file:"));
1958 o->labelfont(FL_ITALIC);
1959 o->labelsize(10);
1960 o->align(197|FL_ALIGN_INSIDE);
1961 }
1962 { Fl_File_Input* o = FILEINPUT_colorfile = new Fl_File_Input(boxx + 12, boxy + 111, 218, 40, gettext("Color Palette File:"));
1963 o->align(69);
1964 o->deactivate();
1965 o->callback((Fl_Callback*)cb_status_chng);
1966 }
1967 { Fl_Button* o = BUTTON_browsecolorfile = new Fl_Button(boxx + 236, boxy + 111, 77, 29, gettext("Browse..."));
1968 o->shortcut(0x80062);
1969 o->deactivate();
1970 o->callback((Fl_Callback*)cb_BUTTON_browsecolorfile);
1971 }
1972 o->end();
1973 }
1974 o->end();
1975 }
1976
1977 /* TAB: MOUSE / KEYBOARD */
1978 { Fl_Group* o = TABE_mouseandkeyboard = new Fl_Group(5, 64-y, width - 17, 336, gettext("Mouse/Keyboard"));
1979 o->box(FL_PLASTIC_UP_BOX);
1980 o->color((Fl_Color)2);
1981 o->selection_color((Fl_Color)2);
1982 o->align(37);
1983 o->hide();
1984 boxx = 12;
1985 boxy = 70 - y;
1986 { Fl_Group* o = GROUP_mouse = new Fl_Group(boxx, boxy, whalf, 170, gettext("Cursor:"));
1987 o->box(FL_PLASTIC_UP_BOX);
1988 o->labeltype(FL_EMBOSSED_LABEL);
1989 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
1990 { Fl_Check_Button* o = CHECKBUTTON_fancycursorshapes = new Fl_Check_Button(boxx + 12, boxy + 30, whalf - 23, 25, gettext("&Fancy Cursor Shapes"));
1991 o->down_box(FL_DOWN_BOX);
1992 o->shortcut(0x80066);
1993 o->callback((Fl_Callback*)cb_status_chng);
1994 }
1995 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 55, whalf - 23, 45, gettext("Change the shape of the mouse pointer depending on where the mouse is and what you are doing."));
1996 o->labelfont(FL_ITALIC);
1997 o->labelsize(10);
1998 o->align(197|FL_ALIGN_INSIDE);
1999 }
2000
2001 { Fl_Check_Button* o = CHECKBUTTON_hidecursor = new Fl_Check_Button(boxx + 12, boxy + 100, whalf - 23, 25, gettext("&Hide Cursor"));
2002 o->down_box(FL_DOWN_BOX);
2003 o->shortcut(0x80066);
2004 o->callback((Fl_Callback*)cb_status_chng);
2005 }
2006 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 125, whalf - 23, 45, gettext("Completely hides cursor (useful on touchscreen devices)."));
2007 o->labelfont(FL_ITALIC);
2008 o->labelsize(10);
2009 o->align(197|FL_ALIGN_INSIDE);
2010 }
2011 o->end();
2012 }
2013 boxx = 12;
2014 boxy = 244 + y;
2015 { Fl_Group* o = GROUP_keyboard = new Fl_Group(boxx, boxy, whalf, 150, gettext("Keyboard:"));
2016 o->box(FL_PLASTIC_UP_BOX);
2017 o->labeltype(FL_EMBOSSED_LABEL);
2018 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2019 { Fl_Check_Button* o = CHECKBUTTON_enablekbd = new Fl_Check_Button(boxx + 12, boxy + 26, whalf - 23, 30, gettext("Enable &Keyboard Shortcuts"));
2020 o->down_box(FL_DOWN_BOX);
2021 o->shortcut(0x8006b);
2022 o->callback((Fl_Callback*)cb_status_chng);
2023 }
2024 { Fl_Box* o = new Fl_Box(boxx+12, boxy + 51, whalf - 23, 54, gettext("Allows key combinations to be used as shortcuts for certain commands. (e.g., Control+S to Save)"));
2025 o->labelfont(FL_ITALIC);
2026 o->labelsize(10);
2027 o->align(197|FL_ALIGN_INSIDE);
2028 }
2029
2030 /* FIXME: Add on-screen keyboard option -bjk 2011.04.15 */
2031 /* FIXME: Add keymouse option -bjk 2011.04.15 */
2032 o->end();
2033 }
2034 boxx = whalf + 16;
2035 boxy = 70 - y;
2036 { Fl_Group* o = GROUP_keyboard = new Fl_Group(boxx, boxy, whalf, 324, gettext("Mouse:"));
2037 o->box(FL_PLASTIC_UP_BOX);
2038 o->labeltype(FL_EMBOSSED_LABEL);
2039 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2040 { Fl_Check_Button* o = CHECKBUTTON_grabmousepointer = new Fl_Check_Button(boxx + 12, boxy + 30, whalf - 23, 25, gettext("&Grab Mouse Pointer"));
2041 o->down_box(FL_DOWN_BOX);
2042 o->shortcut(0x80067);
2043 o->callback((Fl_Callback*)cb_status_chng);
2044 }
2045 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 55, whalf - 23, 30, gettext("Prevents the mouse pointer from leaving the Tux Paint window."));
2046 o->labelfont(FL_ITALIC);
2047 o->labelsize(10);
2048 o->align(197|FL_ALIGN_INSIDE);
2049 }
2050 { Fl_Check_Button* o = CHECKBUTTON_mousewheelsupport = new Fl_Check_Button(boxx + 12, boxy + 110, whalf - 23, 25, gettext("Mouse &Wheel Support"));
2051 o->down_box(FL_DOWN_BOX);
2052 o->shortcut(0x80077);
2053 o->callback((Fl_Callback*)cb_status_chng);
2054 }
2055 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 135, whalf - 23, 30, gettext("Allows a mouse wheel to be used to scroll through items. (e.g., brushes, stamps)"));
2056 o->labelfont(FL_ITALIC);
2057 o->labelsize(10);
2058 o->align(197|FL_ALIGN_INSIDE);
2059 }
2060 { Fl_Check_Button* o = CHECKBUTTON_nobuttondistinction = new Fl_Check_Button(boxx + 12, boxy + 190, whalf - 23, 25, gettext("No &Button Distinction"));
2061 o->down_box(FL_DOWN_BOX);
2062 o->callback((Fl_Callback*)cb_status_chng);
2063 }
2064 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 215, whalf - 23, 30, gettext("Allows middle and right mouse buttons to be used for clicking, too."));
2065 o->labelfont(FL_ITALIC);
2066 o->labelsize(10);
2067 o->align(197|FL_ALIGN_INSIDE);
2068 }
2069 /* FIXME: Add 'mouse-accessibilty' (click/release/move/click/release instead of click/drag/release) -bjk 2011.04.15 */
2070 o->end();
2071 }
2072 o->end();
2073 }
2074
2075 /* TAB: SIMPLIFCIATION */
2076 /* FIXME: From here on, not using 'boxx/boxy' trick, used above -bjk 2011.04.15 */
2077 { Fl_Group* o = TABE_simplification = new Fl_Group(5, 64-y, width - 17, 336, gettext("Simplification"));
2078 o->box(FL_PLASTIC_UP_BOX);
2079 o->color((Fl_Color)3);
2080 o->selection_color((Fl_Color)3);
2081 o->align(37);
2082 o->hide();
2083 boxx = 12;
2084 boxy = 70 - y;
2085 { Fl_Group* o = GROUP_interfacesimpl = new Fl_Group(boxx, boxy, whalf, 250, gettext("Interface Simplification:"));
2086 o->box(FL_PLASTIC_UP_BOX);
2087 o->labeltype(FL_EMBOSSED_LABEL);
2088 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2089 { Fl_Check_Button* o = CHECKBUTTON_disableshaperotation = new Fl_Check_Button(boxx + 12, boxy + 26, whalf - 23, 30, gettext("Disable Shape &Rotation"));
2090 o->down_box(FL_DOWN_BOX);
2091 o->shortcut(0x80072);
2092 o->callback((Fl_Callback*)cb_status_chng);
2093 }
2094 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 56, whalf - 23, 54, gettext("Shape tool's rotation step is disabled. Useful for younger children."));
2095 o->labelfont(FL_ITALIC);
2096 o->labelsize(10);
2097 o->align(197|FL_ALIGN_INSIDE);
2098 }
2099 { Fl_Check_Button* o = CHECKBUTTON_simpleshapeoutlines = new Fl_Check_Button(boxx + 12, boxy + 95, whalf - 23, 30, gettext("Simple Stamp &Outlines"));
2100 o->down_box(FL_DOWN_BOX);
2101 o->shortcut(0x8006f);
2102 o->callback((Fl_Callback*)cb_status_chng);
2103 }
2104 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 125, whalf - 23, 54, gettext("Draw a rectangle around the cursor when placing stamps, rather than a detailed outline. (For slow computers and thin clients.)"));
2105 o->labelfont(FL_ITALIC);
2106 o->labelsize(10);
2107 o->align(197|FL_ALIGN_INSIDE);
2108 }
2109 { Fl_Check_Button* o = CHECKBUTTON_showuppercasetextonly = new Fl_Check_Button(boxx + 12, boxy + 164, whalf - 23, 30, gettext("Show &Uppercase Text Only"));
2110 o->down_box(FL_DOWN_BOX);
2111 o->shortcut(0x80075);
2112 o->callback((Fl_Callback*)cb_status_chng);
2113 }
2114 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 194, whalf - 23, 54, gettext("Cause all text in Tux Paint (button labels, dialogs, etc.) to appear in UPPERCASE rather than Mixed Case."));
2115 o->labelfont(FL_ITALIC);
2116 o->labelsize(10);
2117 o->align(197|FL_ALIGN_INSIDE);
2118 }
2119 o->end();
2120 }
2121 boxx = 12;
2122 boxy = 324 - y;
2123 { Fl_Group* o = GROUP_stampsize = new Fl_Group(boxx, boxy, whalf, 70, gettext("Initial Stamp Size:"));
2124 o->box(FL_PLASTIC_UP_BOX);
2125 o->labeltype(FL_EMBOSSED_LABEL);
2126 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2127 { Fl_Slider* o = SLIDER_stampsize = new Fl_Slider(boxx + 24, boxy + 28, 280, 20, "");
2128 o->type(FL_HORIZONTAL);
2129 o->range(-1, 10);
2130 o->value(-1);
2131 o->slider_size(0.1);
2132 o->label(gettext("Default (no override)")); //FIXME Clean that text before applying the new text WHERE?
2133 o->labelsize(10);
2134 o->callback((Fl_Callback*)cb_SLIDER_stampsize);
2135 }
2136 o->end();
2137 }
2138 boxx = whalf + 16;
2139 boxy = 70 - y;
2140 { Fl_Group* o = GROUP_controlsimpl = new Fl_Group(boxx, boxy, whalf, 324, gettext("Control Simplification:"));
2141 o->box(FL_PLASTIC_UP_BOX);
2142 o->labeltype(FL_EMBOSSED_LABEL);
2143 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2144 { Fl_Check_Button* o = CHECKBUTTON_disablequitbutton = new Fl_Check_Button(boxx + 12, boxy + 28, whalf - 23, 30, gettext("Disable \'&Quit\' Button and [Escape] key"));
2145 o->down_box(FL_DOWN_BOX);
2146 o->shortcut(0x80071);
2147 o->callback((Fl_Callback*)cb_status_chng);
2148 }
2149 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 53, whalf - 23, 54, gettext("Clicking the window\'s close (X) button in the title bar, or pressing [Alt]+[F4] or [Shift]+[Ctrl]+[Escape] will still quit Tux Paint."));
2150 o->labelfont(FL_ITALIC);
2151 o->labelsize(10);
2152 o->align(197|FL_ALIGN_INSIDE);
2153 }
2154 { Fl_Check_Button* o = CHECKBUTTON_disablestampstool = new Fl_Check_Button(boxx + 12, boxy + 86, whalf - 23, 30, gettext("Disable \'&Stamps\' Tool"));
2155 o->down_box(FL_DOWN_BOX);
2156 o->shortcut(0x80073);
2157 o->callback((Fl_Callback*)cb_status_chng);
2158 }
2159 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 111, whalf - 23, 54, gettext("Do not load stamps at startup, thus disabling the Stamps tool."));
2160 o->labelfont(FL_ITALIC);
2161 o->labelsize(10);
2162 o->align(197|FL_ALIGN_INSIDE);
2163 }
2164 { Fl_Check_Button* o = CHECKBUTTON_disablestampcontrols = new Fl_Check_Button(boxx + 12, boxy + 144, whalf - 23, 30, gettext("Disable Stamp &Controls"));
2165 o->down_box(FL_DOWN_BOX);
2166 o->shortcut(0x80063);
2167 o->callback((Fl_Callback*)cb_status_chng);
2168 }
2169 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 169, whalf - 23, 54, gettext("Simplify the \'Stamps\' tool by removing the stamp control buttons (Shrink, Grow, Mirror and Flip)."));
2170 o->labelfont(FL_ITALIC);
2171 o->labelsize(10);
2172 o->align(197|FL_ALIGN_INSIDE);
2173 }
2174 { Fl_Check_Button* o = CHECKBUTTON_disablemagiccontrols = new Fl_Check_Button(boxx + 12, boxy + 202, whalf - 23, 30, gettext("Disable &Magic Controls"));
2175 o->down_box(FL_DOWN_BOX);
2176 o->shortcut(0x80063);
2177 o->callback((Fl_Callback*)cb_status_chng);
2178 }
2179 { Fl_Box* o = new Fl_Box(boxx + 12, boxy + 227, whalf - 23, 54, gettext("Simplify the \'Magic\' tools by removing the buttons to switch between paint and fullscreen modes."));
2180 o->labelfont(FL_ITALIC);
2181 o->labelsize(10);
2182 o->align(197|FL_ALIGN_INSIDE);
2183 }
2184 { Fl_Check_Button* o = CHECKBUTTON_disablelabeltool = new Fl_Check_Button(boxx + 12, boxy + 260, whalf - 23, 30, gettext("Disable '&Label' Tool"));
2185 o->down_box(FL_DOWN_BOX);
2186 o->shortcut(0x80063);
2187 o->callback((Fl_Callback*)cb_status_chng);
2188 }
2189 { Fl_Box* o = new Fl_Box(boxx + 12, boxy+285, whalf - 23, 54, gettext("Disable the \'Label\' text-entry tool (leaving only the \'Text\' tool)."));
2190 o->labelfont(FL_ITALIC);
2191 o->labelsize(10);
2192 o->align(197|FL_ALIGN_INSIDE);
2193 }
2194 o->end();
2195 }
2196 o->end();
2197 }
2198
2199 /* TAB: LANGUAGES */
2200 { Fl_Group* o = TABE_locale = new Fl_Group(5, 64-y, width - 17, 336, gettext("Languages"));
2201 o->box(FL_PLASTIC_UP_BOX);
2202 o->color((Fl_Color)4);
2203 o->selection_color((Fl_Color)4);
2204 o->align(37);
2205 o->hide();
2206 { Fl_Group* o = GROUP_locale = new Fl_Group(12, 70-y, whalf, 324, gettext("Language:"));
2207 o->box(FL_PLASTIC_UP_BOX);
2208 o->labeltype(FL_EMBOSSED_LABEL);
2209 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2210 { Fl_Choice* o = CHOICE_language = new Fl_Choice(20, 138-y, whalf - 23, 32, gettext("Language : "));
2211 o->down_box(FL_BORDER_BOX);
2212 o->align(FL_ALIGN_TOP_LEFT);
2213 /* FIXME: Perhaps we can load these from Tux Paint itself using
2214 a special command-line option? */
2215 /* FIXME: The labels should all be wrapped in 'gettext()' calls */
2216
2217 int i;
2218 for (i = 0; i < NUM_LANGS; i++)
2219 {
2220 o->add(langs[i][LANG_NAME], "", NULL, NULL, 0);
2221 }
2222
2223 o->callback((Fl_Callback*)cb_status_chng);
2224 }
2225 { Fl_Box* o = new Fl_Box(20, 182-y, whalf - 23, 54, gettext("Run Tux Paint in a particular language (overriding system's settings)."));
2226 o->labelfont(FL_ITALIC);
2227 o->labelsize(10);
2228 o->align(197|FL_ALIGN_INSIDE);
2229 }
2230 { Fl_Check_Button* o = CHECKBUTTON_mirrorstamps = new Fl_Check_Button(20, 228-y, whalf - 23, 32, gettext("&Mirror Stamps"));
2231 o->down_box(FL_DOWN_BOX);
2232 o->shortcut(0x8006d);
2233 o->callback((Fl_Callback*)cb_status_chng);
2234 }
2235 { Fl_Box* o = new Fl_Box(20, 258-y, whalf - 23, 54, gettext("Automatically mirror-image all mirror-able stamps. Useful for users who prefer things appearing right-to-left."));
2236 o->labelfont(FL_ITALIC);
2237 o->labelsize(10);
2238 o->align(197|FL_ALIGN_INSIDE);
2239 }
2240 o->end();
2241 }
2242
2243 boxx = whalf + 16;
2244 { Fl_Group* o = GROUP_locale = new Fl_Group(boxx, 70-y, whalf, 324, gettext("Fonts:"));
2245 o->box(FL_PLASTIC_UP_BOX);
2246 o->labeltype(FL_EMBOSSED_LABEL);
2247 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2248 { Fl_Check_Button* o = CHECKBUTTON_loadsystemfonts = new Fl_Check_Button(boxx + 12, 138-y, whalf - 23, 28, gettext("Load System &Fonts"));
2249 o->down_box(FL_DOWN_BOX);
2250 o->value(0);
2251 o->callback((Fl_Callback*)cb_status_chng);
2252 }
2253 { Fl_Box* o = new Fl_Box(boxx + 12, 168-y, whalf - 23, 54, gettext("Attempt to load more fonts, found elsewhere on your computer. (Note: may cause instability!)"));
2254 o->labelfont(FL_ITALIC);
2255 o->labelsize(10);
2256 o->align(197|FL_ALIGN_INSIDE);
2257 }
2258 { Fl_Check_Button* o = CHECKBUTTON_alllocalefonts = new Fl_Check_Button(boxx + 12, 228-y, whalf - 23, 28, gettext("Load All &Locale Fonts"));
2259 o->down_box(FL_DOWN_BOX);
2260 o->value(0);
2261 o->callback((Fl_Callback*)cb_status_chng);
2262 }
2263 { Fl_Box* o = new Fl_Box(boxx + 12, 258-y, whalf - 23, 54, gettext("Load all locale-specific fonts installed in Tux Paint, regardless of the locale Tux Paint is being run under."));
2264 o->labelfont(FL_ITALIC);
2265 o->labelsize(10);
2266 o->align(197|FL_ALIGN_INSIDE);
2267 }
2268 o->end();
2269 }
2270 o->end();
2271 }
2272
2273 /* TAB: PRINTING */
2274 { Fl_Group* o = TABE_printing = new Fl_Group(5, 64-y, width - 17, 336, gettext("Printing"));
2275 o->box(FL_PLASTIC_UP_BOX);
2276 o->color((Fl_Color)5);
2277 o->selection_color((Fl_Color)5);
2278 o->align(37);
2279 o->hide();
2280 { Fl_Group* o = GROUP_printperms = new Fl_Group(12, 70-y, whalf, 150, gettext("Print Permissions:"));
2281 o->box(FL_PLASTIC_UP_BOX);
2282 o->labeltype(FL_EMBOSSED_LABEL);
2283 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2284 { Fl_Check_Button* o = CHECKBUTTON_allowprinting = new Fl_Check_Button(24, 95-y, whalf - 23, 24, gettext("Allow &Printing"));
2285 o->down_box(FL_DOWN_BOX);
2286 o->shortcut(0x80070);
2287 o->callback((Fl_Callback*)cb_status_chng);
2288 }
2289 { Fl_Box* o = new Fl_Box(24, 115-y, whalf - 23, 40, gettext("Let users print from within Tux Paint."));
2290 o->labelfont(FL_ITALIC);
2291 o->labelsize(10);
2292 o->align(197|FL_ALIGN_INSIDE);
2293 }
2294 { Fl_Value_Input* o = VALUEINPUT_printdelay = new Fl_Value_Input(24, 152-y, 50, 29, gettext("Print Delay : "));
2295 o->maximum(3600);
2296 o->step(1);
2297 o->align(FL_ALIGN_TOP_LEFT);
2298 o->callback((Fl_Callback*)cb_status_chng);
2299 }
2300 { Fl_Box* o = LABEL_seconds = new Fl_Box(81, 152-y, 244, 29, gettext("seconds"));
2301 o->box(FL_FLAT_BOX);
2302 o->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
2303 }
2304 { Fl_Box* o = new Fl_Box(24, 182-y, whalf - 23, 40, gettext("Restrict printing to once every N seconds. (Enter '0' to allow unrestricted printing.)"));
2305 o->labelfont(FL_ITALIC);
2306 o->labelsize(10);
2307 o->align(197|FL_ALIGN_INSIDE);
2308 }
2309 o->end();
2310 }
2311
2312 { Fl_Group* o = GROUP_printperms = new Fl_Group(12, 223-y, whalf, 123, gettext("Show Printer Dialog:"));
2313 o->box(FL_PLASTIC_UP_BOX);
2314 o->labeltype(FL_EMBOSSED_LABEL);
2315 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2316
2317 { Fl_Round_Button* o = ROUNDBUTTON_printdialogmod = new Fl_Round_Button(24, 249-y, whalf - 23, 24, gettext("Only when [Alt] &modifier key is held"));
2318 o->type(102);
2319 o->down_box(FL_ROUND_DOWN_BOX);
2320 o->shortcut(0x80061);
2321 o->callback((Fl_Callback*)cb_status_chng);
2322 }
2323
2324 { Fl_Round_Button* o = ROUNDBUTTON_printdialogalways = new Fl_Round_Button(24, 272-y, whalf - 23, 24, gettext("Always &show printer dialog"));
2325 o->type(102);
2326 o->down_box(FL_ROUND_DOWN_BOX);
2327 o->shortcut(0x80061);
2328 o->callback((Fl_Callback*)cb_status_chng);
2329 }
2330
2331 { Fl_Round_Button* o = ROUNDBUTTON_printdialognever = new Fl_Round_Button(24, 295-y, whalf - 23, 24, gettext("&Never show printer dialog"));
2332 o->type(102);
2333 o->down_box(FL_ROUND_DOWN_BOX);
2334 o->shortcut(0x80061);
2335 o->callback((Fl_Callback*)cb_status_chng);
2336 }
2337
2338 { Fl_Box* o = new Fl_Box(24, 320-y, whalf - 23, 24, gettext("(Even when [Alt] is held.)"));
2339 o->labelfont(FL_ITALIC);
2340 o->labelsize(10);
2341 o->align(197|FL_ALIGN_INSIDE);
2342 }
2343
2344 o->end();
2345 }
2346
2347 { Fl_Group* o = GROUP_printcfg = new Fl_Group(12, 349-y, whalf, 45, "");
2348 o->box(FL_PLASTIC_UP_BOX);
2349 o->labeltype(FL_EMBOSSED_LABEL);
2350 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2351
2352 { Fl_Check_Button* o = CHECKBUTTON_printcfg = new Fl_Check_Button(24, 360-y, whalf - 23, 24, gettext("Save printer configuration"));
2353 o->down_box(FL_DOWN_BOX);
2354 o->callback((Fl_Callback*)cb_status_chng);
2355 }
2356
2357 o->end();
2358 }
2359
2360 boxx=whalf + 16;
2361 { Fl_Group* o = GROUP_printcmd = new Fl_Group(boxx, 70-y, whalf, 324, gettext("Print Commands:"));
2362 o->box(FL_PLASTIC_UP_BOX);
2363 o->labeltype(FL_EMBOSSED_LABEL);
2364 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2365 { Fl_Check_Button* o = CHECKBUTTON_usealtprintcmd = new Fl_Check_Button(boxx + 12, 95-y, whalf - 23, 24, gettext("Use &Alternative Print Command"));
2366 o->down_box(FL_DOWN_BOX);
2367 o->shortcut(0x80061);
2368 o->callback((Fl_Callback*)cb_CHECKBUTTON_usealtprintcmd);
2369 }
2370 { Fl_Box* o = new Fl_Box(boxx + 12, 115-y, whalf - 23, 48, gettext("Override Tux Paint's default setting for print command ('lpr') with another. (Advanced! Unix/Linux only!)"));
2371 o->labelfont(FL_ITALIC);
2372 o->labelsize(10);
2373 o->align(197|FL_ALIGN_INSIDE);
2374 }
2375 { Fl_Input* o = TEXTINPUT_printcmd = new Fl_Input(boxx + 12, 145-y, whalf - 23, 29, "");
2376 o->align(FL_ALIGN_TOP_LEFT);
2377 o->deactivate();
2378 o->callback((Fl_Callback*)cb_status_chng);
2379 }
2380 { Fl_Box* o = new Fl_Box(boxx + 12, 175-y, whalf - 23, 48, gettext("Enter the command for printing. It must accept a PostScript format on its standard input (STDIN)."));
2381 o->labelfont(FL_ITALIC);
2382 o->labelsize(10);
2383 o->align(197|FL_ALIGN_INSIDE);
2384 }
2385 o->end();
2386
2387
2388 o->box(FL_PLASTIC_UP_BOX);
2389 o->labeltype(FL_EMBOSSED_LABEL);
2390 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2391 { Fl_Check_Button* o = CHECKBUTTON_usealtprintdia = new Fl_Check_Button(boxx + 12, 215-y, whalf - 23, 24, gettext("Use &Alternative Print Dialog"));
2392 o->down_box(FL_DOWN_BOX);
2393 o->shortcut(0x80061);
2394 o->callback((Fl_Callback*)cb_CHECKBUTTON_usealtprintdia);
2395 }
2396 { Fl_Box* o = new Fl_Box(boxx + 12, 235-y, whalf - 23, 48, gettext("Override Tux Paint's default setting for print dialog ('kprinter') with another. (Advanced! Unix/Linux only!)"));
2397 o->labelfont(FL_ITALIC);
2398 o->labelsize(10);
2399 o->align(197|FL_ALIGN_INSIDE);
2400 }
2401 { Fl_Input* o = TEXTINPUT_printdia = new Fl_Input(boxx + 12, 265-y, whalf - 23, 29, "");
2402 o->align(FL_ALIGN_TOP_LEFT);
2403 o->deactivate();
2404 o->callback((Fl_Callback*)cb_status_chng);
2405 }
2406 { Fl_Box* o = new Fl_Box(boxx + 12, 295-y, whalf - 23, 48, gettext("Enter the print dialog command. It must accept a PostScript format on its standard input (STDIN)."));
2407 o->labelfont(FL_ITALIC);
2408 o->labelsize(10);
2409 o->align(197|FL_ALIGN_INSIDE);
2410 }
2411
2412 #if USE_PAPERSIZES
2413 { Fl_Choice* o = CHOICE_papersize = new Fl_Choice(boxx + 12, 355-y, whalf - 23, 29, gettext("Paper Size : "));
2414 o->down_box(FL_BORDER_BOX);
2415 o->align(FL_ALIGN_TOP_LEFT);
2416
2417 int i;
2418 for (i = 0; i < num_papersizes; i++)
2419 {
2420 o->add(papersizes[i], "", NULL, NULL, 0);
2421 }
2422 o->align(FL_ALIGN_TOP_LEFT);
2423 o->deactivate();
2424 o->callback((Fl_Callback*)cb_status_chng);
2425 }
2426 #endif
2427 o->end();
2428 }
2429
2430 o->end();
2431 }
2432
2433 /* TAB: SAVING */
2434 { Fl_Group* o = TABE_saving = new Fl_Group(5, 64-y, width - 17, 336, gettext("Saving"));
2435 o->box(FL_PLASTIC_UP_BOX);
2436 o->color((Fl_Color)6);
2437 o->selection_color((Fl_Color)6);
2438 o->align(37);
2439 o->hide();
2440
2441 { Fl_Group* o = GROUP_saveover = new Fl_Group(12, 70-y, whalf, 235, gettext("Save Over Earlier Work:"));
2442 o->box(FL_PLASTIC_UP_BOX);
2443 o->labeltype(FL_EMBOSSED_LABEL);
2444 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2445 { Fl_Round_Button* o = ROUNDBUTTON_askbeforeoverwriting = new Fl_Round_Button(24, 96-y, whalf - 23, 28, gettext("&Ask Before Overwriting"));
2446 o->type(102);
2447 o->down_box(FL_ROUND_DOWN_BOX);
2448 o->callback((Fl_Callback*)cb_status_chng);
2449 }
2450 { Fl_Box* o = new Fl_Box(24, 125-y, whalf - 23, 30, gettext("When re-saving an image, ask whether to overwrite the earlier version, or make a new file."));
2451 o->labelfont(FL_ITALIC);
2452 o->labelsize(10);
2453 o->align(197|FL_ALIGN_INSIDE);
2454 }
2455 { Fl_Round_Button* o = ROUNDBUTTON_alwaysoverwriteolderversion = new Fl_Round_Button(24, 160-y, whalf - 23, 28, gettext("Always &Overwrite Older Version"));
2456 o->type(102);
2457 o->down_box(FL_ROUND_DOWN_BOX);
2458 o->callback((Fl_Callback*)cb_status_chng);
2459 }
2460 { Fl_Box* o = new Fl_Box(24, 189-y, whalf - 23, 30, gettext("When re-saving an image, always overwrite the earlier version. (Warning: Potential for lost work!)"));
2461 o->labelfont(FL_ITALIC);
2462 o->labelsize(10);
2463 o->align(197|FL_ALIGN_INSIDE);
2464 }
2465 { Fl_Round_Button* o = ROUNDBUTTON_alwayssavenewpicture = new Fl_Round_Button(24, 224-y, whalf - 23, 28, gettext("Always Save &New Picture"));
2466 o->type(102);
2467 o->down_box(FL_ROUND_DOWN_BOX);
2468 o->callback((Fl_Callback*)cb_status_chng);
2469 }
2470 { Fl_Box* o = new Fl_Box(24, 253-y, whalf - 23, 30, gettext("When re-saving an image, always make a new file. (Warning: Potential for lots of files!)"));
2471 o->labelfont(FL_ITALIC);
2472 o->labelsize(10);
2473 o->align(197|FL_ALIGN_INSIDE);
2474 }
2475 o->end();
2476 }
2477 { Fl_Group* o = GROUP_startblank = new Fl_Group(12, 309-y, whalf, 85, gettext("Start Blank:"));
2478 o->box(FL_PLASTIC_UP_BOX);
2479 o->labeltype(FL_EMBOSSED_LABEL);
2480 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2481 {
2482 Fl_Check_Button* o = CHECKBUTTON_startblank = new Fl_Check_Button(24, 340-y, whalf - 23, 28, gettext("Start with &Blank Canvas"));
2483 o->down_box(FL_DOWN_BOX);
2484 o->callback((Fl_Callback*)cb_status_chng);
2485 }
2486 /* FIXME: Add some descriptive text */
2487 o->end();
2488 }
2489
2490 boxx = whalf + 16;
2491 { Fl_Group* o = GROUP_savedir = new Fl_Group(boxx, 70-y, whalf, 160, gettext("Save Directory:"));
2492 o->box(FL_PLASTIC_UP_BOX);
2493 o->labeltype(FL_EMBOSSED_LABEL);
2494 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2495 { Fl_Check_Button* o = CHECKBUTTON_usealternatesavedir = new Fl_Check_Button(boxx + 12, 96-y, whalf - 23, 28, gettext("Use &Alternative Save Directory"));
2496 o->down_box(FL_DOWN_BOX);
2497 o->shortcut(0x80061);
2498 o->callback((Fl_Callback*)cb_CHECKBUTTON_usealternatesavedir);
2499 }
2500 { Fl_Box* o = new Fl_Box(boxx + 12, 124-y, whalf - 23, 30, gettext("Do not save pictures in the standard directory, use the following location:"));
2501 o->labelfont(FL_ITALIC);
2502 o->labelsize(10);
2503 o->align(197|FL_ALIGN_INSIDE);
2504 }
2505 { Fl_File_Input* o = FILEINPUT_alternatesavedir = new Fl_File_Input(boxx + 12, 180-y, (whalf - 24) * 218 / 300, 40, gettext("Alternative Save Directory:"));
2506 o->align(69);
2507 o->deactivate();
2508 o->callback((Fl_Callback*)cb_status_chng);
2509 }
2510 { Fl_Button* o = BUTTON_browsealternatesavedir = new Fl_Button(boxx + 12 + 6 + (whalf - 24) * 218 / 300, 191-y, (whalf - 24) * 77 / 300, 29, gettext("Browse..."));
2511 o->shortcut(0x80062);
2512 o->deactivate();
2513 o->callback((Fl_Callback*)cb_BUTTON_browsealternatesavedir);
2514 }
2515 o->end();
2516 }
2517 { Fl_Group* o = GROUP_nosave = new Fl_Group(boxx, 234-y, whalf, 160, gettext("More Saving Options:"));
2518 o->box(FL_PLASTIC_UP_BOX);
2519 o->labeltype(FL_EMBOSSED_LABEL);
2520 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2521
2522 { Fl_Check_Button* o = CHECKBUTTON_disablesavebutton = new Fl_Check_Button(boxx + 12, 260-y, whalf - 23, 28, gettext("Disable \'&Save\' Button"));
2523 o->down_box(FL_DOWN_BOX);
2524 o->shortcut(0x80071);
2525 o->callback((Fl_Callback*)cb_status_chng);
2526 }
2527 { Fl_Box* o = new Fl_Box(boxx + 12, 285-y, whalf - 23, 54, gettext("Don't allow pictures to be saved. Tux Paint acts as temporary \'scratch paper.\'"));
2528 o->labelfont(FL_ITALIC);
2529 o->labelsize(10);
2530 o->align(197|FL_ALIGN_INSIDE);
2531 }
2532
2533 { Fl_Check_Button* o = CHECKBUTTON_autosave = new Fl_Check_Button(boxx + 12, 320-y, whalf - 23, 28, gettext("&Auto-save on Quit"));
2534 o->down_box(FL_DOWN_BOX);
2535 o->shortcut(0x80071);
2536 o->callback((Fl_Callback*)cb_status_chng);
2537 }
2538 { Fl_Box* o = new Fl_Box(boxx + 12, 345-y, whalf - 23, 54, gettext("Don't ask to save current picture when quitting; just save."));
2539 o->labelfont(FL_ITALIC);
2540 o->labelsize(10);
2541 o->align(197|FL_ALIGN_INSIDE);
2542 }
2543
2544 o->end();
2545 }
2546 o->end();
2547 }
2548
2549 /* TAB: DATA */
2550 { Fl_Group* o = TABE_data = new Fl_Group(5, 64-y, width - 17, 336, gettext("Data"));
2551 o->box(FL_PLASTIC_UP_BOX);
2552 o->color((Fl_Color)7);
2553 o->selection_color((Fl_Color)7);
2554 o->align(37);
2555 o->hide();
2556
2557 /* FIXME: Looks awful: */
2558 { Fl_Group* o = GROUP_lockfile = new Fl_Group(12, 70-y, whalf, 160, gettext("Lockfile:"));
2559 o->box(FL_PLASTIC_UP_BOX);
2560 o->labeltype(FL_EMBOSSED_LABEL);
2561 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2562 { Fl_Check_Button* o = CHECKBUTTON_nolockfile = new Fl_Check_Button(22, 96-y, whalf - 23, 28, gettext("&Don't use lockfile"));
2563 o->down_box(FL_DOWN_BOX);
2564 o->callback((Fl_Callback*)cb_status_chng);
2565 }
2566 { Fl_Box* o = new Fl_Box(24, 124-y, whalf - 23, 50, gettext("Do not check for a lockfile. Allow Tux Paint to be launched multiple times. (May be necessary in a networked environment.)"));
2567 o->labelfont(FL_ITALIC);
2568 o->labelsize(10);
2569 o->align(197|FL_ALIGN_INSIDE);
2570 }
2571 o->end();
2572 }
2573
2574 /* FIXME: Looks awful: */
2575 boxx = whalf + 16;
2576 { Fl_Group* o = GROUP_datadir = new Fl_Group(boxx, 70-y, whalf, 160, gettext("Data Directory:"));
2577 o->box(FL_PLASTIC_UP_BOX);
2578 o->labeltype(FL_EMBOSSED_LABEL);
2579 o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
2580 { Fl_Check_Button* o = CHECKBUTTON_usealternatedatadir = new Fl_Check_Button(boxx + 12, 96-y, whalf - 23, 28, gettext("Use &Alternative Data Directory"));
2581 o->down_box(FL_DOWN_BOX);
2582 o->shortcut(0x80061);
2583 o->callback((Fl_Callback*)cb_CHECKBUTTON_usealternatedatadir);
2584 }
2585 { Fl_Box* o = new Fl_Box(boxx + 12, 124-y, whalf - 23, 30, gettext("Do not load brushes, stamps, etc. from the standard directory, use the following location:"));
2586 o->labelfont(FL_ITALIC);
2587 o->labelsize(10);
2588 o->align(197|FL_ALIGN_INSIDE);
2589 }
2590 { Fl_File_Input* o = FILEINPUT_alternatedatadir = new Fl_File_Input(boxx + 12, 180-y, (whalf - 24) * 218 / 300, 40, gettext("Alternative Data Directory:"));
2591 o->align(69);
2592 o->deactivate();
2593 o->callback((Fl_Callback*)cb_status_chng);
2594 }
2595 { Fl_Button* o = BUTTON_browsealternatedatadir = new Fl_Button(boxx + 12 + 6 + (whalf - 24) * 218 / 300, 191-y, (whalf - 24) * 77 / 300, 29, gettext("Browse..."));
2596 o->shortcut(0x80062);
2597 o->deactivate();
2598 o->callback((Fl_Callback*)cb_BUTTON_browsealternatedatadir);
2599 }
2600 o->end();
2601 }
2602 o->end();
2603
2604
2605 }
2606
2607
2608
2609
2610
2611
2612 { Fl_Group* o = TABE_accessibility = new Fl_Group(5, 64 - y, width - 17 , 336, gettext("Accessibility"));
2613 o->box(FL_PLASTIC_UP_BOX);
2614 o->color((Fl_Color)93);
2615 o->selection_color((Fl_Color)93);
2616 o->align(Fl_Align(37));
2617 boxx = 12;
2618 { Fl_Group* o = new Fl_Group(boxx, 70, whalf, 150, gettext("Mouse:"));
2619 o->box(FL_PLASTIC_UP_BOX);
2620 o->labeltype(FL_EMBOSSED_LABEL);
2621 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2622 { Fl_Check_Button* o = CHECKBUTTON_mouse_accessibility = new Fl_Check_Button(boxx + 12, 100, whalf - 23, 30, gettext("Sticky mouse clicks"));
2623 o->down_box(FL_DOWN_BOX);
2624 o->callback((Fl_Callback*)cb_status_chng);
2625 } // Fl_Check_Button* o
2626 { Fl_Box* o = new Fl_Box(boxx + 12, 130, whalf - 23, 90, gettext("Useful for users who have difficulty clicking and dragging. When enabled, click and release to start painting, move to paint, and click and release again to stop. It can also be combined with joystick- and keyboard-based pointer controls."));
2627 o->labelfont(2);
2628 o->labelsize(10);
2629 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2630 } // Fl_Box* o
2631 o->end();
2632 } // Fl_Group* o
2633 { Fl_Group* o = new Fl_Group(boxx, 224, whalf, 169, gettext("Keyboard:"));
2634 o->box(FL_PLASTIC_UP_BOX);
2635 o->labeltype(FL_EMBOSSED_LABEL);
2636 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2637 { Fl_Check_Button* o = CHECKBUTTON_keyboard_mouse = new Fl_Check_Button(boxx + 12, 254, whalf - 23, 30, gettext("Keyboard controls the mouse pointer"));
2638 o->down_box(FL_DOWN_BOX);
2639 o->callback((Fl_Callback*)cb_status_chng);
2640 } // Fl_Check_Button* o
2641 { Fl_Box* o = new Fl_Box(boxx + 12, 284, whalf - 23, 104, gettext("When enabled, the arrow keys or numbers can be used to move the mouse pointer. Number 5, Space, Insert or F5 can be used to click. (When in \"Text\" or \"Label\" tools, the numbers and space cannot be used.) Also, F4 cycles the pointer between the \"Tools\" box, \"Colors\" box and drawing canvas, F8 and F7 move up/down inside the \"Tools\" box, and F11 and F12 move left/right inside the \"Tools\" and \"Colors\" boxes."));
2642 o->labelfont(2);
2643 o->labelsize(10);
2644 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2645 } // Fl_Box* o
2646 o->end();
2647 } // Fl_Group* o
2648 boxx = whalf + 16;
2649 { Fl_Group* o = new Fl_Group(boxx, 70, whalf, 325, gettext("Onscreen keyboard:"));
2650 o->box(FL_PLASTIC_UP_BOX);
2651 o->labeltype(FL_ENGRAVED_LABEL);
2652 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2653 { Fl_Check_Button* o = CHECKBUTTON_onscreen_keyboard = new Fl_Check_Button(boxx + 12, 96, whalf, 30, gettext("Show a keyboard on the screen"));
2654 o->down_box(FL_DOWN_BOX);
2655 o->callback((Fl_Callback*)cb_CHECKBUTTON_onscreen_keyboard);
2656 } // Fl_Check_Button* o
2657 { Fl_Box* o = new Fl_Box(boxx + 12, 126, whalf , 40, gettext("Display a keyboard on the screen when the \"Text\" and \"Label\" tools are enabled, so you can 'type' with the mouse pointer."));
2658 o->labelfont(2);
2659 o->labelsize(10);
2660 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2661 } // Fl_Box* o
2662 { Fl_Choice* o = CHOICE_onscreen_keyboard_layout = new Fl_Choice(boxx + 12, 180, whalf / 2, 30, gettext("Layout"));
2663 o->down_box(FL_BORDER_BOX);
2664 o->align(Fl_Align(FL_ALIGN_RIGHT));
2665 o->when(FL_WHEN_CHANGED);
2666 int i;
2667 for (i = 0; i < NUM_LAYOUTS; i++)
2668 {
2669 o->add(layouts[i][LAYOUT_NAME], "", NULL, NULL, 0);
2670 o->deactivate();
2671 }
2672 o->callback((Fl_Callback*)cb_status_chng);
2673 } // Fl_Choice* o
2674 { Fl_Box* o = new Fl_Box(boxx + 12, 210, whalf, 45, gettext("How are keys organized in the keyboard"));
2675 o->labelfont(2);
2676 o->labelsize(10);
2677 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2678 } // Fl_Box* o
2679 { Fl_Check_Button* o = CHECKBUTTON_onscreen_keyboard_disable_change = new Fl_Check_Button(boxx + 12, 265, whalf, 30, gettext("Disable layout changes"));
2680 o->down_box(FL_DOWN_BOX);
2681 o->deactivate();
2682 o->callback((Fl_Callback*)cb_status_chng);
2683 } // Fl_Check_Button* o
2684 { Fl_Box* o = new Fl_Box(boxx + 12, 295, whalf, 55, gettext("Disable the buttons that allow changing the keyboard layout."));
2685 o->labelfont(2);
2686 o->labelsize(10);
2687 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2688 } // Fl_Box* o
2689 o->end();
2690 } // Fl_Group* o
2691 o->end();
2692 Fl_Group::current()->resizable(o);
2693 } // Fl_Group* o
2694
2695
2696
2697
2698
2699
2700
2701 /* TAB: JOYSTICK */
2702 { Fl_Scroll* o = TABE_joystick = new Fl_Scroll(5, 64 - y, width - 17, 336, gettext("Joystick"));
2703 o->type(2);
2704 o->color((Fl_Color)234);
2705 o->selection_color((Fl_Color)234);
2706 o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
2707 o->box(FL_PLASTIC_UP_BOX);
2708 int wj = width - 36; // Account for the scroll bar
2709 int wjhalf = wj / 2 - 8;
2710 boxx = 12;
2711 { Fl_Group* o = new Fl_Group(5, 64 - y, wj, 600);
2712 // o->box(FL_PLASTIC_UP_BOX);
2713 { Fl_Group* o = new Fl_Group(boxx, 70, wjhalf, 300, gettext("Main device:"));
2714 o->box(FL_PLASTIC_UP_BOX);
2715 o->labeltype(FL_EMBOSSED_LABEL);
2716 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2717 { Fl_Spinner* o = SPINNER_joystick_dev = new Fl_Spinner(boxx + 12, 100, wjhalf - 23, 30);
2718 o->minimum(0);
2719 o->value(0);
2720 o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
2721 o->callback((Fl_Callback*)cb_status_chng);
2722 } // Fl_Spinner* o
2723 { Fl_Box* o = new Fl_Box(boxx + 12, 130, wjhalf - 23, 30, gettext("Device number to use. (SDL starts numbering at 0)"));
2724 o->labelfont(2);
2725 o->labelsize(10);
2726 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2727 } // Fl_Box* o
2728 { Fl_Spinner* o = SPINNER_joystick_slowness = new Fl_Spinner(boxx + 12, 160, wjhalf - 23, 30); // joystick_slowness
2729 o->minimum(0);
2730 o->maximum(500);
2731 o->value(15);
2732 o->callback((Fl_Callback*)cb_status_chng);
2733 } // Fl_Spinner* o
2734 { Fl_Box* o = new Fl_Box(boxx + 12, 190, wjhalf - 23, 30, gettext("Joystick slowness. Increase this value for people with slow reactions. (0-500; default value is 15)"));
2735 o->labelfont(2);
2736 o->labelsize(10);
2737 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2738 } // Fl_Box* o
2739 { Fl_Spinner* o = SPINNER_joystick_threshold = new Fl_Spinner(boxx + 12, 220, wjhalf - 23, 30); // joystick_low_threshold
2740 o->minimum(0);
2741 o->maximum(32766);
2742 o->step(100);
2743 o->value(3200);
2744 o->callback((Fl_Callback*)cb_status_chng);
2745 } // Fl_Spinner* o
2746 { Fl_Box* o = new Fl_Box(boxx + 12, 250, wjhalf - 23, 40, gettext("SDL events under threshold will be discarded, useful to discard accidental unwanted movements. (0-32766; default value is 3200)"));
2747 o->labelfont(2);
2748 o->labelsize(10);
2749 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2750 } // Fl_Box* o
2751 { Fl_Spinner* o =SPINNER_joystick_maxsteps = new Fl_Spinner(boxx + 12, 290, wjhalf - 23, 30); // joystick_maxsteps
2752 o->maximum(7);
2753 o->value(7);
2754 o->callback((Fl_Callback*)cb_status_chng);
2755 } // Fl_Spinner* o
2756 { Fl_Box* o = new Fl_Box(boxx + 12, 320, wjhalf - 23, 30, gettext("Limit speed when moving. (1-7; default value is 7)"));
2757 o->labelfont(2);
2758 o->labelsize(10);
2759 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2760 } // Fl_Box* o
2761 o->end();
2762 } // Fl_Group* o
2763 { Fl_Group* o = new Fl_Group(boxx, 375, wjhalf, 170, gettext("Hat:"));
2764 o->box(FL_PLASTIC_UP_BOX);
2765 o->labeltype(FL_EMBOSSED_LABEL);
2766 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2767 { Fl_Spinner* o = SPINNER_joystick_hat_slowness = new Fl_Spinner(boxx + 12, 400, wjhalf - 23, 30);
2768 o->maximum(500);
2769 o->value(15);
2770 o->callback((Fl_Callback*)cb_status_chng);
2771 } // Fl_Spinner* o
2772 { Fl_Box* o = new Fl_Box(boxx + 12, 430, wjhalf - 23, 30, gettext("Hat slowness. (0-500; default value is 15)"));
2773 o->labelfont(2);
2774 o->labelsize(10);
2775 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2776 } // Fl_Box* o
2777 { Fl_Spinner* o = SPINNER_joystick_hat_timeout = new Fl_Spinner(boxx + 12, 460, wjhalf - 23, 30);
2778 o->minimum(0);
2779 o->maximum(3000);
2780 o->step(100);
2781 o->value(1000);
2782 o->callback((Fl_Callback*)cb_status_chng);
2783 } // Fl_Spinner* o
2784 { Fl_Box* o = new Fl_Box(boxx + 12, 490, wjhalf - 23, 30, gettext("Hat timeout, the number of milliseconds to wait before starting to move continuously. (0-3000; default value is 1000)"));
2785 o->labelfont(2);
2786 o->labelsize(10);
2787 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2788 } // Fl_Box* o
2789 o->end();
2790 } // Fl_Group* o
2791
2792
2793
2794
2795 { Fl_Group* o = new Fl_Group(12, 550, wjhalf, 110, gettext("Buttons to disable:"));
2796 o->box(FL_PLASTIC_UP_BOX);
2797 o->labeltype(FL_ENGRAVED_LABEL);
2798 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2799
2800 { Fl_Check_Button* o = CHECKBUTTON_joystick_buttons_ignore = new Fl_Check_Button(24, 575, 24, 30);
2801 o->down_box(FL_DOWN_BOX);
2802 o->shortcut(0x80066);
2803 o->callback((Fl_Callback*)cb_CHECKBUTTON_joystick_buttons_ignore);
2804 }
2805
2806 { Fl_Input* o = TEXTINPUT_joystick_buttons_ignore = new Fl_Input(48, 575, wjhalf - 23 - 24, 30);
2807 o->labeltype(FL_NO_LABEL);
2808 o->align(Fl_Align(196));
2809 o->callback((Fl_Callback*)cb_status_chng);
2810 } // Fl_Input* o
2811 { Fl_Box* o = new Fl_Box(24, 610, wjhalf - 23, 45, gettext("If for any reason one or more buttons of the joystick are posing problems, you can disable them here using a comma separated list of button numbers. (e.g. 2,3,5)"));
2812 o->labelfont(2);
2813 o->labelsize(10);
2814 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2815 } // Fl_Box* o
2816 o->end();
2817 } // Fl_Group* o
2818
2819 boxx = wjhalf + 16;
2820 { Fl_Group* o = new Fl_Group(boxx, 70, wjhalf, 590, gettext("Button shortcuts:"));
2821 o->box(FL_PLASTIC_UP_BOX);
2822 o->labeltype(FL_EMBOSSED_LABEL);
2823 o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
2824 { Fl_Box* o = new Fl_Box(boxx + 12, 105, 355, 40, gettext("Here you can configure shortcuts for the different buttons of the joystick. (Beware to not assign a shortcut to the button used to draw.)"));
2825 o->labelfont(2);
2826 o->labelsize(10);
2827 o->align(Fl_Align(197|FL_ALIGN_INSIDE));
2828 } // Fl_Box* o
2829 { Fl_Spinner* o = SPINNER_joystick_btn_escape= new Fl_Spinner(boxx + 12, 165, 55, 30, gettext("Button number for the Escape key."));
2830 o->labelfont(2);
2831 o->labelsize(10);
2832 o->minimum(0);
2833 o->maximum(255);
2834 o->callback((Fl_Callback*)cb_status_chng);
2835 o->align(Fl_Align(FL_ALIGN_RIGHT));
2836 } // Fl_Spinner* o
2837 { Fl_Spinner* o =SPINNER_joystick_btn_brush= new Fl_Spinner(boxx + 12, 195, 55, 30, gettext("Button number for the Brush tool."));
2838 o->labelfont(2);
2839 o->labelsize(10);
2840 o->minimum(0);
2841 o->maximum(255);
2842 o->callback((Fl_Callback*)cb_status_chng);
2843 o->align(Fl_Align(FL_ALIGN_RIGHT));
2844 } // Fl_Spinner* o
2845 { Fl_Spinner* o =SPINNER_joystick_btn_stamp= new Fl_Spinner(boxx + 12, 225, 55, 30, gettext("Button number for the Stamps tool."));
2846 o->labelfont(2);
2847 o->labelsize(10);
2848 o->minimum(0);
2849 o->maximum(255);
2850 o->callback((Fl_Callback*)cb_status_chng);
2851 o->align(Fl_Align(FL_ALIGN_RIGHT));
2852 } // Fl_Spinner* o
2853 { Fl_Spinner* o = SPINNER_joystick_btn_lines= new Fl_Spinner(boxx + 12, 255, 55, 30, gettext("Button number for the Lines tool."));
2854 o->labelfont(2);
2855 o->labelsize(10);
2856 o->minimum(0);
2857 o->maximum(255);
2858 o->callback((Fl_Callback*)cb_status_chng);
2859 o->align(Fl_Align(FL_ALIGN_RIGHT));
2860 } // Fl_Spinner* o
2861 { Fl_Spinner* o =SPINNER_joystick_btn_shapes= new Fl_Spinner(boxx + 12, 285, 55, 30, gettext("Button number for the Shapes tool."));
2862 o->labelfont(2);
2863 o->labelsize(10);
2864 o->minimum(0);
2865 o->maximum(255);
2866 o->callback((Fl_Callback*)cb_status_chng);
2867 o->align(Fl_Align(FL_ALIGN_RIGHT));
2868 } // Fl_Spinner* o
2869 { Fl_Spinner* o = SPINNER_joystick_btn_text= new Fl_Spinner(boxx + 12, 315, 55, 30, gettext("Button number for the Text tool."));
2870 o->labelfont(2);
2871 o->labelsize(10);
2872 o->minimum(0);
2873 o->maximum(255);
2874 o->callback((Fl_Callback*)cb_status_chng);
2875 o->align(Fl_Align(FL_ALIGN_RIGHT));
2876 } // Fl_Spinner* o
2877 { Fl_Spinner* o = SPINNER_joystick_btn_label= new Fl_Spinner(boxx + 12, 345, 55, 30, gettext("Button number for the Label tool."));
2878 o->labelfont(2);
2879 o->labelsize(10);
2880 o->minimum(0);
2881 o->maximum(255);
2882 o->callback((Fl_Callback*)cb_status_chng);
2883 o->align(Fl_Align(FL_ALIGN_RIGHT));
2884 } // Fl_Spinner* o
2885 { Fl_Spinner* o = SPINNER_joystick_btn_magic= new Fl_Spinner(boxx + 12, 375, 55, 30, gettext("Button number for the Magic tool."));
2886 o->labelfont(2);
2887 o->labelsize(10);
2888 o->minimum(0);
2889 o->maximum(255);
2890 o->callback((Fl_Callback*)cb_status_chng);
2891 o->align(Fl_Align(FL_ALIGN_RIGHT));
2892 } // Fl_Spinner* o
2893 { Fl_Spinner* o = SPINNER_joystick_btn_undo= new Fl_Spinner(boxx + 12, 405, 55, 30, gettext("Button number for Undo."));
2894 o->labelfont(2);
2895 o->labelsize(10);
2896 o->minimum(0);
2897 o->maximum(255);
2898 o->callback((Fl_Callback*)cb_status_chng);
2899 o->align(Fl_Align(FL_ALIGN_RIGHT));
2900 } // Fl_Spinner* o
2901 { Fl_Spinner* o = SPINNER_joystick_btn_redo= new Fl_Spinner(boxx + 12, 435, 55, 30, gettext("Button number for Redo."));
2902 o->labelfont(2);
2903 o->labelsize(10);
2904 o->minimum(0);
2905 o->maximum(255);
2906 o->callback((Fl_Callback*)cb_status_chng);
2907 o->align(Fl_Align(FL_ALIGN_RIGHT));
2908 } // Fl_Spinner* o
2909 { Fl_Spinner* o = SPINNER_joystick_btn_eraser= new Fl_Spinner(boxx + 12, 465, 55, 30, gettext("Button number for the Eraser tool."));
2910 o->labelfont(2);
2911 o->labelsize(10);
2912 o->minimum(0);
2913 o->maximum(255);
2914 o->callback((Fl_Callback*)cb_status_chng);
2915 o->align(Fl_Align(FL_ALIGN_RIGHT));
2916 } // Fl_Spinner* o
2917 { Fl_Spinner* o = SPINNER_joystick_btn_new= new Fl_Spinner(boxx + 12, 495, 55, 30, gettext("Button number for the New tool."));
2918 o->labelfont(2);
2919 o->labelsize(10);
2920 o->minimum(0);
2921 o->maximum(255);
2922 o->callback((Fl_Callback*)cb_status_chng);
2923 o->align(Fl_Align(FL_ALIGN_RIGHT));
2924 } // Fl_Spinner* o
2925 { Fl_Spinner* o = SPINNER_joystick_btn_open= new Fl_Spinner(boxx + 12, 525, 55, 30, gettext("Button number for the Open tool."));
2926 o->labelfont(2);
2927 o->labelsize(10);
2928 o->minimum(0);
2929 o->maximum(255);
2930 o->callback((Fl_Callback*)cb_status_chng);
2931 o->align(Fl_Align(FL_ALIGN_RIGHT));
2932 } // Fl_Spinner* o
2933 { Fl_Spinner* o = SPINNER_joystick_btn_save= new Fl_Spinner(boxx + 12, 555, 55, 30, gettext("Button number for saving."));
2934 o->labelfont(2);
2935 o->labelsize(10);
2936 o->minimum(0);
2937 o->maximum(255);
2938 o->callback((Fl_Callback*)cb_status_chng);
2939 o->align(Fl_Align(FL_ALIGN_RIGHT));
2940 } // Fl_Spinner* o
2941 { Fl_Spinner* o = SPINNER_joystick_btn_pgsetup= new Fl_Spinner(boxx + 12, 585, 55, 30, gettext("Button number for Page Setup."));
2942 o->labelfont(2);
2943 o->labelsize(10);
2944 o->minimum(0);
2945 o->maximum(255);
2946 o->callback((Fl_Callback*)cb_status_chng);
2947 o->align(Fl_Align(FL_ALIGN_RIGHT));
2948 } // Fl_Spinner* o
2949 { Fl_Spinner* o = SPINNER_joystick_btn_print= new Fl_Spinner(boxx + 12, 615, 55, 30, gettext("Button number for printing."));
2950 o->labelfont(2);
2951 o->labelsize(10);
2952 o->minimum(0);
2953 o->maximum(255);
2954 o->callback((Fl_Callback*)cb_status_chng);
2955 o->align(Fl_Align(FL_ALIGN_RIGHT));
2956 } // Fl_Spinner* o
2957 o->end();
2958 } // Fl_Group* o
2959
2960 o->end();
2961 } // Fl_Pack* o
2962 o->end();
2963 } // Fl_Scroll* o
2964
2965
2966
2967
2968
2969 o->end(); // TAB_alltabs
2970 }
2971 { Fl_Choice* o = CHOICE_settings = new Fl_Choice(6, 423-y, 120 * width / 690, 22, gettext("Settings for : "));
2972 o->down_box(FL_BORDER_BOX);
2973 o->align(FL_ALIGN_TOP_LEFT);
2974
2975 o->add(gettext("Current User"), "", NULL, NULL, 0);
2976 o->add(gettext("All Users"), "", NULL, NULL, 0);
2977
2978 o->value(CURRENT_USER);
2979
2980 o->callback((Fl_Callback*)cb_CHOICE_settings);
2981 }
2982 { Fl_Check_Button* o = CHECKBUTTON_usealluserssettings = new Fl_Check_Button(128 * width / 690, 423-y, 180 * width / 690, 22, gettext("Use \"All Users\" Settings"));
2983 o->down_box(FL_DOWN_BOX);
2984 o->callback((Fl_Callback*)cb_CHECKBUTTON_usealluserssettings);
2985 }
2986 { Fl_Button* o = BUTTON_apply = new Fl_Button(367 * width / 690, 412-y, 75 * width / 690, 32, gettext("Apply"));
2987 o->box(FL_PLASTIC_UP_BOX);
2988 o->down_box(FL_PLASTIC_DOWN_BOX);
2989 o->labelfont(FL_BOLD);
2990 o->align(FL_ALIGN_CLIP);
2991 o->callback((Fl_Callback*)cb_BUTTON_apply);
2992 o->deactivate();
2993 }
2994 { Fl_Button* o = BUTTON_reset = new Fl_Button(445 * width / 690, 412-y, 75 * width / 690, 32, gettext("Reset"));
2995 o->box(FL_PLASTIC_UP_BOX);
2996 o->down_box(FL_PLASTIC_DOWN_BOX);
2997 o->labelfont(FL_BOLD);
2998 o->callback( (Fl_Callback*)cb_BUTTON_reset );
2999 o->align(FL_ALIGN_CLIP);
3000 }
3001 { Fl_Button* o = BUTTON_defaults = new Fl_Button(523 * width / 690, 412-y, 75 * width / 690, 32, gettext("Defaults"));
3002 o->box(FL_PLASTIC_UP_BOX);
3003 o->down_box(FL_PLASTIC_DOWN_BOX);
3004 o->labelfont(FL_BOLD);
3005 o->callback((Fl_Callback*)cb_BUTTON_defaults);
3006 o->align(FL_ALIGN_CLIP);
3007 }
3008 { Fl_Button* o = BUTTON_quit = new Fl_Button(605 * width / 690, 412-y, 75 * width / 690, 32, gettext("Quit"));
3009 o->box(FL_PLASTIC_UP_BOX);
3010 o->down_box(FL_PLASTIC_DOWN_BOX);
3011 o->labelfont(FL_BOLD);
3012 o->callback((Fl_Callback*)confirm_exit_cb);
3013 o->align(FL_ALIGN_CLIP);
3014 }
3015 o->end();
3016 }
3017
3018
3019 /* It's kluge to do this here; sorry -bjk 2004-09-04 */
3020
3021 load_conf();
3022
3023
3024 /* Show the window: */
3025
3026 #ifdef WIN32
3027 /* must set the icon before calling show() */
3028 WINDOW_tpc->icon((char *)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON1)));
3029 #endif
3030
3031 WINDOW_tpc -> show ();
3032 return w;
3033 }
3034