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#endif
241};
242
243static BOOL ami_gui_opts_event(void *w);
244static void ami_gui_opts_close(void *w);
245
249};
250
251static struct ami_gui_opts_window *gow = NULL;
252
253static CONST_STRPTR tabs[OPTS_MAX_TABS];
256static CONST_STRPTR proxyopts[OPTS_MAX_PROXY];
257static CONST_STRPTR nativebmopts[OPTS_MAX_NATIVEBM];
258static CONST_STRPTR ditheropts[OPTS_MAX_DITHER];
259static CONST_STRPTR fontopts[6];
260static CONST_STRPTR gadlab[OPTS_LAST];
261static struct List *websearch_list;
262
263#ifndef __amigaos4__
264static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
265{
266 int i = 0;
267 struct Node *node;
268
269 NewList(list);
270
271 do {
272 switch(type) {
274 node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
275 break;
276 case NSA_LIST_CHOOSER:
277 node = AllocChooserNode(CNA_Text, array[i], TAG_DONE);
278 break;
279 case NSA_LIST_RADIO:
280 /* Note: RBNA_Labels is RBNA_Label in OS4 */
281 node = AllocRadioButtonNode(0, RBNA_Labels, array[i], TAG_DONE);
282 break;
283 default:
284 break;
285 }
286 AddTail(list, node);
287 i++;
288 } while (array[i] != 0);
289}
290
291static void ami_gui_opts_free_list(struct List *list, int type)
292{
293 struct Node *node;
294 struct Node *nnode;
295
296 if(IsListEmpty((struct List *)list)) return;
297 node = GetHead((struct List *)list);
298
299 do {
300 nnode = GetSucc(node);
301 Remove(node);
302 if(node) {
303 switch(type) {
305 FreeClickTabNode(node);
306 break;
307 case NSA_LIST_CHOOSER:
308 FreeChooserNode(node);
309 break;
310 case NSA_LIST_RADIO:
311 FreeRadioButtonNode(node);
312 break;
313 default:
314 break;
315 }
316 }
317 } while((node = nnode));
318}
319#endif
320
322{
323 tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general"));
324 tabs[1] = (char *)ami_utf8_easy((char *)messages_get("Display"));
325 tabs[2] = (char *)ami_utf8_easy((char *)messages_get("con_connect"));
326 tabs[3] = (char *)ami_utf8_easy((char *)messages_get("con_rendering"));
327 tabs[4] = (char *)ami_utf8_easy((char *)messages_get("con_fonts"));
328 tabs[5] = (char *)ami_utf8_easy((char *)messages_get("con_cache"));
329 tabs[6] = (char *)ami_utf8_easy((char *)messages_get("Tabs"));
330 tabs[7] = (char *)ami_utf8_easy((char *)messages_get("con_advanced"));
331#ifdef WITH_PDF_EXPORT
332 tabs[8] = (char *)ami_utf8_easy((char *)messages_get("Export"));
333 tabs[9] = NULL;
334#else
335 tabs[8] = NULL;
336#endif
337
338 screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn"));
339 screenopts[1] = (char *)ami_utf8_easy((char *)messages_get("ScreenWB"));
340 screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic"));
341 screenopts[3] = NULL;
342
343 pagethemeopts[0] = (char *)ami_utf8_easy((char *)messages_get("Light"));
344 pagethemeopts[1] = (char *)ami_utf8_easy((char *)messages_get("Dark"));
345 pagethemeopts[2] = NULL;
346
347 proxyopts[0] = (char *)ami_utf8_easy((char *)messages_get("ProxyNone"));
348 proxyopts[1] = (char *)ami_utf8_easy((char *)messages_get("ProxyNoAuth"));
349 proxyopts[2] = (char *)ami_utf8_easy((char *)messages_get("ProxyBasic"));
350 proxyopts[3] = (char *)ami_utf8_easy((char *)messages_get("ProxyNTLM"));
351 proxyopts[4] = NULL;
352
353 nativebmopts[0] = (char *)ami_utf8_easy((char *)messages_get("None"));
354 nativebmopts[1] = (char *)ami_utf8_easy((char *)messages_get("Scaled"));
355 nativebmopts[2] = (char *)ami_utf8_easy((char *)messages_get("All"));
356 nativebmopts[3] = NULL;
357
358 ditheropts[0] = (char *)ami_utf8_easy((char *)messages_get("Low"));
359 ditheropts[1] = (char *)ami_utf8_easy((char *)messages_get("Medium"));
360 ditheropts[2] = (char *)ami_utf8_easy((char *)messages_get("High"));
361 ditheropts[3] = NULL;
362
363 gow->websearch_idx = 0;
365
366 gadlab[GID_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("HomePageURL"));
367 gadlab[GID_OPTS_HOMEPAGE_DEFAULT] = (char *)ami_utf8_easy((char *)messages_get("HomePageDefault"));
368 gadlab[GID_OPTS_HOMEPAGE_CURRENT] = (char *)ami_utf8_easy((char *)messages_get("HomePageCurrent"));
369 gadlab[GID_OPTS_HOMEPAGE_BLANK] = (char *)ami_utf8_easy((char *)messages_get("HomePageBlank"));
370 gadlab[GID_OPTS_HIDEADS] = (char *)ami_utf8_easy((char *)messages_get("BlockAds"));
371 gadlab[GID_OPTS_FROMLOCALE] = (char *)ami_utf8_easy((char *)messages_get("LocaleLang"));
372 gadlab[GID_OPTS_HISTORY] = (char *)ami_utf8_easy((char *)messages_get("HistoryAge"));
373 gadlab[GID_OPTS_JAVASCRIPT] = (char *)ami_utf8_easy((char *)messages_get("EnableJS"));
374 gadlab[GID_OPTS_ENABLECSS] = (char *)ami_utf8_easy((char *)messages_get("EnableCSS"));
375 gadlab[GID_OPTS_REFERRAL] = (char *)ami_utf8_easy((char *)messages_get("SendReferer"));
376 gadlab[GID_OPTS_DONOTTRACK] = (char *)ami_utf8_easy((char *)messages_get("DoNotTrack"));
377 gadlab[GID_OPTS_FASTSCROLL] = (char *)ami_utf8_easy((char *)messages_get("FastScrolling"));
378 gadlab[GID_OPTS_WIN_SIMPLE] = (char *)ami_utf8_easy((char *)messages_get("SimpleRefresh"));
379 gadlab[GID_OPTS_THEME] = (char *)ami_utf8_easy((char *)messages_get("ThemeGUI"));
380 gadlab[GID_OPTS_THEMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("ThemePage"));
381 gadlab[GID_OPTS_DARK] = (char *)ami_utf8_easy((char *)messages_get("Dark"));
382 gadlab[GID_OPTS_LIGHT] = (char *)ami_utf8_easy((char *)messages_get("Light"));
383 gadlab[GID_OPTS_PTRTRUE] = (char *)ami_utf8_easy((char *)messages_get("TrueColour"));
384 gadlab[GID_OPTS_PTROS] = (char *)ami_utf8_easy((char *)messages_get("OSPointers"));
385 gadlab[GID_OPTS_PROXY] = (char *)ami_utf8_easy((char *)messages_get("ProxyType"));
386 gadlab[GID_OPTS_PROXY_HOST] = (char *)ami_utf8_easy((char *)messages_get("Host"));
387 gadlab[GID_OPTS_PROXY_USER] = (char *)ami_utf8_easy((char *)messages_get("Username"));
388 gadlab[GID_OPTS_PROXY_PASS] = (char *)ami_utf8_easy((char *)messages_get("Password"));
389 gadlab[GID_OPTS_PROXY_BYPASS] = (char *)ami_utf8_easy((char *)messages_get("ProxyBypass"));
390 gadlab[GID_OPTS_FETCHMAX] = (char *)ami_utf8_easy((char *)messages_get("FetchesMax"));
391 gadlab[GID_OPTS_FETCHHOST] = (char *)ami_utf8_easy((char *)messages_get("FetchesHost"));
392 gadlab[GID_OPTS_FETCHCACHE] = (char *)ami_utf8_easy((char *)messages_get("FetchesCached"));
393 gadlab[GID_OPTS_NATIVEBM] = (char *)ami_utf8_easy((char *)messages_get("CacheNative"));
394 gadlab[GID_OPTS_SCALEQ] = (char *)ami_utf8_easy((char *)messages_get("ScaleQuality"));
395 gadlab[GID_OPTS_DITHERQ] = (char *)ami_utf8_easy((char *)messages_get("DitherQuality"));
396 gadlab[GID_OPTS_DPI_Y] = (char *)ami_utf8_easy((char *)messages_get("ResolutionY"));
397 gadlab[GID_OPTS_ANIMDISABLE] = (char *)ami_utf8_easy((char *)messages_get("AnimDisable"));
398 gadlab[GID_OPTS_FONT_SANS] = (char *)ami_utf8_easy((char *)messages_get("FontSans"));
399 gadlab[GID_OPTS_FONT_SERIF] = (char *)ami_utf8_easy((char *)messages_get("FontSerif"));
400 gadlab[GID_OPTS_FONT_MONO] = (char *)ami_utf8_easy((char *)messages_get("FontMono"));
401 gadlab[GID_OPTS_FONT_CURSIVE] = (char *)ami_utf8_easy((char *)messages_get("FontCursive"));
402 gadlab[GID_OPTS_FONT_FANTASY] = (char *)ami_utf8_easy((char *)messages_get("FontFantasy"));
403 gadlab[GID_OPTS_FONT_DEFAULT] = (char *)ami_utf8_easy((char *)messages_get("Default"));
404 gadlab[GID_OPTS_FONT_SIZE] = (char *)ami_utf8_easy((char *)messages_get("Default"));
405 gadlab[GID_OPTS_FONT_MINSIZE] = (char *)ami_utf8_easy((char *)messages_get("Minimum"));
406 gadlab[GID_OPTS_FONT_ANTIALIASING] = (char *)ami_utf8_easy((char *)messages_get("FontAntialiasing"));
407 gadlab[GID_OPTS_FONT_BITMAP] = (char *)ami_utf8_easy((char *)messages_get("FontBitmap"));
408 gadlab[GID_OPTS_CACHE_MEM] = (char *)ami_utf8_easy((char *)messages_get("Size"));
409 gadlab[GID_OPTS_CACHE_DISC] = (char *)ami_utf8_easy((char *)messages_get("Size"));
410 gadlab[GID_OPTS_OVERWRITE] = (char *)ami_utf8_easy((char *)messages_get("ConfirmOverwrite"));
411 gadlab[GID_OPTS_NOTIFY] = (char *)ami_utf8_easy((char *)messages_get("DownloadNotify"));
412 gadlab[GID_OPTS_DLDIR] = (char *)ami_utf8_easy((char *)messages_get("DownloadDir"));
413 gadlab[GID_OPTS_TAB_ACTIVE] = (char *)ami_utf8_easy((char *)messages_get("TabActive"));
414 gadlab[GID_OPTS_TAB_2] = (char *)ami_utf8_easy((char *)messages_get("TabMiddle"));
415 gadlab[GID_OPTS_TAB_ALWAYS] = (char *)ami_utf8_easy((char *)messages_get("TabAlways"));
416 gadlab[GID_OPTS_TAB_CLOSE] = (char *)ami_utf8_easy((char *)messages_get("TabClose"));
417 gadlab[GID_OPTS_SEARCH_PROV] = (char *)ami_utf8_easy((char *)messages_get("SearchProvider"));
418 gadlab[GID_OPTS_CLIPBOARD] = (char *)ami_utf8_easy((char *)messages_get("ClipboardUTF8"));
419 gadlab[GID_OPTS_SELECTMENU] = (char *)ami_utf8_easy((char *)messages_get("PopupMenu"));
420 gadlab[GID_OPTS_STARTUP_NO_WIN] = (char *)ami_utf8_easy((char *)messages_get("OptionNoWindow"));
421 gadlab[GID_OPTS_CLOSE_NO_QUIT] = (char *)ami_utf8_easy((char *)messages_get("OptionNoQuit"));
422 gadlab[GID_OPTS_DOCKY] = (char *)ami_utf8_easy((char *)messages_get("OptionDocky"));
423 gadlab[GID_OPTS_MARGIN_TOP] = (char *)ami_utf8_easy((char *)messages_get("Top"));
424 gadlab[GID_OPTS_MARGIN_LEFT] = (char *)ami_utf8_easy((char *)messages_get("Left"));
425 gadlab[GID_OPTS_MARGIN_RIGHT] = (char *)ami_utf8_easy((char *)messages_get("Right"));
426 gadlab[GID_OPTS_MARGIN_BOTTOM] = (char *)ami_utf8_easy((char *)messages_get("Bottom"));
427 gadlab[GID_OPTS_EXPORT_SCALE] = (char *)ami_utf8_easy((char *)messages_get("Scale"));
428 gadlab[GID_OPTS_EXPORT_NOIMAGES] = (char *)ami_utf8_easy((char *)messages_get("SuppressImages"));
429 gadlab[GID_OPTS_EXPORT_NOBKG] = (char *)ami_utf8_easy((char *)messages_get("RemoveBackground"));
430 gadlab[GID_OPTS_EXPORT_LOOSEN] = (char *)ami_utf8_easy((char *)messages_get("FitPage"));
431 gadlab[GID_OPTS_EXPORT_COMPRESS] = (char *)ami_utf8_easy((char *)messages_get("CompressPDF"));
432 gadlab[GID_OPTS_EXPORT_PASSWORD] = (char *)ami_utf8_easy((char *)messages_get("SetPassword"));
433 gadlab[GID_OPTS_SAVE] = (char *)ami_utf8_easy((char *)messages_get("SelSave"));
434 gadlab[GID_OPTS_USE] = (char *)ami_utf8_easy((char *)messages_get("Use"));
435 gadlab[GID_OPTS_CANCEL] = (char *)ami_utf8_easy((char *)messages_get("Cancel"));
436
437 gadlab[LAB_OPTS_WINTITLE] = (char *)ami_utf8_easy((char *)messages_get("Preferences"));
438 gadlab[LAB_OPTS_RESTART] = (char *)ami_utf8_easy((char *)messages_get("NeedRestart"));
439 gadlab[LAB_OPTS_DAYS] = (char *)ami_utf8_easy((char *)messages_get("Days"));
440 gadlab[LAB_OPTS_PT] = (char *)ami_utf8_easy((char *)messages_get("Pt"));
441 gadlab[LAB_OPTS_MM] = (char *)ami_utf8_easy((char *)messages_get("MM"));
442 gadlab[LAB_OPTS_MB] = (char *)ami_utf8_easy((char *)messages_get("MBytes"));
443 gadlab[LAB_OPTS_DPI] = (char *)ami_utf8_easy((char *)messages_get("DPI"));
444
445 gadlab[GRP_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("Home"));
446 gadlab[GRP_OPTS_CONTENTBLOCKING] = (char *)ami_utf8_easy((char *)messages_get("ContentBlocking"));
447 gadlab[GRP_OPTS_CONTENTLANGUAGE] = (char *)ami_utf8_easy((char *)messages_get("ContentLanguage"));
448 gadlab[GRP_OPTS_HISTORY] = (char *)ami_utf8_easy((char *)messages_get("History"));
449 gadlab[GRP_OPTS_SCRIPTING] = (char *)ami_utf8_easy((char *)messages_get("Scripting"));
450 gadlab[GRP_OPTS_MISC] = (char *)ami_utf8_easy((char *)messages_get("Miscellaneous"));
451 gadlab[GRP_OPTS_SCREEN] = (char *)ami_utf8_easy((char *)messages_get("Screen"));
452 gadlab[GRP_OPTS_WINDOW] = (char *)ami_utf8_easy((char *)messages_get("Window"));
453 gadlab[GRP_OPTS_THEME] = (char *)ami_utf8_easy((char *)messages_get("Theme"));
454 gadlab[GRP_OPTS_MOUSE] = (char *)ami_utf8_easy((char *)messages_get("MousePointers"));
455 gadlab[GRP_OPTS_PROXY] = (char *)ami_utf8_easy((char *)messages_get("Proxy"));
456 gadlab[GRP_OPTS_FETCHING] = (char *)ami_utf8_easy((char *)messages_get("Fetching"));
457 gadlab[GRP_OPTS_IMAGES] = (char *)ami_utf8_easy((char *)messages_get("Images"));
458 gadlab[GRP_OPTS_ANIMS] = (char *)ami_utf8_easy((char *)messages_get("Animations"));
459 gadlab[GRP_OPTS_DPI] = (char *)ami_utf8_easy((char *)messages_get("Resolution"));
460 gadlab[GRP_OPTS_FONTFACES] = (char *)ami_utf8_easy((char *)messages_get("FontFamilies"));
461 gadlab[GRP_OPTS_FONTSIZE] = (char *)ami_utf8_easy((char *)messages_get("FontSize"));
462 gadlab[GRP_OPTS_MEMCACHE] = (char *)ami_utf8_easy((char *)messages_get("CacheMemory"));
463 gadlab[GRP_OPTS_DISCCACHE] = (char *)ami_utf8_easy((char *)messages_get("CacheDisc"));
464 gadlab[GRP_OPTS_DOWNLOADS] = (char *)ami_utf8_easy((char *)messages_get("Downloads"));
465 gadlab[GRP_OPTS_TABS] = (char *)ami_utf8_easy((char *)messages_get("TabbedBrowsing"));
466 gadlab[GRP_OPTS_SEARCH] = (char *)ami_utf8_easy((char *)messages_get("SearchWeb"));
467 gadlab[GRP_OPTS_CLIPBOARD] = (char *)ami_utf8_easy((char *)messages_get("Clipboard"));
468 gadlab[GRP_OPTS_PRIVACY] = (char *)ami_utf8_easy((char *)messages_get("Privacy"));
469 gadlab[GRP_OPTS_BEHAVIOUR] = (char *)ami_utf8_easy((char *)messages_get("Behaviour"));
470 gadlab[GRP_OPTS_MARGINS] = (char *)ami_utf8_easy((char *)messages_get("Margins"));
471 gadlab[GRP_OPTS_SCALING] = (char *)ami_utf8_easy((char *)messages_get("Scaling"));
472 gadlab[GRP_OPTS_APPEARANCE] = (char *)ami_utf8_easy((char *)messages_get("Appearance"));
473 gadlab[GRP_OPTS_ADVANCED] = (char *)ami_utf8_easy((char *)messages_get("con_advanced"));
474
480 fontopts[5] = NULL;
481
482#ifndef __amigaos4__
490#endif
491}
492
494{
495 int i;
496
497 for(i = 0; i < OPTS_LAST; i++)
498 if(gadlab[i]) free((APTR)gadlab[i]);
499
500 for(i = 0; i < OPTS_MAX_TABS; i++)
501 if(tabs[i]) free((APTR)tabs[i]);
502
503 for(i = 0; i < OPTS_MAX_SCREEN; i++)
504 if(screenopts[i]) free((APTR)screenopts[i]);
505
506 for(i = 0; i < OPTS_MAX_PROXY; i++)
507 if(proxyopts[i]) free((APTR)proxyopts[i]);
508
509 for(i = 0; i < OPTS_MAX_NATIVEBM; i++)
510 if(nativebmopts[i]) free((APTR)nativebmopts[i]);
511
513
514#ifndef __amigaos4__
522#endif
523}
524
526{
527 uint16 screenoptsselected;
528 ULONG screenmodeid = 0;
529 ULONG proxytype = 0;
530 BOOL screenmodedisabled = FALSE, screennamedisabled = FALSE;
531 BOOL proxyhostdisabled = TRUE, proxyauthdisabled = TRUE, proxybypassdisabled = FALSE;
532 BOOL disableanims, acceptlangdisabled = FALSE;
533 BOOL scaleselected = nsoption_bool(scale_quality), scaledisabled = FALSE;
534 BOOL ditherdisable = TRUE;
535 BOOL download_notify_disabled = FALSE, tab_always_show_disabled = FALSE;
536 BOOL ptr_disable = FALSE;
537 char *homepage_url_lc = ami_utf8_easy(nsoption_charp(homepage_url));
538
539 struct TextAttr fontsans, fontserif, fontmono, fontcursive, fontfantasy;
540
541 if(gow && gow->win)
542 {
543 WindowToFront(gow->win);
544 ActivateWindow(gow->win);
545 return;
546 }
547
548#ifdef __amigaos4__
549 if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) ptr_disable = TRUE;
550#else
551 ptr_disable = TRUE;
552#endif
553
554 if(nsoption_charp(pubscreen_name))
555 {
556 if(strcmp(nsoption_charp(pubscreen_name),"Workbench") == 0)
557 {
558 screenoptsselected = 1;
559 screennamedisabled = TRUE;
560 screenmodedisabled = TRUE;
561 }
562 else
563 {
564 screenoptsselected = 2;
565 screenmodedisabled = TRUE;
566 }
567 }
568 else
569 {
570 screenoptsselected = 0;
571 screennamedisabled = TRUE;
572 }
573
574 if((nsoption_charp(screen_modeid)) &&
575 (strncmp(nsoption_charp(screen_modeid),"0x",2) == 0))
576 {
577 screenmodeid = strtoul(nsoption_charp(screen_modeid),NULL,0);
578 }
579
581 ditherdisable = FALSE;
582 }
583
584 if(nsoption_bool(http_proxy) == true)
585 {
586 proxytype = nsoption_int(http_proxy_auth) + 1;
587 switch(nsoption_int(http_proxy_auth))
588 {
591 proxyauthdisabled = FALSE;
593 proxyhostdisabled = FALSE;
594 break;
595 }
596 } else {
597 proxybypassdisabled = TRUE;
598 }
599
600 if(nsoption_bool(animate_images))
601 {
602 disableanims = FALSE;
603 }
604 else
605 {
606 disableanims = TRUE;
607 }
608
609 if(nsoption_bool(accept_lang_locale))
610 acceptlangdisabled = TRUE;
611 else
612 acceptlangdisabled = FALSE;
613
614 if(GfxBase->LibNode.lib_Version < 53)
615 {
616 scaledisabled = TRUE;
617 scaleselected = FALSE;
618 }
619#ifdef __amigaos4__
620 if(ApplicationBase->lib_Version < 53)
621#endif
622 {
623 download_notify_disabled = TRUE;
624 nsoption_set_bool(download_notify, FALSE);
625 }
626
627 if(ClickTabBase->lib_Version < 53) {
628 tab_always_show_disabled = TRUE;
629 }
630
631 fontsans.ta_Name = ASPrintf("%s.font", nsoption_charp(font_sans));
632 fontserif.ta_Name = ASPrintf("%s.font", nsoption_charp(font_serif));
633 fontmono.ta_Name = ASPrintf("%s.font", nsoption_charp(font_mono));
634 fontcursive.ta_Name = ASPrintf("%s.font", nsoption_charp(font_cursive));
635 fontfantasy.ta_Name = ASPrintf("%s.font", nsoption_charp(font_fantasy));
636
637 fontsans.ta_Style = 0;
638 fontserif.ta_Style = 0;
639 fontmono.ta_Style = 0;
640 fontcursive.ta_Style = 0;
641 fontfantasy.ta_Style = 0;
642
643 fontsans.ta_YSize = 0;
644 fontserif.ta_YSize = 0;
645 fontmono.ta_YSize = 0;
646 fontcursive.ta_YSize = 0;
647 fontfantasy.ta_YSize = 0;
648
649 fontsans.ta_Flags = 0;
650 fontserif.ta_Flags = 0;
651 fontmono.ta_Flags = 0;
652 fontcursive.ta_Flags = 0;
653 fontfantasy.ta_Flags = 0;
654
655 if(!gow)
656 {
657 gow = calloc(1, sizeof(struct ami_gui_opts_window));
658 if(gow == NULL) return;
659
661
663 WA_ScreenTitle, ami_gui_get_screen_title(),
664 WA_Title, gadlab[LAB_OPTS_WINTITLE],
665 WA_Activate, TRUE,
666 WA_DepthGadget, TRUE,
667 WA_DragBar, TRUE,
668 WA_CloseGadget, TRUE,
669 WA_SizeGadget, FALSE,
670 WA_PubScreen, ami_gui_get_screen(),
671 WINDOW_SharedPort, ami_gui_get_shared_msgport(),
672 WINDOW_UserData,gow,
673 WINDOW_IconifyGadget, FALSE,
674 WINDOW_Position, WPOS_CENTERSCREEN,
675 WA_IDCMP, IDCMP_GADGETUP | IDCMP_CLOSEWINDOW,
676 WINDOW_ParentGroup, gow->objects[GID_OPTS_MAIN] = LayoutVObj,
677 LAYOUT_AddChild, ClickTabObj,
678 GA_RelVerify, TRUE,
679#ifdef __amigaos4__
680 GA_Text, tabs,
681#else
682 CLICKTAB_Labels, &gow->clicktablist,
683#endif
684 CLICKTAB_PageGroup, PageObj,
685 /*
686 ** General
687 */
688 PAGE_Add, LayoutVObj,
689 LAYOUT_AddChild, LayoutVObj,
690 LAYOUT_AddChild, LayoutVObj,
691 LAYOUT_SpaceOuter, TRUE,
692 LAYOUT_BevelStyle, BVS_GROUP,
693 LAYOUT_Label, gadlab[GRP_OPTS_HOMEPAGE],
694 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE] = StringObj,
695 GA_ID, GID_OPTS_HOMEPAGE,
696 GA_RelVerify, TRUE,
697 STRINGA_TextVal, homepage_url_lc,
698 STRINGA_BufferPos,0,
699 StringEnd,
700 CHILD_Label, LabelObj,
701 LABEL_Text, gadlab[GID_OPTS_HOMEPAGE],
702 LabelEnd,
703 LAYOUT_AddChild, LayoutHObj,
704 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_DEFAULT] = ButtonObj,
707 GA_RelVerify,TRUE,
708 ButtonEnd,
709 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_CURRENT] = ButtonObj,
712 GA_RelVerify,TRUE,
713 ButtonEnd,
714 LAYOUT_AddChild, gow->objects[GID_OPTS_HOMEPAGE_BLANK] = ButtonObj,
717 GA_RelVerify,TRUE,
718 ButtonEnd,
719 LayoutEnd,
720 LayoutEnd, //homepage
721 CHILD_WeightedHeight, 0,
722 LAYOUT_AddChild, LayoutHObj,
723 LAYOUT_AddChild, LayoutVObj,
724 LAYOUT_SpaceOuter, TRUE,
725 LAYOUT_BevelStyle, BVS_GROUP,
726 LAYOUT_Label, gadlab[GRP_OPTS_CONTENTBLOCKING],
727 LAYOUT_AddChild, gow->objects[GID_OPTS_HIDEADS] = CheckBoxObj,
728 GA_ID, GID_OPTS_HIDEADS,
729 GA_RelVerify, TRUE,
730 GA_Text, gadlab[GID_OPTS_HIDEADS],
731 GA_Selected, nsoption_bool(block_advertisements),
732 CheckBoxEnd,
733 LayoutEnd, // content blocking
734 LAYOUT_AddChild, LayoutVObj,
735 LAYOUT_SpaceOuter, TRUE,
736 LAYOUT_BevelStyle, BVS_GROUP,
737 LAYOUT_Label, gadlab[GRP_OPTS_CONTENTLANGUAGE],
738 LAYOUT_AddChild, gow->objects[GID_OPTS_CONTENTLANG] = StringObj,
740 GA_RelVerify, TRUE,
741 GA_Disabled, acceptlangdisabled,
742 STRINGA_TextVal, nsoption_charp(accept_language),
743 STRINGA_BufferPos,0,
744 StringEnd,
745 LAYOUT_AddChild, gow->objects[GID_OPTS_FROMLOCALE] = CheckBoxObj,
746 GA_ID, GID_OPTS_FROMLOCALE,
747 GA_Text, gadlab[GID_OPTS_FROMLOCALE],
748 GA_RelVerify, TRUE,
749 GA_Selected, nsoption_bool(accept_lang_locale),
750 ButtonEnd,
751 // CHILD_WeightedWidth, 0,
752 LayoutEnd, // content language
753 LayoutEnd, // content
754 LAYOUT_AddChild, LayoutHObj,
755 LAYOUT_AddChild, LayoutVObj,
756 LAYOUT_SpaceOuter, TRUE,
757 LAYOUT_BevelStyle, BVS_GROUP,
758 LAYOUT_Label, gadlab[GRP_OPTS_HISTORY],
759 LAYOUT_AddChild, LayoutHObj,
760 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
761 LAYOUT_AddChild, gow->objects[GID_OPTS_HISTORY] = IntegerObj,
762 GA_ID, GID_OPTS_HISTORY,
763 GA_RelVerify, TRUE,
764 INTEGER_Number, nsoption_int(expire_url),
765 INTEGER_Minimum, 0,
766 INTEGER_Maximum, 366,
767 INTEGER_Arrows, TRUE,
768 IntegerEnd,
769 CHILD_WeightedWidth, 0,
770 CHILD_Label, LabelObj,
771 LABEL_Text, gadlab[LAB_OPTS_DAYS],
772 LabelEnd,
773 LayoutEnd,
774 CHILD_WeightedWidth, 0,
775 CHILD_Label, LabelObj,
776 LABEL_Text, gadlab[GID_OPTS_HISTORY],
777 LabelEnd,
778 LayoutEnd, // history
779 LAYOUT_AddChild, LayoutVObj,
780 LAYOUT_SpaceOuter, TRUE,
781 LAYOUT_BevelStyle, BVS_GROUP,
782 LAYOUT_Label, gadlab[GRP_OPTS_SCRIPTING],
783 LAYOUT_AddChild, gow->objects[GID_OPTS_JAVASCRIPT] = CheckBoxObj,
784 GA_ID, GID_OPTS_JAVASCRIPT,
785 GA_RelVerify, TRUE,
786 GA_Text, gadlab[GID_OPTS_JAVASCRIPT],
787 GA_Selected, nsoption_bool(enable_javascript),
788 CheckBoxEnd,
789 LayoutEnd, // scripting
790 LayoutEnd,
791 CHILD_WeightedHeight, 0,
792 LAYOUT_AddChild, LayoutVObj,
793 LAYOUT_SpaceOuter, TRUE,
794 LAYOUT_BevelStyle, BVS_GROUP,
795 LAYOUT_Label, gadlab[GRP_OPTS_PRIVACY],
796 LAYOUT_AddChild, gow->objects[GID_OPTS_REFERRAL] = CheckBoxObj,
797 GA_ID, GID_OPTS_REFERRAL,
798 GA_RelVerify, TRUE,
799 GA_Text, gadlab[GID_OPTS_REFERRAL],
800 GA_Selected, nsoption_bool(send_referer),
801 CheckBoxEnd,
802 LAYOUT_AddChild, gow->objects[GID_OPTS_DONOTTRACK] = CheckBoxObj,
803 GA_ID, GID_OPTS_DONOTTRACK,
804 GA_RelVerify, TRUE,
805 GA_Text, gadlab[GID_OPTS_DONOTTRACK],
806 GA_Selected, nsoption_bool(do_not_track),
807 CheckBoxEnd,
808 LayoutEnd, // misc
809 CHILD_WeightedHeight, 0,
810 LayoutEnd, // page vgroup
811 CHILD_WeightedHeight, 0,
812 PageEnd, // pageadd
813 /*
814 ** Display
815 */
816 PAGE_Add, LayoutVObj,
817 LAYOUT_AddChild, LayoutVObj,
818 LAYOUT_AddChild, LayoutVObj,
819 LAYOUT_SpaceOuter, TRUE,
820 LAYOUT_BevelStyle, BVS_GROUP,
821 LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
822 LAYOUT_AddChild, LayoutHObj,
823 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
824 GA_ID, GID_OPTS_SCREEN,
825 GA_RelVerify, TRUE,
826#ifdef __amigaos4__
827 GA_Text, screenopts,
828#else
829 RADIOBUTTON_Labels, &gow->screenoptslist,
830#endif
831 RADIOBUTTON_Selected, screenoptsselected,
832 RadioButtonEnd,
833 CHILD_WeightedWidth,0,
834 LAYOUT_AddChild, LayoutVObj,
835 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREENMODE] = GetScreenModeObj,
836 GA_ID, GID_OPTS_SCREENMODE,
837 GA_RelVerify, TRUE,
838 GA_Disabled,screenmodedisabled,
839 GETSCREENMODE_DisplayID,screenmodeid,
840 GETSCREENMODE_MinDepth, 0,
841 GETSCREENMODE_MaxDepth, 32,
843 LAYOUT_AddChild, gow->objects[GID_OPTS_SCREENNAME] = StringObj,
844 GA_ID, GID_OPTS_SCREENNAME,
845 GA_RelVerify, TRUE,
846 GA_Disabled,screennamedisabled,
847 STRINGA_TextVal, nsoption_charp(pubscreen_name),
848 STRINGA_BufferPos,0,
849 StringEnd,
850 LayoutEnd,
851 CHILD_WeightedHeight,0,
852 LayoutEnd,
853 LayoutEnd, // screen
854 CHILD_WeightedHeight,0,
855 LAYOUT_AddChild, LayoutVObj,
856 LAYOUT_SpaceOuter, TRUE,
857 LAYOUT_BevelStyle, BVS_GROUP,
858 LAYOUT_Label, gadlab[GRP_OPTS_WINDOW],
859 LAYOUT_AddChild, gow->objects[GID_OPTS_WIN_SIMPLE] = CheckBoxObj,
860 GA_ID, GID_OPTS_WIN_SIMPLE,
861 GA_RelVerify, TRUE,
862 GA_Text, gadlab[GID_OPTS_WIN_SIMPLE],
863 GA_Selected, nsoption_bool(window_simple_refresh),
864 CheckBoxEnd,
865 LayoutEnd, // window
866 CHILD_WeightedHeight,0,
867 LAYOUT_AddChild, LayoutVObj,
868 LAYOUT_SpaceOuter, TRUE,
869 LAYOUT_BevelStyle, BVS_GROUP,
870 LAYOUT_Label, gadlab[GRP_OPTS_THEME],
871 LAYOUT_AddChild, gow->objects[GID_OPTS_THEME] = GetFileObj,
872 GA_ID, GID_OPTS_THEME,
873 GA_RelVerify, TRUE,
874 GETFILE_Drawer, nsoption_charp(theme),
875 GETFILE_DrawersOnly, TRUE,
876 GETFILE_ReadOnly, TRUE,
877 GETFILE_FullFileExpand, FALSE,
879 CHILD_Label, LabelObj,
880 LABEL_Text, gadlab[GID_OPTS_THEME],
881 LabelEnd,
882 LAYOUT_AddChild, gow->objects[GID_OPTS_THEMEPAGE] = ChooserObj,
883 GA_ID, GID_OPTS_THEMEPAGE,
884 GA_RelVerify, TRUE,
885 CHOOSER_PopUp, TRUE,
886#ifdef __amigaos4__
887 CHOOSER_LabelArray, pagethemeopts,
888#else
889 CHOOSER_Labels, &gow->pagethemeoptslist,
890#endif
891 CHOOSER_Selected, nsoption_bool(prefer_dark_mode),
892 ChooserEnd,
893 CHILD_Label, LabelObj,
894 LABEL_Text, gadlab[GID_OPTS_THEMEPAGE],
895 LabelEnd,
896 LayoutEnd, // theme
897 CHILD_WeightedHeight, 0,
898 LAYOUT_AddChild, LayoutVObj,
899 LAYOUT_SpaceOuter, TRUE,
900 LAYOUT_BevelStyle, BVS_GROUP,
901 LAYOUT_Label, gadlab[GRP_OPTS_MOUSE],
902 LAYOUT_AddChild, gow->objects[GID_OPTS_PTRTRUE] = CheckBoxObj,
903 GA_ID, GID_OPTS_PTRTRUE,
904 GA_RelVerify, TRUE,
905 GA_Text, gadlab[GID_OPTS_PTRTRUE],
906 GA_Selected, nsoption_bool(truecolour_mouse_pointers),
907 GA_Disabled, ptr_disable,
908 CheckBoxEnd,
909 LAYOUT_AddChild, gow->objects[GID_OPTS_PTROS] = CheckBoxObj,
910 GA_ID, GID_OPTS_PTROS,
911 GA_RelVerify, TRUE,
912 GA_Text, gadlab[GID_OPTS_PTROS],
913 GA_Selected, nsoption_bool(os_mouse_pointers),
914 GA_Disabled, ptr_disable,
915 CheckBoxEnd,
916 LayoutEnd, // mouse
917 CHILD_WeightedHeight,0,
918 LAYOUT_AddImage, LabelObj,
919 LABEL_Text, gadlab[LAB_OPTS_RESTART],
920 LabelEnd,
921 LayoutEnd, // page vgroup
922 CHILD_WeightedHeight, 0,
923 PageEnd, // pageadd
924 /*
925 ** Network
926 */
927 PAGE_Add, LayoutVObj,
928 LAYOUT_AddChild, LayoutVObj,
929 LAYOUT_AddChild, LayoutVObj,
930 LAYOUT_SpaceOuter, TRUE,
931 LAYOUT_BevelStyle, BVS_GROUP,
932 LAYOUT_Label, gadlab[GRP_OPTS_PROXY],
933 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY] = ChooserObj,
934 GA_ID, GID_OPTS_PROXY,
935 GA_RelVerify, TRUE,
936 CHOOSER_PopUp, TRUE,
937#ifdef __amigaos4__
938 CHOOSER_LabelArray, proxyopts,
939#else
940 CHOOSER_Labels, &gow->proxyoptslist,
941#endif
942 CHOOSER_Selected, proxytype,
943 ChooserEnd,
944 CHILD_Label, LabelObj,
945 LABEL_Text, gadlab[GID_OPTS_PROXY],
946 LabelEnd,
947 LAYOUT_AddChild, LayoutHObj,
948 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_HOST] = StringObj,
949 GA_ID, GID_OPTS_PROXY_HOST,
950 GA_RelVerify, TRUE,
951 GA_Disabled, proxyhostdisabled,
952 STRINGA_TextVal, nsoption_charp(http_proxy_host),
953 STRINGA_BufferPos,0,
954 StringEnd,
955 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_PORT] = IntegerObj,
956 GA_ID, GID_OPTS_PROXY_PORT,
957 GA_RelVerify, TRUE,
958 GA_Disabled, proxyhostdisabled,
959 INTEGER_Number, nsoption_charp(http_proxy_port),
960 INTEGER_Minimum, 1,
961 INTEGER_Maximum, 65535,
962 INTEGER_Arrows, FALSE,
963 IntegerEnd,
964 CHILD_WeightedWidth, 0,
965 CHILD_Label, LabelObj,
966 LABEL_Text, ":",
967 LabelEnd,
968 LayoutEnd, //host:port group
969 CHILD_WeightedHeight, 0,
970 CHILD_Label, LabelObj,
971 LABEL_Text, gadlab[GID_OPTS_PROXY_HOST],
972 LabelEnd,
973 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_USER] = StringObj,
974 GA_ID, GID_OPTS_PROXY_USER,
975 GA_RelVerify, TRUE,
976 GA_Disabled, proxyauthdisabled,
977 STRINGA_TextVal, nsoption_charp(http_proxy_auth_user),
978 STRINGA_BufferPos,0,
979 StringEnd,
980 CHILD_Label, LabelObj,
981 LABEL_Text, gadlab[GID_OPTS_PROXY_USER],
982 LabelEnd,
983 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_PASS] = StringObj,
984 GA_ID, GID_OPTS_PROXY_PASS,
985 GA_RelVerify, TRUE,
986 GA_Disabled, proxyauthdisabled,
987 STRINGA_TextVal, nsoption_charp(http_proxy_auth_pass),
988 STRINGA_BufferPos,0,
989 StringEnd,
990 CHILD_Label, LabelObj,
991 LABEL_Text, gadlab[GID_OPTS_PROXY_PASS],
992 LabelEnd,
993 LAYOUT_AddChild, gow->objects[GID_OPTS_PROXY_BYPASS] = StringObj,
995 GA_RelVerify, TRUE,
996 GA_Disabled, proxybypassdisabled,
997 STRINGA_TextVal, nsoption_charp(http_proxy_noproxy),
998 STRINGA_BufferPos, 0,
999 StringEnd,
1000 CHILD_Label, LabelObj,
1001 LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
1002 LabelEnd,
1003 LayoutEnd, // proxy
1004 CHILD_WeightedHeight, 0,
1005 LAYOUT_AddChild, LayoutVObj,
1006 LAYOUT_SpaceOuter, TRUE,
1007 LAYOUT_BevelStyle, BVS_GROUP,
1008 LAYOUT_Label, gadlab[GRP_OPTS_FETCHING],
1009 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHMAX] = IntegerObj,
1010 GA_ID, GID_OPTS_FETCHMAX,
1011 GA_RelVerify, TRUE,
1012 INTEGER_Number, nsoption_int(max_fetchers),
1013 INTEGER_Minimum, 1,
1014 INTEGER_Maximum, 99,
1015 INTEGER_Arrows, TRUE,
1016 IntegerEnd,
1017 CHILD_WeightedWidth, 0,
1018 CHILD_Label, LabelObj,
1019 LABEL_Text, gadlab[GID_OPTS_FETCHMAX],
1020 LabelEnd,
1021 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHHOST] = IntegerObj,
1022 GA_ID, GID_OPTS_FETCHHOST,
1023 GA_RelVerify, TRUE,
1024 INTEGER_Number, nsoption_int(max_fetchers_per_host),
1025 INTEGER_Minimum, 1,
1026 INTEGER_Maximum, 99,
1027 INTEGER_Arrows, TRUE,
1028 IntegerEnd,
1029 CHILD_WeightedWidth, 0,
1030 CHILD_Label, LabelObj,
1031 LABEL_Text, gadlab[GID_OPTS_FETCHHOST],
1032 LabelEnd,
1033 LAYOUT_AddChild, gow->objects[GID_OPTS_FETCHCACHE] = IntegerObj,
1034 GA_ID, GID_OPTS_FETCHCACHE,
1035 GA_RelVerify, TRUE,
1036 INTEGER_Number, nsoption_int(max_cached_fetch_handles),
1037 INTEGER_Minimum, 1,
1038 INTEGER_Maximum, 99,
1039 INTEGER_Arrows, TRUE,
1040 IntegerEnd,
1041 CHILD_WeightedWidth, 0,
1042 CHILD_Label, LabelObj,
1043 LABEL_Text, gadlab[GID_OPTS_FETCHCACHE],
1044 LabelEnd,
1045 LayoutEnd,
1046 CHILD_WeightedHeight, 0,
1047 LayoutEnd, // page vgroup
1048 CHILD_WeightedHeight, 0,
1049 PageEnd, // page object
1050 /*
1051 ** Rendering
1052 */
1053 PAGE_Add, LayoutVObj,
1054 LAYOUT_AddChild, LayoutVObj,
1055 LAYOUT_AddChild, LayoutVObj,
1056 LAYOUT_SpaceOuter, TRUE,
1057 LAYOUT_BevelStyle, BVS_GROUP,
1058 LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
1059 LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
1060 GA_ID, GID_OPTS_NATIVEBM,
1061 GA_RelVerify, TRUE,
1062 CHOOSER_PopUp, TRUE,
1063#ifdef __amigaos4__
1064 CHOOSER_LabelArray, nativebmopts,
1065#else
1066 CHOOSER_Labels, &gow->nativebmoptslist,
1067#endif
1068 CHOOSER_Selected, nsoption_int(cache_bitmaps),
1069 ChooserEnd,
1070 CHILD_Label, LabelObj,
1071 LABEL_Text, gadlab[GID_OPTS_NATIVEBM],
1072 LabelEnd,
1073 LAYOUT_AddChild, gow->objects[GID_OPTS_DITHERQ] = ChooserObj,
1074 GA_ID, GID_OPTS_DITHERQ,
1075 GA_RelVerify, TRUE,
1076 GA_Disabled, ditherdisable,
1077 CHOOSER_PopUp, TRUE,
1078#ifdef __amigaos4__
1079 CHOOSER_LabelArray, ditheropts,
1080#else
1081 CHOOSER_Labels, &gow->ditheroptslist,
1082#endif
1083 CHOOSER_Selected, nsoption_int(dither_quality),
1084 ChooserEnd,
1085 CHILD_Label, LabelObj,
1086 LABEL_Text, gadlab[GID_OPTS_DITHERQ],
1087 LabelEnd,
1088 LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
1089 GA_ID, GID_OPTS_SCALEQ,
1090 GA_Disabled, scaledisabled,
1091 GA_RelVerify, TRUE,
1092 GA_Text, gadlab[GID_OPTS_SCALEQ],
1093 GA_Selected, scaleselected,
1094 CheckBoxEnd,
1095 LayoutEnd, // images
1096 CHILD_WeightedHeight, 0,
1097 LAYOUT_AddChild, LayoutVObj,
1098 LAYOUT_SpaceOuter, TRUE,
1099 LAYOUT_BevelStyle, BVS_GROUP,
1100 LAYOUT_Label, gadlab[GRP_OPTS_ANIMS],
1101 LAYOUT_AddChild, gow->objects[GID_OPTS_ANIMDISABLE] = CheckBoxObj,
1102 GA_ID, GID_OPTS_ANIMDISABLE,
1103 GA_RelVerify, TRUE,
1104 GA_Text, gadlab[GID_OPTS_ANIMDISABLE],
1105 GA_Selected, disableanims,
1106 CheckBoxEnd,
1107 LayoutEnd, //animations
1108 CHILD_WeightedHeight, 0,
1109 LAYOUT_AddChild, LayoutVObj,
1110 LAYOUT_SpaceOuter, TRUE,
1111 LAYOUT_BevelStyle, BVS_GROUP,
1112 LAYOUT_Label, gadlab[GRP_OPTS_DPI],
1113 LAYOUT_AddChild, LayoutHObj,
1114 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1115 LAYOUT_AddChild, gow->objects[GID_OPTS_DPI_Y] = IntegerObj,
1116 GA_ID, GID_OPTS_DPI_Y,
1117 GA_RelVerify, TRUE,
1118 INTEGER_Number, nsoption_int(screen_ydpi),
1119 INTEGER_Minimum, 20,
1120 INTEGER_Maximum, 200,
1121 INTEGER_Arrows, TRUE,
1122 GA_Disabled, nsoption_bool(bitmap_fonts),
1123 IntegerEnd,
1124 CHILD_WeightedWidth, 0,
1125 CHILD_Label, LabelObj,
1126 LABEL_Text, gadlab[LAB_OPTS_DPI],
1127 LabelEnd,
1128 LayoutEnd,
1129 CHILD_Label, LabelObj,
1130 LABEL_Text, gadlab[GID_OPTS_DPI_Y],
1131 LabelEnd,
1132 LayoutEnd, //animations
1133 CHILD_WeightedHeight, 0,
1134 LayoutEnd, // page vgroup
1135 CHILD_WeightedHeight, 0,
1136 PageEnd, // page object
1137 /*
1138 ** Fonts
1139 */
1140 PAGE_Add, LayoutVObj,
1141 LAYOUT_AddChild, LayoutVObj,
1142 LAYOUT_AddChild, LayoutVObj,
1143 LAYOUT_SpaceOuter, TRUE,
1144 LAYOUT_BevelStyle, BVS_GROUP,
1145 LAYOUT_Label, gadlab[GRP_OPTS_FONTFACES],
1146 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SANS] = GetFontObj,
1147 GA_ID, GID_OPTS_FONT_SANS,
1148 GA_RelVerify, TRUE,
1149 GETFONT_TextAttr, &fontsans,
1150 GETFONT_OTagOnly, TRUE,
1152 GetFontEnd,
1153 CHILD_Label, LabelObj,
1154 LABEL_Text, gadlab[GID_OPTS_FONT_SANS],
1155 LabelEnd,
1156 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SERIF] = GetFontObj,
1157 GA_ID, GID_OPTS_FONT_SERIF,
1158 GA_RelVerify, TRUE,
1159 GETFONT_TextAttr, &fontserif,
1160 GETFONT_OTagOnly, TRUE,
1162 GetFontEnd,
1163 CHILD_Label, LabelObj,
1164 LABEL_Text, gadlab[GID_OPTS_FONT_SERIF],
1165 LabelEnd,
1166 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_MONO] = GetFontObj,
1167 GA_ID, GID_OPTS_FONT_MONO,
1168 GA_RelVerify, TRUE,
1169 GETFONT_TextAttr, &fontmono,
1170 GETFONT_OTagOnly, TRUE,
1172 GETFONT_FixedWidthOnly, TRUE,
1173 GetFontEnd,
1174 CHILD_Label, LabelObj,
1175 LABEL_Text, gadlab[GID_OPTS_FONT_MONO],
1176 LabelEnd,
1177 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_CURSIVE] = GetFontObj,
1178 GA_ID, GID_OPTS_FONT_CURSIVE,
1179 GA_RelVerify, TRUE,
1180 GETFONT_TextAttr, &fontcursive,
1181 GETFONT_OTagOnly, TRUE,
1183 GetFontEnd,
1184 CHILD_Label, LabelObj,
1185 LABEL_Text, gadlab[GID_OPTS_FONT_CURSIVE],
1186 LabelEnd,
1187 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_FANTASY] = GetFontObj,
1188 GA_ID, GID_OPTS_FONT_FANTASY,
1189 GA_RelVerify, TRUE,
1190 GETFONT_TextAttr, &fontfantasy,
1191 GETFONT_OTagOnly, TRUE,
1193 GetFontEnd,
1194 CHILD_Label, LabelObj,
1195 LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
1196 LabelEnd,
1197 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
1198 GA_ID, GID_OPTS_FONT_DEFAULT,
1199 GA_RelVerify, TRUE,
1200 CHOOSER_PopUp, TRUE,
1201#ifdef __amigaos4__
1202 CHOOSER_LabelArray, fontopts,
1203#else
1204 CHOOSER_Labels, &gow->fontoptslist,
1205#endif
1206 CHOOSER_Selected, nsoption_int(font_default) - PLOT_FONT_FAMILY_SANS_SERIF,
1207 ChooserEnd,
1208 CHILD_Label, LabelObj,
1209 LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
1210 LabelEnd,
1211 LayoutEnd, // font faces
1212 CHILD_WeightedHeight, 0,
1213 LAYOUT_AddChild, LayoutHObj,
1214 LAYOUT_AddChild, LayoutVObj,
1215 LAYOUT_SpaceOuter, TRUE,
1216 LAYOUT_BevelStyle, BVS_GROUP,
1217 LAYOUT_Label, gadlab[GRP_OPTS_FONTSIZE],
1218 LAYOUT_AddChild, LayoutHObj,
1219 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1220 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_SIZE] = IntegerObj,
1221 GA_ID, GID_OPTS_FONT_SIZE,
1222 GA_RelVerify, TRUE,
1223 INTEGER_Number, nsoption_int(font_size) / 10,
1224 INTEGER_Minimum, 1,
1225 INTEGER_Maximum, 99,
1226 INTEGER_Arrows, TRUE,
1227 IntegerEnd,
1228 CHILD_WeightedWidth, 0,
1229 CHILD_Label, LabelObj,
1230 LABEL_Text, gadlab[LAB_OPTS_PT],
1231 LabelEnd,
1232 LayoutEnd,
1233 CHILD_Label, LabelObj,
1234 LABEL_Text, gadlab[GID_OPTS_FONT_SIZE],
1235 LabelEnd,
1236 LAYOUT_AddChild, LayoutHObj,
1237 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1238 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_MINSIZE] = IntegerObj,
1239 GA_ID, GID_OPTS_FONT_MINSIZE,
1240 GA_RelVerify, TRUE,
1241 INTEGER_Number, nsoption_int(font_min_size) / 10,
1242 INTEGER_Minimum, 1,
1243 INTEGER_Maximum, 99,
1244 INTEGER_Arrows, TRUE,
1245 IntegerEnd,
1246 CHILD_WeightedWidth, 0,
1247 CHILD_Label, LabelObj,
1248 LABEL_Text, gadlab[LAB_OPTS_PT],
1249 LabelEnd,
1250 LayoutEnd,
1251 CHILD_Label, LabelObj,
1252 LABEL_Text, gadlab[GID_OPTS_FONT_MINSIZE],
1253 LabelEnd,
1254 LayoutEnd,
1255 LAYOUT_AddChild, LayoutVObj,
1256 LAYOUT_SpaceOuter, TRUE,
1257 LAYOUT_BevelStyle, BVS_GROUP,
1258 LAYOUT_Label, gadlab[GRP_OPTS_MISC],
1261 GA_RelVerify, TRUE,
1263 GA_Selected, nsoption_bool(font_antialiasing),
1264#ifndef __amigaos4__
1265 GA_Disabled, TRUE,
1266#endif
1267 CheckBoxEnd,
1268#ifndef __amigaos4__
1269 LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_BITMAP] = CheckBoxObj,
1270 GA_ID, GID_OPTS_FONT_BITMAP,
1271 GA_RelVerify, TRUE,
1272 GA_Text, gadlab[GID_OPTS_FONT_BITMAP],
1273 GA_Selected, nsoption_bool(bitmap_fonts),
1274 CheckBoxEnd,
1275#endif
1276 LayoutEnd,
1277 LayoutEnd,
1278 CHILD_WeightedHeight, 0,
1279 LayoutEnd, // page vgroup
1280 CHILD_WeightedHeight, 0,
1281 PageEnd, // page object
1282 /*
1283 ** Cache
1284 */
1285 PAGE_Add, LayoutVObj,
1286 LAYOUT_AddChild, LayoutVObj,
1287 LAYOUT_AddChild, LayoutVObj,
1288 LAYOUT_SpaceOuter, TRUE,
1289 LAYOUT_BevelStyle, BVS_GROUP,
1290 LAYOUT_Label, gadlab[GRP_OPTS_MEMCACHE],
1291 LAYOUT_AddChild, LayoutHObj,
1292 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1293 LAYOUT_AddChild, gow->objects[GID_OPTS_CACHE_MEM] = IntegerObj,
1294 GA_ID, GID_OPTS_CACHE_MEM,
1295 GA_RelVerify, TRUE,
1296 INTEGER_Number, nsoption_int(memory_cache_size) / 1048576,
1297 INTEGER_Minimum, 0,
1298 INTEGER_Maximum, 2048,
1299 INTEGER_Arrows, TRUE,
1300 IntegerEnd,
1301 CHILD_WeightedWidth, 0,
1302 CHILD_Label, LabelObj,
1303 LABEL_Text, gadlab[LAB_OPTS_MB],
1304 LabelEnd,
1305 LayoutEnd,
1306 CHILD_Label, LabelObj,
1307 LABEL_Text, gadlab[GID_OPTS_CACHE_MEM],
1308 LabelEnd,
1309 LayoutEnd, // memory cache
1310 CHILD_WeightedHeight, 0,
1311 LAYOUT_AddChild, LayoutVObj,
1312 LAYOUT_SpaceOuter, TRUE,
1313 LAYOUT_BevelStyle, BVS_GROUP,
1314 LAYOUT_Label, gadlab[GRP_OPTS_DISCCACHE],
1315 LAYOUT_AddChild, LayoutHObj,
1316 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1317 LAYOUT_AddChild, gow->objects[GID_OPTS_CACHE_DISC] = IntegerObj,
1318 GA_ID, GID_OPTS_CACHE_DISC,
1319 GA_RelVerify, TRUE,
1320 INTEGER_Number, nsoption_uint(disc_cache_size) / 1048576,
1321 INTEGER_Minimum, 0,
1322 INTEGER_Maximum, 4096,
1323 INTEGER_Arrows, TRUE,
1324 IntegerEnd,
1325 CHILD_WeightedWidth, 0,
1326 CHILD_Label, LabelObj,
1327 LABEL_Text, gadlab[LAB_OPTS_MB],
1328 LabelEnd,
1329 LayoutEnd,
1330 CHILD_Label, LabelObj,
1331 LABEL_Text, gadlab[GID_OPTS_CACHE_DISC],
1332 LabelEnd,
1333 LayoutEnd, // disc cache
1334 CHILD_WeightedHeight, 0,
1335 LayoutEnd, // page vgroup
1336 CHILD_WeightedHeight, 0,
1337 PageEnd, // page object
1338 /*
1339 ** Tabs
1340 */
1341 PAGE_Add, LayoutVObj,
1342 LAYOUT_AddChild, LayoutVObj,
1343 LAYOUT_AddChild, LayoutHObj,
1344 LAYOUT_AddChild, LayoutVObj,
1345 LAYOUT_SpaceOuter, TRUE,
1346 LAYOUT_BevelStyle, BVS_GROUP,
1347 LAYOUT_Label, gadlab[GRP_OPTS_TABS],
1348 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_ACTIVE] = CheckBoxObj,
1349 GA_ID, GID_OPTS_TAB_ACTIVE,
1350 GA_RelVerify, TRUE,
1351 GA_Text, gadlab[GID_OPTS_TAB_ACTIVE],
1352 GA_Selected, !nsoption_bool(foreground_new),
1353 CheckBoxEnd,
1354 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_2] = CheckBoxObj,
1355 GA_ID, GID_OPTS_TAB_2,
1356 GA_RelVerify, TRUE,
1357 GA_Text, gadlab[GID_OPTS_TAB_2],
1358 GA_Selected, nsoption_bool(button_2_tab),
1359 CheckBoxEnd,
1360 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_ALWAYS] = CheckBoxObj,
1361 GA_ID, GID_OPTS_TAB_ALWAYS,
1362 GA_RelVerify, TRUE,
1363 GA_Text, gadlab[GID_OPTS_TAB_ALWAYS],
1364 GA_Selected, nsoption_bool(tab_always_show),
1365 GA_Disabled, tab_always_show_disabled,
1366 CheckBoxEnd,
1367 LAYOUT_AddChild, gow->objects[GID_OPTS_TAB_CLOSE] = CheckBoxObj,
1368 GA_ID, GID_OPTS_TAB_CLOSE,
1369 GA_RelVerify, TRUE,
1370 GA_Text, gadlab[GID_OPTS_TAB_CLOSE],
1371 GA_Selected, nsoption_bool(tab_close_warn),
1372 CheckBoxEnd,
1373 LayoutEnd, // tabbed browsing
1374 LayoutEnd,
1375 LayoutEnd, // page vgroup
1376 CHILD_WeightedHeight, 0,
1377 PageEnd, // page object
1378 /*
1379 ** Advanced
1380 */
1381 PAGE_Add, LayoutVObj,
1382 LAYOUT_AddChild, LayoutVObj,
1383 LAYOUT_AddChild, LayoutVObj,
1384 LAYOUT_SpaceOuter, TRUE,
1385 LAYOUT_BevelStyle, BVS_GROUP,
1386 LAYOUT_Label, gadlab[GRP_OPTS_DOWNLOADS],
1387 LAYOUT_AddChild, LayoutHObj,
1388 LAYOUT_AddChild, gow->objects[GID_OPTS_OVERWRITE] = CheckBoxObj,
1389 GA_ID, GID_OPTS_OVERWRITE,
1390 GA_RelVerify, TRUE,
1391 GA_Disabled, FALSE,
1392 GA_Text, gadlab[GID_OPTS_OVERWRITE],
1393 GA_Selected, nsoption_bool(ask_overwrite),
1394 CheckBoxEnd,
1395 LAYOUT_AddChild, gow->objects[GID_OPTS_NOTIFY] = CheckBoxObj,
1396 GA_ID, GID_OPTS_NOTIFY,
1397 GA_RelVerify, TRUE,
1398 GA_Disabled, download_notify_disabled,
1399 GA_Text, gadlab[GID_OPTS_NOTIFY],
1400 GA_Selected, nsoption_bool(download_notify),
1401#ifndef __amigaos4__
1402 GA_Disabled, TRUE,
1403#endif
1404 CheckBoxEnd,
1405 LayoutEnd,
1406 LAYOUT_AddChild, gow->objects[GID_OPTS_DLDIR] = GetFileObj,
1407 GA_ID, GID_OPTS_DLDIR,
1408 GA_RelVerify, TRUE,
1409 GETFILE_Drawer, nsoption_charp(download_dir),
1410 GETFILE_DrawersOnly, TRUE,
1411 GETFILE_ReadOnly, TRUE,
1412 GETFILE_FullFileExpand, FALSE,
1413 GetFileEnd,
1414 CHILD_Label, LabelObj,
1415 LABEL_Text, gadlab[GID_OPTS_DLDIR],
1416 LabelEnd,
1417 LayoutEnd, // downloads
1418 CHILD_WeightedHeight, 0,
1419 LAYOUT_AddChild, LayoutHObj,
1420 LAYOUT_AddChild, LayoutVObj,
1421 LAYOUT_SpaceOuter, TRUE,
1422 LAYOUT_BevelStyle, BVS_GROUP,
1423 LAYOUT_Label, gadlab[GRP_OPTS_BEHAVIOUR],
1424 LAYOUT_AddChild, gow->objects[GID_OPTS_STARTUP_NO_WIN] = CheckBoxObj,
1426 GA_RelVerify, TRUE,
1428 GA_Selected, nsoption_bool(startup_no_window),
1429 CheckBoxEnd,
1430 LAYOUT_AddChild, gow->objects[GID_OPTS_CLOSE_NO_QUIT] = CheckBoxObj,
1432 GA_RelVerify, TRUE,
1434 GA_Selected, nsoption_bool(close_no_quit),
1435 CheckBoxEnd,
1436 LAYOUT_AddChild, gow->objects[GID_OPTS_DOCKY] = CheckBoxObj,
1437 GA_ID, GID_OPTS_DOCKY,
1438 GA_RelVerify, TRUE,
1439 GA_Text, gadlab[GID_OPTS_DOCKY],
1440 GA_Selected, !nsoption_bool(hide_docky_icon),
1441#ifndef __amigaos4__
1442 GA_Disabled, TRUE,
1443#endif
1444 CheckBoxEnd,
1445 LayoutEnd, // behaviour
1446 CHILD_WeightedHeight, 0,
1447 LayoutEnd, // hgroup
1448 CHILD_WeightedHeight, 0,
1449 LAYOUT_AddChild, LayoutHObj,
1450 LAYOUT_AddChild, LayoutHObj,
1451 LAYOUT_SpaceOuter, TRUE,
1452 LAYOUT_BevelStyle, BVS_GROUP,
1453 LAYOUT_Label, gadlab[GRP_OPTS_CLIPBOARD],
1454 LAYOUT_AddChild, gow->objects[GID_OPTS_CLIPBOARD] = CheckBoxObj,
1455 GA_ID, GID_OPTS_CLIPBOARD,
1456 GA_RelVerify, TRUE,
1457 GA_Text, gadlab[GID_OPTS_CLIPBOARD],
1458 GA_Selected, nsoption_bool(clipboard_write_utf8),
1459 CheckBoxEnd,
1460 LayoutEnd, // clipboard
1461 CHILD_WeightedHeight, 0,
1462 LAYOUT_AddChild, LayoutHObj,
1463 LAYOUT_SpaceOuter, TRUE,
1464 LAYOUT_BevelStyle, BVS_GROUP,
1465 LAYOUT_Label, gadlab[GRP_OPTS_SEARCH],
1466 LAYOUT_AddChild, gow->objects[GID_OPTS_SEARCH_PROV] = ChooserObj,
1467 GA_ID, GID_OPTS_SEARCH_PROV,
1468 GA_RelVerify, TRUE,
1469 CHOOSER_PopUp, TRUE,
1470 CHOOSER_Labels, websearch_list,
1471 CHOOSER_Selected, gow->websearch_idx,
1472 CHOOSER_MaxLabels, 40,
1473 ChooserEnd,
1474 CHILD_Label, LabelObj,
1475 LABEL_Text, gadlab[GID_OPTS_SEARCH_PROV],
1476 LabelEnd,
1477 LayoutEnd, // search
1478 CHILD_WeightedHeight, 0,
1479 LayoutEnd, // hgroup
1480 CHILD_WeightedHeight, 0,
1481 LAYOUT_AddChild, LayoutHObj,
1482 LAYOUT_BevelStyle, BVS_GROUP,
1483 LAYOUT_Label, gadlab[GRP_OPTS_MISC],
1484 LAYOUT_SpaceOuter, TRUE,
1485 LAYOUT_AddChild, gow->objects[GID_OPTS_FASTSCROLL] = CheckBoxObj,
1486 GA_ID, GID_OPTS_FASTSCROLL,
1487 GA_RelVerify, TRUE,
1488 GA_Text, gadlab[GID_OPTS_FASTSCROLL],
1489 GA_Selected, nsoption_bool(faster_scroll),
1490 CheckBoxEnd,
1491 LAYOUT_AddChild, gow->objects[GID_OPTS_SELECTMENU] = CheckBoxObj,
1492 GA_ID, GID_OPTS_SELECTMENU,
1493 GA_RelVerify, TRUE,
1494 GA_Text, gadlab[GID_OPTS_SELECTMENU],
1495 GA_Selected, !nsoption_bool(core_select_menu),
1496 GA_Disabled, !ami_selectmenu_is_safe(),
1497 CheckBoxEnd,
1498 LAYOUT_AddChild, gow->objects[GID_OPTS_ENABLECSS] = CheckBoxObj,
1499 GA_ID, GID_OPTS_ENABLECSS,
1500 GA_RelVerify, TRUE,
1501 GA_Text, gadlab[GID_OPTS_ENABLECSS],
1502 GA_Selected, nsoption_bool(author_level_css),
1503 CheckBoxEnd,
1504 LayoutEnd, // misc
1505 CHILD_WeightedHeight, 0,
1506
1507 LayoutEnd, // page vgroup
1508 CHILD_WeightedHeight, 0,
1509 PageEnd, // page object
1510 /*
1511 ** Export
1512 */
1513#ifdef WITH_PDF_EXPORT
1514 PAGE_Add, LayoutVObj,
1515 LAYOUT_AddChild, LayoutVObj,
1516 LAYOUT_AddChild, LayoutHObj,
1517 LAYOUT_SpaceOuter, TRUE,
1518 LAYOUT_BevelStyle, BVS_GROUP,
1519 LAYOUT_Label, gadlab[GRP_OPTS_MARGINS],
1520 LAYOUT_AddChild, LayoutHObj,
1521 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1522 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_TOP] = IntegerObj,
1523 GA_ID, GID_OPTS_MARGIN_TOP,
1524 GA_RelVerify, TRUE,
1525 INTEGER_Number, nsoption_int(margin_top),
1526 INTEGER_Minimum, 0,
1527 INTEGER_Maximum, 99,
1528 INTEGER_Arrows, TRUE,
1529 IntegerEnd,
1530 CHILD_WeightedWidth, 0,
1531 CHILD_Label, LabelObj,
1532 LABEL_Text, gadlab[LAB_OPTS_MM],
1533 LabelEnd,
1534 LayoutEnd,
1535 CHILD_Label, LabelObj,
1536 LABEL_Text, gadlab[GID_OPTS_MARGIN_TOP],
1537 LabelEnd,
1538 LAYOUT_AddChild, LayoutHObj,
1539 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1540 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_LEFT] = IntegerObj,
1541 GA_ID, GID_OPTS_MARGIN_LEFT,
1542 GA_RelVerify, TRUE,
1543 INTEGER_Number, nsoption_int(margin_left),
1544 INTEGER_Minimum, 0,
1545 INTEGER_Maximum, 99,
1546 INTEGER_Arrows, TRUE,
1547 IntegerEnd,
1548 CHILD_WeightedWidth, 0,
1549 CHILD_Label, LabelObj,
1550 LABEL_Text, gadlab[LAB_OPTS_MM],
1551 LabelEnd,
1552 LayoutEnd,
1553 CHILD_Label, LabelObj,
1554 LABEL_Text, gadlab[GID_OPTS_MARGIN_LEFT],
1555 LabelEnd,
1556 LAYOUT_AddChild, LayoutHObj,
1557 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1558 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_BOTTOM] = IntegerObj,
1560 GA_RelVerify, TRUE,
1561 INTEGER_Number, nsoption_int(margin_bottom),
1562 INTEGER_Minimum, 0,
1563 INTEGER_Maximum, 99,
1564 INTEGER_Arrows, TRUE,
1565 IntegerEnd,
1566 CHILD_WeightedWidth, 0,
1567 CHILD_Label, LabelObj,
1568 LABEL_Text, gadlab[LAB_OPTS_MM],
1569 LabelEnd,
1570 LayoutEnd,
1571 CHILD_Label, LabelObj,
1572 LABEL_Text, gadlab[GID_OPTS_MARGIN_BOTTOM],
1573 LabelEnd,
1574 LAYOUT_AddChild, LayoutHObj,
1575 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1576 LAYOUT_AddChild, gow->objects[GID_OPTS_MARGIN_RIGHT] = IntegerObj,
1577 GA_ID, GID_OPTS_MARGIN_RIGHT,
1578 GA_RelVerify, TRUE,
1579 INTEGER_Number, nsoption_int(margin_right),
1580 INTEGER_Minimum, 0,
1581 INTEGER_Maximum, 99,
1582 INTEGER_Arrows, TRUE,
1583 IntegerEnd,
1584 CHILD_WeightedWidth, 0,
1585 CHILD_Label, LabelObj,
1586 LABEL_Text, gadlab[LAB_OPTS_MM],
1587 LabelEnd,
1588 LayoutEnd,
1589 CHILD_Label, LabelObj,
1590 LABEL_Text, gadlab[GID_OPTS_MARGIN_RIGHT],
1591 LabelEnd,
1592 LayoutEnd, // margins
1593 CHILD_WeightedHeight, 0,
1594 LAYOUT_AddChild, LayoutVObj,
1595 LAYOUT_SpaceOuter, TRUE,
1596 LAYOUT_BevelStyle, BVS_GROUP,
1597 LAYOUT_Label, gadlab[GRP_OPTS_SCALING],
1598 LAYOUT_AddChild, LayoutHObj,
1599 LAYOUT_LabelColumn, PLACETEXT_RIGHT,
1600 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_SCALE] = IntegerObj,
1601 GA_ID, GID_OPTS_EXPORT_SCALE,
1602 GA_RelVerify, TRUE,
1603 INTEGER_Number, nsoption_int(export_scale),
1604 INTEGER_Minimum, 0,
1605 INTEGER_Maximum, 100,
1606 INTEGER_Arrows, TRUE,
1607 IntegerEnd,
1608 CHILD_WeightedWidth, 0,
1609 CHILD_Label, LabelObj,
1610 LABEL_Text, "%",
1611 LabelEnd,
1612 LayoutEnd,
1613 CHILD_Label, LabelObj,
1614 LABEL_Text, gadlab[GID_OPTS_EXPORT_SCALE],
1615 LabelEnd,
1616 LayoutEnd, // scaling
1617 CHILD_WeightedHeight, 0,
1618 LAYOUT_AddChild, LayoutVObj,
1619 LAYOUT_SpaceOuter, TRUE,
1620 LAYOUT_BevelStyle, BVS_GROUP,
1621 LAYOUT_Label, gadlab[GRP_OPTS_APPEARANCE],
1622 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_NOIMAGES] = CheckBoxObj,
1624 GA_RelVerify, TRUE,
1626 GA_Selected, nsoption_bool(suppress_images),
1627 CheckBoxEnd,
1628 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_NOBKG] = CheckBoxObj,
1629 GA_ID, GID_OPTS_EXPORT_NOBKG,
1630 GA_RelVerify, TRUE,
1631 GA_Text, gadlab[GID_OPTS_EXPORT_NOBKG],
1632 GA_Selected, nsoption_bool(remove_backgrounds),
1633 CheckBoxEnd,
1634 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_LOOSEN] = CheckBoxObj,
1636 GA_RelVerify, TRUE,
1638 GA_Selected, nsoption_bool(enable_loosening),
1639 CheckBoxEnd,
1640 LayoutEnd, // appearance
1641 CHILD_WeightedHeight, 0,
1642 LAYOUT_AddChild, LayoutVObj,
1643 LAYOUT_SpaceOuter, TRUE,
1644 LAYOUT_BevelStyle, BVS_GROUP,
1645 LAYOUT_Label, gadlab[GRP_OPTS_ADVANCED],
1646 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_COMPRESS] = CheckBoxObj,
1648 GA_RelVerify, TRUE,
1650 GA_Selected, nsoption_bool(enable_PDF_compression),
1651 CheckBoxEnd,
1652 LAYOUT_AddChild, gow->objects[GID_OPTS_EXPORT_PASSWORD] = CheckBoxObj,
1654 GA_RelVerify, TRUE,
1655 GA_Disabled, TRUE,
1657 GA_Selected, nsoption_bool(enable_PDF_password),
1658 CheckBoxEnd,
1659 LayoutEnd, // export
1660 CHILD_WeightedHeight, 0,
1661 LayoutEnd, // page vgroup
1662 CHILD_WeightedHeight, 0,
1663 PageEnd, // page object
1664#endif
1665 End, // pagegroup
1666 ClickTabEnd,
1667 LAYOUT_AddChild, LayoutHObj,
1668 LAYOUT_AddChild, gow->objects[GID_OPTS_SAVE] = ButtonObj,
1669 GA_ID,GID_OPTS_SAVE,
1670 GA_Text,gadlab[GID_OPTS_SAVE],
1671 GA_RelVerify,TRUE,
1672 ButtonEnd,
1673 LAYOUT_AddChild, gow->objects[GID_OPTS_USE] = ButtonObj,
1674 GA_ID,GID_OPTS_USE,
1675 GA_Text,gadlab[GID_OPTS_USE],
1676 GA_RelVerify,TRUE,
1677 ButtonEnd,
1678 LAYOUT_AddChild, gow->objects[GID_OPTS_CANCEL] = ButtonObj,
1679 GA_ID,GID_OPTS_CANCEL,
1680 GA_Text,gadlab[GID_OPTS_CANCEL],
1681 GA_RelVerify,TRUE,
1682 ButtonEnd,
1683 EndGroup, // save/use/cancel
1684 EndGroup, // main
1685 EndWindow;
1686
1687 gow->win = (struct Window *)RA_OpenWindow(gow->objects[OID_MAIN]);
1689 }
1690 ami_utf8_free(homepage_url_lc);
1691}
1692
1693static void ami_gui_opts_use(bool save)
1694{
1695 ULONG data, id = 0;
1696 struct Node *tmp_node = NULL;
1697 struct TextAttr *tattr;
1698 char *dot;
1699 char *label = NULL;
1700 bool rescan_fonts = false;
1701 bool old_tab_always_show;
1702
1704
1705 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_HOMEPAGE],(ULONG *)&data);
1706 nsoption_set_charp(homepage_url, (char *)ami_to_utf8_easy((char *)data));
1707
1708 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_CONTENTLANG],(ULONG *)&data);
1709 nsoption_set_charp(accept_language, (char *)strdup((char *)data));
1710
1711 GetAttr(GA_Selected, gow->objects[GID_OPTS_FROMLOCALE],(ULONG *)&data);
1712 if (data) {
1713 nsoption_set_bool(accept_lang_locale, true);
1714 } else {
1715 nsoption_set_bool(accept_lang_locale, false);
1716 }
1717
1718 GetAttr(GA_Selected,gow->objects[GID_OPTS_HIDEADS],(ULONG *)&data);
1719 if (data) {
1720 nsoption_set_bool(block_advertisements, true);
1721 } else {
1722 nsoption_set_bool(block_advertisements, false);
1723 }
1724
1725 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_HISTORY],(ULONG *)&nsoption_int(expire_url));
1726
1727 GetAttr(GA_Selected,gow->objects[GID_OPTS_REFERRAL],(ULONG *)&data);
1728 if (data) {
1729 nsoption_set_bool(send_referer, true);
1730 } else {
1731 nsoption_set_bool(send_referer, false);
1732 }
1733
1734 GetAttr(GA_Selected,gow->objects[GID_OPTS_JAVASCRIPT],(ULONG *)&data);
1735 if (data) {
1736 nsoption_set_bool(enable_javascript, true);
1737 } else {
1738 nsoption_set_bool(enable_javascript, false);
1739 }
1740
1741 ami_gui_menu_set_checked(NULL, M_JS, nsoption_bool(enable_javascript));
1742
1743 GetAttr(GA_Selected,gow->objects[GID_OPTS_DONOTTRACK],(ULONG *)&data);
1744 if (data) {
1745 nsoption_set_bool(do_not_track, true);
1746 } else {
1747 nsoption_set_bool(do_not_track, false);
1748 }
1749
1750 GetAttr(GA_Selected,gow->objects[GID_OPTS_ENABLECSS],(ULONG *)&data);
1751 if (data) {
1752 nsoption_set_bool(author_level_css, true);
1753 } else {
1754 nsoption_set_bool(author_level_css, false);
1755 }
1756
1757 ami_gui_menu_set_checked(NULL, M_CSS, nsoption_bool(author_level_css));
1758
1759 GetAttr(GA_Selected,gow->objects[GID_OPTS_FASTSCROLL],(ULONG *)&data);
1760 if (data) {
1761 nsoption_set_bool(faster_scroll, true);
1762 } else {
1763 nsoption_set_bool(faster_scroll, false);
1764 }
1765
1766 GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
1767 switch(data)
1768 {
1769 case 0:
1770 nsoption_set_charp(pubscreen_name, NULL);
1771 break;
1772
1773 case 1:
1774 nsoption_set_charp(pubscreen_name, (char *)strdup("Workbench"));
1775 break;
1776
1777 case 2:
1778 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_SCREENNAME],(ULONG *)&data);
1779 nsoption_set_charp(pubscreen_name, (char *)strdup((char *)data));
1780 break;
1781 }
1782
1783 GetAttr(GETSCREENMODE_DisplayID, gow->objects[GID_OPTS_SCREENMODE], (ULONG *)&id);
1784 if(id)
1785 {
1786 char *modeid = malloc(20);
1787 sprintf(modeid,"0x%lx", id);
1788 nsoption_set_charp(screen_modeid, modeid);
1789 }
1790
1791 GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
1792 if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
1793 nsoption_set_bool(window_simple_refresh, true);
1794 nsoption_set_int(screen_compositing, 0);
1795 } else if ((data == FALSE) && (nsoption_bool(window_simple_refresh) == true)) {
1796 nsoption_set_bool(window_simple_refresh, false);
1797 nsoption_set_int(screen_compositing, -1);
1798 }
1799
1800 GetAttr(GETFILE_Drawer,gow->objects[GID_OPTS_THEME],(ULONG *)&data);
1801 nsoption_set_charp(theme, (char *)strdup((char *)data));
1802
1803 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_THEMEPAGE],(ULONG *)&data);
1804 if(data) {
1805 nsoption_set_bool(prefer_dark_mode, true);
1806 } else {
1807 nsoption_set_bool(prefer_dark_mode, false);
1808 }
1809
1810 GetAttr(GA_Selected,gow->objects[GID_OPTS_PTRTRUE],(ULONG *)&data);
1811 if (data) {
1812 nsoption_set_bool(truecolour_mouse_pointers, true);
1813 } else {
1814 nsoption_set_bool(truecolour_mouse_pointers, false);
1815 }
1816
1817 GetAttr(GA_Selected,gow->objects[GID_OPTS_PTROS],(ULONG *)&data);
1818 if (data) {
1819 nsoption_set_bool(os_mouse_pointers, true);
1820 } else {
1821 nsoption_set_bool(os_mouse_pointers, false);
1822 }
1823
1824 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
1825 if(data)
1826 {
1827 nsoption_set_bool(http_proxy, true);
1828 nsoption_set_int(http_proxy_auth, data - 1);
1829 }
1830 else
1831 {
1832 nsoption_set_bool(http_proxy, false);
1833 }
1834
1835 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_HOST],(ULONG *)&data);
1836 nsoption_set_charp(http_proxy_host, (char *)strdup((char *)data));
1837
1838 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_PROXY_PORT],(ULONG *)&nsoption_int(http_proxy_port));
1839
1840 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_USER],(ULONG *)&data);
1841 nsoption_set_charp(http_proxy_auth_user, (char *)strdup((char *)data));
1842
1843 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_PASS],(ULONG *)&data);
1844 nsoption_set_charp(http_proxy_auth_pass, (char *)strdup((char *)data));
1845
1846 GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
1847 nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
1848
1849 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
1850 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
1851 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
1852
1853 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
1854
1855 GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
1856 if (data) {
1857 nsoption_set_bool(scale_quality, true);
1858 } else {
1859 nsoption_set_bool(scale_quality, false);
1860 }
1861
1862 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
1863
1864 GetAttr(GA_Selected,gow->objects[GID_OPTS_ANIMDISABLE],(ULONG *)&data);
1865 if(data) {
1866 nsoption_set_bool(animate_images, false);
1867 } else {
1868 nsoption_set_bool(animate_images, true);
1869 }
1870
1871 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_DPI_Y],(ULONG *)&nsoption_int(screen_ydpi));
1872 ami_font_setdevicedpi(id); // id set above
1873
1874 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_SANS],(ULONG *)&data);
1875 tattr = (struct TextAttr *)data;
1876
1877 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1878 nsoption_set_charp(font_sans, (char *)strdup((char *)tattr->ta_Name));
1879
1880 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_SERIF],(ULONG *)&data);
1881 tattr = (struct TextAttr *)data;
1882
1883 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1884 nsoption_set_charp(font_serif, (char *)strdup((char *)tattr->ta_Name));
1885
1886 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_MONO],(ULONG *)&data);
1887 tattr = (struct TextAttr *)data;
1888
1889 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1890 nsoption_set_charp(font_mono, (char *)strdup((char *)tattr->ta_Name));
1891
1892 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_CURSIVE],(ULONG *)&data);
1893 tattr = (struct TextAttr *)data;
1894
1895 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1896 nsoption_set_charp(font_cursive, (char *)strdup((char *)tattr->ta_Name));
1897
1898 GetAttr(GETFONT_TextAttr,gow->objects[GID_OPTS_FONT_FANTASY],(ULONG *)&data);
1899 tattr = (struct TextAttr *)data;
1900
1901 if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
1902 nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
1903
1904 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
1905 nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
1906
1907 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
1908 nsoption_set_int(font_size, nsoption_int(font_size) * 10);
1909
1910 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_MINSIZE],(ULONG *)&nsoption_int(font_min_size));
1911 nsoption_set_int(font_min_size, nsoption_int(font_min_size) * 10);
1912
1913 GetAttr(GA_Selected, gow->objects[GID_OPTS_FONT_ANTIALIASING], (ULONG *)&data);
1914 if(data) {
1915 nsoption_set_bool(font_antialiasing, true);
1916 } else {
1917 nsoption_set_bool(font_antialiasing, false);
1918 }
1919
1920#ifndef __amigaos4__
1921 GetAttr(GA_Selected, gow->objects[GID_OPTS_FONT_BITMAP], (ULONG *)&data);
1922 ami_font_fini();
1923
1924 if((nsoption_bool(bitmap_fonts) == true) && (data == false)) {
1925 nsoption_set_charp(font_sans, (char *)strdup("CGTriumvirate"));
1926 nsoption_set_charp(font_serif, (char *)strdup("CGTimes"));
1927 nsoption_set_charp(font_mono, (char *)strdup("LetterGothic"));
1928 nsoption_set_charp(font_cursive, (char *)strdup("CGTriumvirate"));
1929 nsoption_set_charp(font_fantasy, (char *)strdup("CGTimes"));
1930 }
1931
1932 if(data) {
1933 nsoption_set_bool(bitmap_fonts, true);
1934 } else {
1935 nsoption_set_bool(bitmap_fonts, false);
1936 }
1937 ami_font_init();
1938#endif
1939
1940 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_CACHE_MEM],(ULONG *)&nsoption_int(memory_cache_size));
1941 nsoption_set_int(memory_cache_size, nsoption_int(memory_cache_size) * 1048576);
1942
1943 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_CACHE_DISC],(ULONG *)&nsoption_uint(disc_cache_size));
1944 nsoption_set_uint(disc_cache_size, nsoption_uint(disc_cache_size) * 1048576);
1945
1946 GetAttr(GA_Selected,gow->objects[GID_OPTS_OVERWRITE],(ULONG *)&data);
1947 if (data) {
1948 nsoption_set_bool(ask_overwrite, true);
1949 } else {
1950 nsoption_set_bool(ask_overwrite, false);
1951 }
1952
1953 GetAttr(GA_Selected,gow->objects[GID_OPTS_NOTIFY],(ULONG *)&data);
1954 if (data) {
1955 nsoption_set_bool(download_notify, true);
1956 } else {
1957 nsoption_set_bool(download_notify, false);
1958 }
1959
1960 GetAttr(GETFILE_Drawer,gow->objects[GID_OPTS_DLDIR],(ULONG *)&data);
1961 if((nsoption_charp(download_dir) == NULL) ||
1962 (strcmp((char *)data, nsoption_charp(download_dir)) != 0)) {
1963 nsoption_set_charp(download_dir, (char *)strdup((char *)data));
1966 }
1967
1968 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_ACTIVE],(ULONG *)&data);
1969 if (data) {
1970 nsoption_set_bool(foreground_new, false);
1971 } else {
1972 nsoption_set_bool(foreground_new, true);
1973 }
1974
1975 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_2],(ULONG *)&data);
1976 if (data) {
1977 nsoption_set_bool(button_2_tab, true);
1978 } else {
1979 nsoption_set_bool(button_2_tab, false);
1980 }
1981
1982 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_CLOSE],(ULONG *)&data);
1983 if (data) {
1984 nsoption_set_bool(tab_close_warn, true);
1985 } else {
1986 nsoption_set_bool(tab_close_warn, false);
1987 }
1988
1989 GetAttr(GA_Selected,gow->objects[GID_OPTS_TAB_ALWAYS],(ULONG *)&data);
1990 old_tab_always_show = nsoption_bool(tab_always_show);
1991
1992 if (data) {
1993 nsoption_set_bool(tab_always_show, true);
1994 } else {
1995 nsoption_set_bool(tab_always_show, false);
1996 }
1997
1998 if(old_tab_always_show != nsoption_bool(tab_always_show))
2000
2001#ifdef __amigaos4__
2002 GetAttr(CHOOSER_SelectedNode, gow->objects[GID_OPTS_SEARCH_PROV],(ULONG *)&tmp_node);
2003 if(tmp_node != NULL) {
2004 GetChooserNodeAttrs(tmp_node, CNA_Text, (ULONG *)&label, TAG_DONE);
2005 nsoption_set_charp(search_web_provider, strdup((char *)label));
2006 }
2007#else
2008 GetAttr(CHOOSER_Selected, gow->objects[GID_OPTS_SEARCH_PROV],(ULONG *)&gow->websearch_idx);
2009 /* TODO: convert back to string, only required OS<3.2 */
2010#endif
2011
2012 search_web_select_provider(nsoption_charp(search_web_provider));
2013
2014 GetAttr(GA_Selected,gow->objects[GID_OPTS_CLIPBOARD],(ULONG *)&data);
2015 if (data) {
2016 nsoption_set_bool(clipboard_write_utf8, true);
2017 } else {
2018 nsoption_set_bool(clipboard_write_utf8, false);
2019 }
2020
2021 GetAttr(GA_Selected,gow->objects[GID_OPTS_SELECTMENU],(ULONG *)&data);
2022 if (data) {
2023 nsoption_set_bool(core_select_menu, false);
2024 } else {
2025 nsoption_set_bool(core_select_menu, true);
2026 }
2027
2028 GetAttr(GA_Selected,gow->objects[GID_OPTS_STARTUP_NO_WIN],(ULONG *)&data);
2029 if (data) {
2030 nsoption_set_bool(startup_no_window, true);
2031 } else {
2032 nsoption_set_bool(startup_no_window, false);
2033 }
2034
2035 GetAttr(GA_Selected,gow->objects[GID_OPTS_CLOSE_NO_QUIT],(ULONG *)&data);
2036 if (data) {
2037 nsoption_set_bool(close_no_quit, true);
2038 } else {
2039 nsoption_set_bool(close_no_quit, false);
2040 }
2041
2042 GetAttr(GA_Selected,gow->objects[GID_OPTS_DOCKY],(ULONG *)&data);
2043 if (data) {
2044 nsoption_set_bool(hide_docky_icon, false);
2045 } else {
2046 nsoption_set_bool(hide_docky_icon, true);
2047 }
2048
2049#ifdef WITH_PDF_EXPORT
2050 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_TOP],(ULONG *)&nsoption_int(margin_top));
2051
2052 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_LEFT],(ULONG *)&nsoption_int(margin_left));
2053
2054 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_BOTTOM],(ULONG *)&nsoption_int(margin_bottom));
2055
2056 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_MARGIN_RIGHT],(ULONG *)&nsoption_int(margin_right));
2057
2058 GetAttr(INTEGER_Number,gow->objects[GID_OPTS_EXPORT_SCALE],(ULONG *)&nsoption_int(export_scale));
2059
2060 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_NOIMAGES],(ULONG *)&data);
2061 if (data) {
2062 nsoption_set_bool(suppress_images, true);
2063 } else {
2064 nsoption_set_bool(suppress_images, false);
2065 }
2066
2067 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_NOBKG],(ULONG *)&data);
2068 if (data) {
2069 nsoption_set_bool(remove_backgrounds, true);
2070 } else {
2071 nsoption_set_bool(remove_backgrounds, false);
2072 }
2073
2074 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_LOOSEN],(ULONG *)&data);
2075 if (data) {
2076 nsoption_set_bool(enable_loosening, true);
2077 } else {
2078 nsoption_set_bool(enable_loosening, false);
2079 }
2080
2081 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_COMPRESS],(ULONG *)&data);
2082 if (data) {
2083 nsoption_set_bool(enable_PDF_compression, true);
2084 } else {
2085 nsoption_set_bool(enable_PDF_compression, false);
2086 }
2087
2088 GetAttr(GA_Selected,gow->objects[GID_OPTS_EXPORT_PASSWORD],(ULONG *)&data);
2089 if (data) {
2090 nsoption_set_bool(enable_PDF_password, true);
2091 } else {
2092 nsoption_set_bool(enable_PDF_password, false);
2093 }
2094#endif
2095
2096 if(rescan_fonts == true) {
2098 ami_font_initscanner(true, false);
2099 }
2100
2101 if(save == true) {
2103 ami_font_savescanner(); /* just in case it has changed and been used only */
2104 }
2105
2108}
2109
2110static void ami_gui_opts_close(void *w)
2111{
2112 DisposeObject(gow->objects[OID_MAIN]);
2115 gow = NULL;
2116}
2117
2118static BOOL ami_gui_opts_event(void *w)
2119{
2120 /* return TRUE if window destroyed */
2121 ULONG result,data = 0;
2122 uint16 code;
2123 STRPTR text;
2124
2125 while((result = RA_HandleInput(gow->objects[OID_MAIN],&code)) != WMHI_LASTMSG)
2126 {
2127 switch(result & WMHI_CLASSMASK) // class
2128 {
2129 case WMHI_CLOSEWINDOW:
2131 return TRUE;
2132 break;
2133
2134 case WMHI_GADGETHELP:
2135#ifdef __amigaos4__
2136 /* FIXME: this is firing on OS3.2 without HELP being pressed */
2137 if((result & WMHI_GADGETMASK) == 0) {
2138 /* Pointer not over our window */
2140 } else {
2141 /* TODO: Make this sensitive to the tab the user is currently on */
2143 }
2144#endif
2145 break;
2146
2147 case WMHI_GADGETUP:
2148 switch(result & WMHI_GADGETMASK)
2149 {
2150 case GID_OPTS_SAVE:
2151 ami_gui_opts_use(true);
2153 return TRUE;
2154 break;
2155
2156 case GID_OPTS_USE:
2157 ami_gui_opts_use(false);
2158 // fall through
2159
2160 case GID_OPTS_CANCEL:
2162 return TRUE;
2163 break;
2164
2167 gow->win,NULL,STRINGA_TextVal,NETSURF_HOMEPAGE,
2168 TAG_DONE);
2169 break;
2170
2173 gow->win, NULL, STRINGA_TextVal,
2175 break;
2176
2179 gow->win, NULL, STRINGA_TextVal,
2180 "about:blank", TAG_DONE);
2181 break;
2182
2185 gow->win, NULL, GA_Disabled, code, TAG_DONE);
2186
2187 if(code && (text = ami_locale_langs(NULL)))
2188 {
2190 gow->win, NULL, STRINGA_TextVal, text, TAG_DONE);
2191 FreeVec(text);
2192 }
2193 break;
2194
2195 case GID_OPTS_SCREEN:
2196 GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
2197 switch(data)
2198 {
2199 case 0:
2201 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2203 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2204 break;
2205
2206 case 1:
2208 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2210 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2211 break;
2212
2213 case 2:
2215 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2217 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2218 break;
2219 }
2220 break;
2221
2224 GSM_REQUEST,gow->win);
2225 break;
2226
2227 case GID_OPTS_THEME:
2229 GFILE_REQUEST,gow->win);
2230 break;
2231
2232 case GID_OPTS_PROXY:
2233 GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
2234 switch(data)
2235 {
2236 case 0:
2238 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2240 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2241
2243 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2245 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2247 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2248 break;
2249 case 1:
2251 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2253 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2254
2256 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2258 gow->win,NULL, GA_Disabled, TRUE, TAG_DONE);
2260 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2261 break;
2262
2263 case 2:
2264 case 3:
2266 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2268 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2269
2271 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2273 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2275 gow->win,NULL, GA_Disabled, FALSE, TAG_DONE);
2276 break;
2277 }
2278 break;
2279
2281 break;
2282
2283 case GID_OPTS_FONT_SANS:
2285 GFONT_REQUEST,gow->win);
2286 break;
2287
2290 GFONT_REQUEST,gow->win);
2291 break;
2292
2293 case GID_OPTS_FONT_MONO:
2295 GFONT_REQUEST,gow->win);
2296 break;
2297
2300 GFONT_REQUEST,gow->win);
2301 break;
2302
2305 GFONT_REQUEST,gow->win);
2306 break;
2307#ifndef __amigaos4__
2310 gow->win, NULL, GA_Disabled, code, TAG_DONE);
2311 break;
2312#endif
2313 case GID_OPTS_DLDIR:
2315 GFILE_REQUEST,gow->win);
2316 break;
2317 }
2318 break;
2319 }
2320 }
2321 return FALSE;
2322}
2323
2324struct List *ami_gui_opts_websearch(int *idx)
2325{
2326 struct List *list;
2327 struct Node *node;
2328 const char *name;
2329 int i = 0;
2330 int iter;
2331
2332 list = malloc(sizeof(struct List));
2333 NewList(list);
2334
2335 for (iter = search_web_iterate_providers(-1, &name);
2336 iter != -1;
2337 iter = search_web_iterate_providers(iter, &name)) {
2338 node = AllocChooserNode(CNA_Text, name, TAG_DONE);
2339 AddTail(list, node);
2340 if(idx != NULL) {
2341 if((nsoption_charp(search_web_provider)) && (strcmp(name, nsoption_charp(search_web_provider)) == 0)) {
2342 *idx = i;
2343 }
2344 }
2345 i++;
2346 }
2347
2348 return list;
2349}
2350
2351void ami_gui_opts_websearch_free(struct List *websearchlist)
2352{
2353 struct Node *node;
2354 struct Node *nnode;
2355
2356 if(websearchlist == NULL) return;
2357 if(IsListEmpty(websearchlist)) return;
2358 node = GetHead(websearchlist);
2359
2360 do {
2361 nnode = GetSucc(node);
2362 Remove(node);
2363 FreeChooserNode(node);
2364 } while((node = nnode));
2365
2366 free(websearchlist);
2367}
2368
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:4668
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:4682
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:4311
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
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:912
void ami_font_initscanner(bool force, bool save)
Definition: font_bullet.c:907
void ami_font_savescanner(void)
Definition: font_bullet.c:917
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:115
void ami_font_setdevicedpi(int id)
Definition: font.c:50
void ami_font_fini(void)
Definition: font.c:124
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
@ 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 CONST_STRPTR ditheropts[OPTS_MAX_DITHER]
Definition: gui_options.c:258
@ 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:256
static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
Definition: gui_options.c:264
static CONST_STRPTR tabs[OPTS_MAX_TABS]
Definition: gui_options.c:253
static void ami_gui_opts_close(void *w)
Definition: gui_options.c:2110
#define OPTS_MAX_THEMEPAGE
Definition: gui_options.c:216
static STRPTR screenopts[OPTS_MAX_SCREEN]
Definition: gui_options.c:254
static struct ami_gui_opts_window * gow
Definition: gui_options.c:251
static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
Definition: gui_options.c:493
#define OPTS_MAX_TABS
Definition: gui_options.c:214
void ami_gui_opts_websearch_free(struct List *websearchlist)
Definition: gui_options.c:2351
static void ami_gui_opts_use(bool save)
Definition: gui_options.c:1693
#define OPTS_MAX_SCREEN
Definition: gui_options.c:215
static BOOL ami_gui_opts_event(void *w)
Definition: gui_options.c:2118
static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
Definition: gui_options.c:321
static CONST_STRPTR nativebmopts[OPTS_MAX_NATIVEBM]
Definition: gui_options.c:257
@ 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:255
@ 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:246
static CONST_STRPTR gadlab[OPTS_LAST]
Definition: gui_options.c:260
static void ami_gui_opts_free_list(struct List *list, int type)
Definition: gui_options.c:291
static struct List * websearch_list
Definition: gui_options.c:261
#define OPTS_MAX_NATIVEBM
Definition: gui_options.c:218
struct List * ami_gui_opts_websearch(int *idx)
Definition: gui_options.c:2324
static CONST_STRPTR fontopts[6]
Definition: gui_options.c:259
void ami_gui_opts_open(void)
Definition: gui_options.c:525
#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
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.
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