NetSurf
gui_options.c
Go to the documentation of this file.
1/*
2 * Copyright 2009 - 2025 Chris Young <chris@unsatisfactorysoftware.co.uk>
3 *
4 * This file is part of NetSurf, http://www.netsurf-browser.org/
5 *
6 * NetSurf is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * NetSurf is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#include <stdbool.h>
20#include <string.h>
21#include <stdlib.h>
22#include <proto/exec.h>
23#include <proto/graphics.h>
24#include <proto/intuition.h>
25#include <proto/utility.h>
26#ifdef __amigaos4__
27#include <proto/application.h>
28#endif
29#include <libraries/gadtools.h>
30#include <exec/types.h>
31#include <intuition/classusr.h>
32#include <graphics/gfxbase.h>
33
34#include <proto/window.h>
35#include <proto/layout.h>
36#include <proto/button.h>
37#include <proto/clicktab.h>
38#include <proto/label.h>
39#include <proto/string.h>
40#include <proto/checkbox.h>
41#include <proto/radiobutton.h>
42#include <proto/getscreenmode.h>
43#include <proto/getfile.h>
44#include <proto/chooser.h>
45#include <proto/integer.h>
46#include <proto/getfont.h>
47#include <classes/window.h>
48#include <images/label.h>
49#include <gadgets/button.h>
50#include <gadgets/clicktab.h>
51#include <gadgets/string.h>
52#include <gadgets/checkbox.h>
53#include <gadgets/radiobutton.h>
54#include <gadgets/getscreenmode.h>
55#include <gadgets/getfile.h>
56#include <gadgets/chooser.h>
57#include <gadgets/integer.h>
58#include <gadgets/getfont.h>
59#include <reaction/reaction.h>
60#include <reaction/reaction_macros.h>
61
62#include "utils/nsurl.h"
63#include "utils/messages.h"
64#include "utils/nsoption.h"
66#include "desktop/searchweb.h"
67#include "netsurf/window.h"
68
69#include "amiga/file.h"
70#include "amiga/font.h"
71#include "amiga/font_bullet.h"
72#include "amiga/gui.h"
73#include "amiga/gui_menu.h"
74#include "amiga/gui_options.h"
75#include "amiga/help.h"
76#include "amiga/libs.h"
77#include "amiga/nsoption.h"
78#include "amiga/object.h"
79#include "amiga/selectmenu.h"
80#include "amiga/theme.h"
81#include "amiga/utf8.h"
82#include "amiga/plotters.h"
83
84enum
85{
165
166enum
167{
199
200enum
201{
212
213#define OPTS_LAST LAB_OPTS_LAST
214#define OPTS_MAX_TABS 10
215#define OPTS_MAX_SCREEN 4
216#define OPTS_MAX_THEMEPAGE 3
217#define OPTS_MAX_PROXY 5
218#define OPTS_MAX_NATIVEBM 4
219#define OPTS_MAX_DITHER 4
220
221enum {
225};
226
229 struct Window *win;
231#ifndef __amigaos4__
232 struct List clicktablist;
233 struct List screenoptslist;
234 struct List pagethemeoptslist;
235 struct List proxyoptslist;
236 struct List nativebmoptslist;
237 struct List ditheroptslist;
238 struct List fontoptslist;
239 struct List fontenginelist;
240#endif
242};
243
244static BOOL ami_gui_opts_event(void *w);
245static void ami_gui_opts_close(void *w);
246
250};
251
252/* Default fonts */
253static struct TextAttr default_bm_font_SANS = { "helvetica.font", 0, 0, 0 };
254static struct TextAttr default_bm_font_SERIF = { "times.font", 0, 0, 0 };
255static struct TextAttr default_bm_font_MONO = { "topaz.font", 0, 0, 0 };
256static struct TextAttr default_bm_font_CURSIVE = { "garnet.font", 0, 0, 0 };
257static struct TextAttr default_bm_font_FANTASY = { "emerald.font", 0, 0, 0 };
258
259#ifdef __amigaos4__
260static struct TextAttr default_cg_font_SANS = { "DejaVu Sans.font", 0, 0, 0 };
261static struct TextAttr default_cg_font_SERIF = { "DejaVu Serif.font", 0, 0, 0 };
262static struct TextAttr default_cg_font_MONO = { "DejaVu Sans Mono.font", 0, 0, 0 };
263static struct TextAttr default_cg_font_CURSIVE = { "DejaVu Sans.font", 0, 0, 0 };
264static struct TextAttr default_cg_font_FANTASY = { "DejaVu Serif.font", 0, 0, 0 };
265#else
266static struct TextAttr default_cg_font_SANS = { "CGTriumvirate.font", 0, 0, 0 };
267static struct TextAttr default_cg_font_SERIF = { "CGTimes.font", 0, 0, 0 };
268static struct TextAttr default_cg_font_MONO = { "LetterGothic.font", 0, 0, 0 };
269static struct TextAttr default_cg_font_CURSIVE = { "CGTriumvirate.font", 0, 0, 0 };
270static struct TextAttr default_cg_font_FANTASY = { "CGTimes.font", 0, 0, 0 };
271#endif
272
273#define AMI_GUI_OPTS_REFRESH_FONT_BM(TYPE) RefreshSetGadgetAttrs((struct Gadget *)gow->objects[GID_OPTS_FONT_##TYPE], \
274 gow->win, NULL, \
275 GETFONT_TextAttr, &default_bm_font_##TYPE, \
276 GETFONT_OTagOnly, FALSE, \
277 GETFONT_ScalableOnly, FALSE, \
278 TAG_DONE)
279
280#define AMI_GUI_OPTS_REFRESH_FONT_CG(TYPE) RefreshSetGadgetAttrs((struct Gadget *)gow->objects[GID_OPTS_FONT_##TYPE], \
281 gow->win, NULL, \
282 GETFONT_TextAttr, &default_cg_font_##TYPE, \
283 GETFONT_OTagOnly, TRUE, \
284 GETFONT_ScalableOnly, TRUE, \
285 TAG_DONE)
286
287static struct ami_gui_opts_window *gow = NULL;
288
289static CONST_STRPTR tabs[OPTS_MAX_TABS];
292static CONST_STRPTR proxyopts[OPTS_MAX_PROXY];
293static CONST_STRPTR nativebmopts[OPTS_MAX_NATIVEBM];
294static CONST_STRPTR ditheropts[OPTS_MAX_DITHER];
295static CONST_STRPTR fontopts[6];
296static CONST_STRPTR fontengines[3];
297static CONST_STRPTR gadlab[OPTS_LAST];
298static CONST_STRPTR helphints[OPTS_LAST];
299static struct List *websearch_list;
300
301#ifndef __amigaos4__
302static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
303{
304 int i = 0;
305 struct Node *node;
306
307 NewList(list);
308
309 do {
310 switch(type) {
312 node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
313 break;
314 case NSA_LIST_CHOOSER:
315 node = AllocChooserNode(CNA_Text, array[i], TAG_DONE);
316 break;
317 case NSA_LIST_RADIO:
318 /* Note: RBNA_Labels is RBNA_Label in OS4 */
319 node = AllocRadioButtonNode(0, RBNA_Labels, array[i], TAG_DONE);
320 break;
321 default:
322 break;
323 }
324 AddTail(list, node);
325 i++;
326 } while (array[i] != 0);
327}
328
329static void ami_gui_opts_free_list(struct List *list, int type)
330{
331 struct Node *node;
332 struct Node *nnode;
333
334 if(IsListEmpty((struct List *)list)) return;
335 node = GetHead((struct List *)list);
336
337 do {
338 nnode = GetSucc(node);
339 Remove(node);
340 if(node) {
341 switch(type) {
343 FreeClickTabNode(node);
344 break;
345 case NSA_LIST_CHOOSER:
346 FreeChooserNode(node);
347 break;
348 case NSA_LIST_RADIO:
349 FreeRadioButtonNode(node);
350 break;
351 default:
352 break;
353 }
354 }
355 } while((node = nnode));
356}
357#endif
358
360{
361 if(outline) {
367 } else {
373 }
374}
375
377{
378 tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general"));
379 tabs[1] = (char *)ami_utf8_easy((char *)messages_get("Display"));
380 tabs[2] = (char *)ami_utf8_easy((char *)messages_get("con_connect"));
381 tabs[3] = (char *)ami_utf8_easy((char *)messages_get("con_rendering"));
382 tabs[4] = (char *)ami_utf8_easy((char *)messages_get("con_fonts"));
383 tabs[5] = (char *)ami_utf8_easy((char *)messages_get("con_cache"));
384 tabs[6] = (char *)ami_utf8_easy((char *)messages_get("Tabs"));
385 tabs[7] = (char *)ami_utf8_easy((char *)messages_get("con_advanced"));
386#ifdef WITH_PDF_EXPORT
387 tabs[8] = (char *)ami_utf8_easy((char *)messages_get("Export"));
388 tabs[9] = NULL;
389#else
390 tabs[8] = NULL;
391#endif
392
393 screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn"));
394 screenopts[1] = (char *)ami_utf8_easy((char *)messages_get("ScreenWB"));
395 screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic"));
396 screenopts[3] = NULL;
397
398 pagethemeopts[0] = (char *)ami_utf8_easy((char *)messages_get("Light"));
399 pagethemeopts[1] = (char *)ami_utf8_easy((char *)messages_get("Dark"));
400 pagethemeopts[2] = NULL;
401
402 proxyopts[0] = (char *)ami_utf8_easy((char *)messages_get("ProxyNone"));
403 proxyopts[1] = (char *)ami_utf8_easy((char *)messages_get("ProxyNoAuth"));
404 proxyopts[2] = (char *)ami_utf8_easy((char *)messages_get("ProxyBasic"));
405 proxyopts[3] = (char *)ami_utf8_easy((char *)messages_get("ProxyNTLM"));
406 proxyopts[4] = NULL;
407
408 nativebmopts[0] = (char *)ami_utf8_easy((char *)messages_get("None"));
409 nativebmopts[1] = (char *)ami_utf8_easy((char *)messages_get("Scaled"));
410 nativebmopts[2] = (char *)ami_utf8_easy((char *)messages_get("All"));
411 nativebmopts[3] = NULL;
412
413 ditheropts[0] = (char *)ami_utf8_easy((char *)messages_get("Low"));
414 ditheropts[1] = (char *)ami_utf8_easy((char *)messages_get("Medium"));
415 ditheropts[2] = (char *)ami_utf8_easy((char *)messages_get("High"));
416 ditheropts[3] = NULL;
417
418 fontengines[0] = (char *)ami_utf8_easy((char *)messages_get("FontEngineBullet"));
419 fontengines[1] = (char *)ami_utf8_easy((char *)messages_get("FontEngineDiskfont"));
420 fontengines[2] = NULL;
421
422 gow->websearch_idx = 0;
424
425 gadlab[GID_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("HomePageURL"));
426 gadlab[GID_OPTS_HOMEPAGE_DEFAULT] = (char *)ami_utf8_easy((char *)messages_get("HomePageDefault"));
427 gadlab[GID_OPTS_HOMEPAGE_CURRENT] = (char *)ami_utf8_easy((char *)messages_get("HomePageCurrent"));
428 gadlab[GID_OPTS_HOMEPAGE_BLANK] = (char *)ami_utf8_easy((char *)messages_get("HomePageBlank"));
429 gadlab[GID_OPTS_HIDEADS] = (char *)ami_utf8_easy((char *)messages_get("BlockAds"));
430 gadlab[GID_OPTS_FROMLOCALE] = (char *)ami_utf8_easy((char *)messages_get("LocaleLang"));
431 gadlab[GID_OPTS_HISTORY] = (char *)ami_utf8_easy((char *)messages_get("HistoryAge"));
432 gadlab[GID_OPTS_JAVASCRIPT] = (char *)ami_utf8_easy((char *)messages_get("EnableJS"));
433 gadlab[GID_OPTS_ENABLECSS] = (char *)ami_utf8_easy((char *)messages_get("EnableCSS"));
434 gadlab[GID_OPTS_REFERRAL] = (char *)ami_utf8_easy((char *)messages_get("SendReferer"));
435 gadlab[GID_OPTS_DONOTTRACK] = (char *)ami_utf8_easy((char *)messages_get("DoNotTrack"));
436 gadlab[GID_OPTS_FASTSCROLL] = (char *)ami_utf8_easy((char *)messages_get("FastScrolling"));
437 gadlab[GID_OPTS_WIN_SIMPLE] = (char *)ami_utf8_easy((char *)messages_get("SimpleRefresh"));
438 gadlab[GID_OPTS_THEME] = (char *)ami_utf8_easy((char *)messages_get("ThemeGUI"));
439 gadlab[GID_OPTS_THEMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("ThemePage"));
440 gadlab[GID_OPTS_DARK] = (char *)ami_utf8_easy((char *)messages_get("Dark"));
441 gadlab[GID_OPTS_LIGHT] = (char *)ami_utf8_easy((char *)messages_get("Light"));
442 gadlab[GID_OPTS_PTRTRUE] = (char *)ami_utf8_easy((char *)messages_get("TrueColour"));
443 gadlab[GID_OPTS_PTROS] = (char *)ami_utf8_easy((char *)messages_get("OSPointers"));
444 gadlab[GID_OPTS_PROXY] = (char *)ami_utf8_easy((char *)messages_get("ProxyType"));
445 gadlab[GID_OPTS_PROXY_HOST] = (char *)ami_utf8_easy((char *)messages_get("Host"));
446 gadlab[GID_OPTS_PROXY_USER] = (char *)ami_utf8_easy((char *)messages_get("Username"));
447 gadlab[GID_OPTS_PROXY_PASS] = (char *)ami_utf8_easy((char *)messages_get("Password"));
448 gadlab[GID_OPTS_PROXY_BYPASS] = (char *)ami_utf8_easy((char *)messages_get("ProxyBypass"));
449 gadlab[GID_OPTS_FETCHMAX] = (char *)ami_utf8_easy((char *)messages_get("FetchesMax"));
450 gadlab[GID_OPTS_FETCHHOST] = (char *)ami_utf8_easy((char *)messages_get("FetchesHost"));
451 gadlab[GID_OPTS_FETCHCACHE] = (char *)ami_utf8_easy((char *)messages_get("FetchesCached"));
452 gadlab[GID_OPTS_NATIVEBM] = (char *)ami_utf8_easy((char *)messages_get("CacheNative"));
453 gadlab[GID_OPTS_SCALEQ] = (char *)ami_utf8_easy((char *)messages_get("ScaleQuality"));
454 gadlab[GID_OPTS_DITHERQ] = (char *)ami_utf8_easy((char *)messages_get("DitherQuality"));
455 gadlab[GID_OPTS_DPI_Y] = (char *)ami_utf8_easy((char *)messages_get("ResolutionY"));
456 gadlab[GID_OPTS_ANIMDISABLE] = (char *)ami_utf8_easy((char *)messages_get("AnimDisable"));
457 gadlab[GID_OPTS_FONT_SANS] = (char *)ami_utf8_easy((char *)messages_get("FontSans"));
458 gadlab[GID_OPTS_FONT_SERIF] = (char *)ami_utf8_easy((char *)messages_get("FontSerif"));
459 gadlab[GID_OPTS_FONT_MONO] = (char *)ami_utf8_easy((char *)messages_get("FontMono"));
460 gadlab[GID_OPTS_FONT_CURSIVE] = (char *)ami_utf8_easy((char *)messages_get("FontCursive"));
461 gadlab[GID_OPTS_FONT_FANTASY] = (char *)ami_utf8_easy((char *)messages_get("FontFantasy"));
462 gadlab[GID_OPTS_FONT_DEFAULT] = (char *)ami_utf8_easy((char *)messages_get("Default"));
463 gadlab[GID_OPTS_FONT_SIZE] = (char *)ami_utf8_easy((char *)messages_get("Default"));
464 gadlab[GID_OPTS_FONT_MINSIZE] = (char *)ami_utf8_easy((char *)messages_get("Minimum"));
465 gadlab[GID_OPTS_FONT_ANTIALIASING] = (char *)ami_utf8_easy((char *)messages_get("FontAntialiasing"));
466 gadlab[GID_OPTS_FONT_BITMAP] = (char *)ami_utf8_easy((char *)messages_get("FontEngine"));
467 gadlab[GID_OPTS_CACHE_MEM] = (char *)ami_utf8_easy((char *)messages_get("Size"));
468 gadlab[GID_OPTS_CACHE_DISC] = (char *)ami_utf8_easy((char *)messages_get("Size"));
469 gadlab[GID_OPTS_OVERWRITE] = (char *)ami_utf8_easy((char *)messages_get("ConfirmOverwrite"));
470 gadlab[GID_OPTS_NOTIFY] = (char *)ami_utf8_easy((char *)messages_get("DownloadNotify"));
471 gadlab[GID_OPTS_DLDIR] = (char *)ami_utf8_easy((char *)messages_get("DownloadDir"));
472 gadlab[GID_OPTS_TAB_ACTIVE] = (char *)ami_utf8_easy((char *)messages_get("TabActive"));
473 gadlab[GID_OPTS_TAB_2] = (char *)ami_utf8_easy((char *)messages_get("TabMiddle"));
474 gadlab[GID_OPTS_TAB_ALWAYS] = (char *)ami_utf8_easy((char *)messages_get("TabAlways"));
475 gadlab[GID_OPTS_TAB_CLOSE] = (char *)ami_utf8_easy((char *)messages_get("TabClose"));
476 gadlab[GID_OPTS_SEARCH_PROV] = (char *)ami_utf8_easy((char *)messages_get("SearchProvider"));
477 gadlab[GID_OPTS_CLIPBOARD] = (char *)ami_utf8_easy((char *)messages_get("ClipboardUTF8"));
478 gadlab[GID_OPTS_SELECTMENU] = (char *)ami_utf8_easy((char *)messages_get("PopupMenu"));
479 gadlab[GID_OPTS_STARTUP_NO_WIN] = (char *)ami_utf8_easy((char *)messages_get("OptionNoWindow"));
480 gadlab[GID_OPTS_CLOSE_NO_QUIT] = (char *)ami_utf8_easy((char *)messages_get("OptionNoQuit"));
481 gadlab[GID_OPTS_DOCKY] = (char *)ami_utf8_easy((char *)messages_get("OptionDocky"));
482 gadlab[GID_OPTS_MARGIN_TOP] = (char *)ami_utf8_easy((char *)messages_get("Top"));
483 gadlab[GID_OPTS_MARGIN_LEFT] = (char *)ami_utf8_easy((char *)messages_get("Left"));
484 gadlab[GID_OPTS_MARGIN_RIGHT] = (char *)ami_utf8_easy((char *)messages_get("Right"));
485 gadlab[GID_OPTS_MARGIN_BOTTOM] = (char *)ami_utf8_easy((char *)messages_get("Bottom"));
486 gadlab[GID_OPTS_EXPORT_SCALE] = (char *)ami_utf8_easy((char *)messages_get("Scale"));
487 gadlab[GID_OPTS_EXPORT_NOIMAGES] = (char *)ami_utf8_easy((char *)messages_get("SuppressImages"));
488 gadlab[GID_OPTS_EXPORT_NOBKG] = (char *)ami_utf8_easy((char *)messages_get("RemoveBackground"));
489 gadlab[GID_OPTS_EXPORT_LOOSEN] = (char *)ami_utf8_easy((char *)messages_get("FitPage"));
490 gadlab[GID_OPTS_EXPORT_COMPRESS] = (char *)ami_utf8_easy((char *)messages_get("CompressPDF"));
491 gadlab[GID_OPTS_EXPORT_PASSWORD] = (char *)ami_utf8_easy((char *)messages_get("SetPassword"));
492 gadlab[GID_OPTS_SAVE] = (char *)ami_utf8_easy((char *)messages_get("SelSave"));
493 gadlab[GID_OPTS_USE] = (char *)ami_utf8_easy((char *)messages_get("Use"));
494 gadlab[GID_OPTS_CANCEL] = (char *)ami_utf8_easy((char *)messages_get("Cancel"));
495
496 gadlab[LAB_OPTS_WINTITLE] = (char *)ami_utf8_easy((char *)messages_get("Preferences"));
497 gadlab[LAB_OPTS_RESTART] = (char *)ami_utf8_easy((char *)messages_get("NeedRestart"));
498 gadlab[LAB_OPTS_DAYS] = (char *)ami_utf8_easy((char *)messages_get("Days"));
499 gadlab[LAB_OPTS_PT] = (char *)ami_utf8_easy((char *)messages_get("Pt"));
500 gadlab[LAB_OPTS_MM] = (char *)ami_utf8_easy((char *)messages_get("MM"));
501 gadlab[LAB_OPTS_MB] = (char *)ami_utf8_easy((char *)messages_get("MBytes"));
502 gadlab[LAB_OPTS_DPI] = (char *)ami_utf8_easy((char *)messages_get("DPI"));
503
504 gadlab[GRP_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("Home"));
505 gadlab[GRP_OPTS_CONTENTBLOCKING] = (char *)ami_utf8_easy((char *)messages_get("ContentBlocking"));
506 gadlab[GRP_OPTS_CONTENTLANGUAGE] = (char *)ami_utf8_easy((char *)messages_get("ContentLanguage"));
507 gadlab[GRP_OPTS_HISTORY] = (char *)ami_utf8_easy((char *)messages_get("History"));
508 gadlab[GRP_OPTS_SCRIPTING] = (char *)ami_utf8_easy((char *)messages_get("Scripting"));
509 gadlab[GRP_OPTS_MISC] = (char *)ami_utf8_easy((char *)messages_get("Miscellaneous"));
510 gadlab[GRP_OPTS_SCREEN] = (char *)ami_utf8_easy((char *)messages_get("Screen"));
511 gadlab[GRP_OPTS_WINDOW] = (char *)ami_utf8_easy((char *)messages_get("Window"));
512 gadlab[GRP_OPTS_THEME] = (char *)ami_utf8_easy((char *)messages_get("Theme"));
513 gadlab[GRP_OPTS_MOUSE] = (char *)ami_utf8_easy((char *)messages_get("MousePointers"));
514 gadlab[GRP_OPTS_PROXY] = (char *)ami_utf8_easy((char *)messages_get("Proxy"));
515 gadlab[GRP_OPTS_FETCHING] = (char *)ami_utf8_easy((char *)messages_get("Fetching"));
516 gadlab[GRP_OPTS_IMAGES] = (char *)ami_utf8_easy((char *)messages_get("Images"));
517 gadlab[GRP_OPTS_ANIMS] = (char *)ami_utf8_easy((char *)messages_get("Animations"));
518 gadlab[GRP_OPTS_DPI] = (char *)ami_utf8_easy((char *)messages_get("Resolution"));
519 gadlab[GRP_OPTS_FONTFACES] = (char *)ami_utf8_easy((char *)messages_get("FontFamilies"));
520 gadlab[GRP_OPTS_FONTSIZE] = (char *)ami_utf8_easy((char *)messages_get("FontSize"));
521 gadlab[GRP_OPTS_MEMCACHE] = (char *)ami_utf8_easy((char *)messages_get("CacheMemory"));
522 gadlab[GRP_OPTS_DISCCACHE] = (char *)ami_utf8_easy((char *)messages_get("CacheDisc"));
523 gadlab[GRP_OPTS_DOWNLOADS] = (char *)ami_utf8_easy((char *)messages_get("Downloads"));
524 gadlab[GRP_OPTS_TABS] = (char *)ami_utf8_easy((char *)messages_get("TabbedBrowsing"));
525 gadlab[GRP_OPTS_SEARCH] = (char *)ami_utf8_easy((char *)messages_get("SearchWeb"));
526 gadlab[GRP_OPTS_CLIPBOARD] = (char *)ami_utf8_easy((char *)messages_get("Clipboard"));
527 gadlab[GRP_OPTS_PRIVACY] = (char *)ami_utf8_easy((char *)messages_get("Privacy"));
528 gadlab[GRP_OPTS_BEHAVIOUR] = (char *)ami_utf8_easy((char *)messages_get("Behaviour"));
529 gadlab[GRP_OPTS_MARGINS] = (char *)ami_utf8_easy((char *)messages_get("Margins"));
530 gadlab[GRP_OPTS_SCALING] = (char *)ami_utf8_easy((char *)messages_get("Scaling"));
531 gadlab[GRP_OPTS_APPEARANCE] = (char *)ami_utf8_easy((char *)messages_get("Appearance"));
532 gadlab[GRP_OPTS_ADVANCED] = (char *)ami_utf8_easy((char *)messages_get("con_advanced"));
533
534 helphints[GID_OPTS_FONT_BITMAP] = (char *)translate_escape_chars((char *)messages_get("HelpPrefsFontBitmap"));
535
541 fontopts[5] = NULL;
542
543#ifndef __amigaos4__
552#endif
553}
554
556{
557 int i;
558
559 for(i = 0; i < OPTS_LAST; i++) {
560 if(gadlab[i]) free((APTR)gadlab[i]);
561 if(helphints[i]) ami_utf8_free((APTR)helphints[i]);
562 }
563
564 for(i = 0; i < OPTS_MAX_TABS; i++)
565 if(tabs[i]) free((APTR)tabs[i]);
566
567 for(i = 0; i < OPTS_MAX_SCREEN; i++)
568 if(screenopts[i]) free((APTR)screenopts[i]);
569
570 for(i = 0; i < OPTS_MAX_PROXY; i++)
571 if(proxyopts[i]) free((APTR)proxyopts[i]);
572
573 for(i = 0; i < OPTS_MAX_NATIVEBM; i++)
574 if(nativebmopts[i]) free((APTR)nativebmopts[i]);
575
577
578#ifndef __amigaos4__
587#endif
588}
589
591{
592 uint16 screenoptsselected;
593 ULONG screenmodeid = 0;
594 ULONG proxytype = 0;
595 BOOL screenmodedisabled = FALSE, screennamedisabled = FALSE;
596 BOOL proxyhostdisabled = TRUE, proxyauthdisabled = TRUE, proxybypassdisabled = FALSE;
597 BOOL disableanims, acceptlangdisabled = FALSE;
598 BOOL scaleselected = nsoption_bool(scale_quality), scaledisabled = FALSE;
599 BOOL ditherdisable = TRUE;
600 BOOL download_notify_disabled = FALSE, tab_always_show_disabled = FALSE;
601 BOOL ptr_disable = FALSE;
602 char *homepage_url_lc = ami_utf8_easy(nsoption_charp(homepage_url));
603
604 struct TextAttr fontsans, fontserif, fontmono, fontcursive, fontfantasy;
605
606 if(gow && gow->win)
607 {
608 WindowToFront(gow->win);
609 ActivateWindow(gow->win);
610 return;
611 }
612
613#ifdef __amigaos4__
614 if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) ptr_disable = TRUE;
615#else
616 ptr_disable = TRUE;
617#endif
618
619 if(nsoption_charp(pubscreen_name))
620 {
621 if(strcmp(nsoption_charp(pubscreen_name),"Workbench") == 0)
622 {
623 screenoptsselected = 1;
624 screennamedisabled = TRUE;
625 screenmodedisabled = TRUE;
626 }
627 else
628 {
629 screenoptsselected = 2;
630 screenmodedisabled = TRUE;
631 }
632 }
633 else
634 {
635 screenoptsselected = 0;
636 screennamedisabled = TRUE;
637 }
638
639 if((nsoption_charp(screen_modeid)) &&
640 (strncmp(nsoption_charp(screen_modeid),"0x",2) == 0))
641 {
642 screenmodeid = strtoul(nsoption_charp(screen_modeid),NULL,0);
643 }
644
646 ditherdisable = FALSE;
647 }
648
649 if(nsoption_bool(http_proxy) == true)
650 {
651 proxytype = nsoption_int(http_proxy_auth) + 1;
652 switch(nsoption_int(http_proxy_auth))
653 {
656 proxyauthdisabled = FALSE;
658 proxyhostdisabled = FALSE;
659 break;
660 }
661 } else {
662 proxybypassdisabled = TRUE;
663 }
664
665 if(nsoption_bool(animate_images))
666 {
667 disableanims = FALSE;
668 }
669 else
670 {
671 disableanims = TRUE;
672 }
673
674 if(nsoption_bool(accept_lang_locale))
675 acceptlangdisabled = TRUE;
676 else
677 acceptlangdisabled = FALSE;
678
679 if(GfxBase->LibNode.lib_Version < 53)
680 {
681 scaledisabled = TRUE;
682 scaleselected = FALSE;
683 }
684#ifdef __amigaos4__
685 if(ApplicationBase->lib_Version < 53)
686#endif
687 {
688 download_notify_disabled = TRUE;
689 nsoption_set_bool(download_notify, FALSE);
690 }
691
692 if(ClickTabBase->lib_Version < 53) {
693 tab_always_show_disabled = TRUE;
694 }
695
696 BOOL outline_fonts = !nsoption_bool(bitmap_fonts);
697
698 fontsans.ta_Name = ASPrintf("%s.font", nsoption_charp(font_sans));
699 fontserif.ta_Name = ASPrintf("%s.font", nsoption_charp(font_serif));
700 fontmono.ta_Name = ASPrintf("%s.font", nsoption_charp(font_mono));
701 fontcursive.ta_Name = ASPrintf("%s.font", nsoption_charp(font_cursive));
702 fontfantasy.ta_Name = ASPrintf("%s.font", nsoption_charp(font_fantasy));
703
704 fontsans.ta_Style = 0;
705 fontserif.ta_Style = 0;
706 fontmono.ta_Style = 0;
707 fontcursive.ta_Style = 0;
708 fontfantasy.ta_Style = 0;
709
710 fontsans.ta_YSize = 0;
711 fontserif.ta_YSize = 0;
712 fontmono.ta_YSize = 0;
713 fontcursive.ta_YSize = 0;
714 fontfantasy.ta_YSize = 0;
715
716 fontsans.ta_Flags = 0;
717 fontserif.ta_Flags = 0;
718 fontmono.ta_Flags = 0;
719 fontcursive.ta_Flags = 0;
720 fontfantasy.ta_Flags = 0;
721
722 if(!gow)
723 {
724 gow = calloc(1, sizeof(struct ami_gui_opts_window));
725 if(gow == NULL) return;
726
728
730 WA_ScreenTitle, ami_gui_get_screen_title(),
731 WA_Title, gadlab[LAB_OPTS_WINTITLE],
732 WA_Activate, TRUE,
733 WA_DepthGadget, TRUE,
734 WA_DragBar, TRUE,
735 WA_CloseGadget, TRUE,
736 WA_SizeGadget, FALSE,
737 WA_PubScreen, ami_gui_get_screen(),
738 WINDOW_SharedPort, ami_gui_get_shared_msgport(),
739 WINDOW_UserData,gow,
740 WINDOW_IconifyGadget, FALSE,
741 WINDOW_Position, WPOS_CENTERSCREEN,
742 WA_IDCMP, IDCMP_GADGETUP | IDCMP_CLOSEWINDOW,
743 WINDOW_ParentGroup, gow->objects[GID_OPTS_MAIN] = LayoutVObj,
744 LAYOUT_AddChild, ClickTabObj,
745 GA_RelVerify, TRUE,
746#ifdef __amigaos4__
747 GA_Text, tabs,
748#else
749 CLICKTAB_Labels, &gow->clicktablist,
750#endif
751 CLICKTAB_PageGroup, PageObj,
752 /*
753 ** General
754 */
755 PAGE_Add, LayoutVObj,
756 LAYOUT_AddChild, LayoutVObj,
757 LAYOUT_AddChild, LayoutVObj,
758 LAYOUT_SpaceOuter, TRUE,
759 LAYOUT_BevelStyle, BVS_GROUP,
760 LAYOUT_Label, gadlab[GRP_OPTS_HOMEPAGE],
761 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE] = StringObj,
762 GA_ID, GID_OPTS_HOMEPAGE,
763 GA_RelVerify, TRUE,
764 STRINGA_TextVal, homepage_url_lc,
765 STRINGA_BufferPos,0,
766 StringEnd,
767 CHILD_Label, LabelObj,
768 LABEL_Text, gadlab[GID_OPTS_HOMEPAGE],
769 LabelEnd,
770 LAYOUT_AddChild, LayoutHObj,
771 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_DEFAULT] = ButtonObj,
774 GA_RelVerify,TRUE,
775 ButtonEnd,
776 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_CURRENT] = ButtonObj,
779 GA_RelVerify,TRUE,
780 ButtonEnd,
781 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_BLANK] = ButtonObj,
784 GA_RelVerify,TRUE,
785 ButtonEnd,
786 LayoutEnd,
787 LayoutEnd, //homepage
788 CHILD_WeightedHeight, 0,
789 LAYOUT_AddChild, LayoutHObj,
790 LAYOUT_AddChild, LayoutVObj,
791 LAYOUT_SpaceOuter, TRUE,
792 LAYOUT_BevelStyle, BVS_GROUP,
793 LAYOUT_Label, gadlab[GRP_OPTS_CONTENTBLOCKING],
794 LAYOUT_AddChild, gow->objects[GID_OPTS_HIDEADS] = CheckBoxObj,
795 GA_ID, GID_OPTS_HIDEADS,
796 GA_RelVerify, TRUE,
797 GA_Text, gadlab[GID_OPTS_HIDEADS],
798 GA_Selected, nsoption_bool(block_advertisements),
799 CheckBoxEnd,
800 LayoutEnd, // content blocking
801 LAYOUT_AddChild, LayoutVObj,
802 LAYOUT_SpaceOuter, TRUE,
803 LAYOUT_BevelStyle, BVS_GROUP,
804 LAYOUT_Label, gadlab[GRP_OPTS_CONTENTLANGUAGE],
805 LAYOUT_AddChild, gow->objects[GID_OPTS_CONTENTLANG] = StringObj,
807 GA_RelVerify, TRUE,
808 GA_Disabled, acceptlangdisabled,
809 STRINGA_TextVal, nsoption_charp(accept_language),
810 STRINGA_BufferPos,0,
811 StringEnd,
812 LAYOUT_AddChild, gow->objects[GID_OPTS_FROMLOCALE] = CheckBoxObj,
813 GA_ID, GID_OPTS_FROMLOCALE,
814 GA_Text, gadlab[GID_OPTS_FROMLOCALE],
815 GA_RelVerify, TRUE,
816 GA_Selected, nsoption_bool(accept_lang_locale),
817 ButtonEnd,
818 // CHILD_WeightedWidth, 0,
819 LayoutEnd, // content language
820 LayoutEnd, // content
821 LAYOUT_AddChild, LayoutHObj,
822 LAYOUT_AddChild, LayoutVObj,
823 LAYOUT_SpaceOuter, TRUE,
824 LAYOUT_BevelStyle, BVS_GROUP,
825 LAYOUT_Label, gadlab[GRP_OPTS_HISTORY],
826 LAYOUT_AddChild, LayoutHObj,
827 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
828 LAYOUT_AddChild, gow->objects[GID_OPTS_HISTORY] = IntegerObj,
829 GA_ID, GID_OPTS_HISTORY,
830 GA_RelVerify, TRUE,
831 INTEGER_Number, nsoption_int(expire_url),
832 INTEGER_Minimum, 0,
833 INTEGER_Maximum, 366,
834 INTEGER_Arrows, TRUE,
835 IntegerEnd,
836 CHILD_WeightedWidth, 0,
837 CHILD_Label, LabelObj,
838 LABEL_Text, gadlab[LAB_OPTS_DAYS],
839 LabelEnd,
840 LayoutEnd,
841 CHILD_WeightedWidth, 0,
842 CHILD_Label, LabelObj,
843 LABEL_Text, gadlab[GID_OPTS_HISTORY],
844 LabelEnd,
845 LayoutEnd, // history
846 LAYOUT_AddChild, LayoutVObj,
847 LAYOUT_SpaceOuter, TRUE,
848 LAYOUT_BevelStyle, BVS_GROUP,
849 LAYOUT_Label, gadlab[GRP_OPTS_SCRIPTING],
850 LAYOUT_AddChild, gow->objects[GID_OPTS_JAVASCRIPT] = CheckBoxObj,
851 GA_ID, GID_OPTS_JAVASCRIPT,
852 GA_RelVerify, TRUE,
853 GA_Text, gadlab[GID_OPTS_JAVASCRIPT],
854 GA_Selected, nsoption_bool(enable_javascript),
855 CheckBoxEnd,
856 LayoutEnd, // scripting
857 LayoutEnd,
858 CHILD_WeightedHeight, 0,
859 LAYOUT_AddChild, LayoutVObj,
860 LAYOUT_SpaceOuter, TRUE,
861 LAYOUT_BevelStyle, BVS_GROUP,
862 LAYOUT_Label, gadlab[GRP_OPTS_PRIVACY],
863 LAYOUT_AddChild, gow->objects[GID_OPTS_REFERRAL] = CheckBoxObj,
864 GA_ID, GID_OPTS_REFERRAL,
865 GA_RelVerify, TRUE,
866 GA_Text, gadlab[GID_OPTS_REFERRAL],
867 GA_Selected, nsoption_bool(send_referer),
868 CheckBoxEnd,
869 LAYOUT_AddChild, gow->objects[GID_OPTS_DONOTTRACK] = CheckBoxObj,
870 GA_ID, GID_OPTS_DONOTTRACK,
871 GA_RelVerify, TRUE,
872 GA_Text, gadlab[GID_OPTS_DONOTTRACK],
873 GA_Selected, nsoption_bool(do_not_track),
874 CheckBoxEnd,
875 LayoutEnd, // misc
876 CHILD_WeightedHeight, 0,
877 LayoutEnd, // page vgroup
878 CHILD_WeightedHeight, 0,
879 PageEnd, // pageadd
880 /*
881 ** Display
882 */
883 PAGE_Add, LayoutVObj,
884 LAYOUT_AddChild, LayoutVObj,
885 LAYOUT_AddChild, LayoutVObj,
886 LAYOUT_SpaceOuter, TRUE,
887 LAYOUT_BevelStyle, BVS_GROUP,
888 LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
889 LAYOUT_AddChild, LayoutHObj,
890 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
891 GA_ID, GID_OPTS_SCREEN,
892 GA_RelVerify, TRUE,
893#ifdef __amigaos4__
894 GA_Text, screenopts,
895#else
896 RADIOBUTTON_Labels, &gow->screenoptslist,
897#endif
898 RADIOBUTTON_Selected, screenoptsselected,
899 RadioButtonEnd,
900 CHILD_WeightedWidth,0,
901 LAYOUT_AddChild, LayoutVObj,
902 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREENMODE] = GetScreenModeObj,
903 GA_ID, GID_OPTS_SCREENMODE,
904 GA_RelVerify, TRUE,
905 GA_Disabled,screenmodedisabled,
906 GETSCREENMODE_DisplayID,screenmodeid,
907 GETSCREENMODE_MinDepth, 0,
908 GETSCREENMODE_MaxDepth, 32,
910 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREENNAME] = StringObj,
911 GA_ID, GID_OPTS_SCREENNAME,
912 GA_RelVerify, TRUE,
913 GA_Disabled,screennamedisabled,
914 STRINGA_TextVal, nsoption_charp(pubscreen_name),
915 STRINGA_BufferPos,0,
916 StringEnd,
917 LayoutEnd,
918 CHILD_WeightedHeight,0,
919 LayoutEnd,
920 LayoutEnd, // screen
921 CHILD_WeightedHeight,0,
922 LAYOUT_AddChild, LayoutVObj,
923 LAYOUT_SpaceOuter, TRUE,
924 LAYOUT_BevelStyle, BVS_GROUP,
925 LAYOUT_Label, gadlab[GRP_OPTS_WINDOW],
926 LAYOUT_AddChild, gow->objects[GID_OPTS_WIN_SIMPLE] = CheckBoxObj,
927 GA_ID, GID_OPTS_WIN_SIMPLE,
928 GA_RelVerify, TRUE,
929 GA_Text, gadlab[GID_OPTS_WIN_SIMPLE],
930 GA_Selected, nsoption_bool(window_simple_refresh),
931 CheckBoxEnd,
932 LayoutEnd, // window
933 CHILD_WeightedHeight,0,
934 LAYOUT_AddChild, LayoutVObj,
935 LAYOUT_SpaceOuter, TRUE,
936 LAYOUT_BevelStyle, BVS_GROUP,
937 LAYOUT_Label, gadlab[GRP_OPTS_THEME],
938 LAYOUT_AddChild, gow->objects[GID_OPTS_THEME] = GetFileObj,
939 GA_ID, GID_OPTS_THEME,
940 GA_RelVerify, TRUE,
941 GETFILE_Drawer, nsoption_charp(theme),
942 GETFILE_DrawersOnly, TRUE,
943 GETFILE_ReadOnly, TRUE,
944 GETFILE_FullFileExpand, FALSE,
946 CHILD_Label, LabelObj,
947 LABEL_Text, gadlab[GID_OPTS_THEME],
948 LabelEnd,
949 LAYOUT_AddChild, gow->objects[GID_OPTS_THEMEPAGE] = ChooserObj,
950 GA_ID, GID_OPTS_THEMEPAGE,
951 GA_RelVerify, TRUE,
952 CHOOSER_PopUp, TRUE,
953#ifdef __amigaos4__
954 CHOOSER_LabelArray, pagethemeopts,
955#else
956 CHOOSER_Labels, &gow->pagethemeoptslist,
957#endif
958 CHOOSER_Selected, nsoption_bool(prefer_dark_mode),
959 ChooserEnd,
960 CHILD_Label, LabelObj,
961 LABEL_Text, gadlab[GID_OPTS_THEMEPAGE],
962 LabelEnd,
963 LayoutEnd, // theme
964 CHILD_WeightedHeight, 0,
965 LAYOUT_AddChild, LayoutVObj,
966 LAYOUT_SpaceOuter, TRUE,
967 LAYOUT_BevelStyle, BVS_GROUP,
968 LAYOUT_Label, gadlab[GRP_OPTS_MOUSE],
969 LAYOUT_AddChild, gow->objects[GID_OPTS_PTRTRUE] = CheckBoxObj,
970 GA_ID, GID_OPTS_PTRTRUE,
971 GA_RelVerify, TRUE,
972 GA_Text, gadlab[GID_OPTS_PTRTRUE],
973 GA_Selected, nsoption_bool(truecolour_mouse_pointers),
974 GA_Disabled, ptr_disable,
975 CheckBoxEnd,
976 LAYOUT_AddChild, gow->objects[GID_OPTS_PTROS] = CheckBoxObj,
977 GA_ID, GID_OPTS_PTROS,
978 GA_RelVerify, TRUE,
979 GA_Text, gadlab[GID_OPTS_PTROS],
980 GA_Selected, nsoption_bool(os_mouse_pointers),
981 GA_Disabled, ptr_disable,
982 CheckBoxEnd,
983 LayoutEnd, // mouse
984 CHILD_WeightedHeight,0,
985 LAYOUT_AddImage, LabelObj,
986 LABEL_Text, gadlab[LAB_OPTS_RESTART],
987 LabelEnd,
988 LayoutEnd, // page vgroup
989 CHILD_WeightedHeight, 0,
990 PageEnd, // pageadd
991 /*
992 ** Network
993 */
994 PAGE_Add, LayoutVObj,
995 LAYOUT_AddChild, LayoutVObj,
996 LAYOUT_AddChild, LayoutVObj,
997 LAYOUT_SpaceOuter, TRUE,
998 LAYOUT_BevelStyle, BVS_GROUP,
999 LAYOUT_Label, gadlab[GRP_OPTS_PROXY],
1000 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY] = ChooserObj,
1001 GA_ID, GID_OPTS_PROXY,
1002 GA_RelVerify, TRUE,
1003 CHOOSER_PopUp, TRUE,
1004#ifdef __amigaos4__
1005 CHOOSER_LabelArray, proxyopts,
1006#else
1007 CHOOSER_Labels, &gow->proxyoptslist,
1008#endif
1009 CHOOSER_Selected, proxytype,
1010 ChooserEnd,
1011 CHILD_Label, LabelObj,
1012 LABEL_Text, gadlab[GID_OPTS_PROXY],
1013 LabelEnd,
1014 LAYOUT_AddChild, LayoutHObj,
1015 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_HOST] = StringObj,
1016 GA_ID, GID_OPTS_PROXY_HOST,
1017 GA_RelVerify, TRUE,
1018 GA_Disabled, proxyhostdisabled,
1019 STRINGA_TextVal, nsoption_charp(http_proxy_host),
1020 STRINGA_BufferPos,0,
1021 StringEnd,
1022 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_PORT] = IntegerObj,
1023 GA_ID, GID_OPTS_PROXY_PORT,
1024 GA_RelVerify, TRUE,
1025 GA_Disabled, proxyhostdisabled,
1026 INTEGER_Number, nsoption_charp(http_proxy_port),
1027 INTEGER_Minimum, 1,
1028 INTEGER_Maximum, 65535,
1029 INTEGER_Arrows, FALSE,
1030 IntegerEnd,
1031 CHILD_WeightedWidth, 0,
1032 CHILD_Label, LabelObj,
1033 LABEL_Text, ":",
1034 LabelEnd,
1035 LayoutEnd, //host:port group
1036 CHILD_WeightedHeight, 0,
1037 CHILD_Label, LabelObj,
1038 LABEL_Text, gadlab[GID_OPTS_PROXY_HOST],
1039 LabelEnd,
1040 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_USER] = StringObj,
1041 GA_ID, GID_OPTS_PROXY_USER,
1042 GA_RelVerify, TRUE,
1043 GA_Disabled, proxyauthdisabled,
1044 STRINGA_TextVal, nsoption_charp(http_proxy_auth_user),
1045 STRINGA_BufferPos,0,
1046 StringEnd,
1047 CHILD_Label, LabelObj,
1048 LABEL_Text, gadlab[GID_OPTS_PROXY_USER],
1049 LabelEnd,
1050 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_PASS] = StringObj,
1051 GA_ID, GID_OPTS_PROXY_PASS,
1052 GA_RelVerify, TRUE,
1053 GA_Disabled, proxyauthdisabled,
1054 STRINGA_TextVal, nsoption_charp(http_proxy_auth_pass),
1055 STRINGA_BufferPos,0,
1056 StringEnd,
1057 CHILD_Label, LabelObj,
1058 LABEL_Text, gadlab[GID_OPTS_PROXY_PASS],
1059 LabelEnd,
1060 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_BYPASS] = StringObj,
1061 GA_ID, GID_OPTS_PROXY_BYPASS,
1062 GA_RelVerify, TRUE,
1063 GA_Disabled, proxybypassdisabled,
1064 STRINGA_TextVal, nsoption_charp(http_proxy_noproxy),
1065 STRINGA_BufferPos, 0,
1066 StringEnd,
1067 CHILD_Label, LabelObj,
1068 LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
1069 LabelEnd,
1070 LayoutEnd, // proxy
1071 CHILD_WeightedHeight, 0,
1072 LAYOUT_AddChild, LayoutVObj,
1073 LAYOUT_SpaceOuter, TRUE,
1074 LAYOUT_BevelStyle, BVS_GROUP,
1075 LAYOUT_Label, gadlab[GRP_OPTS_FETCHING],
1076 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHMAX] = IntegerObj,
1077 GA_ID, GID_OPTS_FETCHMAX,
1078 GA_RelVerify, TRUE,
1079 INTEGER_Number, nsoption_int(max_fetchers),
1080 INTEGER_Minimum, 1,
1081 INTEGER_Maximum, 99,
1082 INTEGER_Arrows, TRUE,
1083 IntegerEnd,
1084 CHILD_WeightedWidth, 0,
1085 CHILD_Label, LabelObj,
1086 LABEL_Text, gadlab[GID_OPTS_FETCHMAX],
1087 LabelEnd,
1088 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHHOST] = IntegerObj,
1089 GA_ID, GID_OPTS_FETCHHOST,
1090 GA_RelVerify, TRUE,
1091 INTEGER_Number, nsoption_int(max_fetchers_per_host),
1092 INTEGER_Minimum, 1,
1093 INTEGER_Maximum, 99,
1094 INTEGER_Arrows, TRUE,
1095 IntegerEnd,
1096 CHILD_WeightedWidth, 0,
1097 CHILD_Label, LabelObj,
1098 LABEL_Text, gadlab[GID_OPTS_FETCHHOST],
1099 LabelEnd,
1100 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHCACHE] = IntegerObj,
1101 GA_ID, GID_OPTS_FETCHCACHE,
1102 GA_RelVerify, TRUE,
1103 INTEGER_Number, nsoption_int(max_cached_fetch_handles),
1104 INTEGER_Minimum, 1,
1105 INTEGER_Maximum, 99,
1106 INTEGER_Arrows, TRUE,
1107 IntegerEnd,
1108 CHILD_WeightedWidth, 0,
1109 CHILD_Label, LabelObj,
1110 LABEL_Text, gadlab[GID_OPTS_FETCHCACHE],
1111 LabelEnd,
1112 LayoutEnd,
1113 CHILD_WeightedHeight, 0,
1114 LayoutEnd, // page vgroup
1115 CHILD_WeightedHeight, 0,
1116 PageEnd, // page object
1117 /*
1118 ** Rendering
1119 */
1120 PAGE_Add, LayoutVObj,
1121 LAYOUT_AddChild, LayoutVObj,
1122 LAYOUT_AddChild, LayoutVObj,
1123 LAYOUT_SpaceOuter, TRUE,
1124 LAYOUT_BevelStyle, BVS_GROUP,
1125 LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
1126 LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
1127 GA_ID, GID_OPTS_NATIVEBM,
1128 GA_RelVerify, TRUE,
1129 CHOOSER_PopUp, TRUE,
1130#ifdef __amigaos4__
1131 CHOOSER_LabelArray, nativebmopts,
1132#else
1133 CHOOSER_Labels, &gow->nativebmoptslist,
1134#endif
1135 CHOOSER_Selected, nsoption_int(cache_bitmaps),
1136 ChooserEnd,
1137 CHILD_Label, LabelObj,
1138 LABEL_Text, gadlab[GID_OPTS_NATIVEBM],
1139 LabelEnd,
1140 LAYOUT_AddChild, gow->objects[GID_OPTS_DITHERQ] = ChooserObj,
1141 GA_ID, GID_OPTS_DITHERQ,
1142 GA_RelVerify, TRUE,
1143 GA_Disabled, ditherdisable,
1144 CHOOSER_PopUp, TRUE,
1145#ifdef __amigaos4__
1146 CHOOSER_LabelArray, ditheropts,
1147#else
1148 CHOOSER_Labels, &gow->ditheroptslist,
1149#endif
1150 CHOOSER_Selected, nsoption_int(dither_quality),
1151 ChooserEnd,
1152 CHILD_Label, LabelObj,
1153 LABEL_Text, gadlab[GID_OPTS_DITHERQ],
1154 LabelEnd,
1155 LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
1156 GA_ID, GID_OPTS_SCALEQ,
1157 GA_Disabled, scaledisabled,
1158 GA_RelVerify, TRUE,
1159 GA_Text, gadlab[GID_OPTS_SCALEQ],
1160 GA_Selected, scaleselected,
1161 CheckBoxEnd,
1162 LayoutEnd, // images
1163 CHILD_WeightedHeight, 0,
1164 LAYOUT_AddChild, LayoutVObj,
1165 LAYOUT_SpaceOuter, TRUE,
1166 LAYOUT_BevelStyle, BVS_GROUP,
1167 LAYOUT_Label, gadlab[GRP_OPTS_ANIMS],
1168 LAYOUT_AddChild, gow->objects[GID_OPTS_ANIMDISABLE] = CheckBoxObj,
1169 GA_ID, GID_OPTS_ANIMDISABLE,
1170 GA_RelVerify, TRUE,
1171 GA_Text, gadlab[GID_OPTS_ANIMDISABLE],
1172 GA_Selected, disableanims,
1173 CheckBoxEnd,
1174 LayoutEnd, //animations
1175 CHILD_WeightedHeight, 0,
1176 LAYOUT_AddChild, LayoutVObj,
1177 LAYOUT_SpaceOuter, TRUE,
1178 LAYOUT_BevelStyle, BVS_GROUP,
1179 LAYOUT_Label, gadlab[GRP_OPTS_DPI],
1180 LAYOUT_AddChild, LayoutHObj,
1181 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1182 LAYOUT_AddChild, gow->objects[GID_OPTS_DPI_Y] = IntegerObj,
1183 GA_ID, GID_OPTS_DPI_Y,
1184 GA_RelVerify, TRUE,
1185 INTEGER_Number, nsoption_int(screen_ydpi),
1186 INTEGER_Minimum, 20,
1187 INTEGER_Maximum, 200,
1188 INTEGER_Arrows, TRUE,
1189 IntegerEnd,
1190 CHILD_WeightedWidth, 0,
1191 CHILD_Label, LabelObj,
1192 LABEL_Text, gadlab[LAB_OPTS_DPI],
1193 LabelEnd,
1194 LayoutEnd,
1195 CHILD_Label, LabelObj,
1196 LABEL_Text, gadlab[GID_OPTS_DPI_Y],
1197 LabelEnd,
1198 LayoutEnd, //animations
1199 CHILD_WeightedHeight, 0,
1200 LayoutEnd, // page vgroup
1201 CHILD_WeightedHeight, 0,
1202 PageEnd, // page object
1203 /*
1204 ** Fonts
1205 */
1206 PAGE_Add, LayoutVObj,
1207 LAYOUT_AddChild, LayoutVObj,
1208 LAYOUT_AddChild, LayoutVObj,
1209 LAYOUT_SpaceOuter, TRUE,
1210 LAYOUT_BevelStyle, BVS_GROUP,
1211 LAYOUT_Label, gadlab[GRP_OPTS_FONTFACES],
1212 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SANS] = GetFontObj,
1213 GA_ID, GID_OPTS_FONT_SANS,
1214 GA_RelVerify, TRUE,
1215 GETFONT_TextAttr, &fontsans,
1216 GETFONT_OTagOnly, outline_fonts,
1217 GETFONT_ScalableOnly, outline_fonts,
1218 GetFontEnd,
1219 CHILD_Label, LabelObj,
1220 LABEL_Text, gadlab[GID_OPTS_FONT_SANS],
1221 LabelEnd,
1222 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SERIF] = GetFontObj,
1223 GA_ID, GID_OPTS_FONT_SERIF,
1224 GA_RelVerify, TRUE,
1225 GETFONT_TextAttr, &fontserif,
1226 GETFONT_OTagOnly, outline_fonts,
1227 GETFONT_ScalableOnly, outline_fonts,
1228 GetFontEnd,
1229 CHILD_Label, LabelObj,
1230 LABEL_Text, gadlab[GID_OPTS_FONT_SERIF],
1231 LabelEnd,
1232 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_MONO] = GetFontObj,
1233 GA_ID, GID_OPTS_FONT_MONO,
1234 GA_RelVerify, TRUE,
1235 GETFONT_TextAttr, &fontmono,
1236 GETFONT_OTagOnly, outline_fonts,
1237 GETFONT_ScalableOnly, outline_fonts,
1238 GETFONT_FixedWidthOnly, TRUE,
1239 GetFontEnd,
1240 CHILD_Label, LabelObj,
1241 LABEL_Text, gadlab[GID_OPTS_FONT_MONO],
1242 LabelEnd,
1243 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_CURSIVE] = GetFontObj,
1244 GA_ID, GID_OPTS_FONT_CURSIVE,
1245 GA_RelVerify, TRUE,
1246 GETFONT_TextAttr, &fontcursive,
1247 GETFONT_OTagOnly, outline_fonts,
1248 GETFONT_ScalableOnly, outline_fonts,
1249 GetFontEnd,
1250 CHILD_Label, LabelObj,
1251 LABEL_Text, gadlab[GID_OPTS_FONT_CURSIVE],
1252 LabelEnd,
1253 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_FANTASY] = GetFontObj,
1254 GA_ID, GID_OPTS_FONT_FANTASY,
1255 GA_RelVerify, TRUE,
1256 GETFONT_TextAttr, &fontfantasy,
1257 GETFONT_OTagOnly, outline_fonts,
1258 GETFONT_ScalableOnly, outline_fonts,
1259 GetFontEnd,
1260 CHILD_Label, LabelObj,
1261 LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
1262 LabelEnd,
1263 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
1264 GA_ID, GID_OPTS_FONT_DEFAULT,
1265 GA_RelVerify, TRUE,
1266 CHOOSER_PopUp, TRUE,
1267#ifdef __amigaos4__
1268 CHOOSER_LabelArray, fontopts,
1269#else
1270 CHOOSER_Labels, &gow->fontoptslist,
1271#endif
1272 CHOOSER_Selected, nsoption_int(font_default) - PLOT_FONT_FAMILY_SANS_SERIF,
1273 ChooserEnd,
1274 CHILD_Label, LabelObj,
1275 LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
1276 LabelEnd,
1277 LayoutEnd, // font faces
1278 CHILD_WeightedHeight, 0,
1279 LAYOUT_AddChild, LayoutHObj,
1280 LAYOUT_AddChild, LayoutVObj,
1281 LAYOUT_SpaceOuter, TRUE,
1282 LAYOUT_BevelStyle, BVS_GROUP,
1283 LAYOUT_Label, gadlab[GRP_OPTS_FONTSIZE],
1284 LAYOUT_AddChild, LayoutHObj,
1285 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1286 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SIZE] = IntegerObj,
1287 GA_ID, GID_OPTS_FONT_SIZE,
1288 GA_RelVerify, TRUE,
1289 INTEGER_Number, nsoption_int(font_size) / 10,
1290 INTEGER_Minimum, 1,
1291 INTEGER_Maximum, 99,
1292 INTEGER_Arrows, TRUE,
1293 IntegerEnd,
1294 CHILD_WeightedWidth, 0,
1295 CHILD_Label, LabelObj,
1296 LABEL_Text, gadlab[LAB_OPTS_PT],
1297 LabelEnd,
1298 LayoutEnd,
1299 CHILD_Label, LabelObj,
1300 LABEL_Text, gadlab[GID_OPTS_FONT_SIZE],
1301 LabelEnd,
1302 LAYOUT_AddChild, LayoutHObj,
1303 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1304 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_MINSIZE] = IntegerObj,
1305 GA_ID, GID_OPTS_FONT_MINSIZE,
1306 GA_RelVerify, TRUE,
1307 INTEGER_Number, nsoption_int(font_min_size) / 10,
1308 INTEGER_Minimum, 1,
1309 INTEGER_Maximum, 99,
1310 INTEGER_Arrows, TRUE,
1311 IntegerEnd,
1312 CHILD_WeightedWidth, 0,
1313 CHILD_Label, LabelObj,
1314 LABEL_Text, gadlab[LAB_OPTS_PT],
1315 LabelEnd,
1316 LayoutEnd,
1317 CHILD_Label, LabelObj,
1318 LABEL_Text, gadlab[GID_OPTS_FONT_MINSIZE],
1319 LabelEnd,
1320 LayoutEnd,
1321 LAYOUT_AddChild, LayoutVObj,
1322 LAYOUT_SpaceOuter, TRUE,
1323 LAYOUT_BevelStyle, BVS_GROUP,
1324 LAYOUT_Label, gadlab[GRP_OPTS_MISC],
1327 GA_RelVerify, TRUE,
1329 GA_Selected, nsoption_bool(font_antialiasing),
1330#ifndef __amigaos4__
1331 GA_Disabled, TRUE,
1332#endif
1333 CheckBoxEnd,
1334 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_BITMAP] = ChooserObj,
1335 GA_ID, GID_OPTS_FONT_BITMAP,
1336 GA_RelVerify, TRUE,
1338 CHOOSER_PopUp, TRUE,
1339#ifdef __amigaos4__
1340 CHOOSER_LabelArray, fontengines,
1341#else
1342 CHOOSER_Labels, &gow->fontenginelist,
1343#endif
1344 CHOOSER_Selected, nsoption_bool(bitmap_fonts),
1345 ChooserEnd,
1346 CHILD_Label, LabelObj,
1347 LABEL_Text, gadlab[GID_OPTS_FONT_BITMAP],
1348 LabelEnd,
1349 LayoutEnd,
1350 LayoutEnd,
1351 CHILD_WeightedHeight, 0,
1352 LayoutEnd, // page vgroup
1353 CHILD_WeightedHeight, 0,
1354 PageEnd, // page object
1355 /*
1356 ** Cache
1357 */
1358 PAGE_Add, LayoutVObj,
1359 LAYOUT_AddChild, LayoutVObj,
1360 LAYOUT_AddChild, LayoutVObj,
1361 LAYOUT_SpaceOuter, TRUE,
1362 LAYOUT_BevelStyle, BVS_GROUP,
1363 LAYOUT_Label, gadlab[GRP_OPTS_MEMCACHE],
1364 LAYOUT_AddChild, LayoutHObj,
1365 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1366 LAYOUT_AddChild, gow->objects[GID_OPTS_CACHE_MEM] = IntegerObj,
1367 GA_ID, GID_OPTS_CACHE_MEM,
1368 GA_RelVerify, TRUE,
1369 INTEGER_Number, nsoption_int(memory_cache_size) / 1048576,
1370 INTEGER_Minimum, 0,
1371 INTEGER_Maximum, 2048,
1372 INTEGER_Arrows, TRUE,
1373 IntegerEnd,
1374 CHILD_WeightedWidth, 0,
1375 CHILD_Label, LabelObj,
1376 LABEL_Text, gadlab[LAB_OPTS_MB],
1377 LabelEnd,
1378 LayoutEnd,
1379 CHILD_Label, LabelObj,
1380 LABEL_Text, gadlab[GID_OPTS_CACHE_MEM],
1381 LabelEnd,
1382 LayoutEnd, // memory cache
1383 CHILD_WeightedHeight, 0,
1384 LAYOUT_AddChild, LayoutVObj,
1385 LAYOUT_SpaceOuter, TRUE,
1386 LAYOUT_BevelStyle, BVS_GROUP,
1387 LAYOUT_Label, gadlab[GRP_OPTS_DISCCACHE],
1388 LAYOUT_AddChild, LayoutHObj,
1389 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1390 LAYOUT_AddChild, gow->objects[GID_OPTS_CACHE_DISC] = IntegerObj,
1391 GA_ID, GID_OPTS_CACHE_DISC,
1392 GA_RelVerify, TRUE,
1393 INTEGER_Number, nsoption_uint(disc_cache_size) / 1048576,
1394 INTEGER_Minimum, 0,
1395 INTEGER_Maximum, 4096,
1396 INTEGER_Arrows, TRUE,
1397 IntegerEnd,
1398 CHILD_WeightedWidth, 0,
1399 CHILD_Label, LabelObj,
1400 LABEL_Text, gadlab[LAB_OPTS_MB],
1401 LabelEnd,
1402 LayoutEnd,
1403 CHILD_Label, LabelObj,
1404 LABEL_Text, gadlab[GID_OPTS_CACHE_DISC],
1405 LabelEnd,
1406 LayoutEnd, // disc cache
1407 CHILD_WeightedHeight, 0,
1408 LayoutEnd, // page vgroup
1409 CHILD_WeightedHeight, 0,
1410 PageEnd, // page object
1411 /*
1412 ** Tabs
1413 */
1414 PAGE_Add, LayoutVObj,
1415 LAYOUT_AddChild, LayoutVObj,
1416 LAYOUT_AddChild, LayoutHObj,
1417 LAYOUT_AddChild, LayoutVObj,
1418 LAYOUT_SpaceOuter, TRUE,
1419 LAYOUT_BevelStyle, BVS_GROUP,
1420 LAYOUT_Label, gadlab[GRP_OPTS_TABS],
1421 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_ACTIVE] = CheckBoxObj,
1422 GA_ID, GID_OPTS_TAB_ACTIVE,
1423 GA_RelVerify, TRUE,
1424 GA_Text, gadlab[GID_OPTS_TAB_ACTIVE],
1425 GA_Selected, !nsoption_bool(foreground_new),
1426 CheckBoxEnd,
1427 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_2] = CheckBoxObj,
1428 GA_ID, GID_OPTS_TAB_2,
1429 GA_RelVerify, TRUE,
1430 GA_Text, gadlab[GID_OPTS_TAB_2],
1431 GA_Selected, nsoption_bool(button_2_tab),
1432 CheckBoxEnd,
1433 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_ALWAYS] = CheckBoxObj,
1434 GA_ID, GID_OPTS_TAB_ALWAYS,
1435 GA_RelVerify, TRUE,
1436 GA_Text, gadlab[GID_OPTS_TAB_ALWAYS],
1437 GA_Selected, nsoption_bool(tab_always_show),
1438 GA_Disabled, tab_always_show_disabled,
1439 CheckBoxEnd,
1440 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_CLOSE] = CheckBoxObj,
1441 GA_ID, GID_OPTS_TAB_CLOSE,
1442 GA_RelVerify, TRUE,
1443 GA_Text, gadlab[GID_OPTS_TAB_CLOSE],
1444 GA_Selected, nsoption_bool(tab_close_warn),
1445 CheckBoxEnd,
1446 LayoutEnd, // tabbed browsing
1447 LayoutEnd,
1448 LayoutEnd, // page vgroup
1449 CHILD_WeightedHeight, 0,
1450 PageEnd, // page object
1451 /*
1452 ** Advanced
1453 */
1454 PAGE_Add, LayoutVObj,
1455 LAYOUT_AddChild, LayoutVObj,
1456 LAYOUT_AddChild, LayoutVObj,
1457 LAYOUT_SpaceOuter, TRUE,
1458 LAYOUT_BevelStyle, BVS_GROUP,
1459 LAYOUT_Label, gadlab[GRP_OPTS_DOWNLOADS],
1460 LAYOUT_AddChild, LayoutHObj,
1461 LAYOUT_AddChild, gow->objects[GID_OPTS_OVERWRITE] = CheckBoxObj,
1462 GA_ID, GID_OPTS_OVERWRITE,
1463 GA_RelVerify, TRUE,
1464 GA_Disabled, FALSE,
1465 GA_Text, gadlab[GID_OPTS_OVERWRITE],
1466 GA_Selected, nsoption_bool(ask_overwrite),
1467 CheckBoxEnd,
1468 LAYOUT_AddChild, gow->objects[GID_OPTS_NOTIFY] = CheckBoxObj,
1469 GA_ID, GID_OPTS_NOTIFY,
1470 GA_RelVerify, TRUE,
1471 GA_Disabled, download_notify_disabled,
1472 GA_Text, gadlab[GID_OPTS_NOTIFY],
1473 GA_Selected, nsoption_bool(download_notify),
1474#ifndef __amigaos4__
1475 GA_Disabled, TRUE,
1476#endif
1477 CheckBoxEnd,
1478 LayoutEnd,
1479 LAYOUT_AddChild, gow->objects[GID_OPTS_DLDIR] = GetFileObj,
1480 GA_ID, GID_OPTS_DLDIR,
1481 GA_RelVerify, TRUE,
1482 GETFILE_Drawer, nsoption_charp(download_dir),
1483 GETFILE_DrawersOnly, TRUE,
1484 GETFILE_ReadOnly, TRUE,
1485 GETFILE_FullFileExpand, FALSE,
1486 GetFileEnd,
1487 CHILD_Label, LabelObj,
1488 LABEL_Text, gadlab[GID_OPTS_DLDIR],
1489 LabelEnd,
1490 LayoutEnd, // downloads
1491 CHILD_WeightedHeight, 0,
1492 LAYOUT_AddChild, LayoutHObj,
1493 LAYOUT_AddChild, LayoutVObj,
1494 LAYOUT_SpaceOuter, TRUE,
1495 LAYOUT_BevelStyle, BVS_GROUP,
1496 LAYOUT_Label, gadlab[GRP_OPTS_BEHAVIOUR],
1497 LAYOUT_AddChild, gow->objects[GID_OPTS_STARTUP_NO_WIN] = CheckBoxObj,
1499 GA_RelVerify, TRUE,
1501 GA_Selected, nsoption_bool(startup_no_window),
1502 CheckBoxEnd,
1503 LAYOUT_AddChild, gow->objects[GID_OPTS_CLOSE_NO_QUIT] = CheckBoxObj,
1505 GA_RelVerify, TRUE,
1507 GA_Selected, nsoption_bool(close_no_quit),
1508 CheckBoxEnd,
1509 LAYOUT_AddChild, gow->objects[GID_OPTS_DOCKY] = CheckBoxObj,
1510 GA_ID, GID_OPTS_DOCKY,
1511 GA_RelVerify, TRUE,
1512 GA_Text, gadlab[GID_OPTS_DOCKY],
1513 GA_Selected, !nsoption_bool(hide_docky_icon),
1514#ifndef __amigaos4__
1515 GA_Disabled, TRUE,
1516#endif
1517 CheckBoxEnd,
1518 LayoutEnd, // behaviour
1519 CHILD_WeightedHeight, 0,
1520 LayoutEnd, // hgroup
1521 CHILD_WeightedHeight, 0,
1522 LAYOUT_AddChild, LayoutHObj,
1523 LAYOUT_AddChild, LayoutHObj,
1524 LAYOUT_SpaceOuter, TRUE,
1525 LAYOUT_BevelStyle, BVS_GROUP,
1526 LAYOUT_Label, gadlab[GRP_OPTS_CLIPBOARD],
1527 LAYOUT_AddChild, gow->objects[GID_OPTS_CLIPBOARD] = CheckBoxObj,
1528 GA_ID, GID_OPTS_CLIPBOARD,
1529 GA_RelVerify, TRUE,
1530 GA_Text, gadlab[GID_OPTS_CLIPBOARD],
1531 GA_Selected, nsoption_bool(clipboard_write_utf8),
1532 CheckBoxEnd,
1533 LayoutEnd, // clipboard
1534 CHILD_WeightedHeight, 0,
1535 LAYOUT_AddChild, LayoutHObj,
1536 LAYOUT_SpaceOuter, TRUE,
1537 LAYOUT_BevelStyle, BVS_GROUP,
1538 LAYOUT_Label, gadlab[GRP_OPTS_SEARCH],
1539 LAYOUT_AddChild, gow->objects[GID_OPTS_SEARCH_PROV] = ChooserObj,
1540 GA_ID, GID_OPTS_SEARCH_PROV,
1541 GA_RelVerify, TRUE,
1542 CHOOSER_PopUp, TRUE,
1543 CHOOSER_Labels, websearch_list,
1544 CHOOSER_Selected, gow->websearch_idx,
1545 CHOOSER_MaxLabels, 40,
1546 ChooserEnd,
1547 CHILD_Label, LabelObj,
1548 LABEL_Text, gadlab[GID_OPTS_SEARCH_PROV],
1549 LabelEnd,
1550 LayoutEnd, // search
1551 CHILD_WeightedHeight, 0,
1552 LayoutEnd, // hgroup
1553 CHILD_WeightedHeight, 0,
1554 LAYOUT_AddChild, LayoutHObj,
1555 LAYOUT_BevelStyle, BVS_GROUP,
1556 LAYOUT_Label, gadlab[GRP_OPTS_MISC],
1557 LAYOUT_SpaceOuter, TRUE,
1558 LAYOUT_AddChild, gow->objects[GID_OPTS_FASTSCROLL] = CheckBoxObj,
1559 GA_ID, GID_OPTS_FASTSCROLL,
1560 GA_RelVerify, TRUE,
1561 GA_Text, gadlab[GID_OPTS_FASTSCROLL],
1562 GA_Selected, nsoption_bool(faster_scroll),
1563 CheckBoxEnd,
1564 LAYOUT_AddChild, gow->objects[GID_OPTS_SELECTMENU] = CheckBoxObj,
1565 GA_ID, GID_OPTS_SELECTMENU,
1566 GA_RelVerify, TRUE,
1567 GA_Text, gadlab[GID_OPTS_SELECTMENU],
1568 GA_Selected, !nsoption_bool(core_select_menu),
1569 GA_Disabled, !ami_selectmenu_is_safe(),
1570 CheckBoxEnd,
1571 LAYOUT_AddChild, gow->objects[GID_OPTS_ENABLECSS] = CheckBoxObj,
1572 GA_ID, GID_OPTS_ENABLECSS,
1573 GA_RelVerify, TRUE,
1574 GA_Text, gadlab[GID_OPTS_ENABLECSS],
1575 GA_Selected, nsoption_bool(author_level_css),
1576 CheckBoxEnd,
1577 LayoutEnd, // misc
1578 CHILD_WeightedHeight, 0,
1579
1580 LayoutEnd, // page vgroup
1581 CHILD_WeightedHeight, 0,
1582 PageEnd, // page object
1583 /*
1584 ** Export
1585 */
1586#ifdef WITH_PDF_EXPORT
1587 PAGE_Add, LayoutVObj,
1588 LAYOUT_AddChild, LayoutVObj,
1589 LAYOUT_AddChild, LayoutHObj,
1590 LAYOUT_SpaceOuter, TRUE,
1591 LAYOUT_BevelStyle, BVS_GROUP,
1592 LAYOUT_Label, gadlab[GRP_OPTS_MARGINS],
1593 LAYOUT_AddChild, LayoutHObj,
1594 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1595 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_TOP] = IntegerObj,
1596 GA_ID, GID_OPTS_MARGIN_TOP,
1597 GA_RelVerify, TRUE,
1598 INTEGER_Number, nsoption_int(margin_top),
1599 INTEGER_Minimum, 0,
1600 INTEGER_Maximum, 99,
1601 INTEGER_Arrows, TRUE,
1602 IntegerEnd,
1603 CHILD_WeightedWidth, 0,
1604 CHILD_Label, LabelObj,
1605 LABEL_Text, gadlab[LAB_OPTS_MM],
1606 LabelEnd,
1607 LayoutEnd,
1608 CHILD_Label, LabelObj,
1609 LABEL_Text, gadlab[GID_OPTS_MARGIN_TOP],
1610 LabelEnd,
1611 LAYOUT_AddChild, LayoutHObj,
1612 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1613 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_LEFT] = IntegerObj,
1614 GA_ID, GID_OPTS_MARGIN_LEFT,
1615 GA_RelVerify, TRUE,
1616 INTEGER_Number, nsoption_int(margin_left),
1617 INTEGER_Minimum, 0,
1618 INTEGER_Maximum, 99,
1619 INTEGER_Arrows, TRUE,
1620 IntegerEnd,
1621 CHILD_WeightedWidth, 0,
1622 CHILD_Label, LabelObj,
1623 LABEL_Text, gadlab[LAB_OPTS_MM],
1624 LabelEnd,
1625 LayoutEnd,
1626 CHILD_Label, LabelObj,
1627 LABEL_Text, gadlab[GID_OPTS_MARGIN_LEFT],
1628 LabelEnd,
1629 LAYOUT_AddChild, LayoutHObj,
1630 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1631 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_BOTTOM] = IntegerObj,
1633 GA_RelVerify, TRUE,
1634 INTEGER_Number, nsoption_int(margin_bottom),
1635 INTEGER_Minimum, 0,
1636 INTEGER_Maximum, 99,
1637 INTEGER_Arrows, TRUE,
1638 IntegerEnd,
1639 CHILD_WeightedWidth, 0,
1640 CHILD_Label, LabelObj,
1641 LABEL_Text, gadlab[LAB_OPTS_MM],
1642 LabelEnd,
1643 LayoutEnd,
1644 CHILD_Label, LabelObj,
1645 LABEL_Text, gadlab[GID_OPTS_MARGIN_BOTTOM],
1646 LabelEnd,
1647 LAYOUT_AddChild, LayoutHObj,
1648 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1649 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_RIGHT] = IntegerObj,
1650 GA_ID, GID_OPTS_MARGIN_RIGHT,
1651 GA_RelVerify, TRUE,
1652 INTEGER_Number, nsoption_int(margin_right),
1653 INTEGER_Minimum, 0,
1654 INTEGER_Maximum, 99,
1655 INTEGER_Arrows, TRUE,
1656 IntegerEnd,
1657 CHILD_WeightedWidth, 0,
1658 CHILD_Label, LabelObj,
1659 LABEL_Text, gadlab[LAB_OPTS_MM],
1660 LabelEnd,
1661 LayoutEnd,
1662 CHILD_Label, LabelObj,
1663 LABEL_Text, gadlab[GID_OPTS_MARGIN_RIGHT],
1664 LabelEnd,
1665 LayoutEnd, // margins
1666 CHILD_WeightedHeight, 0,
1667 LAYOUT_AddChild, LayoutVObj,
1668 LAYOUT_SpaceOuter, TRUE,
1669 LAYOUT_BevelStyle, BVS_GROUP,
1670 LAYOUT_Label, gadlab[GRP_OPTS_SCALING],
1671 LAYOUT_AddChild, LayoutHObj,
1672 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1673 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_SCALE] = IntegerObj,
1674 GA_ID, GID_OPTS_EXPORT_SCALE,
1675 GA_RelVerify, TRUE,
1676 INTEGER_Number, nsoption_int(export_scale),
1677 INTEGER_Minimum, 0,
1678 INTEGER_Maximum, 100,
1679 INTEGER_Arrows, TRUE,
1680 IntegerEnd,
1681 CHILD_WeightedWidth, 0,
1682 CHILD_Label, LabelObj,
1683 LABEL_Text, "%",
1684 LabelEnd,
1685 LayoutEnd,
1686 CHILD_Label, LabelObj,
1687 LABEL_Text, gadlab[GID_OPTS_EXPORT_SCALE],
1688 LabelEnd,
1689 LayoutEnd, // scaling
1690 CHILD_WeightedHeight, 0,
1691 LAYOUT_AddChild, LayoutVObj,
1692 LAYOUT_SpaceOuter, TRUE,
1693 LAYOUT_BevelStyle, BVS_GROUP,
1694 LAYOUT_Label, gadlab[GRP_OPTS_APPEARANCE],
1695 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_NOIMAGES] = CheckBoxObj,
1697 GA_RelVerify, TRUE,
1699 GA_Selected, nsoption_bool(suppress_images),
1700 CheckBoxEnd,
1701 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_NOBKG] = CheckBoxObj,
1702 GA_ID, GID_OPTS_EXPORT_NOBKG,
1703 GA_RelVerify, TRUE,
1704 GA_Text, gadlab[GID_OPTS_EXPORT_NOBKG],
1705 GA_Selected, nsoption_bool(remove_backgrounds),
1706 CheckBoxEnd,
1707 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_LOOSEN] = CheckBoxObj,
1709 GA_RelVerify, TRUE,
1711 GA_Selected, nsoption_bool(enable_loosening),
1712 CheckBoxEnd,
1713 LayoutEnd, // appearance
1714 CHILD_WeightedHeight, 0,
1715 LAYOUT_AddChild, LayoutVObj,
1716 LAYOUT_SpaceOuter, TRUE,
1717 LAYOUT_BevelStyle, BVS_GROUP,
1718 LAYOUT_Label, gadlab[GRP_OPTS_ADVANCED],
1719 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_COMPRESS] = CheckBoxObj,
1721 GA_RelVerify, TRUE,
1723 GA_Selected, nsoption_bool(enable_PDF_compression),
1724 CheckBoxEnd,
1725 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_PASSWORD] = CheckBoxObj,
1727 GA_RelVerify, TRUE,
1728 GA_Disabled, TRUE,
1730 GA_Selected, nsoption_bool(enable_PDF_password),
1731 CheckBoxEnd,
1732 LayoutEnd, // export
1733 CHILD_WeightedHeight, 0,
1734 LayoutEnd, // page vgroup
1735 CHILD_WeightedHeight, 0,
1736 PageEnd, // page object
1737#endif
1738 End, // pagegroup
1739 ClickTabEnd,
1740 LAYOUT_AddChild, LayoutHObj,
1741 LAYOUT_AddChild, gow->objects[GID_OPTS_SAVE] = ButtonObj,
1742 GA_ID,GID_OPTS_SAVE,
1743 GA_Text,gadlab[GID_OPTS_SAVE],
1744 GA_RelVerify,TRUE,
1745 ButtonEnd,
1746 LAYOUT_AddChild, gow->objects[GID_OPTS_USE] = ButtonObj,
1747 GA_ID,GID_OPTS_USE,
1748 GA_Text,gadlab[GID_OPTS_USE],
1749 GA_RelVerify,TRUE,
1750 ButtonEnd,
1751 LAYOUT_AddChild, gow->objects[GID_OPTS_CANCEL] = ButtonObj,
1752 GA_ID,GID_OPTS_CANCEL,
1753 GA_Text,gadlab[GID_OPTS_CANCEL],
1754 GA_RelVerify,TRUE,
1755 ButtonEnd,
1756 EndGroup, // save/use/cancel
1757 EndGroup, // main
1758 EndWindow;
1759
1760 gow->win = (struct Window *)RA_OpenWindow(gow->objects[OID_MAIN]);
1762 }
1763 ami_utf8_free(homepage_url_lc);
1764}
1765
1766static void ami_gui_opts_use(bool save)
1767{
1768 ULONG data, id = 0;
1769 struct Node *tmp_node = NULL;
1770 struct TextAttr *tattr;
1771 char *dot;
1772 char *label = NULL;
1773 bool rescan_fonts = false;
1774 bool old_tab_always_show;
1775
1777
1778 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_HOMEPAGE],(ULONG *)&data);
1779 nsoption_set_charp(homepage_url, (char *)ami_to_utf8_easy((char *)data));
1780
1781 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_CONTENTLANG],(ULONG *)&data);
1782 nsoption_set_charp(accept_language, (char *)strdup((char *)data));
1783
1784 GetAttr(GA_Selected, gow->objects[GID_OPTS_FROMLOCALE],(ULONG *)&data);
1785 if (data) {
1786 nsoption_set_bool(accept_lang_locale, true);
1787 } else {
1788 nsoption_set_bool(accept_lang_locale, false);
1789 }
1790
1791 GetAttr(GA_Selected,gow->objects[GID_OPTS_HIDEADS],(ULONG *)&data);
1792 if (data) {
1793 nsoption_set_bool(block_advertisements, true);
1794 } else {
1795 nsoption_set_bool(block_advertisements, false);
1796 }
1797
1798 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_HISTORY],(ULONG *)&nsoption_int(expire_url));
1799
1800 GetAttr(GA_Selected,gow->objects[GID_OPTS_REFERRAL],(ULONG *)&data);
1801 if (data) {
1802 nsoption_set_bool(send_referer, true);
1803 } else {
1804 nsoption_set_bool(send_referer, false);
1805 }
1806
1807 GetAttr(GA_Selected,gow->objects[GID_OPTS_JAVASCRIPT],(ULONG *)&data);
1808 if (data) {
1809 nsoption_set_bool(enable_javascript, true);
1810 } else {
1811 nsoption_set_bool(enable_javascript, false);
1812 }
1813
1814 ami_gui_menu_set_checked(NULL, M_JS, nsoption_bool(enable_javascript));
1815
1816 GetAttr(GA_Selected,gow->objects[GID_OPTS_DONOTTRACK],(ULONG *)&data);
1817 if (data) {
1818 nsoption_set_bool(do_not_track, true);
1819 } else {
1820 nsoption_set_bool(do_not_track, false);
1821 }
1822
1823 GetAttr(GA_Selected,gow->objects[GID_OPTS_ENABLECSS],(ULONG *)&data);
1824 if (data) {
1825 nsoption_set_bool(author_level_css, true);
1826 } else {
1827 nsoption_set_bool(author_level_css, false);
1828 }
1829
1830 ami_gui_menu_set_checked(NULL, M_CSS, nsoption_bool(author_level_css));
1831
1832 GetAttr(GA_Selected,gow->objects[GID_OPTS_FASTSCROLL],(ULONG *)&data);
1833 if (data) {
1834 nsoption_set_bool(faster_scroll, true);
1835 } else {
1836 nsoption_set_bool(faster_scroll, false);
1837 }
1838
1839 GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
1840 switch(data)
1841 {
1842 case 0:
1843 nsoption_set_charp(pubscreen_name, NULL);
1844 break;
1845
1846 case 1:
1847 nsoption_set_charp(pubscreen_name, (char *)strdup("Workbench"));
1848 break;
1849
1850 case 2:
1851 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_SCREENNAME],(ULONG *)&data);
1852 nsoption_set_charp(pubscreen_name, (char *)strdup((char *)data));
1853 break;
1854 }
1855
1856 GetAttr(GETSCREENMODE_DisplayID, gow->objects[GID_OPTS_SCREENMODE], (ULONG *)&id);
1857 if(id)
1858 {
1859 char *modeid = malloc(20);
1860 sprintf(modeid,"0x%lx", id);
1861 nsoption_set_charp(screen_modeid, modeid);
1862 }
1863
1864 GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
1865 if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
1866 nsoption_set_bool(window_simple_refresh, true);
1867 nsoption_set_int(screen_compositing, 0);
1868 } else if ((data == FALSE) && (nsoption_bool(window_simple_refresh) == true)) {
1869 nsoption_set_bool(window_simple_refresh, false);
1870 nsoption_set_int(screen_compositing, -1);
1871 }
1872
1873 GetAttr(GETFILE_Drawer,gow->objects[GID_OPTS_THEME],(ULONG *)&data);
1874 nsoption_set_charp(theme, (char *)strdup((char *)data));
1875
1876 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_THEMEPAGE],(ULONG *)&data);
1877 if(data) {
1878 nsoption_set_bool(prefer_dark_mode, true);
1879 } else {
1880 nsoption_set_bool(prefer_dark_mode, false);
1881 }
1882
1883 GetAttr(GA_Selected,gow->objects[GID_OPTS_PTRTRUE],(ULONG *)&data);
1884 if (data) {
1885 nsoption_set_bool(truecolour_mouse_pointers, true);
1886 } else {
1887 nsoption_set_bool(truecolour_mouse_pointers, false);
1888 }
1889
1890 GetAttr(GA_Selected,gow->objects[GID_OPTS_PTROS],(ULONG *)&data);
1891 if (data) {
1892 nsoption_set_bool(os_mouse_pointers, true);
1893 } else {
1894 nsoption_set_bool(os_mouse_pointers, false);
1895 }
1896
1897 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
1898 if(data)
1899 {
1900 nsoption_set_bool(http_proxy, true);
1901 nsoption_set_int(http_proxy_auth, data - 1);
1902 }
1903 else
1904 {
1905 nsoption_set_bool(http_proxy, false);
1906 }
1907
1908 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_HOST],(ULONG *)&data);
1909 nsoption_set_charp(http_proxy_host, (char *)strdup((char *)data));
1910
1911 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_PROXY_PORT],(ULONG *)&nsoption_int(http_proxy_port));
1912
1913 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_USER],(ULONG *)&data);
1914 nsoption_set_charp(http_proxy_auth_user, (char *)strdup((char *)data));
1915
1916 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_PASS],(ULONG *)&data);
1917 nsoption_set_charp(http_proxy_auth_pass, (char *)strdup((char *)data));
1918
1919 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
1920 nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
1921
1922 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
1923 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
1924 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
1925
1926 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
1927
1928 GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
1929 if (data) {
1930 nsoption_set_bool(scale_quality, true);
1931 } else {
1932 nsoption_set_bool(scale_quality, false);
1933 }
1934
1935 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
1936
1937 GetAttr(GA_Selected,gow->objects[GID_OPTS_ANIMDISABLE],(ULONG *)&data);
1938 if(data) {
1939 nsoption_set_bool(animate_images, false);
1940 } else {
1941 nsoption_set_bool(animate_images, true);
1942 }
1943
1944 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_DPI_Y],(ULONG *)&nsoption_int(screen_ydpi));
1945 ami_font_setdevicedpi(id); // id set above
1946
1947 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_SANS],(ULONG *)&data);
1948 tattr = (struct TextAttr *)data;
1949
1950 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1951 nsoption_set_charp(font_sans, (char *)strdup((char *)tattr->ta_Name));
1952
1953 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_SERIF],(ULONG *)&data);
1954 tattr = (struct TextAttr *)data;
1955
1956 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1957 nsoption_set_charp(font_serif, (char *)strdup((char *)tattr->ta_Name));
1958
1959 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_MONO],(ULONG *)&data);
1960 tattr = (struct TextAttr *)data;
1961
1962 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1963 nsoption_set_charp(font_mono, (char *)strdup((char *)tattr->ta_Name));
1964
1965 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_CURSIVE],(ULONG *)&data);
1966 tattr = (struct TextAttr *)data;
1967
1968 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1969 nsoption_set_charp(font_cursive, (char *)strdup((char *)tattr->ta_Name));
1970
1971 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_FANTASY],(ULONG *)&data);
1972 tattr = (struct TextAttr *)data;
1973
1974 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1975 nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
1976
1977 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
1978 nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
1979
1980 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
1981 nsoption_set_int(font_size, nsoption_int(font_size) * 10);
1982
1983 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_MINSIZE],(ULONG *)&nsoption_int(font_min_size));
1984 nsoption_set_int(font_min_size, nsoption_int(font_min_size) * 10);
1985
1986 GetAttr(GA_Selected, gow->objects[GID_OPTS_FONT_ANTIALIASING], (ULONG *)&data);
1987 if(data) {
1988 nsoption_set_bool(font_antialiasing, true);
1989 } else {
1990 nsoption_set_bool(font_antialiasing, false);
1991 }
1992
1993 GetAttr(CHOOSER_Selected, gow->objects[GID_OPTS_FONT_BITMAP], (ULONG *)&data);
1994 ami_font_fini();
1995
1996 if(data) {
1997 nsoption_set_bool(bitmap_fonts, true);
1998 } else {
1999 nsoption_set_bool(bitmap_fonts, false);
2000 }
2001 ami_font_init();
2002
2003 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_CACHE_MEM],(ULONG *)&nsoption_int(memory_cache_size));
2004 nsoption_set_int(memory_cache_size, nsoption_int(memory_cache_size) * 1048576);
2005
2006 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_CACHE_DISC],(ULONG *)&nsoption_uint(disc_cache_size));
2007 nsoption_set_uint(disc_cache_size, nsoption_uint(disc_cache_size) * 1048576);
2008
2009 GetAttr(GA_Selected,gow->objects[GID_OPTS_OVERWRITE],(ULONG *)&data);
2010 if (data) {
2011 nsoption_set_bool(ask_overwrite, true);
2012 } else {
2013 nsoption_set_bool(ask_overwrite, false);
2014 }
2015
2016 GetAttr(GA_Selected,gow->objects[GID_OPTS_NOTIFY],(ULONG *)&data);
2017 if (data) {
2018 nsoption_set_bool(download_notify, true);
2019 } else {
2020 nsoption_set_bool(download_notify, false);
2021 }
2022
2023 GetAttr(GETFILE_Drawer,gow->objects[GID_OPTS_DLDIR],(ULONG *)&data);
2024 if((nsoption_charp(download_dir) == NULL) ||
2025 (strcmp((char *)data, nsoption_charp(download_dir)) != 0)) {
2026 nsoption_set_charp(download_dir, (char *)strdup((char *)data));
2029 }
2030
2031 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_ACTIVE],(ULONG *)&data);
2032 if (data) {
2033 nsoption_set_bool(foreground_new, false);
2034 } else {
2035 nsoption_set_bool(foreground_new, true);
2036 }
2037
2038 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_2],(ULONG *)&data);
2039 if (data) {
2040 nsoption_set_bool(button_2_tab, true);
2041 } else {
2042 nsoption_set_bool(button_2_tab, false);
2043 }
2044
2045 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_CLOSE],(ULONG *)&data);
2046 if (data) {
2047 nsoption_set_bool(tab_close_warn, true);
2048 } else {
2049 nsoption_set_bool(tab_close_warn, false);
2050 }
2051
2052 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_ALWAYS],(ULONG *)&data);
2053 old_tab_always_show = nsoption_bool(tab_always_show);
2054
2055 if (data) {
2056 nsoption_set_bool(tab_always_show, true);
2057 } else {
2058 nsoption_set_bool(tab_always_show, false);
2059 }
2060
2061 if(old_tab_always_show != nsoption_bool(tab_always_show))
2063
2064#ifdef __amigaos4__
2065 GetAttr(CHOOSER_SelectedNode, gow->objects[GID_OPTS_SEARCH_PROV],(ULONG *)&tmp_node);
2066 if(tmp_node != NULL) {
2067 GetChooserNodeAttrs(tmp_node, CNA_Text, (ULONG *)&label, TAG_DONE);
2068 nsoption_set_charp(search_web_provider, strdup((char *)label));
2069 }
2070#else
2071 GetAttr(CHOOSER_Selected, gow->objects[GID_OPTS_SEARCH_PROV],(ULONG *)&gow->websearch_idx);
2072 /* TODO: convert back to string, only required OS<3.2 */
2073#endif
2074
2075 search_web_select_provider(nsoption_charp(search_web_provider));
2076
2077 GetAttr(GA_Selected,gow->objects[GID_OPTS_CLIPBOARD],(ULONG *)&data);
2078 if (data) {
2079 nsoption_set_bool(clipboard_write_utf8, true);
2080 } else {
2081 nsoption_set_bool(clipboard_write_utf8, false);
2082 }
2083
2084 GetAttr(GA_Selected,gow->objects[GID_OPTS_SELECTMENU],(ULONG *)&data);
2085 if (data) {
2086 nsoption_set_bool(core_select_menu, false);
2087 } else {
2088 nsoption_set_bool(core_select_menu, true);
2089 }
2090
2091 GetAttr(GA_Selected,gow->objects[GID_OPTS_STARTUP_NO_WIN],(ULONG *)&data);
2092 if (data) {
2093 nsoption_set_bool(startup_no_window, true);
2094 } else {
2095 nsoption_set_bool(startup_no_window, false);
2096 }
2097
2098 GetAttr(GA_Selected,gow->objects[GID_OPTS_CLOSE_NO_QUIT],(ULONG *)&data);
2099 if (data) {
2100 nsoption_set_bool(close_no_quit, true);
2101 } else {
2102 nsoption_set_bool(close_no_quit, false);
2103 }
2104
2105 GetAttr(GA_Selected,gow->objects[GID_OPTS_DOCKY],(ULONG *)&data);
2106 if (data) {
2107 nsoption_set_bool(hide_docky_icon, false);
2108 } else {
2109 nsoption_set_bool(hide_docky_icon, true);
2110 }
2111
2112#ifdef WITH_PDF_EXPORT
2113 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_TOP],(ULONG *)&nsoption_int(margin_top));
2114
2115 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_LEFT],(ULONG *)&nsoption_int(margin_left));
2116
2117 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_BOTTOM],(ULONG *)&nsoption_int(margin_bottom));
2118
2119 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_RIGHT],(ULONG *)&nsoption_int(margin_right));
2120
2121 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_EXPORT_SCALE],(ULONG *)&nsoption_int(export_scale));
2122
2123 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_NOIMAGES],(ULONG *)&data);
2124 if (data) {
2125 nsoption_set_bool(suppress_images, true);
2126 } else {
2127 nsoption_set_bool(suppress_images, false);
2128 }
2129
2130 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_NOBKG],(ULONG *)&data);
2131 if (data) {
2132 nsoption_set_bool(remove_backgrounds, true);
2133 } else {
2134 nsoption_set_bool(remove_backgrounds, false);
2135 }
2136
2137 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_LOOSEN],(ULONG *)&data);
2138 if (data) {
2139 nsoption_set_bool(enable_loosening, true);
2140 } else {
2141 nsoption_set_bool(enable_loosening, false);
2142 }
2143
2144 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_COMPRESS],(ULONG *)&data);
2145 if (data) {
2146 nsoption_set_bool(enable_PDF_compression, true);
2147 } else {
2148 nsoption_set_bool(enable_PDF_compression, false);
2149 }
2150
2151 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_PASSWORD],(ULONG *)&data);
2152 if (data) {
2153 nsoption_set_bool(enable_PDF_password, true);
2154 } else {
2155 nsoption_set_bool(enable_PDF_password, false);
2156 }
2157#endif
2158
2159 if(rescan_fonts == true) {
2161 ami_font_initscanner(true, false);
2162 }
2163
2164 if(save == true) {
2166 ami_font_savescanner(); /* just in case it has changed and been used only */
2167 }
2168
2171}
2172
2173static void ami_gui_opts_close(void *w)
2174{
2175 DisposeObject(gow->objects[OID_MAIN]);
2178 gow = NULL;
2179}
2180
2181static BOOL ami_gui_opts_event(void *w)
2182{
2183 /* return TRUE if window destroyed */
2184 ULONG result,data = 0;
2185 uint16 code;
2186 STRPTR text;
2187
2188 while((result = RA_HandleInput(gow->objects[OID_MAIN],&code)) != WMHI_LASTMSG)
2189 {
2190 switch(result & WMHI_CLASSMASK) // class
2191 {
2192 case WMHI_CLOSEWINDOW:
2194 return TRUE;
2195 break;
2196
2197 case WMHI_GADGETHELP:
2198#if 0
2199 /* FIXME: this is firing on OS3.2 and OS4 without HELP being pressed */
2200 if((result & WMHI_GADGETMASK) == 0) {
2201 /* Pointer not over our window */
2203 } else {
2204 /* TODO: Make this sensitive to the tab the user is currently on */
2206 }
2207#endif
2208 break;
2209
2210 case WMHI_GADGETUP:
2211 switch(result & WMHI_GADGETMASK)
2212 {
2213 case GID_OPTS_SAVE:
2214 ami_gui_opts_use(true);
2216 return TRUE;
2217 break;
2218
2219 case GID_OPTS_USE:
2220 ami_gui_opts_use(false);
2221 // fall through
2222
2223 case GID_OPTS_CANCEL:
2225 return TRUE;
2226 break;
2227
2230 gow->win,NULL,STRINGA_TextVal,NETSURF_HOMEPAGE,
2231 TAG_DONE);
2232 break;
2233
2236 gow->win, NULL, STRINGA_TextVal,
2238 break;
2239
2242 gow->win, NULL, STRINGA_TextVal,
2243 "about:blank", TAG_DONE);
2244 break;
2245
2248 gow->win, NULL, GA_Disabled, code, TAG_DONE);
2249
2250 if(code && (text = ami_locale_langs(NULL)))
2251 {
2253 gow->win, NULL, STRINGA_TextVal, text, TAG_DONE);
2254 FreeVec(text);
2255 }
2256 break;
2257
2258 case GID_OPTS_SCREEN:
2259 GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
2260 switch(data)
2261 {
2262 case 0:
2264 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2266 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2267 break;
2268
2269 case 1:
2271 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2273 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2274 break;
2275
2276 case 2:
2278 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2280 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2281 break;
2282 }
2283 break;
2284
2287 GSM_REQUEST,gow->win);
2288 break;
2289
2290 case GID_OPTS_THEME:
2292 GFILE_REQUEST,gow->win);
2293 break;
2294
2295 case GID_OPTS_PROXY:
2296 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
2297 switch(data)
2298 {
2299 case 0:
2301 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2303 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2304
2306 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2308 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2310 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2311 break;
2312 case 1:
2314 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2316 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2317
2319 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2321 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2323 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2324 break;
2325
2326 case 2:
2327 case 3:
2329 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2331 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2332
2334 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2336 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2338 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2339 break;
2340 }
2341 break;
2342
2344 break;
2345
2346 case GID_OPTS_FONT_SANS:
2348 GFONT_REQUEST,gow->win);
2349 break;
2350
2353 GFONT_REQUEST,gow->win);
2354 break;
2355
2356 case GID_OPTS_FONT_MONO:
2358 GFONT_REQUEST,gow->win);
2359 break;
2360
2363 GFONT_REQUEST,gow->win);
2364 break;
2365
2368 GFONT_REQUEST,gow->win);
2369 break;
2370
2372 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_BITMAP],(ULONG *)&data);
2373 if(data) {
2375 } else {
2377 }
2378 break;
2379
2380 case GID_OPTS_DLDIR:
2382 GFILE_REQUEST,gow->win);
2383 break;
2384 }
2385 break;
2386 }
2387 }
2388 return FALSE;
2389}
2390
2391struct List *ami_gui_opts_websearch(int *idx)
2392{
2393 struct List *list;
2394 struct Node *node;
2395 const char *name;
2396 int i = 0;
2397 int iter;
2398
2399 list = malloc(sizeof(struct List));
2400 NewList(list);
2401
2402 for (iter = search_web_iterate_providers(-1, &name);
2403 iter != -1;
2404 iter = search_web_iterate_providers(iter, &name)) {
2405 node = AllocChooserNode(CNA_Text, name, TAG_DONE);
2406 AddTail(list, node);
2407 if(idx != NULL) {
2408 if((nsoption_charp(search_web_provider)) && (strcmp(name, nsoption_charp(search_web_provider)) == 0)) {
2409 *idx = i;
2410 }
2411 }
2412 i++;
2413 }
2414
2415 return list;
2416}
2417
2418void ami_gui_opts_websearch_free(struct List *websearchlist)
2419{
2420 struct Node *node;
2421 struct Node *nnode;
2422
2423 if(websearchlist == NULL) return;
2424 if(IsListEmpty(websearchlist)) return;
2425 node = GetHead(websearchlist);
2426
2427 do {
2428 nnode = GetSucc(node);
2429 Remove(node);
2430 FreeChooserNode(node);
2431 } while((node = nnode));
2432
2433 free(websearchlist);
2434}
2435
struct Screen * ami_gui_get_screen(void)
Get a pointer to the screen NetSurf is running on.
Definition: gui.c:404
nserror ami_gui_win_list_add(void *win, int type, const struct ami_win_event_table *table)
Add a window to the NetSurf window list (to enable event processing)
Definition: gui.c:4644
struct gui_window * ami_gui_get_active_gw(void)
Get a pointer to the gui_window which NetSurf considers to be the current/active one.
Definition: gui.c:399
STRPTR ami_gui_get_screen_title(void)
Get the string for NetSurf's screen titlebar.
Definition: gui.c:1018
STRPTR ami_locale_langs(int *codeset)
Definition: gui.c:703
void ami_gui_win_list_remove(void *win)
Remove a window from the NetSurf window list.
Definition: gui.c:4658
struct browser_window * ami_gui_get_browser_window(struct gui_window *gw)
Get browser window from gui_window.
Definition: gui.c:420
void ami_gui_tabs_toggle_all(void)
Definition: gui.c:4287
struct MsgPort * ami_gui_get_shared_msgport(void)
Get shared message port.
void ami_help_open(ULONG node, struct Screen *screen)
Definition: help.c:50
@ AMI_HELP_PREFS
Definition: help.h:27
@ AMI_HELP_MAIN
Definition: help.h:25
char * translate_escape_chars(const char *s)
returns a string with escape chars translated and string converted to local charset (based on remove_...
Definition: misc.c:246
bool ami_plot_screen_is_palettemapped(void)
Definition: plotters.c:544
void ami_update_pointer(struct Window *win, gui_pointer_shape shape)
Definition: theme.c:221
STATIC char result[100]
Definition: arexx.c:77
Browser window creation and manipulation interface.
struct nsurl * browser_window_access_url(const struct browser_window *bw)
Access a browser window's URL.
nserror search_web_select_provider(const char *selection)
Change the currently selected web search provider.
Definition: searchweb.c:403
ssize_t search_web_iterate_providers(ssize_t iter, const char **name)
Iterate the search providers, returning their names.
Definition: searchweb.c:512
const char * type
Definition: filetype.cpp:44
void ami_font_finiscanner(void)
Definition: font_bullet.c:918
void ami_font_initscanner(bool force, bool save)
Definition: font_bullet.c:913
void ami_font_savescanner(void)
Definition: font_bullet.c:923
void ami_file_req_free(void)
Definition: file.c:300
void ami_file_req_init(void)
Definition: file.c:281
void ami_font_init(void)
Definition: font.c:109
void ami_font_setdevicedpi(int id)
Definition: font.c:50
void ami_font_fini(void)
Definition: font.c:140
nserror ami_nsoption_write(void)
Definition: nsoption.c:34
@ AMINS_GUIOPTSWINDOW
Definition: object.h:34
void ami_utf8_free(char *ptr)
Definition: utf8.c:104
char * ami_to_utf8_easy(const char *string)
Definition: utf8.c:119
char * ami_utf8_easy(const char *string)
Definition: utf8.c:109
static char * download_dir
Current download directory.
Definition: download.c:144
void ami_gui_menu_set_check_toggled(void)
Sets that an item linked to a toggle menu item has been changed.
Definition: gui_menu.c:795
void ami_gui_menu_set_checked(struct Menu *menu, int item, bool check)
Set checked state of a menu item almost generic, but not quite.
Definition: gui_menu.c:631
@ M_JS
Definition: gui_menu.h:80
@ M_CSS
Definition: gui_menu.h:81
static struct TextAttr default_bm_font_FANTASY
Definition: gui_options.c:257
@ GID_OPTS_HOMEPAGE
Definition: gui_options.c:88
@ GID_OPTS_FROMLOCALE
Definition: gui_options.c:94
@ GID_OPTS_DOCKY
Definition: gui_options.c:149
@ GID_OPTS_FONT_CURSIVE
Definition: gui_options.c:128
@ GID_OPTS_CONTENTLANG
Definition: gui_options.c:93
@ GID_OPTS_FONT_FANTASY
Definition: gui_options.c:129
@ GID_OPTS_PROXY_BYPASS
Definition: gui_options.c:116
@ GID_OPTS_MARGIN_BOTTOM
Definition: gui_options.c:152
@ GID_OPTS_SCREENNAME
Definition: gui_options.c:103
@ GID_OPTS_HISTORY
Definition: gui_options.c:95
@ GID_OPTS_NOTIFY
Definition: gui_options.c:138
@ GID_OPTS_SELECTMENU
Definition: gui_options.c:146
@ GID_OPTS_TAB_ALWAYS
Definition: gui_options.c:142
@ GID_OPTS_OVERWRITE
Definition: gui_options.c:137
@ GID_OPTS_SCREENMODE
Definition: gui_options.c:102
@ GID_OPTS_TAB_CLOSE
Definition: gui_options.c:143
@ GID_OPTS_MARGIN_TOP
Definition: gui_options.c:150
@ GID_OPTS_FONT_MINSIZE
Definition: gui_options.c:132
@ GID_OPTS_PROXY
Definition: gui_options.c:111
@ GID_OPTS_STARTUP_NO_WIN
Definition: gui_options.c:147
@ GID_OPTS_FONT_SANS
Definition: gui_options.c:125
@ OID_MAIN
Definition: gui_options.c:86
@ GID_OPTS_PTROS
Definition: gui_options.c:110
@ GID_OPTS_PROXY_PORT
Definition: gui_options.c:113
@ GID_OPTS_FETCHHOST
Definition: gui_options.c:118
@ GID_OPTS_FETCHCACHE
Definition: gui_options.c:119
@ GID_OPTS_THEMEPAGE
Definition: gui_options.c:106
@ GID_OPTS_FONT_ANTIALIASING
Definition: gui_options.c:133
@ GID_OPTS_LIGHT
Definition: gui_options.c:108
@ GID_OPTS_HOMEPAGE_CURRENT
Definition: gui_options.c:90
@ GID_OPTS_FETCHMAX
Definition: gui_options.c:117
@ GID_OPTS_DLDIR
Definition: gui_options.c:139
@ GID_OPTS_NATIVEBM
Definition: gui_options.c:120
@ GID_OPTS_SEARCH_PROV
Definition: gui_options.c:144
@ GID_OPTS_EXPORT_LOOSEN
Definition: gui_options.c:157
@ GID_OPTS_DPI_Y
Definition: gui_options.c:124
@ GID_OPTS_MARGIN_LEFT
Definition: gui_options.c:151
@ GID_OPTS_REFERRAL
Definition: gui_options.c:98
@ GID_OPTS_HIDEADS
Definition: gui_options.c:92
@ GID_OPTS_HOMEPAGE_DEFAULT
Definition: gui_options.c:89
@ GID_OPTS_EXPORT_PASSWORD
Definition: gui_options.c:159
@ GID_OPTS_FONT_DEFAULT
Definition: gui_options.c:130
@ GID_OPTS_TAB_2
Definition: gui_options.c:141
@ GID_OPTS_DITHERQ
Definition: gui_options.c:122
@ GID_OPTS_SCALEQ
Definition: gui_options.c:121
@ GID_OPTS_JAVASCRIPT
Definition: gui_options.c:96
@ GID_OPTS_EXPORT_NOIMAGES
Definition: gui_options.c:155
@ GID_OPTS_SAVE
Definition: gui_options.c:160
@ GID_OPTS_ENABLECSS
Definition: gui_options.c:97
@ GID_OPTS_FONT_SERIF
Definition: gui_options.c:126
@ GID_OPTS_TAB_ACTIVE
Definition: gui_options.c:140
@ GID_OPTS_CLIPBOARD
Definition: gui_options.c:145
@ GID_OPTS_ANIMDISABLE
Definition: gui_options.c:123
@ GID_OPTS_EXPORT_SCALE
Definition: gui_options.c:154
@ GID_OPTS_EXPORT_COMPRESS
Definition: gui_options.c:158
@ GID_OPTS_DARK
Definition: gui_options.c:107
@ GID_OPTS_EXPORT_NOBKG
Definition: gui_options.c:156
@ GID_OPTS_FONT_BITMAP
Definition: gui_options.c:134
@ GID_OPTS_SCREEN
Definition: gui_options.c:101
@ GID_OPTS_PROXY_HOST
Definition: gui_options.c:112
@ GID_OPTS_CACHE_MEM
Definition: gui_options.c:135
@ GID_OPTS_USE
Definition: gui_options.c:161
@ GID_OPTS_CANCEL
Definition: gui_options.c:162
@ GID_OPTS_CACHE_DISC
Definition: gui_options.c:136
@ GID_OPTS_WIN_SIMPLE
Definition: gui_options.c:104
@ GID_OPTS_DONOTTRACK
Definition: gui_options.c:99
@ GID_OPTS_PTRTRUE
Definition: gui_options.c:109
@ GID_OPTS_FASTSCROLL
Definition: gui_options.c:100
@ GID_OPTS_MAIN
Definition: gui_options.c:87
@ GID_OPTS_THEME
Definition: gui_options.c:105
@ GID_OPTS_CLOSE_NO_QUIT
Definition: gui_options.c:148
@ GID_OPTS_FONT_SIZE
Definition: gui_options.c:131
@ GID_OPTS_PROXY_PASS
Definition: gui_options.c:115
@ GID_OPTS_HOMEPAGE_BLANK
Definition: gui_options.c:91
@ GID_OPTS_PROXY_USER
Definition: gui_options.c:114
@ GID_OPTS_FONT_MONO
Definition: gui_options.c:127
@ GID_OPTS_MARGIN_RIGHT
Definition: gui_options.c:153
@ GID_OPTS_LAST
Definition: gui_options.c:163
static struct TextAttr default_cg_font_MONO
Definition: gui_options.c:268
static CONST_STRPTR ditheropts[OPTS_MAX_DITHER]
Definition: gui_options.c:294
@ GRP_OPTS_IMAGES
Definition: gui_options.c:181
@ GRP_OPTS_SCRIPTING
Definition: gui_options.c:172
@ GRP_OPTS_SCALING
Definition: gui_options.c:194
@ GRP_OPTS_FETCHING
Definition: gui_options.c:180
@ GRP_OPTS_LAST
Definition: gui_options.c:197
@ GRP_OPTS_SEARCH
Definition: gui_options.c:190
@ GRP_OPTS_TABS
Definition: gui_options.c:189
@ GRP_OPTS_MARGINS
Definition: gui_options.c:193
@ GRP_OPTS_MEMCACHE
Definition: gui_options.c:186
@ GRP_OPTS_THEME
Definition: gui_options.c:177
@ GRP_OPTS_DPI
Definition: gui_options.c:183
@ GRP_OPTS_APPEARANCE
Definition: gui_options.c:195
@ GRP_OPTS_BEHAVIOUR
Definition: gui_options.c:192
@ GRP_OPTS_PROXY
Definition: gui_options.c:179
@ GRP_OPTS_WINDOW
Definition: gui_options.c:176
@ GRP_OPTS_CLIPBOARD
Definition: gui_options.c:191
@ GRP_OPTS_ADVANCED
Definition: gui_options.c:196
@ GRP_OPTS_MOUSE
Definition: gui_options.c:178
@ GRP_OPTS_CONTENTBLOCKING
Definition: gui_options.c:169
@ GRP_OPTS_SCREEN
Definition: gui_options.c:175
@ GRP_OPTS_DISCCACHE
Definition: gui_options.c:187
@ GRP_OPTS_PRIVACY
Definition: gui_options.c:173
@ GRP_OPTS_CONTENTLANGUAGE
Definition: gui_options.c:170
@ GRP_OPTS_HISTORY
Definition: gui_options.c:171
@ GRP_OPTS_FONTFACES
Definition: gui_options.c:184
@ GRP_OPTS_DOWNLOADS
Definition: gui_options.c:188
@ GRP_OPTS_ANIMS
Definition: gui_options.c:182
@ GRP_OPTS_FONTSIZE
Definition: gui_options.c:185
@ GRP_OPTS_HOMEPAGE
Definition: gui_options.c:168
@ GRP_OPTS_MISC
Definition: gui_options.c:174
#define OPTS_MAX_DITHER
Definition: gui_options.c:219
#define OPTS_LAST
Definition: gui_options.c:213
static CONST_STRPTR proxyopts[OPTS_MAX_PROXY]
Definition: gui_options.c:292
static struct TextAttr default_cg_font_CURSIVE
Definition: gui_options.c:269
static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
Definition: gui_options.c:302
static CONST_STRPTR tabs[OPTS_MAX_TABS]
Definition: gui_options.c:289
static void ami_gui_opts_close(void *w)
Definition: gui_options.c:2173
#define OPTS_MAX_THEMEPAGE
Definition: gui_options.c:216
static STRPTR screenopts[OPTS_MAX_SCREEN]
Definition: gui_options.c:290
static struct ami_gui_opts_window * gow
Definition: gui_options.c:287
static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
Definition: gui_options.c:555
static struct TextAttr default_bm_font_MONO
Definition: gui_options.c:255
static CONST_STRPTR fontengines[3]
Definition: gui_options.c:296
static struct TextAttr default_bm_font_SERIF
Definition: gui_options.c:254
#define OPTS_MAX_TABS
Definition: gui_options.c:214
static struct TextAttr default_cg_font_SANS
Definition: gui_options.c:266
void ami_gui_opts_websearch_free(struct List *websearchlist)
Definition: gui_options.c:2418
#define AMI_GUI_OPTS_REFRESH_FONT_CG(TYPE)
Definition: gui_options.c:280
static void ami_gui_opts_set_default_fonts(struct ami_gui_opts_window *gow, BOOL outline)
Definition: gui_options.c:359
static void ami_gui_opts_use(bool save)
Definition: gui_options.c:1766
#define OPTS_MAX_SCREEN
Definition: gui_options.c:215
static BOOL ami_gui_opts_event(void *w)
Definition: gui_options.c:2181
static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
Definition: gui_options.c:376
static struct TextAttr default_bm_font_CURSIVE
Definition: gui_options.c:256
static CONST_STRPTR nativebmopts[OPTS_MAX_NATIVEBM]
Definition: gui_options.c:293
static struct TextAttr default_cg_font_SERIF
Definition: gui_options.c:267
@ NSA_LIST_CLICKTAB
Definition: gui_options.c:222
@ NSA_LIST_CHOOSER
Definition: gui_options.c:223
@ NSA_LIST_RADIO
Definition: gui_options.c:224
static CONST_STRPTR pagethemeopts[OPTS_MAX_THEMEPAGE]
Definition: gui_options.c:291
@ LAB_OPTS_WINTITLE
Definition: gui_options.c:202
@ LAB_OPTS_MM
Definition: gui_options.c:208
@ LAB_OPTS_DAYS
Definition: gui_options.c:204
@ LAB_OPTS_SECS
Definition: gui_options.c:205
@ LAB_OPTS_RESTART
Definition: gui_options.c:203
@ LAB_OPTS_DPI
Definition: gui_options.c:209
@ LAB_OPTS_LAST
Definition: gui_options.c:210
@ LAB_OPTS_PT
Definition: gui_options.c:206
@ LAB_OPTS_MB
Definition: gui_options.c:207
static const struct ami_win_event_table ami_guiopts_table
Definition: gui_options.c:247
static struct TextAttr default_bm_font_SANS
Definition: gui_options.c:253
#define AMI_GUI_OPTS_REFRESH_FONT_BM(TYPE)
Definition: gui_options.c:273
static CONST_STRPTR gadlab[OPTS_LAST]
Definition: gui_options.c:297
static void ami_gui_opts_free_list(struct List *list, int type)
Definition: gui_options.c:329
static struct TextAttr default_cg_font_FANTASY
Definition: gui_options.c:270
static struct List * websearch_list
Definition: gui_options.c:299
#define OPTS_MAX_NATIVEBM
Definition: gui_options.c:218
static CONST_STRPTR helphints[OPTS_LAST]
Definition: gui_options.c:298
struct List * ami_gui_opts_websearch(int *idx)
Definition: gui_options.c:2391
static CONST_STRPTR fontopts[6]
Definition: gui_options.c:295
void ami_gui_opts_open(void)
Definition: gui_options.c:590
#define OPTS_MAX_PROXY
Definition: gui_options.c:217
@ GUI_POINTER_WAIT
Definition: mouse.h:127
@ GUI_POINTER_DEFAULT
Definition: mouse.h:113
Interface to platform-specific graphical user interface window operations.
#define LayoutHObj
Definition: libs.h:64
#define CheckBoxObj
Definition: libs.h:55
#define IntegerObj
Definition: libs.h:62
#define PageObj
Definition: libs.h:70
#define GetFileObj
Definition: libs.h:59
#define LabelObj
Definition: libs.h:63
#define WindowObj
Definition: libs.h:77
#define GetFontObj
Definition: libs.h:60
#define ChooserObj
Definition: libs.h:56
#define LayoutVObj
Definition: libs.h:65
#define GetScreenModeObj
Definition: libs.h:61
#define ButtonObj
Definition: libs.h:54
#define RadioButtonObj
Definition: libs.h:72
#define StringObj
Definition: libs.h:76
#define ClickTabObj
Definition: libs.h:57
const char * messages_get(const char *key)
Fast lookup of a message by key from the standard Messages hash.
Definition: messages.c:256
Localised message support (interface).
NetSurf URL handling (interface).
const char * nsurl_access(const nsurl *url)
Access a NetSurf URL object as a string.
char * ASPrintf(const char *fmt,...)
Definition: os3support.c:139
struct Node * GetHead(struct List *list)
Definition: os3support.c:364
ULONG RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1,...)
Definition: os3support.c:429
struct Node * GetSucc(struct Node *node)
Definition: os3support.c:381
#define GetFileEnd
Definition: os3support.h:134
#define LIB_IS_AT_LEAST(B, V, R)
Definition: os3support.h:55
#define GetFontEnd
Definition: os3support.h:135
#define IDoMethod
Definition: os3support.h:169
#define GETFONT_OTagOnly
Definition: os3support.h:73
#define GETFONT_ScalableOnly
Definition: os3support.h:74
#define GA_HintInfo
Definition: os3support.h:78
uint16_t uint16
Definition: os3support.h:182
#define GetScreenModeEnd
Definition: os3support.h:136
@ PLOT_FONT_FAMILY_SANS_SERIF
Definition: plot_style.h:89
core web search facilities interface.
BOOL ami_selectmenu_is_safe()
Opens popupmenu.library to check the version.
Definition: selectmenu.c:194
Interface to utility string handling.
struct List fontenginelist
Definition: gui_options.c:239
Object * objects[GID_OPTS_LAST]
Definition: gui_options.c:230
struct List proxyoptslist
Definition: gui_options.c:235
struct List nativebmoptslist
Definition: gui_options.c:236
struct List pagethemeoptslist
Definition: gui_options.c:234
struct Window * win
Definition: gui_options.c:229
struct List clicktablist
Definition: gui_options.c:232
struct List ditheroptslist
Definition: gui_options.c:237
struct ami_generic_window w
Definition: gui_options.c:228
struct List fontoptslist
Definition: gui_options.c:238
struct List screenoptslist
Definition: gui_options.c:233
Definition: theme.h:64
Option reading and saving interface.
#define nsoption_charp(OPTION)
Get the value of a string option.
Definition: nsoption.h:335
#define nsoption_int(OPTION)
Get the value of an integer option.
Definition: nsoption.h:317
#define nsoption_set_int(OPTION, VALUE)
set an integer option in the default table
Definition: nsoption.h:352
#define nsoption_set_bool(OPTION, VALUE)
set a boolean option in the default table
Definition: nsoption.h:348
#define nsoption_set_charp(OPTION, VALUE)
set string option in default table
Definition: nsoption.h:376
#define nsoption_uint(OPTION)
Get the value of an unsigned integer option.
Definition: nsoption.h:326
@ OPTION_HTTP_PROXY_AUTH_NONE
Definition: nsoption.h:88
@ OPTION_HTTP_PROXY_AUTH_NTLM
Definition: nsoption.h:90
@ OPTION_HTTP_PROXY_AUTH_BASIC
Definition: nsoption.h:89
#define nsoption_bool(OPTION)
Get the value of a boolean option.
Definition: nsoption.h:308
#define nsoption_set_uint(OPTION, VALUE)
set an unsigned integer option in the default table
Definition: nsoption.h:355
static nserror text(const struct redraw_context *ctx, const struct plot_font_style *fstyle, int x, int y, const char *text, size_t length)
Text plotting.
Definition: plot.c:978